当前位置

技术

技术

闪电邮的前世

经过大约一年半的准备和磨合,当初构想的 Lightning Mail Platform 终于开始慢慢成形,为了赶时髦,我决定把它定义为 2.0,之前的那套系统,姑且称之为 1.0 吧。

在我刚刚进入邮件中心的时候,很是被系统的架构震惊了一下(主要是 CGI vs JavaApp 的巨大差异),以前一直觉得 sohu 的技术不咋的,突然发现这个框架还是很有水平,印象比较深刻的有

  1. apache 和后端 resin 的连接上,mod_caucho 自己作了 patch,提升了吞吐量,以及增加了一个简单的任务管理机制。得承认在 eyou 时候比较土,几乎没有想过 apache 也是可以动手脚的
  2. User Lookup DB 是基于 BDB 3.x 开发的。定义了一套同步机制,搞了个 Master-Slave 结构。别的不说,稳定性是比 OpenLDAP 强太多了
  3. 还是 Lookup DB 的服务进程,内嵌了 spidermonkey 引擎,用来作命令解释器。又是让我耳目一新
  4. 漏桶。想象有一个打开底部水龙头的桶,能够以恒定的速度向外流水;调用者时不时的向里加点水,返回结果是桶是否已满。以前作反垃圾邮件的时候也实现了这样的功能,不过是一个内部数据结构,还从没有考虑过抽象出一个独立服务。
  5. 反垃圾邮件包括了一个自动发现相似信件的模块。

其他的子系统还包括:

  1. 邮件桶。上面跑着resin应用服务器,这是和 eyou.com 本质的不同。一个是HTTP代理+应用服务器;一个是CGI+RemoteFS。
  2. 提供客户端连接的SMTP服务器独立分离(不同于MX),被称之为 SMTPOE。这种模式相比较亿邮那样集成在一处的,可伸缩性更好一些
  3. 由于Java没有管道机制,不能简单的调用 sendmail 发信。因此内部设定了一组 smtp server,供web用户发信使用。称之为 websmtp

我猜想以前邮件中心大概有2-3个技术牛人,可惜没有能持之以恒的做下来。

Topic: 

kernel 2.6.33 DRM/KMS 将加入 Nouveau 驱动

本来大家都以为这将发生在 2.6.34 甚至更靠后的版本。但是当 Redhat 的 Airlie 在 2.6.33 的 merge window 开始第一次的 DRM pull request 后,Linus 很不满的问,RedHat 咋还不把 Nouveau pull 进主线版本啊..

奇怪么?Linus 主动要求赶紧把 Nouveau 加入内核支持哦....

先是 Alan Cox 打抱不平:负责这事的是 Nouveau Team,干人家 RedHat 鸟事,话说回来都是你的 Signed-Off-By 政策导致程序员不会随便提交不属于自己的代码.

Airlie 也说:kernel/user space 的接口 API 还不稳定,我们不想现在就提交

Linus:别以为我不知道 RedHat 雇用了 Nouveau 的人,也少拿代码不稳定来糊弄我,你们从 F11 开始就鼓励用户用这玩意了。我最烦的就是发行版本和Linux主线的不一致,这会造成内核事实上的分裂,就像2.4时代我们曾经历的那样

Airlie:我和俺公司的 Ben Skeggs 讨论了一下,这里还有一个法律问题,让 driver 工作的 microcode/firmware 是静室工程搞出来的,可能还需要律师确认一下。另外你是不是有一块N卡所以对这事这么上心,要是我送你一个 LIRC 设备你是不是就要抱怨 LIRC 咋还不进入主线呢

Linus:靠,你们都发行这么长时间了,以前就不担心法律纠纷么?Ubuntu 10.04也要加这个驱动了,Canonical 也不担心这点啊。关于User Space 接口的事情,反正这个驱动只是进入 stage 目录,API 不稳定是很正常滴.

......

总之经过一个周五晚上的努力,主要是 Ben Skeggs 的工作 (Airlie 负责 Radeon 的驱动),终于向 Linus 提交了一个 Nouveau pull request.

除了这个驱动外,2.6.33 DRM 还将包括的变化有 KMS page-flipping ioctl. 这意味着 Wayland Display Server 就可以在 2.6.33 上运行了。理论上非Root权限运行的 XServer 离我们越来越近..

