2010-01-01から1年間の記事一覧

自分の最近のWebアプリケーション構成とか(規模別)

WAF

唐突に。 ものすごくざっくりですが現状は以下のような構成つかってます。 流行りかどうかはわかりません>< ちょっとしたWebアプリ(想定 ユーザ/10人くらい) Webサーバ Apache(CGI) DB SQLite WAF Mojolicious::Lite ORM DBIx::Skinny 最近だと簡易デプ…

JSTAPdを使ってJavaScriptのクロスブラウザテストしてみた(IE含)

YAPCにてYappoさんの「Ajax Application Testing」を聴き興味をそそられました。 今回はクロスブラウザでのテスト自動化を実現したかったのでその辺りも試してみました。 http://yappo.github.com/talks/20101016-yapcasia2010-jstapd/ インストール cpanm J…

YAPC::Asia 2010 1日目感想

YAPCきたー! 前夜祭は出れなかったんですが1/2日目は行けたので 自分が見たセッションの感想などをつらつらと書きます。*1 That Goes Without Saying (or Does It?) / Larry Wallさん ラリーさんですよラリーさん! ぴょんぴょんはねたり裏声になったり…

YAPC::Asia2010 2日目 感想

はい1日目に続いて2日目。 つらつらと書いていきます。 まずは今日買ったもの perl Tシャツ Acme大全2010 ラクダ本vol1(ラリーさんのサイン入り!やった!) nginx & Perl / fujiwaraさん ハイパフォーマンスHTTPサーバであるnginxの仕組み、 Lighttpdとの…

perldocの英単語

ふと、perldocではどんな英単語が多く使われてるのか、 ということを調べようと思った。 コードはこちら http://search.cpan.org/~shay/perl/pod/perl.pod ここから1階層だけ潜って単語集計するスクリプト。 http://gist.github.com/619373 すごく適当なの…

MojoのGETパラメータの件を最新バージョンで再ベンチ

前回の続き。 perlcodesamleさんがパフォーマンス改善のパッチを送っていただいたようですので、最新版で再度ベンチマークを取り直してみました。 ベンチマークスクリプト ベンチマークスクリプトは基本的に前回と同じ。 さらに、$self->req->params を一度…

MojoのGETパラメータの扱いでベンチに影響が出た件

※ 2010/9/26 追記 最新版とのベンチマーク比較 http://d.hatena.ne.jp/tori243/20100927/1285594260 ※ 2010/9/15 追記 Mojoはまだβ版で、現在は安定稼働を優先に開発が進められているそうです。 最適化フェーズはその後のようなので いずれはこのような問題…

Smart::Intervalというモジュールを書いてみた

