D-7 <altijd in beweging>

Day to day life of a Perl/Go/C/C++/whatever hacker. May include anything from tech, food, and family.

2010年01月

とくダネ!で国会議員によるtwitterの利用が話題になっていたが、すごくすごく腑に落ちないことがひとつ。山本一太議員がその中でtwitterのヘビーな利用者として紹介されていたのだが、すごく違和感を感じた。

画面では山本議員が「内閣・外交・国防合同部会」に出席しているところが映し出され、その間にtwitterで発言しているのをリポーターが携帯でそれを見る、というところが映し出されている。その部会中に20回あまりの発言がされたとテレビでは言っていたが・・・

それってつまり仕事をさぼってるよね?

俺もよく会議中とか自分のパソコンにノートを取ってるふりしてちょっと違う事しちゃうとか、他の仕事を片付けちゃうとかやるからよくわかるんだけど、PCいじくりながら本気の議論とか*絶対*にできないよね。

政治がネットで発言することがなんとかとか言ってたけど、これはそういうのじゃないよ。国の将来を考えるべき立場の人が本業そっちのけでtwitter使ってるってだけじゃん!

とくダネ!もとりあげかたおかしいだろ。なんかすげぇがっかりした。
    このエントリーをはてなブックマークに追加 mixiチェック Share on Tumblr

某和製ホスティング業者の更新期限が近づいてきたので、色々検討した結果linodeにサーバーを一台移設しました。このブログもそのVPSに移動しています。

Linodeに限らず海外のVPSに関しては以前EC2を使っていた関係でlatencyを非常に心配していて、ずっと二の足を踏んでいたのですが知り合いの人に一通りping時間とかを聞いてみて悪くないと感じられたのでえいやっと1年分契約してみました。スペックはこちらのLinode 1440です。正直こんなに転送帯域必要ないんだけど、まぁRAMとストレージの兼ね合いでこの辺りがいいかと思って決めました。

linode_plans.png

Linodeがよい!とまずまっさきに感じられたのはバーチャルコンソールへのアクセスと、OSのインストールですかね。OSの種類は比較的限られているけど、実際そこまで気にするほどじゃないし。今回は最近33rpm氏が好きだから、という理由でUbuntuにしております(そういえば今回契約の切れるサーバーは、僕が管理してきた歴代の最後のFreeBSDマシンだ・・・)。とにかくその辺りの設定は楽だった。

あとはログインしてみて、特に重さを感じる事はなかった。データセンターはカリフォルニアはうまってたのでダラスのヤツにしたけど、時間帯によって多少の差はあるものの、気になるほどじゃない。業務で使っててもたいしたlatencyじゃないし、そもそもマシン性能が高い感じ。perlのコンパイルとかもかなり速かった。

そしてやっぱり値段かな。円高なのも手伝って、約8万円で1年分の料金。色々検討したんだけど国内のVPSのスペックは残念ながら正直微妙で、小さいサーバーのファームとして使うならいいけど普段から業務で使うサーバーとしてはどうかという感じだし、かといって専用サーバーのホスティングは結構高い(ちなみに某有名どころで借りてたのだけど、そこは1年で20万前後した - スペックはストレージ以外は遜色ないと思う)。それが10万円を切るお値段でこの性能ならこっちいっちゃうよな。

本来なら日本で借りたいサーバーなんだけど、やっぱりコストパフォーマンスがなぁ。まぁどこの会社でも難しいとは思うんだけど、もう少し良い物が欲しい。ごてごてした追加機能とかいらないから、(1)簡単に立ち上げられ (2) 質実剛健スペックで (3) お得感がある って事だけに特化してもらえないもんだろうか。日本のホスティング業界の人、お願いします!

それまでは linodeは結構おすすめですよ!ってことで〆



なお、MTの移設に関してはPostgreSQLで最初運用していたものの、そのうちPostgreSQL自体を使わなくなってしまったのでこの際と思いMySQLに載せ替えました。移設作業は基本的に(1) MTの最初のウィザードを一通り実行する (2) pg_dumpで元のダンプを取る (3) ダンプファイルからPostgreSQL専用のSQLを全て除去する(最初のINSERTまでの全て)(4)それをmysqlに流し込む・・・という荒技で移設し、全く問題ありませんでした。

    このエントリーをはてなブックマークに追加 mixiチェック Share on Tumblr

検索エンジンの皆様こんにちは。2010年以降のPerlウェブサーバーといえばPlack/PSGIですね。そんなSEOな記事です。

