博客

We are the Champions

是在周六到天津的火车上读报的时候知道这条消息.

这个冠军来的有些尴尬?

我可不这么认为。至少我们一直在足球场上 keep on fighting till the end, 所以 no time for losers cause we are the champions - of the italy

不管怎么说,莫拉蒂和扎队配得上这个冠军奖杯

我对新赛季的最大愿望现在改成,超过 Milan 9 分夺冠.

Topic: 运动

用免费工具 VC Toolkit 2003 编译 Mozilla Firefox 1.5

由于编译过程中需要生成的临时文件 xpidl.exe 要链接 glib 和 libIDL,对应 MOZILLA_1_8_BRANCH 来说,用 vc8 链接它们有些问题(Visual C++ 2005 Express Edition),需要的 patch 都在 trunk 里面。所以如果是编译 Firefox 1.x,1.5.x,甚至以后的 2.0.x 的话,最好还是用 Visual C++ Toolkit 2003

但另一方面,Visual C++ Toolkit 2003 是一个很不完整的开发平台,欠缺不少编译需要的工具和库,下面是我的编译环境配置过程,供参考:
1. 安装 Visual C++ Toolkit 2003,30兆安装包.
2. 安装 .NET Framework Redistributable Package version 1.1,20兆安装包(当然可能你的 XP 在升级过程中已经具备了这个环境)
3. 安装 .NET Framework SDK version 1.1,100 兆安装包
4. 安装 Platform SDK. 我半年前只有"Microsoft® Windows Server 2003 SP1 Platform SDK - April 2005 Edition",现在最新版是"Windows Server 2003 R2 SDK - March 2006 Edition". 我只安装了:
 Configuration Options(但没有安装 Register Environment Variables)
 Microsoft Windows Core SDK(Tools、Build Environment、Redistributable Components)
 Microsoft Web Workshop (IE) SDK(只安装了 Build Environment)
5. 安装 MASM32,半年前是 8.2,现在最新版本是 9。免费下载,3兆安装包。这包里面提供了 ML.EXE 和 DUMPBIN.EXE 是编译需要的
6. 下载 moztools-static.zip ,以及 vc71-libIDL-0.6.8-bin.zip、vc71-glib-1.2.10-bin.zip. 安装方法为:
 6.a 解压 moztools-static.zip 到 C:\moztools
 6.b 解压缩 vc71-libIDL-0.6.8-bin.zip、vc71-glib-1.2.10-bin.zip. 比如到 C:\vc71 目录
7. 安装 cygwin,除了缺省包以外只需要
 Devel 类别下选:patchutils, make 3.80 (not 3.81!)
 Interpreters 类别下选:perl
 Archive 列表下选择:zip, unzip

 安装完以后把 cygwin 环境里面的 link.exe 改个名字,因为路径上可能有冲突

基本上免费工具就这么多了,但是还是缺,需要 hack.....
1. VC Toolkit 2003 没有缺省带 lib.exe, 要获得有两个方法
 1.a 要么是安装 Platform SDK 的时候选择 Microsoft Windows Core SDK -> Tools -> Tools (AMD 64-bit) 来获取
 1.b 而我当时看到 64bit 就害怕,就自己创建了一个 lib.bat,内容为:
  link /lib %*
 然后修改 mozilla 关于 lib.exe 的相关配置
  修改 configure、nsprpub/configure,寻找 ""AR=lib"" 以及 ""HOST_AR=lib"" 的地方,修改成 lib.bat
  修改 security/coreconf/WIN32.mk,寻找 ""AR = lib"",修改成 lib.bat
 以上方法参考链接
2. 生成 msvcprt.lib (在 Cygwin 环境下..)。
 进入 ""C:\Program Files\Microsoft Visual C++ Toolkit 2003\bin"",执行
  echo ""LIBRARY msvcp71.dll"" >msvcprt.def
  echo ""EXPORTS"" >> msvcprt.def
  dumpbin /exports msvcp71.dll | awk '{ if (FNR > 19 && $4 ) print $4}' | sed -e 's/\r//' >> msvcprt.def
  link /lib /def:msvcprt.def
  mv msvcprt.lib ../lib

 参考 链接

在 cygwin 自己的 home 目录下创建 .mozconfig
. $topsrcdir/browser/config/mozconfig
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/my_firefox
ac_add_options --enable-optimize
ac_add_options --enable-crypto
ac_add_options --enable-static
ac_add_options --disable-shared
ac_add_options --disable-debug
ac_add_options --disable-tests
ac_add_options --disable-activex
ac_add_options --disable-activex-scripting
ac_add_options --disable-xpconnect-idispatch
ac_add_options --disable-accessibility

ac_add_options --disable-test

