Perl でつくった web サイトを L10N する方法 Perl でつくった web サイトを L10N する方法について簡単に説明します。今回は、日本語のサイトを英語でも表示できるようにするケースをあつかいますよ。今回は L10N の対象は Amon2 をつかったサイトとします。 基本的な翻訳機能は Locale::Maketext::Lexicon を利用します。これはなんだかんだで出来がいいのでいいとおもいます。他にもいろいろあるけど、これが一番実績もあるし安定しているようにおもいます。また、一時期はメンテが放棄されてましたが、最近またメンテされるようになったようです。 メッセージのマークアップ では、まず、Perl コード中の日本語のリソースを $c->loc(); でくくりましょう。 printf("ほげ\n"); みたいになってるところを printf($c->loc("ほ
Testing Web Application 2011秋 最近の僕のテスティングな日々についてまとめておきますよ。 【前提】 Perl でかかれたウェブアプリケーション自社開発のウェブアプリケーション一日に何度も deploy されるレベルフルテストを全員がうごかしているとはかぎらない
Released App::watcher on CPAN https://metacpan.org/module/watcher watcher --dir=./lib/ -- worker.plYou can restart job worker process by watching directory. YAY!
Ukigumo - Yet another continuous testing tool http://github.com/ukigumo/ なんか、お気軽につかえて、カスタマイズが容易で、お気楽な continuous testing を support する tool がほしかったので、ちょろっとかいた。 ターゲットは自社サービスの web アプリケーションです。 ベーシックなクラサバ構成となっています。サーバー側は簡単な Web UI と、RPC を提供しているだけで、ごくシンプルです。サーバー側とクライアント側には依存関係はありません。クライアント側はプラガブルな構成となっていて、誰でも簡単にいじれます。 クライアント側は Plagger 風にしようとおもったんですけど、Plagger 風にするといかんせんおおげさになりすぎるので、ライブラリとしての提供にとどめました。べろっと
ゆるふわ CI サーバー Ukigumo ちゃんのつかいかた、かいたよー Ukigumo はゆるふわであることを第一目標として設計されているので、適当にサーバーを設置していれば、プロジェクトの担当者がそれぞれすきなタイミングでつかえるようになります。 まあ、なんか気軽に設置して気軽につかえるやつがいまいまほしかったのでつくったというかんじです。 クライアント側とサーバー側は完全に分離しているんで、クライアント側は自分のすきな実装でできるし、サーバーの管理者の世話になる必要がまったくありません。その方が楽でしょうということで。というか俺は管理したくないので。いや、するけど、できるだけ最低限の手間でやりたいじゃん。セットアップも超簡単にできるようにしてあるというか、むしろ dotcloud とかにすぐに設置できるレベルですよ。 で、クライアント側はどうやってつかいはじめたらいいかということだけ
Amon2の利点 〜 軽量フレームワークAmon2入門 (1) 〜 というわけで、私が中心となり開発を進めているウェブアプリケーションフレームワークであるところのAmon2に関する連載企画です。続くかどうかはわかりませんけど! 対象読者はウェブアプリケーションの開発の基礎知識はあり、Perlプログラミングを一通り理解していることを前提としています。 Amon2とはAmon2は、ウェブアプリケーションフレームワークです。ウェブアプリケーションフレームワークというのは、ウェブアプリケーションを書くために楽をするためのライブラリと、それに関するツール一式のこととここでは定義しましょう。 そう、Amon2を使えば非常に楽に、高速に、ウェブアプリケーションを開発できてしまうのです。 なぜAmon2なのかしかしウェブアプリケーションフレームワークとひとくちにいっても、Perlだけでも、数え切れないほど
Fukuoka.pm #19 に参加してきました http://atnd.org/events/16157 JPAさんの支援をうけまして、dotcloud 的なかんじでウェブアプリをデプロイするための環境を構築する方法についての発表をしてみました。 当日の発表資料はこちらになります。 http://tokuhirom.github.com/talks/20110611-fukuokapm-dotcloud/#0 他の方の発表などは各種ブログをご覧いただくとして、僕が感じたことについて書いておきます。 Fukuoka.pm では、Shibuya.pm ではやらないワークショップなどもあって、形態がちがくて面白いなーとおもいました。 (というか perl-casual とかでワークショップとかやればいいとおもった) あと地方PM大集合みたいな企画もいいんだけど、出張Fukuoka.pmとかやっ
Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at
mysql をつかう際には DBD::mysql への依存を Makefile.PL にかけばすぐにつかえるようになる。create table するときに charset=utf8 を明示的に指定しないと latin1 になるので注意。 smtp の設定を各インスタンスにたいしておこなう場合、service の deploy 時にしか設定はおこなえないので、あとから設定しなおす場合には destroy+deploy するべしとのこと(miyagawaさんじょうほう) cron の設定は、postinstall script でおこなうのが簡単。まあ以下のようなかんじで処理している。 #!/bin/sh crontab - < crontab echo installed crontabcrontab ファイルの中身は以下のようにしている。PATH とかの指定は shell でつかっている
dotcloud で Amon2 をつかう! Perl5 の PSGI アプリケーションが死ぬほど簡単につかえる dotcloud の beta 版がリリースされ、一部の Perl monger に invitation がばらまかれているとともに、id:miyagawa さんがdotcloud に join したというニュースもあり、ゴールデンウィークまっただなかの日本の Perl Mongers のあいだでは空前のコンフィブームとなっています。 というわけで、DotCloud で hello world をやる方法。 sudo easy_install dotcloud dotcloud create tokuhirom dotcloud deploy --type perl tokuhirom.hello mkdir hello cd hello echo "sub {[ 200,
Perl のモジュールローダー選定委員会 モジュールローダがいくつもあってよくわからんという話が twitter にかいてあったので、俺の選定基準をまとめてみた。 候補 Module::Load perl 5.10+ で標準添付。癖もないので、基本的にはこれでいい。 UNIVERSAL::require $module->require() or die $@ ってかけるのが cool という話ではあるのだが、UNIVERSAL をつかうのに抵抗があるかもしれない。 そして、Module::Load にたいする優位性はとくにないので、最近はあまりつかってない。 Class::Load 上記2つにくらべると、機能がおおい。これは Moose から派生したパッケージで、Moose の is_class_loaded 相当の機能もそなえている。 Moose 由来ということで、%INC の中にはい
なんで Perl をつかいつづけるのか 互換性を大事にしているから バージョンアップしてもそのままうごくっていうのはすごくいいですね。バージョンアップするための作業に自分の時間をとられたくないですね。 そういった意味では Python はのりかえの選択肢になりますね。 正規表現リテラルがあるから 正規表現リテラルがない言語はいかんせんワンライナーとかでつかえないので、ワンライナー用の言語をもう一個おぼえておく必要がありますね。正規表現つかえるとやっぱり便利ですね。 やりたいことをやれるモジュールがたいがいあるから さっき node.js で SMTPTLS でメールをおくるスクリプトをつくろうとおもったら、SMTP TLS できるライブラリがみあたりませんでした。 ちょっとしたスクリプトをかこうとしたときに、すぐにライブラリがみつかるというのはやはり Perl は便利ですね。Perl だっ
古い perl を perlbrew で管理する perlbrew は本来、あたらしい perl をつかうことが主眼だが、古い perl でテストする目的にも使用することができる。 % perlbrew install perl-5.8.9 -D=usethreads -as perl-5.8.9-usethreadsのようにすると、オプションつけていろんな perl を生成することも簡単である。 perl5.6.2 や perl5.8.1 などはそのままではインストールできないが、そのような場合には、以下のように俺の repository からパッチ適用済のブランチを co してつかうと、とりあえず OK である。なんか git から直接インストールする仕組みもあるっぽかったけど、うまくつかいかたがわからなかったので力技。 git clone git://github.com/tokuh
DBIx::Inspector - introspection for DBI use DBIx::Inspector; my $dbh = DBI->connect(...) or die; my $inspector = DBIx::Inspector->new(dbh => $dbh); my @tables = $inspector->tables; for my $table (@tables) { print " pk:\n"; for my $pk ($table->primary_key) { print " ", $pk->name, "\n"; } print " columns:\n"; for my $column ($table->columns) { print " ", $column->name, "\n"; } } DBI supports introsp
Q4M + Parallel::Prefork + Signal handling + Log::Minimal conditions precedent: use daemontools & multilog Points: make DB connection after fork do not trap SIGTERM while calling queue_wait(), so that the process can be shut down while waiting for the response from q4m remove $time and add $PID for log. Because I'm using multilog. It prints the tai64n automatically(and, tai64n is better). package O
Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at
HTTP/1.1 における Keep-Alive と HEAD の関係性について HTTP/1.1 においては、HEAD リクエストの場合には Message Body を送信してはならないということにはなっているのですが、現実的には、Message Body をおくりかえしてくるアホなサーバーがおおい。たとえば Plack では Plack::Middleware::Head を明示的に使用していない場合、普通にやると HEAD でも message body をかえしてしまうだろう。 というわけで、HEAD で Message Body をかえしてくれるサーバーがおおいのだが、Message Body をかえされてしまうと、Keep-Alive しているときにこまる。次のリクエストとまじる。 この問題にたいするよい解決策はないので、HEAD リクエストを送信した後には connecti
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く
{{#tags}}- {{label}}
{{/tags}}