曲径 – 翻越长城另一法则

getpic_new.php

前几天的文章《VPN – 长城内外,惟余莽莽》介绍了如何通过自动修改路由表实现 VPN 状态下内外网的路由切换,并在知乎专栏里获得了68个赞,对此我的感受是:赞。

然后就有很多读者询问,Mac 搞定了,我的 iOS 怎么办,Android 怎么办,你这样做让 Windows 怎么想?别着急,都有办法。根据我上篇文章的描述,Windows 和 Android 也可以通过类似方法搞定,但是不越狱的 iOS 则无计可施,上述方式设置起来还是费时费力的。

今天给大家推荐一个更好更智能的服务:曲径,它让你更为优雅的翻越长城。

曲径是一个先进而又易于使用的网站和App加速器,旨在帮助那些生活在中国(比如我们),但仍想在他们漂亮的手机、平板和电脑上用Twitter、Facebook 和 Pandora 服务的人们。

方法:使用 曲径通幽 进行注册,选择合适的套餐,然后根据对应设备的文章指南进行设置,分分钟完成,之后你就会发现,虽然霾还在,但墙没了。

注意:由于 iOS 上的Twitter 采用了SPDY 协议,导致曲径无法在 iOS 进行网络代理,解决方案:https://support.getqujing.com/kb/articles/18

祝大家翻的开心!

VPN – 长城内外,惟余莽莽

题图:GreatWall,来自National Geographic

由于众所周知的原因,VPN 在国内是一个很好的业务服务,据我所知,无数程序员为了访问 Twitter、Facebook 和各种不知名的外国网站,不得不借助 VPN 的力量翻上翻下。

在我春节期间推荐过一次 VPN 服务之后,很多人就反馈,VPN 是好用,挂上之后国外的网站是能访问了,但原来国内正常访问嘻唰唰的网站立刻变得慢吞吞了,怎么破?这是个问题。如果连了 VPN 没做任何设置的话,会导致所有网络都是通过 VPN 访问,缺点有二:

1、VPN 的流量问题,严重的话还可能导致被 VPN 提供商封杀(比如没事就去下载动作片)。

2、嘻唰唰变慢吞吞的问题。

我当时的回复是设置一下路由表即可。估计很多朋友没明白是肿么回事,这事就过去了。

今天小道君在朋友圈碎碎念:「使用 VPN 翻越长城的问题在于,启用 VPN 的时候国内网站速度巨慢,而绝大多数人要同时访问国内和国外的服务,这个时候很纠结啊,就好比一个人一会儿脱裤衩,一会儿再穿上,这能舒服么?」

我看到之后,陷入了深深的思考,这个 VPN 已经上升到了裤衩的高度,问题似乎变得有些严重了,所以我决定今天写点什么……

下面就给大家介绍一下如何通过修改路由的方式,让用户在使用 VPN 作为默认网关时,不用 VPN 访问国内网站,减少 VPN 的网络流量消耗,增加国内网站的访问速度,促进人民群众的安定团结,推动社会的长治久安。

为了简单起见,我只讲步骤不讲原理,并只针对 Mac 用户(Windows 用户请找 WinTalk,谢谢)。

1、自行搭建 VPN 服务器或购买 VPN 提供商的服务。

2、打开系统偏好设置—>网络,增加 VPN 设置,VPN 类型选择PPTP,根据提示设置用户名密码等信息即可。

3、下载 chnroutes.py,相关网址:https://code.google.com/p/chnroutes/downloads/list

4、打开终端进入下载文件的目录,执行:python chnroutes.py -p mac,该目录下会生成两个文件「ip-up」和「ip-down」。

5、把这两个文件复制到 /etc/ppp 下,然后进入该目录执行:sudo chmod a+x ip-up ip-down

6、没有5了,已经全搞定了。

测试一下,在终端执行:netstat -nr,检查路由表的输出信息。连接 VPN,然后再次执行:netstat -nr,你会发现路由表已经发生了变化。这时再去访问国内的网站,你发现他们又变得嘻唰唰了,同时还能访问 Twitter 和 Facebook!

就到这里,晚安。

点击【阅读原文】,阅读其他操作系统和 VPN 类型的解决方案(不用 Mac 也管哈)。

增加另一种更为智能的类 VPN 方式,曲径通幽,感兴趣的可以试试。

从容的生活

长假如流星划破长空,一闪即没,除了留下一些光影,就像什么都没发生过。一上班即千头万绪,另有新书上市,忙的不亦悦乎。说这些就是希望大家不用每天等着我的微信更新,也不用催促,文字这东西,催也没用,有时间有想法,我一定会和大家交流,实际上我已经规划了很多坑,有扯淡有技术,坑坑都在等,不用急,我们唯一的敌人就是时间。

《MacTalk·人生元编程》纸版上市以来销售一路走好,目前已经排到京东计算机品类图书畅销榜榜首。这个成绩让我非常惊讶,没想到咱们程序员也有今天!另外得感谢大家捧场,虽然大部分东西翻翻微信也能看到,但你们的鼓励是我写下去的动力。

京东今天下午已经卖断货了,随即又补了些书,目前该书是预订状态,可以下单,送货会晚几天。签名版已经消耗的差不多了,现在是随机发放。关于签名这东西,不用太纠结。Mac 君人生过半,几近不惑,从目前的迹象丝毫看不出我即将成为一个伟大的程序员、著名作家或中年优秀企业家的趋势,如果将来偶有小成,必是运气使然。所以,签名版就是个念想,没什么用,读书还是得看内容。但凡书中某个片段对你有所帮助,那就是我最大的骄傲。如果有如下反馈,那就再无遗憾:

今天在京东上买了这本书,感慨一下。我是在2012年9月买了mbp,由于自己对 Mac 系统知识的匮乏,所以关注了 Mac 君的微信。Mac君一直在微信里鼓吹 Mac 电脑用于开发才是神器。于是,为了不浪费自己的 mbp,我转行成为了一位码农(我学的是通信类的)。可以说是 Mac 君改变了我的生活轨迹。

今年我们的假期比较长,大部分读者开始上班的那天,我还有四天假期,于是提前回到北京,过了几天从容的生活。

很多人说春节期间的北京人去楼空,车道似乎都变宽了,去任何地方都不堵车,一切都变得那么美好,你开始想去每一个朋友家做客,你想给每一条路、每一座楼重新起一个温暖的名字,你幻想着北京的每天都像春节一样,那么从容……

