流氓软件探源

    在以前,软件开发者门都在想如何用软件多卖一些钱。然而这个世界忽然间就变了,很多软件都开始免费了。免费也就算了,各种各样的软件削尖了脑袋的往用户电脑里钻。更有甚者,一但进去了就占地为王,死都不出去。
    不是我不懂,只是这世界变化得太快。
    开始慢慢的回忆软件是什么时候开始流氓起来的。
    想到流氓软件,很自然的就会想到3721,对很多人来说,电脑被流氓都是从3721开始的。在几年前3721和总多小网站合作,推出了用户安装3721插件,网站就可以得到提成的推广机制。流氓归流氓,3721依靠该策略迅速的普及了起来。此后就慢慢的迎来了现在的流氓狂潮。
    虽然是3721使流氓软件的概念深入人心,但3721绝对不第一个流氓。翻看软件史,我们看到了sun。在90年代sun推出了java。一时间java风光无限(java现在也还不错了)。俺们的bill大叔当然不能看着sun在那里独美了。本着做不掉他就搞和平演变的原则,bill大叔偷偷的修改了java的规范。sun也不是惹的,一场官司,bill大叔的计划失败了。bill大叔一气之下将jre赶出了windows。sun一见茅坑没了,赶紧打官司,企图重新夺回茅坑。官司赢了,但我们的bill大叔就是牛。就是赔钱也要坚决抵制sun的无耻流氓行径。于是到现在我们都需要单独去下载jre。
    虽然MS拒绝了sun的流氓行为,但MS自己也流氓过。
    在90年代中期的浏览器大站中,MS靠在自己系统中捆绑ie来和netcaptor抢地盘。netcaptor眼见就要体力不支了,赶紧跳出来大叫一声:“你流氓”。又见官司。MS坚决不卸,说这是系统的一部分。netcaptor无奈只下只得自己出工具卸ie(现在的反流氓软件软件?)。此后,此后大家就都知道了。现在还有几个人知道netcaptor?现在的ie也被真真正正的整合到了系统中。

《戏说乾隆之江南除霸》全台词(PDF)

2022年1月13日更新:已经过去了很多年,还是不时会有人通过戏说乾隆的关键词找到这个页面,只是这里的链接早就失效了。今天把文件重新上传了,大家可以在这里下载。

《戏说乾隆之江南除霸》全台词.pdf


    《戏说乾隆》很喜欢的一部电视剧。 喜欢这么一个相忘于江湖的故事。也许这世间没有永恒,所以需要靠遗憾来作为永恒的牵挂。

    里面的台词写得很考究,有些古味却不做作。曾找过这部戏的台词,未果,于是还对着电脑,手动抄录过部分台词。最近在网上看到了第一部的全台词,是一个叫玉尘的网友做的(不知道还会不会出下两部的)。我将他写的台词整理了一下做了个PDF版本的。大家可以到我的googlePage里去下载。 随便贴点我喜欢的。第一部,第二部的都贴点。不三宿桑下这一段。第三部还是算了,我没看全过。我不太喜欢第三部,但这部戏正是有了第三部才算完整。

//---------------第一部_江南除霸---------------//
  程淮秀:“唉!啊!四爷。”
  四爷:“呵呵呵…”
  程淮秀:“何苦再来找我呢?”
  四爷:“春喜这丫头,果然探出你在这儿!一个人来,是躲着我吗?”
  程淮秀:“哦,躲我自己。”
  四爷:“来这儿做些什么呢?”
  程淮秀:“可以坐,可以想,可以跟自己相对。”
  四爷:“旱湖之约,新的感触?”
  程淮秀:“呃呵,因果倒也不止一端!”
  四爷:“淮秀,你后悔吗?”
  程淮秀:“不后悔!”
  四爷:“喜欢吗?”
  程淮秀:“不喜欢!”
  四爷:“你是……”
  程淮秀:“不想再提了!”
  四爷:“我们…再去…也许…可以透彻的谈一谈。”
  程淮秀:“佛祖在传道的时候,曾经不三宿桑下。”
  四爷:“不三宿桑下!不三宿桑下!他是佛祖!他传佛啊!”
  程淮秀:“我传盐!”
  程淮秀:“我发过重誓身献盐帮。富贵贫贱,危难生死不离盐帮。”
  四爷:“唉,但是你从来没有说过一生不嫁人哪!”
  程淮秀:“大家跟着我,我跟着大家!兄弟之情,犹如咸盐,烈日之下晒出来,煎熬之中煮出来!嫁不嫁人并不重要。”
  四爷:“你是把我当做外人?!其实不外,我是不好说,如果你知道我姓什么,叫什么,做什么,人家称呼我什么…”
  程淮秀:“四爷,不说也罢!在旱湖,我曾经想问过,眼前这个四爷,他叫什么呢?岔过去,现在你不说,我就连是不是桑树我都不知道,这不更好吗?”
  四爷:“你是帮主,不是尼姑啊!”
  程淮秀:“入帮,出家,要的是一种心境。”
  四爷:“你在江南,我在塞北,我很在意!我们能够在小狼沟无意中结缘,今天又能够在这相遇,说是缘并不错,况且你刚才也说过,因果不止一端!也许是前世的因,今世的果啊!”
  程淮秀:“四爷,在旱湖,我们没有酒,但是我们连翻的酒话,这古刹是我清修的地方,我们又续起前缘来了。海阔纵鱼跃,天空任鸟飞。四爷,您是个潇洒的人…”
  四爷:潇洒的人?千万百计地要见你,想做件不潇洒的事,我要将我母亲传给我的一样东西,转送给你。淮秀,惊扰之处,你能海涵。我走了!”

