我一般使用git pull从Github更新代码。某次提交新版本后,服务器开始报500错误,但是看log什么都没有。反复回想好像上次拉完代码没有composer dump-autoload,而且这个版本确实增加了几个类。于是赶紧生成autoload,故障解除。
我的技术和生活
-

2015年计划
又到了一年一度的总结与计划时间,那就开始吧。
首先回顾下去年
去年我的生活再次发生巨变:我离开了生活八年的北京,南下广州。这次搬家是综合国家政策和北京现状,反复考虑之后决定的,开始没有把握得到老板的支持,我跟老婆都做好了失业的精神准备。其实来个Gap Year也不错嘛。
幸运的是,老板给予我很大支持。我们按照Plan A,国庆节搬到广州,直接在广州分公司就职。时间过得真快,一眨眼已经3个多月了。广州生活很好,因为房价的关系,生活成本比北京低很多;或者说,同样的支出,生活标准会高不少。
工作方面不算太顺利。
先是年初上的手机app项目,产品设计很炫酷,但是安卓系统实在不给力,反复折腾了很久,虽然收获很多,但是最终大家还是裁定先搁置比较好。
同期的后台,我试图改进之前的架构,创造出一套强健的企业级后台框架。但是有些问题当时没想透彻,导致最终结果并不理想,加上移动端不给力,后来一起放弃了。不过,在新的后台产品中,我得以吸取教训,做出了比较理想的产品。
至于Nervenet,当前版本0.1.9。从版本号可以看出,初始两大功能完成了一半:依赖注入和实例构建暂时没问题,包管理和加载还没放在生产环境中应用过。经过学习AMD和CMD,我觉得之前的包管理设计过于想当然,准备重构成CMD规范的。
接着就是新年计划了
-

山维空间2014
(图为花莲七星潭,与文章无关。明天去台湾呀,咿呀咿呀哟~~)
开博客以来,虽然也挂着广告,但我其实并不是很操心访问量——我当然希望有人来看,但是因为懒,不想太花时间……而且你看电视上网站一上线就会有人访问……同样的缘故,我一直只向Google提交sitemap,所以百度开始并未收录这个博客。今年国庆后,不知为何百度突然开始引流,访问量蹭蹭涨起来。但是广告收入几乎一点没变……
WordPress每逢年底都会给一份总结报告,其中“TOP文章排行榜”引起了我的注意。访问量最高的文章里,有些写作时间较早,可能当时我的认识理解还不到位,也可能技术本身发生了不小的变化,总之某些内容已经不适用了。所以今年除去早就计划好的长篇连载之外,我准备把这些文章也翻出来更新一下。
以下就是今年的TOP10文章:
这篇文章还算比较新,问题不大。关于多表格的操作可以补进去。
说实话我很不明白为啥这篇文章的访问量这么高,可能是页游开发的同行吧。看内容的话,随着浏览器升级似乎也该更新了,不过考虑到现在Flash的市场状况,往后放吧。
这篇文章写于肉大师第一版时,很早以前。正如我在更新中所说,当时我弄混了
File和FileSystem。其实这个题目很大,还是写成系列文章罢。悲催的Android Webview——记新版广告墙开发,Android Hybrid App四大坑,原来早期Android的WebView真的很奇葩
关于Android Hybrid应用的几篇文章,内容没太大问题,多半是表述方面的,不很影响阅读或者后来的实施。长篇连载时会好好说说。
Backbone.Collection.fetch小优化一则
使用Backbone两年之后,我终于明白这才是正确姿势……回头写一篇Backbone最佳实践吧。
工具应用,没什么问题。
刚开始使用Backbone那会儿写的,问题比较大,得改一改。
其实问题不在phonegap,而是小米手机的图标刷新很慢。
总结
一些排名靠后的文章也有问题,我就不一一列举了。整体说来,可以分成三部分:Backbone最佳实践、Hybrid应用开发、HTML5文件API。慢慢写吧。
-

