zsh で、変数の展開(評価)にパターンマッチ(正規表現じゃないの)が使えるっていうのを知った。zsh でしか試してないけど、他の shell でもできたりするのかも。 パターンマッチで削除系
zsh で、変数の展開(評価)にパターンマッチ(正規表現じゃないの)が使えるっていうのを知った。zsh でしか試してないけど、他の shell でもできたりするのかも。 パターンマッチで削除系
Perlbal で Server::Starter(start_server command) によるホットデプロイをサポートするためのプラグイン、Perlbal::Plugin::ServerStarter というのを作った(作っている)。 https://github.com/ziguzagu/Perlbal-Plugin-ServerStarter Perlbal の素敵な点の一つに、動的に設定変更できる(管理ポートに telnet, nc などでつないでコマンド送り込む)というのがあるけど、たぶんほとんどのプラグインでは設定の削除ができない。たとえば Vhosts プラグイン。 VHOST app.example.com = app VHOST admin.example.com = admin ## これがいらなくなっても動的に削除するコマンドはない VHOST www.exam
SVNリポジトリのある自宅サーバーで、Perlbal お試し中です。 設定に関するドキュメントがなかなかみつからないなぁ、とか思ってたらCPANモジュール配布物の conf ディレクトリにサンプル、doc ディレクトリにドキュメントいくつか発見。特に doc/service-parameters.txt 重要。 リバースプロキシ(role=reverse_proxy)と Web サーバー(role=web_server)、2つのサービスを作って virtual host でサービスのマッピングをするサービス(role=selector)の作成、という設定まで出来た(理解した)。 LOAD vhosts SERVER max_connections = 10000 CREATE POOL apache POOL apache ADD 127.0.0.1:8080 CREATE SERVICE
違いは、文字列の比較を正規表現(ap_regexec)でやるか strcmp でやるかの差。Apache 2.2.4 の該当部分のソース、modules/mappers/mod_rewrite.c(の apply_rewrite_cond 関数)から抜粋。 case CONDPAT_STR_EQ: if (p->flags & CONDFLAG_NOCASE) { rc = !strcasecmp(input, p->pattern); } else { rc = !strcmp(input, p->pattern); } break; default: /* it is really a regexp pattern, so apply it */ rc = !ap_regexec(p->regexp, input, AP_MAX_REG_MATCH, regmatch, 0); /*
複数サーバーで同時実行される可能性のあるスクリプトの排他制御を実装するのに、DDLockd をつかってはどうかというアイデアをいただいたので、DDLockd について調べてみた(なんかロックするやつ、ぐらいのことしかしらなかった)。 DDLockd とは Danga Distributed Lock Daemon の略で、まさに今回やろうとしていた複数サーバーで実行されるアプリの排他制御を行うための仕組み、みたいなのを提供してくれる daemon。Perl で書かれている。Danga の名前が指し示すとおり LiveJournal で使われている(た?)。TypePad でもほんのりつかっていたり。 コードはこのあたりにおちていた。 http://code.sixapart.com/svn/ddlockd/ http://code.livejournal.org/svn/ddlockd/
Chapter1の後半戦は、Test::More。 Perl Testing: A Developer's Notebook (Developers Notebook) Test::MoreはTest::Simpleのスーパーセットで完全に置き換えて使ってOK、モジュールをただしく読み込めたかどうかなどのテスト関数も含めいろんな機能あるでよ、とのことです。 早速。 package AnalyzeSentence; use strict; use warnings; use base qw/Exporter/; our $WORD_SEPARATOR = qr/\s+/; our @EXPORT_OK = qw($WORD_SEPARATOR count_words words); sub words { my $sentence = shift; return split $WORD_SE
Catalyst::Helper::View::TTSite を使ってみたら、雛形のテンプレートで TT の WRAPPER がみたことがない使われ方をしていたので、調べてみたら TT の Automatic Wrapper という仕組みだった、という話。 今までの自分の TT の使い方。 普段自分が Web アプリなんかで TT を使う時の使い方は、header.tt と footer.tt とか作って、tt_process で指定するテンプレがそいつらを含めてるという、↓のような感じ。 header.tt。 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <meta
XML::LibXML::parse_html_string で HTML の一部、たとえばブログ記事の本文のみとか、をパースしようとして無駄に苦戦してしまったのでメモ。 以下のような、DOCTYPE 宣言もなければ html/body 要素もないけど、ちゃんと(?)HTMLの一部ではあるものを XML::LibXML でパース、ごにょったあと出力したい。 #!/usr/bin/perl use strict; use warnings; use XML::LibXML; my $html =<<HTML; <div class="entry"> <p>test!!</p> </div> HTML my $parser = XML::LibXML->new; my $doc = $parser->parse_html_string($html); print $doc->toStringH
TemplateToolkitを勉強中ですが、基本的なところを理解していないような気がするので、HTML::Templateでサポートしている構文を全部書いてみたりします。HTML::Templateは知ってるけど、TemplateToolkitはまだ未挑戦 or 基本理解してないかも、な人用(>自分)。 #!/usr/bin/perl use strict; use warnings; my $usingTT = shift; my %param = ( var => q{test}, html => q{&<>'"}, url => q{ +/'"}, js => qq{\n\r'"}, bool => 1, array => [ { name => 'omae', job => 'pg' }, { name => 'tim', job => 'oreilly' }, { name =
YAPC::Asia 2008 行ってきました。 そして今年はしゃべってきました。スライドはこちらです。 スピーカーとしてこういった会に参加するのは初めてでしたが、無難にこなせたと思います。はい。 今回は、いろんな偶然がつながりつながってこういう機会にめぐまれて、なんかいろいろなものに感謝しないとなぁと、ひとりしんみり感じている祭りのあとです。 最初に就職したのが偶然 Mobile な部署、その後今の Six Apart に転職。しばらくすると Mobile な開発にひと盛り上がりやってきて、miyagawa さんがつくった TypeCast をその後いじるようになり、そのまま今回のオープンソース化プロジェクトをまかされ、YAPC でスピーカーにもなり。。 なんかいろいろめぐりめぐって機会に、人に恵まれたなぁと。 TypeCast を作った miyagawa さんに感謝。 僕自身にこれを1
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く