快速回顾
出席: bar, cervantes, Complication, frosk, jrandom, polecat, tethra, void
会议记录
16:02 <jrandom> 好吧,那就开始吧 16:03 <jrandom> 嗨,会前笔记已发布在 http://dev.i2p.net/pipermail/i2p/2006-August/001304.html 16:03 <jrandom> 与其让我在这里基本把那封邮件念一遍,不如直接进入我们标准的???环节—— 16:04 <jrandom> 有人有想提出来讨论的事情吗? 16:04 <@cervantes> 呃嗯 16:04 * cervantes 匆忙去读那篇帖子 16:05 <+Complication> 关于网络状态,我这边一切正常... 16:05 <+Complication> 不过有个关于 NTCP 传输的问题(其实是论坛转述), 16:06 <+Complication> 也就是说,启用它会不会导致某些人出现 CPU 负载问题(他们用的是 XP)? 16:06 <@cervantes> 我得说,自从切换过去后,我这边的 CPU 占用其实更低了 :) 16:07 <jrandom> 嗯,你无法把它*禁用*(除非你看过源代码并且知道那个魔咒 ;)) 16:07 <+Complication> 提到这个问题的人(不太容易复现,而且我这里也没有高 CPU 占用)说,他遇到的高 CPU 占用似乎和 NTCP 有关 16:07 <jrandom> 所以,我猜他们的意思是不要接受入站的 ntcp 连接 16:07 <+polecat> NTCP 会让我的 router 立刻把 CPU 打满,我重复试了两次,最后不得不手改配置文件才让 router 再次工作起来。 16:07 <jrandom> (同时仍使用出站 ntcp 连接) 16:07 <+Complication> (我这里只比平时高一点点,而且很可能是因为在传*更多*的数据) 16:08 <+Complication> ( http://forum.i2p/viewtopic.php?t=1815 ) 16:08 <jrandom> 当你建立一个 ntcp 连接时,你需要进行一次(或几次)重量级的加密计算 16:08 <jrandom> 如果你接受入站 ntcp 连接,可能会同时收到很多入站尝试,因为外面有数百个 i2p routers 16:09 <jrandom> polecat:那不是 ntcp 的错,而是 ntp 池里有个坏的 ntp 服务器导致的 16:09 <+polecat> 是的。看来我自己没法应对那种情况。 16:09 <jrandom> (感谢 cervantes 把那个 ntp 服务器揪了出来,并让池子那边的人去 !thwap 他们 :)) 16:10 <jrandom> ((也感谢 Complication,让我们今后能避开那些疯狂的家伙 :))) 16:10 <@cervantes> 嘿,我觉得他们的服务器看门狗只在工作日上班 ;-) 16:10 <+Complication> 嗯,目前的规避还相当有限 16:10 <@cervantes> http://www.pool.ntp.org/scores/216.52.237.153 16:11 <+Complication> 我希望最终能把更偏执一点的方案写出来 16:11 <+polecat> 哦,所以启用 NTCP 不会再把 CPU 打满了? 16:11 <jrandom> (它从来没有,polecat,只是巧合而已 ;)) 16:12 <+Complication> “clock”具体是指哪种意思? 16:12 <jrandom> (见 cervantes 给的链接) 16:12 * polecat 朝 Complication 的头来了一下。 16:12 <@cervantes> polecat 你抽的啥 16:12 <+Complication> :P 16:12 <+polecat> 呃,我的意思是,把所有时钟周期都占光了。 :) 16:13 <+Complication> 如果时间一下子前后跳了 30 秒,它可能会丢掉很多很多会话,然后不得不进行各种非常繁重的加密操作 16:13 <+Complication> 我想那足以抢走大量 CPU 周期 16:13 <+Complication> 确实,或许论坛里的那位也遇到了同样的情况,却误以为是别的原因?得去问问看... 16:13 <jrandom> 啊.. 好吧,有效的入站 ntcp 连接会导致 CPU 的突发占用,而仅出站的 ntcp 一次只会尝试与有限数量的新 ntcp 对端通信 16:14 <jrandom> 不启用入站 ntcp 并没有任何问题。 16:15 <@cervantes> Complication:那个服务器在周一中午就修好了,看看他们从那以后还有没有问题也许有意义 16:15 <jrandom> 好的,还有谁有要讨论的? 16:16 <+Complication> cervantes:的确,值得一试 16:16 <@cervantes> 我收到报告说有些人仍会周期性地丢失 leases(租约)……这是已知问题吗? 16:16 <+void> ntcp 的实现和 ssu 差别有多大? 16:17 <+polecat> 我们怎么判断自己丢了 leases? 16:18 <jrandom> void:ntcp 在每条消息上的带宽开销稍高一些(不过操作系统对可靠传输的实现可能更高效,可以抵消一些) 16:18 <+Complication> polecat:tunnels.jsp 会显示某个特定的 tunnel 池没有任何 tunnel(例如“shared clients”) 16:18 <jrandom> cervantes:是的,我们的 tunnel 构建成功率还没达到应有的水平 16:18 <+void> polecat:router 控制台会这么提示 16:18 <+Complication> 而且就像 void 说的,控制台左侧边栏也会显示 16:19 <+polecat> 我经常会看到那些“No leases”的消息……你是这个意思,对吧? 16:19 <@cervantes> 嗯 16:20 <+polecat> 那通常就是搞死我 IRC 连接的原因。我还以为这很正常呢! 16:21 * jrandom 皱眉 16:24 <+tethra> lol ;) 16:25 <jrandom> 好,还有什么要在会议上提的吗? 16:25 <@cervantes> jrandom:最近 syndie 有进展吗,还是一直忙于 ntcp/修 bug/找 ISP/骑车? 16:27 <+tethra> feedspace 有消息吗,还是我该直接去他们的 eepsite? 16:28 <jrandom> 当线上网络一度糟透时,我把 syndie 先放在一旁。不过随着网络逐步回到正轨,syndie 又开始占用我的时间了,我希望很快能拿出一个小的 CLI 系统(之后会基于用户反馈推出针对性的 GUI) 16:28 <jrandom> (已经实现的 SWT GUI 情况不错,但可能最好还是先用 CLI 来校准预期) 16:29 * jrandom 没听到关于 feedspace 的任何消息 16:29 <@cervantes> 不错 16:29 <jrandom> frosk:有消息吗? :) 16:29 <+polecat> 很高兴你又在做 syndie 了。新版本听起来很有前途。对于 ACL,有没有考虑过诸如从某个节点删除博客,或者执行与账户无关的管理任务之类的功能? 16:30 <@cervantes> <jrandom> DELETE FROM messages WHERE postedOn <NOW()-14*24*60*60; 16:31 <jrandom> 本地归档基本上会被视为可信(因为只要你能访问本地归档的数据库,你就可以随意改文件) 16:32 <jrandom> 不过,对于共享的博客,确实会有一整套密码学结构来进行认证和/或授权帖子与更改 16:33 <jrandom> (但也会有一种方式让人查看“未授权”的帖子,只是它们会被明显地放到一边) 16:33 <+polecat> 我敢肯定,一旦有人用成千上万的巨型博文去淹 syndicates,物理删除帖子的技术就会被打磨得非常成熟。 16:34 <+tethra> 呵呵 16:35 <jrandom> 物理删除很简单,关键是首先要接受哪些帖子 ;) 16:36 <jrandom> (我没兴趣把 syndie 变成电影分发平台之类的东西) 16:36 <+polecat> 在接受一个样本之前,没人能确定自己接受的是什么。我设想可以只允许白名单里的博客,新 ID 先试用再加入,一旦变成垃圾就立刻删除。 16:36 <jrandom> 嗯 16:37 <+polecat> 我更感兴趣的是把不同的对话流聚合起来:我们可以做一个没有中心服务器、只靠共同标签运转的 BBS! 16:37 <jrandom> (手动允许新的 ID,手动踢/封那些滥发的 ID,等等) 16:37 <jrandom> 甚至在密码学里对此还有内建支持,polecat :) 16:37 <+polecat> 也许可以让版主给 BBS 的已核准消息签名,大家再从版主的博客收集那些批准列表。 16:38 <+polecat> 哦,太棒了。 16:38 <@frosk> jrandom:最近在做 GUI 的东西,但和新工作开局并行起来挺难的 :( 16:39 * cervantes 联系人力资源把 frosk 炒了鱿鱼 16:40 <jrandom> 啊,酷,希望等 syndie 用权宜的 http 聚合推起来之后,能再把你拉回来 ;) 16:40 <@frosk> 至少我老板现在会关注 i2p 的开发了 :) 16:40 * jrandom 向 frosk 的老板挥手 16:40 <@frosk> 哦是的,我还是下定了决心(可恶!) :) 16:40 <jrandom> (给 frosk 多放点假,我们需要他!) 16:41 <@cervantes> 希望他不会看到你把公司机密信息发到你的 syndie 博客上的那些内容 16:41 <bar> GUI 很好,我们喜欢 GUI。你被原谅了。 16:41 <+Complication> 呵呵 :) 16:41 <@frosk> 走进他办公室撞见他在看 syndie,感觉怪怪的 :) 16:41 <jrandom> 哈,真棒 16:42 <+polecat> 恭喜你,frosk,即便你被羞辱和臭名昭著地解雇了,至少你又让一个人见识到了 syndie 有多酷。 16:43 <@frosk> 呵呵,是啊 16:43 <+tethra> 哈哈 16:44 <@frosk> 这个 GUI(基于 SWT)是/将会是 feedspace 相关一切的试验台,用来把它带动起来 16:44 <jrandom> r0x0r 16:45 <+void> jrandom:也许你应该把进邮件列表的所有内容都交叉发布到 syndie? 16:45 <jrandom> 我们完全可以把它和 syndie 的 SWT GUI 合并(基本范式是一个浏览器,不过标签页里不显示 HTML 页面) 16:46 <+polecat> 那就太好了。我似乎再也收不到邮件列表了。 16:46 <jrandom> void:谁写个小的 shell 脚本把 procmail 管道到 syndie 的 CLI 里,会相当容易 16:46 <@cervantes> 这些花哨的 SWT GUI 是和应用耦合在一起的吗?还是作为 CLI 可执行程序的前端,或者通过 TCP 等等来通信 16:46 <@frosk> 有道理 16:46 <jrandom> (我记得不久前我的博客里有一篇文章,解释了如何用 syndie 的 CLI 插入帖子) 16:47 <+polecat> 目前可以做 RSS 源再喂给 syndie,尽管还挺粗糙的。 16:47 <jrandom> cervantes:在事件处理器里用 JDBC,当然还内联上 JNI 和 MSVC 的调用 ;) 16:47 * jrandom 赶紧低头躲开 16:48 <+polecat> Microsoft Visual Classes? 16:49 <@cervantes> jrandom:那任何能说 SQL 的东西都能管理 syndie 了 16:49 <jrandom> (从 syndie 的角度看,所有功能基本都是由许多小型 CLI 应用实现的,它们只是更新 JDBC 数据库,另外还有一个 SWT 界面用来浏览这个数据库) 16:51 <+polecat> 而且由于这个数据库有两个接口,JDBC 和 SQL,用任一“协议”通信的客户端都能把 syndie 搞乱。 16:51 <jrandom> cervantes:嗯,是也不是——数据库里有相当一部分是加密的,所以并不是所有字段都可读 16:51 <+void> 现在的 Web 界面还会保留吗? 16:51 <jrandom> (jdbc == sql) 16:51 <jrandom> void:不会 16:51 <+polecat> 我记得你说过 JDBC 不是那种愚蠢的人类可读“协议”来着? 16:51 <+Complication> jdbc == Java Database Interface,也许有点像 odbc 16:51 <jrandom> ((jdbc ~= sql)) 16:51 <+Complication> 就是你用来“说”SQL 的东西 16:52 <+void> jrandom:syndie.i2p/syndiemedia.i2p.net 会怎样? 16:52 <+polecat> 哦。好吧,记录一下,我从来就不喜欢 SQL。 16:52 <@cervantes> jrandom:所以最好是给 syndieTools (tm) 做个前端,而不是自己去吸数据 16:53 <jrandom> void:时间会证明。它们很可能会 1)作为 syndie 的网站/eepsite,2)作为用于聚合的公共帖子归档,最后在写出 Web 界面后,3)提供一个 Web 界面 16:53 <+polecat> 为什么不把字节码当数据库查询提交,而不是那些古老的 COBOL 语句? 16:53 <jrandom> 是的,cervantes 16:53 <jrandom> !lart polecat 16:54 <+void> 嘿嘿嘿 16:54 <+polecat> 啊,我的致命弱点。 16:54 <@cervantes> * 你的物品栏里还剩 6 个 lart,北边有一扇门,地上躺着一个昏迷的 polecat 16:54 <jrandom> cervantes:那其实是 CLI 应用 #3(提取单个帖子,排在应用 #2(列出单个帖子)之后,#1(创建单个帖子)之后,以及 #0(管理 nyms(化名))之后)) 16:54 <jrandom> lol 16:54 <+tethra> 哈哈 16:55 <+Complication> 功能提案:与其用字节码,何不直接把活的 $agency 特工当作数据库查询提交? ;P 16:56 <+Complication> 这样在安全性验证上要简单多了 :P 16:56 <@cervantes> jrandom:明白了 16:56 <+tethra> 在合适的气候下,它们会像信鸽一样吗,Complication? 16:56 <+Complication> tethra:只有当你能让它们完好无损地穿过 TCP 栈时才行 :P 16:56 <+polecat> 对,用 CPP 发送数据库查询! 16:57 <+Complication> 我想在 TCP 里被挤皱了可能会把它们搞坏 16:58 <+Complication> (抱歉,笑话本该放在 #i2p-chat,但有时忍不住) 16:58 * cervantes 感到一记 baff 即将到来 16:58 <+Complication> 把数据库查询当作 shellcode(shell 代码)? 16:59 <jrandom> 好,会议上还有别的吗? 16:59 <+polecat> http://www.blug.linux.no/rfc1149/ <- 我们真的可以把 i2p tunnel 在这个之上。 16:59 * Complication 宁愿坚持用 SQL 17:00 <+void> jrandom:除了 Java 之外的其他语言有 hsqldb 数据库的库吗? 17:01 <+Complication> Oo 看起来应该有,因为他们似乎在用它 17:01 <+void> 在我看来像是“没有” 17:01 <+void> 哦,嗯 17:01 <@cervantes> openoffice 用它,所以我猜有 17:01 <+Complication> 不过我不确定 OpenOffice 是用什么写的 17:01 <jrandom> 据我所知没有。不过可以让 syndie 跑在另一个 JDBC 数据库上(mysql、oracle 等) 17:01 <jrandom> oo 用的是 java 17:02 <+void> openoffice 到底把这个数据库用在什么地方? 17:02 <+Complication> 不过看起来只是部分使用 17:02 <jrandom> void:用于生成 PDF,还有他们那个类似 Access 的数据库应用 17:02 <jrandom> (以及其他用途) 17:02 <+Complication> 毕竟它还推荐使用外部 JRE 17:02 <+void> 好吧 17:03 <+void> 不过,写可移植的 SQL 真是件麻烦事 17:03 <+Complication> 如果不做触发器或存储过程,应该也不至于太难受 17:04 <jrandom> 呃,没那么糟,而且很容易外部化 17:04 <+void> 尤其是要兼容 oracle 的时候 ;) 17:05 <jrandom> 其实,hsqldb 还支持 pl/sql ;) 17:06 <bar> 这个数据库还有其他计划吗,比如用来做统计、对等体档案、netdb..? 17:06 <jrandom> 没有,这只用于 syndie 17:06 <bar> 好 17:07 <jrandom> (不过当我们把 hsqldb 的代码打包发布时,我们就可以在 i2p 里“免费”使用它) 17:07 <@cervantes> syndie 并不是 I2P 应用,只是一个能跑在 I2P 之上的应用,对吧? 17:07 <jrandom> 是的,cervantes,它不依赖 i2p 17:07 <+Complication> 保持 Syndie 的可移植性是好事,因为它可能会有 I2P 之外的其他传输方式 17:07 <bar> 对 17:08 <+Complication> 不过,我想在同一台机器上跑多个 hsqldb 实例应该不难 17:08 <+Complication> 所以如果其他应用需要它,似乎也可以直接用 17:08 <jrandom> 很简单,而且如果只用 in-jvm 的 dataase,成本为 0 17:08 <+Complication> (最好使用它们自己的实例) 17:10 <+void> sqlite 没有 jdbc 驱动吗? 17:11 <jrandom> 不知道,从没用过 17:11 <+void> 啊,看来是有*点东西*的 17:13 <jrandom> 好,会议还有别的吗? 17:13 <jrandom> 如果没有的话... 17:13 * jrandom dinws up 17:13 * jrandom 后退一步 17:13 * jrandom 开始蓄力 17:13 * jrandom 把会议*baf*掉,宣布结束