pgrepってのがあんのね。

技術メモ帳 - pgrep, pkill を使用してプロセスを殺す

最近、会社でシェルの操作方法について教えているのだが、

pgrep / pkill / skill / pidof といった

便利なプロセス操作系コマンドを知らない人が実に多い。

moinmoinをいじってたら、突然サーバーがスワップし始めたのでプロセス見たら、なんかよくわからんところからバシバシアクセスされてた。相変わらずblosxomってこういう時厳しい。

とりあえずプロセスを落とすために

pgrep -f 'blosxom.cgi' | xargs kill

うーむ、ナイス。

初めてのmoinmoinマクロ

moinmoinにamazonのアソシエイトを貼り付けたくてマクロを作ってみた。といってもISBN.pyをいじっただけだけど。

html_code = """
<iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=kaerutyuuihou-22
&o=9&p=48&l=st1&mode=%s&search=%s&fc1=000000<1=&
lc1=3366FF&bg1=FFFFFF&f=ifr" marginwidth="0"
marginheight="0" width="728" height="90" border="0"
frameborder="0" style="border:none;" scrolling="no"></iframe>
"""

def execute(macro, args):
    f = macro.formatter
    result = ''
    if args:
        args = [arg.strip() for arg in args.split(',')]
    else:
        args = []
    if 1 > len(args):
        result += f.strong(1) + \
                  f.text('Example: [[AMAZON("books-jp","perl")]]') + \
                  f.strong(0) + \
                  f.text(' - links to Amazon')
    else:
                result += html_code % tuple(args)
    return result

で、

result += html_code % tuple(args)

の部分で最初リストを突っ込んでたせいでエラーが出てたのだけど理由がわからなかった。

っていうか差し込む場合に何でタプルでないといけないのかわからん。リストだ問題あんのかな?

MeadowのDiredバッファでFtp

Meadow+TRAMP使ってるとき、ホストのDiredバッファにドラッグドロップするとファイルがアップロードされるのね、知らなかった。

100Mくらいのファイルを送ったらmemory exhaustが出て落ちたけど、ちょっとしたものアップロードするんだったら別にFTPソフト立ち上げたりしなくていいので便利。

予測から実測へ

昨晩、ジコリータで、追突された。ちなみに僕の車はべコリータ。

相手が任意保険の番号が今はわからん(家にかえらないと)とか、携帯持ってないから電話できんとか、最初はなんかちょっとなぁっていう対応だったので、なんだかなぁと思ったんだけど、無事に警察イベントまで終了。

で、某クルマーラボ務めらしいので、もらった名前でググってみたら 「追突時のケガの予測とかの検討」をしているヒトらしい。

やっぱリアルで試(以下略)のかなぁ。

とか思った。

ケガはしてないよー。鞭打ちでもないよー、ただ毎日のデスクワークで腰がちょっと痛いだけだよー。

もっとえいご漬け

単語ドリル

会話聴き取り

もっと英語漬けのほうがおもろい。

Catalyst::Controller::FormBuilder引き続き

引き続きCatalyst::Controller::FormBuilderをいじってるヨ。ってかCGI::FormBuilder読んだ。

で、昨日はこんな感じで書いてたんだけど

my $data = {
            title            => $form->field('title'),
            content          => $form->field('content'),
            tag_text         => $form->field('tag_text'),
            pubdate         => $dt
            };

my $e = $c->model('DBIC::Entries')->update_or_create($data);

でも、podみてたら$form->fieldってメソッド使えばハッシュのリファレンスが返ってくるので、

my $data = $form->field;
my $e = $c->model('DBIC::Entries')->update_or_create($data);

でいいらしい。早速書き直した。フォームのパラメータとかバリデーションとかよきに計らってくれる上に、DBICとの連携も楽だ。

それがDWIMmery?

CGI::FormBuilder - Easily generate and process stateful forms - search.cpan.org

The goal of CGI::FormBuilder (FormBuilder) is to provide an easy way for you to generate and process entire CGI form-based applications. Its main features are:

  • Field Abstraction
  • DWIMmery
  • Built-in Validation
  • Template Support

Back of Beyond

ProductName Back of Beyond
Nu Tone
Hospital / ?円 ( 2007-06-18 )


一曲目と最後の曲が良い。

全体的にちょっとNU:TONE少なめ、ホスピタル多目。リキッドすぎるのはあんま好みじゃないナァ。

とかいいつつ、LindstromとThe Cinematic Orchestraとunkleの新譜を予約してもうた。

Catalyst::Controller::FormBuilderいい感じ

HTML::Widgetだと細かいところに手を入れにくいいので、 Catalyst::Controller::FormBuilderに変えてみたらよさげ。

フォームの設定とかバリデートの情報はYAMLで。しかもデフォルトがTTSiteみたいな階層を取っているので管理しやすい。例えば/books/editに対応する設定ファイルはroot/forms/books/edit.fbと言った具合にfbっていう拡張子をつけておけばよい。

TTで使う場合には

[% FormBuilder.render %]

でよくて細かくいろいろいじりたい場合には

[% formbuilder.start -%]
...
[% END %]

で。

Ajaxデザインパターン

見渡すにはいい感じの本だった。

ProductName Ajaxデザインパターン ―ユーザビリティと開発効率の向上のために
Michael Mahemoff
オライリー・ジャパン / 5040円 ( 2007-05-15 )


Ajaxというよりは、ユーザビリティのデザインパターン的。それをAjaxで実装するためのヒントみたいな。

後半テストとかデバッグとかの話だけどここらへんはだれちゃった。

UI指向だったらflex2とかいうアプローチもあるけど。

JAZZTRONICA!!2

メタモが楽しみ

ProductName JAZZTRONICA!!2
JAZZTRONIK
GATE RECORDS / 2793円 ( 2006-08-09 )