2009-11-01から1ヶ月間の記事一覧

undefに注意

以下のテストコードではTRUEが出力される!!! if (my @tmp = undef) { print "TRUE\n"; } else { print "FALSE\n"; } サブルーチンでundef返すことがあるケースでは、wantarrayで呼び出し側のコンテキストを確認することが望ましそう。

シグナル

プロセス同士が互いに通信する手段の1つ。kill -lでリストできる。 kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM 1…

入門

変数 シェル変数 x=1 echo $x でつくれる。参照するときには$が必要。 特殊変数 $0: スクリプト名 $1-9: 引数 $#: 引数の数 $@: ""で囲み引数を他のコマンドに渡せる $$: 現在のプロセス 演算 数値比較演算 -eq -ne -gt -ge -lt -le 例) if [ $# -ge 1 ] th…

覚えたコマンド

カーソル移動 1文字進む 1文字戻る 行頭 行末 1文字削除 killコマンド kill [pid] # TERM(停止) kill -9 [pid] # KILL(強制終了) kill -l # SIGのリスト sortコマンド Kotaro Ito kotaro@mail.jp Aotaro Zto zotaro@mail.jp Botaro Yto yotaro@mail.jp Co…

シェル変数・環境変数

シェル変数 シェルおよびその内部コマンドで使うもの 環境変数 実行環境を設定するグローバル変数 シェルが起動した外部コマンド、ユーティリティ、スクリプトから参照可 bashではシェル変数をexportすると環境変数になる コマンド setでシェル変数・環境変…

memcachedのベンチマーク

MySQLから取得するのと、memcachedから取得するのとどっちが速くなるのかベンチマークしてみた。 テーブルスキーマ Create Table: CREATE TABLE `data` ( `id` int(10) unsigned NOT NULL, `user_id` int(10) unsigned NOT NULL, `post_date` int(10) unsign…

memcachedをcentos4にインストール

http://blog.veryposi.info/server/server-setup/centos-yum-rpmforge/ http://blog.veryposi.info/server/server-setup/centos-memcache-yum/ http://centossrv.com/rpmforge.shtml を参考にしてやってみる。記事がなくなってしまうかもしれないので、コマ…

h2xsとmake

単体テストをきちんとやりたい、と思って色々探していたらこんな記事を発見。 http://www.sixapart.jp/techtalk/2007/02/how_to_make_perl_module.html まずMakeFile関連をきちんと調べておく。 h2xs -X -a -n Foo::Bar::Baz を実行すると、カレントにFoo-Ba…

MySQLのロック/トランザクション機構メモ

sql

実践ハイパフォーマンスMySQL を読んで、基礎を学習中。備忘のためにメモ。 ロックとエンジン MySQLにはストレージエンジンがいくつかあるが、それぞれ使うロック方式が決まっている。 下にいくほど並行処理に強いが、その分だけ処理のオーバーヘッドが発生…

fetchrow時の使用メモリ

topコマンドで調べてもよく分からんので、http://www.drk7.jp/MT/archives/000803.htmlを参考にDevel::Size::Reportを使って調べてみる。上記サイトによれば SCALAR 型のデータは、Integer 型である場合、最小で16byte のメモリを必要とする。以後、32bit 単…

暗号化モジュール

そもそも暗号化に詳しくないので調べるところから。 http://x68000.q-e-d.net/~68user/net/crypt-1.htmlが入門にはわかりやすかった。 超ばっくり基礎知識 共通鍵方式 暗号化/復号化に同じ鍵を使う 通信に使う際は、鍵を共有する方法が問題になる アルゴリズ…

特殊変数$@と$!

$@はdie、$!はシステムコールのエラー eval {die "test";}; print "\$\@: $@\n"; eval { `not exists` }; print "\$!: $!\n"; $@: test at test.pl line 6. $!: No such file or directory

ディレクトリ

opendir, readdir, closedirを使う。 以下はカレントディレクトリの.logファイルをすべて探してくる例 opendir(THISDIR '.') or die "cannot open dir . $!"; my @allfiles = grep { /\.log$/ and -f } readdir THISDIR; closedir THISDIR;

時間関数

Time::Pieceが便利。 標準関数のlocaltimeをオーバーライドし、Time::Pieceオブジェクトを返してくれる。 後方互換なので標準関数的な書き方でもOK。例えば、その日の00:00:00のunix timeが欲しいときはこんな感じで。 use Time::Local; use Time::Piece; my…