2007年12月10日星期一

重拾VIM

凡是能提高效率的工具,再晦涩也值得啃下来。
混了些年的程序员,基本上都听说过VIM吧。。当然,半数以上的人对它是仰止的。这个是它的图标:

曾经装上,并强制自己去适应它,但是还是因为没有毅力,而重新拾起UE,一堕落不可收拾。
今天花了一个下午,再次重新把它装上,并且收藏、阅读了大量的文章,把电脑中的UE和记事本彻底删除掉,强迫自己使用一段时间,希望能达到运指如飞的编程效果。


另外,eclipse里也提供了一个插件vimplugin(收费的),能让同学们在eclipse里也可以体验jkhl的感觉。

2007年12月9日星期日

一句格言,共勉

It is not the strongest of the species that survive, nor the most intelligent, but the one most responsive to change. - Charles Darwin.
最后生存下来的物种既不是最强大的,也不是最聪明的,而是那些最适应变化的。 查尔斯·达尔文。

不用写感想了,这句话非常清晰明了。共勉。

2007年12月8日星期六

越狱帝国版

Free Image Hosting at www.ImageShack.us
看你往哪跑,嘿嘿。

2007年12月4日星期二

关于进制转换和乱码产生的形象比喻

缘于QQ群里的讨论,突发奇想做了一个比喻,来说明进制转换和乱码的产生。
只要看红字部分即可。

阳光(86385101) 16:49:40
现在网络上传送的数据是几进制
阳光(86385101) 16:49:49
2进制?
Victor.Woo(46349731) 16:54:03
数据本身无所谓进制,计算机不知道这些
Victor.Woo(46349731) 16:54:17
只是用来显示的时候,才转化为相应的进制来显示
阳光(86385101) 17:00:31
那要怎么转
Victor.Woo(46349731) 17:01:09
各种数制的转化,公共计算机基础课程第一课或者第二课都会教吧
阳光(86385101) 17:01:39
呵呵
阳光(86385101) 17:02:29
不知道原来多少!都能转?
Victor.Woo(46349731) 17:04:29
“不知道原数据是几进制的”,跟“不知道原数据是多少”是两码事。
阳光(86385101) 17:24:08
好!我研究一下 。3Q
Victor.Woo(46349731) 17:24:55
举个例子,一个土著人走到你面前,竖起食指、中指、无名指,请问,你认为他竖起几根手指?
Victor.Woo(46349731) 17:25:26
你要认为竖起3根手指也对。
你要认为竖起11根手指也对。

看你怎么理解了

阳光(86385101) 17:25:47
11?
小豪(1484346) 17:25:52
11根?
小豪(1484346) 17:25:54
怎么理解
Victor.Woo(46349731) 17:25:52
二进制不就是11么?
Sonpater(349140110) 17:26:00

阳光(86385101) 17:26:05

小豪(1484346) 17:26:10
任何人我都不会理解成11
Sonpater(349140110) 17:26:11
经典
Victor.Woo(46349731) 17:26:17
土著人=消息发送方
他只管把“食指、中指、无名指”的数据发送出去。
至于怎么解析,就是你的事了

Sonpater(349140110) 17:26:49
这个问题 跟 时间的表示 很像
陈晓萍(349726245) 17:27:00
你最近这么哲学啊
Victor.Woo(46349731) 17:27:04
呵呵,把我刚才说的话串起来理解。
17:24:55
17:25:26
17:26:17
三条聊天记录
Victor.Woo(46349731) 17:27:10
呵呵
Victor.Woo(46349731) 17:27:25
如果双方的编码、解码系统不一致,就会造成乱码
Victor.Woo(46349731) 17:28:17
比如说土著人在沙地上写了个“我有11根手指”(他们部落用二进制);
而你按十进制去读——KAO,怎么比我多一根手指

阳光(86385101) 17:28:20
狂晕
Victor.Woo(46349731) 17:28:27
这就是乱码的产生
喽罗(40308988) 17:28:50
哈哈我只会用中指
①红色de小雨(511755407) 17:28:57
有点意思 谢谢

