Blog重新开张

经历了几天的新鲜劲儿后,我的Blog从6月底开始到现在就再也没有过动静。三个月来,周围朋友的Blog如同雨后春笋般建立起来,且以惊人的速度进行着更新,于是,经历了有想法而无行动的几天后,我决定我的Blog重新开张。

国庆前一直盼着国庆回家,回到家才发现家里和在学校一样无聊。除了看看电视,就还是只能在电脑面前度过大量的时间。

项目开发的需要,让我在这个学期把久违的.NET又捡了起来。微软平台开发最近热点的恐怕是Smart Client莫属了,从DevDays 2004上第一次听到这个概念,到9月27日微软开发者大会上的Smart Client专题,加上MSDN上铺天盖地的文章,让人感觉到了Smart Client的无处不在。

DevDays 2004上的IssueVision示例程序,让我第一次到接触到Smart Client的概念,也让我又一次体会到软件构架的重要,暑假里对DevDays 2004 DVD上的IssueVision和OpenHack两个示例程序以及经典的.NET示例Duwamish进行了学习,学到了很多有用的东西。这次9月27日的开发者大会上,又介绍了一个新的Smart Client的示例程序TaskVision,回到家,我又迫不及待的把它下载了下来进行学习。

TaskVision程序与IssueVision很相似,但相对来说功能更强劲一些,它的功能是对工作中的各种任务进行管理,可以创建任务并把它指定给某人去完成,某人也可以重新把任务指定给其它人去完成,完成的进度和所有的转交情况都将被记录下来。作为Smart Clinet的示例程序,Smart Client的几个核心特性在这个程序中都有不错的体现。它的官方网站说它演示了以下的技术:

  • Application offline and online model(脱机和连机工作模式,这是Smart Client的核心特性之一)
  • Application update model via HTTP (no-touch deployment) (无接触部署,Smart Client的核心特性,通过AppUpdate组件实现,很Easy)
  • Authorization to control user access to application features
  • Data collision handling (有脱机支持就必须有良好的数据冲突处理机制,ADO.NET为我们提供了很好的工具)
  • Printing and Print Preview (一个IssueVision没有的特性,很简单,不过很实用)
  • Windows XP Themes
  • Dynamic properties
  • Localization support (也是一个IssueVision没有的特性)
  • Accessibility support (limited) (同样是新特性)
  • Forms authentication using a database for user names/passwords (这个验证方式与IssueVision用的不同,我正在学习)
  • Asynchronous XML Web service class (提高用户体验的很重要的特性,IssueVision用了一个BackgroundWorker组件,似乎比TaskVision用的方法很简单一些)
  • ADO.NET data access using SQL stored procedures (通过存储过程进行各种数据库操作,是微软反复强调的调用模式)
  • Graphics development using GDI+ (TaskVision用它做了一些可视化的组件)
  • Integration between .NET Framework-based code and COM applications (COM interop) (对于IssueVision的一个新特性,正好对我很有用,它通过COM interop把数据输出到一个Excel的Sheet,而我的项目中需要把数据输出到一个AutoCAD的图纸。)

让我很惊呀的一点是TaskVision居然没有对缓存在本地的数据进行加密,而IssueVision对这一点则做得很好。另外一点是IssueVision中用的很有用的Commander模式和Observer模式也没有在TaskVision中使用。从总体上说,感觉TaskVision虽然是一个新的示例程序,功能比较强大,但完善程度和制作的精细程度与IssueVision相比还是差了一些,GotDotNet网站有一个协作改进的项目。

国庆期间,除了学习TaskVision,另一件占据大量时间的事情就是协同刘海先生测试他的新软件iDreamPiano 1.0,从2000年试用了刘海的HappyEO 1.0这个键盘模拟琴软件后,我就一直与他保持比较多的联系,全线参与了HappyEO 1.05到3.05(该软件已获Tucows五头牛认证),Jp-Word 1.0到2.0(一个简谱编辑软件)和iDreamPiano的测试工作。iDreamPiano也是一个键盘模拟琴软件,目前功能还不能与HappyEO的功能相比,但从技术上说它有一个重要的改进,就是不再依赖系统的MIDI设备发声,而是直接通过dls波表和DirectX发声,这样做会有几个明显的好处:1.在不同的机器上可以达到一致的发声效果,2.没有MIDI软波表可能带来的延时的情况,3.不再受General MIDI或者Roland的GS和Yamaha的XG标准限制,可以扩展出任意多的音色,包括民族乐器的音色。

(2004-06-26)倒底什么是“禁止的词语”呀?

本来今天不想写日记的,结果在贴另外一篇文章时确出现了问题,系统提示:“文章中出现禁止的词语,系统不予接受。”

天哪,我文章向来是很文明的,居然说我“出现禁止的词语”,更可恶的是不告诉我是哪一个。

没办法,只好把文章一段段分几次贴,以便找出“禁止的词语”,忙活了本天,原来禁止的词语是:“巨大(的)便捷”。

我原文中没有那“的”字,然后就郁闷了~~~~

哎,太郁闷,浪费我N多时间、精力和上网费。

既然开写了,干脆多写几句,前几天没搞定的问题依然存在,只好先着手干活,做玩了发给协调人让他帮助上传吧。我选中的第一篇要翻译的文章是GNU的The Free Software Song,页面很小,但主要内容是段歌词不好翻译,翻了一段时间,感觉还是不满意,这歌本来就不算好听,歌词像口号,翻出来就更怪异了,嗨,算了,搁着吧,有兴趣的时候再翻吧。

Emacs入门指南(3)

通过前两篇文章的学习,您已经可以把Emacs当作一个Better-Notepad来使用了。今天我们要学习的是Emacs中强大的搜索功能。

