| @WWW

ちょっと前の本だけど、『Webを支える技術』をいま読んでます。

HTTPの話とか、毎日使ってる技術のことを知らなくて、いちいち感動しながら読んでるんですけど、中でも興味深かったのがURIの話。56ページの、「URIはリソースの名前だから名詞であるべき」というくだり。バージョン 2.0以前のRailsでは、

http://example.jp/sample/people/show/123

みたいなURIがデフォだったそう。しかしRails 2.0以降は

http://example.jp/sample/people/123

となって、動詞 show が省かれるようになった。HTTP通信で動詞を表すのはHTTPメソッドだから、URI自体が動詞を含むのはおかしいということらしい。ちなみにこのとき、名詞であるURIにアクセスするためのHTTPメソッドは GET ですね。

確かに自分が作っているサイトでもRailsで動かしてるものは、動詞を含まない名詞だけで表現されたURIを表示する。しかしながらCakePHPは

http://example.jp/sample/people/view/123

みたいなのがデフォだ。クールじゃない。というわけでURIから view を省くようにルーティングの処理を書き換え、各クラスのコントローラーも書き換えといた。

この『Webを支える技術』、プログラミングの話とかは載ってないから読んでいきなり何かの役に立つというタイプの本ではないけど、Web制作者なら職種にかかわらず読んどいた方が良さそうな本だなーと思いました。

| @技術/プログラミング

80個近くある静的HTMLファイルをシステム化する必要が生じたので、HTMLをHpricotでスクレイピングしたあと、抽出したデータをSQLiteにぶっ込んだ。しかしSQLiteにぶっ込んだあとでデータの一部をいじりたくなった。そこでRailsのActiveRecordを単体で使ってみた。

なんでわざわざActiveRecordを使うのか

いやそりゃもちろんSQL書くのが怖いからですよ。というのは半分冗談なんですけど、CakePHPはSQLite 2にしか対応しておらず、SQLite 2は何かと制限が多い。replace関数が使えんとか。temp tableとか作るのかったるいし、フレームワークばっかり使っててSQLはあんまりよく分からないのでActiveRecordを使った次第です。

作業詳細

このシステム化するプロジェクト自体はCakePHPで動いており、DBはSQLite2。デフォの状態だとRailsは sqlite3-ruby しかインストールしないので、ActiveRecordからSQLite2なDBを操作することができず若干まいっちんぐだったんだけどなんとかでけた。ちなみにやったのはCRUDのReadとUpdateね。

やったこと

とりあえず以下のようなファイルを用意。各レコードの name フィールドの "hogehoge" という部分なのが邪魔なので削りたかった。

#!/usr/bin/env ruby

require "rubygems"
require "sqlite"
require "active_record"

ActiveRecord::Base.establish_connection(
  :adapter => "sqlite",
  :database => "path/to/db"
)

class Hoge < ActiveRecord::Base
end

hoges = Hoge.find(:all)
hoges.each do |hog|
  hog.name.gsub!(/hogehoge/, "")
  hoge.save
end

まず最初に、 no such file to load -- sqlite みたいなエラーが出た。要するに「お前SQLite 2のアダプター入れてねえだろ」というエラー。とりあえず sudo gem install sqlite-ruby したんだけど、それでも no such file to load — sqlite が出るのでMacを再起動したら「Rails 3ではSQLite 2はdeprecatedだからさっさとSQLite 3に移行しろや」みたいなメッセージは出るもののちゃんとDBの内容を読み込めた。CRUDのReadはでけた。

しかしUpdateの部分で失敗。Railsの感覚で hoge.save とかやったんだけどこれは意図したとおりに機能しなかった。しょうがないのでRailsのAPIリファレンスを見ながら、 update_attribute() というメソッドをぶちかましてやった。こんな感じ。

hoges.each do |hog|
  if hog.name =~ /hogehoge(.*)/
    hog.update_attribute("name", $1)
  end
end

これで狙ったことができました。

Rubyいいわー。ほんといいわー。

| @雑談

最近車の調子が悪く、お金は全然持ってないけど「新しいPOLOいいよなー」とか思ってYouTubeでPOLOの動画見てたらこんなの発見した。

</param></param></param></embed>

1950年代のアメリカにPOLOがタイムスリップしたら、というストーリー。勝手に翻訳してみます。


不良連中行きつけの喫茶店の前に赤色のニューPOLOが駐まってる。

男A: 「ダセェ」

男B: 「レッド!」

店内に入るとカウンターに現代からタイムスリップしてきたとおぼしきなよっとした男が座ってる。

男A: 「おいお前、外に駐まってる赤いブツは何だ?」

ナヨ男: 「あたらしいPOLOだよ。」

男A: 「POLOォ?」

ナヨ男: 「かっこいいだろ?」

男A: 「かっこいいィ?」

不良一同爆笑

男A: 「思い知らせてやる必要がありそうだな」(ここの訳適当)


で、結末はご覧の通りです。

ちなみにPOLOはアメリカでは売ってないので、このCMはヨーロッパとかオセアニア向けということになりますね。1950年代のアメリカ人がアホっぽく描かれてて興味深いです。

| @技術/プログラミング

Rubyいいっすわ。あんまり詳しいことは tech.portalshit.net に書きますけど、Rubyいいっすわ。Rubyの何が良いってオブジェクト指向なのがいいっすわ。あと無駄な括弧やセミコロンが必要ないのもいいっすわ。配列の操作、ブロックとかがいいっすわ。Procとかまだよく分かってないけど、とても便利っぽいものなにおいがぷんぷん漂ってくるのがいいっすわ。全般的に「こういうのPHPでやりたかった」っていうのがたくさんあってとても助かる感じです。

