Entries from 2008-12-01 to 1 month

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…