默认情况下,Emacs采用了一种很待殊的”增量搜索”的功能,虽然它与我们常用的搜索方法在操作习惯上有很大的不同,但习惯后确实是十分的方便。

要让Emacs开始执行搜索,可以按C-s或C-r,前者是从光标位置往后查找,后者则是往前查找。我们以C-s为例。按动C-s后,Emacs在Minibuffer中提示: I-Search:,这时您便可以输入要搜索的关键字了,现在学习试验的阶段建议您输入时手脚慢一点,看看Emacs是如何来执行您的搜索请求的。

比如,要搜索“search”一词,您输入s,这时Emacs会把光标移动到最近一个s字母上,这里如果您暂停输入一会儿,Emacs就会把所有的s字母进行高亮。您继续输入e,这时Emacs就找到了最近的se字母组合。一直输入下去,直到Emacs找到您要找的内容,这时按回车键即可结束查找。

在查找过程中,您可以反复按动C-s或C-r来执行向后或向前的查找。如果您已经找到一了一个匹配的内容,并且按了回车键结束了查找,这时如要继续查找这个内容,您只需按两次C-s或C-r即可,第一次按动用于激活查找功能,而第二次按动则表示要继续查找。

在输入查找关键字时,如果不小心输错了,可以按动<DEL>键来清除前一个字符,请注意,在Emacs术语中,<DEL>键是指我们通常所说的<BackSpace>键,而<DELETE>键才表示我们键盘上的<Delete>或<Del>键。

输入关键词时也有一个细节的问题,如果您输入的关键字全部是英文小字母,则Emacs会进行不区分大小写的查找。但如果输入的关键字中包含有大写字母,Emacs就会进行区分大小写的查找。另外在查找的过程中,可以通过M-c快捷键来切换区分大小字模式,可以用它来强行指定是否区分大小写。

如果不想用Emacs的增量搜索功能,也可以让Emacs进行传统的搜索,在按下C-s或C-r后,直接打一个回车键,这时Emacs就将进行非增量搜索,您可以输入你的关键字,再按回车键来执行搜索。

下面要介绍的是更为强大的正则表达式搜索功能。您可以通过按动C-M-s或C-M-r来启动正向或反向的正则表达式搜索功能,Emacs会在Minibuffer中提示Regexp I-search:,这时您便可以输入正要匹配的正则表达式了。

在正则表达式中可以使用很多的控制符号,这里我挑选几个常用的作一个简单的介绍,更全面复杂的解释可以在Emacs的手册中查到。

‘.’ (句号): 正则表达式的中句号可以用于匹配一个任意的字符。比如正则式’a.b’就可以匹配abb,acb,adb。。。等等以a开头以b结尾的三个字符的字符串。

‘*’: 正则表达式中的*号可以用于表示把它前面的字符重复0次或多次。比如’ff*’可以匹配一个或多个相连的f的字符串。

‘+’: 正则表达式中的+号与*号的作用基本相同,区别在于它表示把它前面的字符重复1次或多次,所以可知正则式’ff*’等价与’f+’。

Emacs的正则表达式语法十分复杂与强大,请您阅读Emacs手册来对它们进行全面的学习,一定会给您的工作带来巨大的便捷,作为一篇入门教程,这里我就不再作更全面的叙述了。

———–

附注,我要被这篇文章整死了,先是怎么也贴不上文章,系统非说我的文章中出现禁止的词语,不予接受,好不容易查出来了,是文末的“巨大(的)便捷”这个词搞鬼,我一开始没写那“的”字。

好不容易贴上了,得,<DELETE>这个词给我变成删除线了,要知道我可是已经把大于小于号改成相应的HTML编码了,没办法呀,又改了一次,这篇文章真是贴了不知多少遍才贴上呀。太辛苦了!

(2004-06-25)终于修好了Acer 78c显示器

很长时间没有购买明基的产品了,主要原因就是已有几个明基产品实在不是一般的差,最令人生气的就是我那曾经2000多大洋的Acer 78c显示器。

选这款显示器时是因为它有几点出众的特色,比如.25的17寸平面直角显管,能上1600*1200分辨率等。但是在一年质保期过后就出现了种种怪毛 病,最严重的一点就是屏幕会“抖动”,也就是过一段时间屏幕画面会纵向收缩扩张几次,有时还伴有继电器离合的声音和短暂黑屏。

去Benq的服务论坛看看才知道这似乎已经成了了78c的通病,当然Benq不会承认这一点,客服人员“鳄鱼宝宝”态度始终良好的告诉大家,只须把显示器送往最近的Benq服务中心,花120元维修费就可能可以修好。

终于有人受不了这样的解释,贴出自己维修78c的方法:在线路板3个散热片当中有个蓝色的长方形继电器(标识好像是Rl301)虚焊,自己焊一下即可。

自己学的是计算机,虽然也自己也动手焊接过一些东西,但真要拆开显示器还是需要一些勇气,何况还可能被高压电着。所以了解了这一解决方案后,近一年的时间也没敢自己动手。

今天在一个同学的鼓励下,终于动手打开了显示器的外壳,找到了那个神秘的蓝色小盒,心惊胆战的用电烙铁把它的几个焊点重焊了一下,装好外盖开机试用,到 目前为止两个多小时了表现良好,虽然屏幕画面还不是完全的稳定,但已经有了质的改变,没有大幅的抖动了。自已动手修好的显示器还剩下RMB120,实在是 一件很高兴的事情。

如果您也有Acer 78c或相近型号的显示器,也出现了类似的情况,建议您也可以试试这个办法,这个继电器的几个焊点间间距是很大的,可以放心的操作,哪怕是像我一样差的焊接水平也应该可以轻松搞定!