タグ

ブックマーク / ziguzagu.org (10)

  • シェルスクリプトの変数展開(評価)でパターンマッチ

    zsh で、変数の展開(評価)にパターンマッチ(正規表現じゃないの)が使えるっていうのを知った。zsh でしか試してないけど、他の shell でもできたりするのかも。 パターンマッチで削除系

    kamipo
    kamipo 2014/02/17
  • Perlbal::Plugin::ServerStarter

    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

    Perlbal::Plugin::ServerStarter
    kamipo
    kamipo 2013/01/17
  • Perlbal の設定

    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

  • RewriteCond で正規表現を使わずにプチ最適化

    違いは、文字列の比較を正規表現(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); /*

    kamipo
    kamipo 2009/07/16
    RewriteCond %{REQUEST_METHOD} =GET
  • DDLockd 使ってみた

    複数サーバーで同時実行される可能性のあるスクリプトの排他制御を実装するのに、DDLockd をつかってはどうかというアイデアをいただいたので、DDLockd について調べてみた(なんかロックするやつ、ぐらいのことしかしらなかった)。 DDLockd とは Danga Distributed Lock Daemon の略で、まさに今回やろうとしていた複数サーバーで実行されるアプリの排他制御を行うための仕組み、みたいなのを提供してくれる daemon。Perl で書かれている。Danga の名前が指し示すとおり LiveJournal で使われている(た?)。TypePad でもほんのりつかっていたり。 コードはこのあたりにおちていた。 http://code.sixapart.com/svn/ddlockd/ http://code.livejournal.org/svn/ddlockd/

    DDLockd 使ってみた
  • はじめてのTest::More

    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

    kamipo
    kamipo 2009/06/09
    use_okはor exit(またはdie)してテスト全部終わらせたほうがよい
  • Catalyst::Helper::View::TTSite と TT の AutoWrapper

    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

    kamipo
    kamipo 2009/06/07
  • XML::LibXML で HTML の一部をパースする

    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

  • HTML::TemplateからTemplateToolkitへ

    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 =

    kamipo
    kamipo 2009/03/25
  • YAPC::Asia 2008 行ってきた、しゃべってきた。

    YAPC::Asia 2008 行ってきました。 そして今年はしゃべってきました。スライドはこちらです。 スピーカーとしてこういった会に参加するのは初めてでしたが、無難にこなせたと思います。はい。 今回は、いろんな偶然がつながりつながってこういう機会にめぐまれて、なんかいろいろなものに感謝しないとなぁと、ひとりしんみり感じている祭りのあとです。 最初に就職したのが偶然 Mobile な部署、その後今の Six Apart に転職。しばらくすると Mobile な開発にひと盛り上がりやってきて、miyagawa さんがつくった TypeCast をその後いじるようになり、そのまま今回のオープンソース化プロジェクトをまかされ、YAPC でスピーカーにもなり。。 なんかいろいろめぐりめぐって機会に、人に恵まれたなぁと。 TypeCast を作った miyagawa さんに感謝。 僕自身にこれを1

  • 1