Smart::Commentsを参考に簡易プロファイラみたいなのを書いてみた。 モジュールっぽいのは初めてかも。 Smart::Interval package Smart::Interval; use strict; use utf8; use Time::HiRes qw/gettimeofday tv_interval/; use Filter::Simple; use Clone qw(…

Webアプリケーションのデプロイ方法を考えたけどダメダメだった件

perlのWebアプリケーションをデプロイする方法を考えてましたが、 納得いく方法ができずに残念なことに。 サーバ構成 ①デプロイサーバ兼webサーバ ②デプロイ先webサーバ数台 やりたかった流れ WebサーバのOSとアーキテクチャが一緒であれば 複数サーバへのデ…

Mojo + DBIx::Skinny + Test::mysqld ことはじめ

※2010/8/21 モジュールを少し書き直した テストはやっぱり同じプロダクトでやったほうがいいよ!と助言頂きましたのでTest::mysqld使うことにしました。 自分のやり方はいろいろ遠回りしてる気もしますが、一応自分のやりたいことはできたのでメモメモ。 ち…

次に読むべきperl本を考え中

初めてのperl/続初めてのperl/モダンperl入門ときて、 次は何読もうかと考え中。 やっぱりラクダ本?2冊で1万円は考えてしまう…プログラミングPerl〈VOLUME1〉posted with amazlet at 10.08.21ラリー ウォール ジョン オーワント トム クリスチャンセン …

とてもくだらない悩み

どうでもいい話。 サブルーチンの引数の渡し方について、どうするのがいいかいつも悩む。 1.こうなのか hoge( $id, $name, $path, ); sub hoge { my ($id,$name,$path) = @_; ... } 2.こうなのか hoge( { id => $id, name => $name, path => $path, } );…

Mojolicious::Liteでnopasteを手直し

過去のpaste一覧が出るように直しただけ。 http://gist.github.com/513680 既に以前のバージョンで使ってても ALTER TABLE するだけで使えるようになるはず! ALTER TABLE entry ADD COLUMN title text; レン鯖に置いてみたよ! http://toritori0318.sakura.n…

モデル(API)のテスト

なんでそもそもこういうことをやろうとしたのかというと、モデル(API)をテストするときにテストデータベースをどうするか、というのを考えてたため。 いろいろ考えてみた結果、「DBMSを全部SQLiteに変換してローカルSQLite上にてロジックだけテストさせる…

異なるDBMS間のSQLを変換してくれるモジュール SQL::Translator

こういうの無かったらつくってみようかなーと思ったんですが、やっぱりありましたね。 テスト用で使ったsql文(oracle) CREATE TABLE EMP (EMPNO NUMBER(4) NOT NULL, ENAME VARCHAR2(10), JOB VARCHAR2(9), MGR NUMBER(4), HIREDATE DATE, SAL NUMBER(7, 2),…

ファイルの中身を変数に丸呑みする方法

いっっっっっっつも忘れてググるのでメモっとく。 open my $fh, "<", "file.txt"; my $data = do{ local $/; <$fh>}; close $fh; print $data; モジュール使えるなら Perl6::Slurp が楽ちん。 use Perl6::Slurp; my $data = slurp 'file.txt'; print $data;

Yokohama.pm#6 x PerlCasual#3 に参加してきました

前回のPerlCasualにも参加させていただきましたが、今回も行って参りました! 例によって走り書きのメモから感想など。 リソース監視ツール・フレームワークCloudForecastの紹介 kazeburoさん CloudForecastの特徴など。 分散処理、高速動作 大規模運用にも…

mojoliciousのデプロイ

会社でmojoliciousを使って開発したサービスがあるのですが、 リリースが近づいてきたのでデプロイをどうするか決めることに。 perlのWAF使ったデプロイをしたことがないので どの方法がいいか決めかねている。 そのためいろいろ試してみて問題なさそうなの…

数値をカンマ区切りにするベンチマーク

需要ないと思いますが、perlで数値を3桁毎にカンマ区切りフォーマットに変換する 正規表現のベンチマークです。*1 元ネタ http://www.din.or.jp/~ohzaki/perl.htm#NumberWithComma スクリプト #!/usr/bin/perl use strict; use warnings; use Math::BigInt;…

CentOS5 64bit版でmod_perlのmakeでエラー

perlbrewでインストールしたperlでapacheとmod_perlをソースビルドしようとしたら mod_perlのmakeでエラーが発生。 以下はその対応記録。 環境 os CentOS5.3 64bit perl 5.12.1 apache 2.2.15 mod_perl 2.0.4 エラー内容 libperl.a(op.o): relocation R_X86_…

perlbrewで全ユーザのperl環境を管理したい

ツイッターでつぶやいたらアドバイス頂いたので試してみた。 この方法でいいのかどうかは不安ですが一応手順をメモ。 要は、サーバ全体でのperlデフォルト環境をみんな一緒にしたかったということ。 /usr/bin/perl を直接変えちゃうのはいろいろ問題ありそう…

MojoでControllerのディレクトリを掘る設定

Mojoliciousはデフォルトでは lib/AppName/ 配下に置かれたファイルがコントローラになります。 でも数が増えてきたらディレクトリ作って管理したいですよね! そんなときはnamespaceを使うと実現できます。 では、以下のような構成にしたい場合の設定を見て…

Mojolicious::Liteでnopaste

※こっちが最新 http://d.hatena.ne.jp/tori243/20100808/1281248450 作ってみた。 MojoとDBIとsqliteがインストール済みなら daemonでもcgiでもコピペするだけで動くはず…! http://gist.github.com/463484 *1 てかほとんどyusukebeさんのコードコピペです。…

JSONとMojo::JSONのencodeベンチマーク

最近mojoliciousを触る機会が多いです。 でJSON使う要件が出てきて、render_jsonってのがあるけど何使ってんのかなーと追ってみたら Mojo::JSONというのモジュールで自前実装してるっぽい。 これそのまま使えばいいんじゃね?ということで いちおうベンチマ…

PerlフレームワークCatalyst完全入門 レビュー

PerlフレームワークCatalyst完全入門posted with amazlet at 10.06.20山田 祥寛 インプレスジャパン 売り上げランキング: 147465Amazon.co.jp で詳細を見る 目次はこちら http://www.amazon.co.jp/gp/product/toc/4844328654/ref=dp_toc?ie=UTF8&n=465392 初…

perl -d の便利オプション?

perl -d でデバッグプロンプト表示させたら最初に { v と入力してみましょう。 超見やすくなるよ! ちなみに戻すときは以下のコマンドでおk。 { *

TwitterAPI認証をOAuthに変えたら関係ないbotにつぶやいていた。しにたい

先週botをOAuth対応したんですが、 今日ふと気づいたらとあるbotのツイートに 全然関係ないbotのツイートが流れてた! 認証モジュール こんなのをbotごとに作ってる。 面倒なのでこれコピペしてキーだけ変えてる。 package Auth; use strict; use warnings; …

Mojoで大きいファイルをアップロードするとファイルが切れちゃう時の対応

Mojolicious::Liteで社内用簡易ファイルアップロードcgiを動かしてたんですが、 大きいサイズが途中で切れちゃってた。 調査してみると、どうもデフォルトでのメッセージサイズが設けられている様子。 環境変数MOJO_MAX_MESSAGE_SIZEを設定したら大きいファ…

Email::SenderでSMTPサーバから外部ドメインへメール送信できなかった件

http://gihyo.jp/dev/serial/01/modern-perl/0020?page=3 ※こちらの内容を元にしたコードを使っていると仮定 Email::Sender::Transport::SMTP を使って「外部ドメイン」へ送信したら… そのままだとエラーで送信出来なかった。 メールサーバ*1での設定でなん…

perlからSSH接続

Net::OpenSSH Net::SSHとかもありますが、 自分的にはこっちのほうが直感的に使えた。 依存モジュールも少なくてインストールも簡単! SYNOPSISのコピペ use Net::OpenSSH; my $ssh = Net::OpenSSH->new($host); $ssh->error and die "Couldn't establish SS…