Profilo di ScratzScratz 的小果园FotoBlogElenchiAltro Strumenti Guida
21/11/2009

Checksumz

Checksumz is my first finished open-source applications on kenai. It utilizes JDK's buid-in algorithms for computing checksums of a file or some text. My tests shows it computes very fast, at least faster than VisualHash, another checksum application written in C#, which on the other hand tells Java is NOT slow.

In fact, this was done months back for my pesonal use. I refactored the code structure, and ajusted some UI elements:

Checksumz

18/11/2009

What If NetBeans Is Gone?

From what Oracle has stated, I see NetBeans is going to be suffered, simply because an open source project can hardly keep growing fast without a commercial sponsor. If this worry unfortunately becomes true, which other Java IDE(s) should I choose? Let me go through some of the famous ones:

  • Eclipse
    It's quite popular but I personally dislike it. I think it's ugly, heavy, hard to use, and has a worst plugin manager.
  • IntelliJ
    Being declared as the best IDE of the world by itself, it's worth to have a try. The only bad news is it's commercial software.
  • JDeveloper
    Also worth to try. If Oracle's acquire of Sun succeeds, it may become a best choice for Java development.
  • JBuilder
    I shouldn't have listed it here because it has become a set of plugins for Eclipse.

If NetBeans dies, perhaps I'll use IntelliJ at home and JDeveloper at office. I don't want to witness NetBeans' vanishment, though I can do nothing to change its future...

07/11/2009

《公众之敌》中的具有现实意义的一段对话

 虽然约翰尼·德普的《公众之敌》并非想象中那么好看,但其中一段对话却非常符合当今国内一些企事业单位的怪现状:

  • How many have you apprehended?
  • We have arrested and arraigned 213 wanted felons.
  • No, I mean you, Director Hoover. How many?
  • Well, as Director, I administer.
  • How many have you arrested personally?
  • I have never arrested anybody.
  • You've never arrested anybody.
  • Well, of course not. I am an administrator.
  • With no field experience, you are shockingly unqualified, aren't you, sir? You have never personally conducted a criminal investigation in the field in your life. I think you're a front. I think your prowess as a lawman is a myth created from the hoopla of headlines by Mr. Suydam, your publicist there. Crimebusters, G-men, you're setting yourself up as a czar? That's running wild in my estimation.
  • A crime is what runs wild.
  • If this country requires a Bureau such as yours, I question whether you are the person fit to run it.
  • Well, I will not be judged by a kangaroo court of venal politicians.
  • Your appropriation increase is denied.

电影反应生活,确实如此。

这次别亏了

公司组织 SCJP 考试,考过的报销,不过的自掏腰包,1500 大洋……

第一轮安排在下下周,所以老大今天上午,严格地说是昨天上午,举行了一次模拟考试。题目是我提供的,但本着三公原则,没有提前偷做……

头夜睡得晚,脑袋恍恍惚惚地有点痛,就这个状态,竟然还能考到足以五十步笑百步的全组第一:差 3 分及格……

考场上没有 IDE,没有文档,没有网络,背题吧……

14/10/2009

《僵尸枪手 2》的一大堆严重 Bug

翘首一等半年多,居然等到一个半成品……没有语音、照搬一代模组、新武器太少等等偷工减料之处先不说,竟然还有不少严重的 Bug,而且有些是整个枪手系列都存在。下面只是其中一些例子:

  1. 人或车很容易被卡在角落或墙边,除非重打或用作弊码过关,根本走不出去。
  2. 红血模式下,如果用大威力武器将某些大僵尸肢解,例如扛火箭炮的,就不会加经验值,吸血也无效;绿血模式因为没有肢解效果,不存在此问题。
  3. 敌人的子弹能穿过篱笆,自己的却不能。
  4. 一些武器和植入体的参数显示有问题。
  5. 第 12 关有个隐秘地点竟然要通过走出地图的方式才能去到。
03/10/2009

《异形枪手 2 - 重装》解析——终极武器篇

