----- [2000/05/20(Sat) 23:23:14] 1.01 リリース後の作業時間と作業内容のメモ。 ----- [2000/05/20(Sat) 23:23:31] リリースまでの時間集計 1h ソースファイル整理 1h バグフィックス (長すぎる逆引き名でabortしていた) 1h UML ダイアグラム更新 4h ----- [2000/05/21(Sun) 05:50:33] UML ダイアグラム更新 3h (コラボレーション図は古いままなのよね…) ----- [2000/05/21(Sun) 06:16:37] version 1.02 リリースワーク 1h ----- [2000/05/22(Mon) 02:23:44] iniddeve.txt 書くのに 1.5h くらいかかった まあこんなもんか。こんなもんだよなあ。 風邪引きっぽくてちょっといやんだわ。 --------------------------------------------------------------------------- ----- [2000/06/11(Sun) 23:12:07] inidwin 関連の作業。 - Configurator で機種依存 option などを書けるようにする。 ついでに ct_NUMBER を扱えるようにする。 - usage() を機種依存部に移動。その他ごそごそ。 実装 2h。 --------------------------------------------------------------------------- ----- [2000/07/09(Sun) 11:55:02] inidwin 関連で細かい作業はちょこちょことやった。 inidwin 1.02.01 公開。 その後、Applause から細かいバグの fix が入ったのだが、これはどう取り扱おう。 YURO さんから、パスワード認証機能をつける非公式パッチを受け取る。 でもまだ公開しないでと言われている。はて、これもどう取り扱おう。 いつまでも引きずられてもしょうがないので、実装作業を進めなければ。 とりあえず、積み残しになっていた部分の実装をすることにしよう。 休暇が結構な日数取れるはずなので、うまく使う方がいいのだが、 夏休み取得計画がいまいち立たなくて困っている。 7月にあと2日、9月に10日くらいか? ということは実装をがつんとやるphaseは、9月にassignすることになる。 ----- [2000/07/09(Sun) 19:09:37] といいつつ何も作業してなかったりして。 inidwin 1.02.02 用に version string を書き換えた。だけ。 --------------------------------------------------------------------------- ----- [2000/08/03(Thu) 23:22:16] * ----- [2000/08/06(Sun) 18:39:48] やらないといけないのだわ ----- [2000/08/06(Sun) 22:49:46] LogWriter と LogReadPort を TextReader を使うように書き換えた。 やたら時間かかったぞ:-) ----- [2000/08/29(Tue) 00:05:15] inid-ja.cat では %ほ%げ とかはかけない。→fixしないとね。 --------------------------------------------------------------------------- ----- [2001/01/15(Mon) 01:03:38] (01:03:14)[きのもと] >inid: assertion failed in clients.cc:3022: state == StateStable (01:03:14)[きのもと] > state=1 (01:03:14)[きのもと] >inid: assertion failed in clients.cc:3207: state == StateWaitLogin (01:03:14)[きのもと] > state=4 (01:03:14)[きのもと] >inid: assertion failed in clients.cc:3411: state==StateWaitWho (01:03:14)[きのもと] > state=3 (01:05:58)[きのもと] 普通にログインしただけ (01:06:00)[きのもと] ででました (01:06:09)[きのもと] 最初の人がログインした人 (01:06:12)[きのもと] かな<この場合 (01:06:41)[きのもと] mioでよくでてたので (01:06:44)[きのもと] libc5のせいだとおもってたら (01:07:50)[ったく] loginしてlogin処理が終わる前に (01:07:58)[ったく] clientの/waコマンドが受け付けられているらしい (01:08:15)[ったく] 本当にそういう状況がおきうるのか、バグで起きてしまっているのかは (01:08:20)[ったく] よく調べないと不明です --------------------------------------------------------------------------- ----- [2001/02/24(Sat) 17:41:08] inidce 移植。 とりあえず動かしたところで、diffを取ってみる。 core part: - setbufがない→ダミー関数を作らなきゃ。 - MallocBlock がこける→エラーメッセージは無視すればいい。 - MallocBlockCounting がこける→ -DDEBUG でも counting は disable にする。 - qsort→通らないコンパイラは多そうなので core part 自体を直そう。 →そういう問題じゃなくて、呼び出しコンベンションが違う。 windows part: - pconfig.h は大幅に加筆。 - Unicode API 対応のために変更点多数。 - 空ファイル多数。 どうするかだけど、 WCE/ かなんかを作って、そこにプロジェクトベースとかを突っ込む。 pconfig.h にあったやつを WCE/inidce.h かなんかにする。 Windows part は、根本的に Unicode 両対応になるように書き換える。 (どうやってチェックする?→コンパイルしてみるしかないかー。) ----- [2001/02/24(Sat) 20:15:55] ↑の話は放っておいて、 login禁止ハンドルをカタログファイルで定義できるようにした。 ここのとこひどかったですものね。 ----- [2001/02/24(Sat) 22:29:08] The catalog entry MsgLogSuppress is now unused. The catalog entry ClientLoginRejects comes. Stdcode package has some new string comparison functions. Fix of queue rechaining routines in the constructors of UserClientDriver and BiffClientDriver... Sending /w* at login time sometimes fails to hand over the command packet from ClientLogin to them. inidce 関係を除いても、実装4hくらい? その他、inidceをまともにする作業もやった。/wも/mlもhttpも動くようになった。 ----- [2001/02/25(Sun) 15:04:02] ShiftJIS 変換ルーチンを書いた。EUCのものをごっそり流用したので、 ものすごいことになってしまっている。 CE に持っていく都合上、ファイル構成を整理した。コード変換部分に関連する 最低限のところだけを切り出すことが可能になった、…と思う。 実装2h。 --------------------------------------------------------------------------- ----- [2001/03/20(Tue) 08:57:41] * ----- [2001/03/20(Tue) 09:00:11] なにやればいいんだろう - textreader 関連 - /al 関連 - コード系関連 - expire 関連 ----- [2001/03/20(Tue) 19:40:55] UserDB::lookup() を TextReader を使うように書き換えた。実装1h。 伝言、アナウンス関係の書き換えが残っている。 ----- [2001/03/20(Tue) 23:05:38] UserDB::MessageManager::getMessage(), BBSDriver::readAnnounce() を TextReader を使うように書き換えた。実装2.5h。 アナウンスのほうは、現在のファイル位置の取得を使ってあとで上書きとかやってる ので、ファイル位置取得がコケると失敗する。 具体的には、アナウンスファイル中にやたら長い行が含まれていたりすると、 その行を壊してしまうだろう。どうせ読まれない部分だから、別に困らないけど。 ----- [2001/03/25(Sun) 19:28:45] /al をさかのぼれるようにする。 index を全部オンメモリで持てばいいのね、きっと。 ----- [2001/03/25(Sun) 23:43:46] ログファイルの日付に穴が開いてるときの/rnで落ちるのをなおした。 本日ここまで実装2h。 ----- [2001/03/26(Mon) 01:21:47] なんかアナウンスファイルを壊すことがあるようだ。 穴あきアナウンス削除とかで。 ----- [2001/03/26(Mon) 01:34:08] しかもアナウンスしまくるとメモリリークする。 あうー:-) ----- [2001/03/26(Mon) 02:04:19] どっちもバグ取った。そろそろcommitするかしら? 実装2h。 ----- [2001/03/26(Mon) 02:43:07] 各地のサーバーを最新版に更新してまわった。 管理0.5h。 ----- [2001/03/31(Sat) 12:33:35] はらへった ----- [2001/03/31(Sat) 13:43:32] 今のところinterval timerは全然役に立ってない気がするし これ使うとgdbが使えなくなるので、しばらくdisableしておくかー。 →といいつつまたenableしたりして。 ----- [2001/03/31(Sat) 14:02:24] ユーザー情報の expire 機能をつけるということは、 hash値衝突したときのchainをごそごそつけ替えないといけないということか。 め、めんどくせー… オンメモリで情報を持ってるかどうかを管理して、メモリにあったらexpireしない、 ファイル名がつけ変わったらそれを反映させる、という処理が必要になる。 →現状では不要。オンメモリでは高々1個しか情報が持たれていない。 (ほんとに?→assert入れておくか) →嘘でした。リスト作るときに作りまくり…。名前フィールドしか使わないのでok。 伝言ファイルだけの expire なら、こんな苦労は要らないのね。 実装1.5h。たまらんからちと休憩しよう。 ----- [2001/03/31(Sat) 21:59:18] 実装でけたー。というかすごいてこずった気がする。テレビ見ながらだけど。 実装5h。 ----- [2001/03/31(Sat) 22:22:31] timestampが全部0の人に伝言があると、/mlでもexpireされない。 どうすればいいんだー:-) infファイルの timestamp を見れば、なんとかなる。ただし、 - login する。(→0でentryができる) - 伝言を送る。 - logout しない。 - そのまま3か月が経過する。 とかいうケースでおかしなことになるわけね。 とりあえずほっとくことにするかー。 --------------------------------------------------------------------------- ----- [2001/04/02(Mon) 02:40:19] /al がばぐっているー:-) 実戦投入するとバグが発覚することであるなあ。 ----- [2001/04/02(Mon) 02:58:24] 実装1h。(というかでばっぐ) ねむいぞあう --------------------------------------------------------------------------- ----- [2001/07/26(Thu) 23:23:07] (23:13:17)[あぶら] Jul 26 23:06:05 inid: assertion failed in clients.cc:1789: state == StatePreFinish || state == StateFinishing (23:13:17)[あぶら] Jul 26 23:06:05 state=3 (23:13:17)[あぶら] inid: assertion failed in biffcdrv.cc:292: state==StateWaitWho (23:13:17)[あぶら] Jul 26 23:06:10 inid: assertion failed in facility.cc:290: user->b_next != NULL ----- [2001/07/26(Thu) 23:42:04] (23:40:24)[ったく] >----- [2000/04/08(Sat) 13:09:01] (23:40:24)[ったく] >ふむ、showwho に PreFinishing の状態で突入して、stateを上書きされていたんだな。 (23:40:24)[ったく] >だから showwho の最初で state のチェックをしてパケットを捨てるようにすればok。 (23:40:33)[ったく] これがUserClientDriverでしか対策されてなくて (23:40:37)[ったく] Biffはほったらかしだったのか --------------------------------------------------------------------------- ----- [2001/08/21(Tue) 20:03:41] (20:03:09)[Atzy] ろぐのでぃれくとりのスペルをミスっていました (20:03:31)[ったく] それでせぐめんてーしょんふぉーるとするのか --------------------------------------------------------------------------- ----- [2002/04/05(Fri) 19:07:51] すごいむかしのログしかないときに segv で落ちる。 TextReader::getline() の最初の if かな。this==0 で呼ばれてるみたい。 #0 TextReader::getline (this=0x0) at classes.cc:389 #1 0x8063985 in LogReadPort::getline (this=0x808c308) at facility.cc:961 #2 0x8064990 in LogReaderNew::logread (this=0x808a708, pkt=0x8088528, prio=@0xbfbfe3bc) at facility.cc:1265 #3 0x80588b3 in LogReader::PacketLogread::dispatch (this=0x8088528, aobj=0x808a708, prio=@0xbfbfe3bc) at facility.h:563 >1265 s = reader->getline(); ----- [2002/04/12(Fri) 00:18:53] ↑,↑↑ってもうfixされてるじゃん… facility.cc rev. 1.12 で治ってるね。おっけー。 じゃあ known bug は全て fix されているということでいいのね。 ----- [2002/10/07(Mon) 14:26:00] clients.cc:2600 で落ちた。 AsyncResolver が 2process とも busy だったときに、NULL が返るので、落ちる。 AsyncResolver の先の child process で dot notation に変換してたけど、 ここを直して、親にも変換ルーチンを追加しないといけない。 ----- [2002/10/08(Tue) 01:08:02] なおした。 AsyncResolver の構造、もうだいぶ忘れてるな(笑) ----- [2002/12/28(Sat) 23:36:23] [ったく] 2:J が /td0 /r で見えちゃう問題に対処するぞ。 ----- [2003/01/15(Wed) 20:58:04] * ----- [2003/01/18(Sat) 03:56:09] inid 1.04 リリース作業。 sourceforge のほうなんとかしないとなー inidwin の build もなんとかしないとなー。 ----- [2003/01/19(Sun) 15:07:09] /ta before login やるぞ。 今は thread 系は UserClientDriver に整理されているが、 ClientLogin と共通で使うことになるので、どこか別の場所にごっそり移動する。 ----- [2003/01/19(Sun) 16:09:01] リザルトコードを # 200 OK とか # 404 へんです とか返すようにした。 しかし /^# invalid command.$/ を見てるクライアントがいたら困るな……。 ----- [2003/01/19(Sun) 16:45:09] 電報 reminder をつけよう。 しばらく(1時間くらい?) idle にしてる間に裏伝言が届いたら、教えてくれる。 発言とか、コマンドの ack のタイミングで。 誰の機能だ? UserClientDriver につけるべきか。 ----- [2003/01/19(Sun) 17:42:01] どこにチェックを入れるか。 say/said acksendtelegram ackopenmessage ←不要 acksecretmessage ackmessagelist ackannouncelist showannounce infoannounce logtoread 難しいところ: infohandle ←フラグをクリアして何も表示しない infostatus ←/s offのチェックとか showwhoContinue ←clientが勝手に突っ込むかもしれないから/waには反応しない say じゃなければ idletime (最終発言時刻) は更新されないので、 同じメッセージが何度も出てこないように注意する必要があるだろう。 「〜があります」系の reminder なら flag を clear するだけなので実装は容易。 ----- [2003/01/19(Sun) 19:04:31] Controller で、idletime をもっと積極的に更新したほうがいいだろう。 →sendtelegram でも idletime が更新されるように変更。 他はめんどくさいからいいや:-) ----- [2003/01/19(Sun) 19:44:34] 表伝言・裏伝言で、受け取ったらその旨が表示されるようにする。 送り先が現在 login 中の user かどうかを調べないといけないね。 ということは、名前で lookup してリストを返す関数が必要。 ----- [2003/01/19(Sun) 20:43:15] UserList を複数つくれるようにしようかと思ったけど、 良く考えたら queue の構造上無理なので、 multicast を名前で範囲指定できることにした。 表/裏伝言の reminder が動作。 /s off が動作。 /s offしてる間は idle timer に関係なく不在扱い。 /s ほげほげ したときにだけ表示される。 ----- [2003/01/19(Sun) 20:53:00] アナウンスの reminder が動作。 /a (cancel) には反応しない。 自分のアナウンスには反応しない。 ありました ということしか表示してくれない。(中身までは表示されない) ----- [2003/01/20(Mon) 23:20:20] 実戦投入するとボロが出るの法則。 fix した。 /x alive で無反応。keep-alive 用。 login, userclient, biff それぞれで受け付けるようにした。 ----- [2003/01/21(Tue) 01:20:36] 議論の結果、SMTP の真似をすることに。 /x noop → /^# 250 .*$/ が返る。 クライアントは上記にマッチする行は無条件に除去してもよろしい。 ----- [2003/01/21(Tue) 01:22:04] /s off.* を判断して offモードに入る。 offモードで何か発言すると、自動的に status をキャンセルしてから、 発言内容を送信する。 このとき IAA の制御に注意。 というのを実装した。 ----- [2003/01/23(Thu) 13:18:03] away な間に電報とかが届いてたときに、/q したら、 reminder を表示してから落とすようにしないといけない。 away な間に電報が届いても、 次にアクション起こす前に落ちてしまったら、確認のしようがない。 ----- [2003/01/25(Sat) 23:18:48] /q での reminder を実装。 ----- [2003/01/26(Sun) 02:31:57] /p NNN,MMM ほげ が書けるように改造中。 結構直すところが多い。 ----- [2003/01/26(Sun) 03:43:24] /p はらだ うひひひひ も書けるようにした。 ----- [2003/01/26(Sun) 03:57:08] /w はらだ, /ww はらだ を書けるようにした。 ----- [2003/01/26(Sun) 12:25:34] /s off 中に操作したとき reminder を表示しなかったバグを fix。 /s, /s hoge 関係で timer を見てなかったバグを fix。 これで status 関連のバグが全部なおってるといいけどなあ。 ----- [2003/02/23(Sun) 22:21:56] 電報が届いてて /h じぶん して読んだとき、flag がクリアされてない。 ----- [2003/10/24(Fri) 22:23:57] /al10000 とかやって inid が固まるバグ。久々に fatal なのが出た感じ。 対処は、っと。 BBSDriver::old が空の状態で古いアナウンスのキャンセルが起きると、 old (の末尾)にキャンセル分のアナウンスが add される。 そのあと BBSDriver::readOldAnnounce() が起きると、先頭からファイルを 読み直して old の末尾に add していくので、おかしなことになる。 →起動時または最初のキャンセル時に readOldAnnounce() すれば解決。 しかし、そもそも TextReader でハングアップするのも良くない気がするな。 s = tr->getline() で s が null string -> 空行または EOF (判別できない) とすると、壊れたアナウンスファイルをどう扱えば良いか。 TextReader::iseof を追加。 s = tr->getline() で null だったら必ず break しないといけない。 さもなくば eof check すること。 OldAnnounceMessage::getNext() で break したあと、異常が発生したことを 認識して、システムがコケないようにつじつまを合わせる必要がある。→直した。 ----- [2003/10/24(Fri) 23:20:27] ていうか main.italk.ne.jp にメンテナンスログインできなーい(^^; ----- [2004/02/09(Mon) 23:44:24] (23:43:44)[いわもと] clients.cc:3036:32: missing terminating " character →なおした。 ----- [2004/03/18(Thu) 17:02:40] (17:02:06)[おおいわz] /x noopが文字化けした (17:02:15)[おおいわz] JISが降ってきたようだ # 250 はよん ----- [2004/06/13(Sun) 14:21:15] ↑のバグもなおしました (順番がちょっと前後してしまったが) というわけで 1.05 のアーカイブつくっちゃう。