Railsのlayoutで基本、一緒なんだけど

「ココとココのページだけは特定のjavascript読み込みたい」

とか

「SEOのためにtitle, meta description, meta keywordsをページ毎に細かく分けたい」

とかいう場合にControllerで@titleに文字を入れておくとかいうのは非っ常に気持ち悪い。

そういう時、layoutには

<html>
  <head>
    <%= yield :header %>
  </head>
(略)

と書いておいて、それぞれのページでは

<% content_for :header do %>
  <%= content_tag :title, "タイトル" %>
<% end %>

とやると、

<html>
  <head>
    <title>タイトル</title>
  </head>
(略)

となる。Controllerが綺麗になってうれしい。やっぱりHTMLはViewに書きたい。

javascriptはlayoutの最後の行に同じく yield :footer_js とか作って最後に読んだ方がいいかも。

Railsレシピブックに載ってました。どーってことないアレだけど、183個のレシピのなかでこれが一番うれしかった。

Railsレシピブック 183の技
  • Railsレシピブック 183の技
  • ソフトバンククリエイティブ(2008-05-31)
  • ソフトバンククリエイティブ
  • 定価:¥ 2,940
  • 新品価格:¥ 2,940
  • 中古価格:¥ 2,540
  • ASIN:4797336625

halcyon

Rackの動画の中で気になっていたHalcyon(ハルシオン)。気になったつっても技術的にじゃないけど一応調べときました。(ハルシオンはカワセミのことらしいです。ちなみにパルレオンは無いw)

Halcyonは軽くて速いJSONのフレームワークだそうです。コード見たほうが早い。

class Message < Sequel::Model; end
class Messages < Application
  def new
    # respond with fields acceptable
    ok Message.columns
  end
  def create
    msg = Message.create(params)
    msg.save
    ok msg.id
  end
  def read
    ok Message[params[:id]]
  end
  def update
    Message.filter(:id => params[:id]).update(params)
    ok
  end
  def delete
    Message.filter(:id => params[:id]).delete
    ok
  end
end

SequelベースにしてAPIが簡単に作れて、

{"status"=>200, "body"=>"Tue May 27 19:53:15 -0500 2008"}

JSONでレスポンスが返る、と。

API用サーバとかに良いんですかね。最近じゃRailsでも大して手間変わんないので”速い”っていうのがどのくらい速いかが気になるとこです。

No mobile me

MobileMe…

sport-captain

NO THANK YOU…

MySQLロゴ

slowlog

[mysqld]
log-slow-queries=/var/log/mysqld-slow.log
long-query-time=1

slowlogをメール

dailyでlogrotateしておいて、下記。

% crontab -l
50 3 * * * mysqldumpslow -s t /var/log/mysqld-slow.log | mail -s "mysql slowlog" foo@bar.com

CSVにエクスポート

SELECT * FROM employees INTO OUTFILE "/tmp/employees.csv" FIELDS TERMINATED BY ',' optionally enclosed by '"';

CSVからインポート

load data infile "item.csv" into table item fields terminated by ',' optionally enclosed by '"';

CSVからインポート(1行目を無視)

load data infile "item.csv" into table item fields terminated by ',' OPTIONALLY ENCLOSED BY '"' ignore 1 lines;

auto_incrementの値を設定

ALTER TABLE test AUTO_INCREMENT = 1;

ユーザー追加

grant all on dbname.* to `username`@localhost identified by 'password';

バッククォートで囲えばハイフンも使える。

rootのパスワード削除

set password for root@localhost=password('');

DBバックアップ

% crontab -e
0 5 * * * mysqldump -uproject -pxxxxxxx project_production | bzip2 > /var/www/html/project/backups/project_production.`date +\%Y\%m\%d\%H\%M\%S`.dmp.bz2

カラム追加

ALTER TABLE `foos` ADD COLUMN `foo_id` int(11) NOT NULL DEFAULT 123 AFTER `title`;

Macにインストール

% sudo port install mysql5 +server
% sudo -u mysql mysql_install_db5
% sudo cp /opt/local/share/mysql5/mysql/my-small.cnf /etc/my.cnf

Macで起動

% sudo /opt/local/share/mysql5/mysql/mysql.server start

Macでlaunchdで再起動

% sudo launchctl stop org.macports.mysql5
% sudo launchctl start org.macports.mysql5

文字化け

# my.cnf
default-character-set = utf8
skip-character-set-client-handshake

外部からの接続禁止

# my.cnf
skip-networking

クエリーのログを取る

[mysqld]
log=/var/log/mysqld-query.log
孤独のグルメ 【新装版】

個人で雑貨輸入商を営む井之頭五郎は腹が減っていた。

「”めし屋”は・・・ どこでもいい、”めし屋”はないのか」

「ええい!ここだ 入っちまえ」

「ぶた肉いためとライスください」 「あと、おしんこ」

「おしんこ何?」

