nasne (ナスネ) (CECH-ZNR1J)買ってiPad経由で録画再生できるようになって引きこもり生活が色々捗る今日この頃。
でも購入タイミングのせいで一話はPS3本体だったいするので、消化しようにも消化できてない番組が結構あったりする・・・
iPadアプリ側の再生の精度とか操作性とかの使い勝手が上がればなぁというのと、torne・nasne側の録画データの移動ができればなぁという所だが、それでも今のところは十分に満足。
そんなこんなでRubyの学習。
- 作者: 久保秋真
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2012/11/26
- メディア: 単行本
- クリック: 4回
- この商品を含むブログ (1件) を見る
第18章では前部までに作成していた蔵書データをCSVとしてファイルに保存・読み込みする。
この章で新たに出てきたものは以下
カンマ区切り分割の際に複数要素への代入
a, b, c, d, e = line.chomp.split(',')
Perlでも下記のように書けるけど、
(a, b, c, d, e) = split /,/, chomp(line);
()が無くて良い分だけ楽。
Dataクラスのインスタンス作成
require 'date' date = Date.strptime([日付文字列], [フォーマット])
で作成可能。
PerlでいうTime::Pieceみたいなことができる。
use Time::Piece; my $date = Time::Piece->strptime([日付文字列], [フォーマット])
取り出せる出力とかもほとんど同じなのが有難い。
ちなみにRubyのフォーマット指定は"%Y-%m-%d"型なら省略可能。
DBからの取り出しとかで使用頻度が高いので有難い。
第19章はハッシュのようにデータをファイルに読み書きできるPStoreを用いた方法について。
下記のようにPstoreクラスを作成する。
require 'pstore' db = PStore.new( 'dbfile' )
transactionメソッドを用いて任意のキーを指定してデータの読み書きができる。
db.transaction do db["キー"] = 値 puts db["キー"] end
endでtransactionメソッドを抜けるタイミングでファイルが保存される。
また、transaction(true)のようにすることで書き込みを禁止できる。
保存されてるキーはrootsメソッドで読み取り可能。
db.transacton(true) do db.roots.each{ |key| puts "#{db[key]}" } end
存在確認はroots?メソッドで行う。
また、削除はdeleteメソッドで。
db.transaction do if db.roots?(キー) db.delete(キー) end end
Perlでこれに当たるにはStorableかなと思うけど、こっちの方がすっきり書けるし、読み取り専用が可能だったりで何かと便利にできてる気はする。
ところで19章の中で正規表現にif /パターン/ =~ 変数みたいな構文が出てきて「あれ?」と思ったけどRubyってこれOKなんですね。