其实你平时也可以这么从容!

当别人都在早晨8点的地铁上挤肉成饼时,你可以睡个懒觉或早起读读书,等到10点出门街上一样空空荡荡。当所有人堵在晚高峰的时候,你可以提前4点出来,甚至可以去后海溜溜冰,等吃了晚饭后再回家,有灯光和夜色,也从容。

大部分人在讨论生活的时候,基本都是从自己的立场和环境去考虑问题。你每天在地铁里挤的伸出不手看微信,就会以为全北京上班族都是「人进去,相片出来;饼干进去,面粉出来」,「呼吸着别人的呼吸,嘴巴上时而还能飘过她的马尾」。你大过年的微信发红包抢红包玩的不亦乐乎,就会以为全国人民都在玩微信红包。但是,永远存在另一种生活,就像《国土安全》里的 Brody 在走投无路的时候,依然坚信:There’s always another way。

可是,明显有一些人,尽管数量上并不是大多数,在用另外一种状态生活。他们从容,他们优雅。他们善于化解各种压力,安静地去做他们认为应该做的事情,并总是有所成就。他们最终甚至可以达到常人无法想象的境界——不以物喜,不以己悲。

——摘自《把时间当做朋友》

写到这估计已经有朋友压不住邪火拍案而起了:「劳资房租都交不起了,你还在谈神马从容……」。这位朋友请放下板砖立刻从容。每个人都可以选择从容的生活,但可能不是现在,不是现在……

Mac 君年轻的时候上班在三环的马甸桥,住在北五环。为了避免挤公交坐地铁,每天骑自行车上班,春天一头土夏天一头汗冬天一头雪,现在想想绝逼过不了那种生活了。但是当时年轻啊,根本不算个事。几乎没人能生来从容,但是我相信现在选择不同的生活方式会影响我们十年后的生活品质。很多成功人士教导我们,要一步一个脚印,踏踏实实往前走,终能抵达希望的终点。我刚开始几乎信了,走了一阵才发现,这特么就是个恶意的谎言。如果一直这么走下去,终点倒是到了,可惜是人生的终点。

世界上存在两种职业,一种是按时记酬,按件计费的职业,每天进步一点点,工作了40年,就进步了 40*365 点点。还有一种是报酬具有突破性的职业,也就是说,你的工作成果不受时间限制,也不是按件计酬。你可能工作了15年获得的酬劳还不如按时计酬的人工作了五年。但是在第十六个年头,你的工作成果开始十倍或百倍的增长,你的生活不再是线性的,而是非线性的,你有了突破。你突然变得从容了,这可能得益于你前十五年的生活方式……也可能是运气!

后一种职业包括写作、表演、绘画、音乐、创业等等,当然,也包括编程。选择吧,让自己的工作具备突破性。

我现在依然不够从容,不过我幻想自己在奔向从容的路上……哈哈


今日推荐:

1、公众号:懒人在思考,ID:Lazy-Thought

维护者是我的好朋友余弦,也是之前推荐过的书籍《Web 前端黑客技术解密》的作者。余弦是安全领域的顶级专家,对 Web 安全领域有深入的研究。目前正在写一个黑客团队技术和管理的系列,非常有嚼头,推荐关注。

PS,这个人的懒都是装出来的。

2、今天 Mac 君在网易云阅读开了一个帐号,一样的名字,一样的味道,可能有不一样的内容和阅读体验,有使用网易云阅读App的读者,可以关注一下,评论和交流似乎更方便一些。订阅搜索 MacTalk 即可。

点击{阅读原文},访问网易云阅读版的 MacTalk。

纸书的秘密

<br /> 纸书的秘密<br />

纸书的秘密配图 2

今天接到出版社通知,《MacTalk·人生元编程》已经在京东各地区全面上架了,目前的安排是京东首发签名版,有需要的读者可以去京东网站订购,相关链接:

京东:http://item.jd.com/11398297.html

亚马逊:http://www.amazon.cn/dp/B00ID5UV30

当当:http://product.dangdang.com/23417548.html

互动出版:http://product.china-pub.com/3769393

下面就给大家说说,为什么有了电子版还要出这本纸版的元编程,纸版与电子版的主要区别除了纸,还有啥。整个事情的经过是这样的,在一个月黑风高的夜晚……

在这本书付印的最后阶段,本书的责任编辑杨海玲老师找到了我说:书要出版了,你要不要写个前言和读者说两句?我说:来得及吗?杨老师郑重地看着我点了点头。好吧,那就说两句,于是就有了这一篇前言。

我小学四年级之前一直在农村居住,那时候没见过汽车,只见过马车和小推车。搬到城市之后才发现,这世上居然有汽车这种交通工具,那时我的理想是当一名212吉普车的司机。后来见的车多了,觉得司机不够神气,我希望拥有一辆自己的汽车。这个理想在长大后也实现了。但是我从没有想过自己会出版一本书!今天这本书也要出版了,我很欣慰。

现在回想起来,这本书的诞生经历是传奇和值得称道的。我从来没有出版过一本书,曾经有几次心血来潮想写本技术书,结果规划完目录后自己已经疲惫不堪了,看着层峦叠嶂的目录结构,我仿佛走在一个没有出口的迷宫,想到以后的每个日子都要用业余时间去写这些枯燥的技术文字,我仿佛置身凄风苦雨中而茫然若失,所以,写书计划还没开始,就已经结束了。但是大家都知道,胸中有丘壑的人总能找到吐槽的土壤,是金子总会发光。2012年8月微信推出了公众平台,我终于找到了一个写作的契机。

2012年12月,我开始运营自己的微信公众平台“MacTalk By 池建强”,几乎每天一篇,半年内写了100多篇文章。之所以能够坚持下来,我想得益于公众平台的交互性和正向激励,如果每天都有人告诉你,晚上不读完你推送的文章就不睡觉,你也会坚持下去的。慢慢地读者越来越多,很多数字出版界的朋友也加入了这个队伍。突然有一天,他们不再潜伏,而是爬起来告诉我,你的这些文字该收拾收拾出本书了!我原本是不信的,不过,先是多看的朋友这么说,然后是豆瓣,然后是亚马逊,然后我就信了。这种感觉就像是我一个人混迹于敌占区多年,突然冒出了很多自己的同志,拍着我的肩膀说:小同志,你干得不错!我感到无比荣耀,紧紧握住他们的双手,激动的说:可算找到组织了,其实,俺早就想出本书!

