技術ネタ

ClearSilver の Apache モジュール化

daily dayflower - ClearSilver を Apache のフィルタモジュールとしてインプリメントしてみた

YAPCで発表してたモジュールから ClearSilver 部分だけ取り出したのを一応公開してたりします。
http://svn.shebang.jp/repos/mod_cs/
autotools 使ってないとか、ツッコミどころ満載で、、

汎用的に使うのであればフィルタの方がいいですね。
レスポンスヘッダで挙動を変えるのが今っぽくてかっこいいなぁ。

Twitter が更新されすぎてるので Growl で見る事に。。

Twitter 流行ってるわけですが、通知先を IM にしてるとピコピコうるさいので、一定期間毎に新着だけを Growl に通知する事にしてみた。

Perl で Mac::Growl とか使って実装。
Net::Twitter だと since とかのパラメータ渡せないみたいなので LWP で。

ソースはここ
一回コマンドラインで叩いて、ID,パスワードを保存してから Cron に登録する感じです。

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

Profile
  • ライブドアブログ