Update: 最新进展,Linus 已经接受了驱动相关的提交,但 RedHat 还不能确认 microcode 的状况,无法 sign off.. 但理论上从 TNT 到 Gforce 5 不需要这个固件也能跑,至少对老显卡用户来说是个福音,等着吧,ATI 的 R600/700 的支持也才是 2.6.32 才加入的啊

Topic: 

用 python/reportlab 生成 PDF

达达这学期关于加减法运算的一个要求是速度——8分钟以内做120道题为及格,5分钟做完是100分.

为了平时训练,偶周末就写了个脚本产生一组题目,并生成 PDF 以供打印。

网上的入门教程多是 reportlab 的 pdfgen.canvas 的例子,不过我这里是要打印 120 道题出来,就得用 platypus.Table 来排版了.

表格的数据用一个 list 来表示;其每一个元素仍然是一个 list,就是每行(row);这个 list 里的每个元素是字符串,是 cell 的数据了。

准备好 table 后,用 platypus.SimpleDocTemplate 来生成 pdf。它最后处理一个 list,把这个 list 里的对象挨个渲染出来,这个有点像浏览器依次画出 block 级别的 div。

示例如下:

  1. from reportlab import platypus
  2. from reportlab.lib.units import inch
  3.  
  4. def genTable():
  5.     data = []
  6.     items = genList()  #随机生成120道题目
  7.     for i in range(0, len(items), 5):
  8.         #生成一个有 5 列的表格数据
  9.         data.append(items[i:i+5])
  10.     table = platypus.Table(data, 1.5*inch, 0.4*inch, [('FONT', (0,0), (-1,-1), 'Courier')])
  11.     # 每个cell 1.5' 宽,0.4' 高,差不多 120 题排满一张 A4
  12.     # Courier 是等宽字体,为了俺的算式看起来整齐
  13.     # (0,0)/(-1,-1)说的是font style运用范围,从左上到右下
  14.     return table
  15.  
  16. doc = platypus.SimpleDocTemplate(fname, topMargin=0.9*inch, bottomMargin=0.9*inch, title='DaDa Math', author='qyb')
  17. # 目标是一个叫 fname 的 PDF 文件,缺省上下留白有点多,修改为0.9'
  18.  
  19. elements = []
  20. for i in range(n):
  21.     elements.append(genTable())
  22.     elements.append(platypus.flowables.PageBreak())
  23.     # 生成 n 页的数据,每个表格后面跟着一个换页
  24.  
  25. doc.build(elements)

Getting Started With ReportLab 这篇文档给我很大帮助,推荐阅读。

最后要说的是,Linux 下配置佳能 LBP 3018 非常麻烦,我尝试了10分钟后没有搞定就放弃努力回到 XP 下打印了。CUPS 发展这么多年,佳能也是大厂,没想到 Linux 桌面上用打印机还是如此困难!

Topic: 

mutt killer

gmail 影响的不仅仅是 webmail 以及桌面客户端(thunderbird 都要变成 raindrop),现在看来 text-based 终端应用程序也要进化了!

首先出台是 Sup. 一个用 ruby 写成客户端,带有标签/全文搜索/自动创建联系人名单....还有会话功能. 看截图还蛮像回事

然后就有对 ruby 不鸟的 C 程序员开发出来了 "Not much mail". 利用 xapian 作的全文搜索...在 blog 里对 xapian 只提供 C++ 接口还调侃了一下

NotMuchMail 没有 POP3/IMAP4 fetch,没有 SMTP 发送功能,甚至没有 UI!!! 要想把一切有机的组织在一起,得靠神器 Emacs. 现在 at least two users using it for reading all of their incoming mail... 这个是算 alpha 么?

Topic: 

记昨天的反垃圾邮件年会

最深得我心的是李宏宇的观点:“对反垃圾邮件性能的指标定义混乱,没有清晰的标准,应该以实际的用户体验来表达”。没错,厂商们宣传的99.9% 的拦截率真有意义么?

我们在内部重新定义了两个指标:漏判率,即用户每在收件箱中看到100封邮件,其中多少是垃圾邮件;误判率,即用户每收到100封正常邮件,有多少封会误投入垃圾邮件夹中。

