そぬばこ

備忘録とか、多分そんな感じ。

Railsで"Sorry, you can't use byebug without Readline."のエラーが出た時の対処法

経緯としてはCygwinRuby on Railsできないかなぁとかそんな感じ。


導入に関してはいいとしてここに至るまでに

$ rails s

するが、通らない。「bundle install」できない…

Sorry, you can't use byebug without Readline. To solve this, you need tore
build Ruby with Readline support. If using Ubuntu, try `sudo apt-get
install libreadline-dev` and then reinstall your Ruby.

このエラーが出た。
つまりReadlineを使わせればいいのかってことでGemfileを書き換えればいいらいい。

$ emacs Gemfile

とかしてテキストエディタ開いて

gem 'rb-readline'

の一行を入れる。

$ bundle install

これでちゃんとできた…

rails sが通らない - DesignAssembler
ここを主に参考にしました。

Rubyで階乗

再帰をつかってやれとの課題がとある神から降りてきたのでメモ。

def fact(n)
  return 1 if n == 0
  n * fact(n-1)
end

提出はこれでしたんだけど、こんな感じで大丈夫なのかなーという感じで「Ruby 階乗」なんかでググったりしてみたら下のやつみたいな感じのがあって

def fact(n, a=1)
  return a if n == 0
  fact(n-1, n*a)
end

末尾再帰を用いてるらしく最初見た時は末尾再帰ってなんじゃってことで頭が???。けど、やってることはわかった。
どうしてこんな書き方をするのかなってところで末尾再帰という文字の理解をすることに。
再帰は再帰なんかじゃない!末尾再帰こそが真の再帰なんだ!
上のページがすごくわかりやすくて勉強になった。

def fact(n)
  (1..n).to_a.inject(1) {|f, i| f*i}
end

これはおまけだけどRubyではinject使えばめっちゃ簡単に階乗が書けるらしい。ヒエェ

matrix環境とか

なんかいっつもこんな感じでブログはじめては2ヶ月持たずにやめてしまうのでメモ的な使い方でもしてみようかと思う。

先日まで大学の講義でLaTeXをやっていて、行列をarray環境を用いてやっているのでなんとなく気持ち悪さを感じた。

\left[
\begin{array}{ccc}
 a & b & c \\
 e & f & g \\
 h & i & j
\end{array}
\right]

数式の中でこんな感じで記述して、カッコの指定とか列数指定とかしないといけなくてもっとパパっとできないものか。
っていう感じで調べていたらあった。amsmathには感謝してもしきれない。
まず、プリアンプルにamsmathのパッケージを指定してやる。こいつが数式の記述で非常に便利。

\usepackage{amsmath}

んで使うのはmatrix環境っていうやつで、この環境の中でtabular環境とかarray環境みたいなノリで楽に行列が記述できる。

\begin{bmatrix}
 a & b & c \\
 e & f & g \\
 h & i & j
\end{bmatrix}

bmatrix環境は行列を[ ]で囲んでくれるmatrix環境。線形代数学で用いている教科書では行列は[ ]で囲んでいるので個人的に非常に用途がありそう。
他にも、

matrix
カッコなし
pmatrix
( )で囲む
vmatrix
| |で囲む

なんかは使えそうだ。特にvmatrix環境なんか行列式で使える。
いやー、amsmathさんこれからもよろしくお願いします。