不要怕花钱
前些天微博上有篇《一个老程序员给年轻程序员的13个发自内心的忠告》,我觉得写得很好,大部分我都同意,唯独第二点:
不要轻易换笔记本电脑,不要跟潮流,不要买过多的电子产品,不要过于频繁的更换手机。
我不同意。就我个人的生活经验来看,刚好相反:不要怕花钱,学会花钱,今天花掉的钱明天翻倍来找你。
讲两个我自己的小故事。
绘图板
我上大学那年,2002年,电商刚刚冒头,淘宝还没出现,卖场仍然是主流。我和我爸都是电脑爱好者,几乎每周到要到我们那儿的电脑城去逛一圈。某天,忘记是不是要帮亲戚买写字板,我们偶然逛到一家卖绘图板的铺面,他们家主营Wacom各款绘图板,当时我特别想买一块。我小时候画画有点天赋,参加过比赛拿过小奖,给班上办板报什么的很多,大的成就倒真没有。
我看中的那块绘图板叫非凡630,512级压感,绘图区域7吋,当时售价1050,确实不是个小数目。而且我考上的专业是应用化学,可想而知几乎没有用到绘图板的机会。但是我爸还是给我买了。
后来,我使用这块绘图板的时间加起来可能不超过40个小时,不用说WOW或者文明了,我估计我花在大话西游(电影)的时间都比它长(这是另一个故事……)。似乎买这块板子是完全浪费了,是这样么?
那几年,Flash如日中天,优秀作品和突出人物不断涌现,有一点绘画才能的我自然也蠢蠢欲动。工欲善其事,必先利其器。盗版软件分分钟装好,鼠标键盘绘图板齐备,开搞!一边搞还要一边学啊,熟悉我国教育方面优良传统的人都知道,学校里自然没开这方面的专业课程,不怕,有图书馆。于是,改变我一生的两本书登场了:《闪客实战》和《Flash XML实用开发技术》(感谢Google,我都忘记这本书具体名字了)。这两本书成功地将我从“做动画”带到了“做开发”的路上。2006年毕业后,我凭借Flash开发技能成功以应用化学专业应届生的身份踏入互联网行业,直至今日。
如果当年没有买绘图板,我应该不会去玩Flash,也不会去学ActionScript,于是不会被201录用成为前端工程师。冥冥之中,我爸斥巨资给我买的这块我几乎没用过的绘图板成了我事业当中一块重要的垫脚石。
博客空间
也是几年前,博客大热,我既爱现,又好为人师,自然要写。当时公司有博客,也要求大家都用自家产品,我就在上面写。有几篇文章的访问量和评论数都相当高(访问量高的那几篇是关于red5的,评论数高的自然是自黑的),可惜现在因为种种原因找不到了。后来又由于种种原因,我要离开这家我效力多年的公司,思前想后我决定自己买空间搭一个博客,于是便有了现在这个网站。
这个网站是最土的那种,空间,没有root,也没有什么数据库、存储之类的服务,当时我根本不懂这些,就觉得国外空间挺便宜,域名也好用,就买了。后来发现在上面做开发不好搞,就又买了BurstNet的虚拟机。然后就开始关注各种服务器提供商的消息,一旦有什么10刀/半年的活动就赶紧买。买来当然要玩啊,不会就问呗,好歹认识个运维。可是没啥好玩的啊……那就放着,想起来啥再说,隔几个月上去更新一下系统。
就这么着,这两年买来没用或者没大用的服务器少说也有三五千块吧。不过在不断折腾中,成长也是明显的:我学会使用yum、apt-get,也能找到合适的包;我能在各种环境下配置ruby、node、php;我能配apache也能配nginx,还能使用nginx反向代理搭Ghost博客;我能在服务器端调试,快速锁定问题。作为一名应用化学专业,以前端工程师身份入职,早些年只用过Windows的人来说,我觉得我进步很大。而且,关键是,无论处于什么环境下,我都能独立完成工作,搭建一个网站,堪称“全站工程师”。
这两则故事告诉我们
我们生活在一个消费型社会里,太多东西必须花钱才能体会。早年我没有买iPhone,就不觉得iOS应用有什么价值,错过了个人开发者的黄金时代,现在后悔也没用。如今谁都知道iOS应用可以赚钱,大量人力资本入驻,已经没有个人存在的空间了。
再举个例子,百度和Google。普通人上网有百度,很正常,不怪他们,实在是GFW让大家没法选择。但是很多开发人员也只用百度,搜索结果各种烂,下个乌龟git都能捆绑一堆垃圾软件,浪费大量的时间,还不一定能找到答案。时间是最宝贵的,知识也是宝贵的,能够快速获得知识,这种服务自然是值得消费的。
所以我总结,在你的消费能力允许时,不要太多的考虑买这个东西能不能用够本,比如vpn,大家大多数时间都在墙内活动,这没错;但在需要的时候,能够无阻碍的翻出去,才是最重要的。
当然,怎么花钱算合适,是个度的问题,真有人一个月挣800非要买肾6+,那确实太超过了。咱们还是循序渐进,现在一个月能挣5k,就买个一年100块的VPN,保证快速获取知识;一个月能挣15k,电子设备想买就买,大不了将来送人嘛。另外,也别买了真就扔那儿不管了,多少还是得用一用,投入的学一学,不然只能是浪费。
后记
那块非凡630被我送给做设计的亲戚了。我在201二进宫的时候参加年会又中了一块板,原封捐给设计部了。
我买过新网的机器,烂的要死,没怎么用。后来注册参加过各种免费试用,都以过期而告终。现在除了这个空间我还有2台虚拟机,SAE上也充了云豆,不过也一直没怎么用。
图里的kindle,已经被我刷成砖,闲置好几年了。
-

