Entries from 2009-01-01 to 1 year

Re URLを扱うテーブルを作るときにどうすべきか

数日前、 pathtraqの事例を詳しく知りたい URLを扱うテーブルを作るときにどうすべきか - 金利0無利息キャッシング – キャッシングできます - subtech に対し、 pathtraq は前方一致検索が必要だから算術系圧縮して varbinary(767) だけど、順序の維持が不要…

kill -KILL -1 の話

プロセスが増殖したり pgid が変わってたりすると kill するのが面倒になってくるわけで。そういうときは、 sudo -u www kill -KILL -1とかやると、特定ユーザーのプロセスを全部殺せるので便利。

perl から任意の C ライブラリを呼び出す方法

syscall って組込関数でシステムコールはできますけど、libc やその他ライブラリの関数を呼びたい、ってこともありますよね。i386 かつ dlopen な環境なら、こんな風に書けます。 use DynaLoader; use ops; sub ccall { my $r = '1111'; my $s = "\x68" . pa…

Perl で任意のアドレスを peek

804d000H から1バイト読む例。poke できないのかなー print unpack('P1', pack('L', 0x804d000)); 参考: http://pub.ne.jp/wakapon/?entry_id=1253761

Encode::compat::MIME::Header::ISO_2022_JP つーモジュールをでっちあげた

perl 5.8.7 以前かつ Encode のバージョンアップできねーみたいな環境でも互換性を保ちながら書けるように。 use Encode; use Encode::compat::MIME::Header::ISO_2022_JP; my $subject = encode('MIME-Header-ISO_2022_JP', '日本語の件名'); みたいな感じ…

CPAN 階層の深いモジュール王選手権

CPAN 長いネームスペース大会 - にぽたん研究所 を見て、階層の深さだとどうなるかなと思ってやってみた。 1: perfSONAR_PS::Datatypes::v2_0::nmtl3::Topology::Domain::Node::Port::IpAddress 1: perfSONAR_PS::Datatypes::v2_0::nmtl4::Message::Metadata…

引数が 26 個の関数呼び出しってどうよ

数ヶ月前に書いたコードを保守しようとしたら、 こんなのが出てきてウケた。 unsigned hits[24]; ... if (sscanf(buf, "%u,%u,%u,%u,%u," "%u,%u,%u,%u,%u," "%u,%u,%u,%u,%u," "%u,%u,%u,%u,%u," "%u,%u,%u,%u", hits + 0, hits + 1, hits + 2, hits + 3, h…

X25-M の速度低下の件

うちの環境。2.5TB ほど書いてるのかー $ iostat -k Linux 2.6.18-92.el5 (************) 02/14/2009 avg-cpu: %user %nice %system %iowait %steal %idle 0.03 4.92 2.24 6.83 0.00 85.98 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn sda 1.02 11.87 …

innodb_flush_method=O_DIRECT を Mac OS X で使えるようにしてみた

久しぶりに MySQL のパッチ書いた。実用的な意味もあるけど (開発環境 Mac なので)、それよりは (天保山並みに低い) 山があるから登ってみた的な。Kazuho at Work: Using O_DIRECT on Mac OS X

Google の各国ドメインを一覧にするワンライナー

$ curl http://www.google.com/language_tools 2> /dev/null | perl -MList::MoreUtils=apply -le 'apply { s{a\s+href="http://(?:www\.|)(google\.[a-z\.]+)/?"}{print $1}eg } (<STDIN>)' | sort | uniq google.ad google.ae google.am ...id:kdaiba++</stdin>

はやいTCPサーバを書く際に忘れがちなこと

はやいTCPサーバの書き方 - nyaxtのPC作業ログ で id:nyaxt さんが書いてらっしゃるように、 epoll や kqueue を使う TCP_NODELAY, TCP_DEFER_ACCEPT *1 等を活用する TCP パケットを意識する I/O システムコールの回数を最小にする sendfile といったあたり…

Mac OS X のメモリ管理

ドライバも仮想メモリ空間で動作 DMA する際とか明示的にアドレス変換が必要 TLB cache のクリアコストとかどういう風に設計してるのか Mac OS X のドライバ色々書いた感想 - kazuhoのメモ置き場 の件、O'Reilly Media - Technology and Business Training …

Re はやいTCPサーバの書き方

はやいTCPサーバの書き方 - nyaxtのPC作業ログ について、いくつか気になった点があったので。 Nagleアルゴリズムは、相手側のACK送信をまとめてくれるものです。これは、下記の様にアプリケーション側でパケットを意識した処理を行っている場合、邪魔になる…

「ループは -1 まで回せ」

元の話題は int vs size_t problem のあたり。符号なし型の減算ループをどう書くかという話。実は、一定数までカウントアップするよりも 0 を通り過ぎるまでカウントダウンする方が速度とコードサイズの両面で良い、ってのは最適化の定石だと思ってました。…

Mac OS X のドライバ色々書いた感想

年をはさんで Mac OS X のドライバをいろいろ書いたりいじったりしたわけですが、感想。 イベントドライバをマルチスレッドで書けるのは、とても楽 while ループで待ち受けとか IODelay (IOKit 内の sleep) はビジーループってことになってるけど、他スレッ…