发布一条旧闻

本来写了一个 Python 2.4.x 的 patch,让 Python 可以 native 支持 IrDA socket。但是 Python 的维护者告诉我 Python 2.5 早就 freeze,除非 bugfix 否则不考虑接受新的 feature。因此就做了一个 Python 扩展,至于维护人员认可会这个 patch 并加入到 2.6 里面去就看我的努力吧。

扩展大约一周前就做好,在邮件列表上发布了,但是无人响应,似乎是 Python-CN 的用户有红外设备的不多。所以还是在 Blog 上贴出来:如果你希望用脚本语言对红外设备(手机、PALM、PDA)通信编程,请考虑我的这个扩展

扩展这部分的代码大部分是修改 Python 的 socket 模块的,所以 License 当然也是 Python 的。

代码 checkout 地址:
http://pymobilesync.googlecode.com/svn/trunk/irdasocket/

预编译好的 Py2.4 for Win32 的包下载:
http://www.dup2.org/files/irda-0.1.win32-py2.4.exe

该 win32 版本是在 Visual C++ Toolkit 2003 + .NET SDK 1.1 + Windows Platform SDK 环境编译。感谢Compiling Python 2.4 extensions with Microsoft VC Toolkit 2003这篇文章教我们如何让 distutils 和这些免费工具一起工作。

下面是测试代码:

  1. from irda import *
  2. irdaobject = irda()
  3. devicelist = irdaobject.discover()
  4. print devicelist
  5. firstHint(devicelist[0][3])
  6. secondHint(devicelist[0][4])
  7. irdaobject.connect('OBEX')
  8. irdaobject.close()
Topic: 技术

推出“DUP2推荐软件”

为了防止有读者只订阅我的 blog,而没有订阅我和我弟的合集,所以这里重复发一遍《推出“DUP2推荐软件”》

虽然踏入互联网服务业有 8 年了,但这才是首次独立以个人的力量推出一项互联网服务。在断断续续筹备了 2 个多月后,终于可以说我也是"个人站长"了。

目标服务对象:喜欢自由软件,而且对软件许可很在意的朋友们。

在以下情景中请考虑使用这项服务:
* 给亲戚朋友装机的时候
* 在公司 IT 部门预制 Ghost 镜像的时候

* 当您需要某项软件,在使用华军、天空... baidu、google 之前

如果您认可这项服务,请帮助我们推广它。

最后,如果您觉得本项服务中应该增加某个软件,请和我们联系。但是这里有一条原则:软件必须是我们所亲身使用过的,而且确实感到非常有帮助的软件。当然,我们也欢迎任何人成为该项服务的正式维护者。

Topic: 文化 生活

谨慎乐观今年国际米兰的形势

意甲上周末已经开踢了。国际米兰先进三球,后被佛罗伦萨扳回两球。有些危险。

作为国际米兰的拥趸,我并不特别看好今年的国际米兰。即使能夺冠,但是这种建队方法是不值得称道的。国际米兰一直以来都是夏季里开赛前的冠军,这回抢了一批牛人,很像当年的皇马。皇马刚组成银河战舰时,其实还是很强的,但是这种强也许注定了以后的萎。

当然,从经济上说,因为尤文降了级,趁便宜赶紧买人,以后等尤文回来了,再卖回去也赚了。

谁知道呢,我反正觉得曼齐尼还是有些年轻,不能够像卡佩罗那样压得住场面。

不过不管怎样,国际米兰也放弃不了,就像中国国家队一样

Topic: 运动

推出“DUP2推荐软件”

在页面右上角,添加了一个链接“DUP2推荐软件”。经过两个月时间,拖拖拉拉,我们哥俩终于把这个给做出来了。

为什么要做这个?偷个懒,把“DUP2推荐软件”的说明文字照抄如下:

无意中发现 majorgeeks.com 这个站点,立刻就喜欢上了。它软件搜集的很齐全,我一直想找的 Win2000 下的免费防火墙就是从这里发现的;而且 freeware/shareware 都区分的很好;软件下载还有多个镜像(当然这也是它做的有名的原因),感觉上从这里下载也不怕被种下什么恶意的东东。

后来看大家 blog 上时常就贴出自己用什么什么软件,做什么什么商业软件的替代者,于是就萌发了这个念头:把常用的自由软件、免费软件收集起来,供大伙儿下载软件的时候做个参考。

自由软件和免费软件的区别简单地说就是,自由软件不但是免费的,而且软件的源代码你能够获取到,你可以修改它并把它作为自由软件二次发布

由于普通人群缺乏注册共享软件的渠道,而且也缺乏这个意识,所以这里收集的软件不包括任何需要收费才能正常使用的软件。幸运的是,即使是自由软件和免费软件,几乎也已经足够解决 95% 以上的日常需要了。

收录软件的原则是,软件必须是我们所使用过的,而且确实感到非常有帮助的软件。否则优秀的软件太多了...我们必须专注在我们认为的最正确的事情上。

另外一个原则是,如果同样的产品同时有自由软件和免费软件,那么这里通常会仅收录自由软件,除非有非常特别的理由才会加上免费软件。

为了方便您即时获得我们更新的DUP2推荐软件升级信息,侧栏提供了订阅地址,请您订阅。另外每个软件的更新也有相应的feed,太多了,就不列在侧栏了。