私がPerlでWebアプリ的な物を初めて書いたのは1999~2000年にかけての事なのでそれ以来ほぼ10年たっているわけです。その間に色々さわりました。ウェブサーバーとアプリをつなぐアダプターのレイヤーとしてはCGI.pm, mod_perl, FastCGIなどを使ってきました。フレームワークもMason, Sledge, Catalyst, AxKitなんかをさわってきました。

どれもこれもいいところもあり悪いところもあり、それぞれコメントしたい部分はあるのですが、とにかくデプロイ方式が全然違うのでどうにもできん、という問題がずっとありました。

しかし PSGIというPerlウェブアプリケーション用の規格ができたことにより、これは全く変わってきました。PSGI規格に準じていれば、フレームワークがなんだろうとサーバーがなんだろうと同じ方式でがっちゃんこできるのです。これはいままで「Perlをレンタルサーバーでデプロイできねぇよ」とか言ってた層には素晴らしい事で、ホスティングプロバイダのほうがそのPSGI形式さえサポートしてくれれば、がんがんデプロイできちゃったりするんですね。

これは是非みなさん、まわりのPerlの事をちょっと遠くから見ていた人たちにも是非教えてあげて下さいね!

日本語での記事が足りない気がしたので書いてみました。
    このエントリーをはてなブックマークに追加 mixiチェック Share on Tumblr

dve_deprecated.png

I'll support it for a while should there be any problems , but in general, please consider using Data::Recursive::Encode instead.

Data::Visitor::Encodeの開発を停止します。もうしばらくの間は問題等あればサポートしますが、基本的にはData::Recursive::Encodeを使って下さい。
    このエントリーをはてなブックマークに追加 mixiチェック Share on Tumblr

企画が出ただけの段階なので、まだなんとも言えないのですが、2010年5月〜7月くらいに東京以外の某場所でYet another Perl UNconference (YPUN)を開催しようかという話が出ました。

アンカンファレンスに関してはこちらを参照

まだこれから諸々調整があるのでぼかした言い方ばかりで申し訳ないのですが、一応考えているのはこんな感じ:

  • 某地方都市で泊まりがけ
  • キーノートだけこちらで設定
  • 地元企業もからめてBOF
  • あとはアンカンファレンスで話したい内容を思い思いに
  • Perlとはあるけど、ゆる〜〜〜〜〜い縛りで
  • なるたけうまく方々と調整して参加者は基本的に交通費だけで済ませることができるようにしたい!
  • 今候補に挙がっている場所は某中部地方エリア
  • うまくいくようなら定期的に地方都市で巡回開催したい!
ちなみに直接の発案者は僕じゃないので、この企画が本当に通るかどうかは Emersonさんに頼るところが大きいです!メアドをさらすわけにはいかないので・・・twitter で@okaihatuしちゃえ!w
    このエントリーをはてなブックマークに追加 mixiチェック Share on Tumblr



例えば、AnyEvent::DBIで Q4Mを使って、*常に*なんらかのイベントをqueue_wait()する状態にしたいとする。するとexec()が終わったらまた同じexec()を呼ぶ事になるので、例えばこんなコードを書くかもしれない。

    use strict;
    use AnyEvent::DBI;

    my $sql = "SELECT ....  FROM queue_table WHERE queue_wait('queue_table', 10)";
    my $dispatch;
    $dispatch = sub {
         $dbh->exec( $sql, sub {
              # 返ってきた値でなんかする
              $dispatch->();
         });
    };

    $dispatch->();

    # まぁ他の事してるプログラムで使うだろうから、本来はいらないけど・・・
    AE::cv->recv;
でもこれだと再帰的に exec()を呼んで、さらにまた$dispatchからexecを呼んで・・・って事になってしまうよね。これを無くしたい。検証のためにもっとも単純なクロージャを使った再帰呼び出しをまず書いてみる。ここではスタックの深さをついでに表示しておく:
use strict;
 
my $dispatch; $dispatch = sub {
    my $i = 0;
    while(1) {
        my @caller = caller($i++);
        # noop
        last if ! scalar @caller;
    }
    print "$i\n";
    $dispatch->();
};

$dispatch->();
このコードを実行すると、エラーを起こすまで、少しずつ表示される数が大きくなっていく。これは再帰的に関数を呼び出し続けている数なわけで、どこかの時点でdeep recursion云々言われる。当たり前だよね。

さて、ではこれをAnyEventを使ってる場合はどうするか。まずひとつ簡単な方法としては idleウォッチャーを設定する事ができる:
use strict;
use AnyEvent;

