• はてなスター

    ついた。

    はてなスター日記 - はてなスターをブログに設置するにはを参考に、したらハマった(^^;

    エントリのタイトルはH3じゃないとダメなん?
     ↓
    いや、「Hatena.Star.headerTagAndClassName」で「タグ名+クラス名」を条件指定できるらしい。
     ↓
    あれ?つかない。
     ↓
    ここ見たら、条件指定する場所は「Hatena.Star.EntryLoader.headerTagAndClassName」が正しいらしい。
     ↓
    ついた
    自作自演で☆つけて試してる ←いまココ
  • Net::Stompで「無効な引数です」

    ウェブアプリを作っている。環境はlinux(FC6)+apache+mod_perl

    非常に時間がかかる処理や、ブラウザからの要求時点では完了できないような処理を、非同期実行するためのメッセージバスとしてActiveMQを使用している。

    ウェブアプリおよびバックエンドの処理は主にperlで作成。ActiveMQとのやりとりにはNet::Stompモジュール。

    現在は、単一のサーバで実行していて、localでメッセージを投げて受ける状態。STOMPの接続先としてlocalhostを指定していた。

    そしたら、下記のようなメッセージとともにNet::Stomp->newがこける。
    Error connecting to localhost:61613: 無効な引数です at /usr/lib/perl5/site_perl/5.8.8/Net/Stomp.pm line 19.
    なんでかなー、と思ったら、/etc/hostsに以下のように記述されていた。
    ::1 host localhost.localdomain localhost
    ので、Net::Stompに指定する接続先を「127.0.0.1」に変えたらうまくいった。えらい悩んでしまった。。。
    IPv6が有効になってる環境では要注意かも。



    はてなRSSのキーワードウォッチがすごく便利で、いくつかのジャンルのネタ拾いをしているのだけど、「STOMP」って単語にスカパラその他音楽関係がどんどこヒットしてきて、ちょい困る(^^;
  • Catalystとmod_perlでapacheのアクセスログにユーザを記録する

    ひさしぶりにwebアプリを書くことになり、既存のフレームワークを利用することにした。
    Rails周辺の喧騒はなんとなく気にしていて興味はあったのだけど、rubyを最後に触ったのが5年前で、今回はより慣れているperlでいくことに。

    「まるごとperl」でフレームワークの特集記事があって、Catalyst・Sledge・Jiftyが紹介されていた。Jiftyのポニーの由来とDB上のスキーマありき「ではない」ところにすごく惹かれたけど、今回はあまり七転八倒する時間的猶予がなく、web上の日本語情報が多そうなCatalyst+mod_perlに決めた。

    フレームワークというのはなんだかんだでフレームワーク自身の内部的な動きも含めて理解しないと、ホントに便利にはならないものだと再認識。
    特にプラグインをパイプ的にチェーンするフレームワークでは。

    フレームワーク固有というよりはutf8フラグ絡みなんだけど、文字化けとの格闘を越えてやっと便利だなぁと思えるようになってきた。

    apacheのアクセスログにユーザを記録する

    認証といえばインフラのレイヤに任せる、という方式を好むのだけど、今回はアプリの都合もあってフレームワークとアプリで認証の面倒を見ることにした。
    そうするとapacheのアクセスログにリモートユーザ(LogFormatでの%u指定)を記録するようにしていても「-(ハイフン)」で記録されてしまう。

    • 今回の環境は、apache 2.2.3、mod_perl 2.0.2、Catalyst 5.7006、perl 5.8.8、認証/セッションはAuthentication::CDBIとSession::FastMmapを使用。
    • コンテキストオブジェクトから、Apache2::RequestRecを得る。
      my $rr = $c->apache;
    • あとは、認証ユーザを設定するだけ。Root.pmのauto内で設定している。
      $rr->user( $c->req->{user} );
    • ただし、テストサーバで実行中はコンテキストオブジェクトにapacheメソッドがないので、こんな感じにした。
      $c->apache->user( $c->req->{user} ) if $c->can("apache") && $c->req->{user};
    既存のアクセスログ解析ツールをそのまま使えるので都合がいい。
    • staticなリソースについてはCatalystを経由せずapacheが直接serveするようにしているので相変わらず「-(ハイフン)」だけど。
  • unixtimeと日付の相互変換

    unixtimeと日付の相互変換 Weboo! Returns.で見かけた。
    date +%s --date "2005-01-01 00:00"
    dateにこんなオプションがあったなんて。。。。

    unixtime→日付、の方は、
    > perl -e "print '' . localtime(1172158773);"
    Fri Feb 23 00:39:33 2007
    
    と、やってた(出力書式が固定なので日時の確認程度にしか使えないけど)。
    なぜかというと「月」と「分」のフォーマット文字列がどっちがどっちか忘れてしまうから(笑)

    いつ使うかというと、
    「googleの検索結果に有用そうだが2chのURLがヒットし確認したくなったが社内のプロクシで警告されてしまうのでgoogleキャッシュを活用しようと思うが(これで警告は回避できる)、あいつ2chで何見てるんだ、と言われかねないリスクと天秤にかけられるぐらいの鮮度があるのだろうか?と、いつごろから続いている話題なのかをスレッドのURLから確認したい」
    というとき。
    ※キャッシュをコンテキストメニューから保存してエディタで見てればいい話でもあったりして。。
  • EPIA EN12000EGにFedora Core 6をインストール

    ここのサーバをreplaceしようと考えている。
    年末に買った雑誌の付録にFC6のインストールDVDが付いていたので、これに置き換える。

    現在使っているサーバはMini-ITXであまりスペースをとらず、ACアダプタで電源供給できるし、CPUファンがなく完全ファンレスで静か。なので、二代目も同じ路線でと思っていたらEPIAのEN12000EGというM/Bを見かけ、そのまま衝動買い。(といっても年末のことで、すでにもう新しいモデルが・・・)
    EN12000EG T-Zoneの商品ページ

    M/Bの隣においてあったケースがシンプルで気に入ったので一緒に購入。服を買うときもディスプレイされてる組み合わせで買ってしまうタイプだ。。。

    FC6をインストールついでに、mod_pythonにリベンジ。以前FC3+tracでmod_pythonを使おうとしたときはSegmentation Faultで落ちてしまって使えなかった。yum install tracで本家版をインストールしapacheの設定を追加したらあっさり使えた。ん~~。
    がしかし、このテのプロセスをwebサーバと別のユーザで動かす構成が趣味なので相変わらずtracdでいこうかと思っている。そのうち。

    現在のサーバ。C3 800MHz
    露天というか無蓋。ほこりがたまるのは問題だが。

    CPUのヒートシンクに触るとほんのりぬるい。夏はちょいあったかめ。でも乗り切った。

    新サーバ、の予定。

    インストールは特に問題なく終了。と思ったら、ブートの途中で止まってしまった。SATAの2.5HDDを使用したのだが、BIOSの設定で「SATA mode」の「RAID」を「IDE」にしたら無事通過。
    このとき初めてRAIDだと気づく・・・。

    USBキーボードが普通に使えるのは便利だなぁ。

    後一つ問題が残っていて、shutdown -hで電源が切れない。acpi=off apm=onも試してみたが・・・。何だろ。

    ヒートシンクでかい。
    ケースファンを止めちゃってもいいかもしれない、けど夏はわかんないなー。