于是电子版的《MacTalk·人生元编程》问世了,书中的内容截止在2013年8月底。

电子书上线后获得的赞誉超乎我的想象,在多看平台上线当天就跃居畅销榜第一名,从此一路榜首,整整霸占了一个月之久。随后上架的很多新书都对我这本书发起了猛烈的攻击,最终都如潮水般褪去,它们失败了,包括韩寒推出的《一个》。因为这个原因,程序员老赵时不时调侃我为“超越韩寒的男子”,虽然这句话看起来错误百出、逻辑混乱,完全不像出自一个优秀程序员之口,但我听起来还是若有所思的。

截止到2013年底,多看上的《MacTalk·人生元编程》获得了700多个评分,平均得分9.1,另有230多条读者评论。有些读者说这是他们的第一本电子书,有些读者说一口气读完,酣畅淋漓。我的感受有两点:

  1. 我为电子书事业做出了些许贡献;
  2. 又不是武侠小说,读那么快有必要吗?

事情终于到了峰回路转的时候。电子书虽然风光,但仅限于电子阅读的领域,而且,单纯的电子书是没有ISBN的,想做个图书认证都不行,还不能签售,你总不能卖本书搭个镌刻版 Kindle 吧。这时候另一群关键人物出现了,他们是传统出版界的好朋友。每个人都告诉我,电子阅读确实是未来的方向,你已经考虑了未来的事儿,那现在的事要不要管?只有电子版,你让广大钟情于纸书的群众怎么看?让想要签名版的读者怎么看?……于是我觉得,是时候出一本升级版的《MacTalk·人生元编程》了。最终这个重担落到了程序员的好朋友、人民邮电出版社的杨海玲老师肩上。

和人民邮电出版社的合作是轻松愉快的。我继续写作,除了完善之前的文字之外,还要为这本纸质版再增加十万字。出版社的编辑和美编则开始对于原有的文字进行校对和美术设计。一切都很顺利,除了我偶尔出现写不下去或改不下去的情形。杨老师对我是非常宽容的,遇到这种情况,她就会语重心长地告诉我:对你我心里有底,选题咱已经报去了,选题号也已经批了,情况就是这么个情况,所以您写也得写,不写也得写,还是写吧。于是我的文章顺利地完成了……

剩下的就是杨老师和编辑们的工作了,他们像打磨璞玉一样一点一点地打磨这本书,从文字、内容、印张和色系选择,到最终的版式设计和封面设计,一个细节都不放过。修改顺利的时候他们不会来找我,偶尔找我的时候也是咨询一下我的个人意见,我只要一言不发或若有所思就可以了,因为杨老师他们总能找到最佳的做法。我唯一的任务就是等待,或想点儿别的。

最终的成书就是您手中的这本书,它的封面设计和正文版式都是独一无二的。书封简约大方,干净得一塌糊涂,体现了MacTalk所倡导的纯粹之美。没有腰封,没有邀请业界大牛和土豪在封底写推荐语(年底了,他们都在做新年计划,我就甭给人家添麻烦了)。正文采用图文并茂的方式,页码和标题都精心设计过,如果您获得了良好的阅读体验,那么我们要感谢这本书的美术设计。

书的内容比原来的电子版增加了 Mac 入门和演化史系列、Linux 系列、Vim 插件系列、职场系列、编程与写作等内容,全书共计70多篇文章,划分为六大主题:Mac、程序员与编程、科技与人文、 人物、工具、职场。篇篇独立成文,可拆可合,您可以随时翻阅。Mac 主题的最后部分是130个 Mac 使用技巧,供 Mac 用户参考使用。另外,我根据书中的主题和时间线,重新调整了文章的顺序,更符合读者阅读习惯。

这既不是传统意义上的 Mac 用户手册或技术图书,也不是一本思想文集,而是一个70后程序员,以柔软的笔触,立于 Mac 之上,讲述技术与人文的故事,起于 Mac 而不止 Mac。书中写了 Mac,说了苹果,聊了技术,侃了人生元编程,汇聚了我个人的经历和悲喜。您读完了,有收获就是好事,不用想的太多。如果书里在讲 Mac,那就是苹果公司的 Mac;如果在说Shell,那就是操作系统的Shell,如果在聊程序员,那就是你我身边的程序员。我尽量做到文字简单、内容有趣,因为简单和有趣也是一种力量,希望您读完这本书以后,也能拥有这种力量。

王小波说,“每一本书都应该有趣,对于一些书来说,有趣是它存在的理由;对于另外一些书,有趣是它应该达到的标准”。我希望这本书达到了有趣的标准,同时还讲了一些有用的东西。如果您说没达到,那我下次继续努力。

在写作的过程中,我得到了很多朋友的帮助,包括技术圈和出版界的朋友。其中冯大辉先生在我运营微信平台和写作的过程中给予了诸多支持和推荐,并为此书作序;微信平台“二爷鉴书”的作者邱岳为此书作序并多次推荐;网友“密码有误”为此书作序并进行了部分文字的校对。杨海玲老师在成书的过程中起到了中流砥柱的作用,没有她的催促和辛劳的工作,此书无法出版,在此一并谢过。

特别感谢我的妻子和女儿,写作占用了我大量的业余时间,虽然我很努力地抽出时间去陪伴家人,但在这方面显然是不达标的。没有她们的包容、照顾和期盼,此书无法出版。

最后,我把这本书献给我的父母。我的父母就像千千万万的普通父母一样,永远在远方默默注视着子女的成长。我在他们身边得到了最好的教育和关怀,他们是这个世界上我最敬爱的人!

撰写于 北京,2014年1月8日,晴

日记——程序员的烦恼

OLYMPUS DIGITAL CAMERA

前天(2014年1月7日,阴,据说有人在延庆看到了几片雪花)


我用了一晚上的时间写了三千字,写完后已至凌晨。古人云,白发三千丈,缘愁似个长。写完三千字之后我找到了这种感觉,又读了 N 遍,改了 N 遍,终于沉沉睡去。醒来后再读,发现自己被感动了。这一点充分证实了,Mac 君依然在写作的道路上狂飙突进,以一个二把刀的身份。希望在下个阶段,Mac 君能够从二把刀转变为一个合格的工匠。

这三千字,暂时还不能发。