设置编译所必须的环境,比如创建一个 vc71.bat 文件
@echo off
rem --- Basic config, with VC7 libIDL files
SET MOZ_TOOLS=C:\moztools
SET GLIB_PREFIX=C:\vc71
SET LIBIDL_PREFIX=C:\vc71

SET CYGWINBASE=C:\cygwin

rem --- Clean slate start
SET INCLUDE=
SET LIB=

SET PATH=C:\;C:\windows\system32;C:\windows;C:\windows\system32\wbem;

rem --- Then prepend Cygwin path

SET PATH=%CYGWINBASE%\bin;%PATH%

rem --- Set VC7 compiler environment vars

CALL ""C:\Program Files\Microsoft Visual C++ Toolkit 2003\vcvars32.bat""
CALL ""C:\Program Files\Microsoft Platform SDK\SetEnv.Cmd"" /XP32 /RETAIL

CALL ""C:\Program Files\Microsoft.NET\SDK\v1.1\Bin\sdkvars.bat""

rem --- Add glib/libidl to build environment
SET PATH=%PATH%;%GLIB_PREFIX%;%GLIB_PREFIX%\bin
SET INCLUDE=%GLIB_PREFIX%\include;%INCLUDE%;

SET LIB=%GLIB_PREFIX%\lib;%LIB%

rem -- moztools comes last after glib/libIDL

SET PATH=%PATH%;%MOZ_TOOLS%\bin;C:\MASM32\bin

bash --login -i

最后执行这个 bat 进入编译环境,进入 mozilla 源代码目录,

 make -f client.mk build

如果编译过程中报告什么没有 comsupp.lib,可以打个 patch 让程序不去找它.
参考http://www.koka-in.org/~zophos/SideB/daytripper/index.rhtml?date=20050208
--- browser/components/build/nsModule.cpp.orig 2005-02-07 14:50:22.350250000 +0900
+++ browser/components/build/nsModule.cpp 2005-02-08 18:34:08.470375000 +0900
@@ -58,7 +58,7 @@
#include ""nsPhoenixProfileMigrator.h""
#include ""nsSeamonkeyProfileMigrator.h""
#if defined(XP_WIN) && !defined(__MINGW32__)
-#include ""nsIEProfileMigrator.h""
+//#include ""nsIEProfileMigrator.h""
#elif defined(XP_MACOSX)
#include ""nsSafariProfileMigrator.h""
#include ""nsOmniWebProfileMigrator.h""
@@ -89,7 +89,7 @@
NS_GENERIC_FACTORY_CONSTRUCTOR(nsProfileMigrator)
NS_GENERIC_FACTORY_CONSTRUCTOR(nsSeamonkeyProfileMigrator)
#if defined(XP_WIN) && !defined(__MINGW32__)
-NS_GENERIC_FACTORY_CONSTRUCTOR(nsIEProfileMigrator)
+//NS_GENERIC_FACTORY_CONSTRUCTOR(nsIEProfileMigrator)
#elif defined(XP_MACOSX)
NS_GENERIC_FACTORY_CONSTRUCTOR(nsSafariProfileMigrator)
NS_GENERIC_FACTORY_CONSTRUCTOR(nsOmniWebProfileMigrator)
@@ -136,11 +136,10 @@

nsProfileMigratorConstructor },

