Feb - 27th

Subversion試用中

Posted at 11:15 pm | Filed Under PHP, Subversion

Subversionのpost-commitはこんな風にした。

Subversionは環境変数LANGを与えるとメッセージをUTF-8から変換してくれる。コミットされたファイル毎にBTSに突っ込んだり、追加だったらそれなりの処理をしたりする部分については別途ファイルを分けておいたのでここでは省略。新規に追加された場合は、パーミッションの情報を別途管理するスクリプトに追記するようメールが飛んだりする。原始的だけど、とりあえずこれでやってみよう。

#!/usr/bin/php -q
<?php

//引数を取得($1がレポジトリ、$2がリビジョン)
if(is_array($argv)){
    $repo = $argv[1];
    $rev = $argv[2];
}elseif(is_array($_SERVER['argv'])){
    $repo = $_SERVER['argv'][1];
    $rev = $_SERVER['argv'][2];
}

if($repo == '' || $rev == ''){
    //エラー処理(省略)
}

//変更者
$author = `svnlook author $repo`;

//コメント
$comment = `export LANG=ja_JP.eucJP && svnlook info $repo`;

//変更されたファイルを取得。複数ある場合はそれぞれに対応
$changed = `svnlook changed $repo`;
if($changed != ''){
    $changed_ar = split("\n", $changed);
}

//コミット後の処理(ファイル毎に実行)
if(is_array($changed_ar)){
    foreach($changed_ar as $v){
        $trimed = trim($v);
        if($trimed){
                //メール送信処理(省略)

                //リリースファイル一覧更新(省略)
        }
    }
 }else{
     $notice = 'not array';
}

?>

Read More>

Feb - 27th

ソフトウェア工学

Posted at 9:11 am | Filed Under Software, Work

ソフトウェア企業の競争戦略という本の書評があったので読んだ。一貫して主張されているのは、日本のソフトウェア会社は工業製品を作るみたいな捉え方でソフトウェア開発を理解している、ということ。まあ、現場にいるとその通りと思うことは多々ある。ベルトコンベア方式でソフトウェアが作られるなら管理する側は予測もたてやすいし、リソースの配置も楽だ。

でも、それだけが日本のソフトウェア開発の問題であるというわけでは決してない。それどろこか、例えばウェブ家系図作成みたいな「集客力には貢献するけれども収益モデルがわからない」ようなソフトウェアも、買収されてどこかのポータルサイトのコンテンツになるみたいなはっきりしたゴールがあれば日本からももっとさくさん産まれるはずで、しかも工業生産モデルであろうがなかろうが出てくるところからは出てくるとは思う。

でもそういう経営の仕方はまだ一般にはなじみがない。ライブドアが買ってくれるわけでもなく、Yahoo!が買ってくれるでもなし、ましてや国が金を出してくれるわけでもないのだから、まあ仕方がないのだろう。片やこんな状況で、一方ではTellMeみたいになんだかお金になりそうなサービスでさえ大物の買い手がついている

これにちょっと似た話だが、月額課金の携帯サイトとモバゲータウンみたいな無料コンテンツを提供するサイトとの関係はちょっと面白い。モバゲータウンは有料サイトへ客を誘導する広告なしには成り立たないだろうし(詳しくないけど、たぶんそう)、有料サイトは宣伝のための無料コンテンツや集客そのものをモバゲータウンに任せてコスト削減を実現する。有料サイトは別にモバゲーがなくてもやっていけるだろうが、モバゲータウンは課金するビジネスを他社がやってくれないと破綻する。お金はどこかが出してくれるから、ひたすらアイデアを出して集客だけを増やせばいいというビジネスは珍しいと思う。でもって、モバゲーだって工場みたいな開発モデルを採用していると思うんだよね。

