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

CakePHPには Media Plugin というのがあって、これがすこぶる便利。画像や文書の他に、動画ファイルまで扱うことができる。PHPではファイルアップロードのところにセキュリティリスクが潜んでいそうなイメージだし、自分のような素人に毛が生えたようなレベルの人間は素直にこういう便利なプラグインを使った方がいい。

しかしこのMedia Plugin、設置が少々面倒だ。情報も英語のものも含めて少ない。僕は二つのプロジェクトでこのMedia Pluginを使ったけど、とても設置に苦労した。はまるポイントはいくつかあるんだけど、今日はDBについて書いておこうと思う。

Media Pluginは attachments というテーブルをつくり、ここにファイルのメタデータを格納していく。これはアプリケーションのルート( APP ディレクトリ)で cake media init というコマンドをTerminalで打ってやると(ただし /cake/console にパスを通しておく必要あり)、Bakeのときのような画面が出てきて初期設定をやってくれる( app/config/database.php の情報にあわせてテーブルも作ってくれる)。しかしCakePHPのデフォルトDBがMySQLであるためMedia PluginもMySQLを想定しているのか、 app/plugins/media/config/sql/media.sql のSQL文を単純に実行してしまうと不具合が生じる。実は僕はここで結構はまってた。僕は全部のプロジェクトでSQLiteを使っているので、単純にこのSQLを実行すると、 attachments.id のデータ型が INT(10) とかになってしまい、エラーに遭遇し続けることになってしまった。SQLiteの場合、idカラムのデータ型は INTEGER でなければならないのだ。

これはMedia Pluginに限らないけど、Convention Over Configuration なフレームワークを使うときは、DBのテーブル名に注意をはらわなければならない。否、先にも書いたとおりそれだけでは不十分で、さらにカラムのデータ型とかも規約に沿ったものにしないと、原因不明の謎のエラーに遭遇して開発が停滞する。おっちょこちょいな人(僕も含めて)はその辺の基本的な部分をおろそかにしない方がいいと思った

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

なんかTwitterで「最近のポータルシット変わったよね…」とかいう意見を目にするようになったので、パソコンネタだけ隔離して別にブログを始めることにした。使っているCMSはMephisto。Railsの勉強になるかと思って。早速DreamhostへMephistoをインストールしていて躓いてしまったのでちょこっとメモ。

とりあえず tech.portalshit.net というサブドメインを用意し、DreamhostのパネルでPassengerのセットアップ。その後SSHでサーバーに接続し、

$ git clone git://github.com/emk/mephisto.git
``

してgithubからプロジェクトをclone。

Mephistoのインストールにはいくつかgemが必要。Dreamhostには結構たくさんgemがインストールしてあるんだけど、いくつか足りないものがあった。とりあえず設置ディレクトリのルートで

