Total Pageviews

Disclaimer

This is a personal web page. The views expressed on this blog are mine and do not necessarily reflect the views of my current employer.

I am currently employed by Morgan Stanley.

January 27, 2012

How I Migrated SharpSnmpLib From Mercurial to Git

There are tons of articles on this topic. Here I just summarized what I have done.
Generate Local Git Repository via Hg-Git
The Mercurial repository of #SNMP is at d:\sharpsnmplib
I am on Windows 7 and using the latest TortoiseHg. In this case I have to roll back to TortoiseHg 2.0.5 (because Hg-Git does not support latest Hg) first.
  • TortoiseHg 2.0.5 does have Dulwich, so I don't need to install it right now.
  • So I can go to step 3 directly, and clone the Mercurial repository of Hg-Git from http://bitbucket.org/durin42/hg-git/ to d:\temp\hg-git
  • Then I modified d:\sharpsnmplib\.hg\hgrc to include the following lines,
[extensions]
hgext.bookmarks =
hggit = d:\temp\hg-git\hggit
  • You can now try to push to GitHub in d:\sharpsnmplib by executing "hg push git+ssh://git@github.com/schacon/hg-git.git".
Troubleshooting Issues
This push may fail due to an SSH error. In that case assuming you have set up Git following http://help.github.com/win-set-up-git/ , you may install TortoiseGit, and launch puttygen.exe from its installation folder to load your private key. Then you can save the key in PuTTY format (.ppk) and launch pageant.exe from TortoiseHg installation folder so as to add this new key. After that you can push again to see if everything works fine.
In my case it failed with an invalid parameter error which I cannot address. But the local Git repository is ready in d:\sharpsnmplib\.hg\git
Consolidate Local Git Repository
To be safe, I used TortoiseGit to create an empty Git repository at d:\temp\sharpsnmplib. Then I copy d:\sharpsnmplib\.hg\git to d:\temp\sharpsnmplib\.git.
Next I followed http://christoph.ruegg.name/blog/2011/7/30/cleaning-up-after-migrating-from-hg-to-git.html to perform the housekeeping at d:\temp\sharpsnmplib,
  • git fsck --full
  • git prune
  • git gc --aggressive
If you don't know how to find git command, you may read http://help.github.com/win-set-up-git/.
Upload to GitHub
Finally I went to GitHub to create a repository. It is time to upload everything to it,
Remaining Issues
If you use branching heavily, then you may experience more issues like me. Here are my fixes,
1. Unnamed Branches
Use TortoiseGit to show log on d:\temp\sharpsnmplib and I can see unnamed branches (the branch names seem to be removed during conversion). To rename them, we can simply create new branches in the log view, http://superuser.com/questions/382602/git-repository-migrated-from-mercurial-shows-unnamed-branches .
2. Messy Committers and Authors
I was not able to find a suitable way to clean up them without breaking the repository, so I decided to leave it as it was. This is bit of expected after Subversion to Mercurial to Git migration.

TritonMate: Migrated to GitHub

Due to the following reasons, I just converted the repository from Mercurial to Git and host it on GitHub,
  • Git enjoys the first class support in most IDE and OS.
  • GitHub is more popular than Google Code or CodePlex, and it has code search.
  • TortoiseGit is much more convenient to use now.
  • MonoDevelop does not have Mercurial support.
  • ...
From now on, new change sets will only appear on the GitHub page,
Please bookmark this link or watch this repository :)

January 25, 2012

TritonMate Words: Sad News on Linux Support

Just started to dig on Linux/Mono side, as the changes we made on the 8.0 way are so huge. In a few minutes, a serious problem was found,
Not sure how long it will take to have this issue resolved, but it makes our Linux support bit of tough. However, more issues may be ahead, as I am not sure whether SharpDevelop text editor works fine on Mono. In the coming days I will test more on Mono side and report more issues to Mono guys.
Stay tuned.

January 24, 2012

TritonMate Words: Syntax Highlighting for SMI/MIB

smi_syntax_highlighting by lextm
smi_syntax_highlighting, a photo by lextm on Flickr.
Finally syntax highlighting is added. Currently we use SharpDevelop's text editor control, and its syntax highlighting engine (line number as well).

Since SharpDevelop does not have an SMI/MIB syntax file, I followed the standard approach to port smi-mib.xml from jEdit. Yes, without doing this you never know #D guys learned from jEdit :)

Here I share the syntax highlighting file, http://code.google.com/p/sharpsnmplib/source/browse/Compiler/smi.xshd so that you may reuse it in your applications.

January 22, 2012

TritonMate Words: Compiler Update So Far

Here comes some good news on the ANTLR based compiler,
  • The port from ANTLR v2 to v3 is complete, and now we have the first open source SMI grammar file for ANTLR 3, http://code.google.com/p/sharpsnmplib/source/browse/SharpSnmpLib/Mib/Smi.g (smi_no_action.g is the Java version without actions).
  • I contacted Nigel Sheridan-Smith, and he confirmed that his previous work is open source under BSD license, and he also accepts LGPL.
  • My modifications of this grammar then is also released under BSD license and LGPL.
  • As we cannot contact Vivek Gupta (no contact method can be found), we can only assume he published the original ASN.1 grammar in public domain (since he published it on ANTLR sample section, where most grammars are either under BSD or in public domain).
Then we can see what are the features implemented right now in this new compiler,
  • MSBuild compliant error and warning messages.
  • More accurate parsing on macros and other complex SMI entities.
  • Automatic ANTLR grammar to C# code generation at compile time.
Now the challenge is how to keep improving it and make it a better tool for MIB authors. Of course, the code base is still messy, and I am going to do more cleanup in the coming weeks.
Happy Chinese New Year :)

January 07, 2012

ASP.NET/IIS MVP This Year

I've just received the MVP award from Microsoft under ASP.NET/IIS category for 2012. Though losing my 7-day-long brand new Android phone yesterday makes my life bit of tough, I still consider that it is generally brighter this year for me.
Not yet get my gift box, which FedEx says will arrive next Monday. But I wish that I could do more than last year for the whole IIS/.NET community.

January 03, 2012

Windows XP Everywhere

(CSDN Jan 02, 2011)
We all know that Windows XP is a great product. It is so great that sometimes you don't know its existence.

出席MY+上海活动

(CSDN Oct 20, 2010)
上周六闲来无事,就去魅族在上海的MY+活动打发一下时间,顺便沿着北外滩的一小段走走,了解一下到底苏州河以北是个什么样子。
自己没有带相机,也不想让M8那么早没电,所以就没有照片了。但是为了做到有图有真相,就把碰巧魅族工作人员拍下的准特写转贴一下,
是的,真的就是我。能在现场那么多人里面挑中M8 Theme Builder的作者,足见这位摄影师的运气。
原帖见http://bbs.meizu.com/thread-2160200-1-1.html
P.S., 看了看现场少男少女们青春无敌的架势,没敢等到晚饭和抽奖的热情大爆发时刻。反正自己从来也没被抽到大奖,就提前溜了。:)

突然涌出的回忆 Part 1

(CSDN August 22, 2010)
在自己的Twitter上面写了下面的文字,结果就被人误解了。
lextm: 每次听到As Long As You Love Me和Miss You的时候心情总是无法平静。也算是光辉岁月的美好回忆了。
PENG WU - 有爱情滋润的人,越发阳光和成熟了!Aug 15
陈正熙 - 发情了?Aug 15
朱骏涛 - 你是哪个单位的啊,谁让你知道那么多的啊Aug 16
david xiao - although loneliness has always been a friend of mineAug 18
的确个中原由并非高中同学、研究生同学和同事所能体会,因为他们没有经历和见证过。我想那些本科的同学或多或少应该有些印象才对。
详细的细节我自己现在也没有那深刻的记忆了,朦胧开始成为一种常态。不过我留在武汉的日记里面是有详细记录的,所以开始热切的期待明年六月返回武汉的旅程了。
将在上海多呆上几年,而且回武汉的次数会比较少。不是因为我对武汉有什么不好的感觉,而是涌出的回忆总是五味杂陈,并非自己任何状态之下可以承受。或许明年六月是个不错的时间,去重读那时的文字,去重温那些光辉的岁月,去迷失在回忆里,然后看清现在的自己。
注:Part 2看来要留给明年六月写了:)

Windows在上海地铁中的应用

(CSDN June 14, 2010)
其实上海地铁的很多系统都是用Windows系统做的,在系统遇到故障时就会以明显的方式体现出来。图片中显示的是9号线车厢内的广告屏。
其他使用Windows的还包括,新一些的刷卡机,莘庄地铁站建筑上面的大广告的屏。可惜这两个地方系统故障时我都没有能够留下如此可靠的照片为证。

列车换乘的感觉

(CSDN April 24, 2010)
从外滩中心回家的感觉是之前自己不曾体会过的,一种突然的变化。
自己也曾经在徐家汇的美罗大厦呆过了很久了,知道每次回家都是怎么样一种感觉,从一个繁华的市中心回到一个偏僻而嘈杂的小区。
这的确又是一个奇怪的感觉,因为这一次自己的前途命运又有了不一样的方向,这又是一个改变的序曲。
是的,前方列车到站,是换乘的时刻了。在这汹涌的人流中,我还知道自己的方向,所以就一路走好吧。
(Update in 2011: 写这一篇的那天自己正是从家里去外滩中心与摩根士丹利签约。离开微软的确是一个纠结的决定。)

变老的自己

(CSDN April 04, 2010)
应该好好看待变老这个话题。
从去年十二月起,突然又迷上了偶像剧。固然其中有缓解病痛的需要,但没有想到这之后的一两个月间自己的心境会因此有巨大的变化。
首先看的乃是胡歌所饰演的《射雕英雄传》。的确是老剧了,而且自己之前对于胡歌同学也仅仅是模糊的一些印象。《仙三》并没有让人特别喜欢上这个演员,因为景天那个角色实在是有些令人难以接受。但是郭靖总归是金庸大侠笔下难得的特色人物,也算是对于天下所有男演员来说都是硬骨头。既不可以装傻过头,也不可以太过聪明,这个尺度的把握恐怕就够一个毛头小伙子苦闷一阵子了。
很难说其他人看了胡歌版本是个什么体会。但是我个人还是蛮喜欢那些木讷的表情和乖巧的表演。或许我看李亚鹏同学那个版本时是带着有色眼镜的,这次在没有任何预习情况下对于胡歌同学算是期待很低,因此才会让这个郭靖博取了我的一点欣赏。
"英雄莫"一段不错的旋律也给了我病痛中极大的安慰。
本来想继续看看《神话》。可惜突然发现自己并不喜欢那种怪怪的感觉。看连续剧的确很需要感觉,所以一月底终于放弃了这部剧。
接下来终于忍不住看了看在搜狐视频排名很高的《命中注定我爱你》。其实扬子晚报早在08年便连载过剧情了,那个时候只是闲暇时瞟上了一两眼,并没有从只字片语中发现故事的曲折有趣一面。但是实际的看了一下第一集就不得不承认定力不强的自己被剧情牢牢抓住了。尽管还是那种老掉牙的灰姑娘路线,但是合适的情节和突然发生的爱情故事总是让人把持不住,禁不住一集一集朝下走。其实陈欣怡那样的人物在自己身边恐怕是会有的,但是纪存希那样的"富九代"估计出现的概率就不大了。
事后自然很容易理解为什么那么多人喜欢看这部剧集,因为它带给人的快乐的确很多。要承认这种如行梦田的感觉能够多么抚慰我们这些被世间苦痛伤害太久的心灵了。哈哈。顺着这个心情,连续又看完了《败犬女王》和《艋�》。
开始通过百科全书考古相关背景资料的时候,才突然间发现其实胡歌和阮经天其实都是我的同龄人。胡歌出生在82年9月,比我还是稍微大了一点(不到一个月),而阮经天出生在82年11月,比我稍微小了一些(虽然还不到半个月)。这么说来在今年二月之前的几十年中,自己一直看的都是比自己年纪大的男一号,而从二月起男主角已经……比我小了。呵呵,原来还迷恋着"等待是一生最初苍老"的信条,傻傻的以为还小得很,居然就在这样凄冷的一个月间跨过了变老的界线。
失眠。老了,就要花时间习惯了。
以上本来是小恙初愈的二月发的一些牢骚,却不想预言了自己后面三个月的现实。其实接受成熟原来是这么稀松平常却无比幸福的一件事情。

也许这就是春天的气息

(CSDN April 04, 2010)
因为WP的一片文章,忽然踩进了Sarah师姐的博客。是的,没有想到我们都是2005开始写博客,而且都是数量很大的那种写手。不同的是她专心于自己生活的点滴,而我只是为了技术。
想想到了这个五年之后的春天,在师姐的博客上面能够看到的,是一个女生成为女人的大改变和小幸福,那么从我的博客呢,到底会看出如何的变化来呢?似乎这既是留给我,也是留给读者们的一个问题了。
春天了,我那从男孩到男人的改变也到了又一个收获的季节。

3.0的第一弹

(CSDN Feb 21, 2010)
终于花了一些时间看看M8主题大师的代码和M8新固件的匹配程度。其实检查起来并不复杂,
Step 1 以同步模式将M8连接到本本上面。
Step 2 从/Windows下面复制Default2.mth到本本。
Step 3 用2.5版本的主题大师打开这个主题。
差别居然这么不明显。哈哈哈。不过仔细的解压出最新的cfg文件一看还是变化多一些,多了一些图标的名字,没了电话背景等等。
简单的改进了一下,现在3.0 Alpha出来了,
敬请测试。

