$value ) if( $value['eid'] == $eid ) return $value; return null; } function RecommendedEntry_updateIndexFile( $eid_updated, $eid, $direction ) { $filename = '/var/www/VirtualDomain/kenji00.com/blog/recommend_data'; is_dir( $filename ) || mkdir( $filename ); $filename .= '/'. substr( $eid_updated, -1 ); is_dir( $filename ) || mkdir( $filename ); $filename .= sprintf( '/%d.txt', $eid_updated); file_exists( $filename ) || touch( $filename ); $fp = @fopen( $filename, 'r+' ); if( $fp ) { if( flock( $fp, LOCK_EX | LOCK_NB )) { $ret = ''; $not_found = 1; while( !feof( $fp ) && ( $buf = fgets( $fp ))) { list( $_eid, $_n0, $_n1 ) = split( "[\t\r\n]", $buf ); if( $eid == $_eid ) { $not_found = 0; $direction ? $_n1++ : $_n0++; } $ret .= sprintf( "%d\t%d\t%d\n", $_eid, $_n0, $_n1 ); } if( $not_found ) $ret .= sprintf( "%d\t%d\t%d\n", $eid, 1 - $direction, $direction); rewind( $fp ); fwrite( $fp, $ret, strlen( $ret )); } fclose( $fp ); } } function RecommendedEntry_incoming() { $eid_prev = $_COOKIE['mtrcmnd_eid']; if( isset( $eid_prev )) { if( $eid_prev != 25 && RecommendedEntry_getEntryData( $eid_prev )) { RecommendedEntry_updateIndexFile( 25, $eid_prev, 0 /*incoming_from*/ ); RecommendedEntry_updateIndexFile( $eid_prev, 25, 1 /*outgoing_to*/ ); } } else { RecommendedEntry_updateIndexFile( 25, 25, 0 /*incoming_from*/ ); } } RecommendedEntry_incoming(); function RecommendedEntry_outgoing() { setcookie( 'mtrcmnd_eid', 25, time() + 2592000, '/' ); } RecommendedEntry_outgoing(); function RecommendedEntry_initialize( $mode = 0 ) { global $RecommendedEntry_table; $RecommendedEntry_table = array(); $filename = '/var/www/VirtualDomain/kenji00.com/blog/recommend_data/'. substr( '25', -1 ). '/25.txt'; $fp = @fopen( $filename, 'r' ); if( $fp ) { if( flock( $fp, LOCK_SH | LOCK_NB )) { while( !feof( $fp ) && ( $buf = fgets( $fp ))) { list( $_eid, $_n0, $_n1 ) = split( "[\t\r\n]", $buf ); if( 25 == $_eid ) continue; else if( $mode == 1 ) $RecommendedEntry_table{$_eid} = $_n0; else if( $mode == 2 ) $RecommendedEntry_table{$_eid} = $_n1; else $RecommendedEntry_table{$_eid} = $_n0 + $_n1; } arsort( $RecommendedEntry_table, SORT_NUMERIC ); } fclose( $fp ); } } function RecommendedEntry_GetEntry( $_index ) { global $RecommendedEntry_table; foreach( $RecommendedEntry_table as $eid => $count ) { if( --$_index ) continue; $entry = RecommendedEntry_getEntryData( $eid ); if( $entry ) $entry['count'] = $count; return $entry; } } ?> 僕たちの失敗Ⅰ - 寝不足にて候(仮)
Jun
09
2005

僕たちの失敗Ⅰ

【その1】


未だUNIX 1年生だった。
メールがループしていたので、原因ユーザの.forwardをFTPしてきて修正後にPUTした。
ループは解消した。

この作業をホームディレクトリでしていたことに気づくまで数時間かかった。その間、修正後の.forwardは、僕の~/でしっかり仕事をしていた。

【その2】


その日、体調は万全だった。
NFSマウントしているディスクの空き容量があるのにDisk FULLエラーが出た。
利用者からクレームが来た。

i-nodeを使い切っていた。

【その3】


その日は結構テンパッていた。
ホストA経由でホストBにsloginしていた。
suしてログの状況を確認した後、Ctrl+dした。
で、rm -rf * した。

Ctrl+d が2回打鍵されていた。
手のひらが汗まみれになった。

【その4】


その日はよく晴れていた。
理由は忘れたが、リモートサーバのX Windowを上げたくなった。
# init 5 した。

Linux気分だったがSolarisだった。
数十キロ彼方で一台のワークステーションの電源が落ちた。

【その5】


その日は2日ほど寝ていなかった。
Bcc:に連ねるには長すぎるメール配信先のリストがあった。
何を思ったか、配信専用アカウントをつくり、.forwardに羅列して即席メール配信した。
queueに入ってからも.forwardを暫く放置した。

Virusに犯されたユーザから素敵な返信が撒かれた。

つづく.......

【おまけ】


小学生だった。YMOは最先端だった。
どこから手に入れたんだか、スネークマンショーを聞いていた。
子供心に「これは、ヘッドフォンで聞かなければ....」と感じた。

ジャックの差し込みが甘かった。
両親の視線を背中に感じたとき、伊武雅刀桑原茂一が濡れそぼった陰毛のジャングルを探検する様が大音量で流れていた。

子供たちを責めないで。



.
.
.
.
そして20年後、桑原氏ご本人の電子メール設定をサポートする機会があろうとは、誰に想像できたであろうか。

このエントリを読んだ人はこんなんも読んでいます

トラックバック(0)

トラックバックURL: http://blog.kenji00.com/MT/mt-tb.cgi/24

コメントする

過去のエントリ(一覧)

Powered by Movable Type 4.261
Creative Commons License
このブログはクリエイティブ・コモンズでライセンスされています。