昨天(2014年1月8日,晴,大风吹)


我开了一天的会,会议从早上9点持续到晚上7点,期间吃了一碗面。参会的每个人似乎都发言了,但我忘了他们说了些什么。我自己也发言了,我也忘记了自己说了些什么。似乎做了很多决定和决策,又似乎什么都没定下来。我很疲惫。晚上回到家想写点什么,打开微信后台看到有个叫麻花的兄弟在吟唱:强哥,发个文章看看吧,火车上睡不着啊。我心想,难道睡不着也要强哥哄吗?多大岁数了都!接着我又打开了用户分析,取消关注的人数又增加了几十个,于是我很伤感。掐指算算,这一年取消关注的读者也有2万了,好在新增人数永远大于取消关注人数,否则后果是严重的,成为负数也是可能的。据说防止取消关注的秘诀就是什么都不写,让你的微信号静静的躺在读者的折叠文件夹里,既不发声,也不回复,也许会躲过一劫。于是我决定这个晚上什么都不写……然后眼前一黑,睡过去了。

今天(2014年1月9日,晴的厉害,气温似乎更低了)


事情似乎都走上了正轨,下午一口气处理完这几天累积的「年关例行事务」,效率还不错,看来从明天开始就可以写点代码并考虑2014年产品规划和实施的事情了。2013年我们的平台产品做了一个重要的 Release,开发环境大部分都迁移到了 Git 和 Maven 上,如果没什么变化的话,2014年我会把重点放到企业移动应用和 UI 模式优化上。要做的工作还很多,不过我不急,只要有人、时间和空间,事情总是可以做成的。

前几天送书活动公开了我的 icloud 邮箱,最近收到了不少读者来信,其中大部分都属于「程序员的烦恼」,今天有点时间,做个答读者问吧。

1、工作中提前完成了自己的任务,应该学习提升还是去帮助他人?
帮助别人完成任务也是任务。如果你提前完成了自己的工作,最好的做法是去问你的上级接下来的任务是什么。如果暂时没有其他任务也没有兄弟找你帮忙解决问题,那么就去看书学习吧。提升自己是利人利己的事。

另外,不要忘了好好利用剩余的8小时。

2、应届毕业生投简历到 BAT(百度阿里腾讯)石沉大海怎么破?
那就不要投嘛。据我了解,BAT 对应届毕业生的要求还是很高的,候选人太多,自然可以好好挑挑。石沉大海并不意味着你不够优秀,只是你现在不够优秀而已。放低身段,先去一些不知名的公司锤炼一下,如果能够做到独当一面,你的眼光和技能、经验都会不一样的,到时候再「说英雄谁是英雄」。

3、我现在从事 Android 开发,但我看好 iOS,我应该放弃 Android 转投 iOS 的怀抱吗?
如果你在 Android 的怀抱里获得的是冰冷,在 iOS 那也未必能找到温暖。Android-Java,iOS-Objective-C,虽然我更偏爱 iOS,但是这两个平台和技术,都是好技术,要不然怎么能分庭抗礼这么多年呢?如果你觉得做 Android 悲催,其实是你自己悲催,任何一门技术做到顶尖都是需要坚持和磨练的。

另外,为神马不双飞呢?这又不是结婚,亲吻 Android 的同时,不妨碍你拉起 iOS 的小手啊。少刷微博少看电视,就行了。

4、操作系统、算法、数据结构、设计模式到底该不该学,工作中根本用不到嘛!
最近搞「自媒体」的人似乎功利心大盛,每个人都觉得自己写了这么多字,我容易吗?也该有回报了吧?也该套现了吧?所以好多事情就有些变样。还好我不是自媒体,不用担心这个。

其实学习也是一样,不要那么功利。如果每学一门知识都想着怎么换成银元,第一是心累,第二是学成二把刀的几率大大增加。做为一个程序员,操作系统、算法、数据结构、设计模式等基础知识当然应该学,这是程序员的尊严。至于实际工作中是否能用的上,那是另一回事,用上了就是你的运气,用不上也是很自然的,我小时候还学了一大堆无线电知识呢,最终也没成为无线电专家啊。有人说很多技术不用就会忘记了,那就用呗,做开源项目,写文章,这都是用。退一步就算忘了也没什么,再看一遍就是了。

多少美好的事物,都他妈的毁在了功利二字上!


二把刀定理:写作永远是自己冷静让别人激动的事情,被自己的作品感动的或涕泪涟涟或击节赞叹的货,一定是个二把刀,证明完毕。

池建强:我的人生元编程(图灵访谈)

themeaningoflife

2013年11月份我在图灵办公室接受了一次访谈,访谈的内容是我个人成长过程中经历的一些人和事,包括我的一些决定和思考。那次访谈聊了有四个多小时,访谈录音整理出来后超过了一万字。初稿发给我之后,我又做了一些微调,对我没说清楚的和疏忽的地方进行了查漏补缺。文章基本上是口语化的,保持了采访稿的结构和原貌。

整篇文章纳入了图灵社区电子杂志《码农》第九期的人物专题,也发表在了图灵社区上

因为访谈主题和 MacTalk 相关,所以在文章正式发表一个月后,也收入 macshuo.com 网站,是为记。

Yes, I can


“整个车间只有一台电脑,每天吃完饭,我就回到车间,把公司的硬盘拆下来,把我自己的装上。每天我都在那里,开一盏灯,拿一本书。”

你是怎么开始学计算机的?

以前看过一本叫《异类》的书,书里说大部分计算机大师都出生在20世纪50年代,比如史蒂夫•乔布斯,史蒂夫•沃兹,比尔•盖茨,保罗•艾伦,比尔•乔伊等等,这帮牛人开始设计个人电脑、操作系统和编程语言的时候是70年代,那时我刚刚出生。

到了80年代,苹果公司已经上市了,但大部分中国人对电脑还没什么概念。做为一个生于农村长于乡镇的土人,我小时候根本没见过电脑,所以开始编程的时间很晚,这一点和很多少年天才、编程神童的经历有很大差距,我真正接触编程是从大学开始的。我的专业是机械电子工程,这个专业里有几门计算机语言的课,包括C、Fortran等,数据库用过 FoxBase,电脑是386/486,黑白的脸,没有奔腾的心,我只记得给老师写过一些类似图书馆书籍管理的系统,但细节完全不记得了。