M8 主题大师 2.5 发布

(CSDN Dec 19, 2009)
M8 Theme Builder 2.5 已经与上周末发布了。作为一个阶段性的总结,这个版本完成了多语言版本,应该是终于满足了国内朋友的需要了。
终于把手里的公测版寄回魅族换了SE。从初见的感觉来看,SE的质量应该还是好一些,睡死的问题终于没在第一晚出现。希望永远不要再现杯具了。
就到这里吧,准备圣诞和新年的计划去了。

给哥们的祝福

(CSDN Dec 06, 2009)
哥们和我同桌已经是10年前的事情了。对,正好十年了。我还记得哥们那时候出众的风采,保留着哥们那时候的宝贵录音资料。唉,时光NND过得真快。
哥们的博客我肯定是首批订阅者,新鲜内容也经常被我占了沙发。所以这次哥们放了新视频到网上,我说不定也是第一个被感动得泪哗哗的人。
本来听着开头,还以为哥们乃是在十年之后给这首经典歌曲注入不同的韵味。对,还是那个异常熟悉的旋律,拿着话筒的还是那个身影,只是……结局是一幕幸福的画面。
对呀,这一天是哥们的幸运日,终于把他心仪的老婆大人追到了手。看着他们笑呀哭呀,自己的情绪也跌宕起伏,在办公室里差点就失态了。
哥们,再加把劲,给大家创造一个可爱的小David吧。哈哈。

M8主题大师2.5的进展

(CSDN Nov 22, 2009)
不知不觉中十二月快到了。似乎Meizu并没有能够在新UI之类上面做出特别值得关注的改进。但是新版本固件的发布多少曾经让我有些高兴。只是这种高兴不可能恢复我对于M8的一丝好感。对了,既九月屏幕罢工之后,我手里这台公测版也频繁出现睡死问题了。因为这两个问题算是M8公测版的顽疾,而且硬件因素比较大,我也就不多装行家来评论了。
对于M8主题大师2.5版本,我所希望的就是完成自定义按钮的添加和删除。不过添加的确很好做到,难点在于删除。所以现在最新的构建版实际上已经有了添加自定义按钮的功能,但是删除的部分还迟迟没有加入。希望能够在十二月间做完这个功能,届时2.5正式版也就可以发布了。
对于2.0正式版,我已经收到一些用户的反馈,下面也来回复一下。
中文版
应该说中文版是大家十分期待的。可是现在界面元素的修改还是很频繁的,还不是开始汉化的最好时候。我希望在2.5正式版中间加入中文的支持,但是也可能留到3.0版本再说。
预览模式
有用户希望能够暂时隐藏用于选择图片的那些文件夹按钮。那么就需要主题大师可以提供"编辑"和"预览"两个模式。在最新的构建版里面我已经完成了这一块,所以有兴趣的朋友可以自己检出代码编译之后试用一下。不是特别有用,但是想想也会有一些需求,例如仅仅为了看看某个下载后的样式到底看起来怎么样,这个时候编辑功能并不那么重要。
标题的字体
其实大家都知道修改M8使用的字体需要一些手段。有用户希望主题大师上面的字体也是可以修改的。那么现在我也在构建版本里面提供相对应的菜单项,方便有需要的朋友试用。当然,选择的字体仅用于看看效果,最后生成的M8主题包并不会包含这个设置,也不会最后在M8上面生效了。
写在最后
我的M8很快就会寄回原厂去换SE了,所以开发和测试应该会中断一些日子了。这都是不可避免的耽搁,而且我还得使用自己那个旧旧的Nokia来备用。真是希望SE会质量好一点,对得起我支付的200块银子。

M8主题修改的对决?

(CSDN Nov 01, 2009)
终于在发布到2.0版本的时候,Theme Editor的作者majiyunsea回复了我在魅族论坛的帖子。
当然了,肯定不是砸场子了,哈哈。应该说排除一些"牢骚",可以看出majiyunsea对于魅族产品缺陷的体会比我要深许多。
我也立即测试了一下深度美化的一些东西,例如替换资源dll的方法,果然ThemeManager在提示重启之后显示界面出现了严重的bug,完全就是显示错误。可以通过在MTH主题包里面嵌入那些资源dll是一个没法完成的任务。这也解释了为什么其他深入美化的帖子要么推荐手工替换,要么采用CAB安装包。看来都是为了绕过这个严重的bug。
因此假如在后面的版本中我计划添加深入美化的支持,看来直接生成CAB文件是个必然的选择。我会仔细研究一下CAB的格式,看看是不是那里也有bug在等待着我。
关于M8新UI,乃至于Android版本的固件,我其实抱着一个很悲观的态度。毕竟后面的版本很可能会使得M8 Theme Builder需要重新设计,但是使用C#和.NET平台的好处就是我开发起来几乎不费什么力气,所以想要发布一个新版本并不是特别困难的事情。
希望M8 Theme Builder和M8 Theme Editor的竞争可以友好的继续下去。

M8主题大师(M8 Theme Builder) 2.0正式发布

(CSDN Oct 31, 2009)
利用上面两个周末基本完成了2.0版本的主要开发。由于改进了很多M8界面模拟方面的细节,现在这个工具的预览效果同真机应该没有特别的差别了。另外就是用Inno Setup做了一个方便一些的安装包。
今天,也就终于发布了2.0正式版。感兴趣的朋友可以到该项目主页下载
http://mymobilepack.codeplex.com

M8 Theme Builder 1.0/2.0版本已解决技术难点的汇总

(CSDN Oct 31, 2009)
自定义控件
之前自己也做过很多WinForms项目了,包括为Cisco的EOC产品所做的网络设备管理工具,包括Code Beautifier Collection这样的Delphi IDE插件,包括#SNMP MIB Browser和Compiler这样的小工具。但是这几个东西都属于规矩的用户界面,几乎不需要采用任何自定义控件。实际上对于一个WinForms开发人员来说,制作自己的控件还是十分必要的。M8 Theme Builder也是很好的练兵机会。由于WinForms默认控件对于透明背景是没有支持的,为了能够搭建出高仿真的M8用户界面,Theme Builder必须使用自定义的控件。
关于透明背景的控件开发,其实互联网上相关的文章还是很多的。我主要参考了下面两篇文章。应该说最后Theme Builder 1.0基本上达到了预期的效果。而在2.0版本中,这些控件又稍微做了一下改进。
主题包的解析
对于ZIP解压,我一直使用SharpZipLib。由于这个开源函数库已经十分完善,所以压缩/解压ZIP非常方便。
读取和修改配置文件其实就是基本的INI文件读写操作。我最后采用的是RemObjects的ShineOn开源库,使用TIniFile类型。应该说INI文件已经逐步退出了历史舞台,但是凭借这些开源的函数库,读写INI文件是十分方便的一件事情。
M8主题部件的两个bug
Meizu的开发人员似乎没有意识到INI文件格式其实很宽松,所以他们仅仅提供的支持其实很不充分。例如下面的一行其实是有效的INI格式,
AudioPlayer = AudioPlayer.png
但是假如以这种格式做成配置文件并放入主题包中,那么M8并不能认出这一行。唯一能够被识别的格式是
AudioPlayer=AudioPlayer.png
之前我采用的Nini只能生成上面带有空格的格式,而不能生成下面紧凑的格式。我尝试过自己修改Nini代码来满足M8的要求,但后来还是换成了ShineOn。这实在是一个令人烦恼的bug。
可是换成ShineOn又触及了另外一个bug。原因是CFG文件中好像不能有空行,否则M8上面使用主题时会出现ThemeManager.exe进程hang掉的严重系统故障(唯有重启M8才能恢复)。
最后为了绕过这两个bug,我只能先用ShineOn生成INI文件之后手工删除空行来满足M8的CFG格式要求。
预览效果图的生成
在1.0的版本中,一个很大的问题是Theme Builder不能生成两个预览图片。这样最后保存的主题包可能在拿到M8上面安装之前,用户没有办法通过标准的预览界面看到效果,而只能到实施这个主题后才会看到。这是一个很不方便的地方。但是要在Theme Builder中生成预览也需要几方面的考虑。
直接将界面抓屏保存为图片,虽然可以说比较简单,但是由于选择图片的Shortcut控件是可见的,所以抓下来的效果是略有瑕疵的。因此最后我还是才用了手工绘制的方式,将一块画布(Graphics)传递给各个控件并由它们自己绘制到预览图片上。这样做得到了最好的预览图片效果,而且大图缩放之后就可以同时生成小图。
应该说到这里2.0版本的开发也基本结束了,应该很快就可以正式发布。
WPF和WinForms的抉择
由于WPF是一个更加适合界面制作的框架,我也尝试使用WPF做了一些技术研究。从尝试结果来看,WPF对于透明背景的支持乃是浑然天成,而Expression Blend的设计体验又是十分舒服的,所以在制作同级别复杂程度的界面比较中,WPF还是胜出很多的。
可能在我真正领悟了WPF的开发技巧之后,Theme Builder的界面可以有一天切换到WPF。当然,这个不会很快到来,因为现在WinForms的界面我个人觉得已经够用了。你的感觉呢?
附:M8主题文件的格式
其实M8的主题包(MTH)就是一个结构严谨的ZIP包,这一点同Stardock产品的样式包是很类似的。MTH包解压后内容包括,
1. 配置文件theme.cfg。其实这是一个十分简单的INI文件。
2. 程序图片。最新的M8固件需要90*90大小的PNG文件。图片到程序名字的映射关系其实在上面的配置文件中指定。
3. 辅助图片。这包括三种背景图片(普通,呼叫,和锁定),以及两种大小的预览效果图(大图和小图)。背景以及大缩略图都需要480*720大小的JPG文件,而小缩略图是120*180大小的JPG文件。
主题包的文件名即是该主题的名称。而作者信息是放在配置文件中的。

从Meizu的招聘职位看M8的未来

(CSDN Oct 31, 2009)
Meizu也开始了今年的校园招聘,
从这里的信息来看,Meizu的确有考虑Android操作系统。只是那原来Windows CE平台的开发人员呢?难道要裁掉不成?由于没有一个公开的路线图,这样的信息只是让人越发看不懂M8的未来。

M8 Theme Builder(主题大师)用户手册: 教你简单制作魅族Meizu M8手机主题

(CSDN Oct 11, 2009)
版本
适合2.5/3.0正式版。
下载
运行平台
(最低).NET Framework 3.5 SP1 。支持Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2。
用户界面
   
基本操作
1. 打开主题文件
通过File|Open Theme打开MTH文件。该主题将被显示在面板上。
2. 新建主题文件
通过File|New Theme新建MTH文件。魅族设计的默认M8主题(937版本)将被显示在面板上。
3. 保存主题文件
通过File|Save Theme将当前面板中的主题保存为MTH文件。
4. 修改主题作者
通过Edit | Author可以修改主题作者的名字。
5. 修改程序图标或者背景图片
点击图标右下角的文件夹图标就可以选择新的图标。
点击每个屏幕背景右下角的文件夹图标就可以选择新的背景图片。
其他
M8当前固件937的程序图标需要90*90大小的PNG格式图片,而背景图片最好是480*720大小的JPG格式图片。M8 Theme Builder当前版本还不支持图片格式自动转换。推荐使用开源的Paint.NET工具 来提前处理图片。
由于M8 Theme Builder的界面现在是100%模拟M8真机的屏幕分辨率,因此窗口大小对于小屏幕来说比较不合适(窗口高度在800左右)。这一点将在后面的版本中进行改进。现阶段使用这个工具的推荐屏幕分辨率最小是1280*800,这也是我本本的屏幕分辨率了。假如Windows任务栏有影响(例如Windows 7),那么可以考虑把Windows任务栏停泊到屏幕左侧或右侧。
主题文件的使用
连接M8到电脑。从电脑拷贝MTH文件到M8的Theme文件夹内(U盘模式),保存之后断开M8与电脑的连接。通过M8配置|主题启动主题管理器,刷新列表。选择刚才保存的新主题并启用即可。

Coding For Meizu M8

(CSDN Oct 10, 2009)
使用小八也有一段时间了,总是感觉做美化的时候工具太少。虽然市面上已经有了M8 Theme Editor,而且这个工具也凑合着够用了,但是和手工制作相比,这个工具还有一些缺陷,同时能够提供美化的内容也并不多。作为一个程序员,面对着如此困境总该有些特别的解决方式了。既然人家只是免费,而不提供源代码,那只能自己亲力亲为来做做开发M8 Theme Builder了。
也就是考虑到界面设计能够更好的锻炼自己Windows Forms自定义控件的开发,我就用C#做了一下尝试。现在1.0的版本也终于发布了,基本上提供了MTH文件新建和修改的功能,应该是达到了M8 Theme Editor初级版本的程度。下面就是尽快完善2.0的版本,提供更加漂亮的操作界面和补充一些有用的功能。
竞争还是十分有利于创新的,希望Editor和Builder的竞争能够给MY们带来更多的选择。
M8 Theme Builder可以从这里下载
源代码基于GPL 2一并发布。

Borland传奇拾遗――最后一弹?

