コアランチ

久しぶりの更新だけど告知です。宣伝おつ !!

昼飯はデフォでコンビニ弁当、仕事が忙しくて開拓する余裕がないという現代人の前に颯爽とあらわれて「ここのお店どう ? 」と教えてくれるコアラさん !! でも札幌限定な !!!

という感じのサービスです。まだ大通り周辺のお店に偏ってる感はありますが、まだまだ増える予定なので最寄りのお店が 3 km 先とかでも泣かない。

ちなみに左上にいるコアラさんは実写だとこうなります。

…えーとこれもうちょっと可愛いのなかったの ? こういうのがどこかでビラ配ってたらお腹にパンチあーあれかーと思ってください。

よろしくー。

ラノベアレコレ

最近普通にラノベ読むようになってきたのでここらで一回まとめ。

  • BACCANO!
    • http://www.amazon.co.jp/dp/4048684590/
    • anime から入って発刊されているものをすべて読んでる状況。
    • この series 自体はゆっくり進んでる感じでいいんだけど 2000 年代の巻でデュラララ!の登場人物の描写があるので勘弁して欲しかったりする。あっちは学生ノリがきつくてついていけないんだよなー。
  • 人類は衰退しました
    • http://www.amazon.co.jp/dp/409451001X/
    • けっこう前から読みはじめて発刊されてるものはすべて読んでる。たしか某 Z さんが読んでるって言ってたから読んでみようかというノリで手を出した記憶がある。
    • 主観的かつ固有名詞を一切出さない記述という特徴があるんだけど昨今の縛りプレイよろしくそれが味になっていて面白い典型。まぁそれ以上に個性的なノリの文章でもあるんだけど。
    • 内容的にはガチ SF でちょっと怖いオハナシもありつつ。怖いってのは世にも奇妙な物語的な意味で。砂糖を出すスプーンの巻はマジで怖かった。
  • なれる!SE
    • http://www.amazon.co.jp/dp/4048705288/
    • http://d.hatena.ne.jp/smellman/20100612/1276322143 を読んで一巻目でハマって発刊されてるものをすべてという状況。
    • おれも programmer が本職だと思ってるけど一応 network わかるのですごい勢いでハマってしまった。 SNMP とか懐かしすぎて涙が出た。あと技術的な記述の level が高い。これ書いたひとちゃんとした skill 持ってる。あーブラック云々はまぁいろいろあるから触れないけども。けども。
    • 夢を打ち砕くのを避けるために初年度は伏せておくとして、二年目あたりからの教材として使えるかもしれない。人間関係の機微とか学ぶなら下手な啓発書なんかより参考になるしわからない単語ないよな ? という確認の意味でも。
  • フルメタル・パニック!
    • http://www.amazon.co.jp/dp/4829128399/
    • 同僚の M くんが面白いよーといっていたので読みはじめてみた。 main の 3 巻目まで読了。
    • なんというか文章がうまい。すらすら読める。 anime は一応全部見たのでオハナシはわかっているんだけどそれでも続きが読みたいと思わせる文章力はすげーなと。すでに次の 3 巻と外伝的な series の 3 巻もポチり済みなので最後までいくんじゃねーかなと思う。
  • ブラック・ラグーン
    • http://www.amazon.co.jp/dp/4094510796/
    • 漫画の方の新刊まだかなと思って情報漁ってたら出てきてそういやこんなのあったなという感じと最近のまどかなんたらの scenario のひとが書いてるのかーということで興味が出て買ってみた次第。
    • 虚淵玄氏すげーな。というのがすべて。すぐに 2 巻をポチってまどかなんたらの視聴も検討している。こういうとき地方は辛いな。
    • 憧れというか片思いというか。 simple というのはそれだけでかいってことだ。

Final Fantasy 4 The After

Wii ware version 遊了。 scenario すべてでだいたい二ヶ月くらいかな ? 長かった…。

値段的には ¥800 を初回に払って ¥300 の scenario が 7 つと ¥800 の scenario が 1 つなので合計で ¥3700 かかる。いまどきの作品にしては安い方だけど内容も軽めなのでお得感はないかも。

battle 的には時間経過による command 種類別の威力の増減が面白かったんだけど全編通して難度が低いせいか pattern 構築をさせないためのものなのかなぁと。「たたかう」最強と思ってるおれとしてはちょっと勘弁してほしかったりあまり使わない command の有用性を知る機会になったりでよくも悪くも刺激になった感じ。

