每一个可以努力的日子,都是一份厚礼。
lovelucy
lovelucy
打机
2013 1 月 29th
香港人把玩电脑游戏叫做打机。同事 Stephen 是个打机王子,他曾经鄙视我不在他们的圈子混不知道其中的乐趣。这简直是挑战我的智商。小的时候我曾经为了打机而与爹妈斗智斗勇,比如老爸 6 点下班,我一般会在 5 点准时关机,然后搬来小电风扇对着 CRT 显示器的屁股狂吹。当然这点伎俩逃不过父亲大人的法眼,回家后劈头就是一顿痛骂,每次我都吓得老泪纵横,而待下回又苦心专研各种电源插头的摆位,或者测试 4 点就关机使用湿毛巾帮助快速降温,结果照例被抓。到底是哪里露了马脚,我百撕不得骑姐这在今天仍是一个千古之谜。
写一个 jQuery 插件
2013 1 月 6th
工作中发现,我的很多时间都在为前端页面交互编写 JavaScript 代码。相比较而言,由于有 MVC 框架的各种约定,后端的 PHP 代码写起来显得比 JavaScript 要优雅很多。虽然也有 jQuery 这样的利器(得益于良好的跨浏览器兼容特性和简洁的使用接口,jQuery 几乎已经成了 JavaScript 的代名词),但我用到的只是它的选择器,以及别人写的一些插件而已。我深知要透彻地理解一门语言,就应该去用它做一个小项目,带着目标学习需用到的东西才能有的放矢。正好遇到一个交互需求找不到已有解决方案,于是摒弃以前那样简单粗暴的写 js 代码,我决定自己实现一个 jQuery 插件来搞定它。
再见 2012
2012 12 月 30th
很久没写过文字了,以至于我都怀疑自己码字能力开始退化。是的,2011 年 10 月我只身回到香港,蹭在前室友 @小花PP 那里住了一个星期客厅,然后面试,然后搬家,然后上班,开始了我人生中的第一份正式工作。
你看,时间就是这么地快。记得刚入职的那天开早会,GM 在诸员工面前叽里呱啦讲了一大堆我一句都还没整明白,然后就听到似乎叫我做自我介绍,我内心忐忑,惴惴不安,“Hello everyone, My name is 曾曦, you can call me 啊嘿”,英文粤语普通话夹起来整出这么一句,惹得众人大笑不已不能自拔。现在的我则在去餐厅吃饭的时候可以非常蛋定地对服务员说“唔该,A餐冻奶茶”,以至于人家完全不能察觉出我是他们口中所谓的蝗虫。我当然不会告诉你我只会这么一句。
就让我们停歇一下脚步吧,回望过去这一年,又是怎样丰富了人生的记忆。
在 iPad 上使用 Unblock Youku 观看大陆网站影片
2012 12 月 9th
由于版权等方面的原因,优酷土豆等网站上的很多视频仅限中国大陆用户观看,这对身处国外的华人来说很不便。Unblock Youku 是我之前介绍的一个 Chrome 浏览器扩展程序,可以用来解除地域限制,使得海外用户也能访问国内的视频网站观看电影剧集。随着苹果 iPad 平板电脑等设备的普及,使用 iOS 设备观看大陆影片的需求越来越多,而这些设备上是无法使用 Unblock Youku 插件的。为了解决这个问题,我们可以设置浏览器的 proxy 代理。Unblock Youku 目前实验性地提供了一个代理自动配置 PAC 文件,非常简单方便。
测试驱动开发
2012 12 月 9th
测试 是软件开发中一个必不可少的环节。不管我们是否有意识到,其实我们经常都在做测试工作。比如最原始的在代码中插入 echo $variable 查看变量值,简单粗暴而有效。当然,PHP 也会有 XDebug 这样的工具,可以做到单步调试,不过要在服务器上安装再配合好本地一个 IDE 和浏览器一起运作,始终不是那么方便。
我们实现了一些复杂逻辑后,总会要输入一些数据,来确认程序是否能给出预期的结果,页面是否正常展示。更高级的开发者会写一些代码来自动完成这个测试过程,这样一来每当我们需要测试一些东西的时候,只需要调用测试脚本,就能直接获知结果了。这就是所谓的 自动测试。
软件测试已经发展为一个独立的工种,黑盒、白盒、单元测试、功能测试……流程都比较规范化了。随着软件开发过程的不断演变,各种方法论层出不穷,类似的名词包括:敏捷开发、持续集成、XP极限编程、结对编程、TDD……一般谈这些概念的时候都会被大牛黑出翔来,比如酷壳博主 @左耳朵耗子 发表过这样一条微博:
不会写程序的人来搞什么软件开发咨询,SQA,流程设计,软件项目管理,全是扯蛋。所以,程序员应该要像 Linus 一样自信的对这些人说:“Talk is cheap, show me the code.”
习总书记教育我们:
空谈误国。
我想聊一下 TDD。我必须声明我并非想借技术名词炒作概念。自从上次一篇 关于MVC的讨论 被新浪 SAE 的微博大号转发后,引来口水无数,各种被喷。其实我也只是初学者,谈谈自己对编程的理解,希望能尝试一下不同的实践方式而已,最终想法和所有开发者一样,都是要提高代码质量和生产效率。
Chosen:用户友好的 select 下拉框列表组件
2012 11 月 22nd
用户体验真是一门很深的学问。为了让网页用起来更方便舒服,很多时候我们都要花费额外的功夫去做原生 HTML 组件无法完成的效果。
比如 <select> 标签,默认情况下它会在浏览器显示一个下拉选择框。当选择项过多的时候,比如下面“选择国家”的例子(全世界有 200 多个国家),下拉框会很长,并且会出现滚动条,用户不得不去滚动鼠标费力寻找自己需要的选项,这无形间就造成了操作阻碍。很明显,下面右图的方式通过一个搜索输入框,简化了寻找的过程,极大方便了用户,提升了体验。
为 Bootstrap 添加更多自定义图标
2012 11 月 20th
Twitter Bootstrap 真是前端开发的瑞士军刀,作为基于 HTML,CSS 和JavaScript 的简洁灵活的前端框架及交互模块集合,让我这样的半吊子 PHPer 都能很轻松地写出一张还算漂亮的页面来。干净整洁有木有!小清新有木有!Web 后端都逆袭了有木有!
Bootstrap 默认自带了由 Glyphicons 提供的 140 个灰/白图标,很好看,然而,很不够用啊!无法满足项目饥渴的需求啊!连个电话的图标都没有,哥曾经在推上@这套图标的作者,过了大概 5 个月这哥们 回复我 说那个 phone icon 做好了。。。
FamFamFam Silk Icon 是一套免费的图标,它包含了 1000 多个精美的彩色的 icons(全部图标一览)。如果能用 Bootstrap 的方式来调用这些图标,使用到我们的项目中,肯定能把需求全部满足了。
转换 HTML 与 PDF 格式文档的神器
2012 10 月 31st
企业 Web 项目开发中经常会有生产 PDF 格式文档的需求,例如 PDF 账单下载,月末生成各种统计报表等等。我们要帮助企业实现自动化,也就是说无需人工干预,程序能够按需从 DB 中拿数据自主生成。
项目使用 PHP 开发,于是调研了一下 PHP 的 PDF 类库,有 dompdf,TCPDF 之流,总的来说,各个项目主页上自夸的成分居多,基本思想都是类似的,即先用 HTML 写一个模板,每次往模板里填上数据,就可以转成 PDF 输出。但真正用起来就会发现各种毛病各种坑爹,部分 CSS 属性不支持啦,中文乱码啦,诸如此类。最终让我们抛弃 dompdf 的貌似是分页的一个大坑,据说一个表格 <table> 标签在跨页的情况下,dompdf 就直接崩溃了……
开源与赚钱
2012 9 月 23rd
约定优于配置——软件开发的简约原则
2012 9 月 15th
工作快满 1 年了。在刚从 CUHK 毕业的时候,我还满怀悲壮地表示在中文大学饱受摧残,各种 assignments projects 所写的代码已经超过了整个在武大的四年。而现在,wc -l 显示的数字已经可以让我十分蛋定,这一年的代码量已经超过了过去所有学生时代的总和。回过头来看一年前写的代码,真是惨不忍睹,恨不得把当时的自己拉出去暴打一顿。确实走了很多弯路,但我也因此收获颇丰。
感触之一就是怎样编写漂亮整洁的代码。我曾经说过,我是个完美主义者,写博客的时候我要检查以防出现错别字,写代码的时候我会特别注意变量命名是否规范,甚至代码缩进是否对齐。这大概已经属于强迫症的治疗范围了。在现实项目开发中,整洁漂亮 意味着用最少的代码,实现完整的业务功能,同时代码是易于理解的。然而随着时间流逝代码不断被修改,系统设计的整体结构则逐渐衰弱。编码从严谨的工程堕落为随性地胡乱砍劈。不重构,软件就会慢慢腐烂。这一切是如何发生的呢?


