JavaScript による YAML parser

  http://sourceforge.net/projects/yaml-javascript

  その名の通り JavaScript で YAML を parser するライブラリ.

PHP のソースコードから UML を生成する PHP2XMI

  http://phpspot.org/blog/archives/2005/12/phpuml.html

  php2xmi

  KDE 上でしか動かないようですが,なかなかいいかも.

Perl でラヴレター

our $life = \$love and $togetherness;
and: foreach my $sweet (@first) {
little: until ($we . $met) { last 'and' }
}
if ($now . $we) { goto marry; $we . $shall }
bless our $life, More;


  上記 Perl のコードはもちろん動きます.何もおきませんが…
  ちなみに『プログラミング Perl』にも Perl で書かれた詩がいくつか載っています.

- Jabberwocky and London.pl
  http://www.runme.org/feature/read/+londonpl/+34/

- via: koyachiの日記
  http://d.hatena.ne.jp/koyachi/20051209/1134057305

- プログラミング Perl
  4873110971
  http://www.amazon.co.jp/o/ASIN/4873110971/todaysnonsenc-22/ref=nosim/
  Larry Wall (原著), Jon Orwant (原著), Tom Christiansen (原著), 近藤 嘉雪 (翻訳)
  オライリー・ジャパン
  ISBN: 4873110971
  2002/09
  4,935 円

LD_PRELOAD を利用して,プログラム中で実行される connect() の接続先を syslog へ記録する hook_tcp.so

  http://www.t-dori.net/modules/bwiki/index.php?hook_tcp.so

$ LD_PRELOAD=./hook_tcp.so wget http://www.google.com/

  このように実行することで,syslog には以下のように記録されるらしい.

Dec 25 10:35:15 hostname wget[10718]: connect() : host=66.249.89.99, port=80

  むむむ.これはすばらしい.Linux 専用.

- via:  にわか鯖管の苦悩日記
  http://kikuz0u.x0.com/td/?date=20051227#p01

register_globals が On の環境でも Off と同様の状態にする方法

  http://www.asahi-net.or.jp/~wv7y-kmr/note/2005-12.html#YMD20051225_PHP_reg ...

  PHP 4.2.0 から register_globals は Off になっているのだけれども,
  古いスクリプトは register_globals が On であることを前提にかかれている場合も多い.
  実際,保守しているものの中にも多数ある.

  以下,上記サイトで公開されている関数を使用することでグローバル変数の汚染については回避できそう.

<?php

function unset_register_globals()
{
    // register_globals が有効でない場合は以降の処理は行わない
    if ( ini_get( 'register_globals' ) ) {
        return;
    }
    // $_REQUEST に GLOBALS が含まれている場合はグローバル変数が上書きされる可能性があるため、処理を終了
    if ( isset( $_REQUEST['GLOBALS'] ) ) {
        exit( 'GLOBALS overwrite attempt detected' );
    }
    // 削除しないグローバル変数名をキーとした配列を作成
    $no_unset = array( 'GLOBALS'  => '', '_GET'    => '', '_POST' => '', '_COOKIE' => '',
                      '_REQUEST'  => '', '_SERVER' => '', '_ENV'  => '', '_FILES'  => '' );

    // グローバル変数として登録される変数名をキーにした配列を作成
    $input = array_merge( $_GET, $_POST, $_COOKIE, $_SERVER, $_ENV, $_FILES,
                          isset( $_SESSION ) ? (array)$_SESSION : array() );

    // 登録されたグローバル変数を削除
    foreach ( array_keys( $input ) as $k ) {
        if ( ! isset( $no_unset[$k] ) && isset( $GLOBALS[$k] ) ) {
            unset( $GLOBALS[$k] );
        }
    }
}
unset_register_globals();

?>

全自動 M & Ms 仕分け機

  http://japanese.engadget.com/2005/12/25/mandms-sorter/

誰もが苦労していたエムアンドエムズの色分けを自動的に処理してくれる夢のマシーンがついに登場

  M & Ms 仕分け機

  M & Ms のチェコレートを色別に仕分ける機械.バカすぎる.

- via: /home/pochi/ChangeLog
  http://www.pochi.cc/~sasaki/chalow/2005-12-27-1.html

Web サーバのフィンガープリンティングツール httprint

  http://net-square.com/httprint/

  Web サーバにリクエストを送って,Web サーバの種類とバージョンを特定するツール.

  httprint

  手元の機械では 84.34% の確立で Apache/2.0.55 と判別されました.
  うむ,なかなかやるな.

  ちなみに,Apache のログには以下のログが残った.