武器后面的数值表示“价格 / 准度 / 攻击”,并假定角色的“准度”技能达到 200。

  • GLK P5 GLK P5 10850$ / 高 / 297~360
    现代化的设计品,它使用了枪管冷却系统,从而拥有非常高的射击频率。
    终极手枪。谁喜欢自虐?或者谁有耐心?不过贝克将军那把威力超大的手枪可以考虑,可惜买不到……

  • 飞船 SP200 飞船 SP200 120150$ / 低 / 510~600
    特殊的管口使这把霰弹枪的爆发保持平稳。由于更结实的枪管和扳机的改良,它有高的射速。
    终极霰弹枪。看似平常,用起来却威力惊人的武器!因为打一枪有十颗子弹,每颗子弹都有 510~600 的攻击力,大怪很容易就一下吃好几发。更难能可贵的是其高射速。缺点是没有溅射伤害,所以怕被包围。

  • SLRK 原子 S100 SLRK 原子 S100 235300$ / 普通 / 240~315
    大众型机枪/来复枪技能系列的最新模型。
    终极机枪。拥有本作所有武器中最快的射击频率,也就意味着最快的耗弹速度。正杀红眼的时候,一不注意,没子弹了……

  • 火箭火山 TF5“雨” 火箭火山 TF5“雨” 188550$ / 低 / 1920~2280
    带红外瞄准系统的手持火箭发射器。三根炮管提供了高的射击频率。
    终极火箭发射器(连发型)。范围不错,装弹速度一般,比下面那把原子弹的实用性要强。

  • NTR-40 S1 NTR-40 S1 235500$ / 普通 / 5250~5850
    带核能冲击力的手持火箭发射器。有广阔的毁灭半径,但装弹速度慢。
    终极火箭发射器(单发型)。拥有本作所有武器中最强的攻击力、最大的攻击范围,以及,最慢的装弹速度……因此只能作为辅助,配合其他武器使用。

  • 等离子机枪 SL2000 等离子机枪 SL2000 195000$ / 普通 / 570~630
    等离子枪的下一代。能对任何拦路者造成极大的破坏。
    终极能量武器(连发型)。连发的频率不是很高,而且溅射范围也不太大,所以实用性一般。

  • G5000 离子炮 G5000 离子炮 293000$ / 低 / 3300~3900
    离子枪的原型。加厚的枪管和新的冷却系统提供了更强大的能量聚焦。
    终极能量武器(单发型)。虽然是单发,但射击频率还可接受,只是射出的离子团速度有点慢。装弹速度尚可,威力和范围令人满意。非常不错的未来武器。

《异形枪手 2 - 重装》解析——技能篇

  • 体能 体能
    没有它,生命实在太短暂。高的体能在遭受伤害时保证更长的生命。增长它就提高你的血量。
    不管怎么说,体能这东西当然是多多益善。如果用“吸血鬼”特技,也可以稍微忽视。适合在游戏后期增长。

  • 力量 力量
    这是你的整体坚强度,决定你能携带多少物品。增加它也增加血量。
    官方的这条解释有点误导……本作中物品栏非常大,但是不能存放弹药,该特技增加弹药携带量和少许血量,适合喜欢机枪等高耗弹武器的玩家,放炮的就免了。

  • 速度 速度
    对冲入战场或逃跑有好处。影响你的移动速度——这些可恶的异形想咬你的脖子就更加困难了。
    冲入战场的结果很可能是被一大堆异形卡住走不动,速度快有用吗?注意卡位,逃跑也不需要很快的速度。此技能是垃圾,鉴定完毕!

  • 准度 准度
    要想用任何类型的枪大面积地打击异形的头颅,你就需要大量的该技能。
    本作整合了武器技能,提升该技能可以提升所有武器的威力!绝对不二的升级首选!

  • 智力 智力
    该技能越高,你就越不像门把手,智商越高,你就能用越好的植入体。……你也将变得更为偏执,然后发现自己很可能觉得法国电影更有趣,但那是另一回事了。
    既误导又脑残的解释……本作中的植入体对智力没有要求,智力的作用是少量增加植入体所携带的技能点数,这个得取决于植入体的品质。不怎么实用。

国庆贺词

值我新天朝花甲之喜,恭祝吾党万寿无疆,以浩瀚无涯且四海皆准之主义思想理论精神,一统地球,净化银河,和谐宇宙。