```sh
$ rake gems:install

と打ってみたところ、nokogiriとそれに依存するbrynary-webratが入らなかった。原因を調べてみたところ、xsltのライブラリをダウンロードして、gem install するときにパスを指定してあげる必要があるらしい。xsltのライブラリ自体はPHP5をカスタムインストールしたときに入れてあるので、以下のオプションでインストールした。

$ gem install nokogiri \n    --with-xslt-include=/home/morygonzalez/php5/include/ \n    --with-xslt-lib=/home/morygonzalez/php5/lib/

無事インストール成功。その後もう一回 rake gems:install を実行してbrynary-webratも入り、管理ページにアクセスしてみると今度はPassengerのエラーが。これは単純にdatabase.ymlに development: のDB環境しか記述していなかったこと、 rake db:bootstrap のときに RAILS_ENV=production をつけていなかったことが原因だった。そういうわけでdatabase.ymlに production: の設定(sqlite3を使用)を書き、

$ rake db:bootstrap RAILS_ENV=production

ですべてのインストール作業完了。いまこうして動いております。

今後はここにCakePHPやRails、JavaScript関連のことを書いていこうと思います。できれば一日一ポスト、その日に学んだことを書いていきたいです。

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

MephistoでGoogle Analytics使おうと思ってググったら Ruby on Rails Plugin: Google Analytics (blue egg edition) - artweb design というのが出てきたので、早速インストールしてみたんだけど動いていないっぽい。

Mephistoは「rails blog」でググって一番上に出てきたので深く考えもせずにインストールしてしまったんだけど、一年近くバージョンアップされてないし、いまはあんまり活発に開発が行われてるわけじゃないっぽいな。

追記

一晩寝て起きたら動いてた。

| @Mac/iPhone

Pocket WiFi

せっかくMacBook Pro持ってるのに外で使わないのもったいない、しかし外で使うためにはやっぱり回線が必要だ! というわけでSoftBank版のPocket WiFi、C01HWを買いました。

家にいるとついついいろんな誘惑に負けてしまってプログラミングの勉強がはかどらないので、一念発起してPocket WiFiを買い、自分にハッパをかけることで屋外で勉強できたらいいかなと思いました。

昨日早速スターバックスでMacBookおっぴろげてみました。勉強はあまりはかどらなかったですが、家にいたらきっとむふふな動画見たり酒飲んだりしてだらだらしていたであろう時間に、少しでもテキストが進んだので買った甲斐はあったかなと思います。

最近は土日どっちかは外で映画見てるので、映画の上映待ってる細切れの時間とかに少しでもプログラミング出来たらとても良いかなと思ってます。週末少しもコード書かないと忘れること多いし。

ところで、買って半年以上経つのに本格的にMacBook Proを持ち出して使うのは昨日が初めてだったのですが、MacBook黒に比べて

  • バッテリーのもちが良い
  • 15インチディスプレー(1440 × 900)だとやっぱ快適
  • 薄いのでバッグへの出し入れがスムース

でした。先週出た最新のMBPはもっとバッテリー駆動時間伸びてるらしいし、しかも値段下がってるし、いい時代になったもんですね。LED Cinemaがもうちょいレート反映した値段になってくれたら良いのにな。

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

しあわせの隠れ場所

評価 : ★★★★☆

あらすじ

家庭崩壊してる貧しい黒人の少年マイケル・オアーが、裕福な白人家庭に養子として迎え入れられ、アメフト選手として大成する話。マイケルが一時的に身を寄せていた自動車整備工場のおっさんが、自分の子どもをカトリックの名門校に入れるために、「マイケルをアメフト選手にしたら将来有望だぜ。だからうちの息子と一緒に入学させてくれよ」と高校のアメフト部のコーチに持ちかけるところから話が始まる。しかし白人だらけの高校にうまくなじめず、下宿先のおばさんにも疎まれマイケルは肩身の狭い思いをする。寒い冬の夜に半袖短パンで路頭に迷っているところに通りかかったリー・アン・テューイ(サンドラ・ブロック)が見かねて家に泊めてあげるところから話は進んでいく。実話がベースらしいです。

ベタな感動作品だけどとても良かったです。『きみに読む物語』とか『私の中のあなた』的な良さがあります。金持ちな白人が貧しい人を助けるっていう話だと偽善っぽさが出てくるんだけど、サンドラ・ブロックが肝っ玉母さんを好演してて、偽善っぽさがあまり漂ってないです。

ぐっと来るのがマイケルが遠慮するところ。サンドラ・ブロックは最初マイケルを家に泊めたときに警戒するんだけど、朝起きてみるとマイケルは礼儀正しくてきれいにふとんをたたんでひっそり屋敷を出ていこうとする。テューイ家で暮らすようになってからも、サンドラ・ブロックのことをミセス・テューイって呼んで「そういうよそよそしい呼び方はやめなさい」って注意されたり。お互いが手探りでじわじわと心の距離を詰めていくところが良かったです。

サンドラ・ブロックが金持ち奥さん達とのランチで、黒人や貧しい地区に住む人たちのことを馬鹿にする連中に向かって "Shame on you" って言うシーンはさすがにやり過ぎというか偽善なオーラが漂ってたけど、最初はマイケルのことを馬鹿にしてた高校のアメフト部のコーチも、試合で白人の審判がマイケルに不利な判定をしたときに「この人種差別野郎!」と食ってかかるところなど、周囲の白人たちの意識が変わっていく感じがさわやかでした。

裕福な白人が貧しいマイノリティーを助ける映画では、去年『路上のソリスト』を見たんだけど、あれは金持ち白人のオナニーストーリーという感じであまりさわやかさがなかった。しかしこの映画はマイケルも白人達も一緒に成長して家族になっていくという一体感があって、そこが良かったのではないかと思います。サンドラ・ブロックの行動力あふれる感じもプラスに作用。

蛇足になるけど、僕が陰ながらいいなぁと思ったのが、一家の大黒柱ショーン・テューイ。リー・アンに黙って、高校にマイケルの緊急連絡先をテューイ家にするなど頼りになるパパぶりが男前でした。やっぱ男は金だなーと見ながら思った。扉をたたく人という映画で、チュニジアからの移民のために大学教授が手をつくすのを見ても思ったけど、人生には金がないとどうにもならない局面がたしかにあって、そういうときにさらっと金を出せるのが男のかっこよさだなと思った。僕もあと15年後くらいにはそういう金を持ったかっこいいおっさんになっていたいです。

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

パイレーツ・ロック

評価 : ★★★☆☆

あらすじ

舞台は1960年代のイギリス。当時は政府によって音楽が規制され、ラジオでポップミュージックは一日45分しか流せなかった。これに対し海の上から一日中ロックを流す海賊ラジオ局が北海上に氾濫し人々を熱狂させていた。たばこと大麻が学校にばれて高校を退学になったカール(主人公)が母親の薦めで海賊ラジオ局にやってきて成長していく話。

なかなか痛快だった。特に良い味出してたのが海賊ラジオ局の船長クエンティン役のビル・ナイ。小泉純一郎をもっとかっこよくしたみたいな感じのおっさんで、バリッとしたスーツを着こなしアホなことを言う。あとザ・カウントというアメリカ人DJ役のフィリップ・シーモア・ホフマン。この人はデブのオタク役みたいなのが多いけど、この映画ではロックンロール魂あふれる体育会DJとして登場してた。とてもかっこいい。特にタイトな革のライダースジャケットを着てスタイニーボトルのビールを飲みながらDJやる姿とか。こういうデブならもてる。

一応高校を退学になった若者カール(童貞)が主人公で彼のビルドゥングスロマン的なストーリーなんだけど、主人公はあまり目立たない。クエンティンの姪っ子を紹介されて良い感じになってたのに船の他のメンバーに寝取られたり、狭い船の中でメンバーが女の子を奪い合ったりと結構えぐい。他のメンバーの嫁とセックスしたアメリカ帰りのイケメンDJギャヴィンが、「これもロックミュージックの暗部だ」とかいうセリフをシリアスな表情で吐くシーンがとても面白い。こんな感じでセックス関連の出来事がコミカルにさらっと流されるんだけど、自分が良い感じになってた女の子が他のメンバーとベッドインしてる現場を目撃したりしたら、普通はノイローゼになっちゃうよな。

音楽自体はとても良かった。僕はあんま1960年代のブリティッシュロックは詳しくないので、新鮮な気持ちで鑑賞することが出来た。ロックは家で聞いててもあまり良いって思うことがないんだけど、映画館とかライブハウスとかで大きな音で聞くとすごく良いなって感じるからとても不思議だ。

| @雑談

Linux(CentOS 5.4)がずーっと起動しっぱなしだったので、たまにはリブートするかと

sudo reboot

かけた。普段、サーバーにはモニターもキーボードもつないでいないので、このままだと「キーボードがないわよ」みたいな警告が出てブートが途中で止まる。たいていキーボードをつけてがちゃがちゃやると「キーボード発見しました」みたいな表示が出てブートが進むので、モニターはつながず、キーボードだけつないでがちゃがちゃやっていた。しかし…。

ブラウザーからサーバーにアクセスしてもつながらない。あれ? sshでMacBookからサーバーに入り、

/etc/init.d/httpd configtest

してみると

httpd: Syntax error on line 210 of /etc/httpd/conf/httpd.conf: Syntax error on line 1 of /etc/httpd/conf.d/ruby.conf: Cannot load /etc/httpd/modules/mod_ruby.so into server: /etc/httpd/modules/mod_ruby.so: cannot restore segment prot after reloc: Permission denied

とか出る。えー? mod_ruby.so が読み込めないのかー。mod_rubyを再インストールしたり httpd.conf を書き直してみたりしたんだけど効果なし。同じエラーで困ってる人いないかと、「mod_ruby centos エラー」とかでググってみたんだけど、そういう人は見つからず。キーワードを変えて「cannot restore segment prot after reloc: Permission denied」でググってたら以下のサイトにたどり着いた。

なるほどそういうことか。どうやらモニターにつながずキーボードをがちゃがちゃしていたときに /etc/selinux/config の設定を変更してしまっていたみたい。(SELinuxの小技

結局、 /etc/selinux/config を編集して

SELINUX=disabled

として無事Apacheが起動できるようになった。

午前中の時間が無為に過ぎて行ってしまった…。