//---------------第二部_西滇风云---------------//
  四爷:“你不想说的事,说说看!”
  沈芳:“我不想说的事?什么啊?”
  四爷:“在房里你说,你是人,是女人,情,你想过。”
  沈芳:“呃…呵”
  沈芳:“太监到我们家宣召赐死,我看见的不光是冤屈,愤恨跟生离死别,我看见了我的父母,他们夫妻之间最深沉,最痛彻肺腑的不舍。我父母,十来岁就结为夫妇,几十年肩叠情深,在面临死别的时候,没有一句话,也没有动作。你,偶尔看我一眼,我,偶尔看你一眼。眼泪算什么!他们夫妻心里暗暗淌得,是血,是情血。第二天,我母亲去世了,跟着父亲走了。不过我想,母亲是很平静,是满怀希望走的。”
  四爷:“希望?”
  沈芳:“嗯!希望在另一个天地里,与他的丈夫相遇,重续旧缘,重温旧情。从那个时候起,我才知道,这世间伤人最深最重的竟然是情缘!我是人,是女人,我想过情。可是我怕,我两次躲你,都因为我怕。”
  四爷:“我懂!”
  沈芳:“佛陀传教的时候,不在同一棵桑树底下连宿三次。”
  四爷:“不三宿桑下!”
  沈芳:“对,不三宿桑下!佛陀尚且怕情缘,人能不怕吗?”
  四爷:“人…恐怕,谁也没有那个定性,那个慧根,永绝情缘。有缘则遇,有情则聚,生死别离,也许是小事。”
  沈芳:“哦!”
  四爷:“佛教有个故事说,人去喂鸟,那只鸟永远吃不饱吃不够,后来喂鸟的人把自己的身躯也喂给了鸟吃。情缘是鸟,人喂它,是不计其它的,甚至身躯性命。”

crystal-cursor更新了

    在SF上建立项目后我自己都很怀疑是否会对该项目进行更新。最近有些闲,于是对crystal-cursor进行了第一次更新,对项目进行了少量的完善,并增加了一个新的效果。我给这个新的鼠标效果取了个中文名字“绚彩萤火”。
    在程序修改后,打算将代码更新到SF的CVS上,却一直timeout。开始以为是代理的原因,于是花了一堆的时间学习如何给CVS设置代理。在设置代理后问题依旧。无奈之下重新看了一遍SF上的CVS使用说明,发现CVS服务器地址已经变了。想起前些天SF发的通知邮件,于是再去翻阅了一下,里面说的正是此事。在更新代码后本想发布个新版本,文件发布系统又有问题了,找了半天没找到incoming文件夹。难道是我RPWT?不知道还有没有那位兄台在用SF的管理平台,得咨询一下。

    在对crystal-cursor进行修改的时候遇到了一些问题。首先就是delphi的接口。虽说delphi中的接口是自行管理对象的生命周期,但在有些情况下似乎并不是那么灵光。在crystal-cursor中我采用观察者模式来将鼠标位置的变化情况通知各个子窗口。理论上只要我将子窗口从观察者列表中移除,窗口就该释放,但事实并不是如此。关于这个问题,在网上有见到相关的介绍《接口小论》

    为了让子窗口交替出现,我需要让一个子窗口建立后先sleep在进行下一个窗口的创建,但sleep会导致主线程的阻塞,无法达到预期效果。于是我增加了一个NoBreakSleep函数。这个函数虽然简单,但效果似乎还不算太烂