30/09/2009

《异形枪手 2 - 重装》解析——特技篇

在《僵尸枪手 2》千呼万唤始出来之际,总结下 Sigma Team 的里程碑之作的加强版《异形枪手 2 - 重装》中最重要的三个要素:特技、技能和终极武器。分三篇文章发布,首先是特技。

  • 自疗师 自疗师
    你始终享受玩弄自我的乐趣——该技能使你能够自我复原。你的身体将自动再生,只需给一点时间。
    听起来不错,但用起来就不行:即使加满到 200,血量的回复速度在大量异形的摧残下还是不尽如意,而且还只是一点一点回复的。

  • 理财师 理财师
    有些人当它是“偷窃”。你可以当它是“积极省钱”。好的理财师有能力在最奇怪的地方白拿现金。
    鸡肋鸡肋——钱只是开始几关有点紧张,后面就多得用不完了。

  • 夜视眼 夜视眼
    影响你在黑暗中看东西的能力(不需要人工光源的辅助)。
    有了电筒、夜视仪还需要这玩意儿吗?再说这个特技只是把画面上黑暗的部分变白,与正常光照根本是两码事,我的感觉是数值越高越晃眼,越看不清……

  • 吸血鬼 吸血鬼
    绝对爽快的技能。有了这个能力,你的角色可以从敌人身上吸取体能并加给自己。甚至诺斯费拉图也不能做得更好。
    绝对强悍的技能!什么叫“没有强没有炮,敌人给我们造”?有这个技能就再也不必到处找血吃了,而且点数要求也不高,把初期分配的 30 点全部加上去,以后不用再管,就足以横扫最高难度。

  • 催眠师 催眠师
    成为可用精神病人的眼睛进行注视的大师。让你催眠然后控制敌人。古怪的东西!
    搞笑技能之一,用得好的话可以造成一代中异形自相残杀的火爆场面,但是有两个致命缺点:异形自相残杀而死的不计经验值;对付大怪,即使加满到 200 点,催眠速度也是慢得不可忍受。

  • 观察家 观察家
    让你看到隐藏事物,例如隐秘点、隐藏的物品、吉米·霍法和飞机上伸腿的地方。
    新手可以在初期用来找隐秘点,熟练之后就可以无视了。

  • 拳击手 拳击手
    你是一个职业拳击手——可不像米基·洛克那样!在近身格斗中你真的很厉害!
    搞笑技能之二。你能想象赤手空拳去对付全副武装的异形吗?
19/09/2009

仿照无双系列造点武器耍

无双系列的武器名称别具匠心,看得出设计者的用功。我也来为古代名人们打造些山寨神兵,仿照 353M 分五个等级:

黄帝 - 姬轩辕
金剑→黄金剑→轩辕剑→大轩辕剑→圣轩辕剑
战神 - 白起
砍刀→斩刀→狂刀→魔刀→冥刀
汉高祖 - 刘邦
长剑→长烈剑→斩蛇剑→斩神剑→斩天剑
霸王 - 项籍
横枪→横扫枪→西楚霸王枪→天地霸王枪→宇宙霸王枪
国士无双 - 韩信
清剑→风清剑→齐王剑→真齐王剑→真天王剑
唐太宗 - 李世民
迅→疾→霎→瞬→闪
卫国公 - 李靖
镇妖塔→镇魔塔→托月塔→映日塔→顶天塔
宋太祖 - 赵匡胤
三节棍→三节豪棍→卷云→盘龙→旋宇
成吉思汗 - 孛儿只斤铁木真
狼牙→虎牙→灭国→灭世→灭宙
常十万 - 常遇春
平胡→对对胡→清一色→龙七对→天胡
18/09/2009

How to set the default font for Swing applications?

    This is another example of Sun's might-be carelessness just like the boder of JComboBox I mentioned days ago.
    I'm using a Siomplified Chinese edition of Windows 7, and many applications use the elegant Microsoft YaHei as its default font, which is also true for Vista users. For Windows XP or below, the font is the old-fashioned SimSun that doesn't support ClearType. However, even if I run a Swing application with the newest Java in Windows 7, the font is still SimSun.
    I hate Swing's (in fact Sun's) unwillingness to fully respect the system, so I have to give it some commands:

