(由 Wayback Machine 提供 http://www.archive.org/)

快速回顾

出席: dm, duck, Frontier, jar, jrand0m, mihi, Ophite1

会议记录

[22:07] <jrand0m> 议程: [22:07] <jrand0m> 0) 嗨(阅读 http://i2p.dnsalias.net/pipermail/i2p/2004-January/000101.html) [22:07] <jrand0m> 1) router 开发状态 [22:07] <jrand0m> 2) twisted-i2p [22:07] <jrand0m> 3) 单元测试 [22:07] <jrand0m> 4) 网络测试/监控 [22:07] <jrand0m> 5) ??? [22:07] <jrand0m> 0) 嗨 [22:07] <jrand0m> 嗨 [22:07] * jrand0m 挥手 [22:07] <dm> 哦——开会啦! [22:07] * dm 回礼挥手。 [22:07] <jrand0m> 每周二 GMT 晚上9点 :) [22:08] <jrand0m> 大家应该读一下那个 URL (http://i2p.dnsalias.net/pipermail/i2p/2004-January/000101.html),因为里面有些内容我在议程第4项需要反馈。 [22:08] <jrand0m> 1) router 开发状态 [22:09] <jrand0m> 进展顺利,当前 CVS 里的代码看起来不错。我用脚本在过去一天左右测试了一批 router,没有出现任何一条 ERROR 消息 [22:09] <duck> 正在读... [22:10] <jrand0m> 不过当然这只是基线测试(确保 router 能正确构建 tunnels,通过 i2ptunnel 在多个 router 之间转发数据等) [22:11] * jnk 加入了 #i2p [22:11] <jrand0m> 线上肯定还有其他需要修的东西,所以接下来一两天会发布 0.2.3.5,用来确认功能或发现新 bug [22:11] <jrand0m> 好,继续 [22:12] <jrand0m> 2) twisted+i2p [22:12] <duck> 我这边确实有错误 [22:12] <duck> 但可能是别人导致的 [22:12] <jrand0m> 丢消息和未知的 tunnel,对吧? [22:12] <duck> 我查下 [22:13] <jrand0m> (那些是我在某台“线上”router 上看到的错误,在测试网络上不会出现) [22:13] <duck> 22:13:15.371 ERROR [ Sender 1148] er.transport.phttp.PHTTPSender: Error sending the message [22:13] <jrand0m> 啊好,我最近也在折腾 phttp relay [22:13] <duck> 21:01:01.509 ERROR [JobQueue28 ] eDatabaseSearchReplyMessageJob: Invalid router info returned from [Rout [22:14] <jrand0m> 嗯,这个有点怪——能把堆栈跟踪发我一下吗? [22:14] <duck> 我会放上去。 [22:14] <duck> . [22:14] <jrand0m> 谢啦 [22:15] <jrand0m> 其实,后续发布版本的通用规则是——WARN/INFO/DEBUG 级别的消息没问题,出现 ERROR 或 CRIT 我就想听听大家的反馈 [22:16] <jrand0m> 好,回到 2) [22:16] <jrand0m> human 已经做了个办法,可以通过 Python 和 Twisted 框架使用 i2p(棒!) [22:17] <jrand0m> 详情见他的邮件 (http://i2p.dnsalias.net/pipermail/i2p/2004-January/000100.html) [22:17] <jrand0m> human 有什么要补充的吗?(如果你在的话) [22:17] <duck> 这也太酷了 [22:17] <jrand0m> 是啊,回显服务器和客户端的示例代码看起来很硬核 [22:18] <jrand0m> 好,进入 3) 单元测试 [22:19] <jrand0m> 是的,多数数据结构都有一些单元测试,但还做不到“一键可测”,所以我不会每次构建都跑它们。 [22:20] <jrand0m> 现在的想法是把它们迁移到 jUnit,并把目前分散在各组件 main(..) 方法里的其他单元测试尽可能合并(尤其是加密那部分) [22:21] <duck> 更复杂的东西恐怕不容易测 [22:21] <jrand0m> 这事儿迟早会进入关键路径,取决于调试把我们带到哪一步 [22:21] <jrand0m> 对,目前的单元测试只测基础部分 [22:21] <duck> 比如路由、TCP 相关之类 [22:21] <jrand0m> 对 [22:21] * dm 预感到即将开始一场关于单元测试价值的争论。 [22:21] <jrand0m> 不过像 AESInputStream 就可以和 AESOutputStream 配合来测 [22:22] <duck> 单元测试 = 超赞 [22:22] <jrand0m> (给细看日志的朋友提个醒:在解密流式处理期间有些怪异的“pushed back”行为) [22:22] <jrand0m> 绝对的。 [22:23] <jrand0m> 单元测试只是针对,呃,“单元”的;不是针对更大组件的(这就是议程第4项要谈的 ;) [22:24] <jrand0m> 不管怎样,如果有人有兴趣帮忙把现有数据结构的单元测试迁到 jUnit 框架,请告诉我——将不胜感激(也能帮你打好 i2p 代码库的基础) [22:24] * mihi_away 改名为 mihi [22:25] <dm> 要是周末前还没搞定,我可以看一眼。我对单元测试一窍不通,可以借机学学。 [22:25] <jrand0m> 太棒了! [22:25] <dm> 不过不保证。 [22:25] <jrand0m> 好的好的 [22:25] <jrand0m> 好,进入 4) 网络测试/监控 [22:26] <jrand0m> 大家都看过 http://i2p.dnsalias.net/pipermail/i2p/2004-January/000101.html 吗?我不想在这儿直接复制粘贴 [22:26] * Frontier 加入了 #i2p [22:27] * jrand0m 给大家点时间消化 [22:27] * dm 说... [22:28] <Frontier> 消化什么? [22:28] <dm> C),但不自动发送。 [22:28] <dm> 也就是说你手动运行 emaillogstojrandom.sh(.bat) [22:28] <dm> 发邮件或发帖,随便。 [22:29] <dm> 而且执行时会清掉你的日志,或者把它挪走,这样就不会重复提交相同数据。 [22:29] <jrand0m> 所以基本就是 B [22:29] <jrand0m> (或者 A) [22:29] <dm> 对,用户友好的 B) :) [22:29] <jrand0m> 这就是数据上的一个麻烦……那个日志一晚上能涨到几十兆 [22:29] <jrand0m> 对 [22:30] <dm> 抱歉,没看到 C 的 history=false。 [22:30] <jrand0m> Frontier)我们在讨论 http://i2p.dnsalias.net/pipermail/i2p/2004-January/000101.html? 的第4节 [22:30] <mihi> jrand0m: man bzip2 [22:30] <dm> 所以是 history=false,再配个脚本按需提交。 [22:30] <dm> 抱歉,是 history=true :) [22:30] <dm> 天,我把它说乱了。 [22:31] <jrand0m> 对,mihi,不过 bzip2 在 Windows 上没有(除非我们要求并安装)。或者你是说 bzip2 有个参数能把文件提交到一个 URL? [22:32] <dm> 我不担心大小,对你这儿这点人来说几十兆没问题。 [22:32] <Ophite1> 我投 C。 [22:32] <dm> 只要在运行提交脚本时会归档就行。 [22:32] <Ophite1> 这是个调试版客户端。 [22:32] <Ophite1> 当然,生产客户端就选 A :) [22:32] <mihi> jrand0m: 那就用 GZipOutputStream [22:32] <jrand0m> 对对,Ophite1 ;) [22:33] <jrand0m> mihi> 有些人可能还想读这些文件呢 ;) [22:33] <duck> 对,调试参与要“自愿加入”,但一旦加入,就要尽可能让用户省心(所以选 C) [22:33] <mihi> man zcat ;) [22:33] <Ophite1> gzcat | less ;-) [22:33] <mihi> zless ;) [22:33] <jrand0m> C:\Documents and Settings\dev>man [22:33] <jrand0m> ‘man’ 不是内部或外部命令, [22:33] <jrand0m> 也不是可运行的程序或批处理文件。 [22:33] <jrand0m> ;) [22:34] <mihi> cd \cygwin <Ctrl+T> call cygwin.bat [22:34] * dm 百无聊赖地转着大拇指。 [22:34] <Ophite1> 双击 -> WinRAR -> 查看 [22:34] <jrand0m> 好,那么现在一个 B、两个 C,mihi 你怎么看? [22:34] <jrand0m> (还有其他人吗?) [22:34] <dm> 转大拇指、挖鼻屎、点点点。 [22:34] <mihi> 双击 - 7zop - 查看。我选 C。 [22:35] <mihi> s/7zop/7zip/ [22:35] <jrand0m> 3 个 C、1 个 B。我也有点偏向 C。当然,如果有人/不/想提交这些数据,他们随时可以拒绝,程序也啥都不会做 [22:36] <jrand0m> 我看看能不能把 C 和 B 都实现 [22:36] <dm> 看来就是 C 了。 [22:36] <dm> 别浪费时间了,选 B 的那位用的是拨号,上报不了多少数据的 ;) [22:36] <jrand0m> 呵呵 [22:36] <jrand0m> 嗯,C 大概是构建在 B 之上的,所以也不多费事 [22:37] <jar> 对我来说:就像 Ophite1 说的!A for prod client, C for debug ... [22:37] <jrand0m> 说得对,jar [22:37] <jar> 就像 Ophite1 说的!A for prod client, C for debug ... [22:37] <Ophite1> 生产客户端显然只能是 A... [22:37] <jar> 这还用想嘛 :) [22:37] <jar> 抱歉... :( [22:37] <jrand0m> 没事儿,jar,我们不会把你踢禁的(……至少这次不会 ;) [22:38] <jrand0m> 好,那我就开干了,基本上这块一测通我们就会发新的 0.2.3.5(大概明天某个时候) [22:39] <jrand0m> 好,进入 5) ??? [22:39] <jrand0m> 还有别的吗?问题、想法、顾虑? [22:39] * duck 提供免费托管 [22:39] * dm 接受免费托管 [22:39] <jrand0m> 哦好啊。对,大家可以把站点托管在 host.duck.i2p,上得去的页面挺好用的 [22:39] <jrand0m> (当然,也欢迎大家自己托管 ;)) [22:40] <duck> 好啊,主要是给不能 7x24 在线的人用 [22:40] <jrand0m> 对 [22:40] <mihi> streaming API 怎么样了(或者说会怎么样?) [22:40] <jrand0m> mihi> 它在任务清单里,不过目前更优先的是让网络稳定运行 :/ [22:41] <mihi> 但没有完全放弃吧?(我就想确认这个……) [22:41] <jrand0m> 我会在 0.3.1 版本回到 streaming API(也许更早,但不确定) [22:41] <jrand0m> 绝对没有完全放弃。 [22:41] <jrand0m> 会做的。 [22:41] <dm> 这个 streaming API 是啥?是向客户端暴露网络的另一种方式吗? [22:42] <jrand0m> dm> http://wiki.invisiblenet.net/iip-wiki?I2PSocketLibrary [22:43] <jrand0m> 我当初可能犯了个错,把 mode=guaranteed 从一开始就放进了 router,而不是放到单独的库里(现在我正试图把它从 router 里移出去 :) [22:43] <jrand0m> (那个错误带来的超赞好处是 mihi 出现了,并写了 i2ptunnel :) [22:44] * wn-user 加入了 #i2p [22:44] <jrand0m> 还有别的吗? [22:44] * dm 明白了。 [22:45] <jrand0m> w3rd [22:45] <dm> 嗯,这就结束会议是不是太早了? [22:45] <duck> hosts.txt 怎么办 [22:45] <duck> 它越长越大 [22:45] <jrand0m> 已经45分钟了。两周前我们只开了20分钟 [22:45] <jrand0m> 啊,是哦 [22:45] <duck> 但有 75% 不在线 [22:45] <duck> 看起来 50% 是永久离线 [22:45] <jrand0m> 大概吧 [22:46] <jrand0m> 我不清楚 [22:46] <duck> 就让它继续涨,给搞 DNS 方案多点动力 :) [22:46] <jrand0m> 呵,没错 [22:46] <Ophite1> 我完全同意稍微晚点,我这边正“愉快地”处理各种 Windows 问题呢... [22:46] <dm> Windows 是恶魔! [22:46] <Ophite1> 只有给 Windows 写软件,你才会真正明白它有多糟糕。 [22:47] <jrand0m> 使用 Java 的第941个理由 [22:47] <dm> 除非你用 .NET。 [22:47] <dm> 也叫 java++ [22:47] <Ophite1> dm/jrand0m: 它还是跑在 Windows 上,你还是会不断撞上一些问题。 [22:47] <duck> jrand0m: 最近那些补丁能解决断连吗?还是更多是连接问题 [22:47] <Ophite1> 比如路径长度。该死的 Unicode。 [22:48] <mihi> 或者别在文件名里用 \n ;) [22:48] <mihi> 反正这会弄崩 CVS(在 *nix 上,亲历过) [22:48] <jrand0m> duck> 今天的补丁都不关键 [22:48] <duck> 我是说昨天的 [22:49] <dm> 如果你在文件名里用了 \n 会怎样? :) [22:49] <mihi> dm: 你试试 ;) 在 *nix 上,没事儿的,只要你别之后再跑 cvs update。 [22:49] <jrand0m> 哦,昨天有些不错的补丁,能解决一部分(大部分?全部?)i2ptunnel 的 Peer unreachable 消息。不过不是 I2CP 断连 [22:50] <dm> 我觉得会抛异常。 [22:50] <jrand0m> (这也是要发 0.2.3.5 的原因之一) [22:51] <mihi> dm: 本地仓库可以,但 pserver 或 ssh 不行。 [22:51] <mihi> 会报类似‘protocol error’。 [22:51] <mihi> (那个协议是用 \n 结束文件名的 ;) ) [22:51] <Ophite1> 有点像 direct connect,文件名里带 $ 和 | 就会出问题。我讨厌 DC。 [22:51] <duck> . [22:52] <Ophite1> 无论我写什么,都不可能那么糟 :) [22:52] <jrand0m> 不,你们 C 程序员只是把 \0 当特殊字符,而不是 $ ;) [22:52] <jrand0m> 好,和 i2p 相关的还有别的吗,还是就此散会? [22:53] * madman2003 has quit IRC (12( www.nnscript.de 12:: NoNameScript 3.8 12:: www.XLhost.de 12)) [22:54] <jrand0m> 好了,就这样 [22:54] * jrand0m *baf* 地结束了会议