まだ重たいCMSをお使いですか?
毎秒1000リクエスト を捌く超高速CMS「adiary」
毎秒1000リクエスト を捌く超高速CMS「adiary」
2010/01/30(土)JavaScriptでオブジェクト指向なメモ
適当に追記します。
雑多なおさらい
- JavaScriptのクラスの概念はないらしい。
- プリミティブな数字や文字列など意外は、すべてオブジェクトであり参照。
- 参照なので代入した側でメンバ変数をいじると、代入元も書き換わる。
- 関数を変数に代入できる。
var f = function (x){ alert(x); } f("msg"); // "msg"と表示される
Perl5のオブジェクトに似たところがありますが、クラス名前空間(パッケージ)を持たないため、Perl5よりも簡素な実装と言えそうです。
2010/01/27(水)PostgreSQL関連メモ
あとで適当に追記。
共有メモリ設定
共有メモリの確認
# ipcs -m # cat /proc/sys/kernel/shmmax
共有メモリの変更
1G # echo 1099511627776 >/proc/sys/kernel/shmmax 1.5G # echo 1649267441664 >/proc/sys/kernel/shmmax
起動時に設定するには。
# /etc/sysctl.conf kernel.shmmax = 1649267441664
制約やカラムの操作
Ver8.3で確認。テーブル名、カラム名が変更されていても作成時のものとなるので注意。
制約の種類 | 制約名 |
---|---|
PRIMARY KEY | [table]_pkey |
UNIQUE | [table]_[col]_key |
REFERENCES | [table]_[col]_fkey |
ALTER TABLE table ADD CONSTRAINT table_[col]_fkey FOREIGN KEY ([col]) REFERENCES usr([ref_col]); ALTER TABLE table DROP CONSTRAINT table_[col]_key;
目的 | SQL |
---|---|
NOT NULLを付ける | ALTER TABLE table ALTER COLUMN [col] SET NOT NULL |
NOT NULLを外す | ALTER TABLE table ALTER COLUMN [col] DROP NOT NULL |
DEFAULTを付ける | ALTER TABLE table ALTER COLUMN [col] SET DEFAULT [value] |
DEFAULTを外す | ALTER TABLE table ALTER COLUMN [col] DROP DEFAULT |
カラム名を変える | ALTER TABLE table RENAME [old_col] TO [new_col] |
テーブル名を変える | ALTER TABLE table RENAME TO table2 |
2010/01/09(土)Perl/UTF8, 日本語「全角」→「半角」変換ルーチン
よくネットショップ等で買い物をすると
郵便番号は半角で入力してください。
とか言われてウザくないですか? こういうのを解消するためのルーチンです。
条件
- Perl 5.8以降
- 利用可能文字列はutf-8のみ(そうでない場合はutf8に変換して渡してください)
- WTFPL(PDS扱いでも可)。
ソースは必ずutf-8で保存してください。
日本語に混ざる全角英数等を半角にする
use utf8; use Encode (); sub utf8_zen2han { my $str = shift; my $flag = utf8::is_utf8($str); Encode::_utf8_on($str); $str =~ tr/ !”#$%&’()*+,-./0-9:;<=>?@A-Z[¥]^_`a-z{|}/ -}/; if (!$flag) { Encode::_utf8_off($str); } return $str; }
実行例。
(変換前)abcdefgさささ110-2244あいう##$” (変換後)abcdefgさささ110-2244あいう##$"
半角カタカナを全角カタカナにする
use utf8; use Encode (); my %hankana_map = ( 'ガ'=>'ガ','ギ'=>'ギ','グ'=>'グ','ゲ'=>'ゲ','ゴ'=>'ゴ', 'ザ'=>'ザ','ジ'=>'ジ','ズ'=>'ズ','ゼ'=>'ゼ','ゾ'=>'ゾ', 'ダ'=>'ダ','ヂ'=>'ヂ','ヅ'=>'ヅ','デ'=>'デ','ド'=>'ド', 'バ'=>'バ','ビ'=>'ビ','ブ'=>'ブ','ベ'=>'ベ','ボ'=>'ボ', 'パ'=>'パ','ピ'=>'ピ','プ'=>'プ','ペ'=>'ペ','ポ'=>'ポ', 'ヴ'=>'ヴ'); sub utf8_hankana2zen { my $str = shift; my $flag = utf8::is_utf8($$str); Encode::_utf8_on($$str); $str =~ s/(ガ|ギ|グ|ゲ|ゴ|ザ|ジ|ズ|ゼ|ゾ|ダ|ヂ|ヅ|デ|ド|バ|ビ|ブ|ベ|ボ|パ|ピ|プ|ペ|ポ|ヴ)/$hankana_map{$1}/g; $str =~ tr/。-゚/。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゛゜/; if (!$flag) { Encode::_utf8_off($str); } return $str; }
Encode::JP::H2Z
今更使いませんが、EUC-JPの場合は標準モジュールでもできます。逆変換は Encode::JP::H2Z::z2h()。
use Encode (); use Encode::JP::H2Z (); sub eucjp_hankana2zen { my $str = shift; Encode::JP::H2Z::h2z(\$str); return $str; }
その他
バグ等あったらコメントください。