原則匿名で公開・個人情報は送られません。必要に応じ御署名/非公開希望をお書き添え下さい。
UNFLYING DUTCHMAN Arsenal XLと佐渡で買って発送して貰った土産類が到着。そんなわけで、折を見て適当にうちでへろへろ呑もうかと思います。よろしく>関係各位
結局半分以上を僕が消費したシャンプーのボトルが空になった。
気がつくともう半年にもなった。
ほんとうは彼女に使いきって欲しかった。むしろ、足りなくなって買い足して欲しかった。部屋にはまだ彼女のための品がある。僕が使える品もあり、使えるけれども滅多使わない品もあり、あるいは僕には到底使えないであろう品もある。
風呂場に置いてあった中ぐらいのサイズのシャンプーのボトルが、僕にも一番使える品だった。そして、最初に使い切った品になった。こういうふうにして僕を取り巻く現実は擦り切れ、同様に記憶も擦り切れていくのだろう
_彼女の選択は間違っていると思うし、ずうっとそれは間違いだと思い続けるだろう。
だけれど彼女がいたことや共にあったことは否定したくない。それでも世界は変わっていくし、彼女が不在の世界は彼女が不在であるべくその隙間を擦り減らして行くだろう。
彼女が傍らに思った不在が、幻であったなら。
だがそれは僕らにとっては幻だったが、彼女にとっては幻でなかったのだ。その違いが今ここにある彼女の幻につながり、そして幻は削られて行く。
それは傍らの僕らにとっては幻ではなく現実なのだが、誰かにとっては間違いなく、幻なのだ。
_結局僕も、彼女と同じように愚かなのだ。
Aprilfoolさんのところから、Winny刑事事件の問題解決のために 教唆的幇助意思の理論 を読んで少考。
相変わらずSDL関係は愚痴々々言いたくなるような客の無体な発言の嵐。
急浮上してきたのがRTC関連で、電源が完全に尽きてRTCが出鱈目な値を返すようになったケースで問題が発生するというのをなんとかする仕事中。RTCが2000年以前の日付を返したときの処置はしてるが、出鱈目な年月(2004-15-68とか)を返してきたときや、time_tの32bit intを越える日付(2038年以降)を返してきたときの処置はしてない気がする。そのへんが問題なのではないかと思いながら、電源をひっこ抜いてはしこしことコンデンサの両端を短絡させ中。
検索インデックスが壊れていたので作りなおし。
ところで、シグネチャを長めにして本文とのマッチを行わなくしたら、英単語のヒット率が流石に悪くなったような気がする。もう少し「単語化」の方法を考えようかなあ。
遺品の整理と称して土産の酒を持って弟の人とまったり酒を呑んだりしてきました。っていうか同人誌多すぎです。せめてもう少し整理してから(略
_という冗談が強がりでなく言えるぐらいには、まあ慣れてきたってことなのでしょう。そんな感じで粛々と整理は続いていくのです、きっと。
先週は結局、問題の状況は再現しなかったものの疑わしい点については報告しておいた。そうしたらRTC問題は2038年問題でビンゴらしい、という情報が到着。相変わらずこっちでは状況が再現しないままだけれど、出鱈目日付対応も兼ねた修正起動時スクリプトを組んで動作することだけ確認して送りつけた。
これで上手くいくなら、スクリプトをもう少し練り込んでこの件は完了の予定。本当はカーネルで対処するべき事かもなあ、という気もしているのだけれど。
_他にもpppdの弱電状態での動作検証とか、suspend/resume時のSIGSTOP/CONTに伴うlistenソケット回りのエラー処理追加とか、まあそんな感じで慌ただしかった。
まあいつものように寝坊はしたとして。
行きの電車の中でいかにもPDっぽいもよおしに襲われて下車トイレ駆け込みコースとか、再度乗車後に寝過ごして素敵に新宿突破とか。いやまったく、ひどいもんでありますのことよ。
わりと定期的に入ってくる某サイトの構築サポート作業。毎回少しずつ仕様の変わるExcelのシートから80強のhtmlを生成するといういかにもコンピューターにやらせるべきよねーというお仕事でまあ基本となるツールは既に出来上がっているわけですが。
それでも毎回入り込む微妙な差分の対応とかは必要なわけで、それは普段ならとろとろと2〜3日かけてやるのだけど今回はその他の仕事がけっこーあっぷあっぷなので仕方なく凄い勢いで今日1日で終わらせてみたり。
_その気になればこのぐらい働けるわけだけれど、これやると疲れるんだよなあ。そんなわけで、脳が激しく疲労を訴えてる今現在なのでありました。
RTC問題は結局、不正時刻修正をカーネルドライバ内で行うことで決着。ユーザーランドで完結させようとしてみたらこれがやたら不安定で起動時に固まったりしていたので。
他にも細々とあれやこれやの修正をしているとまたもやSDLに触れないまま今日も終わりそうな勢い。あれやこれやの都合やら、ちっとも情報が出てこないやらで、もう納期なんか知りませんよ状態に突入ですよ、ええまったく。
通販で頼んでおいた自転車絡みのあれやこれやが届いたので今日はなんとなく自転車っぽい日ということで。といっても、時間の大半はシューズの靴裏剥しに費されたけど。
それが終わるとすっかり日暮れという感じの時間だったけれど、それでもCyclobagを買うべく原宿へ。いろいろそそるものに惑わされそうになりながら、Cyclobagは無事購入。フェイスはとりあえずポケット、進入禁止、フレキシブルホルダーの3つで。そのうちスマイルとかも欲しいかもしれない。
あるいはフェイス自作というのもアリかなあ。少し考えてみよう。
急遽決まったオフ会のために自転車で秋葉原に向かったら途中でリアブレーキのマウントが外れる罠。洗ったり油差したりしたときに入ってはいけないボルトのところにグリスが侵入したのが原因か。
_ボルトは脱落してどこかに行ってしまったが、既にいいところまで来ていたのでそのまま走行して一旦オフ会に合流。本日の目的そのいちであるところのメイド喫茶でなんとなくまったりは果たす。
それからヘアドライヤーが欲しいという要望にお応えするところを敢えて歪めてヤマギワで無駄に高額な物欲刺激作戦を展開しつつも何も買わず(手頃な値段のスピーカーは少し欲しまってしまった。おひとつ23Kぐらい)、結局は当初の目的通りヘアドライヤーの物色で収まる。
_そこでとある事情により我が家に行くという話になったのだが、すると自転車問題が浮上するわけで。同行の一同には30分ぐらい待っててくれ、と告げてウエノクラシックに持ち込み。店員さんにあれこれ試行錯誤させつつも(最後は新品実車まで参考に見に行って頂いた。というか、それを期待して店を選んだわけだが)ブレーキは無事取り付けられた。しかしながら「ワイヤーがいいかげん交換時期ですねえ」という言葉もあり、実際見てて「こりゃダメだ」というぐらいブレーキが利かなさそう(っていうかリムにシューが着いたとこから戻らねえ)な動きをしていたのもあり、その場で交換依頼を。受渡しは明日の予定。
_ということでオフ会に復帰して一路我が家へ。えーと、いりえさんはだいこうふんでした。まる。
yapwの、正確にはTreeStore.pmのデバッグ。
DESTROYメソッドの呼び出し順番がperlのバージョンに依存するのか、挙動が場所によって違っていたりした。主にファイル消去に関して問題が出ていたのでこれに場当たり的な対処をしてみた。記事消去が普通に動いてる環境では特に適用の必要のない修正ということで。
Reiser4ってそんなことするのか。カコイイ。
_しかし、これに対するLinuxコミュニティの反発はむしろ当然と言うべきだ。
良くも悪くもUNIXという思想に浸かったLinuxには、Reiser4は絶対にマッチしまい。どうしてもReiser4でシステムを作りたければ、Reiser4のためのOS、オブジェクトファイルシステムを前提としたパラダイムとその実装、が必要になるはずだ。それにはUNIXとはあまりにかけ離れたなにかであり、良くも悪くもUNIX的であるLinuxにそれを背負わせるのは筋が違うというものだろう。
_このへんの話はまだまだ学術的領域に存在しているべき話のような気もする。敢えて言うならDJB的設定ディレクトリ構造とかはまさしくReiser4にマッチする考え方なのだが、その(行きすぎた)先進性はDJBが理解されない原因の一つでもある。というか、非学術的領域においては未だにPlan9や実身/仮身すら受け入れられているとは言い難いのだ。
なぜかEUC-JP文字列の表示長による折り返し処理とかを実装。まあEUC-JPの仕様通りに適当に書けばおしまい。参考になるかはわからんけど該当部分のコードをベタっと載せておこう。とりあえずで書いたのでいろいろ格好悪いが所詮は参考ってことで。
struct displine{ unsigned char mes[LINE_BUF_SIZE]; int restwide; }; struct splitbuffer{ int num_lines; struct displine line[5]; }; void parse_message(struct splitbuffer *sb,unsigned char mes[]) { int i,j,c,p; int leng_in_byte; int skip_bytes,copy_bytes,disp_wide; struct displine *line; for(i=0;i<sb->num_lines;i++) memset(sb->line[i].mes,0,LINE_BUF_SIZE); p = 0; skip_bytes = 0; copy_bytes = 0; disp_wide = 0; for(i=0;i < sb->num_lines;i++){ line = &(sb->line[i]); leng_in_byte = 0; while(leng_in_byte < LINE_BUF_SIZE){ c = mes[p]; // check type of character if(c == 0x0a || c == 0x00){ break; }else if( (0x00 <= c && c <= 0x1f) || c == 0x7f ){//制御文字 skip_bytes = 1; copy_bytes = 0; disp_wide = 0; }else if(0x20 <= c && c <= 0x7e){// ASCII文字 copy_bytes = 1; disp_wide = 1; }else if(0xa1 <= c && c <= 0xfe){// 2バイト全角文字 copy_bytes = 2; disp_wide = 2; }else if(c == 0x8e){//半角カナ copy_bytes = 2; disp_wide = 1; }else if(c == 0x8f){// 3バイト全角文字 copy_bytes = 3; disp_wide = 2; }else{// ぶっちゃけエラーケース。とりあえず無視。 skip_bytes = 1; copy_bytes = 0; disp_wide = 0; } //check display wide if(line->restwide < disp_wide) break; //copying while(copy_bytes > 0){ line->mes[leng_in_byte++] = mes[p++]; copy_bytes--; } line->restwide -= disp_wide; p += skip_bytes; skip_bytes = 0; } if( c == 0x00 ){ break; }else if( c == 0x0a ){ line->mes[leng_in_byte] = '\0'; p++; } } }