Entries from 2008-11-01 to 1 month

このブログしか読んでない人はほとんどいないと思いますが

昨日の発表2題Kazuho@Cybozu Labs: ウェブサービスの SSD 化について話してきました Kazuho@Cybozu Labs: 開発しているウェブアプリケーションフレームワーク NanoA について話してきました全部で4つブログもってるのでよろしくお願いします。仕事のもの K…

re http://www004.upp.so-net.ne.jp/botchy/ssd.htm

これはすごい。おもしろいですね。ただ何点か疑問に思ったところがあります。 S.M.A.R.T. の値 故障の兆候がつかめなかったというのは、S.M.A.R.T. の値にも出ていなかったのでしょうか (それともそういう項目が Eee PC の SSD にはない?) 寿命予測と「空き…

re Q4MってMySQLのstorage engineじゃない方が使いやすいんじゃないか - 射撃しつつ前転 改

Q4M

言及ありがとうございます。おっしゃってるような、認証やファイル設定等に加え、以下のような理由もあります。 MySQL プロトコルは stateful かつ extensible なバイナリプロトコルとして最も普及 普及していれば、プログラミング言語ごとにライブラリを書…

LDR で Q4M が採用された件

Q4M

【ニコニコ動画】京都観光を終えて - malaありがとうございます m(__)m障害が発生するミドルウェアとかあり得ないので、バグを発見された方は遠方でもご一報いただければと思います。RSS データの先読みの排他処理に memcached でロックしてるの見て、それじ…

HASH(0x2b5990edd520)

HASH(0x2b5990ac9530) ネタですのでねんのため。

Class::Accessor::Lite 書いた

Class::Accessor::Fast が、 @ISA 変更しなくてもいいじゃん Class::Accessor に依存しなくてもいいじゃん (ロードが遅い) Object::Tiny が、 @ISA 変更しなくてもいいじゃん use 文でのアクセサ定義だと、CGI の中にコピペして動かないじゃん *1 ということ…

テンプレートエンジン作りたい

いちおうまとめておきます。先週末の NanoA のテンプレートエンジン - kazuhoのメモ置き場 は妥協の産物で、本当は、 なぜ、いちいちエスケープを手動で指定しなければいけないのか 文脈によって、自動的にエスケープ手法は決定できるはず と思ってます。言…

NanoA のテンプレートエンジン

NanoA のテンプレートエンジン (ということはつまり MENTA::Template) は、エスケープの有無を明示的に指定する方式なんだけど、めんどくさいなーと思った (TT よりマシだけど)。なので、確か Ruby on Rails がそうだったけかなとか思いながら、RawString 型…

メモリの消費電力

現在,4GバイトのDRAM DIMMは消費電力が10Wほど 「新しいNOR市場を創る」,米Spansionがサーバ向けメモリ拡張技術の詳細を発表 | 日経 xTECH(クロステック) ということなので、メモリ増設後のパストラックのサーバだと、 モジュール 電力消費 CPU 95Wx2=19…

DebugScreen におけるシグナルハンドラの正書法

11/21追記: id:tokuhirom がモジュール化してくれた CGI::ExceptionManager を使いましょうってことでよろしく (参照: http://d.hatena.ne.jp/tokuhirom/20081119/1227113506)$SIG{__DIE__} をオーバーライドしてきれいなデバッグ画面を出してあげることは W…

NanoA に MENTA をバンドルするようにした

MENTA と NanoA は別に競合してるわけじゃなくて、むしろお互いいい刺激になってるんじゃないかと思ってます。具体的に言うと、NanoA の強みは、従来の Perl フレームワークとは方向性の異なる要素を、たとえば PHP のいいところを導入したりとかそういうと…

NanoA でカウンタを書けるようにした

? load_plugin('counter') <h1>ぼくのほーむーぺーじ</h1> 現在の訪問者数は: 人です。 </html>こんな感じでかけます。とても簡単だね。 http://d.hatena.ne.jp/tokuhirom/20081117/1226922006 PHP インスパイヤな NanoA では、以下のように書けるようにしました。プラグイ…

よく使う自作ブックマークレット

javascript:resizeTo(800,600) - SXGA 程度の画面でどう見えるか確認 javascript:void(prompt(1,document.title)) - ページタイトルのコピー用 問題は、どちらも毎回手打ちしているところ。

そういえば CGI::Application::URIMapping

パストラック用に自作した CGI::Application::URIMapping が、1ファイル1コントローラーのディスパッチャ。各コントローラの先頭でマッピングを宣言すると、パッケージ名の basename を関数として呼び出す感じ。たとえば、MyApp::Users を register してお…

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 混在で、後者…