「ナスください」 (こういう店のおしんこってのはきっと自家製なんだろうな)

「あと スイマセン とん汁ひとつ」

(もちかえり! そういうのもあるのか)

(うーん ぶた肉ととん汁でぶたがダブってしまった)

(このおしんこは正解だった)

ハードボイルド食マンガ。 毎回、中年男がグルメでも何でも無い普通のめし屋でめしを食う。そういう話。

ゴローちゃんが帰ってきた!10年ぶりの新作を含めた新装版が発売。手に入りやすくなってます!

新装版の最後の対談で触れている、ファンが再現したYoutubeの実写版を見つけました。

こいつらアホだwwwwwww

基本、面白かったものだけ感想書いてます。

それにしても感想よりあらすじ書く方が難しいなんて知らなかった。勉強になるな・・・。

EDEN 18―It’s an Endless World (18) (アフタヌーンKC)

体がガラスの様に硬質化してしまうクロージャー・ウィルスの大流行によって人類が危機に瀕した世界。外界と隔絶したバイオスフィアで育った、少年エノア(エンノイア)と少女ハナはウィルスに対する抗体を持っていた。

人類は人口の15%を失うも生き残った。が、時は進んで、クロージャー・ウィルスの変種ディスクロージャー・ウィルス(体が液状化して無機物・有機物関係無く取り込んでしまう)が流行し、それらの集合がコロイドという水晶状の物質になって世界中に広がっていった。コロイドは太陽光で発電し、水晶を媒体とした光記憶メディアに多くの人の意識を保存した。最終的にコロイドはバイオスフィアのあった島の上にビッグバレルと呼ばれる筒状の構造物を形成する。

全ての出来事はエノアの父クリスも創立に関わった、プロジェクト「プレーローマ」のシナリオだった。何処からか飛来した高重力バルブと呼ばれる物体がビッグバレル上空に近づく中、エノアは仲間と共にビッグバレルを目指す。

・・・って17冊を強引にまとめすぎかな?

元々、第一話だけの企画だったそうで、それを連載に変更して11年もやって最後ちゃんと綺麗に終わってます。(18巻の表紙が1巻の表紙と対称になってるんですな)

最後まで見てみれば、大半を占めてたエリア(エノアの息子)が主人公の話は何の意味があったのかとか、最終回に向けてなんでああいう展開になるのかとか、一見イミフですが、ウィキペディアのグノーシス主義の項を見ればすっきりわかります。というかグノーシス主義をそのまんまSF的解釈すればこの話になるんですな。

超おおざっぱに言うと、グノーシス主義とは、

「人間が辛いのは、この宇宙が狂った神の作った悪の宇宙だからであり、真の神の住む善の宇宙を目指そう」

という反宇宙的二元論に支えられた古代宗教です。真の神というのが、プロパトールやらエンノイアやらアレーテイアであり、善の宇宙というのがプレーローマということらしいです。

エリアが延々とひたすら味わう世界の無慈悲さ、汚さ、身も蓋も無さは正に悪の宇宙論ですし、物質と対照的な単なるデータ(霊的な存在)になって新しい宇宙に打ち出されるというのもそのまんまです。

しかし、物語のラストでは新しい宇宙に行く人と、相変わらず狂った世界に残る人の両方の選択を肯定していて、二元論を否定しています。

作者は途中で何を書きたいのかわからなくなって困ったと言ってますが、第一話がすごく面白かっただけに、投げっぱなしにならず、良い題材が途中で見つかって綺麗にまとめられて良かったなあと思います。

マイナーな宗教や思想や実際の事件をテーマにするってのはネタに困ったらいいかもしれないッスね。(といったら怒られるかな)

ともかくウィキペディアは面白いということで・・・。。

久々に漫画一杯買った。

ディエンビエンフー 1 (1) (IKKI COMICS)

1973年、ベトナムから米軍が完全撤退する寸前に主人公が爆死するところから始まる。

主人公、陸軍報道部所属、星条旗新聞(スターズ・アンド・ストライプス)のカメラマン、ヒカル・ミナミはサイゴンで米兵たちによるベトナム人少女の集団レイプ現場に遭遇し、殺されかけたところをベトコンのお姫さま(プランセス)と呼ばれる少女に助けられ、一目惚れする。

その後、壊滅する隊から何度も自分だけ生還することからスパイ容疑を掛けられ、お姫さまをおびき寄せるエサとして、グリーンベレー所属のストレイ・ドッグスという危ない人達の集団に同行することになる。

かわいい絵柄と、くどくどした説明が無いこと、後半はバトル漫画の様相を呈していることもあってサラッと読めた。ディエンビエンフーというタイトルから第一次インドシナ戦争の話かと思ってたのでちょっとガッカリ。(ディエンビエンフーの戦い:1954年)

かわいいベトナム戦記と言えばCat Shit Oneが有名ですけど、(少なくともストーリーは)完全ミリタリー戦記物のあれとは大分タイプが違いますな。

