今月から仕事でRubyをやり始めたんですが、FastCGIがまったくわからない。

現在分かっている(と思っている)こと:

  • 普通のCGIは動く
  • FastCGIはプログラムをApacheとは別プロセスで立ち上げっぱにしてSocket経由で通信するもの(?)

わからないこと:

  • Debianの場合、libapache2-mod-fastcgiとlibapache2-mod-fcgidと二つあるけど何か違うのか。
  • fcgi、FastCGI、FCGIなどいろんな表記があって、別物なのか同じものなのかどうかわからない。
  • 普通のCGIの場合とで変更が必要な場所があるのかどうか
  • C版のfcgi.rbとruby-fcgiと呼ばれているものは別のものなのかどうか
  • fcgi.rbを入れたとして何に使うのか

とりあえず普通のCGIを動かしてみた。

hello-cgi.cgi:

#!/usr/bin/env ruby
require 'cgi'
CGI.new.out("text/plain") { 'Hello, CGI' }

動いた。

hello-cgi.cgiをhello-fcgid.fcgiにリネーム。 libapache2-mod-fcgidを入れる。

sudo apt-get install libapache2-mod-fcgid

mod_fcgidを有効化。

sudo a2enmod fcgid
sudo /etc/init.d/apache2 restart

動かない。