Enumeration<Object> e = UIManager.getDefaults().keys();
while (e.hasMoreElements()) {
    Object key = e.nextElement();
    if (UIManager.get(key) instanceof FontUIResource) {
        UIManager.put(key, new FontUIResource(
                "Microsoft YaHei", Font.PLAIN, 12));
    }
}

    This code will set every component's font to my favorite YaHei. So far so good.
    "But why not use UIManager.getDefaults().keySet() instead? So you can leverage the powerful and clearer for-each loop." Good question, and my answer is: "Try to find Sun's another carelessness!"
13/09/2009

关于“崇洋”

  “崇洋媚外”这个词,一般人都会认为是贬义,甚至带“卖国求荣”的色彩,但我认为只有“媚外”才是贬义,而“崇洋”是中性。“崇”是什么意思?高大,做动词时为意动用法“以之为高大”。我看不出有何贬义,不外乎是一种对美好事物的追求。
  为什么有人会“崇洋”?当然是因为某些外国,例如欧美、日韩等,有很多在中国那以得到甚至根本得不到的东西。像非洲、南美那些穷乡僻壤,有人崇吗?如果有人崇,你会觉得那人卖国求荣吗?下面看看,有哪些东西呢在中国没有呢?我试为列举一些(下文中的外国都是指欧美、日韩等国):
平等
  • 你有选举权和被选举权而不会“被代表”。
  • 你有游行、集会和罢工的权利。
  • 你见了达官贵人不必点头哈腰。
  • 法律高于一切,法律面前人人平等,你可以起诉包括总统在内的任何政府官员。
自由
  • 你可以有自己的政治见解,不用忍受每天的“思想洗脑”。
  • 你可以随时诉说对当局的不满,甚至随时冲进政府当着市长的面说。
  • 你可以随时加入或退出任何党派或组织。
  • 你可以随处迁徙而不用什么“暂住证”。
福利
  • 不愁工资低,不怕物价高。
  • 你没有买房、教育和医疗三大负担,甚至医疗是免费的。
  • 如果你失业了,政府会养你,而且给的钱甚至高过你的工资。
  想追求这些而又具备条件的,还有什么可犹豫的?就算你很“爱国”,完全可以改个国籍再回来住,仍然是高人一等的华侨!
10/09/2009

Fix JComboBox's UI in Aero

You may have noticed that, if you turn on the Aero effect for Windows Vista or above, and use the native look & feel in your Swing code, JComboxBox has an ugly border which makes it doesn't look native:

The border is actually an instance of com.sun.java.swing.plaf.windows.XPStyle$XPFillBorder which is dedicated to Windows XP and is definitely not suitable for Vista or above. This issue is probably caused by Sun's carelessness (always), and seems Sun haven't a plan to fix it. There have been so many UI problems with Aero, but Sun is busying selling itself to Oracle... The only way left is to handle it ourselves. The code is rather simple:

JComboBox comboBox = <Initialization Code>;
String osName = System.getProperty("os.name");
double osVersion = Double.parseDouble(System.getProperty("os.version"));
if (osName.startsWith("Windows") && osVersion >= 6.0) {
    comboBox.setBorder(null);
}

Now it looks native:

Extending your own JComboBox to detect the system is another choice.

09/09/2009

《异形枪手 - 重访》和《异形枪手 2 - 重装》

  Sigma Team 的《僵尸枪手 2》(Zombie Shooter 2)迟迟不出,两代《异形枪手》(Alien Shooter)的翻新版倒是上市了。最近把这两个翻新版《异形枪手 - 重访》(Alien Shooter - Revisited)和《异形枪手 2 - 重装》(Alien Shooter 2 - Reloaded)打通关,发现和老版本有较大差别。

