UNIX

siege便利ですよ、siege

Webアプリの負荷テストツールにsiegeというのがありまして、個人的にはずいぶん前から使っていたのですが、会社ではあんまり知られていなかったのでエントリ書きます。 http://www.joedog.org/ これは何? 簡単に言うと高機能なabです。JMeterほどの機能は必…

mysql-replication-listenerのspecを書いた

%define _libdir /usr/lib Name: mysql-replication-listener Version: 0.0.47 Release: 2%{?dist} Summary: A STL/Boost based C++ library used for connecting to a MySQL server and process the replication stream as a slave. Group: Development/Lib…

未整形のmanをnroffで生成する

nroff -mandoc hoge.1 | less

rrdファイルを直接参照する

muninとかでグラフの数値を引っ張ってくる。 ~$ rrdtool fetch XXX.rrd AVERAGE -s 20100701 -e 20100801 | awk -F: '{printf("%s | %f\n",strftime("%x %X", $1),$2)}'

tcpdumpでクエリをキャプチャする

どこかのサイトで拾ったもの。いつも探してるのでメモしておく。 tcpdump -i eth0 -s 0 -l -w - dst port 3306 | strings | perl -e ' while(<>) { chomp; next if /^[^ ]+[ ]*$/; if(/^(SELECT|UPDATE|DELETE|INSERT|SET|COMMIT|ROLLBACK|CREATE|DROP|ALTER…

PowerDNSを使ったGeographic Load Balancing

Akamaiみたいに、DNSでクライアントのロケーションごとに異なるIP(またはCNAME)を返せないものかと、いろいろ調査。こーゆーDNSのロードバランシングをGeographic Load Balancingと言うらしい。いくつかのDNSサーバを調べてみたところ、PowerDNSのGeo back…

bar

http://www.theiling.de/projects/bar.html 使い方がいまいちよく分からない。 もうちょいよく読もう。

link: 有害な csh プログラミング

http://www.kiso.tsukuba.ac.jp/~makimura/text/node239.html 昔「cshはクソだ!」という趣旨の文章を読んだなぁ、と思って探したらあった。 これを読んで「cshはだめだめだ」と勝手に洗脳されていたけど、今は昔の話だなー。 最近のギーグな人たちはzshを使…

Xの設計思想

http://ja.wikipedia.org/wiki/X_Window_System なかなか興味深い。 実際のアプリケーションでどうしても必要という場合以外は、新機能を追加するな。 システムが何でないのかを定義することは、何であるのかを定義するのと同じように重要である。あらゆるニ…

tar xz

特に「j」とか「z」とか付けなくても「tar xz」で適当に形式を判別して解凍してくれた。知らなかったなー。

シェルスクリプトで標準入力を読み込む

要は「echo hoge | ./fuga.sh」とかやりたい…と。 #!/bin/sh DATA=`cat` echo "$DATA" ダブルクォートでで囲っているのは改行対策。 やり方あってるかなぁ… だめだー。変数にバイナリを格納できない…

echoに改行をつけない

echo -n foobarzoo

g++が使えない

g++が使えないんですよ。開発用サーバで。 gcc 4.1が必要らしい。 で、gccをupgradeしようとするとこの有様ですよ。 ~# apt-get upgrade gcc Reading Package Lists... Done Building Dependency Tree... Done The following packages have been kept back: …

diff -y

diffコマンドに、ファイルを横に並べるオプションがあった。 ~/work$ diff -y a.c b.c #include #include int main() { int main() { printf("hello, world.\n"); printf("hello, world.\n"); > printf("hello, diff -y.\n"); return 0; return 0; } }知らな…

teeでパイプの途中を覗く

http://d.hatena.ne.jp/kazuhooku/20081016/1224162806 teeの出力先を標準エラー出力にしてパイプの途中を覗いてみる。 ~/work$ date | tee /dev/fd/2 | wc -c Tue Nov 4 18:20:21 JST 2008 29Cygwinでもできた。 で。 ~/work$ echo 'Hello World!' | openss…

共有ライブラリを作る

http://www.linux.or.jp/JF/JFdocs/Program-Library-HOWTO/shared-libraries.html http://www.hi-ho.ne.jp/babaq/linux/libtips.html foo.c #include <stdio.h> void foo() { puts("foo()"); } foo.h void foo(); ビルド ~/work$ gcc -fPIC -g -c foo.c ~/work$ gcc -</stdio.h>…