procedure NoBreakSleep(aInterval: Integer);
var
  StartTime: TDateTime;
begin
  StartTime := Now;
  while ((now-StartTime)*24.0*60.0*60.0*1000.0) < aInterval do
  begin
    Sleep(1);
    Application.ProcessMessages;
  end;
end;

 

PS:

    发现真是自己的RPWT。刚才一直都是用WinSCP登陆。用WinSCP登陆是更新web站点用的。发布文件直接用FTP上去就可以了。真是太大意了。

    发布文件已经更新上去了,大家可以到我的项目站点去看看crystal-cursor

JForum开发框架介绍

前言
    一直很懒,很少写些技术相关的东西。难得因为工作的需要有写些,帖上来吧。其实我对JForum也没太认真的研究过,所以如果里面有些什么不对的地方还请大家指出来。
 
JForum开发框架介绍
    JForum是著名的开源论坛,支持多达数十种的多国语言,其中包括简体中文(管理界面没有完全汉化)。JForum功能强大,界面美观,加上代码结构清晰,而且采用的是BSD授权,不必担心不必要的版权纠纷。可以说JForum是论坛二次开发的绝佳选择
    JForum采用的是自己的MVC框架,因此在初次接触的时候可能会有些不习惯,但在熟悉后,该框架还是很容易使用的。在这里只是对JForum的框架进行简单的介绍以利于利用JForum进行二次开发,具体的细节请参考JForum代码。
    JForum的MVC框架有些类似Struts。
    先看请求的url地址/bbs/jforum.page?module=recentTopics&action=topRep_Topics_thisDay。
    首先在在web.xml中配置过滤器,将所有以.page的请求交给net.jforum.JForum统一处理转发。请求在交给JForum后,JForum要获取传递过来的一些参数从而决定由哪个模块来具体处理请求。参数module,决定由哪个模块来处理。model的名字和具体class的对应关心在配置文件modulesMapping.properties里进行配置。当前操作由具体的哪个函数处理由action参数指定。action就是要执行的方法名,在无法找到指定处理方法时执行list方法。在处理完请求后,调用this.setTemplateName(TemplateKeys.SSOEXT_TOPREPMSGS_PERDAY);方法设置返回页面。其中页面和页面名称的对应关系在templatesMapping.properties中设定。
    再简单的介绍一下JForum新增功能的开发流程。新建一个Action继承Command。在配置文件中modulesMapping.properties中增加新建立Action的对应关系。实现Command中定义的list方法,完成在未指定action情况下的默认操作。在templatesMapping.properties中增加返回页面的对应关系,在类TemplateKeys里增加返回页面和templatesMapping.properties配置文件里的对应关系。利用this.setTemplateName(TemplateKeys.RECENT_LIST);设置返回页面。
    JForum默认采用的是FreeMarker作为表示层,但如果对FreeMarker不熟也可以采用jsp做为表示层的实现。

Delphi中的自动垃圾回收器

    在传统的开发语言中,分配的内存必须手动释放。但在对象多处引用的时候要判断具体该什么时候释放还真不是件容易的事情。更有甚者不少程序员只创建对象但根本就不进行释放
    听朋友说C++有自动垃圾回收的库,据说用起来还不错。也曾找过Delphi的自动垃圾回收器,未果。最近在找Delphi的容器类的时候看到decal的介绍中有谈到,decal是商业类库SDL的简化版本,去掉了自动垃圾回收等特性。
    今天去下了decal的帮助来看,里面提到垃圾自动垃圾回收是由Boehm来实现的。Boehm?上网搜索一下,找到了《API for Boehm Garbage Collector DLL》。在Delphi中使用自动垃圾回收。下回来看了一下,使用的就是HP的垃圾回收器(GCJ使用的就是这个垃圾回收器)。在Delphi中使用只是写了几个接口文件,调用DLL中的函数而已。
    看了一下里面带的DEMO,再用内存泄露检查工具测试了一下,似乎还挺有效的。使用起来也很简单,只要将GC放到单元引用的第一个就可以了。
    有把她用到了公司的软件里。虽然上次修正过一次,但还内存泄漏问题还是挺严重的。希望加上自动垃圾回收后能有些作用