冒頭で死んだ主人公の回想ってことで蛍の墓みたいにどうそこに繋がるのか気になります。(ってズリィなそれ)

CAT SHIT ONE'80 Vol.1
  • CAT SHIT ONE’80 Vol.1
  • ソフトバンククリエイティブ(2008-04-30)
  • ソフトバンククリエイティブ
  • 定価:¥ 998
  • 新品価格:¥ 998
  • 中古価格:¥ 890
  • ASIN:4797348496
mysql> select * from regions\G
*************************** 1. row ***************************
     id: 1
   name: 北海道・東北
reading: ほっかいどう・とうほく
  roman: hokkaidou-touhoku
*************************** 2. row ***************************
     id: 2
   name: 北信越
reading: ほくしんえつ
  roman: hokushinetsu
*************************** 3. row ***************************
     id: 3
   name: 関東
reading: かんとう
  roman: kantou
*************************** 4. row ***************************
     id: 4
   name: 東海
reading: とうかい
  roman: toukai
*************************** 5. row ***************************
     id: 5
   name: 関西
reading: かんさい
  roman: kansai
*************************** 6. row ***************************
     id: 6
   name: 中国・四国
reading: ちゅうごく・しこく
  roman: chuugoku-shikoku
*************************** 7. row ***************************
     id: 7
   name: 九州・沖縄
reading: きゅうしゅう・おきなわ
  roman: kyuushuu-okinawa
7 rows in set (0.00 sec)

MySQLの\G出力ってほとんどYAMLだよね。

[を] 「キューバ革命史」がものすごく面白かった

キューバの歴史物語がものすごく面白かったです。 2時間くらいで一気に読んでしまいました。 (略) キューバ革命史 : 目次 http://www10.plala.or.jp/shosuzki/history/cuba/contents.htm

こちらで知ったキューバ革命史。携帯で電車内とか歩きながらとか読んでたんで2週間ぐらいかかりましたが、ホントに面白かった。

これ読む時間を稼ぎたいがために、「ちょっと遠くのコンビニまでいこうかな」とかそのぐらいでした。

キューバの成立からスペイン支配、独立戦争、ミサイル危機。後半はケネディ暗殺からウォーターゲート事件と進んで、気になってWikipediaでその後もベトナム戦争とか読み始めちゃってきりがない。

思ったことは二つあって、 一つはフィデルすごいよフィデル(カストロ)。ってのと、 こんなダーティワールドで日本大丈夫かよ日本。ということ。

フィデルはホント分かりやすく言うと、行動力・政治力・カリスマ・運が、100・97・98・99って感じですわ。

どれもすごいわけですけど、ガチ鬱の俺からすると、特に行動力が尋常じゃない。もうなんかの病気なんじゃないですかね。ちゃんと診断受けたとしたら。

かといって場合によっては冷静な政治判断とかもしてるので、アドレナリンの分泌を自由に操れる特異体質だったんじゃないかとすら勘ぐってしまいます。

それと、俺は日本史だったし、政治にも全然興味がなかったので知らなかったんですが、もう世界各国が超ダーティ。

紀元前の中国とかローマとかだったら、うーんそういうもんか。って思いますけど、紀元前から全然かわっとらんやんけ!

FC天地を喰らうのプレイ動画でさえ、離間の計、暗殺の計ばっかりだったら、「えぇ~・・・」ってちょっと引いてしまいますけど、そのまんまですわな。各国政府も人民もやることがめちゃくちゃです。

日本とかWinnyで海自の情報流出とかありましたけど、そういう諜報活動とか破壊工作とかちゃんとやってるんですかね・・・?

俺の頭ん中では、チンチロリンで自分以外全員が四五六賽を使ってきて、「通るかっっっ・・・!!そんなもんっっっ・・・!!」って言っても全員がスルー。みたいな光景が浮かんで来てしまって・・・。

まあ、本当に一番強く思ったのは、「コロンブスがまかり間違って日本を発見しないでホント良かった」ってことッス。

Module: Paperclip::ClassMethods

The default value is ””/:class/:attachment/:id/:style_:filename””.

Paperclipでちょっとハマった。default valueに :filenameって書いてあるけど、これは内容が古いのか、使えない。

使えるシンボルはClass: Paperclip::Attachmentのソースにありました。

:rails_root, :class, :basename, :extension, :id, :id_partition, :attachment, :styleが使えるみたいっすね。(:filenameってのは無い)

で、Capistranoを使う場合のお勧め設定、

has_attached_file :overview,
  :path => ":rails_root/public/system/:class/:attachment/:id/:style/:basename.:extension",
  :url =>  "/system/:class/:attachment/:id/:style/:basename.:extension"

:pathはファイルシステム上の場所の指定で、:urlが外から見たときのやつ。

それとAttachement_fu同様にStrageがS3に対応してるので、デカファイルサービスやる人はいいかもしんないっスね。