opender

Cygwinでビルド。d_offとかがなかった。 #include <stdio.h> #include <sys/types.h> #include <dirent.h> #include <errno.h> int main() { DIR *dir; struct dirent *entry; if ((dir = opendir("/usr/bin")) == NULL) { perror("opendir"); exit(1); } entry = readdir(dir); while (entry) { print</errno.h></dirent.h></sys/types.h></stdio.h>…

link: Manpage of MAKECONTEXT

http://www.linux.or.jp/JM/html/LDP_man-pages/man3/makecontext.3.html Cygwinでは動かず。残念。 なんか、実際にアプリで使われているコードはないかな… #include <ucontext.h> #include <stdio.h> #include <stdlib.h> #define handle_error(msg) do { perror(msg); exit(EXIT_FAILURE);</stdlib.h></stdio.h></ucontext.h>…

GNU Pthでコルーチン

Cygwinで動いた。 GNU Pthが一般的なのかな…libfiberもあったけど。 #include <stdio.h> #include <pth.h> void *handler(void *arg) { pth_t mth = (pth_t) arg; while (1) { puts("spring"); pth_yield(mth); puts("summer"); pth_yield(mth); puts("autumn"); pth_yield(m</pth.h></stdio.h>…

link:共有ライブラリをシステムに認識させるには

http://www.atmarkit.co.jp/flinux/rensai/linuxtips/300sharelib.html

link:svn に登録されていないファイルをまとめて svn add

http://www.goodpic.com/mt/archives2/2007/03/svn_svn_add.html なるほどー。

Pound 2.4

http://www.apsis.ch/pound/ とりあえずメモ。 ざっと見た感じIPv6への対応とURLによるセッションが主な変更点かな?

Screenの「Copy mode aborted」が嫌い

コピーモードから抜けるときに「Copy mode aborted」というメッセージが表示されるけれど、元に戻るまでに少しタイムラグがあるのが嫌だ。特にtailでログを追っかけているときなんかは「さっさとログを表示しろよ!」とイライラする。というわけで、コードに…

Screen: Nethackオプション

`nethack STATE' Use `nethack'-like error messages. *Note Nethack::. コードを漁っていたら見つかった。 コピーモードに入るときのメッセージはこんな感じ。 Welcome to hacker's treasure zoo - Column 4 Line 1(+1000) (80,23)そういえば、スター・ウォ…

Screen: dabbrevエミュレーション

前に移植したdabbrevをエミュレートするパッチを少しだけ修正。 以前は[a-zA-Z0-9_.@:%!-+']を含むに単語にマッチしていたけど、記号が鬱陶しいので[a-zA-Z0-9_]にマッチするようにした。 diff -ur screen-4.0.3.orig/comm.c screen-4.0.3/comm.c --- screen…

svn: 差分があるファイルだけexportする

svnだけでできそうな気がするんだけどなー。 #!/bin/bash N=${1} M=${2} TARGET=${3} ENTRIES=`svn diff -r ${N}:${M} ${TARGET} | grep ^Index | sed -r "s|^Index: ||"` for i in ${ENTRIES} do DIRNAME=`dirname ${i}` FILENAME=`basename ${i}` svn expo…

patchが便利すぎる

リポジトリのソースを2箇所ぐらいにチェックアウトしてて、片方の変更を「svn diff | patch -d /foo/bar -p0 -b」とかやってもう片方に適用できるのが便利すぎる。 「--dry-run」オプションでパッチが適用できるかどうかも確認できるし。

bash: Programmable Completion

http://www.caliban.org/bash/#completion_download zshへの乗り換えがまた遠ざかる… 追記 svnのリモートディレクトリの補完はできないか… zshはできるのかなぁ?

pstree

psをツリー表示できないかな…と思ってたら、まんまなコマンドがあった。 # pstree -pcU | nkf init(1)─┬─apache2(7131)─┬─apache2(7134) │ ├─apache2(7135) │ ├─apache2(7136) │ ├─apache2(7137) │ ├─apache2(7138) │ ├─apache2(7139) │ ├─apache2(7140) │ └…

複数行を一行にまとめる

sedかbashかでできないかな、と思ったけど断念。 ls foo/ | ruby -e 'puts ARGF.read.gsub(/\s+/, " ")'putsを省略できるオプションってなかったっけ?