重访
  《重访》不仅仅是画面的重制,难度比原版高出了很多。原版里面,不论选什么难度,只需要躲在墙后或者房间里,甚至躲在桌子后面,让怪兽们开火自轰,最后出去收拾残局就万事大吉了。但是《重访》用了二代的引擎,如果不能直接攻击到玩家,很难让怪兽开火,这样玩家就只能靠自己手中的武器了。然而更有挑战性的在于,如果选最高难度 IMPOSSIBLE(不可能),就真的会觉得是不可能的任务:怪兽攻防高、钱少、弹药紧张、杀怪很难掉补给。此难度下,我打到第七关就弹尽粮绝,只好等死。最后没办法,开作弊直接获得最后一把武器,再购买最好的盔甲,一路杀到最后一关,才发现如果不用作弊码加体力,过关几乎是天方夜谭……能不作弊在最高难度下破关的,估计万中无一。另外我在游戏数据文件里面看到有离子炮等超级武器,不知道怎么才能获得。

重装
  《重装》相对原版《复仇》,体积小了很多,却还多了两个关卡和一些武器,升级系统方面也有变化。体积减少,关卡增多,自然有些东西会被丢掉,目前发现用大威力武器打死怪兽后的肢解效果没有了。多了武器没有注意到,但每种武器的最强版和原来相同。或许是制作的时候没有注意,新增的关卡没有背景音乐。升级方面的变化是最大亮点,在《重装》中不再需要为每种武器能力单独升级,而是统一到了 Accuracy(准度),这样就可以十八般武艺齐上阵了,虽然实际上武器的强弱次序没变,而且在正常情况下也没有那么多钱把每种武器的最强版都买到。植入体方面,本作只能装备一个植入体,但如果智力越高,植入体发挥的效果就越强。由于能买到攻击输出高得离谱的武器(例如霰弹枪 CRAFT SP200),即使最高难度也是轻松破关,和《重访》的感觉完全不同。
05/09/2009

Windows 7 的刻录功能兼容性不好?

  Windows 7 的刻录功能确实有较大改进,而且能刻录 ISO 映像,看样子可以丢掉第三方刻录软件了。然而,可能是兼容性不好的原因,我用自带刻录功能刻 D5 数据光盘的时候,速度总是只有 600KB/s 上下,更要命的是等它慢腾腾地磨好后,2GB 的文件竟然占用了 2.5GB 的光盘空间……没办法,请回 CDBurnerXP,一切恢复正常。
18/08/2009