#if defined(XP_WIN) && !defined(__MINGW32__)
- { ""Internet Explorer (Windows) Profile Migrator"",
- NS_WINIEPROFILEMIGRATOR_CID,
- NS_BROWSERPROFILEMIGRATOR_CONTRACTID_PREFIX ""ie"",
- nsIEProfileMigratorConstructor },
-
+// { ""Internet Explorer (Windows) Profile Migrator"",
+// NS_WINIEPROFILEMIGRATOR_CID,
+// NS_BROWSERPROFILEMIGRATOR_CONTRACTID_PREFIX ""ie"",
+// nsIEProfileMigratorConstructor },
#elif defined(XP_MACOSX)
{ ""Safari Profile Migrator"",
NS_SAFARIPROFILEMIGRATOR_CID,
--- browser/components/migration/src/Makefile.in.orig 2005-02-07 14:50:22.787750000 +0900
+++ browser/components/migration/src/Makefile.in 2005-02-08 09:00:43.763625000 +0900
@@ -84,8 +84,7 @@
ifeq ($(OS_ARCH)_$(GNU_CXX),WINNT_)

DEFINES += -DPSTOREC_DLL=\""$(subst \,\\,$(WINDIR))\\system32\\pstorec.dll\""

-CPPSRCS += nsIEProfileMigrator.cpp \
- $(NULL)
+CPPSRCS += $(NULL)

endif

ifneq (,$(filter mac cocoa,$(MOZ_WIDGET_TOOLKIT)))

Topic: 技术

微软的免费 C++ 编译器

虽然已经有 CygwinMinGW 的 gcc/g++,但在 Win32 平台下,被广泛接受的还是 Microsoft 的 VC。而且 firefox、python 这样的重量级开源项目,win32 平台上的二进制版本,也仍然是用 VC 系列编译的.. 因为 VC 更加稳定.

在当今一片免费开源的潮流下,微软也为贫穷的程序员们提供了免费 VC 工具,先后是 "Visual C++ Toolkit 2003" 和 "Visual C++ 2005 Express Edition". 或者说 "VC 7.1" 和 "VC 8".

现在在 Visual C++ Toolkit 2003 的主页上,下载链接已经被去掉,转而劝告人们使用 Visual C++ 2005 Express。但实际上,VC 7.1 还是很有用处的,比如 Python 2.4 和未来 Python 2.5 的扩展编译都应该在 7.1 下完成。

这里提供一个下载使用 vctoolkit 2003 的方法,去 google 上搜索 VCToolkitSetup.exe,还是很有一些下载链接的... 它的 MD5SUM 为: 90d8b963ca196aa9855b2ca6c3174c14

计划下篇 blog 介绍用免费工具编译 firefox , sigh.. 还是很麻烦的. 大半年前试着编译了一下,然后顺手更新Mozilla developer center 上的中文版 Windows Build Prerequisites. 好像国内在 win32 上编译 fx 的很少很少的说.

Topic: 技术

恶狼家族

现在达达接触的故事类型越来越丰富,反派典型大灰狼出现的频率慢慢增高。有时候我会恶狠狠的吓唬她:“我变成大灰狼了”,同时模仿杨丽萍活动五指,扭曲面部作狰狞状。

这套把戏玩多了以后,当我再次如法炮制的时候,她说:我是狼宝宝,我愣了一下,就不再吓唬她了。从此她乐此不彼,给家里其它人都冠以狼的称呼:狼妈妈、狼奶奶、狼小姨、狼叔叔... 还有狼姥姥,我纠正她,应该是狼外婆. ^_^

后来作为狼爸爸就和狼宝宝一起玩抓三只小猪的游戏。当然我们是很有智慧的狼,每次吹倒两座房子吃完两只小猪后,就决定放过第三只小猪,不去爬那个烟囱了.

昨晚回家,她已经决定不当狼宝宝了。要当三个和尚——她是小和尚、奶奶是胖和尚、妈妈是瘦和尚... 我想了想,觉得只剩下小老鼠这个角色分配给我了,于是自告奋勇当小老鼠.. 结果她就冲我喊,“不许偷吃蜡烛”,然后拉着瘦和尚要踩小老鼠. wuwuwuwu....

Topic: dada

从莫奈到毕加索

星期天,趁着天气不是那么热,和老婆孩子一起去世纪坛看《从莫奈到毕加索》的展览

这些艺术品的拥有者——克里夫兰艺术博物馆——因为刚开始长达5年的装修活动,不得已将旗下的藏品在这5年中放到全球巡展,身在北京也因此有机会可以近距离一窥。

本来从画册上看就觉得好,但真到了它们的面前才切身感受到其蕴含的美和感人的力量...哦,对于普通观众来说毕加索或许太高深了一些,但梵高和莫奈的作品确实是可以轻易把我们所感染的(后来从朱青生老师的讲座——《现代艺术的第一次和第二次革命》里面看到,梵高的画里面有写意的成分,所以在东方受到更多的欢迎)

说说我的印象:

《罗曼•拉科肖像》和《读》是画册里常见的图片

老婆特别喜欢《卖苹果的人》,还有塞尚的《小溪》

不敢相信真能近身看到梵高的《梧桐树群》、《圣雷米的白杨》

罗丹的《思想者》可能是这里面最大牌的作品了,不过这批展品中我最喜欢的是他的《青铜时代》,第一感觉是居然有这么好看的男性身体,时尚杂志或者广告上的裸体或半裸男人通常是肌肉型的,电视上走T台的男模则被衣服包裹着,而且看走路就觉得脱了也好看不到哪里去...《青铜时代》看上去比照片上的《大卫》更匀称,更柔和一些。这尊雕塑真人比例,大概和我一般高,头部比我小,脚比我要大许多,我围着它走了好几圈,实在有些想摸摸它的屁股,^_^

《秘密生活》我觉得很容易看进去,还有马克思·恩斯特版本的《草地上的午餐》非常有趣.

相比这些艺术品的价值而言,50元的票价简直是太便宜了,安检很简单,不许带水进去,扫描一下是否身上有金属。如果确实心怀叵测,向《圣雷米的白杨》吐口痰完全是可能的,从此以后介绍艺术史的时候可能都会带上你的大名。强烈建议在它们离开北京之前去那里消磨一个下午,这可能是你这辈子唯一的机会近距离接触这些真迹,而且,还有很多很有气质的单身 GGMM 逡巡其中.

另外,也强烈建议在去之前,先看看《现代艺术的第一次和第二次革命》补补课,这个链接必须用 IE 打开.

Topic: 文化 生活

那天她敲了我宿舍的门

玩一次标题党,哈哈。从搜索引擎过来的同学们不要扔鸡蛋,如果你还没怎么看这个小说,希望我的附件能让你方便点(我没有整理网页,里面有很多和小说内容无关的留言,请多包涵)。

昨天一个兄弟给我一个链接,本意是给我看这个网页里面的另一个链接,我开始会错意了,就把这个网页看了,发现故事有点意思,但是不全。通过搜索引擎,找到一个似乎是源头的网站,一看66个页面,回去网络条件不行,于是写了几行shell脚本,把页面都下载下来。回去慢慢看。

更新:
看了十几页,纯YY!假得有点多了。

再更新:
突然想起好久没看这个网站了,今天上去看了一下,发现作者说“因为和出版社有合同的原因,我暂时不能把结尾部分发上来”,不知这样的小说如果真的出版了,那些天天上论坛等更新但总是失望的人会不会买。

Topic: 文化

R51e 最近的使用感受

我知道肯定有很多人也在犹豫是不是买这么一款低端的机器. 这里再继续报告:

1. 最近最最让我不爽的就是它的塑料外壳,不知道什么时候蹭掉了一些表皮,就此留下两块灰斑,很难看..

2. 音量比较低... 反正我也不会长时间用它来看片

3. 两个扩展插槽的其中一个是 ExpressCard,反正我的 PCMCIA 卡插不进去

4. 电源管理支持自定义电量掉到 n% 后再开始充电

5. 4500 转的硬盘用着用着就感觉有一些慢,但除非特别在意性能,否则也算可以忍受

6. 有别人反映屏幕这不好那不好,但我还是觉得挺满意的.

Topic: 生活

最近做的事情

由于下决心不在新买的这台 R51e 上安装没有许可证的软件,所以也就没有了 outlook,因此我的手机也无法和 PC 同步了。

本来对于 Ericsson/SonyEricsson 的手机而言,有一款 FMA 是不错滴,可是它对中文的支持有故障,同步的地址本会丢失,于是只能自己动手了...

最终计划是用 Python 完成一个能和 ThunderBird 同步的程序。近两周来课余时间一直在尝试,完成的东西包括:
1. Python 的 irda socket patch. 目前已经能在 win32 下工作的很好,还特意加入了 python-dev 邮件列表,结果有些受打击——python 2.5肯定没戏了,看 python 2.6 会不会有维护人员对这个特性感兴趣吧
2. 基于 irda socket 的 irda 类
3. 实现 obex 协议的 obex 类,目前包括 connect/disconnect/get
4. 定义了一个承载 obex 的传输层接口类,以及从它继承来的 irda 的实现
5. 正准备开始实现 IRMC-SYNC, 基本协议已经了解七七八八了,感谢某牛人翻译的资料
6. 开始研究 sqlite,计划先实现 phone 和 sqlite 之间的同步再说.

对于 oo 我可以说完全是一个白痴,这次是第一次用类实现比较复杂的结构,战战兢兢,也没有信心把这个东西的源码给别人看 :)

关于手机同步研究到这里,已经感觉有些吃不消了,还有一个及其麻烦的操作 thunderbird 地址本的问题,以及最终的 GUI 操作界面.. 估计整个七月都搭进去了. :(

Topic: 技术 生活

齐达内,好样的!

去tm的世界杯吧,又不是世界大战,你可以踢我,可以侮辱我,但是不准侮辱我的亲人,谁侮辱了我的亲人,我就让他好看!

如果我是法国人,我绝不会责怪齐达内这种行为,世界杯不过是一个游戏而已。

我觉得这种离开方式一点也不遗憾,相当完美!

Topic: 生活

齐达内如是说

问:如果时间可以像胶片一样回转,您愿意重新来过一遍这场比赛,以另外的方式离开吗?

答:不了,就这样离开好了。。。您知道,我不是一个完美的人。我只是一个普通的男人,我只想平静的生活。我只想尽量去诚实的生活。

原文链接见"http://plod.popoever.com/archives/001013.html"

突然想到,也许是有点缺憾才是真正的完美,比如马拉多纳也是这样离开了美国世界杯

董路写的齐达内的神秘微笑点燃了马特拉齐的羞愧难当也非常不错

Topic: 生活
订阅 RSS - 博客 | BT的花