Monthly Review 2014-11

工作:

  1. 依然是 BDD(Business-driven Development, 业务驱动开发),完成了三个大功能,已上线的基本没有返工,符合自己的标准。
  2. BDD 往往是结果导向,产品前端的需求不一定会考虑到对后端系统带来的改变和压力。如果需求确定后才发现不可为或代价太大,开发会带着情绪去做,这不是好事。
  3. 所以开发要尽量早的参与到前期讨论,分析可能会带来的问题,考量开发性价比,对不合理或不清楚的需求能及时反馈,甚至拒绝。
  4. 需求-开发-上线-监测-分析,往往进行到上线就结束了,这样很难判断这次开发的价值,以后类似的需求还要不要做?
  5. 开发性价比是最近在思考的一个问题,有没有必要 100% 实时?一个需求要三个系统增加开发值不值得?

生活:

  1. 保持一个月回一次家的频率,发现同车还有很多这样的人。
  2. 视频叫六六会抬头瞅着屏幕笑,然后低头看着音箱找人……
  3. 深圳卫视的《极速前进》真人秀节目很好看,推荐。
  4. 老婆最近每天加班到八九点,相比之下我真的太懒散了。搞活动买的牛肉吃了两个星期,这么冷的冬天晚上有萝卜炖牛肉真的很幸福。

Vim Tips

这周新学到的两个 Vim tips:

  • gf 跳转到当前光标所在名字对应的文件(前提是文件存在)。
    • C-w-f 新 buffer 打开
    • C-w-gf 新 tab 打开
  • gt 跳转到下一个 tab,对应有 gT 上一个 tab,{n}gt 编号对应的 tab.

Yoda

“Always pass on what you have learned.”

Monthly Review 2014-10

工作:

  1. 本月的 git commits 还不足上个月的一半。
  2. Redmine 上关掉 42 issues,当然有部分是无法复现或拒绝需求。
  3. 完成拖延一年的运营管理界面,这部分一周可能都用不了一次,一直没动力去做。
  4. 捡起 Docker 想做一下 CI,发现最大的问题不是环境,而是没有写测试用例的习惯。
  5. 除了没有测试,大部分项目都没有文档,或者更新不及时,接下来一个月先把自己手上的项目文档补全。
  6. 暴漏出来的问题就是自己的开发模式还处于比较原始的小作坊形式。VCS+Code Review 全靠自觉+代码强迫症,测试和部署上线全手工操作,没有流程,而这却是最重要的。

生活:

  1. 想六六。
  2. 考虑把娃带北京自己带,然后就没有然后了,哎。
  3. 如果独生子女有什么好处的话,孩子在需要帮忙的时候父母没有太多其他牵挂算一个。
  4. 晚上买菜做饭,对自己的厨艺还算满意,就是刀工太差。

Jekyll in Docker

最近又捡起 Docker,打算用在团队内做一些 CI 工作。拿 Jekyll 练手,记一下笔记:

FROM ruby:2.1.3
MAINTAINER Heyward Fann <[email protected]>

RUN gem install github-pages
RUN apt-get update && apt-get install -y curl && rm -rf /var/lib/apt/lists/*

ENV NODE_VERSION 0.10.33
RUN curl -SLO "http://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-x64.tar.gz" \
        && tar -xzf "node-v$NODE_VERSION-linux-x64.tar.gz" -C /usr/local --strip-components=1 \
        && rm "node-v$NODE_VERSION-linux-x64.tar.gz"

WORKDIR /blog
EXPOSE 4000

ENTRYPOINT ["jekyll"]
CMD ["serve"]

Then:

  1. docker build --rm=true --tag="blog:0.0.2" .
  2. docker run --rm -p 4000:4000 -v /ABSOLUTE/PATH:/blog blog:0.0.2
  3. boot2docker ip then http://IP:4000
  4. OR docker run --rm -v /ABSOLUTE/PATH:/blog blog:0.0.2 build

笔记:

  1. Base image 建议选用 debian:wheezy,如果需要编译环境可用 buildpack-deps:wheezy|jessie,相对 Ubuntu image 要小很多。
  2. 尽量不安装编译环境,直接包管理工具或二进制文件,注意清理缓存文件。
  3. 尽量少的 RUN 命令,减少 layers 数量,尽可能在一个 RUN 组合完成多个操作,比如 ruby
  4. 配合 .dockerignore 忽略不需要的文件。
  5. build 或 run 的时候加上 --rm=true 自动删除中间容器。
  6. CMDENTRYPOINT 都是 docker run 的入口,只是在参数处理上不同。CMD 可以被 run 后面的命令替换,而 ENTRYPOINT 是把 run 后面的作为参数传入。
  7. CMD 配合 ENTRYPOINT 一起用很不错,如果没有参数,执行的就是 ENTRYPOINT+CMD 组合起来的功能,加上参数就会把 CMD 替换掉,执行另外的命令。
  8. OS X 下用 boot2docker 要注意 IP 不是本机或 127.0.0.1,而是 boot2docker ip.
  9. 如果是 Golang 二进制程序,完全可以构建一个空 image 执行,比如 Building Docker Images for Static Go Binaries.

参考:


就目前的情况,用 Docker 构建测试环境很方便,麻烦的是测试用例和测试脚本整理,小团队基本以业务为主,很少有时间或没有意识的去写测试用例,只是在完成具体业务后针对该功能进行测试,没法系统的进行测试,这个需要在后面工作中重视起来。

Tweet

Make every detail perfect and limit the number of details to perfect.

via Jack

What Apple has done

Zsh Shared History

You can share every commands between all terminals with Zsh shared history. In your .zshrc:

# enable shared history
setopt inc_append_history
setopt share_history

# disable shared history
unsetopt inc_append_history
unsetopt share_history

Two Hard Things

There are only two hard things in Computer Science: cache invalidation and naming things. – Phil Karlton

Monthly Review 2014-09

选择

月初一个项目计划是客户端+服务端都由我负责,项目进行中我把客户端交了出去,保证进度是一个原因,毕竟是完全新的业务功能,服务端要做东西还挺多,主要原因是面对客户端开发,忽然手生,表现在这个东西我知道,着手代码的时候要愣一愣。

算下来有一年多没有 系统 的写 iOS,正好 iOS 7 一代。这一年 iDev 相关的学习一直没落下,但缺乏实际项目锻炼,解决问题的思路还有,具体到某一个技术点,比如写一个毛玻璃模糊效果,就要愣一下,需要查文档了。

出现这种情况也在意料之中,虽说要做全栈开发,终究是要有些侧重,目前还是以服务端为主。服务端开发现在主要是业务驱动,技术长进有限,最近在看 nsq,争取在业务和技术上都能有进步。客户端方面还是技术关注+学习,具体开发上给我一点时间还是有信心回到之前的熟练水平 :D


最后还是选择把六六留在老家。走这一步我和老婆俩人没少哭,就现阶段条件,执意带六六到北京的结果可能更糟,北京的居住条件六六和妈是否适应,爸一个人在家的生活,妹妹也还没毕业,就算狠狠心带过来也不能长久,这些都让人头大。六六在家爸妈肯定能照顾好,就是想孩子受不了,尤其是大了越来越好玩,真心舍不得。每个月多往家跑跑吧。

六六健康成长。