192.168.1.10 - - [27/Dec/2006:21:47:44 +2700] "\x16\x03" 501 293 "-" "-"
192.168.1.10 - - [27/Dec/2006:21:47:45 +2700] "GET / HTTP/1.0" 200 22 "-" "-"
192.168.1.10 - - [27/Dec/2006:21:47:45 +2700] "GET / HTTP/1.0" 200 22 "-" "-"
192.168.1.10 - - [27/Dec/2006:21:47:46 +2700] "OPTIONS * HTTP/1.0" 200 - "-" "-"
192.168.1.10 - - [27/Dec/2006:21:47:47 +2700] "OPTIONS / HTTP/1.0" 200 - "-" "-"
192.168.1.10 - - [27/Dec/2006:21:47:47 +2700] "GET /antidisestablishmentarianism HTTP/1.0" 404 310 "-" "-"
192.168.1.10 - - [27/Dec/2006:21:47:48 +2700] "PUT / HTTP/1.0" 405 315 "-" "-"
192.168.1.10 - - [27/Dec/2006:21:47:48 +2700] "JUNKMETHOD / HTTP/1.0" 501 306 "-" "-"
192.168.1.10 - - [27/Dec/2006:21:47:49 +2700] "GET / JUNK/1.0" 200 22 "-" "-"
192.168.1.10 - - [27/Dec/2006:21:47:50 +2700] "get / http/1.0" 501 299 "-" "-"
192.168.1.10 - - [27/Dec/2006:21:47:50 +2700] "POST / HTTP/1.0" 200 22 "-" "-"
192.168.1.10 - - [27/Dec/2006:21:47:51 +2700] "GET /cgi-bin/ HTTP/1.0" 403 294 "-" "-"
192.168.1.10 - - [27/Dec/2006:21:47:52 +2700] "GET /scripts/ HTTP/1.0" 404 290 "-" "-"
192.168.1.10 - - [27/Dec/2006:21:47:52 +2700] "GET / HTTP/0.8" 200 22 "-" "-"
192.168.1.10 - - [27/Dec/2006:21:47:53 +2700] "GET / HTTP/0.9" 200 22 "-" "-"
192.168.1.10 - - [27/Dec/2006:21:47:53 +2700] "GET / HTTP/1.1" 200 22 "-" "-"
192.168.1.10 - - [27/Dec/2006:21:47:54 +2700] "GET / HTTP/1.2" 200 22 "-" "-"
192.168.1.10 - - [27/Dec/2006:21:47:55 +2700] "GET / HTTP/1.1" 400 305 "-" "-"
192.168.1.10 - - [27/Dec/2006:21:47:55 +2700] "GET / HTTP/1.2" 400 305 "-" "-"
192.168.1.10 - - [27/Dec/2006:21:47:56 +2700] "GET / HTTP/3.0" 200 22 "-" "-"
192.168.1.10 - - [27/Dec/2006:21:47:56 +2700] "GET /.asmx HTTP/1.1" 404 287 "-" "-"
192.168.1.10 - - [27/Dec/2006:21:47:57 +2700] "GET /../../ HTTP/1.0" 400 310 "-" "-"

Windows XP の動作を軽快にしたい

  http://www.mtblue.org/pc/tips/speed_up_xp.php

  内容としては別に新しくもないけど,メモ的なもの.

Vim で検索でマッチした対象に対して置換を行う方法

  http://advweb.seesaa.net/article/11035679.html

<C-r> /

  で最後に検索した検索が呼び出せるので,検索した後に

:%s/

  まで打ち込んで,前述の <C-r> / で検索後をいれて置換する.

JavaScript のクロスブラウザライブラリ X Library

  http://network.yasu21.net/diary/2005/12/javascript.html

  ブラウザ間の差を吸収した JavaScript ライブラリ.
  ドキュメントもしっかりしている.

- ダウンロード
  http://www.cross-browser.com/toys/

- ドキュメント
  http://www.cross-browser.com/x/lib/view.php

- via: Trivial Tracks
  http://network.yasu21.net/diary/2005/12/javascript.html

Oracle,MySQL,PostgreSQL の性能比較表

- Comparison of Oracle, MySQL and PostgreSQL DBMS
  http://www-css.fnal.gov/dsg/external/freeware/mysql-vs-pgsql.html

  結構細かい点まで比較してある.わかりやすい資料.

ソフトウェア工学とは何か

  http://www.biwa.ne.jp/~mmura/SoftwareDevelopment/WhatIsSoftwareDesignJ.htm ...

- What is software engineering
  http://www.bleading-edge.com/Publications/C++Journal/Cpjour2.htm

  コーディング = 設計

HTML を汚さないロールオーバースクリプト

- ロールオーバーのオブジェクト指向的実装
  http://web.paulownia.jp/script/sample/rollover.html

- prototype.js 版
  http://d.hatena.ne.jp/kazeburo/20051227

  HTML に onmouseover などのイベントハンドラを記述せずに,ロールオーバを実現する.
  CSS の a:hover でも実現できると思う.