技术

关于 CMM

把互联网和 CMM 扯到一起看起来很怪异;但是,最近当我思考我们团队做项目的能力改进在哪些方面的时候,首先想到的就是7个字:能力成熟度模型。别的且不论,至少这个字面意思说出了我想要表达的。

这不仅仅是软件工程方法问题,Joel 测试得12分能保证互联网项目成功么?互联网商业环境如此多变,用户如此容易流失;用户安装成本是零,同时它'卸载'你几乎没有心理负担;我们的关系不是购销合同,而是不经意的鼠标点击;没有版本升级,永远是 beta;产品经理和技术开发的配合,从来没有像今天这样紧密无间。

再牛逼的UED,也阻止不了服务器给你蹦一个500;再牛逼的高性能高可伸缩性技术,仍然可能被用户骂一句垃圾。卓越的互联网产品背后,一定是有卓越的互联网团队。我们总是说产品/运营/技术缺一不可,但团队究竟是怎么样运行的,流程的好坏是否有一个衡量的标准,好像缺乏专业的研究。

研究工作归学者,这件事情本质上还是工程,是实践出来的,2010 我们还可以做的更好一点。现在我能去想象到的境界,也就是 Defined 这个级别;如今离 Repeatable 好像还有一点点距离....话说回来,在互联网世界,做不到第二级,早晚是死

Topic: 商业 技术

给搜狐闪电邮箱用户圣诞礼物一枚

https://mail.sohu.com

这个还没有正式推广,因为对 IE 的缺省设定来说,要求所有的资源都是 https 的,否则用户会碰到很烦人的警告。

俺们的资源都在搜狐的 CDN 上,但给现在 CDN 都加上 https 支持不太现实。因此需要我们自己来想法搞定这件事,如果是 http 请求就调用 CDN 资源,如果是 https 请求就调用 mail.sohu.com 下的资源。程序还有几个地方要调整,部署资源的时候也额外多一道工序。

预计一季度会正式上线..

PS:半个小时前,收到了搜狗输入法的圣诞礼物——搜狗浏览器。我一边奇怪怎么输入法的更新对话框里多了一个谷歌搜索的正面推介,一边就毫无戒心的点了“下一步”,然后发现浏览器已经被安装上了。中午我还在和杨总说悲观的预期市场份额也就15%-20%,晚上就来惩罚我了。。。我。。。我平时还是多用 Fedora 吧

Topic: 技术

闪电邮的前世

经过大约一年半的准备和磨合,当初构想的 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: dada 技术

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: 技术
订阅 RSS - 技术 | BT的花