(CSDN May 24, 2009)
Borland公司似乎终于走到了路之尽头,在油尽灯枯之前投入了Micro Focus的怀抱。
对于从各种途径阅读过《Borland传奇》一书的读者来说,心中会是何种滋味呢?不论这个牌子是不是和Delphi还有现实的联系(此种联系在CodeGear过户到Embarcadero的那天应该就已终结),我本人还是难免遗憾。
李维先生说自己大学毕业时只想着去两间公司,一个是Borland,一个是微软。最后先生还是有缘去了Borland,而且至今还是这个社区中的活跃一分子。这个故事对我的触动也是十分之大的。我临毕业的时候也是很看重微软和Borland。进入微软的几个机会都没把握住,而写给Borland的求职信则石沉大海一般。但是即使如此我也还是十分喜欢这个社区,追随着DelphiFeed的内容去了解动态。
命中注定吧,在经历了Cisco这个驿站之后我还是投入了微软的阵营,算是遂我心愿。只是工作变动,使得我再也没有时间去继续Code Beautifier Collection这样的项目,再也没有时间去尝试Delphi 2009和Delphi Prism,因此自己对于CodeGear,对于Delphi,最后只剩下了关注,一时没有机会去亲身参与。似乎我与Delphi的缘分至此就要划上一个逗号了。是吗?
刚刚结束的Delphi Live 2009似乎又让人看到了完全不同的Delphi,完全不同的CodeGear。设想原生的Delphi实现了跨平台,反射(Enhanced RTTI),Attributes,x64等的功能,这门注入了全新生命力的语言又会演化成怎样一个模样呢?Embarcadero又会是怎样的一段传奇呢?我依旧抱着热切的期待,希望能够被新的英雄感动,为新的故事记录。

Tod Nielsen从Borland奔向VMware

(CSDN March 22, 2009)
昨天(翻译者加入:也就是2009年1月6日)Borland宣布了其CEO Tod Nielsen辞职的消息。仅仅数分钟后VMWare宣布委任 Tod Nielsen 为COO这一新角色。眼下的情况对于Borland公司来说非常不利(Borland, The ALM Company是那家已经与Delphi毫无瓜葛的公司)。上面的公告还提及Borland总预期收益将低于4千万美元(低于2008年第3季度的4.43千万美元),公司计划裁去130人(占15%),CEO与研发部门副总Peter Morowski双双离职,公司的股价也跌至1美元附近(昨天收盘价是1.07美元)(翻译者加入:记得当年股价低于1美元就是垃圾股)。令我感到庆幸的是,Delphi早已被Embarcadero(易博龙)买走了,否则这个消息会是又一个糟糕星期的开始,那时每个人都会说"Delphi死定了"。不过,我为Borland感到悲哀。嘿,假如我们付给他们同样数额的现金(翻译者加入:不清楚是不是值得4千万美元?)买回Borland这个商标呢?
----------
译者按
本文乃是Delphi届名人Marco Cantu一月的博客一篇。其实早已翻译,放到了另外一处论坛上面。闲来无事,就贴回到这里做个留念了。
个人的感觉是Embarcadero Delphi其实也是一个不错的名字。虽然Borland这个牌子曾经辉煌,现在似乎已经不再是品质的保证了。Excellence Endures的字样从Borland厂牌下面被拿掉,或许就是官方的一种姿态。
关于Tod跳槽到VMware,Marco的blog上面还有精妙的点评。是不是这位微软前雇员如今的使命就是去把微软的对手一个个摧毁呢?呵呵,看起来挺是那么回事情。

Delphi命运的转折

(CSDN Feb 08, 2009)
很久没有继续《Borland传奇拾遗》了。因为Embarcadero的缘故,CodeGear在失去了Borland这块光鲜亮丽的厂牌之后反而焕发出新生。这也似乎说明当年Borland的创始人选择的Scott Valley的确是一块福地,只是之前数任CEO没好好耕耘罢了。
随着Borland总部迁往奥斯汀,这家标榜Open ALM的企业步履维艰。CEO易人,产品方面也许久没有见到力作。脱离了Scott Valley,似乎这块牌子也快被人遗忘了。
然而CodeGear呢?虽然依旧还是那几款产品,但是类似Delphi 2009这样多年不见的新版本发布应该是终于让时局悄然转变:
  • CodeRage已经做完了整整三届。
  • 秉承Borland Conference传统的Delphi Live将于今年的五月间在洛杉矶召开。
  • 支持Unicode和泛型的Delphi 2009原生开发工具顺利发布。
  • 同RemObjects合作发布了纯粹的.NET开发工具Delphi Prism。
  • 公布了新的x64及跨平台编译计划,将展开下一代编译器架构的研究和开发。
一些之前的Borland没有做到的事情,现在CodeGear也开始实际操作了:
  1. Delphi Prism完全基于微软的Visual Studio Shell,而不是Galileo IDE。基于Wiki的帮助文档体系。纯粹的.NET编译器。――虽然这些变化主要源于同RemObjects的合作,但是如此合作也算是前所未见了。
  2. Delphi Live会议不知道会不会年年有,但是CodeRage和Delphi Live的确起到了BorCon的作用。旧的传统得以延续。
  3. 更多的精力被投入到产品研发环节。Embarcadero的运营和管理方式更加接近初创时的Borland。
真的到了一个新传奇开始的时候了。今年又会有怎样的精彩呢?

“对于开源的种种误读”的更新

(CSDN Sept 27, 2008)
毕竟是个变化快的时代,从一月到十月间已经发生了这么多事情,以至于之前的这篇帖子已经显出了一些问题了,这里就针对微软公司的一部分做些更新。
微软的开源策略
应该说之前微软的开源政策一直受到种种质疑。不错,很多时候微软"公开"了部分源代码,但是都不是基于OSI认证的授权协议。这不仅招致了开源社区的种种批评,以至于微软内部的开源部门也不是那么高兴了。所以围绕着这个问题,几个月来发生了好几件有趣的事情。
首先是Sancastle项目在CodePlex上面的起起伏伏。这个项目首先取得了CodePlex注册,然后因为一直没有发布代码而被迫停下。最后,似乎是终于通过了内部的讨论,以Ms-PL发布了出来,而且很快取得了令人惊讶的下载记录。
然后,还是一个遗憾的消息。很多微软的项目依然以其他未通过OSI认证的协议发布着,例如MEF。可笑的是,采用Ms-LPL之类协议的后果,居然是微软自己也会被绕进去。例如你使用MEF来辅助开发Sliverlight都会遇到问题,因为Silverlight支持Mac OS X,而不仅仅是Windows。有没有峰回路转的可能呢?因为Mono社区领袖Miguel的一篇博文,MEF产品经理似乎已经考虑申请修改MEF的授权协议了。这无疑是个好的契机,值得继续关注。
最后不得不提的是,因为我将要加入微软开始新的工作经历了,今后似乎再来评论这样的内容就会有些"投鼠忌器"了。关于开源的一些讨论也就此草草收场吧,假如各位如果的确有兴趣,可以参考下面几个有关开源的优秀国外博客,
The Open Road
OSI Blog

今天的东方时空主题是什么?

(CSDN Sept 13, 2008)
2008年9月13日,是如此的偶然,我打开了电视看到了下午六点段的《东方时空》。虽然大家都知道微软状告番茄家园的案子,大家都知道微软一贯的做法,因此这个电视节目不太可能给我提供任何新鲜的观点――而且处于某些未知因素,一些我们大家记忆中很容易浮现的故事也没有被编辑到这个短短的节目中。
但是,正在我质疑编辑想法的时候,片子居然突然转向了开源。WOW,真的吗?令我感到惊讶的变化。虽然几乎所有的开源部分都是围绕着红旗和 Linux,但我还是感到一些惊讶,毕竟这是我第一次在国内的电视节目上看到"开源"这样的字眼――很遗憾王开源同志的表演也一同登上央视的屏幕。
但愿真的有民众会因为这个电视节目去尝试开源产品,例如 Linux,例如 Solaris。只是我必须指出在这短短的节目里面,或许是为了把描述变得简单,很多开源的基本概念都被扭曲了。
  1. "开源没有版权问题"。这个估计是很严重的错误。即使代码开源了,这个产品还是有版权的。虽然不是 copyright,却是 copyleft。必须注意如果你不按照开源的规矩来使用这些代码,你一样会被至于版权问题的法庭上,就像 Skype 和 VMware 所经历的一样。
  2. "微软没有公开源代码"。其实大家都能够看到,微软在各方压力之下确实在做公开源代码的工作――尽管只是在十分有限的情况下。是的,微软除了对合作伙伴(类似 Mainsoft)公开源代码,也被迫向竞争对手公开源代码,以保证这些对手的产品能够顺利在 Windows 上面执行。不过看起来似乎 Google 没得到授权,所以 Chrome 浏览器的源代码里面才会出现反编译了某个 Windows DLL 才能得到的知识。
虽然我们不能对央视编辑的技术背景有太高的要求,但是很遗憾节目里面出现如此纰漏。开源在中国,还需要走很长的一条路。另外很遗憾红旗软件的同志们似乎没有对采访做足准备,并没有能够很有说服力的支持开源的 Linux 与 Windows 相比到底哪些方面会有优势。我个人认为,那套模仿 Windows Vista 的视觉特效,并不能让我母亲这样的普通人选择 Linux。

谨慎迎接 Delphi 2009

(CSDN Sept 10, 2008)
很多 Delphi 开发者还在继续使用着 Delphi 7。本来当然是无可厚非的,只是面对着国际外包深入中国的现实,那个设计之初就没有考虑到国际化的古老 Delphi 终于显示出致命的问题了――不支持 Unicode。不论 TNT 控件是怎样漂亮的解决了部分问题,我们都必须承认,除非 CodeGear 出手,否则当前的这种困境是不可能根本解决的。
终于,Delphi 2009 正式出货了,一个从编译器,RTL 到 VCL 都完全支持 Unicode 的 IDE 即将解决 Delphi 国际化问题的新产品或许会让坚持使用旧版 IDE 的广大用户最终升级到这个历史性的 IDE 版本。然而,任何新产品都会遭遇的窘境也初现端倪――怎么把旧的工程升级到这个新的 IDE 版本呢?当用户们满心欢喜的升级时,老问题又来了。
至今为止,市面上可以得到的升级参考资料都是英文的,而且能够达到全面级别的资料就更是少见了。因此,现在最中肯的建议,就是请各位收住热情,耐心等待。只有等到相关中文资料丰富一些,您再来升级自己的项目时,才不至于错误连连,叫苦连天。不要谈所谓的兼容问题,没有任何一个开发工具厂商可以信心满满跟你说自己的产品版本间兼容――即使是Microsoft。按照 Delphi 第三方大厂家们的一致意见,只要升级按照正确的规律做,应该是一条平坦的道路。

学习编程:中国程序员入门的怪现象之一――中文的困惑

