ビール好きなあなたへ
ふと、飲んだビールの量をカウントするだけのサービスが欲しいと思ったのでGoogleApp Engineを使ってibeerというのを作ってみました。
とりあえず作ってみましたが、これからどうしようとかいうのは特に決めていません。思いつきベースで飽きるまでテキトーにやってく予定です。こんな機能あったらいいよねー、とかも(一応)募集してみます。
あと今はまったくスタイルシートを適用していない素のHTMLなので、カッコいいデザインとかロゴとかも絶賛募集中です!
Twitterを参考にCSS書きました。
ちなみになぜビールの量をカウントしたいかというと、生活費の中で食費の占める割合が高く、たぶん食費の中ではビール代が占める割合が最も高いので、そのビールの量を数えてみたい!という単なる思いつき(好奇心)です。だって居酒屋で生大(800ml)を5回頼んだらそれだけで4リットルですよ!平日に500mlの缶ビールを1本飲んで休日に2本飲んだらそれだけで4.5リットルですよ!合わせて週8.5リットル、月34リットル、年408リットル!
そんなわけで、全国のビール好きなみなさんもきっと同じ気持ちではないかと思いますのでここにお知らせ致します。
psの操作に慣れる
Linuxなどで実行中のプロセスを表示させるコマンドにpsというのがあります。
これまでこのコマンドをかなり適当に使ってきていて、オプションとかよくわかってなかったのでmanをちゃんと読んでいろいろやってみました。
psコマンドはprocpsというパッケージに含まれるコマンドです。
procpsには他にtop, vmstat, w, kill, free, slabtop, skillといったコマンドが含まれているようです。
ここではFedora Core 6で以下のバージョンを使っています。
$ ps --version procps version 3.2.7
オプションの指定方法
オプションの指定方法にいくつかの方法があるので把握しておきます。
デフォルトの動作
まずはデフォルトの動作を知っておきます。
$ ps PID TTY TIME CMD 1731 pts/2 00:00:00 ps 24760 pts/2 00:00:00 zsh
デフォルトでは、ps はカレントユーザーと同じ実効 (effective) ユーザー ID (EUID) を持ち、かつ呼び出した端末と同じ端末に関連づけられている全てのプロセスを選択する。この場合、プロセス ID (PID)・プロセスに関連づけられている端末 (TTY)・ [dd-]hh:mm:ss という形式の累積 CPU 時間 (TIME)・実行ファイル名 (CMD) が表示される。出力はデフォルトではソートされない。
実効ユーザーを指定する
呼び出した端末以外の端末に関連づけられているプロセスも表示するには-uオプションで明示的に実効ユーザーを指定すればいいようです。
$ ps -u <ユーザー名> PID TTY TIME CMD 732 pts/1 00:00:00 man 735 pts/1 00:00:00 sh 736 pts/1 00:00:00 sh 741 pts/1 00:00:00 less 1719 pts/2 00:00:00 ps 3177 ? 00:00:00 multilog 24627 ? 00:00:01 sshd 24628 pts/0 00:00:00 zsh 24742 pts/0 00:00:00 screen 24743 ? 00:00:01 screen 24744 pts/1 00:00:00 zsh 24760 pts/2 00:00:00 zsh 31318 pts/3 00:00:00 zsh 31331 pts/3 00:00:00 python 31343 pts/4 00:00:00 zsh
すべてのプロセスを表示する
-eオプションを使います。
$ ps -e
完全なフォーマット
-fオプションをつけると「完全なフォーマットでリスト」します。なにが「完全」なのかはよくわかりません。
$ ps -f UID PID PPID C STIME TTY TIME CMD 500 2237 24760 0 11:40 pts/2 00:00:00 ps -f 500 24760 24743 0 10:04 pts/2 00:00:00 /usr/local/bin/zsh
これと似たオプションに-lというのもあります。これは「長いフォーマット」です。これもよくわからないけど、「完全なフォーマット」よりたくさんのカラムが表示されます。
$ ps -l F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 0 R 500 2312 24760 0 76 0 - 1167 - pts/2 00:00:00 ps 0 S 500 24760 24743 0 76 0 - 1917 rt_sig pts/2 00:00:00 zsh
コマンド名で選択
実効ユーザーではなくコマンド名で選択したい場合は-Cオプションを使います。たとえば実行中のApache HTTPサーバーを表示します。
$ ps -C httpd PID TTY TIME CMD 2016 ? 00:00:02 httpd 4600 ? 00:00:19 httpd 22785 ? 00:00:00 httpd 22786 ? 00:00:56 httpd 22787 ? 00:00:31 httpd 22788 ? 00:00:37 httpd 22790 ? 00:00:41 httpd 22791 ? 00:00:32 httpd 22792 ? 00:00:33 httpd 22793 ? 00:00:32 httpd 22794 ? 00:00:38 httpd
スレッドも表示
たとえばNPTLなMySQLを使っている場合、コマンド名でmysqldを指定しても1個しか出てきません。スレッドも表示したい場合は-Lオプションを使います。
$ ps -C mysqld PID TTY TIME CMD 2613 ? 00:17:38 mysqld $ ps -C mysqld -L PID LWP TTY TIME CMD 2613 2613 ? 00:00:07 mysqld 2613 2614 ? 00:00:00 mysqld 2613 2615 ? 00:00:00 mysqld 2613 2616 ? 00:00:00 mysqld 2613 2617 ? 00:00:00 mysqld 2613 2624 ? 00:00:11 mysqld 2613 2625 ? 00:00:04 mysqld 2613 2626 ? 00:00:02 mysqld 2613 2627 ? 00:00:14 mysqld 2613 2628 ? 00:00:00 mysqld
カラムの意味を知る
そろそろ各カラムが何を表しているのか知りたくなってきました。想像がつくやつもあるけど「なにこれ?」みたいのもあります。
ここではこれまでで一番長いフォーマットで表示された-lオプションで表示されるカラムについて調べます。
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
F
プロセスに関連づけられたフラグです。
プロセスフラグ
これらの値の合計は、flags 出力指定子で提供される "F" カラムに表示される。
1 fork されたが exec されていない。
4 スーパーユーザー権限を使っている。
S
プロセスの状態を1文字で表します。
プロセスの状態コード
s, stat, state 出力指定子 (ヘッダ "STAT" または "S") がプロセス状態の説明のために表示する値を以下に示す。
D 割り込み不可能なスリープ状態 (通常 IO 中)
R 実行中または実行可能状態 (実行キューにある)
S 割り込み可能なスリープ状態 (イベントの完了を待っている)
T ジョブ制御シグナルまたはトレースされているために停止中の状態
W ページング状態 (2.6.xx カーネルからは無効)
X 死んだ状態 (見えるべきではない)
Z 終了したが、親プロセスによって回収されなかった、消滅した (ゾンビ) プロセス
UID
実効ユーザーIDです。euidと同じ。
PID
プロセスID。
PPID
親プロセスID。
C
プロセッサ使用率。整数。
PRI
優先度(priotiry)だと思うけどよくわからない。
NI
nice値。19 (最も良い) から -20 (他のプロセスに対して良くない) の値を取る。
ADDR
よくわからない。
SZ
プロセスのコアイメージの物理ページサイズ。メモリ関連については後述する。
WCHAN
プロセスがスリープしているカーネル関数の名前。
TTY
制御端末。
TIME
累積したCPU時間。
CMD
文字列の引数がついたコマンド。
フォーマットの指定
表示するフォーマットは-oオプションで指定することができます。
たとえばプロセスIDとコマンド名(引数なし)だけ表示したい場合。
$ ps -o pid,comm PID CMD 5417 ps 24760 zsh
-Oオプションを使うといくつかのデフォルトカラムを表示してくれます。「-o pid,format,state,tname,time,command または -opid,format,tname,time,cmd と等しい」そうです。
-fや-lで表示されないカラムはこのオプションを使って表示させましょう。
たとえばhttpdのCPU使用率やメモリ使用率を表示したいことがあります。
$ ps -C httpd -o pid,pcpu,pmem,comm PID %CPU %MEM COMMAND 2016 0.0 1.8 httpd 4600 0.1 5.7 httpd 22785 0.0 0.7 httpd 22786 0.2 5.6 httpd 22787 0.1 5.7 httpd 22788 0.1 6.2 httpd 22790 0.1 5.7 httpd 22791 0.1 5.6 httpd 22792 0.1 6.4 httpd 22793 0.1 6.0 httpd 22794 0.1 6.0 httpd
メモリ関連のカラム
メモリ関連のカラムにはいくつかあるようなので整理しておきます。
sz SZ プロセスのコアイメージの物理ページサイズ。これにはテキスト・データ・スタック空間が含まれる。デバイスマッピングは現在のところ除外されているが、これは変更される。 vsz と rssを参照。 rss RSS 常駐セットの大きさ。タスクが使用しているスワップされていない物理メモリ (kB 単位)。 (別名rssiz, rsz)。 vsz VSZ プロセスの仮想メモリサイズ (KiB, 1024 バイト単位)。デバイスマッピンは現在のところ除外されているが、これは変更される。 (別名vsize)。 %mem %MEM マシンの物理メモリに対するプロセスの常駐セットサイズのパーセンテージ。 (別名 pme)。
topコマンドのRESに相当するのがここではRSSになるようです。試しに全部表示してみます。
$ ps -C httpd -o pid,pmem,sz,rss,vsz,comm PID %MEM SZ RSS VSZ COMMAND 2016 1.8 5136 9392 20544 httpd 4600 5.7 10873 28408 43492 httpd 22785 0.7 4802 3588 19208 httpd 22786 5.6 10803 28220 43212 httpd 22787 5.7 11009 28860 44036 httpd 22788 6.2 11567 31120 46268 httpd 22790 5.7 10860 28672 43440 httpd 22791 5.6 10827 28244 43308 httpd 22792 6.4 11691 32076 46764 httpd 22793 6.0 11307 30100 45228 httpd 22794 6.0 11339 30180 45356 httpd
ちょっと計算してみます。
PID %MEM SZ RSS VSZ COMMAND 22794 6.0 11339 30180 45356 httpd
このマシンには512MBの物理メモリが搭載されているので、それの6%がRSSになるはずです。
>>> 512 * 0.06 30.719999999999999
おー、ほぼ正しいですね。
ちなみに、-fでも-lでもRSSは表示されませんが、-yを-lと組み合わせることでRSSが表示されるようになります。
$ ps -ly S UID PID PPID C PRI NI RSS SZ WCHAN TTY TIME CMD R 500 9676 24760 0 77 0 756 1167 - pts/2 00:00:00 ps R 500 24760 24743 0 77 0 3436 1917 - pts/2 00:00:01 zsh
psで特定プロセスのメモリサイズを知りたいときに簡単に使えそうです。
ソート
特定のカラムでソートすることもできます。
RSSの昇順で表示します。
$ ps -C httpd -o pid,pmem,sz,rss,vsz,comm --sort rss PID %MEM SZ RSS VSZ COMMAND 22785 0.7 4802 3588 19208 httpd 2016 1.8 5136 9392 20544 httpd 22786 5.6 10803 28220 43212 httpd 22791 5.6 10827 28244 43308 httpd 4600 5.7 10873 28424 43492 httpd 22790 5.7 10860 28672 43440 httpd 22787 5.7 11009 28860 44036 httpd 22793 6.0 11307 30100 45228 httpd 22794 6.0 11339 30180 45356 httpd 22788 6.2 11567 31120 46268 httpd 22792 6.4 11691 32076 46764 httpd
降順にするにはマイナスをつけます。
$ ps -C httpd -o pid,pmem,sz,rss,vsz,comm --sort -rss PID %MEM SZ RSS VSZ COMMAND 22792 6.4 11691 32076 46764 httpd 22788 6.2 11567 31120 46268 httpd 22794 6.0 11339 30180 45356 httpd 22793 6.0 11307 30100 45228 httpd 22787 5.7 11009 28860 44036 httpd 22790 5.7 10860 28672 43440 httpd 4600 5.7 10873 28424 43492 httpd 22791 5.6 10827 28244 43308 httpd 22786 5.6 10803 28220 43212 httpd 2016 1.8 5136 9392 20544 httpd 22785 0.7 4802 3588 19208 httpd
ソートに使えないカラムもいくつかあるようです。
プロセスツリーを表示する
fオプション(-fではない!)を使うとプロセスをツリー上に表示できるようです。
でもプロセスツリーを表示するだけならpstreeコマンドを使った方がいいかもしれません。
ヘッダ行を繰り返す
-eオプションですべてのプロセスを表示したりするとリストが長くなり、どれがどのカラムかわからなくなります。
そんなときは--headersオプションを使ってヘッダ行が繰り返し表示されるようにするといいかもしれません。
$ ps -ef --headers
いろんなuid
uidにもいろいろあります。
- euid
- 実効ユーザーID
- ruid
- 実ユーザーID
- fuid
- ファイルシステムアクセスユーザーID
- suid
- 保存ユーザーID
単にuidといった場合はeuidのことを指すようです。
ps auxとか
実はpsのことをよく知らない頃(つい数時間前まで)は、特に意味も知らず以下のように打ってました。
$ ps auxwww
これどういう意味?
manにずばり書いてありました。
"ps -aux" は "ps aux" とは異なることに注意すること。 POSIX と UNIX 標準では、"ps -aux" は "x" という名前のユーザーが所有する全てのプロセスを表示し、かつ -a オプションで選択される全てのプロセスを表示する。 "x" という名前のユーザーが存在しない場合、この ps は代わりに "ps aux" というコマンドとして解釈され、警告を表示する。この動作は昔のスクリプトと慣習からの移行の助けになることを意図している。これは脆くて変更される可能性があるので、これに依存すべきではない。
wオプションは出力幅を拡げるために使います。2つ指定すると幅の制限がなくなります。
-aオプションは以下の意味です。
-a セッションリーダ (getsid(2) を参照) と端末を持たないプロセスを除く、全てのプロセスを表示する。
スッキリ。
perlは記号だらけでよくわからんという件
最近「Perlは記号だらけでよくわからん」という話をよく聞くなーと思っていたのでちょっと考えてみた。
まずはよく見かけそうな記号変数(正式な呼称なんだっけ?)を思いつくかぎり列挙してみる。
- $_
- $!
- $@
- $?
- @_
- <>(これは変数じゃないか)
このくらいかな。
で、「記号だからググれない」ということも聞きますが、これは直接Perlのドキュメント(perldoc)を参照するのが手っ取り早いです。
これはperlvarというドキュメントに載ってるので「perldoc perlvar」でググります。そうすると
とかが出てくるので、あとはブラウザ上で検索すればおkではないかと思います。
また、ブラウザよりもシェルが身近にある人はシェル上で「perldoc perlvar」すれば問題なし。検索はlessとかと同様にスラッシュ(/)で後方検索、はてな(?)で前方検索できます。その場合は$とかはエスケープしないと検索できないので注意。例えば$^Cという変数を検索する場合はスラッシュを打ってから「\$\^C」でおkです。
あと、「perlvar」という単語を忘れちゃってググレナインダヨ!という場合もあると思いますが、そういう場合はhttp://perldoc.perl.org/から(perldocでググれば出てきます)、左サイドバーのSpecial variablesをクリックしましょう。日本語で読みたい人はこの時点でperlvarという単語に出会えますので先ほど紹介した通りググったりしたらいいのではないかと思います。これでperldocという単語を覚えておけばよくなりました。
Perlネットワークプログラミング
Perlネットワークプログラミングという本をちょうど1年前くらいに買ったんだけど、それをようやくやり終えました。
全部は読んでないんだけど、興味のあるところだけ。買ってすぐにパート1の基礎をやって放置していたんだけど、最近多重化とかに興味がわいてきていたのでパート3のTCPクライアント/サーバーシステムの開発を読んだりした。他のところはパラパラと流し読みしただけ。興味ないところ読んでも眠くなるだけなので、そのうち必要になったら読み返せばいいかなと思ってる。
Perlでネットワークプログラミングを学ぶのにこの本は超オススメです。値段が高いのが難点なのと、ちょっと古い本なのでそれを念頭に読む必要がある(Perlは5.6だし!)。select/pollは載ってるけどepollは載ってないから自分で調べないといけないし、Danga::Socketも使い方わかるとおもしろいからやっといた方がいいし、非同期I/O(AIO)も載ってないけど学びたいし。
とか、そんな感じの本です。
Perlネットワークプログラミング―ソケットの使い方からクライアント/サーバーシステムの開発まで
- 作者: リンカーンスタイン,Lincoln D. Stein,クイープ
- 出版社/メーカー: ピアソンエデュケーション
- 発売日: 2002/12
- メディア: 単行本
- 購入: 5人 クリック: 28回
- この商品を含むブログ (6件) を見る
YAPC::Asia 2008で見たいセッション
YAPC::Asia 2008は気になるセッションがたくさんあって困っていたんだけど、実際にはセッションを見ることはほとんどできなかったので今チェックしています。実はスライドはほとんどWeb上にあるし、動画もアップされるし、内容をチェックするだけなら会場に行かなくてもそれほど不自由はしないんですね。
それでも会場に行くメリットは、「実感できる」ということだと思いました。会場である(今回は)東工大の環境の素晴らしさとか、どれだけたくさんの人が参加しているのかとか、みんなとても楽しそうにしていることとか、日本語だけじゃなくて英語が普通に飛び交ってたりとか。さらにスタッフとして参加して、イベントを作り上げるためにどれだけの人ががんばっているかとか、最近は当たり前のように見ているストリーミング中継が実際にみんなの努力によって行われていることとか、そういうことを「実感できて」よかった。すごく楽しかったです!
で、以下が気になるセッションとチェックした結果。まだ全部チェックしきれてない・・ので随時更新する予定。
Tatsuhiko Miyagawa - Welcome to YAPC::Asia 2008
Kang-min Liu (gugod) - Continuous Testing
http://blog.gugod.org/2008/05/test-continuous-tool-that-makes-module.html
Test::Continuous
ファイルの変更を監視して必要なテストだけ実行できる。
継承関係も追って監視できる?
package Bar; use base 'Foo'; 1;
でFoo.pmが変更されたときBar.pmをテストするbar.tを走らせられる?
Tokuhiro Matsuno (tokuhirom) - about Perl5.10
http://svn.coderepos.org/share/docs/tokuhirom/20080515-yapc-perl510/
- say
- dor(//)
- state
- switch(given-when, foreach-when)
- 正規表現のnamed capture(?
)を$+{keyword}で参照? - stacked filetest(if -e -f -x $file)
などなど
Dan Kogai - PSL = Perl as a Second Language
http://www.dan.co.jp/~dankogai/yapcasia2008/psl.html
- Perl does NOT have an OO built-in.
Perl5のOOは
-
- reference - データを格納できる
- bless - オブジェクトが何をできるか見つけられる
だけ。だからOOをやろうと思ったら
-
- データの格納方法を決めて
- 何ができるか見つける方法をデータに教えればよい
InsideOutとかMooseとか。
- Perl is a context-oriented language.
- scalar/list
Kenichi Ishigaki (charsbar) - Web is not the only one that requires frameworks
Jesse Vincent - Step 3: Prophet - A peer to peer replicated property database
http://www.slideshare.net/obrajesse/prophet-a-peer-to-peer-replicated-disconnected-database
よくわかんなかった。
Chia-liang Kao (clkao) - Running Perlish Small Business with Perl
Daisuke Murase (typester) - FormValidator::Assets
http://svn.coderepos.org/share/docs/typester/formvalidator-assets/
- 同じ入力項目はフォームが違ってもルールを1回だけ定義したい。DRY!
- inputフィールドのnameベースのバリデーション
- assets
Hiroshi Sakai (ziguzagu) - OpenSource TypePad Mobile
http://www.slideshare.net/ziguzagu/open-source-type-pad-mobile
Masahiro Nagano (kazeburo) - memcached in mixi
Yuval Kogman (nothingmuch) - Moose
http://conferences.yapcasia.org/ya2008/talk/1017
- Moose is not experimental, toy, accessor builder, source filter, black magic, perl 6 in perl5
- Moose is a complete modern object framework for perl
- Moose is syntac sugar for Class::MOP
- Moose is stable & production ready
- lazyはdefaultを遅延させる。newではなく最初に$object->staffが呼ばれたときに呼ばれる
- 欠点
- ロード時間
- MooseX::Compile
- いくつかの機能が遅い
- hashrefじゃないクラスの拡張はトリッキー
- ロード時間
- 利点
Daisuke Maki - Getting Your Feet Even Wetter With XS
- PerlとC言語をつなげるためのフレームワーク
- SV
- SV以外
- SVの中身を取得する
- SVの中身は何?
- Perlの代わりにXSを書かない。XSはつなぎ役だから!
- Cの構造体をPerlとやりとりする
- typemap
- GCのタイミング
- SvMAGIC
XSは1回しか書いたことがないんだけど用語とかの意味がわかんなくて苦労した。それこそSVとかSvOKとか。
てきとーなXSコードを見ながらこつこつ調べていって書いた覚えがある。
typemapとかMAGICとかは初めて聞いた。そして意味わからない><
Naoki Tomita (tomi-ru) - use Encode::JP::Mobile; - Perl標準の機能を使った絵文字の相互変換
http://www.slideshare.net/tomita/use-encodejpmobile
- Perl標準のEncodeモジュールの方式で絵文字を含んだ文字列をencode/decodeできる
- FormからPOSTされたデータをdecodeしてアプリ内ではUnicode(flagged utf-8)で扱い、DBにはutf-8でencodeして格納
- DBから取り出す時にdeocdeしてアプリ内ではUnicode(flagged utf-8)で扱い、モバイル端末用にencodeして表示
これがキホン。さらに、
- 文字列から絵文字を除去
- PC向けに絵文字を画像で表示
といったことも可能。
Naoya Ito - Introduction to DBIx::MoCo
tokiharu noto - Introducing "MobaSiF" (Mobile Simple Framework)
http://conferences.yapcasia.org/ya2008/talk/1014
- MobaSiF == "Mobile Simple Framework"
- 2003年11月から開発
- 一部ではXSも使ってる
- large-scale mobile servicesでの実績がある
- Linux/Perl 5.8x/Apache/MySQL5.0.x
- DoCoMo FOMA/au WIN/SoftBank 3GC
- 絵文字
- MTemplate
- dispatcher
- URL rewrite
- benchmark
- TT, Encode::JP::Mobile, Catalystと比較して高速
- misc
- DA.pm - DBハンドルの管理
- Daemon.pm - デーモンを簡単に作るためのヘルパー
- MLog.pm - ログの記録
- mobamail - will be available
- License
- Attistic or GPLv2
- Now available!
Emerson Mills - DBIx::Class Crash Course: Using DBIx::Class and other modules to make DB driven apps easy
Masahiro Nagano (kazeburo) - mod_perlをjob workerとして使う
Jonathan Rockway (jrockway) - Improving your Catalyst application
http://conferences.yapcasia.org/ya2008/talk/1036
- Action Dispatching(Catalystを知ろう!)
- Catalyst::Action::REST(GETとPOSTを分けるのが簡単)
- Controllerにロジックを書くとテストできないし再利用もできない
- Catalystに依存しないようにロジックを書けばテストができるようになる
- Catalystからそれを使う場合はCatalyst::Model::Adaptorが使える
- configを書く場所
- Class
- デフォルト値を書く
- MyApp
- デフォルト値を上書き
- config file
- Class/MyAppの設定を上書き
- Class
- ACCEPT_CONTEXT
- Moose
- Base Controllerを書こう
- DBIx::Class
- MapMaker
- Restricted resultsets
- New Authentication system
おまけ
- App::TemplateServer
- アプリなしでテンプレートファイルをserveする
- データをYAMLで与えることができる(っぽい)
- テンプレートのテストに使える
Jesse Vincent - Everything but the secret sauce
http://conferences.yapcasia.org/ya2008/talk/984
- Hiveminderを作る過程で便利なツールをいっぱい作った
- バグを素早く検出
- テストがたくさんあって全部実行するのに時間がかかる(30min)
- prove -j 5 --fork(テストを並列実行、22min)
- TAP::Harness::Remoteを使ってサーバーで実行(16.5min)
- サーバーで並列実行(12min)
- EC2の4台のサーバーで実行(89sec)
- テストがたくさんあって全部実行するのに時間がかかる(30min)
- Carp::REPL
- Template::Declare
- Perlでテンプレートを書ける
- CSS::Squish
- App::ChangeLogger
- リリースは手作業が多くて大変
- shipitすればだいぶ楽だけど変更履歴は?
- Shipwright
- 依存モジュールが多いアプリはインストールが大変
- すべてをバージョン管理下においてパッケージングする
- 過去のビルドを再現できる
- あの依存モジュールが変更されたよ!といって慌てる必要がなくなる
- ビルド順も制御できるよ
- Date::Extract
- 文字列から日付を抽出
- ユーザーがフィードバックしやすくすること
- 返信すること
- Net::IMAP::Server
- タスク管理
Shipwrightは実際に使ってるけど便利です。一番始めに依存関係の解決とインストール順の解決が必要で、それは全自動というわけにはいかなくて大変だけど、これが終わってしまうと後はラク。インストール時に実行するコマンドも完全に制御できるってのもいい。例えば絶対にインストールが成功して動くことがわかってる場合にはmake testをスキップするようにすれば時間の節約にもなるし。適当なディレクトリを作ったりとか、なんかのシェルスクリプトをインストール後にコピーするとかmake installしたあとになんでもできるのも便利。
Atsushi Kobayashi (nekokak) - 古今東西ORマッパー
Casey West (cwest) - Build Domain Specific Languages with Perl
Kazuho Oku - Architecture of Pathtraq - building a computation-centric web service
- スケールアウトの話
- memory intensiveなサービスではサーバあたり32GB - 64GBのメモリ容量が最安
- データベース分割はしない。タスク単位で別サーバへ移動
- データの圧縮
- クエリキャッシュ
- ログ分析は集約演算(重い)
- Cache::Swifty
- 読み込みが速い
- Filter::SQL
- メッセージキュー
Faiz Kazi (fuzz) - From POE to Erlang
http://conferences.yapcasia.org/ya2008/talk/1055
- Perlの並行プログラミング
- ithread
- スレッドは難しい
- fork
- slow, overhead
- select
- 理解しづらい
- POE
- selectは難しいけどフレームワークがある
- イベント駆動
- POE with .. Kernel, Process, Session, Event, yield
- ithread
- プロセッサ
- マルチコア
- Models for Concurrency
- 2つの理論
- Shared State Concurrency
- Message Passing Concurrency
- Erlang
最近Perlネットワークプログラミングを読んでPerlの並列プログラミング(fork, thread, select, 非同期IOなど)を勉強していたので興味深かった。Erlang勉強したい。
Jeff Kim - Gungho and cloud computing, a scalable crawling and processing framework
Jose Castro (cog) - What I've learned in Tokyo
Michael Schwern (Schwern) - Perl Is unDead
YAPC::Asia 2008 1日目
今日は1日中受付係をやっていました。いろいろ慣れないところもありみなさんにご迷惑おかけしたところもありますが、なんとか1日が終了しました。
風邪なんだかよくわからない謎の病気かどうかすらわからない、時々見舞われる咳症候群がひどいので、懇親会は1時間くらいで引き上げてきました。
明日は何の仕事をするかわかりませんが、またがんばりたいと思います。
明日も早いので今日はもう寝るっす。