Ruby/Rails

Grepコマンドもどき ver.2(完成版)

Twitterでアドバイスを募ったところ、解決策が見つかったので、さっそく記録します。完成版のコードはこちら。 require 'find' def grep(pattern, directory) Find.find(directory) do |path| if FileTest.file?(path) file = open(path) path = File.expand…

Grepコマンドもどき ver.1

Railsで「この変数はどこで定義されているんだ?」と困ったときに、ディレクトリ以下のファイルすべてでパターンマッチをしたいです。なので、Grepコマンドもどきを作ってみました。 require 'find' def grep(pattern, directory) Find.find(directory) do |…

変数の区別

ローカル変数 小文字または「_」で始まる。 宣言された変数スコープのみアクセスできる。変数スコープとは、ファイル内、クラス定義、モジュール定義、メソッド定義、ブロック内のこと。例えば、以下のように入れ子になっても、3つのvarは異なる値を持つ。 v…

VimによるRails開発環境の構築 ver.2

ver.1で失敗した方法とは別の方法で再挑戦したところ、成功したっぽいです。ただ、ところどころ不安な点は残っています。環境 Windows XP 導入したい開発環境 Vim 7.2-20100510 for Windows rails.vim project.vim 成功したっぽい手順 こちらの記事どおりに…

VimによるRails開発環境の構築 ver.1

これから本格的に開発を進めていくため、そろそろ開発環境を整えていこうと思っている。だが、いろいろ見ながらやっても、ぜんぜんうまくいかない。環境 Windows XP 導入したい開発環境 Vim 7.2-20100510 for Windows rails.vim project.vim トライして失敗…

Merge Sort ver.1

ARGVでコマンドラインから引数を渡そうと思ったけど、flozenでslice!できませんよとエラーが出てきた。dupしても、なんかおかしなことになる。それが気になる。 def m_sort(array) if array.size == 1 array else array1 = m_sort(array.slice!(0, array.siz…

WIN32OLEを使ったExcelの操作(1)

Excelの単調な作業をプログラミングを用いて一掃できたら、どんなに快適なことか。何時間も何日も、AからBへデータを入力しなおす作業をやらされてきた身としては、喉から手が出るほど欲しい技術なのです。現在勉強しているRubyを使って、Excelの操作方法を…

ハノイの塔 ver.2

円盤がN枚のときのハノイの塔を完全に攻略することができました。前回のものを再帰的手法を用いて洗練させました。 @towersは3つの塔を配列として表現したもの(@towers[0]が左、@towers[1]が真ん中、@towers[2]が右の塔)、timesは円盤を移動させた回数、n…

ハノイの塔 ver.1

ハノイの塔を解くプログラムを作りました。かなり時間がかかりました。ずっとひっかかっていたところは、論理演算の初歩的なところでした。でも、そこに気づけてよかったです。これで論理演算は基礎が固まったかな。 3つの塔に見立てた配列から数値を出した…

Fizzbuzz問題(Ruby) ver.1

有名なFizzbuzz問題をRubyで解いてみました。Fizzbuzz問題とは、「1から任意の数までの自然数を表示せよ。ただし、3で割り切れる数は「Fizz」、5で割り切れる数は「Buzz」、両方で割り切れる数は「FizzBuzz」と表示すること。」というものです。 今回はRuby…

ディレクトリ内のファイルの大きさを表示する

指定されたディレクトリ内のファイルの大きさ(バイト)とその合計を表示するメソッドを作りました。コマンドを入力した瞬間にドバっと答えを返してくれるのが気持ちいいです。 require 'find' def du(top) total_size = 0 Find.find(top) do |path| if File…

count_letters ver.2

Array#uniqで重複を削除した配列に対してArray#eachでループさせたところ、問題は無事解決されました。ただ、実行すると最後にこの配列が表示されるのが気になる。なんでだろう? def count_letters(str) ary = str.split(//) ary.uniq! ary.each do |letter…

count_letters ver.1

文字列に含まれる文字数を文字ごとにカウントするメソッドを作成中です。"Ruby is an object oriented programming language"を例に実行すると、'R': * 'u': ** 'b': ** (以下に続く)といった感じで表示されます。 下のコードはやりかけですが、目下の問題…