ncでディレクトリを転送する

scpでは暗号化なしでもCPUがボトルネックになってしまうため、tarとnc(netcat)を組み合わせてディレクトリを高速に転送する。※ncは転送の途中でコネクションが閉じられてもエラーを返さないので注意 # 転送先 nc -l -p PORT | tar xf -# 転送元 tar cfO - DI…

sshのWarning: Permanently added ...を表示させない方法

SSHでホスト鍵が変わっていても無視する方法 - atsumu-t2の日記を使っていると、シェルスクリプトから複数回sshを実行するとき、毎回Warningが表示されて出力が読みにくくなる。それを防ぐ方法。 ssh host "echo hoge" 2> >(grep -v '^Warning: Permanently …

D2D/DW PuTTYでboldの代わりに色を変えるオプションが効かないのを直す

window.cppの7175行目あたりを1行書き換えるだけ。書き換え前 int weight = (attr & ATTR_BOLD) ? FF_BOLD : FF_NORMAL;書き換え後 int weight = bold_font_mode && (attr & ATTR_BOLD) ? FF_BOLD : FF_NORMAL;

MongoDBでObjectId(プライマリキー)だけを使って時刻指定検索する

MongoIdの上位4バイトにはドキュメント挿入時刻がunix timeで格納されているので、例えばPHPの場合このようにして時間を範囲指定できる。 $condition["_id"] = = array( '$gte' => new MongoId(sprintf("%08x%016x", time() - 60, 0)), '$lt' => new MongoId…

PHPのfread関数は、第2引数で指定した分だけメモリを消費する

php

PHPのfread関数は、第2引数で指定した大きさのバッファを確保してそのまま返すらしい。実際に読み込んだバイト数が小さかったとしても、返された値をそのまま配列に入れてると、すぐにメモリが足りなくなる。 $ echo hoge | php -r ' $a = memory_get_usage(…

sshfsをfstabでマウントする

こんな感じにマウントできるって教えてもらいました。 sshfs#root@10.232.139.234:/mnt/files /var/www/remote_files fuse allow_other,IdentityFile=/path/to/my_ssh_keyfile,ServerAliveInterval=60 0 0( http://www.saltycrane.com/blog/2010/04/notes-ss…

システムにlibaioをインストールせずにMySQL::Sandboxでmysql5.5を使う

先にlibaioを置いておく。(debian) mkdir libaio-dev cd libaio-dev apt-get source libaio-dev tar zxf libaio_0.3.107.orig.tar.gz gzip -d libaio_0.3.107-7.diff.gz cd libaio-0.3.107 patch -p1 < ../libaio_0.3.107-7.diff make prefix=$HOME/opt/liba…

compact()を使って変数名付きのデバッグ出力を手軽に

php

PHPでデバッグ出力をいくつも表示するとき、どの値がどの変数のものなのかわかるように、こんなふうに書く。(よね?) var_export(array("long_var_name1" => $long_var_name1, ...)); ここでcompact()を使うと、 var_export(compact("long_var_name1", ...…

ssh先のホスト名をscreenのウィンドウ名にする設定

.ssh/configで設定できる。 Host hoge PermitLocalCommand yes LocalCommand tty -s && [ x$TERM = "xscreen" ] && echo -ne "\ek"%n"\e\\" >`tty`これだけではログアウトしたときウィンドウ名が元に戻らないので、.bashrcなどにこの設定を追加する。 if [ x…

fluentdのin_tailプラグインでjsonを読む

in_tailプラグインでformatにjsonを指定すると、jsonをそのまま(文字列にせずに)読める。このように設定しておいて <source> type tail path /tmp/error.log pos_file /tmp/error.log.pos tag debug.error format json </source> <match debug.**> type stdout </match>ログファイルにjsonを書き込ん…

fluent-agent-liteでタグにホスト名を使う

/etc/fluent-agent-lite.conf の LOGS=$(cat <<"EOF" ... EOF )を LOGS=$(cat <

fluentdでunix domain socketを使う

fluentdでunix domain socketを使うには、設定ファイルに下記を追加する。 <source> type unix </source>UNIXドメインソケットのパスは環境変数 FLUENT_SOCKET で指定する。 指定しなければ /var/run/fluent/fluent.sock に作られる。 env FLUENT_SOCKET=sock/fluent.sock flu…

Luaをタイムアウト付きで実行する

環境 Lua 5.1.4 LuaJIT 2.0.0-beta9 動機 MySQLのUDFの中でLuaを実行したい。 このとき、無限ループするようなコードを実行すると、killクエリを投げても止まらないスレッドになってしまい、mysqldをkill -9するしかなくなる。 そのため、無限ループしてても…

LuaJITのメモリアロケータを入れ替える(気をつけないとメモリリークする)

環境 Lua 5.1.4 LuaJIT 2.0.0-beta9 動機 MySQLのUDFの中でLuaを実行したい。 問題は2つ。 1コネクションにつきLuaインスタンスを1つ作るので、max_connectionsで設定した数だけLuaインスタンスが同時に立ち上がる可能性がある。 1つメモリを食いつぶすクエ…

mobile safariのcanvasの解像度を上げる

viewportでinitial-scale=1を指定すると、mobile safariの横幅は320pxとして扱われる。 しかし、iphone4以降では画面が横640pxあるので、自動的にページが2倍に拡大される。 このとき、文字などの解像度は2倍になるのに、canvas要素の解像度は1倍のままなの…

cofsでマウントしたディレクトリ内でgitがうまく動かないとき

例えば、cofsでマウントしたディレクトリ内でgit addすろと、こんなエラーメッセージが出る。 $ git add foo error: file write error (Operation not permitted) fatal: unable to write sha1 file.gitの下にリードオンリーのファイルが作られるとき、(cof…

SSHでホスト鍵が変わっていても無視する方法

StrictHostKeyChecking noを指定すると、新しいホストに初めてつないだとき、known_hostsに自動登録されるようになる。(デフォルト値はask)これだけだと、known_hostsにすでに登録されているホストの鍵が変わったとき(OSが再インストールされたとか)、再接…

capistranoで繋がらないホストを無視する方法

capistranoで、下のように:on_error => :continueを指定すれば、繋がらないホストがあっても無視してくれる。 namespace :test do desc 'uptime' task :uptime, :roles => [:test_roles], :on_error => :continue do run "uptime" end end

on duplicate key update の変な使い方

例えば、こんなテーブルがあったとして、 CREATE TABLE hoge ( a INT NOT NULL AUTO_INCREMENT, b INT NOT NULL, PRIMARY KEY (a), UNIQUE KEY (b), ) こんなデータがすでに入ってるとき、 a b 1 10 2 20 3 30 4 40 : : UPDATE hoge SET b = 12 WHERE b = 10…

muninのグラフ一覧ページに月間や年間のグラフも表示する

ubuntuでmunin 1.4.4なら、 /etc/munin/templates/munin-nodeview.tmpl の <td><a href="<TMPL_VAR NAME="URLX">"><img <TMPL_IF NAME="STATE_WARNING"> class="warn"</TMPL_IF> <TMPL_IF NAME="STATE_CRITICAL">class="crit"</TMPL_IF> src="<TMPL_VAR NAME="IMGWEEK">" alt="<TMPL_VAR ESCAPE="HTML" NAME="NAME">" </tmpl_var></tmpl_var>

gnu screenで端末のサイズを自由に変更できるように

.screenrcに termcapinfo xterm "WS=\E[8;%d;%dt" termcapinfo xterm "li#63:co#100" を追加。(xtermのところは自分の端末に合わせて変える)'termcapinfo xterm "WS=\E[8;%d;%dt"' を指定すると、端末を好きなサイズに変更できるようになる。 これだけだと…

gnu screenを使ってると特定のキーの反応が悪くなるのを回避

.screenrcに、 maptimeout 0 を追加。(単位はmsでデフォルト値は300)エディタでESC-Oとかがまともに反応するようになる。 ついでに、(副作用で)bashとかでreverse-i-searchを抜けるとき、ESCを押した直後から普通にキー入力できるようになる。

arrayをarray[*][b][c]の値でソート

php

'; $f = create_function('$x, $y', "return \$x$r $c \$y$r ? -1 : (\$x$r == \$y$r ? 0 : 1);"); return uasort($a, $f); } 使い方 array(i => …

コマンドの出力結果を一時的なファイルのように扱う

()を使えばいいらしい。 $ echo <(echo hoge) /dev/fd/63 $ cat <(echo hoge) hoge 無駄にパイプ代わりに使ってみる。 $ cp <(seq 1 30) >(grep 0) 10 20 30 プロセス置換って言うらしい。

直前のコマンドが失敗したらナンテコッタイを表示

直前のコマンドが成功したらオワタ、失敗したらナンテコッタイを表示する。 バックスラッシュの代わりに円記号が表示される環境なら、全角文字を使う。 # .bashrc function ps_ex_st { if [ $? -eq 0 ]; then echo "\\(^o^)/" else echo "/(^o^)\\" fi } PS1…

bash_completionで補完時に~が展開されるのを防ぐ

/etc/bash_completionの_expand関数が~の展開を担当してるので、bash_completion読み込み後にこの関数を上書きすればいい。 # .bashrc if [ -f /etc/bash_completion ]; then . /etc/bash_completion _expand() { : } fi 参考: http://okap-plog.blogspot.co…

MySQLの全文検索(fulltext index)のメモ

日本語関連 ft_min_word_len(文字数がこの数値以上の単語のみ検索対象に含まれるという設定値)の文字数は、日本語の1文字でも1文字として扱われる。バイト数ではない。 なので、ちゃんとエンコーディングが考慮されてるはずで、普通の文字の一部が区切り文…

Windows(VC)でCAS命令とか

Interlocked*がCAS命令らしい。参考 http://msdn.microsoft.com/ja-jp/library/cc429023.aspx http://msdn.microsoft.com/ja-jp/library/hd9bdb82(VS.80).aspx http://msdn.microsoft.com/ja-jp/library/26td21ds(VS.80).aspx

さくらインターネットでコマンドラインからmysqlを使う時の引数

さくらインターネットでコマンドラインからmysqlを使う時は、 % mysql -hmysql<num>.db.sakura.ne.jp -p<password>" mysql> connect <データベース名> mysql> use <データベース名> 参考 http://dev.mysql.com/doc/refman/4.1/ja/mysql.html</password></num>

レイヤードウィンドウのクリック透過

ウィンドウスタイルにWS_EX_TRANSPARENTを指定すると、透明・不透明にかかわらずクリックを透過。逆に透明のピクセルのクリックを透過させたくない場合は、そのピクセルのアルファ値を1にすれば、見た目をほとんど(全く?)変えずにクリックを受け取れる。…