阳光(86385101) 17:29:03
我不伸了
Sonpater(349140110) 17:29:12
很有 意思
Victor.Woo(46349731) 17:29:10
因为他按二进制编码,而你用十进制解码,双方的意思就冲突了
①红色de小雨(511755407) 17:29:15
用脚
喽罗(40308988) 17:29:38
你应该去教人写程序
Victor.Woo(46349731) 17:30:06
er..不敢
只是随手写点
喽罗(40308988) 17:30:23
当老师也不错啊
阳光(86385101) 17:30:31
你是不是最近跟土著人有什么联系啊!还土著人
Victor.Woo(46349731) 17:33:37
呵呵,只是为了假设一个双方不一致的编码/解码环境

一句话评价微软和开源阵营之争

偶然想到,豁然悟道:

微软和开源阵营(Linux、Java……)之间的争斗,就如战国时期的合纵连横。
靠微软如连横,即“事一强而攻众弱”;
奔开源如合纵,即“合众弱而攻一强”。

这么说来,俺就是田地,朝楚暮秦——白天在公司做J2EE,晚上回家搞.NET。

2007年12月2日星期日

Google Reader的bug

大概是一些文件夹(标签)会丢失,但feed没丢。
报告给google reader team了,等待回应。
以下是我拟的邮件原文(Google Reader team只接受英文邮件),看看有没有跟我一样不幸的同学。

Hi, I've created 7-8 Tags(Folders) in my GR, they works well in about a month.
But these days, they "disappeared" from the left tree. I've do some exam below:

1. when a feed in the "disappeared" folder has a new article, the new article can be seen in the right main panel.
2. when i export OPML, the folder IS there.
3. clear browser cache and use both IE and Firefox, the folder still not appeared
4. add new folder, the new folder doesn't appear
5. goto the GR home page, and from the "news paper", I can see the summary, and can see "read more info about AAA", but after I clicked AAA, the page is still and nothing changed

thank you for your attention!

2007年11月30日星期五

明知不可而为之,一拖四

昨晚和韬一人载一mm去金山打球,天寒地冻哪,忍不住在路边买了一个集成sp1的头盔。
回来的时候,韬跟我说,偶的电驴快没电了,只能开两三百米。果然,开了一分钟,就歇菜了。这时候,离家还有几公里的路程,晕T_T。于是把mms赶下车,思考该怎么办。。

韬想到路边去找什么绳子之类的东西来连接,基本上是mission impossible。我想起车后座下面刚好有个简易插线板,有3米长的电线。嗯今晚就准备牺牲它了。

我们将电线折成3折,把两辆车栓上,大家又很high地上路了,车*2,gg*2,mm*2,估计也有300公斤的重量了吧,我的车一启动,电量指示计直接打到红色区域,汗,也撑不了多久。

两车之间只有一米不到的距离,而且电线是刚性的。如果我的车子略慢下来,线就会松弛,再一加速,就会感到猛地一拽。为了省电,我们把灯都关了,摸黑前进,甚至不敢刹车。因为刹车浪费动能,而且还会造成刹车灯亮起来,费电T_T。熬到洪山桥头,50米的上坡靠手动冲刺。电线非常争气,也非常壮烈,在开到韬家楼下的时候崩溃,断成三截。我的驴子也宣告电量耗尽。下雨天留客天啊,没得选择,四人一块到韬家喝茶,充电。

已经耗到23:30了,大家都很崩溃,mm们受不了taxi去了,偶跨上充了半小时电的驴子,飚车回家,真是千里江陵一日还啊~

2007年11月29日星期四

微软新一代开发平台 Visual Studio 2008 Jumpstart 新特性纵览及开发应用起步培训心得

10月25日参加“微软新一代开发平台 Visual Studio 2008 Jumpstart新特性纵览及开发应用起步培训”的一些心得:

由于官方的PPT还未上传(请关注http://sharepoint.microsoft.com/sharepoint/worldwide/cn/south),以下内容基于回忆。

一、版本的说明:

1.发布时间

Visual Studio 2008,现在内部处于RC1状态,约明年2月发布,现在有Beta2可用。而更全的team system更晚发布。

Windows Server2008 年底发布,默认包含.net framework 2.0

2.特性说明

Team Foundation Server,能够实现文档管理、工作流、跟Project集成、跟SharePoint集成、比VSS更强大的源码管理(用SQL Server,支持临时Check in的“书架”功能等)。我们公司的管理如果有此方面的想法,可以再做一次尝试。

vs2008可支持.net 2.0,3.0,3.5不支持.net framework 1.1创建工程时可选择framework的版本。对于有代码,项目属性中可修改平台版本2.03.0/3.5的升级可完全不更改代码,降级可能要删除代码和命名空间。

这里对比一下两次framework的升级:

由于.net 1.x设计得不够完善,推出.net 2.0的时候做了很多核心的更改。导致1.x的代码到了2.0上有5%不能用(编译不通过)。这个数字算是很大的比例,因此微软也遭到诟病。

而这次升级,从.net 2.03.x3.0/3.5),框架只是做了补充(内容后面介绍),换句话说,2.03.x的一个子集。因此2.0的代码拿到3.x100%可用

3.x降级到2.0的话,需要移除3.x额外部分的代码,比如说System.LinQ{}命名空间的代码,还是可以用的。

微软的主讲人鞠海洋强烈建议我们至少升级到2.0,因为1.x已经不再受支持了,以后会渐行渐远。

操作系统支持情况:

1.x: win98, win 2000, win xp, win 2003

