Perl

OpenID 実装した件

OpenIDを実装してみました。
このブログでもさっそく、delegate 設定しました。
とりあえず、サーバ側の提供ですが、OpenID を利用したサービスも何か出来るといいかなと思ってます。

実装自体は Net::OpenID::Server を使ったので非常に簡単でした。
一つハマったのが Net::OpenID::Server は Crypt::DH を使ってるのですが、Math::BigInt::Pari か Math::BigInt::GMP をインストールしておかないと非常に動作が遅くなってしまいます。
素の Math::BigInt を使ってても、遅いだけで正常に動作するのでなかなか気づきづらいです。。
Perl で OpenID 実装しようと思ってる方はご注意を。


use Perl; と Sledge 2.0

空前の use Perl; という事で取ったまま放置してた use Perl; のアカウントを使いはじめてみる。
http://use.perl.org/~ikebe/journal/

あと、最近は Sledge2.0 がほんとに出来てきてます。
某チャンネルですすんでる模様。

Sledge のディレクトリレイアウト

Sledge は規約があまり無くてディレクトリレイアウトとかが設定に左右されてしまうのですが、他社がどんなレイアウトなのか気になるので晒してみる。

 ./project
    ./view - テンプレート
    ./htdocs - 静的ファイル、画像とか CSS とか
    ./lib - *.pm
       Projec/Pages.pm
    ./misc - SQL とかメモとか
    ./etc - 設定ファイル系、エラー文言とか、Apache の conf とか
    ./bin - コマンドラインツール、バッチとか
    ./t - テスト
社内用途だとこんな感じで雛形生成してます。

Plagger モドキ Deploy ツール

空前の deploy tool ブームの中いかがお過ごしでしょうか。

http://blog.nomadscafe.jp/archives/000704.html

http://d.hatena.ne.jp/tokuhirom/20060929/1159495175

うちもまだ実運用には入れてないですが、作ってるとこだったりします。
以下のような Plagger マルパクリな YAML で設定します。

プラグインは
  • prepare - 下準備 svn co とか
  • process - サーバの台数分だけループで呼ばれる。rsync とか
  • finalize - 後片付けとかログ出力とか
の3つのフェーズで処理を行います。
運用ツールを作るときに Plagger みたいにプラグイン機構にするってのはいいですね。
後から機能追加するのも楽だし、プラグイン毎にテスト出来るので。
あと、内部で使ってる Net::SSH::Perl がステキです。インストールめんどいですけど。


 global:
   user: hoge
   repository: http://svn.example.com/proj/trunk
   deploy_to: /path/to/proj
   work_dir: /path/to/proj
   svn: /usr/local/bin/svn
   roles:
     web:
       - XXX.XXX.XXX.XXX
     app: 
       - XXX.XXX.XXX.XXX
 tasks:
   setup:
     target: app
     plugins: 
       - module: RemoteExec
         config:
           command: mkdir -m 0755 -p /path/to/cache_dir
   deploy:
     target: app
     plugins:
        - module: SVN::Checkout
        - module: RemoteExec
          config:
            user: root
            command: /usr/local/modperl/bin/modperlctl stop
        - module: Deploy
          config:
        - module: RemoteExec
          config:
            user: root
            command: /usr/local/modperl/bin/modperlctl start
        - module: Notify::Email
          config:
              to: developers@example.com

Perlのワードリスト

qw() だったけど、DBIC を使うようになってから qw// も気になってきた。。
Profile
  • ライブドアブログ