谈程序员的修炼
(图文无关。真怀念这栋别墅啊~~)
时间不够,聊天记录来凑。下面的文字多半来自周末跟某同事的朋友的聊天记录。他大学时学mapgis,毕业后开始做相关工作,感觉提升不大,想投身火热的移动互联网。
他现在接触数据库比较多,大学毕设做的Android项目,想问问够不够入职。于是我说:
我估计不是很乐观,呵呵。
是这样,我们开发主要语言和环境有前端html、css、js;后端php,python;数据库;客户端android,ios。我们对团队成员的要求还是比较高的。
我也接触过不少大学期间做过这那的,作品多半难以达到市场要求,一般也就是应付老师的水平。
他:
趁现在还有时间,倒是可以自己做些东西,以后找工作也能有更多的筹码,哈哈。
以后如果碰到一些非常棘手的问题,还希望有打扰你的机会啊,哈哈。
(他可能觉得没啥希望,所以比较消极,准备结束对话。但是作为人品男,我聊天也要有模样。)我:
是这样,随着人年纪变大,不可避免的可塑性会下降。
所以作为招聘方,要么找年轻有活力可塑性强的,要么招年纪大点经验丰富的。这是必然的。
入行一定要谨慎;决定入行了,就得深入。
他:
这一点,作为一个开发人员,确实深有体会。
因为一旦工作了,平时的大部分时间都被固定了做那些事情了,很难有机会去发展其它方面。
我:
(你现在想寻找Android开发方面的工作,)最好自己补充一下开发方面的基础技能,比如版本管理、需求分析、错误调试、敏捷,等等。
多上github,了解下业界动态,积累些开源库和框架的知识。
找几个业界论坛,没事儿多去看看,了解最新趋势,学会提问和分享。当然,csdn、百度贴吧之类的就算了。
有余力的话,可以写几个小应用,嵌我们的墙(硬广),试着去了解一下移动互联网,以及应用推广这些事儿。
业界会有很多活动,比如code jam、hackthon,有时间的话去参加一下,积累些人脉,也能更清晰的理解移动互联网的开发。
找一些公益组织,帮他们做一个能真正发布的产品。
总之练兵的机会很多,千万不要只看书或者随便弄几下就算ok了。
相信如果你能把我前面说的做个七八成,将来的选项就不止点乐一家了,哈哈
他:
受教了,我会尝试这么做的。
嗯,谢谢,你的这些建议对我来说可是非常适用的啊,其实我是那种比较喜欢动手去实践的,只是不太是那种有恒心去做平时不怎么用的东西,你指了一条明路
崇拜从来都不是无缘由的,我算是理解了。(想来想去还是把这句带上了,感受哥的光辉吧。)
-
Yosemite坑真多
本着顶配解千愁的指导原则,入职2年半之后,借着南迁广州的机会,我向公司申请购置一批新机器。同配置笔记本性能远远落后于台式机,所以我自然而然的选择了顶配iMac 27作为主力开发机。升级CPU和内存的版本没有现货,等机器送到,大约是10月13日。
关注IT产品尤其是苹果产品的同学可能记得,16日苹果开发布会,推出视网膜屏的iMac,连CPU带显卡甚至屏幕都有大幅升级……顶配的日子只持续了3天……哭昏在厕所……
这还不是最惨的。更早的时候,苹果发布了Mac OS 10.10优胜美地(Yosemite),直接安装在新机器里,我这台自然也是。新系统有诸多纸面所载的改变,我就不多说了,跟本文关系不大;我只说跟开发相关的这部分。
403错误
升级后的Mac OS集成Apache 2.4.9,里面默认启用了
authz模块,于是增加虚拟主机的时候,<DIERECTORY>配置里面必须写成Require all granted
不然就会报403错误。我以前处理403都是暴力改权限,这次恨不得把
/的权限都改了都没用,后来终于google到解决方案。不能使用Homebrew安装的php,以及不能用Homebrew升级php
我有新版本癖,每周三次更新——使用开源产品的好处就是绝对不怕找不到更新。当我上周例行更新,发现PHP 5.5.19安装失败,报
Cannot find OpenSSL's <evp>,因为项目紧急所以我只好先不管它。后面配置apache的时候,发现随Homebrew安装的新版libphp5.so不能用,apachectl -t检查通不过,只好使用系统自带的5.5.14版。今天又google了下,终于找到解决方案。原因没搞太明白,总之是升级了之后
/usr/include有点问题,需要重新链接一下。正确的解决方案是- 安装XCode最新版
- 安装XCode命令行工具(CLT)最新版
- 试一下,不行的话重新链接一下
/usr/includesudo ln -s /Applications/Xcode6-Beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include /usr/include
- 然后 `brew upgrade` 就可以了
这样搞了之后新的5.5.19的libphp5.so也可以使用了。
丢失PNG支持
如果只是版本低一点,其实是可以忍的。结果Mac OS团队不知道怎么想的,竟然把PHP中的PNG支持去掉了,导致我在本地开发的时候验证码出不来。如前文所述,这次升级本来就有诸多问题,验证码出不来我的第一想法肯定不是看PNG支持。而且,我们一直在用的验证码生成程序中,将生成函数写成
ImagePNG,竟然能运行,也是让我很奇怪……换用Homebrew安装的5.5.19 libphp5.so之后,问题解决。
暂时遇到这么多问题,日后补充。
-
谈学习:读源码
小弟交日报,说看backbone和underscore的源码看不懂,我回了邮件给他,摘录于此,表达我对“读源码”这种行为的看法。
我不赞成新人以“读源码”的方式进行学习,因为相比于看文档、看范例、实操开发,“读源码”的效率实在太低了。
这是有原因的:
- 对于大部分新人来说,多半“单看每个字都认识,全放到一起就不知道啥意思了”……速度上不去,只能看懂“how”,无从知晓“why”。最后虽然知道原作者用的A方法、B方法、C方法,但到实战的时候,还是不知道怎么做。
- 流行的库和框架,大都经历过数年的升级演变,甚至几千次提交,和早年刚出现时相比面目全非,逻辑也不再是浅显易见的。“读源码”不包含演进的过程,上来就是别人提炼过、推导过的精髓,更加难以理解。
- “读源码”难以获取成就感,因为成果难以衡量,里程碑难以界定,学到多少东西更是只有本人知道。把这个当某天的内容报告给领导,等于明确表示自己工作量不饱和,很可能招致领导的不满。
源码完全不该读么?自然不是。那么什么时候读呢?当技术精进到一定程度,或者业务诡异到一定程度,我们自然会遇到前人没有遇到过的问题;或者发现文档中语焉不详的地方。这个时候只能通过阅读源码找答案,而且这个时候读源码也是很合理高效的。因为:
- 很可能读源码是唯一途径。
- 带着问题去读,目标集中,效率会很高。已经知道了“Why”了,只关心“How”。
- 解决目标问题的过程中,可能学到很多之前不知道的东西。
-
越来越不懂
刚入行的时候,什么都不懂,自然怀着敬畏之心。干了几年之后,觉得自己什么项目没见过,什么客户没伺候过,什么大公司没去过,就觉得自己什么都能干,只要跟对老板入对公司。
又干了几年,尤其是加入创业公司后,开始从市场角度观察这个行业,却发现自己越来越不懂了。
不懂屌丝
我一直以为自己是屌丝,后来发现不纯。比如,淘宝上曾大热过“iPhone代挂QQ”的服务,我就完全想不到。要说始创者当真是目光灼灼:QQ为了和微信竞争,允许用户同时登录PC版和移动版,使得独立挂QQ成为可能;其次,iPhone尾巴使得用户之间的物理差距史无前例的明显。后者击中屌丝软肋,前者则使这门生意成为可能……听之前想也想不到,想明白后膝盖都软了,这才是真懂屌丝啊。
最近又兴起了“虚拟女友”。不要想太多,这个东西连软色情都算不上。服务提供者(当然用户希望是真正的女孩子……)通过微信QQ等加用户好友,然后提供叫醒,问候晚安等服务,收取每天几块到几十块不等的费用……是的,仅此而已,但是也很火爆。能想出这个业务的人,也是真懂屌丝。
不懂有钱人
然后我更不是有钱人,所以很多有钱人的想法也理解不了。
比如,老婆的闺蜜换了新车,BMW 3 GT。然后,她设置导航的方式是,坐在车里打电话给call center,由服务生设置导航和路线,然后她照着开……
(・A・ )
作为一个IT从业者,死宅,我的手机里至少有两种导航软件,Google map出国用,高德导航国内用;而且我知道,如果开VPN的话,国内用Google map也是完全没问题的。但我真的想不到可以打电话给call center——当然,我的车也没有call center……
对于壕们来说,时间是宝贵的。过去业内常拿比尔盖茨调侃,说他看到地上有张5万美金的支票都不用走过去捡,因为这段时间他的财富积累已经超过5万美金了。所以对于他们而言,冒险学习新技术不如花钱找人做放心,于是,虽然导航软件就在手机里,他们也懒得用,宁可打个电话给call center,虽然看起来费劲些,但实际上也节约了时间。
想通了这一点,也就能明白为什么那么多总裁班、电子商务培训班如此有市场。对于各大企业的老板而言,花时间去京东购物,理解电商运营的机制,实在太麻烦了;倒不如花点钱,请几个看起来似乎挺懂的人讲一讲,即使他们讲得没啥营养,至少还能碰到其他企业的老总,说不定又搞定两个大单子呢。
继续努力吧
还有什么可说的呢,继续努力吧,希望能摸索到新的痛点,并且是第一个。