Topic: 文化 生活

商务英语之"Due Diligence"

前不久从老板那里学习到这么一个 phrase 的发音,"[dju:] [di:]"。大意是投资方在对目标进行投资之前,需要走一道程序来考察公司的运营、资产负债状况。对于高科技公司而言,主要的资产可能是知识产权、人力资源,所以甚至会出现投资方到目标公司里观察办公流程,挨个同核心员工聊天的事情。

虽然我能很熟练的吐出"[dju:] [di:]"这个发音,但对于"[di:]"究竟代表什么单词却一直没有任何概念(due这个单词倒是能猜出来)。更为搞笑的是有次当我在对话中引用这个短语后,另外那人仿佛赞同似的说了一句"[di:] [di:]",然后我们双方互相疑惑的对视,各自揣摩洋泾浜水平有没有在这次交锋中落于下风。

今天终于在最近展开的英文学习过程中读到了这个短语——"Due Diligence"。下回如果有人敢在我面前说 "D-D",我一定用 "Due Diligence" 杀他个溃不成军。^_^

附:我老板来自波士顿,那个说"D-D"的家伙可能发音来源于硅谷,现在相当怀疑东部西部有不同习惯的缩略发音。

Topic: 商业

XviD 压缩后文件大小不符合预期结果的原因和解决方法

Oversized/Undersized explanations - Doom9's Forum 翻译而来

XviD 论坛有一个问题被反复提出:压缩后的文件大小和和指定的大不相同。本文试图解释文件大小不一致的原因,并指出解决之道。

让我们从基础知识开始,要知道弄明白问题发生的根源后就离解决它很近了。

基础知识

1. 量化
XviD 属于有损压缩,即它会把一些认为无用的画面细节忽略掉。每一帧画面会指定一个 quantizer (中文翻译为"量化因子"),然后据此进行压缩。
那么:
量化因子为 1("Q1") 意味着最高质量的图象和最大的文件(高码流)

量化因子为 31("Q31") 意味着最低质量的图象和最小的文件(低码流)

我们的目标是尽可能高的质量,以及尽可能低的码流...
=> 通常不用 Q1 做压缩,因为码流太高了(如果要备份 DVD,还不如保留原始的 MPEG-2 流)

Q2 则能得到很好质量的图像,而且比 Q1 来要小很多(quality/bitrate并不是线型的)。MPEG-4 被设计为低码流应用(相比较 MPEG-2 而言),我们可以假定对于 XviD 压缩来说,Q2 就是最高质量的压缩了。

2. 文件大小

相同的量化因子前提下,不同的视频源压缩后的大小也是不一样的。有的容易压缩,而高分辨率、大量细节、快速动作、明暗变化大的电影则很难压缩。

3. two-pass 压缩(或写成 2-pass)
为了在指定文件大小的情况下得到最大的质量,XviD 提供了 two-pass 处理模式。
- 首先固定量化因子为 2 压缩一遍,产生一组参考数据(stat 文件)

- 根据参考数据进行二次压缩,编码器不断调整码流来优化整体质量

那么就产生了三种情况:
● 1st pass 得到的文件比预料的大,在 2nd pass 压缩中编码器就不得不采取更高的量化因子
● 1st pass 得到的文件比预料的小,那么 2nd pass 中编码器就会在某些帧用 Q1 进行压缩

● 1st pass 得到的文件和预料的一模一样...当然从统计学上来说这是不可能发生的,而且这种情况下我们也不用再继续讨论了

现在问题发生了

有的视频太容易被压缩了(或者说 1st pass 得到的文件比指定的要小很多),于是过多的 Q1 帧被产生,但这会扰乱编码器的码流控制系统,最后就得到了一个 oversized 结果。

oversize的解决方案

1. overflow treatment 设置的调整
该设置被用于在 2nd pass 压缩中,设定码流控制进行调整的强度。取值越大,越能有效平衡 Q1 帧。
那么我的建议值是:
("Encoding type" > Two-pass - 2nd pass > "more...")
- overflow control strength: try 10 or 20
- Max overflow improvement: try 10 or 20

- Min overflow degradation: try 10 or 20

2. Quantizer capping
很简单,就是避免 XviD 用 Q1 压缩。
把每种帧类型[I/P/B]的最小量化因子都设成 2 (最大值还是保留 31)
1.1.0-final 之前是
("Advanced option" > Quantization),
从它以后是
("Quality preset" > Userdefined > "more..." > Quantization)

这样就不再会得到一个超大文件了。但...这种方式也导致根本不再有提高质量以得到预期码流的余地了。

除了上述两种编码器相关的解决方案,其实还有更好的思路:我们的目的是填充剩余的空间,那么就可以用更高的分辨率,更高的音频质量,更高质量的定制矩阵...等等

undersize的解决方案

从上面说的去举一反三吧...

如何提前预料到文件大小无法控制呢?

上面已经提到,1st pass 将产生一个日志文件,里面就包括 Q2 压缩结果的大小。那么如果这个数字和你预期的相差非常远,就很可能发生该问题了。

怎么看到 "size" 信息呢?

用 StatReader 打开该日志文件就可以看到了。该程序被包含在 official release 里面(比如 Koepi build)

Topic: 技术
订阅 RSS - BT的花