Windows 7 安装风波

  按理来说,我的 Windows Server 2008 标准版用得好好的,而且手头有两个正版序列号,何苦升级呢?但是看到 Windows 7 RTM 发布的消息后,手就开始发痒,准备洗牌。
  首先当然是下载,600KB/s 左右的速度,很久都没体验过了。谁说便宜无好货?每月 50 元的艾普,初期表现值得称道,顺便再次鄙视物劣价贵的电信。下载完后当然要校验,用的是我自己用 Java 写的一个工具,结果证明它运行正常。
  按照我的传统思路(后来证明已经过时),应该刻盘后从光盘启动,全新安装,才能保证系统干净。这时候遇到第一个问题,哪太先锋刻录机久未使用,已经放坏了,不论用 CDBurnerXP 还是 Nero,一律报错。难道只能重新买刻录机?那就亏大了。听说自从 Vista 开始,U 盘、硬盘安装也是可以的。我的 U 盘容量不够,所以只能考虑硬盘。在网上找了半天,来来去去也就那几种说法,感觉不太靠谱,所以又跑到远景论坛去取经,最后找到一个所谓的“功能最强的 Windows 7 硬盘安装工具”。仔细阅读说明后,想来不会错,于是就照着步骤做下去,做完后要重启系统,进入安装界面。这一来坏事了,安装界面不出来,现有的系统也无法启动,因为启动管理器(BOOTMGR)被那工具删了!这下可不好,因为光驱是坏的,想搞系统恢复也不可能(试了几次,不是蓝屏就是自动重启),所以只好忍痛买光驱……
  第二天去数码广场,与众奸商几经切磋,最后买了个三星刻录机。虽然无法事先查价格,但相比之下还可接受,而且颜色正好配得上机箱。半个月的生活费没了……原打算让他们随便给我装个系统,可帅哥死活不干,除非给钱。这世道,装个克隆的盗版你还好意思收费?算了,回去自己装吧……
  好不容易把主机抱回家,终于可以兴冲冲装系统了!这时候的问题是,Windows 7 的光盘还没刻录,所以只能先暂时装回 2008 去刻盘。当时不知怎么的没想到用系统修复,直接全新安装了,浪费时间不说,还毁掉了我辛辛苦苦打的游戏存档……算了,改天重新打吧。漫长的煎熬后(其实装得挺快,心理作用……),系统装好了,开始刻盘。只听机箱内一阵又一阵剧烈的轰隆声,系统自动重启……难道光驱有问题?考虑到最近 CPU 风扇声音一直比较吵,干脆关掉电源,把外壳卸下,裸奔看看,顺便用刷子把灰尘掸掉。没想到这样一来风扇声音正常了。仔细看看,风扇正前方附近那个类似通风口的大圆筒(装饰品?)似乎有点妨碍散热,卸掉!后来证明这招确实解决了风扇声音的问题。
  现在开机刻盘,一切正常。好,重启,Windows 7 光盘启动。Windows is loading files... 自动重启……?又试了几次,始终都是在加载完文件后自动重启,安装界面死活不出来。难道光盘没刻好?我仍然不甘心,心想,即使全新安装不成,升级总可以吧。再次装回 2008 后,直接运行光盘安装,发现除了升级还有个“全新安装”的选项。难道微软改进了安装方式,不从光盘启动也可以。就这么一路装下去,中间除了没有格盘,其他的步骤和全新安装完全相同。这次成功安装了,进入欢迎画面,叫做“Windows 7 旗舰版”,看来本地化又进了一步。老的 2008 系统被放进了一个 Windows.old 文件夹里,可以放心删除(最好是用“磁盘清理”来解决),绝对不是双系统。
  最后是激活。为了保证主板不出意外,我决定用软刷,就找了一个叫做“Windows 7Loader By Orbit30 & Hazar Build 1.4”的工具。运行这个工具,出现的界面分为“Install OEM Information”和“7Loader activation settings”两个部分。我先点了下 IBM 的图标,想想不对,又点了下“Remove OEM logo”。可能就这两个动作,差点搞坏主板!这时候我再看了看说明书,点了下“Install 7Loader”,装好后自动重启,然后系统就一直定在 BIOS 画面的“Verifying DMI Pool Data”处。第一感觉是,BIOS 出问题了……检查 BIOS 设置,没发现什么异常,但是不论硬盘还是光盘启动,都没有任何反应。因为没有另外的电脑上网查资料,把我搞得像热锅上的蚂蚁一样,什么 BIOS 重置、CMOS 掉电、跳线重置……五花八门的招式后,主板点不亮了……烧坏了?真是自作孽啊。时间已经临近晚饭,第二天星期一上班,莫非只好忍两天,下周末抱去花钱检修?还真有偷鸡不成蚀把米的感觉。算了,先吃饭再说吧。
  吃完郁闷的晚饭后,就出去散步。路上想到宇宙知名专家马克思前不久成功激活了 Windows 7,就打电话给他随便聊聊,顺便讨论了下主板的问题。在外头逛了两个钟头左右回到家里,突然觉得死马当活马医,再看看也无妨,没想到主板点亮了!说实话这种灵异事件难以解释,难道因为下午重启太多导致温度过高,主板罢工?要不就是人品大爆发。总之亮了就好办,又打电话给专家,让他帮我查下“Verifying DMI Pool Data”是什么意思,捣鼓好一阵都没眉目。
  没辙了?刚才在电话里专家提到最好拔掉从盘(我有两个硬盘),但我一直不觉得有问题,不过现在也只剩这条路了。进 BIOS 一看,从盘挂在光驱下,再看发现硬盘启动顺序是先从盘再主盘,哦也!赶快交换他们的顺序。这次终于过了“Verifying DMI Pool Data”这一关,出现找不到启动管理器的错误,这意味着能装系统了?经过测试,Windows 7 仍然无法光盘安装,2008 在开始安装时报错说找不到 CD/DVD 的驱动程序。你不就是从光盘启动的吗?真是自欺欺人啊。联想到从盘挂在光驱下,难道也被当成了光驱。关机,拔掉从盘,再次进入安装界面。这时我突发奇想,点了一下“系统修复”,居然提示说找到一个损坏的系统:Windows 7 Ultimate!点分析错误并修复,说是启动管理器丢失,已恢复,要重启再次进行系统修复。又弄了一次“系统修复”,提示说系统已经修好了。低版本的盘能修高版本的系统,还真是神奇!
  重启,取出光盘,惴惴不安地盯着屏幕,出现 Windows 7 欢迎画面!这下我切身地感受到什么叫大难不死了。进入系统后,发现产品 ID 已经变成了 OEM 的,不过激活期限只剩一天,显然是 SLIC 模拟器没有装好。死马医活了,活马能不能医好呢?反正系统恢复不复杂,何妨再试一次激活?这次仔细看了说明,又上网搜了些文章,终于找到了正确的方法。其实只需要单击“Install 7Loader”就可以了,先前出问题是因为向 BIOS 导 OEM 信息造成的。
  重启后系统已激活,终于完成了这个艰巨的任务!我对 Windows 7 的感觉是,界面更好看,但是有点卡。另外还发现,Windows 7 自带了一大堆解码器,包括 Divx、Xvid、H264 等等,K-Lite 之类的可以扔掉了,唯一需要的就是 MKV 播放用的 Matroska Splitter 和外挂字幕的 VSFilter 这两个很小的插件。如果要播放 Real 视频/音频,装个迅雷就行了……
  继续探索中……
