Entries from 2008-01-01 to 1 year

NanoA のセールスポイント

初心者や小規模アプリケーションむけ 1コントローラ1ファイル ディスパッチテーブルレス PHP のような、テンプレート中心のコーディングも可能 CGI での速度遅延が少ない 遅延ロードを駆使 テンプレートをコンパイルしてキャッシュ 実行時に必要なコントロ…

NanoA のデータディレクトリ

nanoa-conf.cgi で設定 *1 絶対パスあるいは相対パスが使用可能 相対パスの場合は .htaccess が必須 (かつ .htaccess が使用できること) .htaccess の使用可否は自動検出, なければ自動生成 という形にしました。かつ、初期値は相対パスの var なので、 多く…

CGI WAF むけの Model は何がいいのか (あるいは、Perl モジュールの依存関係を調べる方法)

META.yml だとテスト用の依存関係まで書いてあったりするので、実際の負荷を予測するための手段として use してるものを grep するワンライナー。 ところでモデルってなんですか? $ (a=`perldoc -l SQL::DB | perl -pe 's/\.pm$/*/'` ; cat `find $a | egre…

NanoA で掲示板作ってみた (と、NanoA の今後)

dmaki さんが dist 作れるようにしてくれたりとかいろいろ手をいれてくれて、だいぶ構造がきれいになりました。ありがとうございます。というわけで、何も機能がない掲示板作ってみました。http://kazuho.31tools.com/nanoa/nanoa.cgi/tinybbs/.pm ファイル…

NanoA のエラー画面が美麗な件

http://d.hatena.ne.jp/tokuhirom/20081113/1226592335コピペしたので NanoA のエラー画面も美麗です。ありがとうございます。実際のエラー画面

彼氏が CGI 使ってた。別れたい…

CGI だと勉強会で並ばれた時なんか恥ずかしいww 下向いちゃうしww ウェブプログラマにはせめて mod_perl 使って欲しい・・・ 参考: 彼氏が軽自動車に乗ってた。別れたい…ちなみに Japanize は CGI で動いてますよっと。

NanoA のデモサイト作った

http://kazuho.31tools.com/nanoa/nanoa.cgi

NanoB というウェブアプリケションフレームワーク書いた

MENTA (http://d.hatena.ne.jp/tokuhirom/20081112/1226460761) は事前コンパイル型だけど、キャッシュ方式でどこまでパフォーマンスが出るか。と同時に、CGI で最速 WAF を作ろうと思うと、コントローラ毎に index.cgi を生成するのが一番速いだろうという…

軽量ウェブフレームワークで大切な3つのこと

Perlの軽量ウェブアプリケーションフレームワーク最新事情 - とほほのN88-BASIC日記 関連で今日出た話。 index.cgi ではなく フレームワーク名.cgi にすべき DirectoryIndex を設定した .htaccess を一緒に配布すべき Japanize や AutoPagerize のような配布…

MyISAM と InnoDB の SELECT パフォーマンスの話

InnoDB は MVCC で遅そうだから読み込み主体の場合は MyISAM とか言うけど、そういう発想の人はそもそも MVCC 不要=複雑なクエリを書かない人なわけで、で、永続的なハッシュとしてしか MySQL を使わないようなケースでは、どのみちプロセス間通信がボトル…

NanoA を ASP 化 (PHP 化) した

Mojo::Template を使えるようにしました。たとえば、MyApp/mojo.mt というファイルを作って <html> <head> <title>hello world</title> </head> <body> Hello to <%= $app->query->param('user') || '' %>. </body> </html>とか書いて、index.cgi/mojo にアクセスすると、「Hello to 誰々」なんて表示されます。コン…

NanoA というウェブアプリケーションフレームワークをかいてみた

CGI というシーンにおける現状の Perl のウェブアプリケーションフレームワークの問題点とは 都度 perl のインタープリタインスタンスを起動するのでモジュールの読みこみ/コンパイルコストを無視できない bless の速度を無視できない といったあたりである…

Nanoa のアプリケーション開発手法

だいぶ楽になった。 % svn co http://svn.coderepos.org/share/lang/perl/NanoA/trunk nanoa % cd nanoa % mkdir myapp1 % cat > myapp1/start.pm package myapp1::start; use strict; use warnings; use base w(NanoA); sub run { my $self = shift; 'hello…

Linux のラージファイル (>2G) サポートではまった

O_LARGEFILE が必要なのかー。lseek64 とか普通に呼べるし気にしてなかった。というわけで、Q4M 0.8.3 以前は、32bit の linux 実行環境では 2GB 以上のデータを保存しようとすると落ちます。ごめんなさい。64bit 環境なら大丈夫。svn trunk のやつは、とり…

SSD を使ったデータベースサーバ構築とスワップ設定

O_DIRECT を使わない場合限定だけど。 HDD に swap 置いたらダメ。必ず SSD に配置 swappiness を低めに設定 あとから SSD を足す場合とか忘れそうな感じ。めんどくさがって HDD の swap を swapoff だけして運用してたらメモリ不足でログインすらできなくな…

Linux ってブロックデバイスごとにバッファキャッシュの割当を調整できるのかな

バッファキャッシュを置き換えちゃう優先度をブロックデバイス毎に変える、ってのでもいい。理由は以下のとおり。 ランダムアクセスの場合、HDD と SSD だと速度が10倍以上違ったりする Kazuho at Work: Benchmarking SSD for MySQL HDD と SSD 混在で、後者…

Tritonn に全文検索のアボート機能追加するパッチ書いた (暫定だけど)

全文検索中に KILL CONNECTION を有効にするパッチ (Tritonn-dev 126) - Tritonn - OSDN

ページフォルトの原因になっている関数を特定する方法

SSD のデータを mmap して、秒間数千回ページフォルトするようなケースで、コードのチューニングをしたい。ボトルネックを探したい。どうやればいいんだろ。Linux か Mac OS X (10.5) で。oprofile で見つけられるのかなー。やり方がわからない。dtrace だと…

iostat の値がすごい

これは楽しいわ。 % iostat -k 5 (snip) Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn sda 1.20 3.20 2.40 16 12 sdb 3032.40 1237.60 25558.40 6188 127792Tritonn へデータ追加中はこんな感じ。 avg-cpu: %user %nice %system %iowait %steal %idle 5…

SSD の NCQ まわりのテストをしようとしたら... orz

並走度を高めると NCQ まわりでパフォーマンスが改善するかテストしようと思った → ext2/3 は内部でロックがあるので xfs が必要 → CentOS 5.2 は xfs デフォルトで入らないっぽい → raw disk でパフォーマンス測定すればいいや → ベンチマーク → ベンチマー…

Intel SSD (X25-M) の S.M.A.R.T.

SSD Enhanced SMART ATA feature set Intel® X18-M/X25-M SATA Solid State Drive SMART attribute の 232 と 233 が SSD 関連かなぁ。ドキュメントがない >< $ sudo /usr/sbin/smartctl -d ata -a /dev/sdb smartctl version 5.36 [x86_64-redhat-linux-gnu…

memcached を SSD で動かす方法

Re memcachedのストレージにSSDを使うアイディア - sdyuki-develとりあえず、新たにサーバを開発しなくても、 SSD 全体をスワップに指定 memcached を CPU + SSDドライブ数 * 4 とかに指定 SSD の I/O ってどの程度多重化するといいんだろう (NCQ まわりとか…

linux でスワップを抑制する方法

Kazuho@Cybozu Labs: ウェブサービスにおける SSD 導入にむけて〜検索サービスの可能性 関連スワップをしないように設定 (swapoff) したとしても、実行コードと mmap されたデータはメモリの奪い合いをするのかな。そして swappiness=0 と設定すれば、実行コ…

memcached 座談会雑感

memcached座談会:連載|gihyo.jp … 技術評論社MacBook を修理に持ち込む途中で見てた。まだ第2回の途中までしか見てないけど感想。 mixi の設計がきれい ローカル memcache 導入より、複数台へのライブラリレイヤでの分散のがいいなぁ ウェブサーバ100台に…

運用中の自作 MySQL パッチ一覧 (含む Tritonn, Senna)

MySQL Lists: internals: Re: Const propagation within a non-const expression Kazuho at Work: Using O_DIRECT on Mac OS X Kazuho@Cybozu Labs: Tritonn (MySQL+Senna) の join を高速化 全文検索中に KILL CONNECTION を有効にするパッチ (Tritonn-dev …

DBD::mysql の mysql_auto_reconnect とトランザクションは併用すべきでない?

Setting mysql_auto_reconnect to on is not advised if 'lock tables' is used because if DBD::mysql reconnect to mysql all table locks will be lost. DBD::mysql - MySQL driver for the Perl5 Database Interface (DBI) - metacpan.org って書いてあ…

大容量メモリの確保の話

参照: http://d.hatena.ne.jp/ryocotan/20081006/p1, http://d.hatena.ne.jp/ryocotan/20081011/p1 Windows ってオーバーコミットしなかったような 一気に大量に malloc すると、swap が足りなくて失敗するんじゃないか*1 swap は適宜拡張されて行くのでちょ…

ログを表示しつつ統計を取る方法 (stderr に tee)

以前もやり方を忘れたのでメモ。/dev/fd/2 を tee の出力先に指定すればいい。 % ... | tee /dev/fd/2 | ./stats.plとか。

インターネットとオープンソースとエンドユーザー開発 : Kazuho Oku's Weblog (跡地)

ひさびさに個人ブログ更新→インターネットとオープンソースとエンドユーザー開発 : Kazuho Oku's Weblog (跡地)

linux サーバ上のメモリの ECC 訂正回数を確認する方法

メモリのエラー訂正はサーバでは必須だよという話もあるけど、じゃあ実際どのくらい訂正が発生しているのか。確認するには、/sys/devices/system/edac/mc/mc*/csrow*/edac_mode が S.?ECD.?ED になっていることを確認した上で /sys/devices/system/edac/mc/m…