高中时我学习成绩很不错,但报志愿没报好,一本和二本都没有录取,导致心是高等学府的心,身是二流院校的人,所以就去了河北科技大学,哈哈。在大学里我很愤青,觉得这个学校很一般,没有太大学习热情,但我对计算机技术很感兴趣,可能和我小时候喜欢装配各种收音机有点关系。我经常和志同道合的小伙伴们一起交流和上机,当时机房使用时间也不是很充裕,还要交钱,所以我们会在上机之前做很多功课,把程序编好写在纸上,这样上机后就能直接录入程序并进行调试和跟踪了。还有一个乐趣就是我们通过各种程序和工具优化软盘空间和内存大小,以期那时的计算机能够运行我们喜欢的程序,我记得最常玩的一个黑白游戏叫做战斧,主角拿着一把斧子打怪,乐此不疲。

总体来说,我在大学学到的计算机知识并不系统,不像现在的很多大学生,在大学里学到的东西已经很扎实了。

那你真正开始学习其实是在工作后?

我是在工作以后才真正开始接触编程工作的。我毕业之后很想去北京,后来去了河北汇能亚奥集团,这家公司在北京的郊区顺义的郊区林河工业区有一个厂房,工厂和研发中心都在那边,于是我就来北京了,也算曲线救国。公司的主要产品是直流电源,公司里有一个实验室,实验室的办公条件很好,每个人配备一台电脑,还带沙发转椅,但是只有具备名校背景或者家庭背景的人才能去实验室,于是我们这几个不太招人待见的家伙就直接被派到车间了。我们去了之后第一件事就是擦散热器,到现在我已经不知道为什么要擦散热器了,只记得那上面好多油……散热器擦了三个月,然后开始“插件”,每个人一个工位,把分配好的二极管、三极管、电容等插到电路板上。后来我们又去搞测试,照着图纸修理返场的电路板和直流电源。

整个车间只有一台电脑,平常你是用不上的,只有晚上机器空闲。于是我去中关村买了一块硬盘,每天吃完饭,别人回宿舍看电视、聊天的时候,我就回到车间,把公司的硬盘拆下来,把我自己的装上。我还记得当时装的是一个盗版的Windows 98系统。每天我都在那里,开一盏灯,拿一本书,学一些互联网方面的编程知识。当时已经出了HTML4,可以通过JavaScript在网页上做一些动态的效果。一边学习新东西,一边把自己以前学的语言温习了一遍。大概学了半年多的时间,在99年年底,我离开了那家工厂。

你是怎么去面试的?

我把我自己写的程序都存在一张软盘里,每次去面试的时候就拿出来给人家演示。当时互联网第一波浪潮已经过来了,我做了很多动态的网页设计。很多人觉得我做的东西很新鲜,可能他们都在忙着做静态网站,没时间学这些东西。我还记得当时做了一个泰坦尼克主题的网站,用了一些电影里面的元素,大海、沉船、岩石等等,演示的时候会播放主题歌,画面的元素有各种互动效果。他们看了之后就不问我问题了,说:那你就来上班吧。于是我就去了洪恩。

快乐并痛的时代


“我和池宇峰说,我先出去看看,等你们开始做游戏了,你再叫我,我马上就回来。”

你刚去洪恩时做什么?

在洪恩的三年半时间,是我职业生涯中最快乐的一段时光。我刚去的时候,洪恩正在做洪恩在线和论坛。洪恩的创始人是池宇峰,因为我俩都姓池,这个姓又很少见,所以大家都以为我是他的亲戚,对我都挺好,哈哈。

当时我的头儿对我说,你有两条路可以选,一个是去做现在我们所说的UI设计师,走前端路线,也可以做后端、写服务器端的程序。我想了想,我还是写后台吧,前端不都是小姑娘做的么?

当时我刚从车间里出来,忽然来到这么一个地方,年轻、开放、热情,最重要的是每个人有一台电脑,这简直让我幸福到眩晕。我的同事都是年轻人,有很多刚毕业的清华北大的学生。池宇峰本人也是清华毕业的,后来创办了洪恩软件。池宇峰的管理方式很有特点,他总不在办公室呆着,四处转悠,看谁干活就想跟谁聊两句。结果无论白天黑夜,他每次过来的时候我都在闷头编程,面对花花绿绿的高亮代码,噼噼啪啪的敲击键盘。这时他就会和我聊一聊项目进度,问问我的想法,有时他也会讲讲公司的发展思路。过了一两个月之后,我就调工资了,结果2000年一年我就调了三次工资。老板都喜欢疯狂工作的员工啊!

洪恩在五道口的东升乡租了一栋三层楼,一共有一二百人的规模。当时很多同事晚上都住在公司,上午11点,大家穿着拖鞋开始上班,浏览下新闻就去吃午饭了,吃完饭偶尔我们还去清华踢场球。下午两点多,我们开始正式的工作,一直编程到天色变暗,吃完晚饭后,大家继续编程,通常是凌晨12点的时候开始更新网站,发布程序。之后想学习的继续学习,想编程的继续编程,有时候我们还会打场三角洲游戏,一般在凌晨四五点钟才回宿舍休息。池宇峰和我们一样都是七零后,所以整个公司的氛围就像学校一样。公司牛人很多,可以从他们身上学到很多东西,那个阶段我的成长也是最快的。

这样轻松的环境维持了多长时间?

这种的情况大概持续了一年左右。当时互联网的氛围有点像现在,很多公司都不挣钱,有人给投钱就花呗。洪恩在线是不挣钱的,主要是靠卖教育软件挣钱。我们那里真正挣钱的人工作都很辛苦,我们这些搞互联网的反而显得很悠闲。后来互联网泡沫终于来了,大家觉得钱不能再这么个烧法了,再不改变整个公司的现金流都可能出问题。于是洪恩在线只留了很少的人来运营,把以前从别的部门抽调出来的人还回去了。当时洪恩聚集了大量的技术人才,但是不知道让这些人干什么,搁到现在这些技术人员可能都会被裁掉吧。但是当时池宇峰觉得技术人员都是宝,琢磨出一个事儿来也得把他们留住。

为了解决这个问题,公司决定新启动一个项目,叫做数字校园,准备使用最新的技术Java实现,新的旅程又开始了。