按李宏宇的说法,263的漏判率是3%,误判率没有说。他认为漏判率在5%-8%之间,用户是可以接受的。。。。我们最近做得还凑合,期望能达到263的漏判水准。

另外一个纯技术的是陈诗锋的讲演:“基于邮件列表的知识发现”。汉启据说是分成了两个公司,一个做EDM,一个做AntiSpam。一个现实,一个理想,祝愿他们能实现自己的目标。

最有意思的是 Tony 和 Jay,我觉得真可以用孟不离焦焦不离孟来形容这两人,以及其代表的公司 Epsilon、Web Power。我发现我开始喜欢上他们两个人了,不仅仅因为我也和他们一样戴黑框眼镜,哈哈

腾讯邮件是该会议/Panel的赞助单位,但是没有人上台讲话,真是低调啊。

总体来说,免费邮箱都很低调。

昨天我自个想了个词:全价值链竞争。今天我又想了个词:全业务线竞争。2010会是这样的吗?

Topic: 

Ubunt 9.10 vs Fedora 12

Ubuntu 三大亮点:
1. wqy为缺省字体,即使只是安装英文系统。而且字体渲染调校的很好,解决了中文应用的最大难题
2. 缺省仓库里的软件很全。可以说Ubuntu是实用主义者,把免费的东西都带上,不管你是否有版权,专利什么的障碍,包括硬件驱动,媒体解码器等,还有aMule
3. 我喜欢它的tsclient,不明白为什么Fedora,还有 OpenSUSE 的都一直那么弱。

Ubuntu 三个让我不爽的地方:
1. 安装过程中设置时区没有 UTC 选项,对于双系统来说会很痛苦.
2. 为什么 apt 自动配置有 deb-src 呢?我完全不需要它啊。脑残
3. 仓库里几乎啥都有了,但是没有 tor,为什么呢?

Fedora 三个不爽的地方:
1. 图形驱动为了开源事业进行活跃变更导致不稳定我就认了,但这个 SELinux 对桌面用户实在是不好的体验,和 Vista 的 UAC 有一拼
2. 缺省没有安装调整屏幕分辨率工具,也比较脑残
3. 参考上述 Ubuntu 三大亮点,呵呵

Fedora 三个酷的地方
1. 我确实曾经是一个 apt 爱好者来着。但是现在的 yum 实在是进步很大,delta rpm,LZMA/XZ 压缩,还有 fastestmirror 插件。总之 yum update 比 apt upgrade 体验好很多
2. 追求自由,拒绝封闭。想知道Linux最新的桌面技术/图形驱动是个什么状态,就看 fedora,它第一时间提供out of box方案给用户,让上游项目得到实际应用反馈,促进了这个圈子生态链发展。另一方面它也很纯粹,比如ffmpeg这样仅仅是专利有问题的包都没有提供,这势必降低它对普通用户的吸引力。虽然我觉得不方便,但确实钦佩它坚定的立场
3. fedora liveusb-creator 有一个 win32 版本。事实上 Ubuntu 我也是用这个工具制作出 Live USB 后才安装的。节省刻盘无所谓,环保最重要

Topic: 

Ubuntu 9.10 LiveCD 内置了 broadcom 无线网卡的驱动

broadcom 网卡驱动是需要 firmware 的,但这个东东由于许可原因,以前一直没有能在免费的 Linux 发行版里提供(RHEL倒是有这个)。这回 9.10 新增了一个支持的法子

就在光盘 pool 目录里面一个叫 bcmwl 的包,就是 Broadcom STA driver。不过要成功安装还依赖光盘上另外两个包: patch 和 dkms,都用 dpkg 安装就好

最后会生成一个 wl.ko 的模块,modprobe 加载一下,无线网卡就能用了。

Ubuntu 在提供一个可靠易用的桌面方面,确实做得不错,强烈建议使用9.10。。。。我,我还是继续追rawhide吧...

Topic: 

Oracle clarifies plans for Java tools and OpenOffice

摘自 h-online

Oracle 更新了其处理现有 Sun 业务的计划的 FAQ (PDF 下载),变更的部分包括如下4个开源产品:

Classfish,将继续开发,it will be "actively supporting the large Glassfish community". The company does say that it will "invest in aligning common infrastructure" between its Oracle WebLogic server and Glassfish.

Netbeans,会继续作为开源产品提供,但要注意其面临另外的 Oracle 两个免费开发工具的竞争——Oracle JDeveloper, Oracle Enterprise Pack for Eclipse。 JDeveloper 将会作为 Fusion middleware 的开发工具长期存在, Netbeans 肯定不能再获得以前那样公司的关注了

OpenOffice 的未来则得到了保证,"After the transaction closes, Oracle plans to continue developing and supporting OpenOffice as open source". Oracle plans to offer a commercial license for OpenOffice for larger customers who require support and enterprise tools.

VirtualBox,将和 Sun 的其他虚拟化产品一样继续支持,但没有作具体的说明

最被关心的可能还是 MySQL,仍然只是“花费更多的资金来开发,和Oralce其他的数据库产品一起销售,就好比我们的 BDB, InnoDB 引擎等开源产品。。。。”

Topic: 

关于 Mobile Web 开发中的 Content-Type Header

偶很久以前发布在内部 wiki 上的, :)

参考:http://www.developershome.com/wap/xhtmlmp/xhtml_mp_tutorial.asp?page=mimeTypesFileExtension

XHTML MP 可以使用三种文档类型

  1. application/vnd.wap.xhtml+xml
  2. application/xhtml+xml
  3. text/html

OMA 推荐的标准 MIME 类型为 application/vnd.wap.xhtml+xml . 在某些手机浏览器上,必须使用这个类型才能正确显示

application/xhtml+xml 也可以采用,这个是 XHTML 建议的文档类型 (W3C 标准)

但是,某些情况下可能还是需要返回 text/html 类型,这是因为有些老的浏览器不支持 application/vnd.wap.xhtml+xml 或 application/xhtml+xml,比如 IE 6 就会弹出一个对话框让你打开...

【既然我们是提供移动体验,为什么还考虑 IE6 这种东西呢???我的想法是,人们有可能在别的媒介上看到 m.vip.sohu.com 或者 m.mail.sohu.com 这样的域名,他们有可能会用 IE 打开来看看,对于这种情况,我们最好是让他能在桌面浏览器上也了解到这个页面的功能,而不是粗暴的让他下载一个 xml 文件。 (qyb)】

解决方案是:检查用户浏览器发过来的 Accept,如果它能支持 application/vnd.wap.xhtml+xml,那么 response Content-Type header 就是 application/vnd.wap.xhtml+xml ;如果能支持 application/xhtml+xml,那么 response Content-Type header 就是 application/xhtml+xml;如果什么都不支持,那就返回 text/html

另外,页面必须是 UTF-8 编码, GB编码的 XHTML 在某些手机上无法识别

Topic: 

闪电邮箱移动版本功能更新

在我们三周的产品更新计划里,10月15日这次发布对最终用户来说最大的增强就是移动访问能力的改善.

大概半年多前,我们已经去掉了对 WML/WAP 1.3 的支持——当时得到的一个数据是现存的手机有 80% 支持 WAP2.0,在售的手机有 95% 支持 WAP 2.0。这次进一步增加了色彩和图标的使用,让用户得到更佳的视觉体验,而且针对智能手机也做了一些优化。

无图无真相:

  • 微软刚刚发布的 Windows Phone 6.5
  • 这是 Palm Pre/WebOS, 传说电信要定制?
  • Android,也就是中国移动的 OPhone
  • 当然少不了iPhone,中国联通

GMail 大概维护了有4套webmail UI:普通Ajax/基本HTML/WAP/Mobile Ajax 。 我们精力有限,可以肯定 Basic HTML 不会提供了,或者说我们的 WAP 版本也算一个 Basic HTML ,在 Ajax Load 过程中,已经在提示用户可通过 m.mail.sohu.com 进行访问。我们会继续完善我们的这两套 UI, Mobile Ajax 有兴趣,但还没有规划。

最后,mail.sohu.com 这个入口是能够识别绝大多数的移动浏览器并自动重定向到移动版本 m.mail.sohu.com 上的,如果您的手机不是这样,希望能告诉我。//beg

下一次发布是 11/5

Topic: 
订阅 RSS - 技术