Delphi果然没卖成功

    今天在QQ群里听说Delphi卖给了DevCo。DevCo?没有听过。再一打听,原来是从Borland分出来的新公司。
    呵,我就说嘛,Delphi这东西我是实在是想不出谁会买。不是幸灾乐祸,只是事实。Delphi的逝去是一个时代逝去。Delphi的优势是RAD,快速开发。Delphi被广泛的用于C/S模式应用程序的开发。但网络的兴起,java、.net的出现,极速侵蚀了原生开发工具的市场。原本许多C/S模式的用程序现在都该用B/S模式。而对于和操作系统及性能要求相对较高的一些应用程序,Delphi由于自身问题及算法库等相关资料的缺失,一直难敌C++。为此Delphi被推向了高不成低不就的两难境地。Delphi注定了他的相对小众。
    小众就小众吧,除非它不出64位的版本,和32位的系统一起发霉,不然应该挂不了。感觉现在的Delphi世界还算正常。以前的一些Delphi程序还需要维护,少量的新项目还在用Delphi。“老人”走了,却未见来者,要找份Delphi的工作也不至于太难。相比前两年,Delphi的寒冬算是过去了。想当年就没看到几个要Delphi的
    Delphi,我依旧喜欢摆弄,却再也不想将其作为一个职业了。
    周末把代码给整一下,给cnpack提交个代码,也算是为我喜欢的这个开源工具做点贡献吧

SF上的项目整完了

    昨天整了几个release文件到SF上,有release就不至于让人觉得这个项目还是荒废着的了。感觉这个项目的第一步工作应该已经做完了。下面可能又得荒废好长一段时间了,也许等到哪天有兴趣会接着动手吧。
    贴上项目在SF的地址:http://sourceforge.net/projects/crystal-cursor
    大家有兴趣可以去看看,不过程序还很简陋的说,大家别笑话啊
    最近退了好几个QQ群,又加了些python、ROR之类的群。一直不太习惯脚本语言,想来也应该因为长时间使用传统语言的原因吧。加些脚本语言的群,熟悉一下脚本语言的应用。

被403郁闷了一晚上

    今天将代码稍微整理了一下,调整了一下工程结构并在代码里面加了些Licence以及单元说明,好让工程看起来更正规一些。文档方面除了从网上down的那一份GPL就一点都没有了。把代码放上去,好歹算是个开始了吧,其他的东西在日后可以慢慢的处理。
    版本控制方面本想用SVN,结果出了一晚上的403错误。为此我还特意更换了个最新的小海龟,还是未果。baidu、google狂找了一通,问题没解决,倒是看到有位兄台和我遇到同样问题。
    无奈下只能换CVS了。还好,不算太糟糕,文件都正常的放进去了。只是在尝试checkout的时候找不到文件。看SF的说明,添加文件后要等待服务器30分钟一次的刷新。不知道代码是不是也是这样。
    暂时不管这些了,明天再来看看,顺便再整份release的代码和程序出来。

SF申请的项目通过审核了

    刚上SF看了一下,项目通过审核了。刚上去看的时候看到项目前面多了个“垃圾桶”我还以为被驳回了。再仔细看一下,原来是将已激活的项目从SF给删除。SF的项目审批速度还挺快的,看上面的审批时间是2006-03-27 15:26(老外的表比我们慢不少)。
    决定先熟悉一下SF的后台管理系统,然后将代码和文档给整理一下。项目既然是放在SF上,那文档什么的最好都用E文吧。可惜的是我的E文实在有些抱歉。决定UI和代码中的注释先用E文吧,至于文档……。先出中文版的,有时间再E文一下。E文拙劣就拙劣吧,反正苦的是看文档的人,我是无所谓了。
    先去熟悉一下SF的后台了

今天去SF申请了个开源项目

    既然搞开源,不管真搞假搞,既然开搞了有些东西还是要做的。首先就得到支持开源的网站去申请个项目,来提供web以及cvs的支持。由于E文问题,本想找个国内的服务商。可是共创的平台郁闷到连个修改个人资料的地方都找不到。GRO更是连注册都无法注册成功。一连注册了两个账号都没能收到确认邮件。
    SF的项目注册还算顺利,只是我的E文太过拙劣,让我自己都觉得有些惨不忍睹。过两天看看审核的情况把。