行者无疆 始于足下 - 行走,思考,在路上
博客数据迁移 & 广告贴
我发现这个站点虽然两年多不更新了,但还是有一些访问量,因此还是利用这些小流量给我最近在做的事情打些广告吧,哈~
- http://ppresume.com/ 是我最近在做的一个商业化的小产品,提供专业的简历排版服务
- http://semantic-ui-forest.com/ 基于 Semantic-UI 的一个开源的项目,提供 Semantic-UI 相关的 Theme/Templates 等等
另,我花了两周的时间,把 is-programmer 的原有的 126 篇文章全部迁移备份到新的 blog 平台了,这里是迁移过程: http://xiaohanyu.me/posts/2017-04-26-notes-about-migrating-data/
Goodbye and Thanks to is-programmer
在这里折腾了五年,前些天给自己折腾出了新的写作工具,因此要说在见了。这个blog会继续维护,但是不会再发布新文章了,我目前也没有计划将这些文章转移过去,因此,这里权当存档吧……
新的blog地址是: http://xiaohanyu.me。See you.
书写是为了更好的思考。
– 刘未鹏
刚上大学的时候,我给高中同桌发短信咨询QQ该怎么用,他回了一条“计算机的教育要从娃娃抓起”……那时候我刚刚学会如何从控制面板里面卸载软件,刚刚学会收发 Email ,写 blog 对我来说是一件相当时髦的事情啊。
最开始用的是线上服务,什么 Dreamhost/DNS/WordPress 对于当时的我来说是难以逾越的技术难题。大概有一年多的时间,我在百度空间,和讯博客,博客园, Windows Live Spaces 等各种 blog 平台上写( 转载 )文章,玩( 自嗨 )得不亦乐乎。后来咱不是会写点小程序了嘛,就希望能找个支持代码高亮,并且广告要少些的博客平台。无意间找到了 is-programmer ,试用了下,很不错,就在那里安了家,迄已五年。
行者无疆 始于足下,这个 blog 基本上忠实地记录了我个人学习计算机的历程( 基本上是瞎折腾 )。最开始是学习( 折腾 ) Linux/LaTeX ,后来忙于学业 (OpenGL/Assembly),再后来开始实习(终于学会了SSH/SCP/Shell Script,掩面),疲于奔命,总算天幸顺利毕业,进入百度,后来偷得浮生,后来一夜之间……五年时间,不长不短,对于 天才选手 ,五年可以从无到有,站到世界之颠。对于我辈俗人,五年时间,也许刚刚够敲开计算机世界的大门吧。 五年来如果说有什么成就,就是始终没有离开 Open Source。这种坚持终于让我在去年收获了 200+ 个 github star,也让我进了 OpenStack 的贡献者名单。想想自己写的代码能够跑在别人的机器上, make the world a better place,还是很开心的。是谁说过,<我是一只 IT 小小鸟>。
认真的写作有如雕刻。
工作以后, blog 更新的频率大幅下降, 每篇 blog 的长度却大幅提高,随之而来的就是每篇 blog 写作时间的水涨船高。一方面美其名曰“工作忙( 其实是懒 )”,另一方面,自己偶尔回翻下自己以前的文章,个中观点语句,常感羞愧难当。因此每次写作,总是有些诚惶诚恐,咬文嚼字,条分缕析,大耗体力,唯恐贻笑大方。
写作有如登山,一日风睛,柳暗花明,辛苦求索的背后,是对自己生活的反思和锤炼。我常常在认真的写作中发现自己的思想盲点,正如行者登山,辛苦自不必说,孤独也是常态,只是这辛苦孤独之外,常常会伴随着山重水复般的壮丽风景。
大概在一年前,我开始着手寻找新的 blog 平台, is-programmer 对新手程序员而言是相当好的 blog 的平台,但是已经越来越无法满足我的需求,因此我将我的注意力转到了所谓的 static blog/site generator 上。这个折腾的过程一波三折,高潮不断,快感连连,折腾的结果就是你现在看到的新的 行者无疆 始于足下 。其中的技术细节繁复冗长,我会再写一篇文章加以详述。
行走 思考 在路上
New blog, new start. “身体与心灵,总要有一个在路上”,自勉。
2013, 青春绝版
年岁大了,人也变得愈发慵懒,前一分钟还梦见那些“偷得浮生半年闲”的美好午后时光,回过头来,2014已经过去了六分之一,而我还欠着自己一篇2013的年终总结。写文章,总得要有个名字吧。2012是“静水深流”,那2013就叫“波涛汹涌”吧。可是我仔细回想了下2013,想了两个月,终于发现,这一年,没有波涛,更谈不上汹涌。唯一攒下的,似乎就是自己肚腩上那因久坐长宅而堆起来的摇摇欲坠的一圈肥肉。这仿佛是岁月老人在提醒自己,生命的年轮又多了一圈,而你却多了一圈肥肉……
没有“波涛”,自然也无法“汹涌”,倒是年初无心写下的一篇博文, 让我平静的生活泛起了一大圈涟漪。一夜之间,我成了中国互联网的名人。我的博文先后被转载到网易科技和水木论坛并成为当日的十大第一,微博上有小一万的转发量,至于博客上,光这一篇文章的访问量就占了所有博客文章的五分之一。博文的转载方式和标题也是五花八门,什么“离职名录,屌丝逆袭”,什么“百度前‘小资’员工的控诉牛文”,什么“前员工追忆百度乱象:上下异心狼性压制人性”,更有甚者,说这是什么360的水军写文专门黑百度的。而我也收到了各种邮件,有百度学长发来压惊的,有出版人夸赞文笔不错询向约稿的,有单独约谈要交朋友的,有猎头询向跳槽的,有手握百度offer但是看了我的文章后犹豫不决过来征询意见的,还有一位仁兄口口声声要“拜我为师”,让我肝颤不已。无意之间,我经历了一场不大不小的互联网舆论风暴,而我就躲在风暴中心的某个角落里,静静地观察着整个事件的演绎发展,除了偶尔在博客上现身回复下评论外,不做过多的辩解和争论。虽是如此,这篇文章的受众之广还是远超我的预料,以致于三月份我去参加lisp-cn meetup时,朋友见面介绍都说“这位就是某某文章的作者”……
风暴总会过去,记忆难免淡忘。回过头来,当我数次想起,打开博客,以一个读者的身份去审视这篇文章时,我在想,这篇文章是不是真得如人所评,带有很强烈的个人情绪和主观色彩?反过来,如果我没有被百度fire,而是在百度得到了晋升,我还会写下这样大段的“真知灼见”吗?坦白的讲,应该不会。不过这些都不重要了,倒是那个躁动长夜中随手写下的一句箴言让我反反复复,久久凝视,无法忘怀:
“即使缤纷落尽,繁华消亡,青春绝版,也不要被生活磨平了棱角。”
2013,青春绝版。
这一年,我25周岁,自16岁离家求学,已逾九载。生活依旧是不紧不慢地过,青春无悔在一点一滴地磨,岁月不在它整圈整轮地长,思绪万千要半丝半缕地理。
这一年疏于写作,惰于阅读,唯一值得一提的进步就是Open Source。这一年我开始广泛地参与open source项目。Emacs方面,我花了近3个月的时间,阅读了不下50个emacs package的文档,总结了自己多年来的经验,发布了 oh-my-emacs 。毫不夸张地说,oh-my-emacs 目前是世界上最好的 dotemacs 项目。今年我会进一步,做一个精致的 oh-my-emacs 网站,并提供集中化的可下载的 “一键式安装包”。在开发 oh-my-emacs 的同时,我给很多 Emacs package 贡献了patch,包括 el-get,smartparens,evil,swank-js,emacs-eclim 等。除此之外,我花了半天的时间照猫画虎写了 ac-geiser, 解决了Emacs中scheme编程的 auto-complete 问题。另外还有一个尚处于原型状态下的基于 org-mode 的静态站点生成器 org-site。 OpenStack方面,贡献了几个微不足道的patch,因此蹭得 OpenStack HK Summit的门票一张(但是没有去成),建立了openstack git.oschina 镜像, 和朋友一道在车库咖啡组织了一次 OpenStack Beijing Hackathon, 大家玩得开心,聊得尽兴。Python方面,给 testtools 贡献了2个patch,了解了下 flask。
这一年我开始更认真地审视时间的价值。确切地讲,是因为我发现我的时间开始值点钱了。青春年少的时候,可以整日整月疯疯颠颠山山水水地跑,待到养家糊口的年岁,才发现,同样的时间,你可以用来读书充电,可以用来工作赚钱,也可以用来娱乐享受。所以在九月份的时候,我再度选择了裸辞,重新回到了“偷得浮生半年闲”的状态。上半年我在公司靠着一个人的推动,建立了一套完整的基于jenkins的自动化测试/构建/发布的体系,奈何公司糟糕的开源策略,以及一些不是那么聪明的人,让我到后来有浪费时间之感。从百度到易云,从一个中国互联网的顶尖平台,到一个千万创业大军中的普通公司,两年的经历思考,让我初步想明白了互联网创业是怎么一回事。创业公司该招怎样的人?哪里可以省钱哪里不要吝啬?市场优先还是技术优先?为什么要拥抱开源?品牌推广一定要靠广告吗?年底的时候,经朋友介绍,正式开始了一段远程soho生活,和几个老外合作几周下来,发现自己的英文还算不错,交流工作毫无障碍,很是出乎意料。同时我也接触了一些清华的创业团队,人生百态,创业艰辛,不一而足。行文至此,我又想起来我刚到北京时一心一意要在百度干三年的那个“最初的梦想”,提提神,醒醒脑,刚上大学的时候,我还想当一名“精通数理化,英语呱呱叫”的学霸来着。每天早晚照镜刷牙的时候,看着自己那张布满青春美丽痘坑的脸庞,我就想送自己两个字:“呵呵”。不忘初心,方得始终,我等凡夫俗子,万事反复,骑驴看本,只是切莫在旅途中,忘记出发时那最初的梦想,正所谓念念不忘,必有回响。
这一年大概读了40+的书,遗忘的多,记住的少,用来吹牛推荐的,屈指可数也。人文方面,被柴静的《看见》 感动的一塌糊涂,有段时间简直是爱上这个姑娘了,又把柴静主持的央视的《看见》 从头到尾翻看了一遍。“不要因为走得太远而忘记为什么出发”,学会看见,学会感触,学会不要遗忘。政史方面,被《邓小平时代》 震撼的一塌糊涂,配合着又读了《论中国》、《蒋介石与现代中国》、《蒋经国传》, 深感自己见识浅薄,慎言多思才是生活之道也。技术方面,被《The Linux Programming Interface》 震撼+感动地一塌糊涂,特别花500大洋买了人生第一本进口原版。《HTTP The Definitive Guide》也是一本极好的书,每一个Web开发的技术人员,无论是前端还是后端,都应该常备常翻。茶余饭后,会挤点时间看看《舌尖上的中国》、《我的抗战》、《地球脉动》, 算是弥补下一日之计晨光日照下慵懒颓废而被浪费掉的被窝时光。偶尔也会有心烦气燥的时候,有如女人月事,每个季度来那么一两次。我不会打游戏,北京空气又不做美,只好窝在家中没日没夜的美剧动漫度日。
这一年,生活上依旧是一穷二白,月光如洗。月入钱财,免去房租口粮读书之用,特别提款百元,报备领导,用于捐助我所喜欢的软件,自名为“每月一捐”。去年一年大概坚持了七八个月,捐助了Emacs/Vim/KDE/Wikipedia/Smartparens等我所喜欢并正在使用中的open source软件。除此之外,给妞升级了电子装备,还了家中7000大洋,买了linode一年vps,参加好友婚礼两次,耗金数千。得了一次胃病,与医院纠缠小半年,耗金两千。捐助雅安地震100大洋,捐助北大元培学生100大洋。小算下来,来京两年半,各种捐助,盖有5000大洋左右,很是痛快,吃嘛嘛香。
这一年,我开始更加深刻地领悟到了宿命这两个字的含义。一梦如是,多年以来,我第一次和父母爆发了一大一小两次冲突。一个人无法选择自己的出身,也很难改变他人的认知,怜其不幸怒其不争的同时,也不要忘记“这个世界上没有任何人能对你的痛苦感同身受”。作为中国改革开放大环境下千万入城大军中的一员,我知道这是我必须承担的代价。
差不多了。凡夫俗子的文章,总是难免罗嗦又琐碎。最后再琐碎一点,去年总结的时候我写到“五笔输入法的学习也初见成色,再咬牙坚持半年应该可以作为日常输入法使用”,我做到了,这篇文章就是用五笔敲的。速度几于拼音持平,再过半年应该会有更大的提升。
孔曰逝者如斯,不舍昼夜。我云青春绝版,初心未泯。与君共勉!
Announcing oh-my-emacs v0.3
Today I'm happy to announce oh-my-emacs v0.3.
It has been three months since I first released oh-my-emacs from my homebrew messy dotemacs project to public. To my suprise, oh-my-emacs has attracted many interests from all over the world.
The v0.3 version of oh-my-emacs contains various improvements, check its CHANGELOG for a condensed feature list.
Several features worth mentioning (v0.1->v0.3):
-
code refactoring:
-
Oh-my-emacs splits all its modules into two levels:
core
andmodules
. Files incore
are required by default, while files inmodules
are optional. You can load necessary module when you really need it.
-
Oh-my-emacs splits all its modules into two levels:
-
ome-org module:
-
Upgrade
org-mode
to latest 8.x branch. This brings us a more powerful export engine.
-
Upgrade
-
ome-cc module:
-
Oh-my-emacs support auto-complete for C/C++ macros! Combined with
pkg-config
, oh-my-emacs cc module can be used as a perfect C/C++ working environment with perfect semantic completion for functions and macros for any installed libs recognizable bypkg-config
.
-
Oh-my-emacs support auto-complete for C/C++ macros! Combined with
-
ome-java module:
- Oh-my-emacs provide semantic completion for Java projects via emacs-eclim. Though not perfect(and a little heavy), this is a workable solution now.
-
ome-lisp module:
-
The original ubiquitous ome-lisp module has been split to four modules:
- ome-emacs-lisp module
- ome-common-lisp module
- ome-clojure module
- ome-scheme module
-
The original ubiquitous ome-lisp module has been split to four modules:
-
documentation:
- Add a table to specify the system requirments and el-get packages. Thus you can install necessary system tools to make oh-my-emacs modules work as expected.
-
compatibility:
- Improve compatibility for Mac OS X.
-
completion:
-
Add semantic completion for scheme (via
ac-geiser
) - Add completion table to show you the currrent semantic completion support for various programming languages.
-
Add semantic completion for scheme (via
-
miscs:
- Basic support for JavaScript, Ruby, OCaml.
- Move some unstale packages to ome-experimental module, load as you need.
Five months of spare time work, 200 git commits, 120 github stars and 35 github issues, all of the above work forms a less than 50MB tarball, which contains 50 el-get
packages, 1000 lines of emacs-lisp code, 4000 lines of documentation, hundreds of reference web links, just download and extract this tarball, you'll get a tuned Emacs OS, and it works almost everywhere.
It's time for new year, and I hope you enjoy this gift. Any feedback will be appreciated. Thanks!
Announcing ac-geiser v0.1
由于某位 仁兄 的抬爱,oh-my-emacs 发布之后,在 reddit 上出人意料地受到了很多人的 关注。而我也在一夜之间收获了20多个github star,以及人生的第一个 pull request。突 如其来的关注让我有些欣喜,也让我看到了两个月工作的价值。技术上来讲,oh-my-emacs 根本算不上“高端大气上档次”的项目,无非就是读文档读文档写文档外加el-get package的 整合测试。不过话说回来,这两个月以来真心是写了不少文档啊,要是按照一个el-get package一篇blog来算,平均下来两天就可以有一篇Emacs Tips这种文章了。连我都有些佩 服自己的耐心了。
我想,oh-my-emacs 之所以受到了一些的关注,归根到底,还是 oh-my-emacs 确实解决了 一些现实中的问题吧。上篇博文 中我曾经提到,基于 auto-complete 的语义补全是 oh-my-emacs 最看重的目标之一。
也正是基于这个宏伟的目标,我又花了一个晚上的时间,折腾出 ac-geiser,"an Emacs auto-complete backend for geiser"。
去年学习 SICP 的时候就一直希望能有个类似于 SLIME 般强大方便的工作环境1,几番折 腾之后未能如愿,乖乖用Vim作了一百多道SICP的习题。而我的Scheme经验也就止于这些习 题了,因此ac-geiser 可能目前还不适合工程性的应用2。不过对于单个Scheme文件的程序, 我觉得应该还是值得一试的。还是老样子,放张图吧:
Enjoy it.
--