地震と津波から1ヶ月とすこし

このブログに久しぶりに日記。
私pepponは岩手に住んでいて、今回の大震災で被災してしまいました。

今回家からなんとか取り出したのが、こいつら。 技術系はこれで終わり。 モダンPerl入門とかその他技術系書籍は回収できなかった。無念。 そのくせガラスの仮面とかはどろが付きながらも回収した。。


これはひどい」としかいいようがないす。 地震後避難して津波が来たというのは知っていましたが停電でよくわからずにいたのですが。実際に現地にいって何も言えなくなりました。 うちの屋根っぽい屋根が役場前にどどーんとありました。 この時点で何もかもあきらめてました。


と思ってたけど、なんと2階が残ってました。半分壊れてたけど。 うちの屋根から自衛隊さんが頑張って不明者やらを捜していました。
で、最初の画像の本を回収といったところです。 パソコンも奇跡的に回収。 がシンクパッドのアダプターないなど、あっても動かない状態がしばらく続きましたが、アダプターも後に回収。


家が元あった場所の様子。 もういみふ 何も言葉でない


危険だったけど奥さんと娘で家があったあたりにいってみた。
娘にヘルメット着用させる。 遊びたくて仕方ないようだけど、あぶないから駄目と言われてごねて地面に座り込んでる様子。



スーパームーンとやらの月。 スーパームーンなにそれ?は後で知った。

こんなありさまでした。 ま、体は不思議に元気です。 支援物資でむしろ太ってるかもな状態。

地震発生後からツイッターやら見てみましたが、すんごいこんでたのと、携帯のバッテリーが残し少ない+電波悪いのもあって、ほとんど活用できず。 次に繋げる間にタイムラインがすごい勢いで流れてて、何がなにやら。 被災地ではない人のツイートでほぼうめつくされあまり意味無し。 iphone? 田舎だとソフトバンク電波弱くてつかえねーすよ。 ipadもありましたけど電話もネットもだめなので当然活用できず。 結局知り合いとの連絡はメールのみでした。 ていうかメールでいいじゃん。 ソーシャルメディアは自分的にはほとんど使えず。 ただ後方支援的な意味では、被災地からすこし離れた所から被災地の状況を伝えるには良かったのかな? という感じなのでしょうか。

EOS KISS X4は車で持ち歩いていたのでばちばちとりまくりました。 が、あとでバッテリー充電器が水没してたことに気づきしばらくとれない状態が続いたり。 あとやはり防塵対策されてないからかな。 ファインダーのなかにちりが入りました。 ほこりまったりするこんな状況だとKISSは厳しいですかもですね。 CANONのCDも当然なくなったのでCANONにソフトダウンロードできるようにしてよと問い合わせて見るも駄目で、CD送るので買ってください、しかもいつ届くか分かりませんよと言われた。 この状況で送るとか無理だろとか。 さくらインターネット神対応とか。 企業によって対応がだいぶ違ったとか感じました。 

とりあえずこんな感じで。

CatalystなアプリをPlack + Router::Simple + DBIx::Skinny + Text::Xslateに置き換えた

あるサービスがアクセス多くてどうしようかなとか考えていたんですが、とりあえずCatalystから変えてみようかなと思い切ってやってみた。
ソースはありません。

最初は結構難儀したんだけど、もともと認証がいらない奴だったのでわりと簡単に。
ウェブには道しるべはたくさんあって、それらを参考になんとなたどり着いた。

Plack

ぐぐるとたくさん出てきます
うちのアプリに必要だったのはMiddleware::Sessionあたり

Router::Simple

http://search.cpan.org/dist/Router-Simple/
http://d.hatena.ne.jp/tokuhirom/20100319/1268995772
これは無くてもまあいいかなだけど使ってみた

Text::Xslate

http://search.cpan.org/dist/Text-Xslate/
http://search.cpan.org/dist/Text-Xslate-Bridge-TT2Like/
http://search.cpan.org/~gfuji/Text-Xslate-0.2012/lib/Text/Xslate/Syntax/TTerse.pm
ほぼTT2のまんまうごかせるので、簡単で高速です。
cache => 2で更新チェックしないと超高速もーど

DBIx::Skinny

DBIx::Skinny JPerl ADvent Calendar 2009
http://perl-users.jp/articles/advent-calendar/2009/dbix-skinny/
とりあえずこれよめばすぐに使えます・・が、group byとか世桑から菜kったのでsearch_by_sqlで生sqlでいいす
DBICとかむかつくところがたたあったので、これを機にすきにーしたい


いろいろと調べたり大変だった気がしますが、後からソース見るとたいした事ない気も。
よくわからない所はモジュールのテストコードみたり動かした


もともとめんどくさがりなのでCatalyst使ってたんだけど、実際にやってみると上記のモジュール使えばこれからもこれでいいなあという感じです。 結局めんどうで調べなくても使えるソースコードジェネレーター的なものをありがたがっていたのかなー 認証とかセッションとかキャプチャとかって一度書けば使い回しできるから別にWAFでなくてもいいかなあと CPUやメモリの速度が上がってるから、開発時間重視でって空気あったけど最近のシンプルでべんりなモジュールは速度も開発効率も両立できそうです。 5.8のcatalystとかもういいや的な感じです。 Text::XslateとDBIx::Skinnyに関しては環境をとわずあと数年は使い続けれそうな気がします。

