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

fork & Parallel::ForkManager

fork 標準関数のfork()の使い方。 use strict; if (my $pid = fork()) { # parent print "here is parent proces.\n"; } elsif ($pid == 0) { # child sleep(3); print "child process ends.\n"; exit 0; } else { die "fork error: $!" } print "parent pro…

MySQL wait_timeoutの挙動

sql

アイドル状態(最後の実行から何もしていない)がN秒続くとMySQLが勝手に接続を切るらしい。 このN秒を設定するのがwait_timeoutである。 まず、デフォルト設定を確認してみる。 mysql -uroot -e'show variables' | egrep '(wait)'; -------- wait_timeout 2…

MySQL maxconnections

CentOSだと設定場所は/etc/my.cnf [mysqld] max_connections=100 perlからDBI使って、DBハンドル取得&SELECTした時にどういう挙動をするのか調べてみた。 実験に使ったプログラム。 #!/usr/bin/perl use strict; use DBI; use Parallel::ForkManager; #適当…

ワンライナー

10回ループ for i in {0..10}; do echo $i; done; 無限ループ while true; echo ''; done 定期的にSQLの接続数を調べる while true; do mysqladmin -u root extended-status | egrep '(Max|Threads_)'; echo ''; sleep 3; done 検索 "span"という文字列を含…

覚えたこと

vim

入力補完 インサートモードで、, で入力補完できる! ファイルタイプ指定 例えば.tを開くときに :set filetype=perl runtimepathを調べる :set runtimepath makeでsyntaxチェック :set compiler perl :make syntaxエラーの箇所に移動 :cn :cp QuickFixウィン…

ファイルの途中から読み込み

vim

vi +/pattern file でfileをpatternで検索するというオプション付で開くことができる

調べたことメモ

sql

unixtime⇔timestamp相互変換 select UNIX_TIMESTAMP('2008-11-06 10:10:10') select FROM_UNIXTIME(1225933810) timestampから年月抽出(199907が出力される) SELECT EXTRACT(YEAR_MONTH FROM "1999-07-02 01:02:03"); datetimeよりもintのほうが速い http:…

プレースホルダ

複数の値を列挙することができない。 具体的には以下のケース。 $ids = '1,2,3,4,5'; my $sth = $dbh->prepare(<<'SQL'); delete from tableA where id in (?) SQL $sth->execute($ids); 以下なら実行可能。 $ids = '1,2,3,4,5'; my $sth = $dbh->prepare(<<…

まとめてコメントアウト

vim

1.対象範囲をビジュアルモード(Ctrl+v)で選択。 2.大文字「I(アイ)」を入力 3.先頭に追加したい文字列を入力(Perlなら#) 4.Esc

時間系の関数

エポック(1970/1/1 00:00:00 UTC)からの秒数を返す time(); 現地時間からエポックタイムを返す(あくまでも1970/1/1 00:00:00 UTCからの秒数) use Time::Local; timelocal(0, 30, 17, 5, 10-1, 2009-1900); time関数が返す形式をローカル時間のリストに変…

調べたことメモ

nice スケジュール優先度を変更して与えられたcommandを実行する。 デフォルトの優先度は10。 nice [-n adjustment] [-adjustment] [--adjustment=adjustment] [command [arg...]]

FileBaseName

File::Basenameは標準モジュールで、basename関数でスクリプト名を取得可。 use strict; use File::Basename; use TmpKotaro; print "$0\n"; print basename($0)."\n"; print TmpKotaro::test()."\n"; 特殊変数$0にはあくまで実行しているスクリプト名が入る…

シングルクォートとダブルクォート

ダブルクォートは変数展開と逆スラッシュを解釈する。シングルクォートは文字として扱う。 my $test = 'This is test'; my $single = '$test\t'; my $double= "$test\t"; print $single; print $double; #出力. #$test\tThis is test

改行とリストコンテキスト

改行を含む文字列をリストコンテキストで代入すると、改行でスプリットされる。 my ($aaa, $bbb, $ccc) = "aaa\nbbb\nccc"; print $aaa; print $bbb; print $ccc; aaa bbb ccc が出力される。 my ($aaa, $bbb, $ccc) = split("\n", "aaa\nbbb\nccc"); と同等…

sprintfとhex

まずsprintfがprintと同じものかと誤解していた。 そうじゃなくてフォーマットした文字列を返してくれるのね。 16進数⇔10進数変換はこんな感じ。 print hex '1f', "\n"; print sprintf "%x", 31, "n";