数字校园当时的定位是基于BS架构的校园信息化平台,大部分功能使用浏览器操作,少数类似排课引擎要安装客户端。主要技术架构J2EE,支持Windows、Linux、Unix,数据库采用PostgreSQL,HTTP Server是IIS+Tomcat或Apache+Tomcat,主要语言是java和jsp,其他用到的语言包括汇编、C、VC、Shell等,当然前端的HTML和JS是少不了的。为了在浏览器上模拟客户端程序的效果,我们使用xml数据岛的技术实现浏览器异步加载,后来类似的技术有个更时髦的名称叫AJAX。为了实现智能排课和分班,我们走访了很多学校,编写排课和分班算法,分别实现了在线版和离线版……

虽然产品优秀,理念超前,但曲高和寡,而且洪恩本身缺乏企业级产品的运营和销售经验,学校的信息化需求也没那么迫切,现在看来,好像很多事都没踩到点上。系统虽然也销售出去不少,但是只能达到收支平衡的程度。当初做这个系统的时候,公司高层和我们自己对这个产品期待都很高,大家坐在一起数全中国的学校,想象着成为土豪的样子。一年后再坐在一起的时候,我们都无语了。后来这个产品被搁置起来,留下几个人做维护,其他人又被派走了。

这次项目失败之后你想离开吗?

当时很多人就想,怎么又失败了?于是很多人选择离开。我当时已经是一个技术管理者了,自己写代码,还要带团队,团队里还有清华北大的硕士、博士。虽然我是个Leader,但是我的技术并不是最突出的,很多人都比我强。我当时的老板觉得我在协调和管理方面有一些天赋,不像很多技术牛人那样比较容易情绪化。池宇峰有一天来找我,说:“你呀,你就不是做技术的料。做技术的人都是大学毕业的时候就已经非常強了,你应该走技术管理的路线。”我当时听了非常伤感,不过我表示还是挺想做技术的。池宇峰这个人很大气,他说既然你喜欢做技术,就把你放到了技术部吧。

在技术部做了一段时间的内部项目后,有一天池宇峰把我们叫在一起,说:“我们做英语培训吧。当年我做开天辟地学电脑的时候就有这种感觉,这次培训一定能成!”于是我们就想,怎么做培训呢?于是我们又做了一套软件,这次是用.Net做的。这套系统不仅可以记录学员的信息、学习进度、学习课程,还可以通过视频进行对话和练习,讲师会对学员的文字作业和视频作业进行点评,这是我们当时想到的一个卖点。我们开了第一期学习班,效果很好。但是谁也没想到,这个时候,非典忽然来了。我们当时正忙着招生呢,然后,就没有然后了。我们也不知道非典什么时候能结束,所以工作都停下了。老板也崩溃了,找我说:“你看,你确实不适合做技术。”于是我也崩溃了。

看来池宇峰已经认准你不适合做技术了,然后你被派到哪里了?

池宇峰又派我去管儿童事业部。那里主要是给儿童做电子产品,做书,设计版面什么的。里面需要技术的东西不多,有一大半是女生。儿童事业部的具体业务还需要懂儿童心理学,我不太懂,就找了两本书看看。

那里的同事有很多手工工作,比如录入数据、统计分析、文件分类等等,我说这些工作你们都不用做了,专心做产品设计,我来做!于是我写了几个程序让这些工作都自动化了。之后我还把整个事业部的工作流程梳理了一下,加强了项目组内的交流和进度跟踪。有一次一位女生负责的产品出了点问题,我要求她们组进行修改,结果这位女生竟然哭了。当时我想,这是什么情况?

其实我在那里工作是很开心的,但是做不了技术,技术这东西总不做就会忘掉。所以我决定离开了。

池宇峰有没有挽留你?

当时池宇峰和我说,你别走,咱们就快开始做游戏了。我说什么时候啊?他说,不一定。但是出于个人发展的考虑,我还是离开了。

后来池宇峰创办了完美时空,并于2007年在纳斯达克上市。完美时空的网游技术依靠的就是当时祖龙工作室和洪恩在线的技术班底,那帮家伙们现在都可以退休了。他们当年虽然没有为公司带来利润,但是池宇峰一直把他们作为技术储备放在公司,想做点什么就做点什么。等到完美时空出来,他们就开始大显身手了。池宇峰愿意用自己的资源去试错,并在试错中成长,这点和其他很多人不一样,多数人喜欢拿别人的钱试错,哈哈。他之所以能成事,和这点有很大关系。

那你后悔离开洪恩吗?

我当时不后悔,现在挺后悔,开个玩笑(笑)。现在想想,那时把儿童事业部做起来,未来也是不错的,只是和现在的路子不一样,或者也可能加入完美时空去做游戏。当时池宇峰跟我谈了很长时间,但是技术上确实已经没什么可做的了。我和他说,我先出去看看,等你们开始做游戏了,你再叫我,我马上就回来。

走走学学


“我去的时候技术部就只有三个人了,还都要离职。”

离开洪恩后你去哪了?

当时是2003年,百度那时候还很土,大家都用Google,用友软件如日中天。于是我给用友软件总部投了一份简历,接着就去面试了。我带着一台笔记本电脑演示了我做过的东西,面试的人看了看之后,简单问了问,我就被录用了。插一句,我是先投的简历,找到工作后才辞的职,穷人家的孩子都这样。然后我就进入了现在这家公司,当时叫用友软件工程公司,主要是面向国际市场和国内大企业提供技术产品和服务。我进入了技术部,同时期来的有 7个人,史称七剑客,主要研发企业软件开发平台。当时我们用的技术也不是很成熟,而且产品是给程序员用的。事实证明给程序员做东西结果是非常残酷的,一年后,我们这7个人走了5个,我是第6个走的。

你文章中说的名字和火箭有关的外企是不是该出现了?

是的,离开之后我就去了那家名字和火箭有关的外企,这个火箭公司开发了一套分布式的软件平台,名字不能提,因为老外的版权意识太强。我曾经的一位同事都移民到加拿大去了,只是在自己的开源项目引用了一点平台文档,结果被一纸法院传票追杀到异国他乡,而且直接导致这个同事的上司被辞退。

这家公司给我留下的财富之一就是见识了什么是真正的分布式开发平台。他们的平台技术架构很强悍,是由很多年纪一大把的老程序员(据说是制定CORBA标准的牛人)开发的,代码简洁优雅,我一边像读诗一样阅读他们的代码,一边感慨此生写不出如此优美的程序!他们底层用C,中间层用Python,上层用Java,还构造了自己的通讯协议和运行在各个节点的服务,形成了一套完整的架构体系。在使用这套平台的过程中,我学到了很多从书里很难学到的东西,当然我也为他们修复了很多bug。