my $idle;
my $dispatch; $dispatch = sub {
    my $i = 0;
    while(1) {
        my @caller = caller($i++);
        # noop
        last if ! scalar @caller;
    }
    print "$i\n";
    $idle = AE::idle $dispatch;

};

$idle = AE::idle $dispatch;

AE::cv->recv;
このコードを実行した場合、自分の環境では"6"が繰り返し表示されるだけ。idle()はイベントループが「次にビジーでない状態」に与えられた関数を実行するウォッチャーなので、続々と実行してくれるわけです。

「次にビジーでない状態」という曖昧な状態ではなく、確実にすぐ実行したい場合はタイマーを使ってもよいかも。この場合最初の引数に0を渡しておいてやれば、とにかく次の機会にすぐクロージャを実行してくれる。この場合も自分の環境では"6"が繰り返し表示される:
use strict;
use AnyEvent;

my $count = 1;
my $w;
my $dispatch; $dispatch = sub {
    my $i = 0;
    while(1) {
        my @caller = caller($i++);
        # noop
        last if ! scalar @caller;
    }
    print "$i\n";
    $w = AE::timer 0, 0, $dispatch;
};

$w = AE::timer 0, 0, $dispatch;

AE::cv->recv;
というわけで、直接Perlの関数を呼び出すのではなく、イベントループに一旦預ける事によって再帰的呼び出しを続けるのを減らすことができるのです。
    このエントリーをはてなブックマークに追加 mixiチェック Share on Tumblr

正月。うちは去年爺さまが亡くなったので、喪中でありました。そこまでする必要もないんだろうけれども、親の意向で親戚への挨拶等ふくめなにもせず。大晦日と元日実家に帰って蕎麦を食べたり雑煮を食べたり。お節は基本的にはなし。

正月らしくないと言えば、元日の夕飯がフェイジョアーダでした。フェイジョアーダといえばブラジルの豆と肉の煮込み料理で、黒豆を煮込むので黒豆と言えば正月とかに食べる甘い黒豆を想像する日本人の方にはちょっと微妙げな感じの料理です。これの肉無しバージョンをフェジョアン(フェイジャンか?日本語表記難しいね)と言って、こいつはブラジルの高校時代の昼食に毎日のように食っておりました。それ以外にも週末に外食で食ってたりしたんだから、俺相当いままで豆を食ってきたんだな・・・ちなみに日本に帰ってきても相変わらず豆好きです。

ともあれ、そんな正月らしくない正月でありました。

あとはウィイレを40時間ほどし、HEROESの第1シーズンを観て(まだ途中)、家族に麻雀を教えるなどしておりました。まぁそんなこんなで平和です。
    このエントリーをはてなブックマークに追加 mixiチェック Share on Tumblr

さて、2010年になっちゃいましたね。

2009年は世間では景気が悪い景気が悪いと言っていたけれども、弊社endeworksは意外と大丈夫でした。貸し渋りが云々と叫ばれる中で融資もしてもらえたし、数年前のどんぞこの時期と比べるとはるかに案件も切れずに推移できたし。それらはもうすぐ5年目に突入という時期で色々と準備等に慣れてきたり蒔いていた種が芽を出し始めたのと、なんといってもスタッフの皆が優秀であったからだと思います。

endeworksのスタッフは自分とは違ってブログを書くとか目立つ行動をあまりしない人たちなので(まぁ正直零細企業社長としては「もっと目立てよ!」と思うところでもあるんだけど)僕を知っていても彼らの事はご存じじゃない方がほとんどだと思うけど、手前味噌ながら彼らはそれぞれの分野で素晴らしい職人であると思ってる。

このブログを読んでいる人は僕がエンジニアリング系の人なのでそっち系の仕事はできると分かっていると思うし、実際一昨年Fさんが加入してくれてからすごい色々出来ることが増えたのだけれども、デザイン関係でも実は小物、印刷物、店舗等の大型のデザインまだ結構色々な事ができる人たちを揃えているし、お堅い系のサイトなんかも制作できたりするのですね。

そういう様々な仕事でendeworksの屋台骨を支えてくれている間に自分はJPAをやったりなんだりしながら新しい事に色々挑戦できるという、なかなかいい循環が出来つつあった年が2009年という年だった・・・という感じ。

2010年はこの流れを切らずにendeworksの財務体質を強化していくのと、さらに新しい事をやれる年にしていきたいです。
    このエントリーをはてなブックマークに追加 mixiチェック Share on Tumblr

このページのトップヘ