Perl でつくった web サイトを L10N する方法について簡単に説明します。今回は、日本語のサイトを英語でも表示できるようにするケースをあつかいますよ。今回は L10N の対象は Amon2 をつかったサイトとします。 基本的な翻訳機能は Locale::Maketext::Lexicon を利用します。これはなんだかんだで出来がいいのでいいとおもいます。他にもいろいろあるけど、これが一番実績もあるし安定しているようにおもいます。また、一時期はメンテが放棄されてましたが、最近またメンテされるようになったようです。 メッセージのマークアップでは、まず、Perl コード中の日本語のリソースを $c->loc(); でくくりましょう。 printf("ほげ\n"); みたいになってるところを printf($c->loc("ほげ\n")); みたいにするってことです。 つぎにテンプレート
とにかく楽に、お気軽に。お気軽にテストを追加できて、お気軽にテストを実行できる。というのがなによりも重要です。 追加しようとおもったときに「どう追加したらいいかわからない」という状況になりがちなので、あらかじめいろいろな構成要素ごとにテストをひととおりかいてみるというのも重要だとおもいます。O/R Mapper のクラスのテストとか、model のテストとか、コントローラのテストとか、JSON API のテストとか。。 ExtUtils::MakeMaker でテストをうごかさないExtUtils::MakeMaker を素でつかうと blib/ とかつかってきてうざいので、Makefile.PL に以下のような hack をほどこしてあります。ウェブアプリケーションで blib/ とかにコピーする必要ないですよね。実運用でも blib/ でうごかさないし、インストールもしませんし。 #
https://metacpan.org/module/watcher watcher --dir=./lib/ -- worker.plYou can restart job worker process by watching directory. YAY!
http://github.com/ukigumo/ なんか、お気軽につかえて、カスタマイズが容易で、お気楽な continuous testing を support する tool がほしかったので、ちょろっとかいた。 ターゲットは自社サービスの web アプリケーションです。 ベーシックなクラサバ構成となっています。サーバー側は簡単な Web UI と、RPC を提供しているだけで、ごくシンプルです。サーバー側とクライアント側には依存関係はありません。クライアント側はプラガブルな構成となっていて、誰でも簡単にいじれます。 クライアント側は Plagger 風にしようとおもったんですけど、Plagger 風にするといかんせんおおげさになりすぎるので、ライブラリとしての提供にとどめました。べろっとよんだら普通に理解できます。コードをシンプルにするために忌み嫌われがちな Mouse を採用
Ukigumo はゆるふわであることを第一目標として設計されているので、適当にサーバーを設置していれば、プロジェクトの担当者がそれぞれすきなタイミングでつかえるようになります。 まあ、なんか気軽に設置して気軽につかえるやつがいまいまほしかったのでつくったというかんじです。 クライアント側とサーバー側は完全に分離しているんで、クライアント側は自分のすきな実装でできるし、サーバーの管理者の世話になる必要がまったくありません。その方が楽でしょうということで。というか俺は管理したくないので。いや、するけど、できるだけ最低限の手間でやりたいじゃん。セットアップも超簡単にできるようにしてあるというか、むしろ dotcloud とかにすぐに設置できるレベルですよ。 で、クライアント側はどうやってつかいはじめたらいいかということだけども、非常に簡単で、以下のように一個 HTTP Request をおくるだ
Amon2の利点 〜 軽量フレームワークAmon2入門 (1) 〜 というわけで、私が中心となり開発を進めているウェブアプリケーションフレームワークであるところのAmon2に関する連載企画です。続くかどうかはわかりませんけど! 対象読者はウェブアプリケーションの開発の基礎知識はあり、Perlプログラミングを一通り理解していることを前提としています。 Amon2とはAmon2は、ウェブアプリケーションフレームワークです。ウェブアプリケーションフレームワークというのは、ウェブアプリケーションを書くために楽をするためのライブラリと、それに関するツール一式のこととここでは定義しましょう。 そう、Amon2を使えば非常に楽に、高速に、ウェブアプリケーションを開発できてしまうのです。 なぜAmon2なのかしかしウェブアプリケーションフレームワークとひとくちにいっても、Perlだけでも、数え切れないほど
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 でつかっている
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, [ 'Content-Type' => 'te
UNIVERSAL::require$module->require() or die $@ ってかけるのが cool という話ではあるのだが、UNIVERSAL をつかうのに抵抗があるかもしれない。 そして、Module::Load にたいする優位性はとくにないので、最近はあまりつかってない。 Class::Load上記2つにくらべると、機能がおおい。これは Moose から派生したパッケージで、Moose の is_class_loaded 相当の機能もそなえている。 Moose 由来ということで、%INC の中にはいっていなくても、package がすでにつかわれていれば、ファイルをよみにいかないという点がすぐれている。具体的には package Foo; sub bar { } package main; use Class::Load qw/load_class/; load_c
互換性を大事にしているからバージョンアップしてもそのままうごくっていうのはすごくいいですね。バージョンアップするための作業に自分の時間をとられたくないですね。 そういった意味では Python はのりかえの選択肢になりますね。 正規表現リテラルがあるから正規表現リテラルがない言語はいかんせんワンライナーとかでつかえないので、ワンライナー用の言語をもう一個おぼえておく必要がありますね。正規表現つかえるとやっぱり便利ですね。 やりたいことをやれるモジュールがたいがいあるからさっき node.js で SMTPTLS でメールをおくるスクリプトをつくろうとおもったら、SMTP TLS できるライブラリがみあたりませんでした。 ちょっとしたスクリプトをかこうとしたときに、すぐにライブラリがみつかるというのはやはり Perl は便利ですね。Perl だったら Email::Send::SMTP::T
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/tokuhirom/perl.git cd perl git
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 introspection, but it is a too generic and funct
conditions precedent: use daemontools & multilogPoints: make DB connection after forkdo not trap SIGTERM while calling queue_wait(), so that the process can be shut down while waiting for the response from q4mremove $time and add $PID for log. Because I'm using multilog. It prints the tai64n automatically(and, tai64n is better).package OreOre::Worker::Base; use strict; use warnings; use parent qw/
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 においては、HEAD リクエストの場合には Message Body を送信してはならないということにはなっているのですが、現実的には、Message Body をおくりかえしてくるアホなサーバーがおおい。たとえば Plack では Plack::Middleware::Head を明示的に使用していない場合、普通にやると HEAD でも message body をかえしてしまうだろう。 というわけで、HEAD で Message Body をかえしてくれるサーバーがおおいのだが、Message Body をかえされてしまうと、Keep-Alive しているときにこまる。次のリクエストとまじる。 この問題にたいするよい解決策はないので、HEAD リクエストを送信した後には connection を close してしまうのが、現実的な解決策だとおもった。 現実的には、現
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く
{{#tags}}- {{label}}
{{/tags}}