『RailsによるアジャイルWebアプリケーション開発 第三版』をまだちまちま読んでる。いまActiveRecordのリレーションシップのところ。全然分からなくて全然進まない。もうRails 3.0が出そうだというのに。またろくすっぽ技術書を読まないうちに化石になっちゃいそうだよ。バカはつらいよ。
YAMLで初期データをRailsアプリケーションのDBにぶっ込む
初期データをマイグレーションでRailsアプリケーションにぶっ込んでみた。後からいちいち手入力するのめんどいし、マイグレーションでデータをロードしとけば、本番環境でうごかすときも rake db:migrate で初期データは入るはずだから楽ちんかなと思って。
結果的には無事データをロード出来たんだけど、YAMLの書式が分かってなくて、結局丸一日時間を費やしてしまった。大したデータ量じゃなかったから下手するとちまちま手入力するのと変わらないくらい時間かかったかも。
hoge: #アイテムの名前
id: 1
name: "hoge"
address: "ホゲ県ホゲ村ホゲホゲ"
fuga:
id: 2
name: "fuga"
address: "ホゲ県ホゲ村フガフガ"とかやんなきゃいけなかったんだけど、YAMLの書き方が分かってなくて、
hoge:
id: 1
name: "hoge"
address: "ホゲ県ホゲ村ホゲホゲ"
id: 2
name: "fuga"
address: "ホゲ県ホゲ村フガフガ"とか書いてた。どっちも hoge県 に分類されるんでこんなんでいいだろ、みたいなノリ。しかしこれはやっぱり文書の構造がおかしい。これをロードしてみると、 id=2 のものしかロードされなかった。
結局、拾ってきた コードを参考にして
require 'yaml'
require 'pp'
data = YAML.load_file('hoge.yml')
pp dataみたいなやつを書いて、読み込まれる配列の構造を確認しながらYAMLを書いたところうまくいった。
ブルーノ
ブルーノ
評価 : ★☆☆☆☆
あらすじ
ブルーノはオーストリア人ファッションレポーターのゲイで、ヨーロッパのファッションショーを荒らして目立とうとしてた。しかしあらゆる会場でトラブルを引き起こし、ヨーロッパに居場所が無くなってしまった。こうなったらハリウッドに移ってセレブになろうとアメリカに渡のだが…。
感想
『ボラット』のサシャ・バロン・コーエンの映画。『ボラット』が痛快だったので期待して見に行ったんだけど残念な出来だった。
そもそも映画のテンポが悪い。ぐだぐだしてる。はっきりとしたストーリーらしいものがあるわけではなく、あちこちをドタバタしながら行ったり来たりする。結構疲れる。
しかしポイントポイントでは笑えるネタが用意されている。占い師のところにいってブルーノ(サシャ・バロン・コーエン)がエアフェラチオをするシーン(過剰にリアル)とか、パレスチナに行ってユダヤ人とパレスチナ人の仲を取り持とうとするところとか(「お互いを殺しあうのはやめて〜殺すならキリスト教徒〜」みたいな歌を歌う)、アフリカの子どもを養子にもらってアメリカに戻り、黒人が沢山住んでる地域のトーク番組に出るんだけど、そこで子どもをiPodと取り替えっこしてきたとか言うシーン、こういうのはいちいち毒が効いていて面白い。平和を呼びかけるのはU2のボノとかまねで、アフリカの子どもを養子にもらうのはアンジェリーナ・ジョリーのまね。セレブのまねをしてたら自分もセレブになれるだろうという魂胆。強烈な風刺ですよね。
エンディングもなかなか秀逸で、セレブのそっくりさんたちが沢山出てくる。スティングとかColdplayのクリス・マーティンとかかなり本人そっくりで最初本物が出てるのかと思った。
ただ、欧米ネタ中心だし、ゲイネタもきついので特殊な完成の持ち主にしか受けないと思う。熊本のDenkikanは一週間、一日の上映一回のスケジュールでしか上映しなかったけど妥当な判断だったと思います。
ちなみにブルーノを演じてるのがサシャ・バロン・コーエン本人だってのはエンドロールまで気がつかなかった。劇中ではドイツ語の台詞もしゃべるし(オーストリア人という設定なので)、アメリカではドイツ語なまり風の英語を話す( with の代わりに mit を使うとかね)。さすがケンブリッジ卒、細かいところまでこだわる。
Rubyがエレガントだって言われるのがわかってきたような気がする
「PHPは汚い、Rubyはきれい」とかそういう言説の意味が昔は分からなかったんだけど、昨日今日、久々にCakePHPで作ったサイトのメンテナンスをしてて「PHP、確かにきちゃないわ」と思った。
オブジェクト指向っぽい何がしかのコードをPHPで書いてみる。
<?php
class Hoge {
var $a;
function hoge() {
return $this->a = "hogehoge";
}
}
$fuga = new Hoge();
echo $fuga->hoge();
?>つぎにRubyで同じコードを書いてみる。
class Hoge
@a
def hoge
@a = "hogehoge"
end
end
fuga = Hoge.new
puts fuga.hogeまずPHPは中括弧たくさん書かないといけない。これが面倒くさい。中括弧はキーボードでは shift + [ とか shift + ] とかだから、 shift の分だけキーボードをたたく回数が増える。実にめんどい。最初はRubyのインデントでブロックを表現するところに慣れなかったけど、慣れたらちまちま中括弧をかかないとダメなPHPにいらいらするようになった。中括弧の閉じ忘れでエラーが出ることとかも多いし。
さらにメソッドとか変数へのアクセスもめんどい。Rubyだと . でアクセスできるのに、PHPだと -> だ。入力するときはキーボードに - と shift + . と打たなきゃいけない。アホか。Rubyだとキーを一個打つので済むのが、PHPだと三個だ。
他にも予約語が長いとか、変数のスコープがおかしいんじゃねとか、Rubyを触る前は分からなかったPHPの変態的なところが目につくようになってきた。
PHPちゃん、僕もう疲れたよ(特にCakePHPの配列地獄)。
MultiTextConverterが便利すぎてちびりそう
文字コードがSHIFT-JISなHTMLファイルが200個くらいあって、これをUTF-8に変換したいと思っている。iconvとかいうのを使ってTerminalからやる方法を見つけたんだけど、これシェルスクリプトが分かんないとうまくいかないっぽい。というわけであきらめた。
Mac OS Xにはシェルスクリプトが分からない人のためにAutomatorという決まり決まったワンパターンな操作を自動化するソフトがあるのでこれを使おうとした。Photoshopにもこういう機能ありますよね。画像をまとめてリサイズするとかそれ系。
AutomatorはTigerのときとかに少し使ったことあったんだけど、Snow Leopardになってからなんか結構変わってる。ググってみると「Snow Leopardになってさらに便利になった」とか書いてある。しかし全然使い方が分からない。ヘルプファイルの内容からして分からないし、アップルのサポート記事でもリンク切れ起こしてたりしてもう発狂寸前。
単純にHTMLファイルを開いて文字コードをSHIFT-JISからUTF-8に変換して同じ名前で保存して欲しいんだけど、なんか簡単な方法ないですかね?
と、思ってたんだけどすごいのを発見した!!!
これはやばい。HTMLを解析して <head></head> 内にメタタグまで入れてくれちゃう!! もうちびりそう!!!
まじ助かったわ〜。さっさとルーティンワーク終わらせて帰ってサッカーに備えよう。
RailsアプリケーションでMarkdownを使う
RailsアプリケーションでMarkdownを使いたと思った。(Markdown大好きっ子なので)
調べてみたところ、 BlueCloth というライブラリを使うといいらしい。
これはRailsのプラグインではないのでgemでインストール。
$ sudo gem install blueclothその後viewで
<%= markdwon(@item.text) %>とか書けばいい。
しかしなんも設定しない状態だとRailsアプリケーションはBlueClothを読み込まないので、config/environment.rb に
config.gem "bluecloth"と書いてやる。するとめでたくMarkdownが使えるようになる。
XREAにRubyGemsをインストール
XREAでRailsを使おうと思っていろいろ調べてみた。Railsは rake rails:freeze:gems してアップロードすればオッケーらしいんだけど、RubyGemsはインストールしないといけないみたい。ところがネットに乗ってる情報を参考にインストールしてみたけど全然うまくいかなかった。指示通りにやってるんだけどパスが通らないのか、インストールしても 'rubygemsをrequireできねーぞゴラ!' みたいなエラーが出る。
.profile で記述した GEM_HOME や RUBY_LIB のパスは間違ってないと思うんだけど、何回やっても $HOME/lib/ 直下にRubyGems系のファイルが展開されてしまう。これがエラーの原因っぽい。しょうがないので力業で guantlet_rubygems.rb, rbconfig/ rubygems/ rubygems.rb, ubygems.rb を $HOME/lib/ruby/site_ruby/1.8 に移動させた。その後 source ~/.profile して適当な場所で gem -v してみたところ、ちゃんと 1.3.5 と表示された。
蛇足だけど最初、RubyGems 1.3.7をインストールしようとしたら、利用予定地のサーバーのRubyのバージョンが1.8.5なためにインストールできなかった。そういうわけでRubyGemsは1.3.5を入れた。
あとRubyGemsが入ったからといってシェルで gem install rails とかやってもプロセスを kill されるっぽいのでよい子のみなさんは必要な gem は自分のパソコンでインストールしてからアップロードした方がよさげです。