あけましておめでとうございます m(_ _)m
2009 年は迷走を続け不甲斐のない 1 年でした。
2010 年はその迷走から抜け出すべく頑張りたいと思っています。
具体的には....、何もないのでまだ迷走中.... orz。
あけましておめでとうございます m(_ _)m
2009 年は迷走を続け不甲斐のない 1 年でした。
2010 年はその迷走から抜け出すべく頑張りたいと思っています。
具体的には....、何もないのでまだ迷走中.... orz。
Jan 01, 2010 at 23:59 | Permalink | Comments (0) | TrackBack (0)
|
通勤電車でドラクエ9はじめたら読むのをすっかり忘れてしまっていたけどようやく読み終えた。ドラクエはクリアもしたし、クリア後の世界は収集癖のない自分には若干苦痛になってきたのでもうやめる。
以下感想(書いていないところはほぼ読み飛ばしている可能性(短い記事以外))。
やっぱコードかかなきゃただの豚だなと思った。
Dec 13, 2009 at 23:16 | Permalink | Comments (0) | TrackBack (0)
|
CSS::Parse::Packed モジュールについて、RT 経由で、perl 5.6.2 でテストとおっとらんけん、perl のバージョンの dependencies 書いたらどうや(スーパー意訳)、と報告もらったので、5.6.2 でも(たぶん)テストとおるようになった 0.05 をリリースしました。
あと、CSS モジュールにもバージョン依存があったので(1.08 じゃないと動かない)Makefile.PL 修正したり。
もういっこどうでもいい変更として、ShipIt::Step::Twitter つかって shipit をつぶやくようにも変更してみたりしました。手間がひとつ減った。
ということで既に利用されてる人にはなんの影響もないです。
Oct 12, 2009 at 22:44 in Perl | Permalink | Comments (2) | TrackBack (0)
|
CSS::Parse::Packed モジュールについて、mi さんより warning メッセージが変、との報告をうけましたので、修正した 0.04 をリリースしました。
というか、使ってる人がいてうれしかったです
(自分以外つかってるひといないであろう、とおもっていたので ;)
モジュールの紹介は旧ブログでやってたりします。どうぞよろしくです。
Oct 08, 2009 at 17:19 in Perl | Permalink | Comments (0) | TrackBack (0)
|
ようやく全部読んだ。のの感想。
なんか久々しっかり読んだいい号だった。
Sep 30, 2009 at 23:58 | Permalink | Comments (0) | TrackBack (0)
|
Exporter を継承しているクラスで import を override するには、親(Exporter) の import を呼んであげないといけないんだけど、その呼び出し方がひと味違うらしい。
export_to_level を呼び出してやる。引数の意味は以下のとおり。
export_to_level($where_to_export, $package, @what_to_export)
ようは caller 呼び出すんですな。でも、そもそもこんなケースは特殊のような気がするので、
export_to_level(1, @_)
という決まり文句でぼんやり覚えておくことにする。
そもそもこれにたどり着いたきっかけは、テストコード用のユーティリティ集めた Utility パッケージ書いてて、テストコード本体のほうにもろもろ use を毎回閣の面倒だから sub import で import したれ、とおもって書いたところ、@EXPORT で export してた関数が Undefined subroutine になってしまったというところでした。
Sep 28, 2009 at 23:12 in Perl | Permalink | Comments (0) | TrackBack (0)
|
YAPC::Asia 2009 最終章。
特別研修 Moose 入門に引き続き、『DBIX::ClassとMySQLによるPerlアプリケーションのスケーリング術』に参加してきた。
上のページにはいくつかトピックスが書いてあるけど、大まかには3部構成(具体的にタイトルがついていたわけじゃないけど)。
おもむろに「みなさん前に出てきてください」といって、タロットカードみたいな大きめトランプをだし、数字探しゲーム(自己紹介もなし!)。
まずは 1 人 vs 3 人で、ホワイトボードに書かれた 5 つの数字を探す。3 人チームは、 30 秒程度で全部探しあて、1人チーム(?)は、1 分 30 秒かかってようやく完了。
続いてふたたび別の数字を 5 つホワイトボードに書いて、その4人に指令。「カードをどんなルールでもいいから 30 秒(だったかな?)で並べなさい。」ちょっと相談して、その4人チームは数字ごとにまとまりを作ることに。まだそろいきってはいないものの、ほぼまとまったあたりで時間終了。
で、探し始めるのかと思いきや、ホワイトボードに書いた数字を消す!?「はい仕様変更です。いままでのは忘れてください。ビジネスにはよくあることです、はっはっは(だいぶ意訳)」と言って、カード並べを見ていた4人に指令(僕こっち)。「これから数字5つを書きますので、目をつぶってください。Go といったら数字を確認してカードを探してください。」さらさらさら。
「Go Go Go !! 」(ジョジョじゃないよ)
あたふたしつつも、あらかた並んでたのでなんとか 20 秒くらいで捜査完了。
そんなこんなで、ようやく着席。そして質問。
「この結果からわかることをあげてください」
「そのとおり。これは、データベースも一緒です。」
こんな幕開け
そしてようやく自己紹介と今日の簡単なアジェンダ紹介 ![]()
まずは 前半に知識、後半はテーブルごとに(今回は3つ)前半で覚えたことを生かして簡単なアプリを作る、という2部構成。
まずは参加者に、スケーラビリティを確保するためにいままでやったことと、そしてそのときに起きた問題を聞かせてくださいと質問。で、やったこととして、でてきたのが、
うむ。みんなわかってるよねってことで、小休憩を挟んでここから怒涛のレクチャー。メモ垂れ流し。
DB のスケールに特化した講義というよりは、Web アプリ自体をスケールするという話もあったり。『DBIx::Class をつかった』という部分は実は決して多くはなかったので、ちょと想定してきたイメージと違った。とはいえ DBIC ででき(う)ることがわかったのと、知らないモジュールも使い方もでてきて勉強になった。
あとモジュールなるべく最新版をこまめにバージョンアップして使うことをおすすめしていた。Query の最適化具合とかが結構違うとか。Catalyst も 5.8 で使うのがおすすめとのこと。(Moose)の Traits でモジュール指定する(+ちょっと設定)だけでもろもろ使えるのがらくちん、とのこと。
3 つのグループにわけてテーマを決めてアプリ作り。各グループで、
から最低どれか 1 つの技術を選んだ後、DBIx::Class の機能のうち
のどれかを混ぜつつなにがしかのアプリを作ること。
僕のグループでは、Caching つかって microblog つくることに。DBIC でつかうのは...、なんだったっけ...(汗)。結果的にはアプリ自体は未完成でしたが(なぜか僕の環境でキャッシュがうまく機能してくれない)、指定方法含め DBIC の知識いくつかを得ることはできたのでよかったです。作業的にはだんとつで僕が足引っ張ってました...。
他のグループでは、
というものを作っていました。メール配信のは完成されていたようですばらしす。Replication チームは、MySQL::Sandbox をつかっての Master / Slave 環境を整えるのに一苦労でアプリの開発までは行けなかったようだけど、その苦労はそれはそれで楽しそうではあったかな。僕も今度やってみよっと。
正直なところをいえばもすこし具体的な所の話は欲しかったかなと。Job Queue にしても、TheSchwartz がいいよ、とはいったもののコード的な説明はいっさいなかったり、POD での説明だけで終わったモジュールも結構あったので。アプリ作りするには、ちょっと知識のほうの前ふりがよわかったかなと。とはいえ、DBIC に関して教えてもらえたことは知らない内容ばかりだったのでとても勉強にった。
あと、その日たまたま同じテーブルについたひとと、突然チーム開発をはじめるっていうのはいい経験だった(自分のへたれ具合を再確認できた、という意味でも)。
そして、今回の参加者は Moose 入門よりさらにすくない 8 名...。うーむ、残念。
以上で、研修も今年の YAPC::Asia も終了。カンファレンスはもちろんだけども、今回の研修には本当に満足。自分のレベルにあた研修があったら参加しとくべきだなと。まぁ、毎回今回のようなクオリティの研修が行われるとは限らないけれども、金銭的なところだけでさけて通るにはとても惜しいなぁと思いますた。
やぁ、よかった、よかった。
Sep 20, 2009 at 00:03 in MySQL, Perl, YAPC | Permalink | Comments (0) | TrackBack (1)
|
先週末の YAPC::Asia 2009 のカンファレンスに引き続き、特別研修『Moose入門、モダーンなオブジェクト指向システム』に参加してきた。
研修の内容は、Moose とはなんぞやから始まり、以下(だいたい)7 部構成の入門講座。
ただ解説があるだけじゃなくて、各パートごとにエクササイズが用意されていて(テストコードと、やること書いてある POD)、
という進め方。
はっきりいって、大充実の内容でした。1日中ずっと集中してた。解説もわかりやすかったし、エクササイズもテストコードが用意されていたおかげで、確認しながら進めれたのでとてもスムーズ。
Moose は、去年ひととおりチュートリアルやっただけで(しかも中途半端に)、それ以降は使うこともなく...。それが最近 Catalyst が 5.8 になったりで、アレがアレしたりで、またやらねばと思ってたところにちょうどこの研修の開催を知って、なんにも考えずに飛びついたけど(お金ないんだけど...)、大正解だった。
どうかんがえても、今日の内容は週末ちまちま勉強してるだけじゃ1日ではこなせない内容。自分で POD 見ながら try and error で使い方を見つけていく、身につけていく方法はそれはそれでためになるけど、多少のお金をはらって短時間で凝縮して、変な苦労なくスムーズに学習できるとしたら、そんなラッキーなことはないかな、と。
残念ながら参加者は 11 名とちょっと寂しい状況ではあったけど、たぶん参加者は全員大満足のうちに帰ったはず。ジャンプスタートの機会を手にした数少ない人間なので。ちゃんと復習やって、妄想してないで、作るもん作っていこう。
JPA++
Sep 15, 2009 at 00:05 in Perl, YAPC | Permalink | Comments (0) | TrackBack (1)
|
YAPC::Asia 2009 に行ってきた。
聞いたセッションの中でやっぱり興味を引かれたのは非同期モノ x 3。
若干自分の理解にまだ不安があるものの、使えそうなところで使っていこう。
あと、この mala さんのセッションに加え、
の3つのセッションは、未来を作ろうとしてる感があって印象的だった。 すごいなぁ、と関心しているばかりではいけないんだけども...。
その他には、
とかとか。
最後に大いなる反省点。
2日間朝から終わりまでずーっといたにも関わらず、面識のある数名と挨拶程度の会話をしたのみ...。ひたすらセッションを聞き、こうしたらあれに使えるかなぁとか妄想を繰り返し、休憩時間は紹介されたモジュールの POD 読んだり、ソース眺めたり...。だめだなぁ、人見知り...。
とはいえ、僕なりに本当に楽しい2日間でした。
スタッフの皆様おつかれさまでした。 あ、まだ来週の研修ありますね。
僕は、Moose と DBIx::Class のやつに参加申し込みしています。これも楽しみ。 (DBIx::Class はずいぶんとさわってないので少し予習しておこう...)
まだまだ YAPC 気分。
Sep 13, 2009 at 00:33 in Perl, YAPC | Permalink | Comments (0) | TrackBack (0)
|
複数サーバーで同時実行される可能性のあるスクリプトの排他制御を実装するのに、DDLockd をつかってはどうかというアイデアをいただいたので、DDLockd について調べてみた(なんかロックするやつ、ぐらいのことしかしらなかった)。
Danga Distributed Lock Daemon の略で、まさに今回やろうとしていた複数サーバーで実行されるアプリの排他制御を行うための仕組み、みたいなのを提供してくれる daemon。Perl で書かれている。Danga の名前が指し示すとおり LiveJournal で使われている(た?)。TypePad でもほんのりつかっていたり。
コードはこのあたりにおちていた。
今回は code.sixapart.com の trunk の r46 を使ってみた。
daemon も Perl で書かれてる。trunk/server/ddlockd をもってきてどっか適当におく。とりあえず今回は $HOME/bin においた。依存してる CPAN モジュールは Danga::Socket くらい。
trunk/api/perl に一式はいっているので、svn からとってきたらおきまりの、
% perl Makefile.PL
% make
% make test
% sudo make install
でインストール。t/01_all.t のテストが localhost で daemon が動いているの前提になっているので、インストール前に、
% ddlockd --daemon
で、起動しておく。もしくは test 無視して install。Perl 以外の client モジュールはいまのところナッシング。
起動自体は、さっきの、
% ddlockd --daemon
で、7002 番ポートを listen するやつが起動する。port オプションでお好みの port に変更可。 type オプションでロック情報をどこで持つかというのが設定できたりで、以下3つがつかえるぽい。
ちなむと、TypePad ではデフォルトの internal で使ってた。一番無難と思われる(LJ は知らない...)。
クライアントのほうの使い方は SYNOPSIS どおり。こんなんで確認した。
#!/usr/bin/env perl
use strict;
use warnings;
use DDLockClient ();
my $client = DDLockClient->new(servers => [ 'localhost:7002' ]);
my $Lock = $client->trylock('lock-test')
or die "Failed to lock";
while (1) {
print time."\n";
sleep 5;
}
DESTROY {
$Lock && $Lock->release;
};
memcached のように text な protocol なので telnet コマンドでもいろいろ確認できる。使えるコマンドは以下のとおり。
daemon を internal type で起動、先のクライアントをずっと動かしてる状態でひととおりやってみた。
% telnet localhost 7002
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
status
STATUS: OK
SUCCESSES: 13
FAILURES: 4
RUNTIME: 2987
LOAD: 1
load
LOAD: 0
locks
LOCKS:
lock-test = Client::Internal(R): open to 127.0.0.1:48757
trylock lock=foo
OK
locks
LOCKS:
foo = Client::Internal(R): open to 127.0.0.1:40654
lock-test = Client::Internal(R): open to 127.0.0.1:48757
releaselock lock=foo
OK
locks
LOCKS:
lock-test = Client::Internal(R): open to 127.0.0.1:48757
ふむ。
ざっとさわってみて、daemontools で ddlockd を動かしておけば結構安心して使えそうな気がする。ddlockd 突然死でロックがきえるというのは "dlmfs" or "dbi" type で起動しとけば防げる。ただ、この場合ロックファイル or ロックレコードがのこったままになるので、そいつらをいったん消してあげないといけない、という問題がある。これを防ぐには client 側でがんばるしかなく、release でエラったら成功するまでひたすらがんばるとかしないといけない(ほかなんかいい方法あるかな?)。まぁこれは ddlockd 使わなくてもファイル使った排他制御やるなら同じことがいえる(はず)。
多くの daemon なプログラムが採用している .pid ファイル使った多重起動防止な仕組みの複数サバ対応版としての役割としては必要十分かなと。LJ/TypePad で長らく使ってるって実績もあるし。とかとか、いろいろ考えたりもしたけれど、結局 memcached でできちゃうのよね、多重起動防止なら...。
とりあえず今回はすでに memcached が動いてる/使える環境なので、そっちを使う方向でw 結局すでにあった実装を再利用できる形にした(NAS 上に File::NFSLock でロックファイルつくる)。
May 19, 2009 at 18:51 in Perl | Permalink | Comments (0) | TrackBack (0)
|