一時期、よく聞かれたのが、マイクロソフトは技術力がない、ちょっといいものを出したと思ったらみんな買収の結果手に入れたものばかりじゃないか、という悪口だが、これはソフトウェア開発の重要な部分を見落としている。常々思うのだが、Excelの開発チームには、80年代からExcel一筋のミスターExcelみたいな人がいたりするのだろうか。だって、ずっと同じプログラムをいじっているのは、特にExcelみたいなものを作ることが出来るような人間にとっては、退屈なんじゃないだろうか。ある程度まで作り込んだら、次のもっと面白そうな分野へと進みたいと思うのがプログラマの人情ではないか。履歴書には輝かしい業績が載っているはずだ。次のステップに進まない理由などどこにもない。マイクロソフトで中間管理職をやるのが夢だ、というプログラマなんかこの世に何人もいないだろう。

ソフトウェアの開発が工学的なモデルにはなかなか当てはまらない、といわれるようになってからはや40年以上の時が過ぎ、フォン・ノイマンが死後50年経過したら開けるようにと遺言したとされる箱はフォン・ノイマンのものでさえなかったというアンチクライマックスも過ぎ、それでもソフトウェア開発と工学とのせめぎ合いは続いているのだから、時の流れは悠久である。だから、Excelの主は今日もExcelチーム専用のコンパイラの最適化作業が楽しくてチビりそうになってんだろうか。

Read More>

Feb - 26th

PHPの開発にWietse Venemaが参加

Posted at 9:32 am | Filed Under PHP, Uncategorized

PEARNet_MACが0.1.2に更新されていたのだが、Changelogsのページにある「Christophe Gesche’s codechecker」が気になる。Christophe Gescheさんはフランス語を話すベルギー人のようだが、検索したけれど何も見つからなかった。

でも、この探索中に面白い記事を見つけた。Postfixの作者Wietse VenemaがPHPの開発MLに去年の12月に「Run-time taint support proposal」という投稿をしているというのだ。リンクをたどるとここに原文あった。とりあえずざっと読んでみたが、なんとWietse VenemaはPHPの開発に手を出すらしい。先月の時点でecho/printやsystem/exec、eval/include、データストリームのオープン、ファイルやディレクトリの操作といった基本機能のいくつかに実証用の実装をやっているという。

If this proposal survives review, then I could spend a chunk of time in 2007 working out more details and doing a full production quality implementation.

つまり、提案がレビューを無事通ったら、2007年はかなりの時間を割いてもっと細かい実装や製品レベルの実装までやっちゃうよ、ということだ。

Read More>

Feb - 24th

GETとHEAD

Posted at 4:38 am | Filed Under Apache, PHP

CPANからLWPをインストールしたら大文字と小文字を区別しないHFS+のせいでheadが上書きされてしまったMacユーザの話題を最近読んだが、今このHEADでちょっと困っている。

Apacheの子プロセスがSegmentation faultで落ちてしまうので原因を調べたら、HEADでアクセスしてくるクローラの処理で起きていることがわかった。HEADでUser-Agentを同じにしてそのアクセスを試してみたら100%再現できる。でも、同じことをGETでやっても発生しない。HEADとGETでウェブアプリの挙動が違うなんて、一体どうしてだろう。最初は、このクローラのUser-Agentの処理が間違っているのかと思ったが、メソッドをGETにするだけで発生しなくなるのだから、おそらく違うのだろう。バッファリング処理があやしいのかも、などなど予想はしているのだが、まだ全然確証がない。

少なくともうちで開発しているフレームワークが入っていない環境では再現しないので、自分たちのコードが問題なのは明らかだ。困ったものだ。

#追記:サードパーティーのApacheモジュールが原因だった…

Read More>

Feb - 24th

WordPressのソースコードを眺めた

Posted at 4:36 am | Filed Under PHP, Tuit, WordPress