さくらのVPS - Catalystでどのぐらい速度でるかなの巻

とりあえずの試用期間中です。

適当にCatalystインストール
とりあえず
catalyst.pl myapp
しただけです。


テストサーバ起動してabしてみる。
ab -n 100 -c 10 http://localhost:3000/

Requests per second:    179.31 [#/sec] (mean)
Time per request:       55.769 [ms] (mean)
Time per request:       5.577 [ms] (mean, across all concurrent requests)

とりあえずこれからはさくらのVPS 980を基準に考えてみようかなと思っているので上記のベンチマークぐらいを1さくらVPScatalystと呼ぶことにしてみて、自分の所と比較してみるといいのかなとか。

追記

上記を7800円の専用サーバで試してみると

Requests per second:    46.75 [#/sec] (mean)

となった、ディスク容量とメモリが使いたい以外は値段性能ともに上のVPSがいいですね。

さらに追記
VPSStarmanデフォルトのworkers 5で起動できるものの、3ぐらいに減らした方がabベンチマークでは値が良かった。 vmstat見る限りスワップ起きてないように見えるけど、なんらかのメモリ制限でロスが発生してるっぽい気がする。

Xslateでテンプレート大きいと困った件 ←修正されました

CatalystCatalyst::View::Xslateを利用しているとき、特定のページで表示できない場合があった。

特定のページは[% hoge %]を使っていないテンプレートで、サイズは47KB、Catalyst::View::TTを利用すると問題なくて、Catalyst::View::Xslateの場合表示できなくなる。

catalystテストサーバ起動時に表示されるデバッグログにも何も表示されずそのままな状態。

で、試しに問題のあるテンプレートをコピーして違う名前でアップロード、中身は同じの別名テンプレートで表示することにしてみた。

$c->stash->{template} = 'template/hoge/moge/mondaino.tt';
↓
$c->stash->{template} = 'template/hoge/moge/mondaino1.tt';

そしたら..問題なく動いた。。。。。?

Text::Xslateで試してみた。

use utf8;
use Text::Xslate;

my $tx = Text::Xslate->new(
    # the fillowing options are optional.
    path       => ['.'],
    cache_dir  => "/tmp/.xslate_cache",
    cache      => 1,
    syntax => 'TTerse',
    module => [
	'Text::Xslate::Bridge::TT2Like'
    ],
);

my %vars = (
);

# for files
print $tx->render('root/template/toppage.tt', \%vars);

1回目問題なく表示するも2回目でSegmentation fault
テンプレートを小さくしてみると2回目以降も問題なく表示された。
大きなテンプレートだと問題があるのかな?

http://hibari.2ch.net/test/read.cgi/php/1279999782/
IDにPerlが出たら神!PHPが出たらシメジ Part3
をテンプレートにしてみた。

テンプレートの中身を上記2chのソースをコピペしてテンプレートにしてみた。 ファイルサイズは32KB
1回目OKも2回目以降Segmentation fault
.ttcはキャッシュディレクトリに生成されている。
で、途中のレスをがんがん消して12KBまで落とすと、2回目以降も問題なく表示された。

環境はCentOS5.4、perl 5.8.8、Text::Xslateは$VERSION = '0.2008'

なんとなくうちだけの問題そうな気はする・・・ とりあえずは大きなテンプレート(1個だけだけど)はCatalyst::View::TTを使って動かしてる。 

※2010年10月6日
http://d.hatena.ne.jp/gfx/20101006/1286363284
対応していただいたようです。 本件は修正されていますので問題なく利用できます!

CatalystでXslateしてみた

cpanm Text::Xslate
cpanm Text::Xslate::Bridge::TT2Like
cpanm Catalyst::View::Xslate

MyApp::View::Xslate

package MyApp::View::Xslate;
use Moose;
extends 'Catalyst::View::Xslate';

has '+module' => (
    default => sub { [ 'Text::Xslate::Bridge::TT2Like' ] }
);

has '+template_extension' => (
    default => '.tt',
);

has '+cache_dir' => (
    default => '/tmp/MyApp/.xslate_cache',
);

has '+cache' => (
    default => '1',
);

has '+syntax' => (
    default => 'TTerse',
);

1;

MyApp::Controller::Root;

package MyApp::Controller::Root;
....
sub end : Private {
    my ( $self, $c ) = @_;
    $c->forward('MyApp::View::Xslate');
}

てな感じであっさりと動いた。 テンプレート側の変更は[% INCLUDE hogehoge.tt %]は[% INCLUDE "hogehoge.tt" %]とかぐらいでした。
1回目の表示はコンパイルされてないので遅い、2回目以降速くなる。

ベンチマーク

サーバはcatalyst_server

[% %]をほとんど使ってないページ
  • Template::Toolkit(Catalyst::View::TT)
    • Requests per second: 16.61 [#/sec] (mean)
  • Text::Xslate(Catalyst::View::Xslate)
    • Requests per second: 19.67 [#/sec] (mean)
FOREACH がたくさんあったりいろいろ複雑なページ
  • Template::Toolkit(Catalyst::View::TT)
    • Requests per second: 2.03 [#/sec] (mean)
  • Text::Xslate(Catalyst::View::Xslate)
    • Requests per second: 6.26 [#/sec] (mean)

おおおテラはやす! ってことでTTはもうさようならです。 今までありがとう!