2.x: win2000, win xp win 2003, win vista (注意没有了win98

3.x: win xp, win 2003, win vista (注意没有了win 2000

开发工具支持情况:

Visual Studio 2003: .net 1.x

Visual Studio 2005: .net 2.0,装扩展包可支持.net 3.x

Visual Studio 2008: .net 2.0.net 3.x

结合我们公司的情况,我个人建议:

l 新的WinForm程序,采用.net 2.0开发。因为要照顾到win2000的桌面用户

l 新的WebApplication程序,采用.net 2.0开发,有可能的话尝试一下3.x。因为Web程序不可能再采用win2000服务器,而3.0带来的便利可以事半功倍(见后文)。

l 旧的WebApplication程序,在开发进度不紧张的时候,尽快升级到2.0。因为1.1已经没有人关注,为了项目可持续发展,这一步必须做。

l 新的WinCE程序,要看机器内置的操作系统,尽可能用.net 2.0

二、LinQ简介

LinQ.net 3.0推出的最重要特性!Language Integrated Query的缩写,意为语言集成查询。

感性的认识:避免拼凑大量的SQL语句字符串,面向对象化地操作数据库。大家可以把数据表中的每一行想像成一个对象的实例,每一个字段想像成实例的一个属性。那么,INSERT INTO语句便可以看作是new一个C#对象并提交。

public static void Main()

{

// The most active list on CP

var mostActive = new string[] {

"Christian Graus",

"Paul Watson",

"Nishant Sivakumar",

"Roger Wright",

"Jörgen Sigvardsson",

"David Wulff",

"ColinDavies",

"Chris Losinger",

"peterchen",

"Shog9" };

// Get only the people whose name begins with D

var namesWithD =

from poster in mostActive

where poster.StartsWith("D")

select poster;

// Print each person out

foreach(var individual in namesWithD)

{

Console.WriteLine(individual);

}

}

注意文中的红字部分,采用和SQL类似的语法(但不是SQL),它是强类型的,而不是一个普通的字符串,也就是说在敲每个词的时候都会出来智能提示(Intellect Sense)。而在Console.WriteLine()中,参数individual也是C#强类型的。

这样做的好处是避免了大量的SQL语句拼凑操作,LinQ作为中间层,使得程序员不必直接对具体的数据库操作。LinQJava中的Hibernate类似。但LinQ是语言级别的,所以比Hibernate更强。

这样做的代价是,读取时有0%的性能损失,写的时候有10%的性能损失。但由于LinQ带来的条理性,将和JavaHibernate一样被普遍接受。

以后会有很多这方面的资料,可以带着以上的感性认识进行更深入的学习。

三、有好多具体的语法和IDE新特性,在此略过(我们是先对VS2005熟悉起来;-))

四、网络方面

WCF框架是专门为了解决传统网络编程复杂性而设计的框架。

举个例子,采用传统的TCP/IP,要实现可靠的传输、安全认证、用户自定义协议的封包解包组包校验,需要2万行代码

而采用WCF,需要书写不到10行代码:D,并且配置文件充分可定制。如果用户想裁掉一些功能,如可靠性,只要更改XML文件配置即可。

可支持tcp/http/命名管道等底层协议,我们需要做的也只是改变一下配置文件即可。

它的大概原理和Web ServiceRPC相近。例如服务器上编写了一个Calculate()方法,要让客户端远程调用。那么它只要把这个方法发布出来。服务器会自动生成自描述的文件,如 http://................ 客户端拿着这个地址,就能获取服务器提供了哪些方法,并生成相应的代理类。需要使用时,通过 MyObj. Calculate();即可执行。而复杂的计算是在远程的服务器完成的。

结合我们公司的项目,记得以前税控服务器写了大量的代码,现在看来不是必须的。用Web Service.net remotingWCF等框架都能实现。之后的TMS,也用到不少服务器间通讯。我看到一些代码还是通过winsock写的。后续可以考虑改进一下,因为微软的库已经帮我们把大多事情做好了。而新的网络相关项目启动时,应特别注意这一点,磨刀不误砍柴工。

五、多媒体方面

主要体现在WPFSilverLight。一言蔽之,采用XML作为矢量数据存储,采用C#语言来操纵对象和实现后台逻辑,以实现和Flash一样的用户体验。基于文本的工程(Flash是一个二进制文件)有利于源码管理和多人协作,有C#语言和.net库的支持,技术上打败Flash没有问题。

如果采用的话,对我们公司的自助有很大意义。

六、CardSpace

大概是管理n张卡,以及用户认证的一套解决方案,我觉得这个目前应该成不了气候

2007年11月27日星期二

Firefox也会如此土鳖

注意版本号


CyberArticle•记录生活

从我旧blog上转过来的,版本和日期比较早

早就想借助软件规划一下自己的第二生活了。注:第一生活即狭义上的生活;第二生活指面对电脑的生活。

于是很盼望找到这样一款软件:能够以树状目录对文本(最好是多媒体)资料进行整理,可以把n多文章组织成一个文件,可以方便的录入及导出资料,可以集成附件

这几个条件,看似容易达到,实际上可不然:

两年前,我看上了一款国产软件,叫做笔记本,北师大历史系老师做的(牛啊)。网站地址是 http://chunmi.vip.sina.com


Free Image Hosting at www.ImageShack.us


可以看到,左边有一排文件夹,它是可以像注册表那样树状展开的。不知道用了什么控件,展开了一层,其它的会被藏起来,所以这里显示的是根级目录。

不过我嫌这个软件有个致命伤:它是基于RTF的。我们知道,RTF的表现力不如WEB,差不多就是写字板能够表现的那个水平而已。故不支持Web内容的直接粘贴,这个郁闷了。网上看到精彩的好文,如果包含图片或者Web格式的话,粘贴过来就没了。还有一个要命的:这个软件是共享软件,而且国内的cracker似乎对这款软件不感冒。我试图crack了一下,由于动态调用到一个dll,不会crack了:(。


于是投奔0day软件。到国外了解了一下,他们的同类软件是MyBase。界面华丽多了。不过其实是它支持自选图标,而且提供了大量好看的图标(有点像ICQ风格的),而且它的example做得很棒,估计很能吸引眼球。图:

Free Image Hosting at www.ImageShack.us

可见,仅仅是一个类似记事本的软件,竟然被挖掘出这么多的功能,汗啊。这个软件已经被0day组织看好,这下好办了,后续版本自己找去。汉化新世纪也注意到了这款软件,有专门的爱好者为它出汉化版了。这下英文不好的朋友也有福了!不过话说回来,这个软件也有致命伤,也和国昌的"笔记本"一样,是基于RTF的。哭啊!


好了,该到笑的时候了:请出主角CyberArticle来。这款软件是跨国开发团队编写的,其中有中国人为它做开发,所以这款软件已经被很多国人熟识。它原来叫做网文快捕,后来出了点版权争议,改名CyberArticle来。我装上了最新的4.2Alpha。界面风格是Office 2003的,cool

Free Image Hosting at www.ImageShack.us

由于这段时间找工作为主,所以目前的内容从工作相关的入手:)。令人欣喜的是,这回总算是基于WEB的啦:D。好像我需要的功能它全有了,更有甚之,它可以作为MyIE的插件!工具栏和侧边栏都可以(不过这个插件安装的时候有点傻比,它搜索了半天,搜索到我硬盘上的MyIE文件夹,就把插件装进去了,而我现在用的是Maxthon,它都不给提示的机会。不过没关系,把两个plugin的文件夹拷贝过去就可以了。)功能我还没有体验完一遍,反正用起来乱爽,想要什么功能就有什么功能就是了。对于Web内容,恰恰是它长项,直接粘贴即可。还可以选择保存什么不保存什么,比如说图片和flash,嫌太大的话可以不要它。图:

Free Image Hosting at www.ImageShack.us

还有带一个像Flashget那样的悬浮窗。

Image Hosted by ImageShack.us
By victorwoo

功能还在体验中,总之很贴心、很强大,但愿能够成为第二生活中的佳人伴侣

解决了VS2008安装后反复提示ECO注册的问题

明知山有虎,偏向虎山行。尝鲜总要付出代价。Visual Studio 2008装上以后,每次创建/打开一个工程,就提示“Install Enterprise Core Objects License”。所谓Enterprise Core Objects,是Delphi下的一个组件,怎么跑到Visual Studio里来了?



我打开Visual Studio 2008的Tools - Package Load Analyzer,看到第一个加载项叫做ECO.ide.vs2005.EcoVsPackage。Google之,未果。缩小搜索关键字,取“EcoVsPackage”,找到一篇讨论:
http://www.hadihariri.com/Blogs/atozed/20070914.aspx

这个外国哥们的处境和心情真是和我出奇地相似,又看到下面有回复,经过一番搜索来到这个地址:

Uninstalling EcoIV from Visual Studio



按照文章中给出的 http://capableobjects.com/download/ECOIV_vs_Unregister.zip ,先关闭VS2008,导入注册表文件,一切恢复正常。

总结一下,ECO是Delphi里的新技术(倒不是时间上的“新”,而是使用的人还不多),我们的Delphi可能是装某个特殊版本,不会提示ECO注册。但是安装了Delphi 2007的最新版本之后,会向Visual Studio 2005、2008中注册EcoVsPackage,而这个EcoVsPackage是不完善的版本,会造成反复提示注册。
ECO开发人员已经注意到这个问题并提供了解决方案,就是下载上述注册表文件并执行。

2007年11月26日星期一

装上了VS2008

超前一把,装上VS 2008
ed2k下载地址:Microsoft.Visual.Studio.Team.System.2008.Team.Suite-ZWTiSO.iso MD5:35f534e1abb10f2f4d2c0d98349835e4
Size:4,112,060,416

下载前必读:安装VS 2008最终版前卸载VS 2008 Beta2的步骤
Visual Studio 2008 SDK Version 1.0

启动速度好快,不要5秒钟就OK了,不过需要单独注册ECO?搞不定。。


暂时用不到ECO,关掉不影响使用,目前Google还找不到相关的信息,知道的朋友请re一个。。
已解决!点击查看

2007年11月23日星期五

Oracle 10g手动启动/停止脚本

Oracle 10g启动起来会大大影响机器性能,有的时候又不得不在自己的便携电脑上安装Oracle来进行调试。那么我们可以在平时停止Oracle,在需要调试程序的时候再手动启用它。

经过一番摸索,做了一些脚本,推荐保存到本地的文件夹里,如Oracle10gStartStop\,把StartOracle.bat和StopOracle.bat快捷方式放到快速启动栏里。

DelBak.bat

66

-a--

readme.txt

398

-a--

SetAsDemand.bat

252

-a--

start.sql

46

-a--

StartOracle.bat

629

-a--

stop.sql

53

-a--

StopOracle.bat

617

-a--

注意修改ORAHOME、ORASID和密码。


 

readme.txt

为Oracle用户设计的脚本

在个人计算机上运行Oracle会影响系统性能,建议仅在需要使用时才运行Oracle,不需要时将其关闭。


 

0.该脚本在Oracle 10g中可正常使用,其它版本欢迎反馈

1.请修改三个bat中的ORAHOME和ORASID为本机所用的值

2.首次使用时请运行 SetAsDemand.bat,将Oracle相关服务设成手动

3.平时需要使用Oracle时,运行StartOracle.bat。需要停止Oracle时,运行StopOracle.bat


 

victorwoo@gmail.com

2007-11-15


 

SetAsDemand.bat

set ORAHOME=OraDb10g_home1

set ORASID=orcl


 

SC Config OracleService%ORASID% start= demand

SC Config OracleDBConsole%ORASID% start= demand

SC Config Oracle%ORAHOME%iSQL*Plus start= demand

SC Config Oracle%ORAHOME%TNSListener start= demand


 

pause


 

start.sql

connect sys/asdfasdf as sysdba

startup

exit;


 

StartOracle.bat

@echo Starting Oracle Service


 

set ORAHOME=OraDb10g_home1

set ORASID=orcl


 

net start OracleService%ORASID%

net start OracleDBConsole%ORASID%

net start Oracle%ORAHOME%iSQL*Plus

net start Oracle%ORAHOME%TNSListener


 

sqlplus /nolog @start.sql


 

pause


 

stop.sql

connect sys/asdfasdf as sysdba

shutdown abort

exit;


 

StopOracle.bat

@echo Stoping Oracle Service

sqlplus /nolog @stop.sql


 

set ORAHOME=OraDb10g_home1

set ORASID=orcl


 

@REM net stop Oracle%ORAHOME%Agent


 

net stop Oracle%ORAHOME%iSQL*Plus

net stop OracleDBConsole%ORASID%

net stop OracleService%ORASID%

net stop Oracle%ORAHOME%TNSListener


 

pause


 

DelBak.bat

attrib -s -h -r *.bak

del *.bak

attrib -s -h -r *.log

del *.log

卸载Visual Studio 2005之后的噩梦

地球上活着的程序员应该都听说了,前两天Visual Studio 2008和.NET Framework
3.5正式发布了吧。那么自然要下载来用。据前一段时间听ocean办的的微软讲座,vs2008的兼容性是很好的,不像vs2003到vs2005的升
级那样造成很多代码不能用。于是盘算着拿来做今后的主力开发环境。

迅雷很是流氓,以约1MB/s的速度从官网下着VS2008安装DVD
(3.83G,hoho)。同时,瞄着机器上的VS2005就显得鸡肋,C:也不够空间了,于是把VS2005卸掉,至于SQL
Server、VSS、J#(Delphi2007需要)等,感觉跟VS2005是平行的关系,就扔在那里不去动它。没想到刚卸完,problems接踵
而至……

重启后发现ActiveSync坏了,接着打算做Delphi的工作,发现VSS坏了,飞信坏了……按国外论坛一个同样衰的哥们的描述:“I get blah blah error
messages” @_@

首先想到的是.NET framework 2.0坏了,于是把它卸掉。重装“Microsoft .NET Framework 2.0 版可再发行组件包 (x86).exe”,发现装不上!!提示:

---------------------------
Microsoft .NET Framework 2.0 安装程序
---------------------------
Error 25007.初始化合成时发生错误。安装程序无法使用 LoadLibraryShim() 加载合成。错误: 句柄无效。


---------------------------
重试(R) 取消
---------------------------


心里有点慌了,接下来做了一个错误的决定,以为SQLServer2005等也要卸掉,这样违反了卸载的顺序,而且在添加删除程序中提示错误,把删除的快捷方式删掉了(按微软的说法,SQL Server只能从添加删除程序中删)等等可能还要吞苦果。

卸掉SQL之后,.NET FW装不上,真是天都黑了……
经过一番疯狂Google之后,在一个国外论坛找到了解决方案:
删除 %windir%\WinSXS\Policies

另外,SQL Server的删除也找到了方法:
执行 "%ProgramFiles%\Microsoft SQL Server\90\Setup Bootstrap\ARPWrapper.exe" /Remove

天又亮了。继续。

2007年11月22日星期四

标准照

用这个作为“标准照”,Picasaweb上不了,借个地方存放。

2007年11月21日星期三

Indy - 扶不起的阿斗

从毕业设计开始,使用过的计算机语言,应该不下十种了,但还是Delphi最感情深厚。至今,我仍然认为Delphi是最好用的Win32开发工具。高效的设计、完全的面向对象支持、强大的VCL框架……
在做网络程序的时候,Delphi居然令我非常郁闷。

Indy伴随Delphi的版本:Delphi6的官方网络组件是ServerSocket和ClientSocket,到了Delphi7(可能仍然是目前使用者最多的Delphi版本),引入了Indy9,而ServerSocket和ClientSocket变成默认不安装。到了D2005,2006,2007,升级到Indy10。

首先,Indy9和Indy10不兼容,类的层次结构都变了,而命名空间、类名不变。这意味着什么呢?意味着装Indy10的Delphi不能编译Indy9的代码,同一个Delphi上无法同时装Indy9和Indy10。只能装一个Delphi7+Indy9,维护旧项目,再装一个Delphi2007+Indy10这样,勉强使用。

接下来,Indy9不支持完成端口,Indy10的SuperCore.dpk中是支持了,但是D2007附带的版本Bug非常多,最新的SnapShot却编译不过……理由是:IOCP部分的作者跳槽了,现在整个Indy项目只剩2个人在维护!!!请参见Indy的Yahoo!讨论组 可以加入他们的邮件列表

再接下来,Indy用的是Socket绑定一个线程的模式,在开发者的角度来说,可以少写好多代码。这种阻塞模式在网上也引起轩然大波,好多好多好多的口水战,见大富翁和CSDN吧。在Indy的官方帮助文档,以及著名的《Indy In Depth》当中,作者都乐观地告诉读者,很多连接都是短暂的,实际并发连接数一般不会很多,利用线程池便能够搞定。只要在TIdTcpServer上设一个属性这么简单。但是,最近的开发中,遇到一个问题:我们要设计一个服务器,要承受5000个并发长连接。重点不在5000,重点在并发长连接。也就是,每个客户端连上来,就赖着不走了,线程池也拿它束手无策。因为线程池的机制是,随时把断开的Socket所对应的线程放入池子,给别的Socket用。

这下彻底歇菜了:
Indy每线程绑定一Socket的机制不可行;
IOCP代码未完成,也不太可能有人去维护

再找第三方控件,ICS、DxSock,资料都非常稀缺,DxSock的官方网站 www.dxsock.com 还莫名其妙地变成了MP3的下载网站,不寒而栗。

难道Delphi(非.net)真的做不成大型服务器程序?不禁要再为命运坎坷的Delphi捏一把汗。祝Delphi,祝Indy走好。

参考:
Indy的Yahoo!讨论组
Indy官方网站
Indy最新SnapShot下载


Powered by ScribeFire.

磨刀不误砍柴工

TotalCommander、Vim、Pidgin、FireFox……这些软件常常被人们认为是晦涩另类的软件
相对应地,人们更喜欢 我的电脑、UltraEdit/记事本、QQ、IE/Maxthon甚至TT
做成一个对应表大约是这样:

入门工具
进阶工具
我的电脑
TotalCommander
UltraEdit/记事本 Vim
QQ
Pidgin
IE/TT/Maxthon
FireFox

操作系统自带的应用程序,量级相当于DEMO,只要能推动OS的销售,就算是成功。这样来说,Windows自带的软件没有必要,也不可能充分地体贴用户,考虑到用户的方方面面。假设微软公司把娱乐、办公、投资、开发……都做在一张Windows安装盘里,世界反而不会这么精彩了,因为又走上了Apple当年的歧路。进阶工具,则是各行各业的高手们,为特殊的需求量身定做的。

在文件管理领域,大家应该非常熟悉从Windows 1.0至今没多大改变的资源管理器(我的电脑),切换到TotalCommander的时候,真是让人一头雾水。其实,这并不是TotalCommander的错,因为它本身的设计是科学的,只是大众们适应了Windows的快捷键、菜单……等等操作方式。但要提高效率、要提供更丰富的功能,必须打破思维的定势,开发一套新的工具。TotalCommander的作者一定是个牛人,能够把日常繁琐的文件管理用丰富的插件框架实现。我自己感觉到,使用它,能使文件操作的时间节约2/3,并且熟练以后,进行大量的操作一点也不觉得累。水木清华上更是专门为TotalCommander开辟了一个讨论板块。

万事开头难,实在不适应怎么办?禁掉入门级的工具。比如刚使用TotalCommaner和VIM的时候,把桌面上的“我的电脑”图标删掉,把记事本删掉,把UltraEdit删掉。强迫自己用一个星期,挺过这一关,就运指如飞了。关键看有没有毅力。

还有人说:好像好难,我好怕怕……我没必要用这些高级工具……
的确,这是重点。以下分4点来讨论:
1.真的有必要用这些工具吗?
很多朋友坚持用记事本来写代码、做文字编辑、画网页……但时间不知不觉在效率低下的调整、编排工作中流逝。常常工作一天下来,感觉非常枯燥,身心疲惫,眼花缭乱。于是不得不舍弃Windows自带的记事本,转而寻找更高级的工具,这时才发现UltraEdit、VIM这一类先进的工具。当然对于一些大龄人士,实在不太可能进行更高级的操作了,那么就用入门级的工具也无妨。关键在于对自己能力的定位。定位错的话浪费时间,苦海无边回头是岸。
2.你实际上比想象中强大。
不要面对新事物而怯手怯脚,要鼓励自己,美好的未来等着你,解放出思想来接受它,不久便能进入角色
3.越早投向高级工具,节省的时间越多,将来还有很多别的工作等着你。磨刀不误砍柴工。
4.用工具没错,但别入错行。举个例子,我以前用过一个My Notebook的工具,用来管理大量的文档资料,后来发现这工具有硬伤,不支持html网页的撷取和保存。经过一两年的使用之后,我已经积累了大量的文档资料,后来遇见了CyberArticle,在各方面都超过了My Notebook,而数据不能互导,后悔莫及。对于这种情况,建议参考周围高手的建议,互通有无,以免入错行。

临时想到一个例子,入门工具——扫雷,进阶工具——CS,大家能看得出区别了吧?尽管CS比扫雷复杂得多,但是由于它刺激,好玩,boyz还是会不遗余力地把它弄个精通。

希望我的朋友们能一起享受“磨刀”的乐趣。最后,推荐一个个人blog:善用佳软 这个网友应该算同道中人,文章质量很高。


Powered by ScribeFire.

2007年11月20日星期二

开门大吉

只贴要点:
  1. 痛失 www.victorwoo.com 之后(过期未续费,被老外抢注@_@)早就注册了这个 vichamp.com 。
  2. 离开厦大以后,不方便用系里的服务器了,于是想自己搞个服务器,或物色一个又稳定口碑又好的公网blog提供商。因为懒,晾了好久(大家放心,一旦开工,我会很疯狂的,hiahia)。
  3. 听说blogger支持自定义域名,对我这样有域名没空间的人来说,不是刚好么?
  4. 我是Google的粉丝,blogger被Google收购
  5. 最近迷FireFox了,看来这东西跟越狱、Ubuntu、Maxthon、TotalComander、VI一样,都是毒品……然后,沉迷在一堆插件中,自然发现了我现在它里面打字的ScribeFire,hoho
  6. Word2007 - 开始菜单 - 发布,发现了什么?Blog!

有这么多理由,不开工还等什么?
看官们不要嫌我的博客界面难看,我特意选难看一点的,目的是节约你的流量;另外如果你因为不能忍受如此难堪的页面而转向RSS订阅的话,我会十分满意的:)


Powered by ScribeFire.