(CSDN April 02, 2008)
写在前面
首先表明一下我对于自己母语的喜爱,免得被人指为数典忘祖。
游走论坛
游走Delphi论坛间,所见最多的就是两个可笑之事。一是问哪里有简体中文版的Delphi,另一个就是问哪里有中文版的帮助文件。估计这也是其他版上的通病了。那么为什么会常有这种问题呢?我个人的理解是,大家把programming当成了coding,认为什么人都可以到这里得一杯羹。非也。虽然中国程序员的待遇对比国外是差多了,但是想混口饭吃也不是只会码代码就可以搞定的。最起码,要把英文学好了。
以我现在从事的入门级职位为例,因为开发中经常需要寻找合适的开源库,或者查看别人的研究成果,那么拜读人家的blog或者阅读代码包里的说明文档简直就是家常便饭。虽然这些基本上也就是大学英语六级刚过的要求,如果你仅仅只会中文或者英语四级刚过,我认为都是比较困难的。(猜测那些老是发帖子问别人这类低级的同志们是不是该准备考考六级了,虽然我很喜欢接你们的分,但是好浪费时间哟。)
这个时候你感到中国软件业太差,怎么好东西都是人家说英文的做出来的,其实也不太合理。我就用过德国、法国、意大利程序员的开源代码,但是都是英文文档。毕竟在软件这个领域里,英文是唯一通用的语言――Ruby也没用日文做关键字呢。因此不仅仅是中国程序员在刻苦学习英文,所有其他非英语国家程序员也是靠学习来提升自己。许多看似奇怪的问题,只需要在Google里面用英文关键字搜一下(特别是遇到编译器报错之类的情况),就可能得到正确的答案。而使用中文关键字,或者去问百度知道,估计成功率够呛。
那么是什么原因使得这些程序员不习惯使用英文,甚至想要一个全中文的编程环境呢?我感觉这和教育领域的现状十分有关。
大学教材
国内大学所选用的软件科目教材,那应该更算得上是参差不齐,问题多多。这一点从校内图书馆的书籍配置和教辅材料的销售来看应该可见一般。鄙人当年的母校,虽然图书馆里书籍众多,但随意一扫,几乎是各类出版社的书籍一本不少(那些VB6的书居然还没被扫地出门)。但是每每想要借阅经典作品时,却发现就那寥寥几本,早已不知落在了哪个先知手上,于是对着架上那些虽然崭新,但是毫无用处可言的烂书兴叹。(试想将采购这些烂书的经费用来多多添置基本经典,那银子岂不是发挥了更大的作用。)
且不说其他,我个人最不认同的一点便是很多学校为C语言课程所选择的课本。本来这几乎是很多大学生一辈子唯一一次接触学习编程的机会,应该尽可能使用一个优秀的课本以激发那些有天赋学生的兴趣。但是看来看去,包括国内许多一流学府的计算机系,都在使用着一本国内老老教授编辑的"C语言练习册",简直把编程课变成了毫无趣味可言的奥数课,失去了教学的本义。虽然这一招着实提高了这门课的通过率,但是直接的结果就是误导了千千万万的大学生,让他们从入门起就输给了别人。
鄙人的幸运之处在于本科期间所有课程都是英文教学。严格的教师选拔体系使得最后有机会给我们授课的老师都是初出茅庐但是思维活跃、英文不错的年轻人,因此断然不会守着那种害人的练习册授课。正是由于接触到了K&R的The C Programming Language等经典书籍,我个人感觉学习编程更多的是在品味设计的思想,而不是做着算术题。或许正是这样的理解,才使得我从不把编程叫做coding,那种码代码的方式距离programming还是差别挺大的吧:-)据我的了解,现在能够采用这类引进版教材进行教学的高校还只限于国内顶尖的学府,而且仅限于部分班级,能够如我一般幸运采用英文课本配合英文教学过程的学生更是少得可怜。因此不得不说中国的教育水平在达到温饱之后,还有很长的一段路要走。要成为软件强国,照着coder那条路培养学生是走不通的。于是乎从开始编程的那一天起,我就十分习惯一个全英文的环境,而且读起那些英文的帮助或者网路上的文章都是轻松自如,仿佛一个宽大的厅堂对我敞开了大门。这无疑使我拥有了一个不错的开始。
只是师傅领进门,修行靠个人。要拓宽自己的知识面,或者加深对某个领域的了解,买一本好书是十分必要的。
买书故事
学完C语言,虽然自己的分数在班里还是蛮高的,但是却一直没有机会实际做做。只是因为大三上学期我便要开始做程序设计课程,所以在大二放暑假的当天和同学一同去图书馆借书未果后,我们二人便转到学校附近的一家小书店买了几本Delphi的书,回家各自研究。这里我就不多提那些书的名字了,只抱怨自己那时未曾看过任何导购的信息,因此上了奸商的当,白花了不少银子――当然,我指的奸商并非是那些不懂技术的可怜的书店老板。后来从网路上才知道除了Delphi Developer's Guide和Mastering Delphi两个系列之外,Delphi领域中其他的书籍多数评价都不怎么好。大三利用学习C++课程的闲暇拜读Mastering Delphi 7之后,我的编程思想也的确是转变良多。特别是读完了其中关于OOP的章节之后,我居然在C++课程的考试里面顺利答出了不少难题(在没怎么深入研究C++的情况下―― 对不住了,老师)。
这样的一个开始,也使我基本上划定了一条购书的界限――优先购买影印版(便宜),其次是名家翻译的中文版,最后才是原创的中文版。(现在工作了,手头也宽裕了不少,因此偶尔呢也会购买折扣特别合理的引进原版收藏。)可想而知按着这个规律,我手里的英文书越来越多,以至于中文书变得少极了。
对于影印版,我有种特别的偏爱,首先是因为技术英语十分容易懂,而且好的技术书一般逻辑严密,结构合理,是自己平时写技术短文或者开发文档的好范例,因此阅读起来不仅能够锻炼阅读能力,也可以提高写作水平。其次由于国内计算机领域的研究同国外还是有着明显差距,泛滥在出版界中就是一大堆所谓多少例子学什么技术的口水书,因此只有从影印版图书中能够找到技术的核心内容。况且很多新的软件概念都是由外国人提出,因此要吃透其中的奥妙,不看影印版是比较困难的。
对于翻译版的书,感觉国内现有的基本上只是几个水平。一般来说,大概的内容还是翻译得不错,但是一到核心知识所在,就会出现一些你看不太懂的地方。一方面是英文描述本身就十分难以理解,一方面就是译者所赐的译错之处,导致你时常感觉如坠云雾之中,根本无心继续研读下去。我自己的经历便是如此,甚至有些翻译版我看到译错之处居然能反向推出原文大概是什么,正确的翻译是什么。这就只猜测可能是国内的出版行业太不景气,留不住或者培养不出一流的翻译团队,抑或是出版周期太短,复审的流程太过简单,故而影响了翻译的质量。(当然即使是像Harry  Potter那样流行的书籍,有着良好的翻译团队,因为赶时间的缘故,书中错误也是少不了。)我手头的翻译书,现在只有一本带在身边,便是Contributing to Eclipse。虽然熊节先生是国内的翻译高手,但是Java、Eclipse平台那些怪怪的专业术语仍使得译出的文字难以流畅。可惜这样的书籍未曾以影印版的形式发行,使鄙人常感遗憾。
至于国内的原创书,这两年我未曾买过。只不过上次BEA在上海的User Group抽奖,我有幸得到了一本Spring 2.0核心技术与最佳实践。廖雪峰先生将一个庞杂的Spring框架娓娓道来,即使是围绕在周围的IoC、ORM、AOP以及MVC的复杂技术也是化繁为简,只抓精要,是我这个原本对于Java、Spring知之甚少的人也对其产生了浓厚的兴趣。因此我也开始偶尔看看China-pub上的一些免费章节,寻找不错的原创书。可惜虽然国内各个社每年会推出的原创书数不胜数,但绝大多数的定位本身就有问题(基本上是针对利润丰厚的高校教学或者各类培训、考级、练习册之类的低端市场),根本没有多少精品,因此总体状况依然不乐观。更有滥竽充数者,依然走着翻译某些开发工具的帮助文件来骗取钱财的老路,真是"令人发指"。
总结
如果你真的希望提高自己的专业水平,能进入程序员领域或者在程序员这个职位上做出点成绩,那么研究技术和学习英文就是一个问题的两个方面。忽视任何一面都会令你的前进速度放缓。

中国的学生们,免费的Visual Studio 2008 Professional你会试试看吗?

(CSDN Feb 19, 2008)
面对着俄罗斯教育部门的大行动, 美国国内也是一场大讨论。终于,一直站在后台的微软旋即跳了出来,将自己主流的开发工具一股脑全部免费放出来了。这下,十一个国家的学生们有了一个难得的学习先进编程技术的好机会。相信在这样优秀IDE的帮助下,学生们的创造力可以得到一些展现――毕竟,我们不能幻想在八十年代的TC或者TP上做出现代化的软件来。
只是这一次,终于不需要中国教育部跳出来做什么善事了。互联网的存在将障碍扫除干净了。如果你还是货真价实的学生,试试看到这里下载你的一份吧。可惜微软没有早两年做这样的好事,看来垄断被打破还是对大家都有好处的。

学习编程:中国程序员入门的怪现象之一――古老的IDE

(CSDN Feb 17, 2008)
本人学习编程乃是从高中开始。那时候拿到一个叫做Turbo C的东西,敲一敲代码能写出一个小程序自己是多么高兴呢。大一的时候用着Visual C++ 6学习正经的学习C语言,才知道设断点调试好方便呢。等到大三用上了Delphi,我的天,做数据库和GUI开发那个快呀。也就是从这时起,终于有时间去研究一下OOP,重构,设计模式之类的高级玩意了。
现在看了一下CSDN论坛,特别是C/C++那个版,似乎感觉1999年又回来了。那么多入门的还在用着Turbo C,那么多人问的问题其实有个好一点的IDE就能立马解决。为什么TC还是那么流行呢?和我一个做高中教师的同学聊天的结果,是发现她还在教人家用Turbo Pascal。哦的神呀,那玩意比TC还老呢。没办法,即使我告诉她用Delphi做简单,快捷,调试方便,她仍是无奈――将来学生们比赛的时候只能用TP,所以从头开始就只能用TP了。
这边是教育领域令人可笑的故事。难怪那些可笑之极的国产C语言入门书还在很多高校使用着,K&B经典的《C语言》却没有机会去影响那些将来注定会影响世界的学生们。本来嘛,培养程序员又不是学校的评价指标,老师们的责任只是指导学生们老老实实考试做题。是的,即使你讲了OOP,讲了设计模式,哪怕只是讲了一下VC那个东西怎么玩,虽然提高了学生们学习的兴趣,对于你自己的收入怕是没有什么好处。况且我一直怀疑自己母校到处安装的VC到底是不是正版。
其实从当前的市场来看,各大厂商都是十分重视学生市场。CodeGear的Turbo系列重新回来了,像Turbo C++ 2006和Turbo Delphi 2006十分适合替代古老的TC和TP。另外微软的Visual C++ Express 2008也十分适合初学C的学生来做编程和调试。
看看我们的近邻俄罗斯吧,已经是一个优秀程序员很多的国度,教育部刚刚从全球顶尖的软件厂商购买了一系列的开发工具,将安装到该国的校园中。我们的教育部门在做什么呢?

工作经验真的那么重要吗?

(CSDN Feb 08, 2008)
刚刚看了这篇老外的博文,真是感慨万千。
去年的这个时候,真是没有任何工作经验的我找工作的关键时期。如果不是现在领导们拿出超人的气魄给我offer,此刻还不知道自己在哪里混呢。可惜现阶段有魄力的公司比较是极少数,不知今后是否会有改观。

Code Beautifier Collection 的新动向

(CSDN Feb 08, 2008)
经历了若干个里程碑,终于在年初一发布了 CBC 的6.0正式版。虽然现在已知很多问题还没有完全解决,所以很快就要开始在这个鼠年的业余时间里开始下一个关键版本的开发了。虽然6.0 Update 1我只是希望解决已知的缺陷,并没有计划添加新的功能,但是相信很多清理工作也是非常合适的重构机会。
6.0的新特性包括,
  1. + 在所有合适的地方使用了 Vista  样式和任务对话框。
  2. + 完全兼容 UAC 的相关标准。
  3. × 改进了安装过程。
  4. + 加入了 Object Pascal 代码样式编辑器。
  5. × 报告于 Google Code 站点的全部缺陷都得到了解决。