sudo tail -f /var/log/apache2/error.log
[Mon Apr 16 14:23:45 2007] [notice] mod_fcgid: server /var/www/works/example/ruby/hello-fastcgi.fcgi(12074) started
/usr/lib/ruby/1.8/cgi.rb:1086:in `readlines': Invalid argument (Errno::EINVAL)
        from /usr/lib/ruby/1.8/cgi.rb:1086:in `read_from_cmdline'
        from /usr/lib/ruby/1.8/cgi.rb:1123:in `initialize_query'
        from /usr/lib/ruby/1.8/cgi.rb:2274:in `initialize'
        from /var/www/works/example/ruby/hello-fastcgi.fcgi:3:in `new'
        from /var/www/works/example/ruby/hello-fastcgi.fcgi:3
[Mon Apr 16 14:23:45 2007] [error] [client 192.168.10.1] Premature end of script headers: hello-fastcgi.fcgi
[Mon Apr 16 14:23:51 2007] [notice] mod_fcgid: process /var/www/works/example/ruby/hello-fastcgi.fcgi(12074) exit(communication error), terminated by calling exit(), return code: 1

基本知識が無さ過ぎるのか、思い当たる単語で検索してみても基本ぽい話が書いてあるページにたどり着かない。

Railsは普通に動くところが嫌な感じだ。

フランシーヌの場合は – タバコ部屋は僕らのパラダイスなのさ!

どうすればいいんだろう。

わからない。

わかっているのは、自分が、「場」や「立場」、「仕事」なんかを用意してもらえないと、コミュニケーションがすごく大変なんだということ。そこをなんとかするための自分の動き方なんて、まったく思い浮かばない。

これができたら色んな業種で想像以上に効果があるんじゃなかろうか。全力で考えるべきかもしれない。

p0t: 喫煙と休憩の関係

おれは会社のある場所を勝手に非喫煙所と名付け、仕事の合間に非喫煙しに行くことにした。非喫煙所は喫煙お断りの禁煙室ではなく、喫煙しないことをしにいく場所なので非常に暇だ。というか誰も寄り付かない。

当り前ですが2003年10月頃のこの試みは失敗に終った。

でも一時的に非喫煙者も含めたこういう場所が機能したことがあったような気がする。その時はビルの外側の階段が喫煙所になっていて、非喫煙者も休憩のために缶コーヒーとか買って溜っていた。

たばこ部屋的空間が機能するために必要なものは何だろう。

  • 仕事空間から離れている、声と視線が通らない狭めの空間
  • そこへ行く言い訳(喫煙、喫茶等)
  • 非喫煙者がそこへ行くことを許す空気

これだけだとやはり非喫煙者がそこへ行く理由が少し弱い。なんか無いかな。ああ、俺もわからない・・・。

久しぶりにUbuntuを入れてみました。

beryl

おお、グニャーってなってるよ。

前はCodecとか揃えるの面倒だったんですがAutomatrixって奴が公式以外のパッケージもいいようにやってくれて便利でした。それとやっぱり開発は何でも揃えやすくてやり易いです。でも日本語入力が変換した瞬間に消えたり、カーソルがワープしたりして変。これ困るなあ。SCIMのせいかな?

404 Blog Not Found:javascript – 勝手に添削 – JavaScript入門

Object.prototype = { / ... / }は避けるべし

with()は徹底的に避けるべし

無名関数を紹介しとこうよ

元記事やブログからはそういう点は理解した上で書いてることが読み取れるし、良い文書だと思った。これ添削必要かなあ?

*「ふっかつのじゅもんがちがいます。」 – ブログ引越しを計画中

ブログエンジンは「管理ページと表示ページのドメインを分ける」設計が正しかったのだということがよく分かった。

Widget(ブログパーツ)は素晴らしいと思うので、今後サービス作る時にはこれは是非考慮したい。

shag の日記 – inetd 経由で起動されても peeraddr は取得可能

の意味がよくわからない。HTTP/1.1 のバーチャルホストって、

GET /index.html HTTP/1.1 Host: example.com

の Host: example.com をみて挙動を切り換えるだけなので TCP/IP 関係ないですよね。というか inetd 経由で起動されたプログラムも peeraddr わかりますよね。

なんだっ(略。 バーチャルホストへの親しみUP。

masatobito 『ご指摘ありがとうございます 単に僕が知らなかっただけです inetd経由だとIPアドレスが取得できないと勝手に思い込んでましたが、よく考えれば標準入出力のファイルディスクリプタになってれば取得できますね』

masatobito 『意味不明 ”標準入出力のファイルディスクリプタがソケットになってれば”』

なるほど、inetd経由だとSOCKETなんですな。 こんな簡単にかけるなら役に立つとこがありそうだなー。

最近パフォーマンス対策とかバグ修正とかして大分エラーメールが減ってきたんですが、全然なくならないのがこれ。

Lost connection to MySQL server during query

max_allowed_packetが足りないと出る場合があるとあったので倍に増やしてみても効果無し。なんだろなー。

スケーラブルWebサイト
  • スケーラブルWebサイト
  • オライリー・ジャパン(2006-12-26)
  • オライリー・ジャパン
  • (著)Cal Henderson
  • (翻訳)武舎 広幸
  • (翻訳)福地 太郎
  • (翻訳)武舎 るみ
  • 定価:¥ 3,570
  • 新品価格:¥ 3,570
  • 中古価格:¥ 2,825
  • ASIN:4873113113

Webサービスの開発プロセス全体についてまんべんなく書いてありました。それぞれのトピックスに関してはもっと濃い本を参照する必要があるけどプログラマでも別ジャンルだった人がWebを始めるときに読んだらかなり助かるんじゃないかなーと思いました。

特に、「早過ぎる最適化は悪」っていうのはホントに同意。パフォーマンスに問題が出たからつって、真っ先に、カーネルチューニングとかテーブル分割とかRAMディスクとか言い出すのは暇人か金持ち。(言い過ぎ)

実践ハイパフォーマンスMySQL
  • 実践ハイパフォーマンスMySQL
  • オライリージャパン(2004-10)
  • オライリージャパン
  • (著)ジェレミ・D. ザウドニ
  • (著)デレク・J. ベリング
  • (原著)Jeremy D. Zawodny
  • (原著)Derek J. Balling
  • (翻訳)林 秀幸
  • 定価:¥ 3,780
  • 新品価格:¥ 3,780
  • 中古価格:¥ 3,300
  • ASIN:4873112095

MySQLモデリングについてマルチカラムインデックスをちゃんと勉強しないといけないなあとおもったので(前に持ってたにもかかわらず)実践ハイパフォーマンスMySQLを注文しました。

1人(MAX3人)でWebサービスを作ることに焦点を合わせて考えると、パフォーマンスに関してもかなり効率的に(手っ取り早く)対処しないといけない。小~中規模Webアプリのボトルネックは圧倒的にDB、それもSQLとインデックスにかかってる気がする!(91%ぐらいの割合で)

それなのに、MySQLだとあんまり勘が利かないんですよね。ポスグレだと、EXPLAINの結果もインデックスの作用も大体予想通りだし、遅い部分があっても、「そうなるわな」って感じなのにMySQLだと「え?そこが?」みたいな。

別にポスグレで独自の難しい機能を使ってるとかじゃなくて、MySQLでは単に「1テーブル1インデックス問題」のせいじゃないんかと。もし勉強してみてマ(略)スをうまく使えば対応可能だったら安心だけど、そうじゃなかったら(非正規化が必要ということだったら)ポスグレ移行も考えたい。

Debian—Debian “etch” Release Information

Debian GNU/Linux 4.0 (a.k.a. etch) was released April 8th, 2007. The release included many major changes, described in our press release and the Release Notes.

To obtain and install Debian GNU/Linux 4.0, see the installation information page and the Installation Guide. To upgrade from an older Debian release, see the instructions in the Release Notes.

Debin etchが昨日リリースされたみたいです。

FirefoxがIceWeaselになったりThundrbirdがIceDoveになったりしてますが、この間デスクトップ環境を入れてみた感じはUbuntuじゃなくてもいいかもと思えるぐらい良さそうでした。

サーバー環境に関しては慣れの問題だとは思いますが、もう体が溶けるほど使い易しぃ・・・。ノンストレスです。依存症です。

それとDebian JP Projectのページが何か綺麗になっとる。Software Designに寄稿された武藤さんのインストールドキュメントなんかもあって非常に分かり易い。素晴らしい仕事!