Entries from 2008-01-01 to 1 year

MySQL+Java でサーバサイドプリペアードステートメントを使うべきで「ない」理由

useServerPrepStmtsのここの説明ではデフォルトがtrueになっているが、これは上述の通り嘘である。 (中略) そしてなぜfalseにされたかということの背景を察すると、trueにすることの弊害もありそうで、手放しでこれをtrueにすることを勧めることが少しはばか…

Percona が InnoDB をフォークしたらしい

Today we officially announce our new storage engine, “Percona XtraDB“, which is based on the InnoDB storage engine. Announcing Percona XtraDB Storage Engine: a Drop-in Replacement for Standard InnoDB - Percona Database Performance Blog ま…

クラウドコンピューティングの需要を予測する

クラウドを必要としてるコンピュータなんて「世界で5台」だけです。重要なことなので2回言います。クラウドを必要としてるコンピュータなんて「世界で5台」だけです。クラウドって言葉が、技術タームというより、ソフトウェアからサービスへ移行する流れ…

Text::MicroTemplate 版 String::TT をどう作るか

とりあえず、現状は my $user = 'John'; my $html = eval as_html('Hello, ') or die $@;という方式だけど、エラー処理をユーザーが書かなきゃいけない (しかも上のコードだと警告が見えない) のが問題*1。じゃあ String::TT みたく PadWalker を使うのか、…

SSD とストレージの将来

SQL に痛痒感を感じる日々を過ごしている身としては、RDBMS がレガシーだというのは、まったく同感ですが。 SSDを前提にしたプログラムモデルになれば、そもそもシーク時間と戦うこともなく、ストレージを意識せずにプログラムが組めます。そうなったとき、…

hostname の設定

コンパネからではできないのかな。/etc/sysconfig/network は再起同時に上書きされるので、rc.d で設定。S10network の直後にしとけば、タイミング的にいいんだろうか。 # cat > /etc/init.d/hostname #! /bin/sh case "$1" in start) hostname cpi.kazuhook…

OpenVZ 系の VM の二重苦

スワップがなく、かつ、overcommit が効かないので、いろいろ動かない。apache 2 系の worker mpm とか標準設定だと起動時に 500MB1.5GB 確保するので *1 当然起動すらしない。もう LD_PRELOAD で malloc を MAP_SHARED な mmap(2) にマップする共有ライブラ…

MySQL の filesort プチテクニック

MySQL のチューニング関連のドキュメントを読んでいると「ORDER BY を避けろ」と書いてあるけど、できない (or したくない) 場合もあるわけで。そういう時はソート用の表と表示用の表を分割し自己結合することで、高速化できることもあります。適当な例です…

NanoA を mod_perl で使用する方法

svn 版を適当な公開ディレクトリに展開 以下のような感じで httpd.conf と startup.pl を記述 (パスは適当に書き換えてください) ウマー httpd.conf Alias /nanoa /Users/kazuho/dev/NanoA RedirectMatch permanent ^/nanoa/$ /nanoa/nanoa.pl PerlRequire /…

SDBM_File のサイズ制限

There are a number of limits on the size of the data that you can store in the SDBM file. The most important is that the length of a key, plus the length of its associated value, may not exceed 1008 bytes. SDBM_File - Tied access to sdbm f…

CPI VPS の iptables

-m state が使えない なので、Parallels Power Panel の標準だとハイナンバーポートは通すとかそういう設定になってるけど好みじゃない なので以下のような感じで。FTP とか考えなければ OK。 *filter :INPUT DROP [5:440] :FORWARD DROP [0:0] :OUTPUT ACCE…

CPI VPS ことはじめ

CPI VPS、振込翌日には使えるようになってた。CPI++ディスクの使用量が初期状態で数十MBってのがいいなぁ、と思った。某 VPS だと半分くらい既に埋まってるみたいな感じだったので。

NanoA の管理用機能

NanoA に標準で管理者ログイン機能をつけました。 インストール直後、初回アクセス時に管理用パスワードの入力を求められます 管理権限が必要な機能を実装する場合は、Admin プラグイン を使用すれば、設定とか気にする必要はありません パスワードを忘れた…

NanoA の View-Controller 実装

簡潔な View-Controller モデル コンテナ指向 遅延ロードによる高速動作 てのが NanoA の特徴だと思うけど、View-Controller モデルの話。要点として、 PATH_INFO の利用による、ディスパッチテーブルレス設計 View と Controller が可換 てのは Shibuya.pm …

HTML::AutoForm (フォームビルダー&バリデータの話)

NanoA 用に作ったフォームビルダー&バリデータを HTML::AutoForm (svn link) として独立させました。フォームを定義したり my $form = HTML::AutoForm->new( fields => [ username => { type => 'text', required => 1, min_length => 6, max_length => 8, …

OpenID 認証に対応しました

例: 掲示板のサンプルコード的には、 use plugin::openid; # プラグインをロード sub run { ... my $user = $app->openid_user or $app->redirect($app->openid_login_uri('https://mixi.jp/openid_server.pl')); ...のように、3行ばかり書くだけで、OpenID…

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

昨日の発表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 してお…