16/07/2009

随便说点……

  本来有很多想写的,不过最近被武器霸道、招式脑残的夏侯惇搞得晕头转向……
  言归正传,今天就说说最近的事情:

  1. 我在 kenai 上面注册了一个项目:Swing Applications by Zhao Yi(赵毅),总算找到了一个托管代码的好地方。而且 NetBeans 提供了直接支持,酷毙!我将把自己平时编写的实用工具放在那儿。
  2. 《Java SE 实践教程》已经出版了,我编写了第七章“我要彩色照片”(讲 Swing)。平生第三次写东西出版啊!上两次是在高中写的一篇初等数学的文章《关于“魔八方”的解的唯一性的证明》,因为老师一稿两投所以算两次……
  3. 我要坚持写……

09/06/2009

牛刷金的来历

玩过《三国战纪 2:群雄争霸》的应该知道。顺便贴一段单王刷分 23 亿的录像(不是我打的):
    
24/05/2009

被误读的几句话

  1. 误:以德报怨。
    正:或曰:“以德报怨,何如?”子曰:“何以报德?以直报怨,以德报德。”
  2. 误:民可使由之,不可使知之。
    正:民可,使由之;不可,使知之。
  3. 误:量小非君子,无毒不丈夫。
    正:量小非君子,无度不丈夫。
  4. 误:吾生也有涯,而知也无涯。
    正:吾生也有涯,而知也无涯。以有涯随无涯,殆已。
  5. 误:相濡以沫。
    正:相濡以沫,不如相忘于江湖。
28/09/2008

Using GTK+ on Win64

If you are coding GTK+ for win32 only, stop here and go to Glade for Win32.

GTK+ team has recently released development packages for win64, but without Glade, and there seems to be nobody working on it at this time. I spent nearly every night in this week on it and has just managed to get it work. This is my first time to build staffs from source, so I encountered and solved a lot of problems. I'm going to walk my path again and write it down, and hopefully it will help you.

Prerequisites

  • mingw-w64
    Download the latest complete toolchain. You can choose mingw-w64-bin_i686-mingw_*.zip that is a cross compiler toolchain working on both win32 and win64. If you own a copy of 64-bit Windows, you can also use mingw-w64-bin_x86_64-mingw_*.zip that is a native compiler toolchain for win64 only, which is also my situation.Unpack it to C:\mingw-w64 or anywhere as you wish, add C:\mingw-w64\bin to your Path environment variable.
  • msys
    Download the latest version here (currently msysCORE-1.0.11-20080826.tar.gz), unpack it to C:\msys and add C:\msys\bin to your Path. Don't use the "Current Release" version 1.0.10, for it will crash on Windows Vista. You can create a desktop shortcut to msys.bat, which launches a Unix-like shell used to build our packages.
  • GTK+ Development Packages
    Downloag the all-in-one bundle from the official GTK+ web site. Unpack it to C:\GTK or anywhere as you wish, add C:\GTK\bin to your Path, and set the PKG_CONFIG_PATH environment variable to C:\GTK\lib\pkgconfig.
    You also need libjpeg and libtiff required by libglade we're going to build.
  • Test Your Settings
    Open msys shell by running msys.bat, and execute make --version, gcc --version and pkg-config --cflags gtk+-2.0. Make sure you get outputs about version or make, version of gcc and the include directories of GTK+. If not, you'd better go through the above requirements again.