下载链接
尽管项目主页迁到了 Google Code (http://code.google.com/p/lextudio),我依然使用着 SF.net 的服务。现在你可以通过 PayPal 或者 SF.net 对 CBC 项目进行捐赠。

对于开源的种种误读

(CSDN Jan 18, 2008)
由于微软发布了.NET Framework部分源代码,CSDN的论坛上面冒出来不少带有点"歌功颂德"味道的帖子,挂着"开源"的字眼表扬微软,十分的滑稽。这也让人不难理解为什么人家Linus说中国对开源 事业做的贡献少。国人对于开源始终还是抱着一知半解的心态,从一些简单的例子就可以反映出来。
1. 漠视开源协议
不少国内人士对于GPL的代码也是拿来即用,根本不考虑自己的使用方式是不是违反了GPL授权。当然,考虑到国内盗版风行,类似把GPL代码用于商业软件开发的情况也就算不上奇怪了。
2. 认不清哪些是真开源,哪些是根本就不是开源
由于Open Source的具体定义乃是英文,而且都是些法律方面的词汇,国内能够详查其内涵的人士不多(我也不过是稍稍比一知半解强一点罢了),所以遇到类似此次微软发布源代码的事件,很多不明就里的人便开始把开源这个词汇到处乱用。微软的MS-RL所明确的限制,远远超出了Open Source的定义,设置严重限制了获取该源代码的程序员使用该代码的范围,因此是绝对不应该被冠以"开源"这个词的。虽然微软也的确将一些小软件――例如WiX之类置于开源范畴内,它的一些核心的东西,包括Enterprise Library都是非开源的东西。因此提醒程序员小心注意。
对于开源的CLR实现,Mono是纯粹的开源项目,使用Mono的代码自然比使用微软的代码更加自由了。
3. 矛盾心理
很多软件公司的管理层都有一种矛盾心理,研发的时候喜欢看看什么开源的库可以使用,而到了考虑自己软件的销售时,又喜欢摆出类似微软的套路。实际上只有更好的理解开源,把握住合适的开源盈利模式,做开放源代码软件一样是可以赢利的。当然考虑到中国实情,要出现类似Red Hat一样的企业还是十分困难的,这种矛盾心理怕是短期内不可能消除的。
总结
对于广大程序员来说,期望各位努力提高英语水平(共勉),好好研究Open Source的各种协议,以便在开发自己项目的时候可以尽可能的借力,提高开发效率。基本上研究好了GPL,LGPL,BSD,MPL之后,相信你对于开源协议就有了一个大概的了解了,今后便可以深入研究了。另外就是不要人云亦云,面对"开源"的东西要擦亮眼睛。使用非开源的代码,一般都会引发严重的问题,所以切切小心谨慎。
开源运动一度被称为软件行业的"共产主义革命",相信在革命教育中成长起来的中国程序员,解读起来要比欧美人更加容易才对。所以,花点时间,熟悉"开源"吧。

Delphi 7/2005/2006/2007的最新更新

(CSDN Dec 07, 2007)
对于不怎么关心CDN的用户来说,想发现Delphi最新更新是一件不那么容易的事情。当然,由于过去一段时间Borland对于IDE产品线的轻视,我们也看不到多少有价值的更新消息。
但是CodeGear的诞生终于还是改变了这个情况。Delphi 2007的Update编号现在是3,而从李维先生的博客来看,Update 4估计是很快就要出来了。也许这个版本的Delphi会成为历史上升级包最多的一个版本,但是我们看到的是每一个Update都不仅仅是修补漏洞,还能够提供一些新的功能――例如Blackfish SQL就是Update 3的一部分。
当然,虽然名义上面CodeGear没有什么给老版本的升级包了,但是Delphi 7/2005/2006的用户们,开始享受一个新的补丁吧。这个补丁包含了Delphi 2007至今在WSDL方面的全部改进,可以让你使用现在市面上最流行的各个Web Service了。
不仅仅是Delphi,3rdRails和Delphi for PHP的补丁也都是很有规律的放出来,让人感觉CG是一步步走上正轨了。

VirtualBox上面虚拟Ubuntu不能上网的解决方法

(CSDN Oct 26, 2007)
受够了VMware Server的低下效率,转向了使用VirtualBox。 不过马上也遇到了Ubuntu虚拟机不能上网的问题。当然,在VirtualBox官方论坛上面找到了配置方法。下面就是本人对原文的一点粗浅翻译,仅供参考。
1. 在host上面查看DNS服务器配置。在Windows host上面,打开开始菜单|附件|命令提示符,然后输入ipconfig /all。回车开始执行。用笔记录DNS服务器的信息以备后面使用。
2. 将VirtualBox的网络设置设为NAT类型。启动Ubuntu Linux guest。打开System|Administration|Network菜单,选择Wired Connection,单击Properties按钮,将其中配置改为DHCP,保存。重启Ubuntu。
3. 在重启后的Ubuntu中打开System|Administration|Network Tools菜单。将对话框中间部位的下拉列表选到Ethernet Interface,然后可以看到对话框下面显示出VirtualBox给Ubuntu分配的IP,记录IP和子网掩码。
4. 在同一个对话框内,选择Netstat标签,然后点击绿箭头获取Routing Table Information。注意表格中有一列为Gateway,请记录其中不是全零的那一个IP地址。
5. 回到2中间打开的Network对话框,打开属性,将类型从DHCP改为Static IP。输入刚才3中记录的IP地址和子网掩码。再输入4步骤中记录的Gateway的IP地址。
6. 保存,退出Properties,但不要关闭Network对话框。切换到DNS标签,删除这里自动设置的DNS服务器信息。然后添加1中间记录的DNS服务器。重启Ubuntu。
做完上面几步,你的Ubuntu应该又可以连上网络了。
原文地址
http://forums.virtualbox.org/viewtopic.php?t=2430

CodeGear 在线研讨会

(CSDN Oct 19, 2007)
如果你对于CodeGear公司的新产品十分感兴趣,那么这个在线研讨的机会相信你不会放过。
    
在此在线注册
>>    JGear performance for Eclipse
     
>>    ASP.NET Ajax 编程
    
>>     使用Ruby on Rails 和 3rdRail进行Agile Web开发
     
>>    使用3rdRail进行高生成力开发
     
>>    用BlackfishSQL写入高性能Database系统
     
>>    VCL.NET programming with ECO 4
     
注册与系统要求
请在weinar开始前至少10分钟注册。
与会指南:本webinar将以InterWise提供,我们希望您能够在seminar开始前设置您的计算机。(也可以在您通过PC进入研讨会时计算机自动进行设置-但这需要几分钟的时间)。
需要支持Internet Explorer的浏览器。
什么人适合参加
     
?    专业软件开发者
?    开发项目管理员
?    软件开发程序管理员
?    学生
CodeGear深知您的时间宝贵-因此我们开办了一个线上技术研讨会系列。从7月份开始,我们将提供一系列不容错过的45分钟webinar,您可以在您的办公室甚至家里参与其中。
发掘如何创建健硕的应用程序,从您的项目中获取更多东西,并在live和交互式环境中优化性能。
JGear Performance for Eclipse
日期:    2007年10月24日周三    Webinar的时间
长度为45分钟
          
时间:    中国:    12:00 (中午 12 点)
     中国台湾:    12:00 (中午 12 点)
          
          
JGear Performance plug-in包为内存和CPU分析与调试提供了性能相关的分析工具。在本Webinar中,我们将演示数据如何实时显示,以帮助开发者了解性能问题是否 与CPU,内存或两者相关。同时还将向您演示自动内存泄漏监测如何改进您的代码质量。通过对对象定位的实时监测,了解经过分析的程序如何使用虚拟机内存才 能够支持开发者编写健硕和高质量代码。在本节中,我们还将演示代码覆盖及其如何提供实时Class Coverage View以供快速查看每个类的覆盖详情,并识别未完全覆盖的类。
本session适合于初级到中级开发者。
ASP.NET Ajax 编程
日期:    2007年10月31日 周三    Webinar的时间
长度为45分钟
          
时间:    中国:    12:00 (中午 12 点)
     中国台湾:    12:00 (中午 12 点)
          
          
异步JavaScript和XML技术(AJAX) 为环球网带来了革命,在此次Webinar中,我们将演示如何使用RAD Studio 2007创建AJAX支持的ASP.NET应用程序。如果您需要创建web应用程序,那么您不要错过我们的Webinar。
本session适合于中级开发者。
使用Ruby on Rails 和 3rdRail进行Agile Web开发
日期:    2007年11月7日周三    Webinar的时间
长度为45分钟
          
时间:    中国:    12:00 (中午 12 点)
     中国台湾:    12:00 (中午 12 点)
          
          
在本次Webinar中,我们将讨论如何使用3rdRail创建支持Ajax的Web应用程序,已经整合了单位检测,且可以从企业模型中生成。
本session适合于初级到中级开发者。
使用3rdRail进行高生成力开发
日期:    2007年11月21日周三    Webinar的时间
长度为45分钟
          
时间:    中国:    12:00 (中午 12 点)
     中国台湾:    12:00 (中午 12 点)
          
          
在快速应用程序开发符合Ruby on Rails开发架构要求时,您可以获得3rdRail。欢迎加入此Webinar来看看我们是如何将RAD加入Rails的。
本session适合于中级开发者。
用BlackfishSQL写入高性能Database系统
日期:    2007年12月5日周三    Webinar的时间
长度为45分钟
          
时间:    中国:    12:00 (中午 12 点)
     中国台湾:    12:00 (中午 12 点)
          
          
BlackfishSQL是CodeGear最新RDBMS产品,这一可管理数据库服务器支持以任何语言写入Stored Procedures, Triggers 和 User Defined Function。在此次Webinar中,我们将演示如何使用Delphi.NET进行编写。
本session适合初级,中级以及高级开发者
VCL.NET programming with ECO 4
日期:    2007年12月19日周三    Webinar的时间
长度为45分钟
          
时间:    中国:    12:00 (中午 12 点)
     中国台湾:    12:00 (中午 12 点)
          
          
随着ECOIV的发布,现在ECO可以支持VCL.NET框架,提供有使您的ECO体验更加轻松的范围全面的新VCL.NET组件,从而更具生成力,本Webinar将详细研讨这一新的技术。
本session适合于高级开发者。
版 权? 2007 CodeGear。保留所有权利。你收到来自CodeGear的消息是因为你曾经询问或购买过我们的产品,或者提供过你的电子邮件地址。如果不希望收到与 CodeGear更进一步交流的来信,请回复消息告知不希望再预订这一主题。CodeGear将不会向无关的第三方出售或者与其共享你的电子邮件地址: 隐私政策。版权所有 ? 2007 Borland软件公司,20450 Stevens Creek Blvd。Suite 800, Cupertino, CA 95014。所有CodeGear商标和产品名称都为Borland软件公司在美国和其它国家的标志,商标或注册商标。其余商标所有权归其各自持有者所有。CodeGear-100 Enterprise Way-Scotts Valley CA 95066-3249
注册的流程对于新手来说比较麻烦。这里做一下简单说明,
1. 首先点击任何一个"请现在就注册参加"的连接,然后进入Interwise上面Borland公司的栏目。可以看到该研讨会的相关细节――您或许需要切换浏览器的编码。
2. 单击该研讨会的Register按钮。
3. 在注册提示框内可以看到需要输入用户邮箱地址和密码。点击注册来注册一个Interwise帐号。
4. 完成注册后请查看自己邮箱的邮件,查收密码。
5. 重新回到第一步,直到再次出现注册提示框,输入邮箱地址和密码就好了。
请注意提前安装Interwise客户端,然后届时参与会议。

Delphi 的用户们,早点开始享受 MSBuild 吧

(CSDN Oct 10, 2007)
Delphi 2007 的发布进一步表明了 CodeGear 对于 .NET 的态度――一切为我所用。当然,做到现在的阶段,Delphi 团队也是一步步走来。
首先, Delphi for .NET 所使用的框架 VCL for .NET 重新封装了 CLI 的各个接口,使得 VCL Win32 的代码可以尽可能的迁移到 .NET 平台上。
其次,在 Delphi IDE 中,重构和 Together 都是用 .NET 技术做好然后加入的――当然,后来为了提高执行效率一部分重构用 Delphi 重写了。
现在,Delphi 和 C++Builder 的生成引擎(build engine)换成了 MSBuild,使得 Delphi 同 C# 一样得到了 Windows 平台上最好的生成引擎支持。
关于前面两个改变,相信多数新版 Delphi IDE 的用户已经比较熟悉了,这里就不多做介绍。这里重点要介绍一下 MSBuild 的引入对于 Delphi 程序员究竟带来了哪些好处。
什么是生成引擎
对于长期仅仅使用 IDE 来做开发的初级程序员来说,生成引擎是一个陌生的概念。而对于使用 Console 命令来做开发的高级人员,和生成引擎几乎是天天打交道。从你是不是了解和熟悉生成引擎,大约也就可以看出你的编程境界到了什么阶段。
我所接触的最古老的生成引擎就是make和nmake了,类似的还有gnumake。这些都是为C和C++应用开发的引擎。程序员编写makefile脚本文件,然后make.exe就会自动去调用C编译器和连接器从源代码得到最终的程序。当然,还可以利用脚本让make干些其他工作,例如删除中间文件等等。
不要认为这个用批处理命令也可以实现,因为批处理对于操作系统的依赖性太强。不同的操作系统批处理命令还是差别很大的。makefile脚本作为一个操作系统上面的中间层,提供了通用的命令和语法,所以使得不少Unix到Linux的迁移变得不那么困难了。
现在可用的生成引擎
ANT 是 Java 平台的生成引擎标准。Borland 的重心一度集中在 JBuilder,所以 JB  对于各种 Java 规范的支持都很及时,但是这方面 Delphi 却没有一直没有跟上时代的步伐,IDE一直使用着一个封闭的生成引擎。虽然以 ANT 为借鉴,SF 上面开了 WANT 项目,开发出了一个适用于 Delphi 的基本的引擎出来,商业软件如 FinalBuilder 也给予了 Delphi 不错的支持,可是真正能够将这些工具用于生产的项目却是不多――CnPack 使用了 WANT,算是一个很不错的范例了。
比较而言,商业软件 FinalBuilder 做的更加完备,可以做的自定义和扩展都很丰富。而 WANT 的开发一直没有达到一个很成熟的程度,所以我在做早期的CBC时一直都是使用自定义的 NANT 脚本来做 Delphi 项目的生成。
MSBuild 的诞生
Windows平台的生成引擎过去一直是Borland的make和微软的nmake的战斗。但是这两个都没有办法很好的支持Delphi和后来的.NET。NANT的出现,打破了这个古老的局面。
可是开源的 .NET 工具是一段悲壮的历史。在 .NET 1.x 的时代,多个开源项目曾经在微软的地盘占尽风头,像 NUnit,NDoc 和 NANT。但是在 .NET 2 发布之后,微软以将自己的技术做到了 SDK 中,从根本上取代了 NDoc 和 NANT,NUnit 也是一直得不到微软的支持。
MSBuild 出来的目的首先是为了让微软自己Windows平台上面的各种语言得到一个好的生成引擎。虽然 NANT 好用,可是不在微软自己手里,怕受制于人。NANT 实在是个好东西,对 Mono 的支持很好,长期下去对于微软是个威胁。可是自从 MSBuild 出现,Windows 平台上再使用 NANT 的开发者就不多了。
Chrome 对于 MSBuild 的支持
Chrome 对于 MSBuild 的支持开始的很早。.NET 2 还在 Beta 阶段时 RemObjects 就很好的利用 MSBuild 引擎设计了 chrome 文件的格式,使得编译 Chrome 项目变得十分简单。可是那时 Delphi 2006 还是基于 .NET 1.1 所以还没有办法使用这个方便的引擎。既然 NANT 不能用了,MSBuild 也是 Delphi 唯一的选择。
Delphi 使用 MSBuild
当你用 Delphi 2007 打开旧工程时,你会发现不管是 dpr 还是 bdsproj 都不在是真正的工程文件了。现在你需要好好研究的就是 dproj 文件了。这个 XML 文件同 C# 工程文件 csproj 采用了完全一致的格式,只是属性都是针对 dcc 编译器的。所以任何 MSBuild 的扩展,像 MSBuild Community Tasks,都可以用在 Delphi 工程的扩展上面。基于这个引擎,编译前后的动作都可以简单的用XML来定制,使得整个开发过程大大的简化。由于 MSBuild 可以看成是一个可以方便扩展的脚本引擎,所以用得好的话威力可是很大的。
学习 MSBuild 并不是那么困难,就是需要一些合适的指导。下面这个网址就指向一个不错的培训材料,
越早熟悉这个引擎就可以越早提高你的开发效率。因此,早点开始使用吧。

Borland 传奇拾遗: CodeGear RAD Studio 2007, 转折继续,产品诱人

(CSDN Sept 27, 2007)
本来CodeGear已经发布了Delphi 2007和C++Builder 2007,照理说这个仅仅添加了Delphi for .NET的新东西――RAD Studio 2007应该不会带来太多的新特性,但是仔细梳理一下,还是可以看出CodeGear公司不像Borland那样只想着赚大钱。CodeGear的用户可以得到的现实好处还是很多的。
升级策略
首先,来介绍一下CodeGear的产品升级策略。之前的Borland模式大家相信也比较熟悉,简而言之就是Update有限。如果你需要修正更多bug的机会,请购买下一代的产品。当然,这也意味着Update不会带来新的特性。
虽然在Delphi 2005和Delphi 2006的时候这一策略有所松动,但是直到CodeGear成立,我们才有机会看到现在的新局面――Update也可以包含新的特性!当你将Delphi 2007和C++Builder 2007升级到Update 3,你的IDE立刻就开始支持AutoSave/AutoRecover了,而且又多出了BlackFish SQL这个小巧好用的数据库。这可都是RAD Studio 2007才加入的新东西呀!假如你还没有升级到Update 3,赶快行动吧!
Delphi for .NET的策略调整
如果你像我一样从Delphi 8,Delphi 2005,Delphi 2006一路走来,那么你肯定会惊讶于CodeGear这一次在.NET平台上的新策略――No Windows Forms,No WPF,Only VCL for .NET。
本来VCL for .NET同WinForms就是重叠明显的两个框架。两个都存在的缘故之一就是VCL for .NET还不能完全代替WinForms――例如ECO当时不支持VCL for .NET。由于ECO 4正式加入了对VCL for .NET的支持,所以VCL for .NET终于可以全面代替WinForms了。Delphi for .NET也由此正式跳出了微软限定的.NET标准,建立了一个完全由CodeGear来主导的框架体系。一个很明显的好处就是CodeGear可以方便的加入新的API支持,例如VCL for .NET对于Vista新API的封装是十分完善的,远远超出了WinForms――后者只能利用一些蹩脚的方法直接呼叫Vista API来启用Vista特效。这样一来不论是VCL还是VCL for .NET现在都有了市场上对于Vista平台的最好支持――微软自己的Visual Studio反而是落后了许多。
另外,C#Builder也失去了和C++Builder、Delphi同等的地位,同VB.NET一样低人一等,只保留了代码编辑和简单调试的功能。我个人一直也认为CodeGear的R&D小组不应该同时支持那么多编程语言,现在看到这样的变化也在意料之中。
正是由于Delphi小组的精力完全放在了VCL和Delphi本身,可以想见这一次的VCL改进还有将来的Unicode VCL会给Delphi开发者带来怎样的变化。
当然,这也不意味着Delphi for .NET没有跟随.NET平台的进展。打开CodeGear Developer Network,你可以看到关于用Delphi for .NET进行WCF开发的文章,可以看到Delphi for .NET关于Generics的支持。虽然Delphi确实慢了一步,但是微软为.NET注入的各种所谓新特性也并不是说每一个都那么不可缺少――很多语法糖就很容易让初学者看得发晕,不是十分合适放在实际的项目中――除非真的是为了提升执行效率。
RAD Studio的未来
随着VCL地位的稳固已经Delphi小组重心的重新确立,我们可以期待在Win32和Win64平台上VCL和Delphi进一步提升的巨大空间。特别是Unicode VCL和RTL将在下一版本的Delphi中完成,可谓万众瞩目。毕竟微软的MFC实在是太不完美,ATL又始终不能完全取而代之,成熟可靠的VCL还是原生Windows平台开发中不可忽视的一股力量。
另一个值得期待的变化,将是Delphi语言对Generics的全面支持。下一版本的Delphi将会在Win32上面做出Generics来。这也似乎意味着Delphi也可以做出STL之类的容器。这也很可能会革命性的改变Delphi容器支持不是那么理想的问题。如果Delphi编译在这方面取得突破,Delphi和C++的相似性将得到进一步的提升,这也可能让Delphi进入之前无法触及的开发领域。
至于更远的未来,相信在Nick Hodges掌舵下Delphi小组会做出更多令人激动的创新,带领这一长寿的编程语言进入下一个开发的时代。

动态语言――BEA User Group之后的一点想法

(CSDN Sept 24, 2007)
听说 BEA 是在阅读《Borland 传奇》的时候,而了解它则是在找工作的间隙。很遗憾自己一直没有选择做 Java,因此也就不可能应聘 BEA 的技术职位。但是很庆幸的这不妨碍我抽出一个下午的时间参与到 BEA User Group 里面。应该说到了上海之后自己也参加过了一次 EDA Tech Forum,但其氛围和 User Group 还是两样。
首先过来讲座的专家都不是以卖产品为目的的,除了开场由 BEA 的人士围绕的产品是 BEA 的 WebLogic 平台。用 Jython 来做脚本还是很不错的想法,但是其实假如选择的是其他动态语言例如 Groovy,效果应该也是一样。毕竟真正使得配置可以成功的是一套 WLS 接口。Microsoft 同样也将动态语言 JScript 作为操控配置 Windows 的一个解决方案,效果也是十分类似,大大简化了配置服务器之类的工作强度。
我特别喜欢第二位介绍 Groovy 和 Grails的讲座。应该说我对于 Java 平台的一些技术还是有稍微的了解,因此听起这个讲座难度还不是很大。况且钱霄先生侃侃而谈,又有大量的举例,可以让你听一点皮毛也受益匪浅。契约编程看来已经是大势所趋了。从 Grails 的各种特性来看,其实 CodeGear 手中的 ECO 几乎全都具备――模型,持久化,各种 Action 和 Service 支持,可惜 ECO 一直没有像 Rails 和 Grails 之类这么流行――价格或许是一个因素。
至于 XRuby,大概是由于主讲的些许紧张,效果并不是那么明显,起码我还没有兴趣去试试看。
简单谈谈自己听完之后的对于动态语言发展的一些看法。
首先,动态语言在开发中的重要性已经在提高了。在我自己的项目中,像 MSBuild 脚本之类的东西实在是方便极了。Rails之类的开发高效率相信很多人都希望尝试一把。这也引发了现有的主要软件厂商对这一领域的兴趣。BEA 利用 Jython 来实现 WebLogic 平台的快速配置,Microsoft 借由 Dynamic Language Runtime 将 IronRuby 和 IronPython 在 .NET 平台上面实现……相比较而言,Microsoft 的脚步要快上许多。DLR 基本上已经很成熟,便于各种动态语言迁移过来,而 JVM 上面还没有一个通用的动态语言基础可以使用。这也导致 JRuby 之类的项目都必须自己来开发 JVM Dynamic Language Support。这一点同时也表现出了现有 Java 厂商目光的短浅,对于动态语言的支持十分有限。虽然 JRuby,Jython,Groovy 之类的开源项目也取得了一定成果,但是没有主力厂商的推动,发展还是很有局限的。
其次,动态语言应用于开发的优势还远远没有被发挥出来。一个很明显的例子就是动态语言 IDE 的匮乏。这也使得 CodeGear 有机会进入一个用户群巨大但是竞争相对较小的市场。例如 Ruby,虽然 Eclipse 和 NetBeans 都有 Ruby 的支持,而且已经做了多年,但是问题多多。CodeGear 3rdRails 一面世似乎就已经在很多方面远远领先。可见应用开源 IDE 虽然可以有效降低使用者的初始投入,但是产出依然十分有限,并且 IDE 的不稳定常常带来新的麻烦。商业 IDE 的介入对于迅速提高生产力、加速动态语言的普及都是很有好处的。
最后,就是动态语言的普及问题。当越来越多的程序员意识到动态语言的重要型,同时有了很好的 IDE 的支持,那么是不是动态语言普及的时候就到了呢?应该说在这个阶段,依然需要众多商业公司的参与。例如提供各种方面的控件、类库、DE 插件。最重要的还有培训和技术支持。唯有如此,才可能让动态语言真正进入主流的开发中,达到全盛。
当然,User Group 的抽奖活动也蛮有意思的――当然,我这么说是因为自己很幸运的被抽到了:-)