在和这些资深老外程序员交流的过程中,我还学会了如何提问。如果你想提交一个bug,那你应该说明这些内容:什么情况下会出现这个bug,为了解决这个bug,你做了什么尝试,你觉得引发这个bug的原因可能是什么。然后还要把所有的log,crash,dump之类的文件都给他。详情可以参看“如何提问”这篇文章。很多人提问的习惯不太好,比如有人说:内存溢出了,怎么办?上下文都没有,我怎么知道怎么办!

在这家公司我还知道了,国外公司的老程序员远远多于国内,很多程序员都四五十岁了,有的级别和VP一样,但依然在编程。他们只是不需要去经营公司而已,他们做架构、编程、咨询、写书,每样都做得非常棒。

中间你在洪恩时的小伙伴有没有召唤你?

在这期间有一天池宇峰给我打电话,说,我们开始做游戏了,你回来吧。我当时那个团队里的很多人都回去了,但是我对网游的前景看不清,另外对做游戏这件事已经没有太大的兴趣了,所以委婉的拒绝了池宇峰的邀请。之后他们有一段时间确实很艰苦,打拼了几年,我当时还开车找这些小伙伴吃饭,他们骑的是破自行车。后来人家终于熬出来了,就开着奥迪A6来找我了,还是2.8L的(笑)。

冷静的思考一下,一家公司成功了,真正重要的是你在这家公司起到了多大的作用,如果你没去,人家成功了,那你还去干嘛呢?

之后你怎么又回到了用友的?

在我离开用友软件工程两年后,有一天公司的业务负责人找我,说第一任技术主管走了,第二任也走了,想让我回去。我想,洪恩没回去,要不这个就回去吧。外企也见识过了,确实没有太大意思,于是就回去了。现在这家公司已经改名叫瑞友科技了。

刚回去的时候还是挺艰难的。我去的平台部就只有三个人了,还都要离职。我开始重建团队,不仅要自己写程序,还要招人,还要帮助项目组解决问题。当时的所有项目都需要用我们研发的软件开发平台,压力特别大。以前平台部的人过于技术化,和其他项目组的关系搞得特别僵。技术人员的想法就是:我做出这个开发平台,你们爱用不用,不用拉倒。结果项目组就会投诉,恶性循环。我刚去的时候,很多问题没人解决,比如一个给客户做的实时业务系统,有个问题就是每天凌晨都要手动重启一下,否则系统第二天就可能宕机,这个问题困扰了项目好几个月,我去看了一下,其实问题很简单,原来是一个线程池的使用出现了问题,稍稍修改一下问题就解决了。

慢慢地,我把这些问题和关系都捋顺了,后来就开始做自己一直想做的平台产品,再后来公司成立了 IT 应用研究院,我开始负责公司的整体技术发展,目前我们做的产品在研究院的网站上都有介绍。

我从2006年回到瑞友科技,一直工作到现在,也算是公司的元老了,我主导研发的产品GAP平台服务了成百上千的企业客户,我的很多代码还跑在客户的服务器上,这是我比较开心的事情。当然,期间还有很多好玩的事情,以后我再和大家说吧。

成为Mac君


“大家提的问题多是Mac相关的,但也有问职业发展阶段的,问如何选择的,还有,问姻缘的。”

怎么开始使用Mac的?

Mac我用的不算晚也不算早,大概是2008年开始的。之前还是Windows和 Linux用的比较多。我在洪恩和那家外企的时候大部分时间是在Unix和Linux下工作,所以对Linux环境、Shell、Vim这些都比较熟。我在08年的时候买了一台MacBook Pro,开始了我的Mac生涯。我个人使用电脑对软件环境的要求比较高,就像普通人开车就是开车,玩车的都喜欢把跑车改造成战斗机。Mac就是电脑里的跑车,还特别容易改成战斗机,尤其适合程序员使用,我自己越用越顺手,就经常和我们的开发人员说,这个东西特别好用,很多程序员需要的环境和工具,Mac都是默认配置好的,包括编程语言环境、构建工具,版本控制工具,命令行工具、Shell 脚本等等,应有尽有。

你不光自己使用Mac,也影响了其他人?

是的,我影响了一些人,比如原来我们研究院只有我一个人用,现在有一半人在用Mac了。我在博客上写了一些关于Mac的文章,有一篇文章还挺有影响力的,叫《开始使用Mac》,在网上很容易搜索到,阅读量比较大。我们那原来有一个同事很喜欢Mac和iOS 移动开发,他说:我想学Objective-C,做移动 App。我们当时在做企业的移动互联平台,就让他去学iOS开发了,给他安排的工作内容也相对灵活。结果学完之后,走袅!我当时还想帮他推荐工作来着,结果他自己找了几家,问我的意见。我一看其中有丁香园,就说,这个丁香园的技术负责人冯大辉不错,你去那吧。现在他是丁香园iOS开发组的组长,所以冯大辉现在看到我还会感谢我一下,哈哈。

再后来我就开了微信公众平台。微信公众平台刚推出的时候我还不知道这是个什么东西,后来看了冯大辉开的“小道消息”,大概知道怎么玩了,于是申请了一个公众帐号,起名“Mac技巧”,ID 是sagacity-mac。Sagacity在英文里是睿智的意思,取自我女儿的一个字。后来因为审核认证的原因,Mac技巧改成了现在的“MacTalk By 池建强”。

你在写微信这一年中文章风格有什么变化?

我在刚开始写文章的时候花的时间并不多,当时主要推送一些Mac使用技巧。Windows的主要理念就是GUI,所以命令行几十年如一日的没有改变,也没什么使用技巧,无非是用鼠标点来点去,但是Mac缘自Unix,除了GUI,还提供大量的命令行工具和快捷键,把命令行、工具、快捷键和一些实用技巧用好了,效率就会有很大提高。所以前期主要是推送这些内容。

但是仅仅推送技术内容太干了,于是我就在文章前面加一些自己的思考,或讲个小故事,没想到这些内容越写越多,几十年来积累的东西似乎找到了一个出口,以前看过的书、学过的技术、经历过的人和事,全部涌上心头,然后再到手指、到键盘、到微信,一发不可收拾,到现在已经写了200多篇相对完整的文章了。至于纯粹的 Mac 技巧,写到四月份的时候,我感觉能写的差不多都写完了,后来这些Mac技巧整理成了相对完整的130项,收录到了《MacTalk•人生元编程》中。

