Ruby

Ruby on Rails を使ってみよう(その 4)

View と Controller を作る(その 2) View の続きとして、レイアウトの作成をします。今回はベースになっている sample/app/views/layouts/application.html.erb を手直しして、新たに cust_layout.html.erb を作成します。元の application.html.erb はこう…

Ruby on Rails を使ってみよう(その 3)

そろそろお時間的に View と Controller も作りたくなってきましたよね ? ね ? (勝手に決めるな)というわけで作りましょう。 View と Controller を作る(その 1) View と Controller のもとになるファイル群はまとめて rails コマンドで作れます。 > rails g…

Ruby on Rails を使ってみよう(その 2)

Rails アプリケーションの土台をつくる 最初にアプリケーションの土台をつくります。作り方は簡単です。アプリケーションを作りたいディレクトリに移動して > rails new sample と打ち込めば sample という名前のディレクトリの下にアプリケーションの土台が…

Ruby on Rails を使ってみよう(その 1)

Ruby のための Web アプリケーションフレームワーク「Ruby on Rails」について、これから数回に分けてサンプルを交えながら紹介したいと思います。 Ruby のインストール Windows 用の最新版のインストーラ(Ruby 本体に便利なライブラリ群を加えたもの)は下記…

seeds.rb で id を連番にしない方法ってある ?

Rails でデータベースに初期データを入れるときに seeds.rb を編集して rake db:seed すればデータは入るのだが、id だけは強制的に連番で入力されてしまって自由に入力ができない。これを回避する上手い方法はないだろうか ? カラム名はデフォルトの id の…

数字を漢数字に変換する

漢数字を数字に変換するメソッドは見つけたんだけど、逆がなかったので作ってみた。1 から 9999 まで対応版。 # coding : utf-8 def num_to_k(n) number = 0..9 kanji = ["","一","二","三","四","五","六","七","八","九"] num_kanji = Hash[number.zip(kan…

配列を集合に見立ててべき集合を生成する(Ruby 版・改)

set は Array クラスのオブジェクト(= 配列)。 powerset = (0..set.size).flat_map { |i| set.combination(i).to_a } いただいたコメントより引用。上手い、上手過ぎる。

配列を集合に見立ててべき集合を生成する(Ruby 版)

配列(Array クラスのインスタンス) set があるとして powerset = Array.new (0..2 ** set.size - 1).each do |n| subset = Array.new set.each do |i| subset << i if n & 1 == 1 n >>= 1 end powerset << subset end やっぱり Ruby いいですね ! (ステマ)

undefined method ?

Rails でマイグレーションファイルを利用してデータベースにテーブルを作成するときにマイグレーションで外部キーを設定する2通りの方法 - Katawara.*を参考にmigration_helper.rb module MigrationHelper def foreign_key(from_table, from_column, to_tabl…

Java の isLeapYear が使えない件

プログラミング中に「そういや今年ってうるう年だっけ」という判定をしなければならないことはままあるかと思います。Java の場合、java.util.GregorianCalendar クラスに isLeapYear メソッドが用意されているのですが、これがいまいち使いにくい。何故かと…

適当な長さのランダム英数文字列を生成する

#!/ruby/bin/ruby numbers = ('0'..'9').to_a alphabets = ('a'..'z').to_a characters = numbers + alphabets length = rand(3) + 6 pass = String.new until (/[0-9]/ =~ pass and /[a-z]/ =~ pass) do pass = ( Array.new(length) do characters[rand(cha…

テキスト形式ファイルの重複行を削除し更にソート

何かしらの数値計算をやって、結果をファイルに書き込んだとき、精度の関係で結果のテキストが重複行だらけになってしまっていることが経験上多かったので、そういったファイルの重複行を削除してついでにソートしてしまうというスクリプトを書いてみた。 # …

文字列と数値の連結

Ruby では文字列と数値を連結するとき、数値の方を自動で文字列には変換しない。そこで Numeric クラス(のスーパークラスである Object クラス)の to_s メソッドを使う。以下は簡単な例。 (1..9).each do |i| (1..9).each do |j| p = i * j if p < 10 then p…