《Borland传奇拾遗》的将来

(CSDN Sept 14, 2007)
一不留心在Google搜索的时候敲上了《Borland传奇拾遗》的名字,结果自然一半一半,高兴的是居然有2,370左右的链接,而不爽的是除了开头几个链接属于我自己的blog,其他都是没有得到授权的转载。似乎对于任何流行一时的东西,遭遇这种待遇是不可避免的。因此我只能宽慰自己,毕竟我的目的是让更多的人持续关注Borland的命运和开发工具的未来,现在这个目标算是基本上达到了。
CodeGear的茁壮成长,似乎终于摆脱了Borland一度的阴霾。因此这个拾遗的东西也越来越与Borland这个品牌脱节了。我想是时候改为《CodeGear传奇》之类的东西了。但是由于工作的缘故,自然还要慢慢抽空来写作。让人高兴的,现在CodeGear每隔一段时间就会给人带来惊喜,所以要延续这样一个系列也不是那么复杂了。
关于blog发布的问题,我也有了新的想法。今后草稿就发在这里好了。至于最终版本的PDF,我还没有想好以哪种方式来发布,也就到时候再说吧。
感谢对于这一系列持续关注的读者们。

所谓校歌

(CSDN Sept 07, 2007)
我的母校正在准备发布校歌。都过了50多年了,突然发现别的学校有,也就要当作一件大事来做了。 总之费时费力,而像我这样好不容易毕业的人也根本没得兴趣去关心最后定下来的是首什么歌。
不过其实仔细想想,最后顶板的东西说不定又是古老的要命的那种风格,让人似乎怀念起那些相片泛黄的东西来。这自然不是我喜欢的东西。但是转念一想,像Dancing Queen那种经典的老歌还是不错的。就是不知道一些年过半百的决策者会做出怎么样的决定。
稍微有点期待,不过即使听了蹙眉也无所谓了。毕竟我不会再花上时间去学唱这样的东西了。

WPS 2007,写作《Borland 传奇拾遗》的好帮手

(CSDN Sept 02, 2007)
为了整理《Borland 传奇拾遗》,我开始寻找免费的 Office 软件。无疑,开源的OpenOffice或者Google Pack中的StarOffice都是很好的选择,但是,他们对 Microsoft Word 格式的支持一直让我犹豫不决。于是我又想起了同学写毕业论文时使用的 WPS 个人版来。可以说 WPS 2005 个人版十分的方便,标签页的结构使得同时开几个文档十分方便。当然,和词霸的整合也十分贴心。
今天,你可以试试看 WPS Office 2007 新产品了。看起来的确更加漂亮。
希望不久我就可以发布整理之后的《Borland 传奇拾遗》。当然,很多今年的新内容会添加进去。工作之后,我对于 Borland 的感受也从一个学生的角度变成了从一个软件工程师的角度。相信这是写出的内容会有所不同。
(更新:没想到在Vista上面WPS 2007还是不稳定,总是被提示出错了要关闭。搞不清楚到底是WPS的问题,还是Vista的问题。)

读代码的感觉

(CSDN August 28, 2007)
必须承认阅读别人的代码是一种很必要的学习手段,同时也是一种了解别人的方式。李维先生最近的阅读兴趣也让他了解了DBX4背后的工程师。 这确实是一个很好的例子。
我也常常阅读代码,不论是CodeProject的还是SourceForge或者CodePlex,这的确是一桩让人兴奋的事情。当然,总有精华,也难免糟粕。只看个人取舍了。
你的阅读故事又是如何呢?

Code Beautifier Collection 动态

(CSDN August 13, 2007)
对于不习惯看我英文blog的一些用户,我在这里讲一下CBC的最新进展。
Google Code 主页
项目的主页从GForge.oss.org.cn迁出,搬到了Google Code上面。
老主页将继续保留,主要用来放置CBC 5.*的老版本。仍然在使用Delphi 8/2005/2006的用户可以去那里下载CBC 5.*。
新主页将完全以CBC 6.0为主。
CBC 6.0 GrapeVine
GrapeVine已经放出了三个Preview的版本(包括M1和M2)。现在最新的版本是GrapeVine Milestone 3,支持Delphi 2007、C++Builder 2007。M3还很好地支持Windows Vista。重做的安装包可以支持安装给所有的用户。
好了,如果有兴趣,请访问
以获取最新的信息。

UI and UX: 软件还是艺术?

(CSDN July 28, 2007)
Paint.NET是一款免费的图片处理软件,完全由.NET编写。出于兴趣,我也订阅了这个项目blog。
初次使用它给人一种震撼的是Paint.NET似乎不像GIMP那样功能丰富――对于很多图片格式都不支持,包括我平时经常用的EPS格式――但是界面十分的简洁和美观。开发者对于界面这样追求,在我所见过的开源项目中确实不多见。
马上3.10的版本也会发布,可是从blog里面你可以看到的3.10的新内容,居然是两个界面的小改进,属于那种不仔细辨认难以察觉的变化。为什么会有这样的项目理念呢?从下面的blog内容中似乎可以窥见一些缘由。
其实对于商业软件来说,现在竞争已经从技术实现细节逐步转移到了UI和UX的PK上面。Apple和Microsoft不是就在桌面观感上面斗的你死我活吗?iPhone的震撼,其实也多是在UI和UX方面。
当然,对于小型的开源项目来说,做好功能已经很不容易了。可是,一个漂亮友善的界面,还应该作为我们争取用户的主要手段。是的,希望我可以在Code Beautifier Collection下面一个阶段的开发里多做一些界面的改善。

January 02, 2012

Google拼音: 当更新如此安静

