RSS 2.0 Feed
Others
摘要:cc上瘾了。 ? 自从上周二以后,cc一回家就吵着要玩“打敌人的游戏”。妈妈怕他控制不住自己,就决定让他仅周末再玩。 ? 那几天cc非常不习惯,常常问大人今天是周末吗,想赶紧玩上游戏。就像我中学时期一样。 ? 昨天是周五了,我把cc从幼儿园接回家的路上他就高兴地说:今天是周末了,可以打游戏了。回到家里,更衣洗手以后,cc就高高兴兴地坐在我的腿上,又开始他的电脑之旅了:) ? 昨天学的是造气矿和Academy(研究院?)。我惊喜地发现,cc的小手控制起鼠标来已经灵活多了,虽然他的手与鼠标比起来还是略小(我用的是BenQ的乖乖鼠,非常小巧的那种),不过他已经渐渐习惯把鼠标握在手心里了。...[阅读全文]

posted @ | Feedback (0) |

摘要:cc进步得真是快极了!今天学习的内容是建兵营、造士兵、修地堡和把士兵派到地堡中,cc在我的提示和帮助下(我的帮助不多,只是有时会扶着他的手带他一遍遍操作,以便让他能通过重复的机械操作来增加记忆)已能够很慢地把他的小帝国创建起来,并可以抵挡住敌人的第一次进攻了。问题也很突出,就是cc有时会发现自己毫无头绪——不知道接下来该做什么。这也难怪,三岁孩子的注意力通常情况下只能维持三分钟,时间一长,他就需要再调整注意力了。而且,他平时无论是吃饭、玩游戏或是听故事都有东张西望的习惯(毛病)。我一直想把他的这个毛病改过来。希望电脑能让他着迷!其实有时候发现自己真的也很矛盾:自己爱电脑,爱写软件,就也希望cc能继续走这条路;可是也许还有比电脑更适合他的天地,我的个人意志会不会反而阻碍了他的成长?无论如何,多一个选择总是件好事,哪怕他以后再去迷别的(比如说,弹吉他?)...[阅读全文]

posted @ | Feedback (0) |

摘要:呵呵,这个题目是不是很好玩?我的小外甥cc今年三岁,平时偶尔爬到椅子上去摆弄一下我的笔记本,喜欢玩画图,最爱Windows下的画图、PowerPoint和Linux下的OpenOffice(反正他不管是什么OS,只要能画画就行)。昨天又心血来潮要玩“打敌人的游戏”(星际争霸),我就把他抱在腿上正式做起了他的“星际引路人”一开始小家伙不太适应,因为我用的是左手鼠标(别说是小孩,就连很多一直用电脑的人对换左手鼠标都非常不适应。我是个左撇子,喜欢什么事都用两只手轮换着做,所以小外甥也就被迫跟着练左手了),结果花了大概一个小时的时间去练“选中”和“走路”两样操作。小家伙一开始总犯错误,让我一连串训过去以后就显得特别没有成就感。这让我想起了教原来女友用电脑,也是这个样子,只不过她一生气就会跑到阳台上去躲着我,而小外甥则老老实实地坐在我腿上手忙脚乱。今天问题依旧,只是熟练度提高不少。我看cc进步得不错了,就教他下一个动作——“采矿”。结果他一下子熟练了起来,错误也越犯越少。看来cc和我的学习方法差不多,不太愿意按部就班地学基础,而是先用起来再说。好孩子!cc进步得很快,马上又学会了造农民。我问他屏幕上现在有多少人,他就点着手一个一个慢慢地数起来,然后高高兴兴地告诉我结果。明天的学习目标是造房子。如果我三岁的时候也能有一台电脑……...[阅读全文]

posted @ | Feedback (0) |

摘要:Nant的确是一款非常强大的build工具,但它的build文件相对来说却比较难写,因此一款合适的可视化编辑工具就显得尤为必要了。这不,我今天就在http://www.nantpad.com找到了NAntPad。目前它的最高版本是o.4Beta,可以在上述网站免费注册后下载。 ? 从运行情况上看,Nantpad的确对NAnt中众多的build选择实现了可视化管理,比如当用Nantpad打开我在上一篇blog “How to drive al.exe in NAnt?”(http://blog.joycode.com/musicland/posts/11681.aspx)中手工撰写的那个build文件后,Nantpad立刻以树型结构显示出build文件中的目录结构:? 注意,在第一次运行Nantpad的时候需要在Tools-Schema Manager中指定NAnt的schema文件(默认安装在\schema目录下),以便Nantpad获取NAnt schema信息,否则是无法分析build文件结构的。 ? 接下来就可以试一试Nantpad可视化编辑的能力,给这个HelperDemo.build文件增加一项新的功能——在编译后运行编译结果。在NAnt文档中这项功能由节点指定,我们需要做的只是增加一个(如果你想把它放在原有的节点也可以),在新增的节点下增加一个节点,配置它的属性为将要运行的程序集的名称即可。整个过程非常简单,所有操作都在右键弹出菜单中。下图就是按上述步骤在Nantpad中配置后的HelperDemo.build文件: 值得注意的是,我还给节点配置了属性,以传入程序集运行参数,因为即将运行的程序集(HelperDemo.exe)将要对传入的两个int参数执行简单的求和运算。用文本编译器打开这份配置文件查看内容如下: ? ??? ??? ??? ??? ??????? ??????????? ??????????????? ??????????????? ??????????? ??????? ??? ??? ??????? ??? ? 可见,Nantpad已经在后台自动生成了所需的build脚本,无须我们手工书写了。 最后,保存这份文件并转入cmd.exe调用nant.exe进行编译,运行结果如下: 最后需要说明的是,由于Nantpad目前还是Beta测试版本,因此在很多方面还并不完善(比如说界面中的帮助信息还没有,我在运行过程中Nantpad还几次死掉)。另外,虽然可视化编辑给开发人员带来了解脱,但对我这样的shell爱好者来说,除非已经对某些命令或脚本烂熟于心,或者为了赶项目进度,否则还是愿意高高兴兴地手动写代码。:)...[阅读全文]

