ruby

BLOB値の取り出し方がわからない。

ActiveRecordを使ってバイナリデータをDBに格納したり取り出したりする実験をしたが、格納は簡単にできたけど取り出しの方法がわからない。以下の手順で操作を行ったが取り出したファイルと格納したファイルのサイズが明らかに違っている。テーブルのレイア…

コメントうれしい。

先日のこの日記のエントリグラフィックライブラリの比較について反応 - 橋本幸樹の無愛想な日記 にRubyistMagazineの記事などで有名なもりきゅうさんからコメントをいただきました。 また、Ruby/PureImageの作者keisukenさんも再度ご自分の日記でこのエント…

グラフィックライブラリの比較について反応

http://cappuccino.jp/keisuken/logbook/20060823.html#p02 先日書いたエントリRubyのグラフィックライブラリ比較 - 橋本幸樹の無愛想な日記に対して Ruby/PureImageの作者の方が反応してくれていた。 なんだかうれしいやら恐縮するやら。 フォント問題、ネ…

Rubyのグラフィックライブラリ比較

Rubyで使用できるグラフィックライブラリを比較してみました。 Ruby/GD http://raa.ruby-lang.org/project/ruby-gd GDというライブラリをRubyから使うための拡張モジュール。 本家のダウンロード元はサーバはエラーになり使えない。 キャッシュのほうhttp://…

画像を返すCGI

#!/usr/local/bin/ruby print "Content-type: image/gif\n\n"; open('logo1.gif'){|file| $stdout.binmode $stdout.write(file.read) } 先にContent-typeを出力しておいて、標準出力をバイナリモードに切り替え、画像データをそこに流し込む。

Railsに脆弱性

http://japan.cnet.com/news/sec/story/0,2000056024,20198527,00.htm MixiのRailsコミュで告知されていたのでワタシも早速Update。 gem rails update これだけでネットから最新がインストールされる。うーむ。よくできてるなー。 RubyGemsはRuby本体に標準…

ついでに...

exerbを使ってexe形式にしてみました。*1 http://gohannnotomo.ddo.jp/files/midiInput_binaly.zipリンク切れ これでrubyインタプリタもRuby/SDLもインストール不要のはず。多分。 rubyインタプリタもRuby/SDLも入っていない環境を作って動作確認しましたが…

手慰みに...

PC用のキーボードを押すことでMIDIデバイスを鳴らすものを作りました。 以下からダウンロードできます。*1 http://gohannnotomo.ddo.jp/files/midiInput.zipリンク切れ RubyからWin32APIを使用して、インストールされているデバイスを鳴らすようにしました。…

連続更新

以下のようなロジックの場合、2回目の更新は無効になる。 user = User.new(:name => "David") user.save user.name = "koki" user.save #2回目のsaveは内部的にid=0であるレコードへのupdateを発行している。この場合、1回目のsaveのときはinsertなので、Act…

id

id項目はauto_incrementにしないと、ActiveRecordからデータが挿入されたときにnullになってしまう。でもってidがnullであるレコードが複数できる。つまりidの意味が無くなる。 id項目がnot nullの時はエラーになってしまう。 id項目に一意な値をセットする…

sqliteを使用するとき

コネクションを以下のようにする。 ActiveRecord::Base.establish_connection( :adapter => "sqlite3", :dbfile => "/home/koki/test.db" ) :dbfileパラメータを:databeseと勘違いしてちょっとはまった。

属性の値をBooleanとして評価する

属性名? メソッドを使うと属性の値がBooleanとして解釈される。 0(数値),"0"(文字列),"f","false"(文字列),"",nil,false(Rubyのbool型定数)=>false それ以外=>true p user.name #=> "false" p user.name? #=> false p user2.name #=> "David" p user2.name? …

行の削除

1行削除はdeleteメソッド(クラスメソッド)でidを指定する。 User.delete(15) 範囲を渡して複数件削除もできる。 User.delete(12..15)

ID以外を使用した検索

u = User.find_by_name("David") #=> #"David", "id"=>"4", "age"=>"99"}> u = User.find_by_age(40) #=> #"uncle", "id"=>"1", "age"=>"40"}> find_by_属性名(パラメータ)というメソッドを実行すると、 SELECT * FROM テーブル名 WHERE 属性名 = パラメータ…

属性へのアクセス

u = User.find(1) u.name #=> "David" u[:name]#=> "David" アクセサメソッドを使うやり方とハッシュのようにするやり方。 ただし、ハッシュのようなやり方は非推奨。理由は本によると、柔軟性にかけるから、とのこと。 どう柔軟性に欠けるのかもなんか書い…

変数の型を調べる

p 変数.class これでクラス名が表示される。いまさらながらおさらい。

デフォルトのマッピングルールは

テーブル名=クラス名の複数形が基本。 テーブル名:orders−クラス名:Order 不規則変化もたいていは良きに計らってくれるらしい。 テーブル名:batches−クラス名:Batch テーブル名:data−クラス名:Datum 複数の単語からなる名前の場合は クラス名→大文字…

テーブル名≠クラス名の複数形にしたいとき

class User < ActiveRecord::Base set_table_name "names" endnamesテーブルの1レコードがUserクラスにマッピングされる。

も少し深くおべんきょ

あ。同じサンプルがRails本に書いてあった。 これから熟読。。。せっかくお金出して買ったんだからね。

ActiveRecord楽しい

ルビまの記事などを参考にActiveRecordをさわってる。 http://jp.rubyist.net/magazine/?0006-RubyOnRails rubygemsとrailsがもうインストールされているので、いきなりサンプルを実行。 DBは別のときに作っていたやつを使いまわし。 こんなテーブルを使用し…

RadRails

7/21から有給休暇なのでかなり暇。 Railsのおべんきょがとまっていたので続きをやることにしました。RadRailsのエディタの文字コードはデフォルトだとMS932(ShitJIS)なので、UTF-8に変えてあげる必要がある。 Ajaxを使う場合はUnicode必須らしいので。 や…