残念なのは、ターミナルの操作にある程度慣れてないと、最初の環境構築でつまずくところかな。RubyGemsインストールして、必要なGemをインストールして、ってやらないとなかなか使えるようにならない。あとレンタルサーバーで気軽に使えないのが痛いかな。PHPは大抵のサーバーに入ってるし、ターミナルの知識なくても、HTMLの拡張子をPHPに変えて、テキトーに <?php ?> で囲んで何か書いてサーバーにアップロードすればとりあえずスクリプトを動かすことができるので、簡単に始められるのが良いですよね。RubyはApacheで動かそうとするとhttpd.confいじる必要があるので、なかなか簡単には使い始められない。

というかですね、PHPは動的HTMLを生成するためのテンプレートエンジンなんだと思う。どっちかつったらプログラミング言語っつーよりもウェブアプリケーションフレームワークでいうならビューに特化したマークアップ言語なイメージ。だから小規模な動的WebサイトだったらPHPはとても良いと思う。DBとか使わなくて、MVCとか分ける必要のないサイトとか。

ただライブラリとか使って複雑なことやるんだったら他の言語の方が良いと思う。PEARとかPECLとか便利なのか不便なのかよく分かんないし。

以上、Ruby on Railsの手術を受けて洗脳されている最中のおっさんの戯れ言でした。

そういや、今月下旬に友達の結婚式で東京行くのでRubyKaigi行きます。もし会場で僕を見かけたら生卵とか投げつけないで一緒にご飯食べたりしてあげて下しあ。

| @写真

先日、たまたま江津湖を散歩したらとても良かったのでお知らせします。

Continue reading...

| @映画/ドラマ/テレビ

ルドandクルシ

評価 : ★☆☆☆☆

あらすじ

ルド(ディエゴ・ルナ)とクルシ(ガエル・ガルシア・ベルナル)の兄弟はメキシコの田舎町のバナナ農園で働いているが、一緒に暮らしている母親の再婚相手の男はむかつくし、仕事はつまらないし、人生一発逆転してやりたいと思っていた。二人はアマチュアのサッカー選手で、たまたま街で車が立ち往生したスカウトのバトゥータの目にとまり、プロサッカー選手としてメキシコシティに出ていくことになった。果たして二人は一発逆転できるのか?

感想

アルフォンソ・キュアロンの弟カルロス・キュアロンが監督で、アルフォンソも制作に関与しており、さらにガエル・ガルシア・ベルナル、ディエゴ・ルナの組み合わせという、『天国の口、終りの楽園。』のキャストが再結成して制作された機動戦士ガンダム 逆襲のシャアのような作品。期待して見に行ったんだけど、「そんなのありなの?」ってくらいつまらなかった。メキシコのオールスターが集まって作られてる映画なのに、熊本のDenkikanでは一週間しか上映されなかったのが不思議だったけど、実際に見てみて「これはお客さん入らないわ」と思いました。

ルドとクルシはそれぞれ父親が異なり、母親はさらにその後離婚して別の男と暮らしている。複雑な家庭なのだ。しかしルドもクルシも、直接会ったことはないそれぞれの父親のことを誇りに思っている。ことあるごとに「俺の親父は…」と言う。このあたりがガキっぽい。

そもそもルドもクルシも年齢不相応に夢見がちな少年として登場する。ルドは妻子がいるのに人生一発逆転したい一心で家族に黙ってメキシコシティに出て行くし、クルシはサッカー選手はどうでもよくて、本当はミュージシャンになりたと思っていて、そのための足掛かり作りのためにサッカーをする。この辺の感覚がよくわからない。

そんな軟派なノリじゃサッカー選手として大成しないだろ、と思うんだけど、映画では二人とも大活躍して、クルシはメキシコ代表として招集されたりする。さすがにこれはやり過ぎだろ思った。

クルシは念願かなってレコードデビューを果たし、カウボーイの格好して歌をうたうのだが、このシーンはまるでインドの映画を見ているみたいで異様なテンションに正直引いてしまった。ひょっとするとメキシコ人は特殊な感性を持っている人たちなのかも知れない。

ただ、ルドの嫁さんがネットワークビジネスにはまったり、ルドがギャンブルと麻薬におぼれたり、クルシが悪い女に騙されたり、兄弟の妹がマフィアと結婚したりするところが、メキシコ社会の暗い部分を描いているのかなと感じた。なんでそうなるんだよ、みんなもうちょっとしっかりしろよ、と自分はしっかりしてないくせに思いました。

そういうわけでして、ガエル・ガルシア・ベルナルが出てるからと期待して見に行っても期待を裏切られることになりますのでご注意あれ。

| @技術/プログラミング

AuthlogicとAuthlogic-OAuthでキメてやろうと思ってたのに全然うまくいかないし。Authlogic-OAuth、去年から全然更新されてないじゃん。Railsは便利なプラグインいっぱいあるけど、メンテが止まってることも多い。プラグインに頼りまくってサイト作ってると死ぬこともあるなーと思った。やりたいことは自分でもやれるようにしとく必要あるし、自分の手に余ることはやろうとしない方がいいと思った。できるところからコツコツと、と37シグナルズの本にも書いてあるし。