2015年计划

一年一度的计划和总结时间,这次是2015年度。

又到了一年一度的总结与计划时间,那就开始吧。

首先回顾下去年

去年我的生活再次发生巨变:我离开了生活八年的北京,南下广州。这次搬家是综合国家政策和北京现状,反复考虑之后决定的,开始没有把握得到老板的支持,我跟老婆都做好了失业的精神准备。其实来个Gap Year也不错嘛。

幸运的是,老板给予我很大支持。我们按照Plan A,国庆节搬到广州,直接在广州分公司就职。时间过得真快,一眨眼已经3个多月了。广州生活很好,因为房价的关系,生活成本比北京低很多;或者说,同样的支出,生活标准会高不少。

工作方面不算太顺利。

先是年初上的手机app项目,产品设计很炫酷,但是安卓系统实在不给力,反复折腾了很久,虽然收获很多,但是最终大家还是裁定先搁置比较好。

同期的后台,我试图改进之前的架构,创造出一套强健的企业级后台框架。但是有些问题当时没想透彻,导致最终结果并不理想,加上移动端不给力,后来一起放弃了。不过,在新的后台产品中,我得以吸取教训,做出了比较理想的产品。

至于Nervenet,当前版本0.1.9。从版本号可以看出,初始两大功能完成了一半:依赖注入和实例构建暂时没问题,包管理和加载还没放在生产环境中应用过。经过学习AMD和CMD,我觉得之前的包管理设计过于想当然,准备重构成CMD规范的。

接着就是新年计划了

  1. 减肥,目标105KG
  2. 篮球恢复到ZOL时水平
  3. 完成Nervenet,用CMD重构包管理模块
  4. 完成新的后台框架,建立健全开发模式和文档
  5. 将游戏泡泡客户端移植到Phonegap+Crosswalk
  6. 完成几个系列文章
    1. 企业级后台开发
    2. Hybrid应用开发
    3. ActionScript插件模式
  7. 旅游
    1. 带老丈人丈母娘去台湾
    2. 带我爸妈去台湾
    3. 甲米
  8. 看10本以上的技术书籍
    1. 《JavaScript框架开发》
    2. 《JavaScript设计模式》
  9. 看5本小说
    1. 龙枪传奇123
    2. 古董局中局23
  10. 每周至少写一篇博客
  11. 建立点乐广州研发团队
  12. 肉大师复活
  13. 去香港背一台iMac 27 Retina回来

山维空间2014

今年除了原计划的系列文章外,还准备把一些以前写的,现在看来有问题的文章更新一下。

(图为花莲七星潭,与文章无关。明天去台湾呀,咿呀咿呀哟~~)

开博客以来,虽然也挂着广告,但我其实并不是很操心访问量——我当然希望有人来看,但是因为懒,不想太花时间……而且你看电视上网站一上线就会有人访问……同样的缘故,我一直只向Google提交sitemap,所以百度开始并未收录这个博客。今年国庆后,不知为何百度突然开始引流,访问量蹭蹭涨起来。但是广告收入几乎一点没变……

WordPress每逢年底都会给一份总结报告,其中“TOP文章排行榜”引起了我的注意。访问量最高的文章里,有些写作时间较早,可能当时我的认识理解还不到位,也可能技术本身发生了不小的变化,总之某些内容已经不适用了。所以今年除去早就计划好的长篇连载之外,我准备把这些文章也翻出来更新一下。

以下就是今年的TOP10文章:

导出Table数据并保存为Excel

这篇文章还算比较新,问题不大。关于多表格的操作可以补进去。

禁用鼠标滚轮事件

说实话我很不明白为啥这篇文章的访问量这么高,可能是页游开发的同行吧。看内容的话,随着浏览器升级似乎也该更新了,不过考虑到现在Flash的市场状况,往后放吧。

HTML5的File API应用

这篇文章写于肉大师第一版时,很早以前。正如我在更新中所说,当时我弄混了FileFileSystem。其实这个题目很大,还是写成系列文章罢。

悲催的Android Webview——记新版广告墙开发Android Hybrid App四大坑原来早期Android的WebView真的很奇葩

关于Android Hybrid应用的几篇文章,内容没太大问题,多半是表述方面的,不很影响阅读或者后来的实施。长篇连载时会好好说说。

Backbone.Collection.fetch小优化一则

使用Backbone两年之后,我终于明白这才是正确姿势……回头写一篇Backbone最佳实践吧。

本地部署weinre帮助移动开发

工具应用,没什么问题。

重写Backbone.js的加载动作

刚开始使用Backbone那会儿写的,问题比较大,得改一改。

Phonegap 2.6在Android上的Icon设置

其实问题不在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,已经被我刷成砖,闲置好几年了。

JavaScript奇葩的参数机制

今天实习生遇到一个问题,以前没碰到过,笔记一下。

今天实习生遇到一个问题:有一个数组,想在一个函数里将它清空,结果办不到。代码大概是这样的:

function empty(arr) {
  arr = [];
}
var array = [1, 2];
empty(array);
console.log(array); // 预期 [],实际 [1, 2]

对于我这种半路出家根基不实的人来说面对这种问题总是很挠头。于是只有翻书,在《JavaScript高级程序设计(第三版)》上看到,原来JavaScript的函数参数设计这么奇葩。

首先,JS里的变量分为值类型和引用类型,这点我是知道的。基础类型只有NaN、null、undefined、String、Number这5个,其他都是引用类型,也就是赋值时传引用不复制值的类型。区分如下:

// 值类型
var a = 'test',
    b = a;
b = 'temp';
console.log(a); // 'test'

// 引用类型
var a = {id: 1},
    b = a;
b.id = 2;
console.log(a.id); // 2

但是在用在函数参数的时候,又会有所不同。参数并不是传递的引用,而是传递的引用的引用。所以即使用“===”判断,也会返回true,因为最终指向的对象是一样的。但是如果在参数中对参数重新赋值的话,就相当于改变了引用地址,重新创建了一个对象,也就无法操作外面的对象了。这可能也是“运行时环境对象”造成的结果吧。