WordPressを使うようになって、さてそろそろ便利な拡張でもしてみるかと思ったのだけれど、中身を見てみるとなんだかとっても汚い。デザインとコードは全然分離していないし、OOのオの字もなくて、昔懐かしいfunctionの山が並んでいて、名前空間の衝突は避けられない。バージョン2.1だから、もうそれなりに時間も経っていて、しかもPHP-NukeXOOPSGeeklogなどなどのPHPで書かれたCMSの後から登場しているのだから、先達の知恵もさぞかし活用しているのかと期待していたら、とんでもない肩すかしをくらう。

普及しているのは、WordPressのホスティングサービスと、かっちょいい管理画面のUI、それにインストールがとんでもなく簡単なことが理由なのだろう。つまり、見た目重要、簡単さ重要。

何かが普及する理由というのは、見た目とライトユーザにとっての簡単さというのはとても重要みたいだ。そうでなければ、PHPだってこんなに流行しているはずがない。言語としての比較なら、誰だってRubyの方がいいと思うだろう。でも、いざ開発するとなると、PHPはかなり初期から環境構築が簡単で、HTMLで見た目をそのまま書いてしまってちょこっと機能をくっつけるだけで何やらすごそうなものがひょいと出来上がる。初心者にとってすぐに結果が見えてHTMLを知っていればすぐに取りかかれるなんてなんだかとっても素晴らしいじゃないか。

この事実は、ある種の人をいらだたせることにもなる。そりゃそうだ。理想の言語を追い求めている真面目な開発者にとって、PHPなんて邪道もいいところだ。こんな難解なコードがまかり通るなんて恐ろしい。

<?php
if("123test" == 123){
    print("OK\\n");
}else{
    print("NG\\n");
}
?>