(CSDN July 20, 2007)
Google拼音的又一次更新开始了。和上次一样,都是在后台下载和安装,仅仅显示给我一个托盘图标。如今各式各样的软件都带上了自动更新的功能,方便又不打扰我们这些用户,不能不说是一个巨大的改进。当初那种总是要手工去找更新,手工安装更新的光景终于是一去不复返了。
细细想来,记忆中倒是Windows最先开始了这种安静的行为。不能不说MS看重用户的体验。喜欢这种体验。
当然,Code Beautifier Collection需要逐步向这个方向靠拢了。

新浪与搜狐的blog之争:让人发笑又无奈的垄断哲学

(CSDN June 19, 2007)
大概是学习了太多电力和电信业的垄断经验,这两个blog服务提供商也开始构筑堡垒了。你想从我的服务里面迁移出去?没门。即使你今天发布了搬家工具,我明天就让你的工具作废。
当然,其实CSDN也是一样。上次就说了CSDN和Windows Live Writer配合不起来。
为什么Blogger和Windows Live Spaces反而支持公开的API,任由用户自己选择?难道它们不想吃这碗饭了?谁给你饭吃,你就要对谁负责任。吃了我们的,反而还想做垄断,真是让人不能接受的霸道行为了。

又一个放弃CSDN Blog的理

(CSDN June 11, 2007)
随着blog世界有一个新标准的出台,CSDN博客的落伍又变得明显起来。这个新的标准,就是同Windows Live Writer兼容所需要的一系列标准。
Compatibility
Writer is a great client for Windows Live Spaces but also works with other weblogs including Blogger, LiveJournal, TypePad, WordPress (and many others).
Writer supports RSD (Really Simple Discoverability), the Metaweblog API, and the Movable Type API.
We want Writer to work well with every blogging service out there. If you can't get Writer to work with your blog, we want to know.
可以看到CSDN的博客还没有出现在列表之中。也不知道CSDN是不是和Writer兼容。只是越来越喜欢Writer的我现在很难找到一个继续使用CSDN博客的理由了。
国内的blog似乎一个也没有在列表中,真是令人感到失望――只是注重外表,根本不重视和业界标准的兼容性,只会让它们所提供的服务越来越落伍。Blogger和Live Spaces所以流行起来也就不足为怪了。

Stardock: 创意总能令人兴奋

(CSDN May 16, 2006)
使用StyleXP的时候,感觉那东西真是bug多,而且每个皮肤都很大。于是放弃了。后来就看到同学使用CursorXP修改鼠标样式,觉得很好玩。于是就装了CursorXP,于是就知道了Stardock。再后来漫长的时间里,开始为Stardock充满想象力的新东西吸引,慢慢的喜欢上了这样一间公司。
当然,从我使用的感受来说,WindowBlinds、IconPackager、ObjectDock和CursorXP都是非常值得一试的软件。WindowBlinds比StyleXP稳定,而且wba的样式文件一般都不大。iconPackager则可以让系统里面全部的图标都随意更改,也是十分好玩。ObjectDock可以让Windows也带上一个Mac机器一样的Dock菜单。其中ObjectDock我是从第一个试用版就开始使用。现在呢还在使用着Free的版本。应该说这个Free版本就已经足够我享受了。
其实现在Stardock免费东东包括ObjectDock,CursorXP、BootSkin和Logon  Studio,但是后面两个同硬件的兼容性不是那么好,不知道在你的机器上面会不会运行正常,所以我在上班用的电脑上面并没有安装。但是前面这两个确实是值得天天使用。
可惜WB和IP都是Stardock的主打产品,因此只提供试用版本,就让人不得不放弃了。不过,等我有了信用卡之后,说不定可以购买一套,毕竟都是20美元一件的东西,不算很贵了。
你经常使用什么好东西呢?

VMware Workstation和Server: 艰难的选择

(CSDN May 15, 2007)
不得不承认VMware Workstation是个好东西。不过,买一个还是很贵的。刚刚使用了版本6的几个试用版本,都十分的好用。可是现在6的正式版出来了,估计很快试用版就会过期了。怎么办?
今天才终于发现,那个免费的VMware Server居然就有Workstation的主要功能。可惜没有Shared Folder,不然对我而言Workstation的功能就没有什么诱人的啦。
你也使用VMware吗?还是使用Microsoft的Virtual PC?

Firefox 3和Google拼音

(CSDN May 14, 2007)
Firefox 1确实比IE 6好用很多。不过,Microsoft终于还是推出了IE7。Firefox 2出来已经有好几个月了,不过我使用这个版本已经太久了――从Beta 1算起。感觉和IE 7相比,Firefox能够提供的好处就不是那么多了。现在试了试Firefox 3的Beta版本有一个多星期了,还没有看出比FF2好处多。不过,确实没有什么异常和问题,算是比FF2的Beta版本稳定多了。
另外一个新东西,是Heartsun大哥建议我使用的Google拼音。必须承认这正是我放弃微软拼音2007之后需要的东西。当然,微软官方放出的2003版本本来已经足够使用了,可是毕竟是多年之前的东西。Google拼音最让人省心的是它会把词库同步到Google的服务器上面。虽然对于保护个人隐私多少有些不妙,但是显而易见的好处是我在自己家里和单位里可以共用一套词库,并且不必担心重装系统后丢失。
还有什么东西是你觉得最近比较好玩的呢?不妨推荐一番。

Delphi中安装OCX的最新说明

(CSDN May 11, 2007)
从Delphi 2005开始,Delphi进入了一个新的IDE时代,这也导致原来安装OCX的习惯必须做出改变。因此察看帮助是必须的一步。
如果你还是看不懂帮助,下面是CodeGear工程师给出的进一步解答,相信足够权威和可靠。对于Delphi新版本的用户来说,应该是很值得参考的。
http://blogs.codegear.com/fhaglund/archive/2007/05/09/34459.aspx

匆匆写就的近况

(CSDN May 10, 2007)
很幸运的和华工04级的研究生一起毕业离校,有很幸运的和05级一起等待着毕业证。这意味着自己现在的状态就是悬在天地之间,上不着天,下不着地。
那些04级的人士,已经像我一样开始了上班的生涯,也就是开始拿钱了开始缴税了。而那些05级的同学们还在过着悠闲舒适的研究生活。
拿着工资,却在怀念着实验室里快活的老样子,是不是有些愚蠢甚至懒惰呢?上班就没有那么快乐吗?这短短的一个月还难以给出一个确定的答案。我想,下个月或者可以多写一些感受。
刚刚完成了对于求职经历的回顾,很多的机会擦肩而过,很多单位令人流连忘返。不过,总体来看我能够进入现在的位子就是十分十分的幸运了。最令我感到吃惊的是,自己居然投了那么多的简历,参加了那么多的笔试、面试。只是一切都过的太快,或者自己的记忆力越来越糟糕,竟然只留下淡淡的印记。多么遗憾呢。
手上的项目还有多少bug没有解决呢?期待着明天收到bug report。现在,这似乎已经成了工作中最重要的事情了。我想,我已经习惯。毕竟,做CBC和Alex的时候是没有人帮我做测试的。
开始做一个幸福的程序员,开始一段自己喜欢的旅程。

上班以来使用的开源东西

(CSDN April 27, 2007)
开源的东西还是应该多多采用。确实可以省很多钱。在SA的环境里使用开源的软件,我就不必总是去麻烦IT组的人员了。
我现在就安装了下面这些东西:Notepad++,7Zip,CVSNT,Firefox,Thunderbird,SharpDevelop,Inno Setup,WinMerge,GIMP,NUnit,PDFCreator。当然,使用的免费软件也是挺多的,像Turbo JBuilder,Sandcastle。
加上已经用到项目中的很多CodeProject代码,感觉欠别人的人情还是很多的。不过,我也在努力的发布一些有用的Blog内容,讲讲自己开发中遇到的困难和解决方法。虽然都是一些常见的开发困难,但是希望可以作为别人的参考。当然,都是些英文的东西,放在了http://lextm.blogspot.com上面。

开始上班的一些变化

(CSDN April 09, 2007)
开始上班了,换了一个城市,也换了很多东西。所以应该承认变化还是很大的。由于对于公司的规章制度还不是十分的了解,CBC和Alex两个项目将会暂停一个时期,还望各位用户谅解。
下班了,该回家了。

HardQuery Report: RC 5 is out and the Final will be available late in April

(CSDN March 26, 2007)
I am now packing for leaving for Shanghai and I will start my career there. As a result, I do not have plenty of time to make the 5.3.3 Final ready in weeks. I wish I could have time to ship it in April. In fact this latest RC 5 is stable enough for you to use.
Luckily I have fixed the Code DOM bugs which hides in the Source Navigator and Typing Speeder features. Give the latest RC a try and you will see something very useful for C# coding.
The RC 5 can be downloaded from here.
Stay tuned. I will blog again once I reach Shanghai.

Google的不稳定性,或者是CERNET的无理由限制

(CSDN March 23, 2007)
本来计划用Google的邮箱+博客+Code,现在居然只有邮箱可以从CERNET直接访问,实在令人失望。或许我还要在等等看。
或者今后使用公网上网就不会有这个问题了。但愿。

Bug Report Reply: Delphi的Lite版本

(CSDN March 19, 2007)
这也是我第二次听说有Delphi Lite版的用户尝试使用CBC。
我使用delphi 10 lite v3便携版,并已经打好对应的update2补丁。安装好CBC以后不能运行,告诉我
"应用程序正常初始化(0x0000135)失败",不能使用。
不过,我使用cnPack就没有问题。
还有,我已经安装好了jcf,astyle没有安装,是不是因为这个问题?
自然,这个问题我不可能遇到,因为我没有使用过Lite版本,一个非官方的裁剪版本。但是可以猜到为什么CnPack可以而CBC不行――CBC是C#做的。
Lite版本应该是删去了.NET部分的Delphi,没有Together也没有其它的部件,甚至没有Borland.Studio.ToolsAPI.dll这个关键的文件。这样bds.exe在启动的过程中不能正确地初始化.NET环境,也就不能加载CBC的框架。.NET是CBC存在的必要条件。
同样的问题我想Delphi 5/6/7的用户在尝试使用CBC时也会遇到。因此,我认为这不能算是CBC的一个bug,毕竟设计CBC的时候,我就将Galileo IDE也就是BDS 1.0-4.0(Delphi 2007应该是5.0)考虑在内。
我能给出的建议就是请使用Borland CodeGear官方发布的Delphi IDE,Delphi 8-2006都可以使用CBC。不过对Delphi 2007的支持需要在等待一段时间。

免费的新东西:Turbo JBuilder 2007

(CSDN March 19, 2007)
JBuilder一直有一个免费的Foundation版本。不过从现在起,这个版本也被列入了Turbo系列,叫做Turbo JBuilder 2007。你可以从这里下载到
当然,有了这个版本,我今后似乎就不会去下载光光的Eclipse SDK了。免费的EasyEclipse也有了一个强大的竞争对手。

Delphi 2007 for Win32的正式发布

(CSDN March 19, 2007)
Borland CodeGear酝酿已久的这个新产品终于发布了。由于有了直接下载安装版本,现在欧洲的很多用户估计已经用上了这个新东西。不过,国内究竟是什么情况难以估计。但是,对于CBC这个项目来讲,Delphi 2007是一个很难放入支持名单的东西。
  1. Delphi 2007是基于.NET 2.0的IDE。这个就需要确认CBC这个完全在.NET 1.1上编译的产品可否在.NET 2.0上正确执行。
  2. CBC主要的功能是支持C#,Delphi排在第二位。所以不知道现在使用CBC的Delphi用户究竟有多少。当然,我也在增加对于Delphi和C++的支持。
  3. 现在很难投入精力做CBC。终于要去上班了,开始一段不同的生活经历。这也意味着在转换期内事情很多。我想发布了5.3.3的下一个RC版本之后项目就会暂停一段时间。毕竟,我手里的银子多了才能更好的作CBC。
不论如何,祝CodeGear好运。

炒作铁丝网