我从去年12月15号开始写,写到现在文章风格有了很大的变化,毕竟每个人都在成长,前期写的东西比较零碎而无章法,后面的自己对文字有了要求,相对好了一些。

有的读者说你写文章很有毅力,能“池之以恒”,坚持写文章对你有什么影响?

写作占据了我很多时间,本来就少的娱乐时间现在更少了,你得把看电视、刷微博的时间都用来写东西。但是我会保证陪伴家人和正常的社交和运动。带来的好处就是我的写作能力提升了。

我现在会有意识读一些关于写作的书,而且看文学类作品的角度也不一样了,我会更关注文章的结构、文法、用词和节奏。写作这个东西是需要天赋的,也是可以练习的。如果你有天赋,加上后天的努力,就有可能变成一个大师级的人物。但是如果你天赋一般怎么办,也不用太伤心,通过练习也可以成为一个不错的工匠。文章有韵律,长短句该怎么结合,主句附句怎么搭配,文章结构怎么组织,怎么把文章写得有趣,都是很有说法的。(你未来会写技术书吗?)有计划,但不是现在。写书还是挺耽误时间的,关键是写纯技术书也不能解决生计问题啊。(技术书小众,解决不了生计。)所以我现在不是在学习写作嘛,准备将来出本畅销书,哈哈。

你能这样坚持下来,是不是有什么信念?

其实整个技术圈里个人坚持写微信没几个了,这需要付出很大的代价,不是所有人都能坚持下来的。开始的时候我每天都写,但是后来发现这太残酷了,就改为每周更新3-4篇,男人要对自己好一点(笑)。

有一些东西不写出来,就会从你的生活中消失,因为记忆是完全靠不住的,这是原因之一。另外,有时候你在写东西的过程中,还会有一些新的思想和内容冒出来,而这些东西在你动笔之前是不存在的,这种感觉特别好。我在写文章的时候很喜欢把一些有趣和幽默的话题和叙事技巧融合到一起,这样读起来会比较轻松,于轻松处响惊雷,大概是这种效果。很多人说看我的文章特别乐,我就很高兴。和编程一样,写文章是很有意思的事。

现在的正向激励很多,所以写不下去也得写。这就和做技术是一样的,逼着你向前走。我现在虽然要做一些管理和协调工作,但是技术也不能落下,你还得帮程序员解决问题呢,还得评估别人的工作成果呢。就算你以前做过Perl, Java, Python, C#等等很多技术,但是有一天你忽然发现,大家开始用Objective-C了。这些语言对于我和刚开始工作的程序员来说都是一门新技术,虽然我在整体结构上的把握可能更好些,但在编程技巧的掌握上并不会比一个新人快多少,所以你也需要不停的学习。

现在想想,我应该听池宇峰的(笑)。程序员很辛苦,也很快乐,技术更新换代太快,但是总有新东西也是件乐事。对于个人来说其实是一个选择,就看你愿不愿意花时间来做这件事。

你的写作主题是怎么决定的?

刚开始的时候我每天都更新,因为有积累,每天都有话可说。但是当你写到几百篇的时候,就会发现以前的积累不够用了,仿佛被掏空了。你不可能总讲技术,而且就算讲技术也要讲的有趣才行。我现在写东西就要经常从每天接触的事物中获得灵感,想到了新的主题就会把它们记在todo list里,将来要是没的写了,还可以写这些。

我的文章的大概分成两个类别,一类是规划类的,一类是非规划类的。比如我看了某个电影,突然想到了某个主题,把它写下来,这就是非规划类的。规划类的就是我写的一些系列文章,比如“Macintosh演化史”、“我和Mac”,职场系列,技术成长的系列等,还有一个演讲的系列,最后这个还没舍得动(笑),未来还规划了一个CTO练级之路,这个写起来应该很有意思。

恭喜你的书《人生元编程》大卖,你书的读者都是什么人,大多数都是你微信的读者吗?

很多人和我说,你看韩寒的书在多看的电子书平台上卖的还没你好。但真实的情况是人家走的是纸书渠道,没的比。大家总以为电子书那么便宜,一定会卖个十几万几十万本,其实现阶段电子书的受众还是很小的,只是外表看起来很美好,事实远不如大家的想象的那样。不过从收益上看,电子出版的收益和纸书对于个人作者来说其实是差不多的。

这本书的受众主要是技术人员或IT从业人员,用 Mac 的人也是主力读者,毕竟书里有三分之一的Mac内容,另外就是MacTalk的微信读者。我现在的微信读者是我微博粉丝的好几倍,但是并不是每一位读者都会来买这本书,但是他们的购买对书籍打榜很有用。我的铁杆读者在这本书刚上线时都会去买,这样书一出来就会升到排行榜首位 。一旦上升快,就会吸引出版商的重视,他们也会帮助推广。另外,我在写微信的过程中,结识了很多朋友,也参加了一些活动,比如“阿里技术嘉年华”、QCon等,他们也会帮助推广。

你的微信MacTalk的读者都是什么人,你每天收到什么样的反馈?

我的读者中,程序员、产品经理、大学生比较多,还有很多技术圈的好朋友都关注了,当然还有做技术出版的朋友,否则也不会有那本书了。除了 IT 圈的,还有很多其他行业的,可能主要来看我扯淡的吧(笑)。很多读者的忠诚度很高,他们经常和我说,每天晚上睡觉前就等着我的MacTalk,不看完不睡。

大家提的问题很多是Mac相关或技术相关的,也有问职业发展的,问人生选择的,比如现在自己处于什么阶段,有什么困扰,需要建议等等,偶尔还有问姻缘的,这个我还真回答不上来。

MacTalk 的读者里有很多年轻人,他们刚上大学或刚入职场,困扰会多一些,心智也不成熟,提的问题也比较多。我一般会帮助他们分析问题并加以鼓励,有的人还真的从此振作起来了。我去杭州参加阿里技术嘉年华的夜聊节目时,有个读者非要来机场送我,见了面就说:您当时的建议和鼓励对我帮助非常大,现在我已经有了一个更好的起点了……

能帮到这些人,我挺高兴的。