ちなみに、上のコードの結果は型チェックが入らない「==」を使っているから「OK」になる。誰もが発狂するだろう。もちろん、「if(”123test” == ‘123′){」と書けばNGになるが。

#!/usr/bin/env ruby

if("123test" == 123) then
    print "OK\\n"
else
    print "NG\\n"
end

これなら「NG」になって全米が泣く。プログラマが余計なことを考える必要がないのが優れた言語だという価値観からすると、普通の神経ならこうでないと参ってしまうだろう。

しかし、普段仕事で開発プラットフォームになるフレームワークの開発をしている人間として参考にしようと思ったら肩すかしをくらったのであれこれ文句を書いてみたが、逆にWordPressやPHPが普及しているという事実から学ぶことも必要なのかもしれない。つまり、見た目と簡単さが重要、ということ。だから、基本的な機能としてJavascriptのエフェクトやCSSの書き出しが簡単に出来て、基本的なUIのセットを持っているフレームワークにしていかないと訴求力というかもっとはっきりいってしまえばみんなが納得する魅力はどんなに頑張っても出せないと認識するべきだ。

以前、Rubyの中の人にアホな通りすがりとして上と似たようなことを質問してみたことがあった。PHPがダメな言語だとして、では世の中の決定権を持っている人たちが、どうしてPHPなんかを選ぶと思うのか。答えはなかったが、それは名前が重要なんじゃなくて、ましてや言語が素晴らしいからでは全然なくて、想像を絶する存在であるところのライトユーザと、想像を絶するようなお気軽開発者にとっては魅力的なものがPHPには備わっているからだ。たとえよく見てみるとどうしようもないところもたくさんあったりしたとしても。

ウェブの開発ばっかりやっていてデスクトップ向けのアプリ開発の経験がない立場からいうと、Pythonのあのしょぼいウィジェットだってすごく魅力的だと自分が思うのは、それが優秀なデスクトップのアプリケーション開発者からみれば想像を絶するようなへっぽこ開発者にとってお手軽で自分でもなんだかやれそうな気がして見た目も十分満足できるような代物だったからだ。Pythonのウィジェットの可能性やその素晴らしさが存在していないかのような物言いだが、あの外観がしょぼいこと、その機能が非常に限定されていることは揺るぎない事実だ。あんなものアプリケーションじゃねえ、という意見もごもっとも。だけど、手が届きそうだというのは非常に重要で、誰もが憧れのアイドルに出会うよりもそれより見た目はちょっと劣る隣の同僚にアタックする方を選ぶのは、彼(女)が手が届きそうな存在だからに他ならない。それを、真の審美眼からすると邪道だと言い放って理想を追い続けるのは、

とっても素晴らしい。マル。

Read More>

Feb - 23rd

Linuxでロードバランサ

Posted at 2:22 pm | Filed Under Apache, Linux, Tuit

Linuxでロードバランサと題された記事が面白い。去年の夏に連載された記事が、雑誌に掲載された際にVMWareでマシン1台でシステムを組んで実験ができるパッケージが配布されるようになっていた。

いつもロードバランサとして使っているPoundを活用した場合と比較してみたいんだけど、時間が取れないので誰かやってくれないものだろうか。ログを取らないと割り切ってネットワークブートで構築するLVSのシステムは魅力的だ。

Read More>

Feb - 22nd

ビルド中のメッセージ

Posted at 10:45 am | Filed Under Software

nmapのドラゴンみたいに、ビルド中に開発者からのメッセージや愉快ないたずらが見つかると、ターミナルを流れる意味不明の文字列をなぜか本能的な衝動に駆られてずっと眺めている人はちょっと幸せになれる。

さっき試しにビルドしていたOrcaでは、configureの途中と終わりに

ordering CD from http://www.orcaware.com/wish_list.html …. just kidding ;-)

というメッセージが出てきた。

Read More>

Feb - 21st

Wikipediaのスクリーンショット

Posted at 4:02 pm | Filed Under Wikipedia

Wikipedia Racism Joke
こんなのがあったので保存しておいた。

Read More>

Feb - 21st

ASAHI-NETのDNSがおかしい?

Posted at 10:23 am | Filed Under Uncategorized

かみさんが家からヤフオクが見られないというので調べてみたら、img.yahoo.co.jpの名前解決が出来ていないようだった。会社からは見られたので、おかしい。最初はMacだけの問題か、それともSafariやFirefoxの問題かと思ったが、digでも引けないので、名前解決の問題だと見当がついた。そこで適当なプロバイダのDNSサーバを参照するように設定変更してみたら、問題なく表示出来た。

というわけでASAHI-NETのDNSの問題だろう。問い合わせないと。ページ閲覧に支障をきたしているのだから、Yahooにとっては深刻な問題だと思うんだけどなあ。

Read More>

Feb - 20th

ニューデリーのダミアン・ハースト

Posted at 3:44 pm | Filed Under News

ニューデリーのダミアン・ハースト」と題されたガーディアンの記事。

現代美術には疎いのだが、それでもダミアン・ハーストの名前くらいは知っている。というか、知人の家にあったので実物も一度だけ見せてもらったことがある。ホルマリンは揮発性が高いから、ハーストのホルマリン漬け作品はお金を払って買った人が自分で毎日ホルマリンを足さないといけないそうだ。

輪切りにされた牛の親子や羊、サメ、犬などなどなど、ダミアン・ハーストの「動物ホルマリン漬け(ときどき切り刻んでるよ!)」作品群を見た人は、おそらく誰もが同じことを考える。

「で、人間のはないの?」

確か、お金を払ってメキシコで人間の死体を手に入れてはせっせと加工していた人がどこかにいたはずだが、ハーストがやったとは聞いたことがない。

ガーディアンの記事で紹介されていた人の作品はこんな感じ。記事中の一節「Gupta is seen as the enfant terrible of the Indian art scene, a Damien Hirst of New Delhi.」が、いかにも古くさい売り文句なのでちょっとひいてしまった。

追記:デスクトップをダミアン・ハーストにしてみた。著作権的にアウトだから参照までに小さく載せておく。

Screen2

Read More>

keep looking »