“老哥,很久不见了么,今儿你也出来转悠了?”,就在不远处有个似曾相识,推着婴儿车的哥们在懒懒地打着招呼,嘴角也依样懒懒地挤出一丝笑意,算是和他打过招呼了。懒懒的阳光,懒懒的行人,懒懒的招呼,似乎在外漂泊了大半辈子终于回到了家,所有感官也开始变懒,眼前这位兄台的一句问候却迫使我费力地翻着旧账簿试图回忆起他曾经的音容笑貌,可是脑子却还是不自觉的沉入了茫然中。“这是你的孩子?!长得不赖”,“这是我外甥女”随口支应了一声,这个家伙终于将我从茫然中拉扯了出来,那片刻的茫然虽不能拾起起任何记忆片段,但是却是那样的享受,那种懒懒的享受。“你外甥女多大了?”,“8个月”,“我儿子都1岁半了,这女娃女会喊人了吗?我儿子都会喊爸了...”,“哦,1岁半了!你弄的这猴在哪整得?“... “这猴,我估摸着多少还能要个50块吧!?“... “洋洋,舅带着你在外面也转了好一会了,咱回家吃饭去”,“不么,好舅我还要玩,好婆饭还没做好呢”,转身侧头,顺势扶正外甥女骑在肩头的小PP,无意却瞥见了那位回忆不起姓甚名谁的那位兄台,张着嘴,剩在身后。
5/06/2010
就你弄的这猴
2/02/2010
如何升级到 Tor 0.2.1.22
直接到Tor官方站点下载Tor 0.2.1.22 ,然后安装之(原先Tor安装版本不需要删除)。
12/07/2009
Privoxy is out! Now, Tor+Polipo
目前最新的Windows版Vidalia-Bundle中已将Privoxy砍掉了,取而代之的是Polipo,一个主要为个人和小用户群设计的轻量,具有缓存机制的Web代理。加上近期,Shinjiru Technology为Tor赞助了的一台高带宽主机(详情请见这里),配合轻量的Polipo,翻墙的时候基本不卡小JJ,有兴趣并且有小JJ的同学可以自己试试。
11/24/2009
如何在Ubuntu9.10下安装原装Tor
11/23/2009
Ubuntu 9.10 觉后禅
10/27/2009
Google Chrome 代理服务器(Proxy)的设置
Google Chrome的代理服务器的默认配置: 在Windows下使用IE的代理服务器配置,在Ubuntu下使用Network Proxy的配置,也就是说Google Chrome倾向于使用系统级的代理服务器配置。这样做的好处是产品的初期开发工作相对简单些,也可以方便一般用户的使用,但是就这点对于天朝的骑墙子民却是个麻烦的鸟事。比如你在墙内呆着忽然想去墙外了,特别是Google在墙外的几亩地上转转,怎么办? 要改系统级的代理服务器配置了不是;如果你更贱点,比如还想同时用较快的直连方式上墙内的站点怎么办? 麻烦了不是?! 可能你会说我可以用Firefox么,OK,用Firefox的请滚那边;当然你还可能会说我又不是Google Fans凭什么一定要用Chrome,这个问题问得好,理由就是: 如果你想在墙外Google的几亩地上转悠,你就得用Chrome,MD谁用谁知道!这个道理再简单不过,比如你来大姨妈了,我弄个环保袋给您垫着,你觉得合适吗?
9/27/2009
在Ubuntu下如何配置Tor网桥
7/25/2009
交通银行 != 垃圾银行
6/30/2009
如何架设Tor+Privoxy服务器
在GFW渐趋肆虐的和谐大环境下,在没有更加主动的应对策略前,每日被动使用Tor+Privoxy 的频率自然也越来越频繁了。但是我们通常都是在自家的自留地上种上Tor和Privoxy,这是典型的互联网小农意识,我们需要更方便、更有效率和能同时为更多的网络羔羊提供Tor+Privoxy 服务。因此本文将介绍如何在服务器上架设Tor+Privoxy,虽然本文以Ubuntu 8.04 LTS 服务器为例,但是类似的配置在Windows Server平台上也是同样适用的。
Step-1. 安装Tor+Privoxy
请先确保具有Ubuntu 8.04 LTS 服务器的root权限,在Terminal中输入如下命令安装Tor和Privoxy:
sudo apt-get update
sudo apt-get install tor privoxy
Step-2. 配置Privoxy
由于Tor不能作为Web代理服务器(Web Proxy),因此只需要将Privoxy的TCP通讯(TCP Traffics)转到Tor的本机TCP侦听端口(127.0.0.1:9050),然后将防火墙开放Privoxy的默认TCP端口8118,重启Privoxy服务即可。
编辑Privoxy的配置文件: 用你熟悉的编辑器打开/etc/privoxy/config, 找到# forward-socks4a / 127.0.0.1:9050 .配置行,然后将单行注释符#删除掉,然后保存该配置文件。
2) 重启Privoxy服务
sudo /etc/init.d/privoxy restart
3) 配置防火墙开放Privoxy的默认端口
在Ubuntu下,防火墙默认是全开放的,因此默认情况下是不需要为Privoxy配置防火墙的。由于大多数Linux防火墙都是基于Linux内核级防火墙Netfilter(IPTables),所以在此只介绍如何利用iptables开放Privoxy的TCP端口,可以用iptables的Append或Insert输入链(Input Chain),如下:
sudo iptables -I INPUT 5 -m state --state NEW -p tcp --dport 8118 -j ACCEPT
上述命令是在输入链中第5条的位置插入开放TCP 8118端口的输入链,该项操作会因你的服务器防火墙的具体环境而异,因此如果碰到问题请参见Ubuntu IPTables How To。
4) 保存IPTables的配置
在Terminal中输入如下命令:
sudo sh -c "iptables-save > /etc/iptables.rules"
为确保在服务器重启后能自动应用之前的防火墙配置,请在/etc/network/interfaces网络接口配置文件尾部添加如下配置语句:
# The iptables rules
pre-up iptables-restore < /etc/iptables.rules
post-down iptables-save > /etc/iptables.rules
Step-3. 客户端配置
在Firefox和IE下配置网络代理的过程基本类似,在Firefox>(Edit>Preferences|Tools>Options)>Advanced>Network>Settings进行相应设置即可。在Firefox中可以使用FoxProxy插件配合Tor,不过个人觉得FoxProxy虽然强大,但是太慢了,另外你还得不断地手动添加基于URL的模式(Patterns),显得有些过于繁琐。因此我将会以Firefox为例介绍一种在Tor+Privoxy 与正常模式之间的自动切换的方法:
1) 创建Firefox Profile
首先需要终止所有Firefox进程,在Linux Terminal或Windows Command-line中输入:
firefox -ProfileManager
然后依据Create Profile向导完成你需要为Tor+Privoxy 配置Firefox的相应环境,设置Firefox网络代理,将该新创建的Profile命名为tor。
f-3-1:
2) 启动Firefox
在Linux Terminal或Windows Command-line中输入:
firefox -P <profile-name>
这里的<profile-name>即为Firefox创建的Profile名称,例如:firefox -P tor 将以使用Privoxy的Profile启动Firefox。
f-3-2:
6/21/2009
Vista 安全瘦身10条
Vista比XP便捷高效的多,前提是如果你真的会搞XP。目前XP已过了主流支持期,To Vista or to Windows 7 that is the question,XP的拥趸已被M$无情地抛弃了,Oops, that's good! 在此我不想讨论同样都为愚蠢的Windows的XP和Vista孰优孰劣的问题,显然这样做是毫无意义的,我只想:在你有幸了解Windows的行为方式之后,对愚蠢的Windows喋喋不休地打扰你的生活,能发出纯爷们的呐喊:停下,DB!。本文将对Vista如何安全瘦身的问题进行讨论并提供一些建议,通常Vista会耗尽你的硬盘可用空间,因此你不需要怀疑问题的提出,这是由M$商业模式决定的,即由不得你也由不得我。另外非常重要的一点是我是教你安全瘦身,因此你不要过分的担心你的Vista会出现上吐下泻的症状。
本文是3个月前就开始准备,由于这段时间琐事繁多,再加上又不是个勤快的爷们,所以就拖拉到了今天。目前Vista SP2也已发布,昨天我已安装了SP2,但是至今并没有看过任何SP2的文档,也没有研究和体验SP2在SP1的基础上有哪些改进和提高,所以如果SP2对本文的内容涉及到有较大的技术变动时,我只能说非常抱歉。
2/19/2009
Evernote的幸福时光
Google Notebook 产品组官方博客于2009-1-14 发布将停止Notebook及其Extension的开发,但是仍然会对其进行维护的通告。Evernote 对此立即响应,于2009-1-22 在其官方博客中申明支持Notebook的导入功能,且对Notebook恭维有加。Evernote的出手可谓其疾如风,而且姿态也摆的很正,丝毫没有予人以巧取豪夺之意。
我是在2008-9-9注册的Evernote,但是较少使用,曾经在Evernote和Notebook之间如何取舍确也犹豫过一番,最终留下了 Notebook。目前又面临着再次选择,此文将就为什么要使用Notebook和Evernote等诸如此类产品的基本的需求,然后探讨如何选择的问 题。经常会在工作和生活中碰到需要及时地捕捉一些想法、收集和记录一些素材、记下一个电话号码... 这些就形成了最基本的需求。此外,这些想法、素材、号码需要进一步的整理,比如被捕捉的一些想法可能会转变成行动,或者被无情的删除掉,这也是大部分想法 的最终命运;一些被收集和记录的素材,其中有些由于本身具有一定的时效性,用完了就没有存在的价值了,最终也是难逃被删除的命运,而另外一些素材可能会转 变成Google Docs或者诸如MS Office Word等形式;临时记下的电话号码最后可能会被转存到通讯录中。也就是说在最基本的需求之上还需要Evernote和Notebook之类的产品具有便 于后期的筛选,整理,转换等工作所需要的功能。
如何选择?
1. Evernote和Notebook二者都能够满足捕捉想法、搜集和记录素材等,而且更加丰富,比如剪辑网页片段等。它们也都是Server-based,因此只要能上Internet就可以随时随地的存取这些想法和素材。
2. 在网页剪辑功能方面,Evernote对剪辑的网页片段会做一定的裁减,相反Notebook对此却是原汁原味的剪辑。虽然Notebook对剪辑的网页 片段的大小有64K的硬性限制,但是这64K的限制,会令你更加有意识的去剪辑相对重要的网页内容,而不是将整个Internet搬家。
3. 在移动终端的支持方面,Evernote有很好的Native手机版支持,除了基本的功能之外,还可以通过Evernote上传用手机拍摄的照片。在这点 上Notebook是个穷光蛋,一无所有。但是在国内,当3G应用还没有普及的情况下,唯一可以上Internet的途径就只有GPRS了,然而 Evernote却不支持GPRS连接;此外就WiFi的覆盖还没有形成面布局的现状下,能通过手机WiFi上Internet的地方,通常使用笔记本电 脑会更方便,能开拖拉机的时候,为什么要抡锄头?!
4. 在安全性方面,Evernote至少不支持HTTPS ,而在支持HTTPS这点上对于在国内渴望自由冒泡的家伙却是至关重要的;Notebook如同Google其它的重要服务一样是具备HTTPS支持的,但是要注意的是通过Notebook Extension访问Notebook时是不具备HTTPS支持的,切记。
5. Notebook的产品定位不甚明晰,与Bookmarks有重叠的部分,因此只能提供极其有限的书签功能,而这很容易造成用户的迷惑。这也或许是Google继续保留Bookmarks 而砍掉Notebook的一个原因吧。
6. 在Extension的支持上,Evernote和Notebook都提供主流浏览器的Extension支持,但是Evernote的 Extension相对较慢,而且不具备类似Notebook Extension迷你窗口可以直接存取的便捷功能,此其一短也。另外,Notebook及其Extension的停止开发意味着未来的主流浏览器升级后 将不能通过Extension便捷得使用Notebook,虽然它还是在Google Notebook产品组的维护期内。
7. 其实最原始的满足捕捉想法、搜集和记录素材等基本需求的方式就是用一个顺手的文本编辑器搞定,虽然这种方式最大的2个弱点就是不能随时随地的存取同时也不便于管理。
选择:
1. 在Notebook Extension还可以使用的情况下继续使用Notebook,这纯粹是个人选择,同时也是个人的使用惯性问题,如果从未用过Notebook就请直接使用Evernote吧;另外Evernote也提供了便捷导入Notebook的功能,因此也不用担心后期从Notebook迁移的问题。
2. 在使用Evernote或Notebook的同时,我也会使用改进型的基于文本编辑器的方法,以方便在不需要剪辑网页内容或者没有可用Internet时使用。
当初还是经Venjet 介绍才开始使用Notebook的,在这之前我一直使用改进型的基于文本编辑器的方法,在此会作一个分享,希望能有更进一步的完善。原始的基于文本编辑器 的方法就是在桌面上直接创建一个纯文本文档,但是该种方式很容易造成文档丢失或与其它文档混淆。怎么解决呢?有2种基本方法和在基本方法的基础上的2种改 进方法:)
2种基本方法:
M1. 在实际需要存储文档的地方创建文档(.txt或.doc等)而不在是桌面上,创建一个指向该文档的快捷方式,然后将该快捷方式置于桌面。由于 Windows会根据文件的扩展名选择相应的默认应用程序来打开该文档,因此只要打开该快捷方式就能以相应的默认文本编辑器打开该文档。比如,对 于.txt文档通常会以记事本(Notepad)打开。该方法的优点是能有效减少文档丢失,混淆,或找不到的问题。
M2. 但是使用M1的缺陷是不能任意指定开启文档的文本编辑器。这时可以通过在桌面上创建你所喜欢使用的文本编辑器的快捷方式,然后在快捷方式的目标 (Target)栏中,文本编辑器的执行程序路径后添加该文档的全路径(Full Qualified Path),如果路径中包含空格(space)请用双引号括起整个路径字符串。例如,在Windows下我会用Notepad++ ,然后将Notepad++的快捷方式的目标设置为: "C:\Program Files\Notepad++\notepad++.exe" "d:\note.txt";在Ubuntu 下会用gedit ,将gedit桌面快捷方式的命令栏(Command)设置为: gedit %U "media/sda5/note.txt"。
2种改进方法:
M2+. 但是如果你使用的是多重引导操作系统(Multiple Boot),M2就存在一个问题: 如何在不同的操作系统中保持同步,比如我在Vista下作了一些临时记录,现在切换到Ubuntu下了,我怎么存取在Vista下做的记录呢。答案很简 单,将该文档置于Vista和Ubuntu都能存取的磁盘分区上,然后将文本编辑器的桌面快捷方式指向同一文件即可。其实在M2的例子中就已提到,media/sda5/note.txt就是d:\note.txt,这是在同一磁盘分区上的同一文件。如果需要剪辑网页或图片,则可以使用重量级的文本编辑器,例如:Sun OpenOffice Word Processor 或者MS Office Word,就个人而言我喜欢轻量但不是简单的文本编辑器,Windows下的记事本(Notepad)是不值一晒的。
M1+. 利用Vista和Linux下的软链接(Symbolic Link)功能,采用M1,在桌面上创建一个指向该文档的软链接即可,同时参考M2+也同样可以解决M2在的同步问题。由于Windows只在 Vista版本才开始支持软链接,故此处只提Vista。
2/06/2009
重复, 重复, 再重复: 技术就是最好的服务 - 淘宝, 客服在线, 技术逃跑
由于原来的Password-Pattern设计的不够合 理,因此从2008年11月9日开始重构。发现淘宝帐户的登录密码too strong了:) 按照原Password-Pattern的设计,登录密码居然变态得达到了17个字符长。于是按照重新设计后的Password-Pattern准备调整 淘宝的登录密码,结果淘宝爆了个"出错啦:密码不匹配"的一个傻BB的娘娘腔提示,在确信自己没有输错密码的情况下给淘宝客服发了一封求助信,并告知淘宝 客服可能在注册、登录的密码字符长度限制与更改密码功能中的密码字符长度限制存在不一致的猜测。按照淘宝客服的48小时内保证答复的承诺,在11月10号 我收到了淘宝客服的答复邮件,答复内容却令人有一种被揶揄了的感觉,其中关键的一段话是"关于您反映的问题,请您首先刷新页面,多次尝试;或者请将您的IE浏览器升级到6.0以上版本;点击浏览器-工具-Internet选项,在常规中选项中点击'删除cookies'和'删除文件',然后关闭所有打开的网页,重新打开再做尝试。建议您再重新尝 试输入您的密码。" 。类似这样的句式我记得只在星爷的<大内密探008>里听过,"我们会一连3天,重复,重复,再重复的解剖...",作为回应,我又给淘宝客 服去了一封站内信。当然,"FUCK"一词在信中是一定要有的,不论淘宝客服的邮件答复系统是否是纯Machine的。
11月16日接到 了淘宝客服的电话,电话中这位客服先生仔细询问了我的相关帐户信息,我也和其确认了淘宝在密码字符长度限制上的不一致的问题。可能当时的通话语音质量不太 好,11月17日我才收到了淘宝客服的回复"小二已经核实清空了您的密码保护问题,请您核实,感谢您对淘宝的支持!"。于是我重新登录并试图再次更改核武 级的密码,A good job! 的确密码保护问题被置空了,能重设密码了吗?才怪!注册、登录时都用的是长度为17位的密码,重设密码时"现在密码"输入框至多允许输入16位字符,也就 是说无论如何我都不可能输入正确的老密码,又怎么能更改密码呢!另外顺带提一下,淘宝的"现在密码"这个新术语和之前提到的"出错啦:密码不匹配"都是一 副大姨妈来了的德性。在此,我被该死的"现在密码"误导了,在置空了密码保护问题后更改密码时是不需要输入"现在密码"的,SHIT!
此文本是2008年动笔 的,结果由于那段时间懒筋骚动,所以迟迟未能完成,目前也只是写了2/3,此时再想提笔却又没有了那份冲动,写完又有何益。倒是Google Blogger目前支持Google Docs -> Blogger的特性值得一赞,原来都是在Google Docs里写完,然后贴至Gmail,再email至Google Blogger。此举颇费周折。现在一步到位,小小的技术改进,带来的仅仅是便捷么?!
10/14/2008
goosh 之 李代桃僵
8/22/2008
如何识别红南京的真假
1. 判定真假的标准
即: 何为真, 何为假的问题。可以分为2种情形: 第一, 是由非南京卷烟厂生产的"贴牌"红南京,
这是纯粹的假冒伪劣产品; 第二, 由南京卷烟厂或其分厂生产的, 但不具备红南京固有品质的红南京, 这属于挂羊头卖狗肉。
2. 识别方法
非常简单、客观,只需要查看过位于滤嘴中部的褐色小点,假红南京过滤嘴上的褐色小点都是印刷上去的,而真红南京过滤嘴上却是褐色的小孔。仔细查看,就能发现内在的区别;视力不佳者,可通过点燃,吸一口后,用手指立即堵住过滤嘴的尾部,查看是否有少许的烟从褐色小点中逸出的方法进行识别。
3. 发现假红南京后的应对策略
step-1. 要求更换其它品牌香烟或直接要求退货(成功机会 >= 90%);
step-2. 在step-1要求未果后,可直接拨打110或12315(成功机会 -> 100%)。
在和香烟卖主的叽歪过程中,请务必要保持风度,尤其是碰上刁泼的香烟卖主,更要保持风度,因为曲在彼;叽歪的步骤必须是由step-1至step-2,所谓得饶人处且饶人,并且别忘了你的最终目的:品烟。
5/18/2008
地震求生的空间选择 之 Open/Closed原则
PLEASE HEED THIS ARTICLE AT YOUR OWN RISK!
今日上Google Reader,照例先看看好友有什么好文推荐,果然Vanjet 这小子有一篇题为:Earthquake Survival 101 的分享。这篇文章不仅图文并茂,而且非常合时宜;概括起来就是一句话:在地震时如何进行求生空间的选择。但是美中不足的是该文只告诉你:什么样的求生空间 是更安全或更不安全的,而对于处在千奇百怪、千变万化的现实条件下,并且受灾时人们多少会有一定程度的因恐惧而来的心理和行为的慌乱,在这样的情况下我们 应该如何选择,该文并未涉及。但是,我们需要更简单,更具一般性的原则,使我们能够在面临危机时更简单、更高效得作出更好的选择,这也是我在看完 Earthquake Survival 101 全文后的一个下意识的考虑,但是这个问题有答案吗?,答案又是什么呢?。
经过片刻的思考,我想我找到答案了,但是具有讽刺意味的是,寻找答案的过程和答案本身相对于寻找诉说答案的方式和诉说答案的过程,却又显得那么的微不足道:D 答案就是:Bertrand Meyer 的Open/Closed 原则。Open/Closed 原则是Bertrand Meyer 在其的鸿篇巨制Object-Oriented Software Construction 中隐含的一个理论,较为准确的说就是:The methods, modules, classes should be open for extension and closed for modification;换句话说就是:我们必须尽可能的在不改变现有软件系统的前题下,以通过扩展软件系统的处理能力的方式来设计软件系统。但是,如 何将Open/Closed 原则应用于地震求生的空间选择问题呢?让我们先来回顾下 Earthquake Survival 101 第一幅图所介绍的场景,并且思考:为什么躲在床与床边沙发的空档处会比直接躲在床底下具有更高的安全性呢?对于上述问题,尝试性地分析:虽然躲在床底下会 在一定程度上封闭(保护)你的身体,但是同时也封闭(阻碍)了你被及时救出的可能;而躲在床与床边沙发的空档处,相应的由于你身体的横向高度同时低于床和 床边沙发的高度,因此你的身体在一定程度上也是被封闭(保护)的,并且同时也开放(增进)了你被及时救出的可能。至此,将Open/Closed原则应用 于地震求生的空间选择问题的答案就是:选择对救援是开放的,并且对身体伤害是封闭的空间。
The end: Open for life surviving and closed for body's modification.
5/14/2008
Google Reader 之 瞒天过海
Google Reader是一个很棒的RSS阅读器,这点毋庸置疑。在此,当然我不会那么无聊地告诉你:Google Reader很棒,赶快改变你现在低效的在线阅读习惯,扔掉蹩脚的其它RSS阅读器...!
我只想告诉你:如果你想要,Google Reader当然不会不给你。如果你不想要,Google Reader当然更不会说:I want u!
你只需要做一件简单的事情:在访问Google Reader时将默认的http://改成https:// 不要问我:Why?,我唯一能说的是,Google Reader为你处理了一切,当然,前提是:你想要 !
Note: There is a whitespace between the last two symbols that on the above sentence.
2/06/2008
王立群, 提他作甚!
昨晚,看到王立群Blog有篇题为<答出版人>的新文章,总觉得不对味道,遂写了评论,评论文字如下:
王先生是有才未有情, 读史若无才情,总是干瘪。
<史记>里刘邦和项羽分别有两句话,而这两句话是解读刘项宿命的钥匙,王先生在<百家讲坛>和Blog里却都只字未提,可惜可惜!
今晚,却发现该评论文字踪影全无,评论文字不妥是一码事,删除评论文字是另一码事,既然如此何必开博!以前也看过王先生在<百家讲坛>的讲演,觉得王先生的话语用来哄哄孩子尚可,但用来当学问使就有些说不过去了。我本不写什么评论,无奈看到'答出版人'中的文字,
'<史记>130篇,有112篇写人物,但是,司马迁真正倾注了他的巨大感情来写的人物并不多,换句话说,真正写得非常成功的人物并不多,项羽是其中的一位,而且是写得非常成功的一位人物...','在数十年的教书生涯中,我讲了几十遍《项羽本纪》,很有些个人体会...'
我不知道太史公父子用其一生的心血写就的<史记>在王先生这里怎么就成了快餐,因此无论如何我得说点什么了,遂有了上面的评论文字。鲁迅先生的'史家之绝唱,无韵之离骚'对<史记>的评论非常公允和到位,我也从未看到过鲁迅先生对<史记>有过诸如'很有些个人体会'的文字(注意其中的'很'字,这是个非常传神的汉字 ^_^ );另外,王先生以'政治上的幼稚'来归结项羽政治上失败的根本原因,这种论调呈现给人的只有厌恶感和一具具的骷髅。如果我们不能还原原本就鲜活的历史,又怎能让我们正在创造的历史鲜活呢!虽然这只是一种希望,一个民族的希望,数千年历史的希望。当然有希望就要尝试,我就<答出版人>的评论文字被删除了,这是目前的结果。
评论文字中提到的'解读刘项宿命的钥匙'的两句话发生的场景,同为刘项在见到始皇帝后的第一时间说的,虽然地点、时点不同。刘的话是'大丈夫当如是',项的话是'彼可取而代之',这两句话把刘项二人的性格差异说的再明白不过,个人认为这也是导致项羽政治上失败的根本原因,在此不复多言。(推荐参考书籍: 弗洛伊德的<摩西与一神教>和吕思勉的<秦汉史>)
王先生如此这般地演讲,如此这般地开博,以及如此这般地删贴,总而言之: 提他作甚!
1/15/2008
有本好书: <Code Reading>
2005年就拿到了这本<Code Reading>,当时也没怎么太在意,后来到Ubuntu 6.06 Dapper Drake的发布,Open Source和GNU Linux对我那不加怜悯的诱惑力最终促使将其与<The Art of Unix Programming>和<The C Programming Language V2>并列于床头。如果你以Programming作为面包和黄油,并为之感到快乐,我想你应该好好研读一下;如果分号之前的假设不成立的话,很抱歉,你可以就此打住了,因为<Code Reading>和本文对你来说都没有意义。此书曾获第14届Technical效能大奖,而且她有个特性就是只有在你真的需要时才越显其价值,抱着奇文共赏,抛砖引玉的想法,但愿兄弟们能感兴趣。
Diomidis D. Spinellis, Associate Professor in the Department of Management Science and Technology of the Athens University of Economics and Business, and director of the Information Systems Technology Laboratory (ISTLab) and the lab's Software Engineering and Security (SENSE) group.
上述的简介文字是摘自<Code Reading>作者Diomidis D. Spinellis的个人主页,由于我对雅典的大学不甚了了,因此也就不能就此段如此简洁的自我介绍中发现什么特别的然而可能却是某些人非常渴望的东西:-( ,但至少从他的助理教授和实验室主管的头衔可以看出其具有理论和实践的双重背景,当然如果他是国内的教授我想我应该不会做此种假设的。另外,有兴趣刨根的朋友可以Diomidis D. Spinellis home page逛逛。
<Code Reading>主要是以NetBSD操作系统和C语言对几乎整个软件开发过程的所有方面进行了解析(Sorry, 这个词远不能达意,但我也只能如此了,我想不到其它的词能贴切得表达作者所作的所有伟大工作了),其中所有的代码实例都是取材于真实世界的真实代码,甚至真实得令人感到可怕。如果将<Code Reading>和<Code Complete>做一个简单的比较,也许是件有趣的事情,二者都讲心法,也都适合以Programming作为面包和黄油,并为此感到快乐的Programmer;然而<Code Complete>同时也非常契合那些整日BS的国内软件工程*爱好者*愚蠢和幼稚的理解力与想法;在这点上<Code Reading>完全不同,她不仅是心法,而且所有招式均来自于真实的Fighting Code,而其招式几乎乃天下武功之总汇,以<九阴真经>称之不为过也!幸运地拥有愚蠢的、幼稚的理解力与想法的家伙是绝对不会喜欢这本书的,因为这本书可能会令其丧失可以寻欢作乐的大好时光并对其与生俱来的信仰产生可怕的打击。
<Code Quality>是Diomidis D. Spinellis的另一本力作,可以称作<Code Reading>的姐妹篇,由Addison Wesley于2006年出版;还记得我曾说过以<九阴真经>称<Code Reading>,那么<Code Quality>又是什么呢?你应该明白了吧:-)。不过我不是一个幸运的人,<Code Quality>至今还没拿到,因此非常希望有幸看过此书的朋友能不吝与大家分享一下。
本文最初是发表在CSDN Blog上,迁移到此,并作了一些小的修改,包括文章标题;现在标题中'有本好书'是取自星爷<鹿鼎记>之'有间客栈'之意。
This post is migrated from <Holy Joe's csdn blog at 4/15/2007>.
12/24/2007
程序员版<东邪西毒>
1. 每个programer都会经过这个阶段,见到一个program,就想知道program后面是什么。我很想告诉他,可能debug到program后面,你会发现没什么特别。回望之下,可能会觉得这一边更好。但我知道他不会听,以他的性格,自己不debug过又怎会甘心?
2. 去一个没去过的地方,希望可以闯出一个名堂,如果你以后在江湖上听到一个从不debug的英雄,那么一定是我。
3. 其实写一个program不是很容易,不过为了生活,很多人都会冒这个险。
4. 我很奇怪为什么会有C#,Anders Hejlsberg说人最大的烦恼就是记性太好。如果什么都可以忘了,以后的每一天都将会是一个新的开始。你说,那多开心。
5. 你知道programming和debugging的区别吗?debug越debugging越暖,program会越programming越寒。
6. 也许太久没有看program了,翌年的春天,我去了那人(Bill.Gates)的公司,我觉得很奇怪,那里根本没有program。
7. 他虽然是一个落泊的programer,但他的生活很有规律,每天都会来这里喝一杯酒,吃两碗饭,到月亮下山的时候他就会走。
8. 今年五黄临太岁,到处都是newbie。有newbie的地方一定有麻烦,有麻烦......,那我就有生意。我叫JoeM,我的职业就是帮助别人解除烦恼。
9. 在我出道的时候,我认识了一个人。因为他喜欢在computer边出没,所以很多年之后,他有个绰号叫Newbie。
This post is migrated from <Holy Joe's csdn blog at 9/28/2005>.11/15/2007
It is upon the Trunk that a gentleman works
首先,我是一个纯血统的汉人,其次也是古典汉学的爱好者。虽然对孔子的经典涉猎不多,但至少比寻常的高鼻深目非我中土人氏耳熟。昨晚在翻阅svn-book时碰到一件怪事,在读到第4章(Branching and Merging)时,眼前忽然一花,似乎略微看到几个汉字,心道:我的OS是英文版的,svn-book也是,怎么可能出现汉字?!因此,不敢大意,遂凝神细读,原来svn-book的作者将孔子的一句经典作为了第4章的眉批了。
原文是以下粗体部分:
"君子务本(It is upon the Trunk that a gentleman works.)" -- Confucius
注意在上句中的Trunk是首字母大写的,Trunk在版本控制系统中是特定术语,可以不负责任地将其译作:主线或主干。而此眉批出自<论语.学而>,原文为:"子曰: 其为人也孝弟,而好犯上者,鲜矣; 不好犯上,而好作乱者,未之有也; 君子务本,本立而道生。孝弟也者,其为人之本欤!" 而此眉批恰如其分、一语双关的点出了第4章的主旨,堪称妙绝。虽然,svn-book中妙语接踵(这在技术文档中罕见),而其它章节却皆无眉批,因此第4章"君子务本"的眉批显得就格外抢眼了,也正因为它处皆无此处独有,方显得作者的手段(注: 不悟者可细品之,细品之后还不悟者,非吾之罪也)。
注: 文中提及'古典汉学'爱好者,而不说当下时髦用语'国学'爱好者,原因大体有二:
1. 所谓'古典汉学',本之于中,放之四海皆准,未闻有'国'者,'国学'一说,盖出自满清之后,为何?!;
2. 不明所以,打着'国学'奉旨乞食的招牌,到处贩卖祖产,真有伤国体也。