(CSDN March 16, 2007)
TSW是我本科时代所有同学中有幸同比尔盖茨这样的富豪握过手的唯一一个人。当然,这一切既是难得的机遇,也是对他一贯努力的回馈。在他从美国凯旋之后,我灵机一动给他联系了武汉本地报刊《武汉晚报》的记者。职业可以算作是一次成功的"炒作"吧(后来还有电视台作了他的节目)。下面就是在安排这一次采访的过程中发生在我、记者和TSW之间一些短信联系的记录。
(L:Lex;J:记者;T:TSW)
L:J,你好。今天晚报27版转载了华西都市报中国实习生做客盖茨家的新闻。其实其中的一位就是我的同学,武汉人,华工电信系的研究生。这样的青年才子不知是否符合人物新闻的标准呢?2006/60/30 19:37:28
J:他现在在华工读书吗 他有没有被武汉其他媒体报道过 2006/7/3 10:57:24
L:你好,他名叫T,还在华工。据我了解还没有其他媒体报道他,因为今天他才从北京的微软亚洲研究院回来。19:42:30
J:哦,怎么联系他采访列?7/3 19:39:28
L:你回到武汉没有?我打算帮你联系武汉晚报的采访,不知你是否接受?19:46:02
T:干嘛呀?你不要把我吓得不敢回武汉了好不好,呵呵,我还在候车室呢!19:43:41
L:难得的机会呀,而且看了你的博客我就有了这个想法。你同意的话我就把你的手机号告诉记者了。19:50:21
T:不行不行的,你不要乱来哦,这么点小事还是不要麻烦人家了,呵呵,博客嘛,自己人看看就好了!19:48:12
L:你们十个人里面已经有被华西都市报报道过了,你又不比他差呀。就不要谦虚了。19:54:44
T:这个我知道的啦,不用麻烦啦,都市报教育专刊的人我也见过了,我还是回来休息几天,我的手机可不是免接听的哦!19:52:53
L:人家可以等你回来武汉采访呀。给武汉人争了光,给华工人争了气,还要躲躲闪闪,真是的。赶快接收吧。又不会吃了你,呵呵。20:04:39
T:我怕还不行吗?我们在那边采访都有人看着的,避免有比较棘手,呵呵!20:02:48
L:那边?晚报的记者只是想做个专栏,了解一下你在微软实习和出国的体验了。其实不会太棘手。要怎么样你才会接受呢?我妈妈都蛮有兴趣的,希望你考虑接受。20:15:06
L:都市报?华西都市报采访过你?没有见到你的名字呀!20:21:19
T:不是,楚天都市啦,好吧好吧,随便你好了,不过我到后天才会去学校那边的!20:19:02
L:楚天都市?你什么时候和他们接触过?又做过专门的采访吗?任务专访栏目还是别的?我给你联系的是人物类的专栏,不是一般的新闻。20:27:12
T:啊?不要吧,不要不要,你就不要主动帮我联系了,我可不是什么人物!绝对不是!都市的是应研究院邀请过来的,简单的聊了一下,没什么大不了啦!20:25:24
L:这样跟你说吧,前段时间华工有个本科生也是接受了晚报这个专栏的报道,他绝对比不过你。你还顾虑什么?另外楚天都市是什么时间采访你的呀,从美国回来以后?20:35:35
T:上个星期五,呵呵,无所谓啦,比我牛的多了去了,还是不要麻烦人家了,人家也挺忙的,呵呵!20:33:03
L:人家就是不忙呀,武汉也不是处处出人才嘛,你这样的还是不多。我就把你的手机号告诉人家记者了,人家已经等了一个钟头了。楚天都市对你的采访是针对你个人的吗?20:43:15
T:什么叫等了一个钟头了?不要给人家乱吹风嘛!人家只是了解一下大概的情况而已,呵呵!20:41:36
L:我本来是试试看,不过人家蛮诚心的。你呀,就是谦虚,作为你的同学,我一直就感觉你是那种做事情有激情,学东西有灵气的人,是很值得他人学习的那种类型。机遇只偏爱有准备的人。MSRA这么多实习生,也只有你一个武汉人出国门,这难道不足以表明你的特别?相信我们提高班的同学也同样希望你偶尔Shine一下嘛。我会跟那位记者说你需要休整,让他明后天跟你直接联系。把握机会,等着好消息。21:00:29
T:简单的说,了解一下研究院的情况,我没有意见,针对个人的我想没有这个必要啦!大概就是这个样子,呵呵!20:43:22
L:上报纸也不算复杂吧,本来你要一个人一个人的说,现在说一次全部的人都知道了,不是更简单了?和你联系的记者叫J,手机号是1388615****。好了,我就说这么多。希望你一路顺利啦。21:12:04
T:汗啊,我怕你了,我们不要把这个事情弄得太复杂,更多的还是一种机遇罢了Simply is wonderful,呵呵!到学校我们再聊就好了,嘻21:00:53
L:T终于同意了,他的手机号是1387120****,你可以和他直接联系。由于他今晚的火车返汉,所以请明后天直接与他联系。据他自己说,由于微软亚洲研究院的安排,楚天都市报曾在北京对他在内的实习生们做过非常简单的采访。不知道这对于你采访他会不会有障碍?21:19:10
T:好的,多谢多谢!21:09:10
J:好的,谢谢,我明天联系他再谈,但是楚天上登了相关的文章列21:17:15
L:我只看晚报呀,老订户啦。感觉在我的同学之中,T是个十分特别和优秀的,也是一个很不错的榜样。和众多迷惘彷徨重的学生完全不同,他有目标,有激情。这才是促使我向你推荐他的理由。21:30:21
L:T的博客在:**,有关他在微软亚洲研究院实习的体验,和在美国微软总部的经历。照片不是很多,因为空间有限。很多照片存在他笔记本电脑里面。2006/7/4 11:28:36
============
我必须承认到了最后,我对于TSW只剩下羡慕和祝福了。现在他就要踏上MSRA正式员工的征途了,让我们继续为他祝福,希望他可以修成正果。

免费的CodeGear开发者日

(CSDN March 02, 2007)
免费的CodeGear开发者日又来了,而且包含Delphi和JBuilder的两个产品。
日期和场地
北京
星期一,3月12日
场地: 国宾酒店, 大宴会1厅
北京市.西城区阜成门外大街甲9号
上海
星期三,3月14日
场地: 富豪环球东亚酒店
绿宝石宴会厅
上海 徐汇区 衡山路516号
深圳
星期五,3月16日
场地: 深圳香格里拉大酒店, 珠海厅和香港厅
深圳市建设路1002号火车站东侧
演讲者
琚伟(Wayne Ju)
李维(Gordon Li)
范路(Luke Fan)
议程
CodeGear开发者大会将包含2个场次,我们诚挚的邀请您参加适合您的场次或是同时参加2个场次:
上午场次 (Delphi 和 PHP)
9.00am
注册
9.30am
CodeGear 最新状况简介
10.00am
Delphi
11.15am    RAD Web Development with PHP
12.15pm    InterBase 2007
1.00pm    上午场次闭幕
下午场次 (Java)
1.00pm
注册
1.30pm    CodeGear最新状况简介
2.00pm
JBuilder 2007
4.15pm
InterBase 2007
5.00pm    下午场次闭幕
赶快预定你的座位吧!
(比上次的Delphi 2006发布会隆重多了,呵呵,只可惜我还在武汉,没有去上海上班。如果是四月举行这个活动就好了。)
Go CodeGear!

Borland传奇拾遗: CodeGear元年的计划

(CSDN Feb 27, 2007)
说明:这些消息多数是从CodeGear员工的blog中整理出来。
CodeGear的成立
CodeGear将于Q1正式成立,现在企业标识之类的东西已经经过了最后的审核阶段估计很快就会出来。有一种说法是今后CodeGear会在线销售T-Shirt之类的纪念品。这倒是一个很好的主意――毕竟我只有一件Borland标识的T-Shirt。
新产品的发布
CodeGear将在Q1最后――即今年三月发布两个重要的产品,Delphi 2007 for Win32(Spacely)和Delphi for PHP。后者李伟先生刚刚做了一篇blog来说明,我就不赘述了――虽然是个1.0的产品,但是看起来十分有Delphi 1那时的气势。前者则是完全针对Win32开发的IDE力作。
Delphi 2007 for Win32似乎并非此前一直传言很多的Highlander。它具有下面几个特点:
1 IDE需要.NET 2.0 Framework。由于Build框架完全转移到了MSbuild上面所以这个IDE还是需要.NET框架。(之前我还担心Code Beautifier Collection能不能支持Delphi 2007,现在看来担心是多余的。)
2 全新的安装包。CodeGear放弃了之前使用多年的InstallShield的安装包制作技术,这一个新版本的安装包是使用InstallAware技术制作的,因此具有很高的灵活性和配置性,可以很方便的实现在线更新。一个例子就是文档的更新不再需要长时间的等待,只要CodeGear方面做出了更新,用户方面的文档就可以第一时间在线更新。
3 VCL针对Vista操作系统作了修改,完全支持新的API。(当然,这个要求IDE安装在Vista上面才可以。)
4 RTL集成了更多的FastCode项目的精华,执行效率得到了大幅提高。
5 IDE方面修改了很多地方,使得执行效率堪比Delphi 7。(特别是类似Delphi 7的悬停状视图得到了更多的测试应该是十分稳定了。)
6 DBExpress引擎的底层有了大幅的改写,现在是DBX 4了,但是保持了版本兼容性。这一修改大大的改善了DBX对于更多数据库的支持,也进一步强化了DBX数据库开发的能力,执行效率没有下降,在一些测试中还取得了明显的改善。
应该说Delphi 2007并不是一个革命性的版本,没有加入泛型,没有.NET开发。但是这个版本应该可以消除Delphi 7以来Win32方面用户的怀疑,也可以巩固Delphi已有的用户族群。这一点对于现在的CodeGear来说无疑是十分重要的。
这里有一位Beta测试人员的blog可以作为参考。
Highlander?
可以想见由于Spacely的出现,Highlander计划包含的特性将会在下一个版本(Delphi 2008)中出现。在Delphi Hour中Nick Hodges已经明确表示了CodeGear将不再尾随MS的步伐,而是更加贴近用户的需求。这似乎意味着说不定Highlander中间.NET 2.0/3.0的支持为Unicode VCL和Win64让路。
不论如何,这说明CodeGear确实是在遵循Where Developers Matter这一准则,确实是在努力的开发用户所需要的产品,推进着技术的进步。因此这样的产品一定会取得市场的响应,重现Borland当年的辉煌。
其他
据说不久将会出来一个JBuilder 2007 Release 2,不知道是不是真的。很期待JBuilder的新面貌。
PHP的新产品之后,CodeGear下一个目标就是Ruby。不过Ruby将会加入哪一条产品线是一个问题。PHP最后还是同Delphi作了邻居。但是Ruby这边很可能就是借用JBuilder/Eclipse的点子。
CodeRage
由于时间的关系,我就不打算注册CodeRage了,不过,这确实是一个难得的盛事。免费的年会,而且完全是藉由互联网搭建的虚拟会议。好主意。正如现在CodeGear主页上面所宣传的,可以在家里享受到Borland Conference的感受。如果你有空的话,不妨注册并且参与这个难得的年会。

The long goodbye

(CSDN Feb 07, 2007)
I have been using this blog long. In the latest months I have been struggling a lot. Because I could not stand up the poor quality CSDN Blog Service, I was searching for alternatives. 
There are several factors a new service has to met:
1. CERNET access. I should be able to write entries without a proxy server and my classmates can access it.
2. Firefox compatibility. Live Spaces fails to meet this.
3. Easy to use.
After all, I find Blogger today. Soon I will stop posting here and build up a new blog there. Thanks for those who read and comment here. You may see my new blog here:
P.S., I have to mention that in fact, CSDN provides more features than Blogger. However, I am caring about stability more.
也懒得逐字翻译。上面的意思就是说CSDN的blog服务我受够了,马上就转到谷歌Blogger上面去了。请关注这个博客的朋友们注意更改你们的RSS设置。

HardQuery Report: the Release 2 Update 2 RC 5 improvement

(CSDN Feb 02, 2006)
When you edit a C# XML comments such as
    /// <summary>
    /// Logging service class.
    /// </summary>
    /// <summary>Debug related functions such as <see cref="Debug">Debug</see>,
    /// <see cref="EnterMethod">EnterMethod</see>, and <see cref="LeaveMethod()">
    /// LeaveMethod</see> are
    /// available only in Debug Build mode.</summary>
and press Alt + Q in Delphi 2006 with CBC installed, you may see the Doc Preview dialog and see a few hyper links in it. However, when you click on one link, because the target page is not available, an annoying default error page of IE will be displayed. It is a bug, but I cannot fix it until the day before yesterday.
When I was asked to browse an article on the Code Project for a friend, I came across an x.doc plug in for VS which does similar task as CBC Doc Preview. In the article, its author shows how to prevent the above mentioned error page. In fact, the browsing action should be disabled when a user clicks the links. I found his idea and used it in CBC now. As a result, a long life bug is now fixed.

See my translation at DN.CodeGear.com

(CSDN Feb 02, 2006)
I have sent my translation of DN strings to John Kaster. And now, you can see them there.  Oh my god, it is another great chance that my efforts serve so many people. Thanks to the CodeGear guys who make a flexible web site.
If you'd like to translation the site to your native language, you should read this ahead. Let's make CodeGear a better place for developers.

HardQuery Report: Who freezes BDS when launching

(CSDN Feb 01, 2007)
Hi Lex,
I tried to use your CBC in D2006 but it prevents D2006 from opening.
Completely freezers up the loading process.
I would like to have a look when you get this resolved so please keep me
posted.
Kind Regards
Grant Brown
==========================
This is another email sent from a CBC's user. Thanks Grant.
And the following is my reply:
==========================
Grant,
Thanks for reporting this.
When I worked on older versions of CBC, I already met this hundreds of times. The only work around I see so far is to kill the bds.exe process in Windows Task Manager, and then restart Delphi 2006. For me this works fine. You can have a try to see if it works for you.
I have been digging to see what is the matter but I find out that it is csc.exe (the C# compiler) process that actually blocks Delphi 2006. If you kill this process at first, the frozen Delphi 2006 will be active. As a result, I think it is something wrong inside the compiler, not CBC.
However, I guess there may be some bugs left inside the InDate feature. So if the workaround above does work, you can turn off InDate feature in the Plus Manager of CBC to see whether anything else goes fine.
Thanks again for your report.
Best regards
Lex Mark
2007.01.31
====================
Why I post the emails here?
1. Wish you could send me bug report every time you meet one bug.
2. Quick reply from me may not be included in the Readme.pdf shipped along the installer. Adding entries to  this blog may be quicker.
BTW, you can send me feature requests or suggestions, too.