Now you're ready to compile. Glade depends on several libraries, and they seem to have no win64 binaries available too. In a nutshell, you need to build the following things one by one: libiconv, libxml2, libglade, hicolor-icon-theme and Glade3.

libiconv

  • Download libiconv
    Though the Official GTK+ site provides a small static library called win_iconv as a replacement for the much larger GNU libiconv, libxml prefers the latter for now. You get the latest source code of libiconv from here.
  • Hack libtool
    libtool has a bug on windows. It treats all *.a files as static libraries which would cause linking fail. I don't know how to make it distinguish static and dynamic libraries, but since all we have now are dynamic ones, this hacking task becomes very simple.
    Open build-aux/ltmain.sh, navigate to function func_win32_libid(), delete the entire *ar\ archive*) case, and then change
    *ar\ archive\ import\ library*)
    to
    *ar\ archive*)
    Now libtool will treat every *.a file as an archive import library.
  • Correct windres-options
    Sed expressions in windows/windres-options are wrong. Open this file and change
    sed_extract_major='/^[0-9]/{s/^\([0-9]*\).*/\1/p;q}
    a\
    0
    q
    '
    sed_extract_minor='/^[0-9][0-9]*[.][0-9]/{s/^[0-9]*[.]\([0-9]*\).*/\1/p;q}
    a\
    0
    q
    '
    sed_extract_subminor='/^[0-9][0-9]*[.][0-9][0-9]*[.][0-9]/{s/^[0-9]*[.][0-9]*[.]\([0-9]*\).*/\1/p;q}
    a\
    0
    q
    '

    to
    sed_extract_major='
    /^[0-9]/{s/^\([0-9]*\).*/\1/p
    q
    }
    a\
    0
    '
    sed_extract_minor='
    /^[0-9][0-9]*[.][0-9]/{s/^[0-9]*[.]\([0-9]*\).*/\1/p
    q
    }
    a\
    0
    '
    sed_extract_subminor='
    /^[0-9][0-9]*[.][0-9][0-9]*[.][0-9]/{s/^[0-9]*[.][0-9]*[.]\([0-9]*\).*/\1/p
    q
    }
    a\
    0
    '
  • Build And Install
libxml2
  • Download libxml2
    Get the latest source here.
  • Hack libtool
    Please refer to "libiconv". Notice ltmain.sh is in the root directory this time.
  • Modify Source
    Open include/wsochcompat.h and delete #include <wspiapi.h>. wspiapi.h is actually not needed but leaving it would cause some linking errors.
  • Build And Install
libglade
  • Download libglade And Hack libtool
    Get the latest source here.
  • Build And Install
hicolor-icon-theme

  • Download hicolor-icon-theme
    Get the latest source here.
  • Build And Install
Glade3

  • Download Glade3 And Hack libtool
    Get the latest source here.
  • Correct The Code
    Open gladeui/glade-utils.h and delete these two functions:
    void glade_util_widget_set_tooltip(GtkWidget *widget, const gchar *str);
    gboolean glade_util_version_lesser_than(gdouble a, gdouble b);

    Open gladeui/glade-builtins.h and delete these two functions:
    guint glade_builtin_key_from_string(const gchar *string);
    const gchar *glade_builtin_string_from_key(guint key);

    These four functions have only declarations without implementations. Leaving them will cause linking errors.
  • Build And Install
    Configure with GMSGFFMT=msgfmt.
Now you have a complete development tool set of GTK+ on win64.