あーでも複数の character による発動技はよく練られていたかも。威力・ cost ・ character の組み合わせでズレてるものがなかったので十分実戦投入できるものだった。こういうのさがすのがめんどくさいと思ってしまうひとなんだけど event で覚えたりするのでうまいなぁと思ったり。

scenario 的にはなんというかいろいろぶち壊してるなーという感じで。カインは本当に苦労人だと思ったり双子が素直に育ってたりギルバートしねと思ったりはまぁ 2 作目だしなぁで流せたんだけど last dungeon のアレとか last boss の存在とか狂言回しとか本当に勘弁してほしかった。そのまま受け取ったら series 自体アレということになってしまうしなー。愛が感じられない。

あとセリフ回しとか展開が古かったり event がいちいちくどかったりでこんな芸風だったっけとか。あーあと NDS FF4 をやったあとだとやっぱり表現の追求って大切だとか思ったり。お家芸とかもういいんじゃないかなーと。表現したいものに最も適した表現が云々言い出すと game がどうこういうハナシになってしまって筋が悪いのはわかるんだけど表現方法が先行すると残念な結果になるんだなぁという実感。捨てられないってのは disadvantage 。

Handling master data in database with Rails3

Rails で database に master data をつっこんで扱いたい場合の注意書きというかこんなんでできましたというまとめ。

まず関連付けというか association をどうするか。たとえば燃えるゴミの日を check box なんかで選択させたい。手っ取り早いのは曜日の表示名を master data として用意しておいて燃えるゴミの日を表す model と関連付けてやればいい。

class WeekDay < ActiveRecorde::Base
end

class Waist < ActiveRecorde::Base
  belongs_to :week_day
end

このときどういう関係かを考えなくちゃいけないんだけど上記のとおり燃えるゴミの日 model が曜日 model に属するのが正しいぽい。どっちがどっちを持つかとか属するかとか考えるとわけわからなくなるので「その model が他の model を必要とせずに単独で存在できるかどうか」という規則で決める。他の model に拠っている方が単独で存在できる方に属している、という関係。

細かいこと考えるといろいろあるんだけど曜日は常識として、つまり曜日 model は単独で存在できるとしていい。で、燃えるゴミの日は曜日の存在を前提として決められている。ということは燃えるゴミの日 model は曜日 model に拠っている。なので「燃えるゴミの日は曜日に属している」ということになるわけだ。

逆に「曜日は燃えるゴミの日をたくさん持っている」としても等価なんだけどそもそも曜日は燃えるゴミの日のことなんか知らない、知らなくても存在できるわけなので has_many の関係を持たせるのは意味合いがちょっと違う。あくまで依存するものに関係を記述してやるのがいい、というわけだね。

Internationalize Rails3 app on CentOS 5.6

Railsi18n の仕組みを独自で持っているらしいんだけどそれを使うために準備が必要なのでまとめ。 gettext でいう po にあたる file を生成してくれる i18n_generators ってのを使う。

先頭が # の command を root で、 > の command をそれ以外の user で打つ。まず必要な gem の install 。

  1. # gem install i18n_generators

準備終了。実際に使うには app の Gemfile に追加する。

  1. > cd appname
  2. > echo "gem 'i18n_generators'" >> Gemfile
  3. > bundle check
  4. > rails generate i18n ja

これで Rails が標準で出力する error message やなんかと model の column 名の表示が日本語化される。訳がアレなときは config/locales 以下の file をいじればいいみたい。あーあと model は rake db:migrate したあとじゃないと翻訳後の file もつくられないみたいなので注意。

Deploying Rails3 app with passenger on CentOS 5.6

Rails app を本番環境で動かすには今は passenger が自然な選択肢らしく導入してみた。例によって先頭に # がある command を root で、 > がある command をそれ以外の user で打つ。

まず Apache の install から。

  1. # yum install httpd
  2. # chkconfig httpd on

次、 passenger の install 。

  1. # yum install httpd-devel curl-devel
    • make に必要な package の install 。うちの場合これで足りたけど make の段階で package が足りない場合は必要なものを教えてくれるのでそのときに install するほうがいいかも。
  2. # gem install passenger
  3. # passenger-install-apache2-module

終わると最後に httpd.conf に設定を追加しろと言ってくるのでそのとおりにする。うちの場合以下の 3 行だった。