posted @ | Feedback (9) |

摘要:最近借着玩.NET Framework 1.2和MSBuild的机会又把C#语法和部分.NET Framework重复了一遍。在这个过程中几乎没用过Visual Studio .NET,我发现自己已经非常习惯在GNU Emacs下面完成尽可能多的事情了。 ? 这倒不是说我反感Visual Studio .NET,也不是我在为Emacs和GNU摇旗呐喊。我的习惯是毫无偏见地接触更多的事物,去发现尽可能多的美好的东西。更何况我的机器配置并不高,除非写比较大的项目,否则我是不会动用Visual Studio .NET这个近乎完美的IDE的。 ? 前几天在网上找到了一个Emacs的XML/HTML编辑插件(NxmlMode,http://www.emacswiki.org/cgi-bin/wiki/NxmlMode,泰国人写的),这使我在Emacs下也能轻松地编辑xml文档了。本来Emacs内自带了一个SGML/DTD的编辑插件,功能非常强大,但自从我听说了SGML的另一个解释Sound Great, maybe later之后就再也不想碰它了,再加上DTD在我的心目中也没什么好形象(我还是喜欢XSD的表示方式),所以一直拒绝使用那个插件。直到安装上了NxmlMode,我可以非常轻松地编辑MSBuild的.*proj文档了(需要自行设置文档后缀关联),NxmlMode提供的元素自动补全功能甚至要超过了此前我用过的Visual SlickEdit,这使我欣喜若狂。 ? 哦对了,前几天还在北京图书大厦淘到了一本名为《学习GNU Emacs》(Learning GNU Emacs II)的好书,作者是Debra Cameron、Bill Rosenblatt和Eric Raymond(认识这个家伙吗?:)。书本身的内容绝对不在话下,值得一提的是这本书的翻译出奇地好,有些片断甚至令我拍案叫绝!要知道,这几年里我只读过几本让我放心的翻译书籍,其中包括《Delphi 5开发人员指南》、《Visual C++技术内幕IV》、《C#技术揭秘II》等,而我家中那座书的小山中绝大多数都是英文原版。当看到一段让我感到惊喜的翻译文字时,我会会心地笑出来。而当我看到一本自己很喜欢的书被翻译得乱七八糟的时候,真的想给那位译者打个电话给他送去我最真诚的诅咒。...[阅读全文]

posted @ | Feedback (7) |

摘要:在我平时比较喜欢去的网站之中,GNU (http://www.gnu.org)是其中之一。其中的FSF/UNESCO Free Software Directory (http://www.gnu.org/directory/)就像一个深不见底的宝库,蕴藏了无以计数的优秀软件,其中有些软件已经成为我日常开发过程中不可或缺的利器,例如Emacs、grep等,今天我想给大家介绍的就是grep (Global Regular ExPression)——一款极其强大的文档搜索工具。 ? 在Grep的首页上(http://www.gnu.org/software/grep),关于grep的介绍只有这么简单的一句: ? Grep searches one or more input files for lines containing a match to a specified pattern. By default, grep prints the matching lines. ? 简单说来,你可以用grep来查找位于某个文件中的某个字符串,并可以控制结果显示。在阅读源代码时,grep几乎是必不可少的工具。通过它你可以非常快速地找到一个大型项目的入口,并能轻松地在海量源代码之间找到你所需的函数或变量。 ? 下面我来举个简单的例子:我想查询所有位于当前目录下的.cs文件中的Main,通过grep我可以轻松快速地完成这项任务,命令如下: ? grep ‘Main’ *.cs ? 我机器上的示例输出结果为: ? ChineseDemo.cs:??? public static void Main() RegDemo1.cs:????? static void Main(string[] args) RegDemo2.cs:??? public static void Main() RegDemo3.cs:?? ?public static void Main() ? 可见,通过grep真的可以找到相关目录中符合条件的所有文件,并能打印出查询到的字符串所位于的那行内容。如果我只想确定哪些文件含有Main,而不需打印相应行的内容,那么可以使用以下命令: ? grep –l ‘Main’ *.cs ? 输出结果为: ? ChineseDemo.cs RegDemo1.cs RegDemo2.cs RegDemo3.cs ? 只有相应的文件名称被显示。 ? 在找到了含有Main字符串的几个文件后,我想粗略地查看某一具体文件的里源代码的相关信息,比如查看RegDemo1.cs文件中含有Main这一行的前后三行,相关的命令如下: ? grep –C 3 ‘Main’ RegDemo1.cs ? 输出结果为: ? ? class GroupingApp ? { ????? static void Main(string[] args) ????? { ????????? Reg7(); ????? } ? 输出结果完全符合我的需求,static void Main(string[] args)这一行前后三行范围内的所有代码被全部打印出来(第一行是空行)。 ? 以上的查询字符串没有对查找结果是否为一个完整的单词进行限制,也就是说TheMain和Main_Func都会被认定为查询目标。如果我想限定该查询字符串为一个完整单词,那么可以使用\w参数,相关命令如下: ? grep –w ‘Main’ *.cs ? 结果为: ? ChineseDemo.cs:??? public static void Main() RegDemo1.cs:????? static void......[阅读全文]

posted @ | Feedback (20) |