上一回写了无关技术的文章非常不受欢迎,看来图灵都是工作狂,好吧:)

微软搞笑照片

我是一名十分不幸的孩子。早在小学四年级,我就受到了微软的首次毒害。那时班上有一位同学家装了台AMD K6的电脑,专门请我们几个伙伴去玩红色警戒。直到初一,老爸才在我的恳求下装了一台二手电脑,当时这台机器的处理器厂商已经倒闭了,可见其性能之强悍。更糟的是,我学会了重装系统,成为了社区IT志愿者,专业解答“我的电脑怎么变慢了?”这个问题。帮微软做了六年的免费客服后,我的命运似乎已经因此注定。

幸好,我在大学迎来了生命的转折点。大二有堂课叫程序算法,这堂课研究链表与二叉树等数据结构的查询、排列运算效率,但最神的还是这堂课的教授钟老师。学期第一节课上课前,老师把他的Gnome桌面投影到了墙上,同学们纷纷在私下小声议论,不知是什么玄虚。老师不作声,打开了一份PDF文档,开始自我介绍。后来我才知道他的教学演示都是用PostScript写的。要说这节课是全班52个计算机工程学生的启蒙课一点儿都不为过,钟老师问我们:“你们在本目录下创建文件名1至100的文件需要多长时间?”说完他迅速地在终端打了一行指令,同学们都没看清,100个空文件就已经创建完成了。凡是有周期性的工作必须仍给计算机,这本该是人生的第一课。一学期下来,过半的同学已经转投Linux,包括我在内的大部分同学都掌握了Vim的基本操作。

大学生活精彩纷呈,我参加的公益社团有一台老旧的CentOS服务器,社团网站完全是静态页面,而我老大需要发布活动信息和接受同学报名。我那时懂点儿HTML和CSS,还不知道什么是数据库。正发愁呢,无精打采地去饭堂吃饭,正巧遇上了本系技术最牛的学长,便赶紧坐他旁边请教。听了我的项目要求后,他推荐我参考一款新软件,叫Django。得到了金玉良言,尽管连Python是啥都不清楚,我就开始动手做Django的官网教程。苦孩子有好运,Django是文档最好的几个开源项目之一,我只用两天就玩转了官网教程。总耗时仅仅二十天,新社团网站成功上线。我渐渐爱上了Linux编程环境,技术也围绕着Linux发展。开机登陆终端,使用Vim编辑程序源文件,不受即时通讯的干扰,我的工作效率比以往高多了。Linux生态圈中有众多的开源软件社区,不但一行命令就能轻松安装,而且大型项目的源代码也可供学习。向高手看齐时,我对新技术的跟进也更为迅速。Linux与其应用程序的社区支持优秀,Ubuntu、Vim、Python等都有详细的志愿者百科和文档,搜索就能找到常见问题答案。只要勤动手,折腾自己的笔记本时就可以积累服务器管理经验。巧的是:我的第一份工作也碰上了Django框架开发,公司所有的网站都架设在Linux服务器上。我向负责服务器管理的同事讨教了一年后,决定辞职创业。

我的创业项目极光账本是记账类网站,后台以数据库应用为主。在开发过程中,我在两台老笔记本上安装了Ubuntu Server,模拟生产环境。数据库服务器上装了MongoDB和PostgreSQL。大名鼎鼎的Mongo以磁盘空间换取了惊人的数据存取与分析性能,Postgres的地理位置API十分完善,稳定性超越了MySQL。为了给将来的服务器管理工作做准备,我也为数据库服务器配置了Linux磁盘阵列。Ubuntu的安装程序内置阵列设置图形界面,花不到十分钟就能学会。除了数据库,我在创业时学到的另一个实用工具是GIT。GIT是Linux内核开发组进行全球合作时用的版本控制软件,其作用是记录每个团队成员对代码库的更改日志,每个改动都有根有据。每次向生产服务器同步代码前,我都会像开源社区般发行新版本,为生产版本作记号。除了写单位测试之外,极光的团队成员还互相检查各个commit的代码质量。习惯了服务器管理后,我觉得Linux的目录结构就如贴了标签的衣柜,个人文件(/home/)、编译好的程序(/usr/)、常变动的文件日志(/var/)、临时目录(/tmp/)、设置(/etc/)等清清楚楚。

Linux是值得炫耀的操作系统,更是软件开发的重要生产资料。由于众多开源项目的支持,其娱乐与办公能力也十分强悍。除了网银之外,我全部的虚拟生活都在Linux上度过。即使经常帮亲朋好友重装微软系统,我依然感到非常欣慰。在浩瀚的微软蓝屏(BSOD)之中沉沦六年后,Linux为我带来了希望。我希望大学中有更多的计算机教授开设基于Linux的课程,为软件产业的未来指明方向。