Fox's profileFox涂鸦PhotosBlogListsMore ![]() | Help |
|
|
August 17 Cygwin下安装ACE
本文同步自游戏人生 ------------------------------------------------------------------- -----------------------读书----------------------- 想读《UNIX Network Programming》很久了,只是这种愿望一直没有特别强烈。用的笔记本换了之后强迫自己只是装了cygwin,没有安装VS,平时写些代码就只能在cygwin下用gcc了。最近对UNIX环境编程和网络基础比较感兴趣,于是读这本书终于提上了议事日程,可是大多数书店都没有这本书了。 工作之后,对于自己喜欢的书,就很少会去看电子版,觉得还是捧卷在手的感觉舒服一些,想怎么看怎么看,享受拿笔在上面写写画画的感觉。因此对于想读但买不到的书,第一反应是等待。在翻电脑上面一些资料的时候才反应过来我已经很久没有down过电子书了,结果就从网上down了很多想读(豆瓣)的书,forgive me, Richard Stevens and anybody. -----------------------动手----------------------- 之前只是在Windows下用过ACE,因为ACE提供了VS各种版本的解决方案,编译过程比较简单。这次放在cygwin下编译的时候,因为环境变量设置问题,并不是非常顺利,参照了源码目录下的ACE-INSTALL.html的描述才将问题解决。现在将过程给出来,仅供google到这里的同学参考: 友情提示:我目前对于cygwin和UNIX类系统的了解停留在知其然(还是在google之后)的水平。 1. 增加环境变量 o 修改/etc/profile文件读写属性: $ chmod 777 /etc/profile cygwin下的环境变量可以在该文件中配置,由于该文件默认具有写保护属性,因此需要修改使之可写,修改完成之后应该记得对其进行写保护: $ chmod 555 /etc/profile o 打开profile文件(本人使用emacs进行编辑,读者也可以使用vi、vim等,在此不再赘述): $ emacs /etc/profile o 往profile中修改和添加环境变量: 将以下五行添加到文件中,ACE_ROOT为ACE源码目录,本文用到的目录是/usr/share/ace: ACE_ROOT=/usr/share/ace LD_LIBRARY_PATH=$ACE_ROOT/ace:$LD_LIBRARY_PATH # export PATH=$ACE_ROOT/ace:$PATH 这个操作等同于在VS下修改库文件目录,我是直接修改了PATH变量的: PATH=/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:$ACE_ROOT/ace:$PATH o 执行/etc/profile $ /etc/profile 执行修改后有可能需要重启cygwin,可使用下面的命令查看ACE_ROOT设置是否正确: $ echo $ACE_ROOT 2. 创建若干文件: o 在$ACE_ROOT/ace 文件夹中创建名为 config.h 的文件,并加入以下内容后保存关闭: #include "ace/config-cygwin32.h" o 在$ACE_ROOT/include/makeinclude 文件夹中创建名为 platform_macros.GNU 的文件,并加入以下内容保存关闭: include $(ACE_ROOT)/include/makeinclude/platform_cygwin32.GNU 3. 编译ACE: $ cd $ACE_ROOT/ace 大概会花掉十几分钟时间吧。 4. 测试ACE: $ cd $ACE_ROOT/tests 大概又会花掉十几分钟时间吧。 接下来就可以使用perl脚本完成所有测试,我没有使用过perl,临时安装了一下。 $ perl run_test.pl 这个脚本在我一位同事的机器上跑了很久(十几分钟 or 几十分钟?),不幸的是,Windows竟然抛出了一个内存读写错误,更加不幸的是,我现在没有能力去确定。 结果周末后面的时间又花在熟悉EMacs上了,还没有看ACE的代码,只有下周才能看了。 -----------------------结束----------------------- 这种小学生的东西拿出来讲确实是很难为情的,然而,于我现在却又算是极大的一个收获。真等我熟悉了其中的很多内容,又未必会再有耐心说了。所以还是记录一下,既是鼓励,也是督促。 晚上睡觉之前翻了一下《ACE程序员指南:网络与系统编程的实用设计模式》,发现里面2.3节也讲到了怎么安装。 请移步至此阅读全文» August 13 拱卒的修炼
本文同步自游戏人生 ------------------------------------------------------------------- -----------------------读书----------------------- 最近在读的一些书里,有一些是第一次读,有一些是以前翻过的。这次拣这本读起来容易做起来困难的《程序员修炼之道》,我手里的这本《程序员修炼之道》(The Pragmatic Programmer,以下简称PP),其拥有者是Soft(等我仔细阅读完了再还你吧:D)。这样一本书,让我想起了《春秋》,所谓『微言大义』,这本书当之无愧。晚上重读了前面几章,抛开书中讨论的具体技术和开发细节,简单说几点。 1. 关于承担责任 最低层次的是对自己负责,这是作为一个coder起码的素质,能够勇敢的承认自己所犯下的错误,并努力改正和避免。他们循规蹈矩、战战兢兢的做着份内的事儿,轻易不拿源码去喂猫。安得广厦千万间,靠的就是他们。 稍微有担当一些的老员工还会做到对正在参与的项目和产品负责,当问题出现的时候,他最先想到的并不是追问这是谁犯的错误。因为他知道错误总会出现,他们存在的意义之一就是想办法解决,从而保证整个项目和产品的稳健。他们是大裤衩被烧之后的救火队员。 当一个人可以为某个公司甚至是某个领域的问题牵肠挂肚、孜孜以求的时候,他不是一个人在战斗。更多的时候,他不是在充当救火队员,而是以实际行动带领其它人树立防火意识,给你足够的安全感。在现实当中,他们以自己敏锐和独到的眼光,将更多的新兴技术带给业界。他们不仅获得同事和公司的尊重,也获得了整个业界的尊重。他们是谁,你一定曾经在twitter或者googlegroup中经常能看到。 2. 关于知识资产 我完全赞同Andrew和David关于知识资产的论述,因此这里不吝做一做文抄公: o 每年至少学习一门语言; o 每季度阅读一本技术书籍; o 也要阅读非技术书籍; o 上课; o 参加本地用户组织; o 试验不同的环境; o 跟上潮流; o 上网。 3. 关于交流(WISDOM) What do you want them to learn? What is their interest in what you've got to say? How sophisticated are they? How much detail do they want? Whom do you want to own the intormation? How can you motivate them to listen to you? 4. 关于设计 GoF的DP对重构的好处和方法都提供了很好的指导,PP关于避免编码的重复和提高设计的正交性(解耦)都已经论述了太多。 其实,无论是开发之中还是开发之外,最困难的事情大概就是改变自己的习惯了,这本书里每一节的最后大都提供了『挑战』项。简单来说,就是不断提升和反省,在提升中反省,在反省中提升。 在去年年底写的《2009年的十大》中,为自己这一年定了十个目标。时间过去一半多了,虽然没有用心去读存在磁盘上的《胡适文集》,倒也没有放弃对人文的关注。最主要的是,一直保持不间断的阅读。 -----------------------动手----------------------- 一直活在Windows的『阴影』下,家里怎么也不想装Windows下的IDE了。搞了Cygwin来玩,在不同的开发环境下来回切换,对于我这种擅于在一棵树上吊死的惰性分子来说,还是很痛苦的。 之前直接运行info程序(info reader),没有高亮看起不舒服。后来才发现可以直接在Emacs下运行info命令的,只是和使用info reader时有些命令差异。 这几天晚上不看书的时候,就是随便看看gdb和Emacs的man和info,重新回到了读书查单词的大学时代。如果英语阅读能力再好些,就可以凭一方键盘驰骋沙场了,饶是如此费劲,倒也不失酣畅淋漓。 总结了一下: 1) 打开Emacs,『欢迎词』很关键,它会告诉你怎么往下爬,尤其是如何打开帮助,这是第一步; 2) Emacs下运行info命令,并分别查看Info的使用和Emacs的使用; 3) 学会Emacs和Info基本使用方法后,学习使用gdb。 慢慢熟练之后,基本就可以在新的环境下编写、调试代码了。 在Google Doc中放置了一部分翻译的文本: o 常用 Info 命令键 o LESS命令概述 o GNU 工具(LESS) -----------------------提示----------------------- 翻译内容纯属个人喜好,不以任何方式保证内容的准确,不以任何方式承诺后续内容的跟进,谢绝任何方式的挟迫。请移步至此阅读全文» August 11 使用flickr发表图片July 29 独立之美
本文同步自游戏人生 ------------------------------------------------------------------- 我对于WordPress的插件(plugins)模式感觉非常愉悦。只要遵循特定的语法,你几乎可以随心所欲的DIY,这种感觉就像你想看什么网站就看什么,完全不用担心大中华局域网中『此网页无法访问』的问题。 虽然设计模式最早正是应用于软件开发,但这种重用的思想反倒是在互联网中随处可见,尤其是Web 2.0时代,重用表现为个性的释放和快意(如果不算是创意的话)的表达。而且几乎不会有过度设计的感觉。 比如在一个比较大的解决方案中处理网络消息时,不同类型(通常是上万种甚至几十万种)的消息需要分别处理,如果用switch-case的话,一般会分到多个源文件中处理。这种方式有几个限制: 1. 新增消息类型时,需要改变switch-case所在的文件代码; 2. 处理消息的接口通常位于一个独立的源文件中,与消息具体逻辑还要另外关联; 3. 涉及代码位置太多,而且存在冗余。 以前曾经在《消息映射机制的简单实现》和《支持成员函数指针的消息映射机制的简单实现》中对仿MFC的消息映射实现有很详细的说明。 当然,这个实现还是有一个明显的局限,那就是同一条消息只能映射到一个处理函数(无论这个函数是全局静态函数、类静态成员函数还是普通成员函数)。重复注册的消息映射将以最后一次注册为准。 为了提升代码本身的可重用性,所写的代码与实际逻辑处理耦合度自然是越小越好,尽量避免硬编码实现。这一点在UI上面更加体现的淋漓尽致。 假设我们以xml编辑UI的配置文件。在C++代码中,我们可以建立ID与各种属性、字符串等的映射,当需要调整某些内容时,在xml文件中就可以随意修改属性值,仅当配置文件结构变化时才需要修改C++代码。lua甚至连C++代码都不用修改,lua既可以操作配置信息,也可以操作C++接口。 说到这里就不能不提Twitter,因为Twitter的开源API,其生命力才会像野草一样顽强,第三方软件也跟着像野火一样蔓延。 传统软件产业的我们,不知道能不能赶上这样的潮流呢? 请移步至此阅读全文» July 23 我看好你哦
本文同步自游戏人生 ------------------------------------------------------------------- 大成网前两天发了一篇以《文化部今日通过魔兽世界—巫妖王之怒审批》为题的新闻,太扯蛋了,关心WOW的同学都知道,这次审批的是TBC,不是WLK。 如果编辑是真不懂,这职业素质也太差了; 如果编辑是装不懂,这职业素质还是太差了。 就算是你妈没喊你回家吃饭,也不要欺骗大家的感情吧。 正像有人说的:如果你文笔很好,请不要做记者;如果你有正义感,请不要做记者;如果你不想变成一只枪手,请不要做记者;如果你禁的住诱惑,请不要做记者;如果你不会撒谎,请不要做记者……如果你不具备上述条件,请你做记者。 果然,我看好你哦。 李开复把自己用了很久的iPhone丢了(丢给他女儿了),改用GPhone了。 虽然一起很喜欢Apple的产品,却没有任何一样Apple的产品,也没有关注过Apple的开发平台。 当然,即使一直在用Google的产品,却也没有关注过Google的开源项目。 看过很多GPhone效果图觉得还不错。我看好Android。 请移步至此阅读全文» July 15 综合实力
本文同步自游戏人生 ------------------------------------------------------------------- 2005年春晚,朱军和冯巩的相声《笑谈人生》中有这样两段对白: 朱军:我在想,你都人到中年了。一个中年人,还这样乐此不疲的奔波着忙碌着,支撑你的原动力到底是什么? 冯巩:不自信呗!!之所以干这些事,我是想让人感觉到,在相声界我影视演的最好,演员界我导演导的 在团队中,我的工作重心和个人兴趣会随着项目的需求发生变化,到最后,就玩成了所谓的『综合实力』: 在有玩家抱怨游戏中打怪升级单调枯燥的时候,我曾把时间更多的放到AI上。 在大家抱怨服务器消耗明显的时候,我曾把时间更多的放到优化上。 在外挂猖獗的时候,我又把时间更多的放到安全上。 …… 其实,这也蛮适合我的,不会烦。 去年夏天的时候,因为当时时间还比较充裕,翻译过一系列Google编程风格。 前不久,一个网友yospaly联系我说他在『Google Code 建立了一个 zh-google-style-guide 项目』,跟踪翻译google-styleguide,建议我『采用和 google-styleguide 相同的 Artistic License/GPL 许可』。 当时只是闲的无聊,我也乐意拿出来,于是就同意了,现在,在yospaly的努力之下,已经全部整理完了,从格式到内容比我之前做的要漂亮多了。 有兴趣的同学可以到这里下载。 在中国,任何东西如果被某些喜好『自由』的人盯上,离其他人失去『自由』就不远了。 先是牛/博被阉割,然后大家觉得Tw/it/ter不错,纷纷去了Tw/it/ter,现在连饭/否都被否了,他们唯一可以做的就是整天叽叽/歪歪,我真的怀疑是牛A得了疯牛病,还是牛C得了口蹄疫。
请移步至此阅读全文» 多些书生气,少点功利心
本文同步自游戏人生 ------------------------------------------------------------------- 脑子里一直藏着一个问题:我想要一条什么样的路? 我曾经生活在一个信息闭塞的环境中:离家求学之前,我生活了十八年的家乡虽说不上什么穷山恶水,但也相去无多。小时候家里没有电视可以看,没有很多书可以读,父母一个初中肄业,一个连自己的名字都不会写。 但仔细想来,那时周围一些环境似乎是对我产生了极重要的影响: 1. 五岁之前,父亲早过幼儿园教我识字数数,甚至还很是买了几本画书(时不时想起来竟似乎可以记得书上的大多内容)。没有父亲的启蒙,我应该接了他的班,守着自己的丑妻近地热炕头,孩子应该都会喊爷爷,也会替他爹买烟打酒,帮他娘买盐打酱油了吧; 2. 我有一个一字不识的奶奶,她却能分辨写字的好坏,告诉我先能写一手小字以后写大字才好看,于是我就努力去用中毫写铅笔粗细的小楷,一次次让她看是否中意。放在现在我是断不会相信她的,因为我不觉得这当中真是有必然的因果。但我今天的确没有写一手太丑的字; 3. 我有一个善于作画的小学老师,他是省里都知名的民间艺人(如果不能称『家』的话)。我闲暇时也会自己画画,以致在初中的时候被班主任发现我的『才艺』,学画两年,荒废了学业。我其实挺记恨这位初中班主任的,如果不是他,我或许不用多读一个初三才升入高中。他为了能有个好的升学率,以我为赌(这所初中,一年也没有几个可以升入高中或中专的,学音体美说不定还有一线希望),所幸,我并没有学成,我直到现在也不认为我真有作画的禀赋。饶是如此,我还是认为那两年相当于提前踏入了社会,这也算收获吧(虽然得不偿失); 4. 我有一个喜欢评书的姨夫,家人反对我读『闲书』,但我每年寒暑假时都会去他家过,他反是支持我读,《三侠五义》、《小五义》等,都是那时读的,似乎我也只读过那几本小说; 5. 高中时的三位语文老师对我都很是待见,一个理科学生,硬是做了三年的语文课代表。他(她)们都给了我比其他同学读更多书的条件,也给了我很多自信,让我心中的文学梦一直做着。如果不是为了那时刚朦胧的初恋,我是一定会学文科的,而且一定会读中文; 6. 高三的班主任老师是一个颇有几分怪才的『电脑高手』,可以用PPT给我们讲课(当时全校也只有他一个吧,而且他是几年都在全省讲课比赛前几名的),一次考完试之后,他带我们全班在一间老师用投影看《搭错车》,只听到最后一屋女生哭的稀里哗啦的,我却被那电脑吸引住了。毕竟,对于一个没摸过的乡下孩子,电脑的魅力不是一般的大,因此,我毫不犹豫的把所有报考学校的第一志愿都填了『计算机科学与技术』。 -------------------------------------痛苦的分割线------------------------------------- 一个连历年分数线都看不明白的孩子和他周围一群连清华北大都不知何物的庄稼汉,面对一个不到一本线的差强人意的高考分数时,你不能指望他们能有多么高水平的报考策略,你得接受调剂的现实。当然,对于死要面子的他们,你也不能强求他们再来一年。 一个连电脑开机都不会的毛头小子,面对强大的PPT和电影播放,你得允许他仅仅为了这两点而去追求他的计算机梦想。当然,一旦他知道这一切只要装上几个软件就几乎不用动手也能做到之后,你也不能强求他不会失望甚至绝望。何况,即使他学了C语言,他也不知道那到底会有什么用。 于是,心灰意冷的我决定放弃该专业,深感于信息落后所带来的无知以及无知的可怕,我选择转攻『新闻学』,以期可以振聋发聩,开启民智。 当然,一个连有人点播一下的专业都放弃了的家伙,你不能指望他真能在其它专业的自学上走多么远。 于是,心灰意冷的我决定放弃该专业,深感于信息落后所带来的无知以及无知的可怕,我选择转攻『经济学』,以期可以经世济民,改善民生。 同样,一个连有人点播一下的专业都放弃了的家伙,你还是不能指望他真能在其它专业的自学上走多么远。 就这样,不知不觉,两年过去了。可怜的家伙终于在几次翻墙未果反倒屡撞南墙的情况下带着满身伤疤回到了本该属于他的黯淡的轨迹上…… 回头看看,年少时的无知曾经令我义无反顾的我行我素,却也总会无心插柳,开阔了些许眼界。反倒是现在颇有些心得的我畏首畏尾,不知该何去何从,偏偏却自己不争气,任谁也动我不得。 这像极了国内的互联网现状:看上去无所不知,无所不能,实际仅是个固步自封的局域网而已,却偏偏又喜欢卖弄。被别人指责时又浑身都是G点,多说一句话便待翻脸。 -------------------------------------反省的分割线------------------------------------- 其实不妨放低姿态,再学学当年的无知,多些书生气多读书,少点功利心少邀功。 想到这里,忽然觉得文章一开始提的问题里分明的透着焦虑。与其一直停在路边盘算着怎样走最近,不如边走边想。甚至不必在意一时走过的『弯路』。 请移步至此阅读全文» July 11 还你世界的清静
本文同步自游戏人生 Web 1.0和Web 2.0的区别是什么? 依我的亲身体会来说,那就是Web 2.0的普及速度比Web 1.0要快的多的多,Web 2.0的互动力度比Web 1.0要大的多的多。 我第一次上网(2001年)距WWW出现晚了12年(这还不考虑1969年出现的互联网的前身ARPANET); 我第一次应用Web 2.0(2004年在红袖添香网站发文章,写日记,可惜的是,现在连密码都记不起来了,如果这不算的话,那么2006年开始在搜狐、和讯和CSDN开始写blog应该算了)距Web 2.0概念的提出晚了7年。 刚大学读书那会儿挺傻的,以前没用过计算机,更没有上过网。依我们高中老师和我被熏陶出来的价值观:上网、聊天、打游戏都是坏孩子做的事情,我不是好孩子,但也绝对不想做一眼就被看穿的坏孩子。 因此即使跑网吧上网(寝室还没有电脑)也是去敲C代码(有同学为证)。 1. 2001年10月,第一次上网(一直在敲代码); 2. 2001年10月,有了第一个QQ号码(一直在用); 3. 2001年10月,有了第一个邮箱(好像是Yahoo!?,显然没有在用了); 4. 2002年10月,自己学着做网页(当时名噪一时的网页三剑客); 5. 2004年10月,在红袖添香网站发文章,写日记; 6. 2005年10月,拥有GMail账号(yulefox); 7. 2006年02月,开始在搜狐写blog(2007年11月止); 8. 2006年06月,开始在和讯写blog(该年7月底止); 9. 2006年12月,开始在CSDN写blog(2007年7月止); 10. 2007年12月,开始在C++博客写blog(2007年7月止); 11. 2007年12月,开始大规模使用Google应用,生活、学习、工作,无处不在,个人全面进入Web 2.0时代; 12. 2008年10月,申请第一个域名(http://www.yulefox.com/); 13. 2008年11月,拥有Twitter、饭否、叽歪等SNS账号(六度分隔理论); 14. 2009年07月,开始有意识的主动关注互联网发展,而不仅仅是加入成熟应用。 当然,我对于互联网领域(尤其是Web 2.0)的大多数的关注,源于对朋友的关注(尤其是Fallhunter),而这,似乎正是Web 2.0(更确切的说是SNS)的本质所在。 Web 1.0时代,对于互联网用户,有一个很传统的名词叫『受众』,很好的表达了用户是在被动的接受信息。虽然这种被动相比传统媒体有了更大的自主性,比如我们有搜索引擎可以使用。表面上看,这似乎给了读者更多选择的权利,但每个页面中,却有看更多的信息是我们本来没有意愿去关注而延伸阅读下去的。这种方式极大程度上满足了信息提供者的商业/非商业诉求,却强加给读者太多不必要的成本。哪怕是搜索引擎也丝毫没有减少(甚至是加剧了)这种成本的扩散。 后来的BBS、IM(包括各种群功能)、社区虽然在针对性、专业性和交互性上有了很大提升,却依然没有避免各种『噪音』对用户的烦扰,我们最后甚至会极力反对IM中提供的群功能。 现在的Atom、RSS、Twitter给我们提供了更友好的选择。用户可以随心所欲的订阅自己关心的信息,可以畅所欲言的发表自己的观点,『基本』不会打扰到这个世界本来的『清静』,因为其它用户也有同样的权利。在Web 2.0的世界中,你既是信息的受众,也是信息的主宰。之所以说是『基本』,是因为即使是爱好取舍再接近的两个人,你也无法保证你所写的每一篇文章,说的每一句话,对方都会需要。然而,目前我们暂时不只有选择/不选择源的权利,还无法智能的判定每一条信息是否是受众所需要的。 不管怎样: Web 1.0将地球变成了地球村,却没有考虑你是否能与周围的邻居友好的相处; Web 2.0将地球村变回了地球,六度分隔理论在还你同一个世界的时候,并没有忘记你周围需要有哪些邻居,虽然不是总是。 PS: 推荐一下,friendfeed,将Web 2.0一网打尽。 阅读全文» September 03 胜败之心June 26 不到终点亦英雄 |
|
|