LoadModule passenger_module /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.7/ext/apache2/mod_passenger.so
PassengerRoot /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.7
PassengerRuby /usr/local/bin/ruby

設定の最後。 Apache の document root を Rails app にする。あー app を "/var/www/rails/appname/" に deploy する場合ね。

<VirtualHost *:80>
    ServerName www.example.com
    DocumentRoot /var/www/rails/appname/public
    <Directory /var/www/rails/appname/public>
        AllowOverride all
        Options -MultiViews
    </Directory>
</VirtualHost>

Apacheapache という user で Rails app に access する。ので起動できるようにするために何とかしてやらないといけないんだけどそのための group を追加する方向で解決する。安直に "rails" て名前にして Rails app 全般をこの group で起動するようにしてみる。

  1. # groupadd rails
  2. # usermod -G rails apache

次、 app を deploy する場所を作る。

  1. # cd /var/www/
  2. # mkdir rails

実際の app を deploy する。

  1. # cd appname
  2. # git checkout-index -a -f --prefix=/var/www/rails/appname/
    • よく言われるけど prefix の最後の "/" は必須というかないと残念なことになるので注意。
  3. # cd /var/www/rails/
  4. # mkdir appname/log
  5. # touch production.log
    • log file はないとダメだろー。
  6. # mkdir appname/tmp
    • tmp がないと動かない場合もあるらしいのでつくっとく。
  7. # chown -R user:rails appname
    • apacheaccess できるように group を rails にする。あと細かい調整ができるように所有権を一般の user にしてるけどここで調整するよりは開発環境で変更してから deploy しなおすのが筋がいい。 root でいじって大損害を回避するための設定ってことにしといたほうがいいかな。

最後、 database を初期化する。

  1. > rake db:migrate RAILS_ENV=production
  2. > rake db:setup RAILS_ENV=production
    • seed data 投入。必要な場合のみ。

これで終了。満を持して Apache を起動する。

  1. # /etc/init.d/httpd start

Using MySQL as Rails3 database on CentOS 5.6

Rails3 で MySQL を使う場合の設定。ついこの間 stable release の最新である 3.0.7 の default adapter である mysql2 gem を使うことができなくなってしまったみたいなので mysql-ruby で代用する。

ちなみに Rails 3.1 は edge で使えるらしいのでそのうち release されて mysql2 を adapter として使うこともできるようになるんだろうけど、間が悪い。これは mysql2 gem がせっかちさんということでいいのかな。

以下、 adapter 変更も含めた MySQL を使う app の初期設定の流れ。先頭が # の command は root で、 > はそれ以外の user で打つ。

まず mysql-ruby adapter の install から。めんどくさいので root で直接 gem 叩いて system に install しちゃうけど Bundler 使うのでもおk。

  1. # yum install mysql-devel
  2. # gem install mysql-ruby

次、実際の app の adapter を変更するところまで。

  1. > rails new appname -d mysql
    • MySQL を使うよう Rails に指示して app を作成する。
  2. > cd appname
  3. > sed -i -e 's/mysql2/mysql/' Gemfile
    • Gemfile に mysql2 でなく mysql-ruby を利用すると書く。
  4. > sed -i -e 's/mysql2/mysql/g' config/database.yml
    • database 接続のための設定も mysql2 の代わりに mysql-ruby を利用するということにする。
  5. > bundle check

これで MySQL につなぐことができるはず。

最後に MySQL に接続する user を変更する。 root のまま access するのはいろいろ危ない。以下 "appname" という user で "password" という password を使って接続する例。 先に database と user だけ手動で作ってしまう。先頭が $ の command は mysql client で打ち込む SQL ね。

  1. > mysql -u root -p
  2. $ CREATE DATABASE appname_development;
  3. $ CREATE DATABASE appname_test;
  4. $ CREATE DATABASE appname_production;
  5. $ GRANT ALL ON appname_development.* TO appname@localhost IDENTIFIED BY 'password';
  6. $ GRANT ALL ON appname_test.* TO appname@localhost IDENTIFIED BY 'password';
  7. $ GRANT ALL ON appname_production.* TO appname@localhost IDENTIFIED BY 'password';
  8. $ quit
  9. > sed -i -e 's/root/appname/g' config/database.yml
    • "appname" という user で MySQL につなぐ設定
  10. > sed -i -e '/password:/s/:/: password/g' config/database.yml
    • "password" という password を使ってねという設定

終了。