Meet @fannheyward

an iOS developer, blog about Web, Apps and my life.

Monthly Review 2014-07

从这个月开始会在月底做一次月总结,其实最主要的目的是强迫自己每个月写点什么。

写自己,写给自己,写作技能上力图为读者负责,写作态度上只求为自己负责。

via KDr2.

工作上除了常规业务开发,调研并上线了 nginx proxy_cache,效果很是不错,为后面的访问爆发做准备。

断断续续在线看完《Go Web 编程》,对 Golang 的有了相对全面的了解,相比 OpenResty,Go 在性能上差距不大,开发效率上要比 Lua 高一些(不过 Go 的语法真心没有 Lua 简单明了),可以在一些项目上试试手。

慎独,又是一个人的一个月,过于宅的日子对自己心态很不好,所以这两周末有意识的让自己出去走走,做一些调整。

心态不好一方面是一个人,一方面是家里,我们这一代人和父母一辈在育儿上确实有很多分歧,尽管目标都一致。得感谢小姨一直在中间劝我妈,现在问题已经化解很多。

看着兄弟们升职买房结婚安定,加上家里、小孩的因素,北漂的不安定很让人心烦,这也是自己心态不好的主要原因,买房已经开始考虑并提上日程,希望自己能处理好这些事情。

Vim Golang 开发环境: Vim-go

安装 Golang 并设置 $GOPATH:

1
2
export GOPATH="$HOME/Golang"
export PATH="$PATH:$GOPATH/bin"

Golang 官方提供了 Vim 开发工具 $GOROOT/misc/vim,但功能很弱,所以有很多第三方的辅助开发应用:

  1. gocode 自动代码补全
  2. godef 函数定义跳转,快捷键 gd
  3. goimports 自动 import 包管理
  4. gotags 展示当前代码里函数列表,配合 tagbar 使用

这几个是独立的应用,配套相应的 Vim 插件,单独安装很是繁琐。而 vim-go 是一整套的 Golang Vim 开发配置,安装插件后在第一次启动 Vim 时会通过 go get 安装 gocode, godef, goimports, gotags, golint, oracle, errcheck 以及相应的 Vim 插件、配色、代码块,非常方便。

NeoBundle 'fatih/vim-go' 安装,默认代码补全引擎是 ultisnips,修改为 neosnippet let g:go_snippet_engine = "neosnippet"

我的 vimrc.

2014 年中总结

工作

看似做了很多,但没有明确成绩。

回看上半年工作,第一感觉就是这样。

服务端目前主要负责移动社区程序的功能开发和维护。年初花了点时间进行服务器迁移和优化,这半年社区在稳定性、速度上有了一点改进,包括新功能开发上基本满足客户端需求,为社区用户扩张提供了技术支持和保障。但是过于后端的开发往往给人的感觉就是看不到成绩,很多东西也没法用数字量化,只有在服务出问题的时候才会显现一下,也许这就是后端开发最大的寂寞吧。

客户端没有具体的应用开发,唯一能拿出手的就是对 Background Fetch 简单做了技术探索然后封装 SDK 使用,积累了静态库经验后协助几个内部服务 SDK 封装,方便使用。对于 iOS 7 以来新加的大部分 API 依然是停留在理论学习,缺乏实际项目实践。偶尔帮忙解决一些问题,不足一提。

技术上在前端开发有一些进步,实践了 Grunt/Gulp 开发流程,JS 水平有提升,虽然还是很菜,顺带对 Node.js 有了更多的了解和实践,下一步可以在具体项目中实战一下。用 Docker 搭建内部 GitLab 并尝试推进 Git 开发流程规范,目前来看效果还可以,下一步打算引入持续集成(CI)实践。

产品能力提升有限,这个和自己的工作重心有很大关系,目前还是希望以技术为主,然后平时要多注意参加产品讨论进行学习。

生活

产检让我切身体验了医院的挂号排队,医疗资源的分配不均是主要原因。北京的医疗条件是好,但要我们在北京生产却很不现实,一个很大的原因就是房子,家里来人照顾住哪?继续单间合租肯定不行,换大房子开销就要翻倍,所以还是决定回老家生。

送老婆回家之前还是换了房子,来北京四年第一次搬家。住是北漂怎么都绕不过去的一个问题,一直说不考虑房子的情况下在北京其实挺好,现实是你怎么可能忽视掉这个每天要待十小时的地方?现在住自如,略高于市场均价,好处是服务还不错,没有无良中介的打扰。

六月二十四日六六出生,女孩,很好看,但是过程很辛苦,老婆很辛苦,妈妈是最伟大的。我第一次手术通知书签字,那两个小时真的很难熬,紧张,焦虑,不安,却又不能垮,因为你是家里的顶梁柱,你得撑起来。这时候不会想你的工作你的收入你的事业甚至你的理想,只希望她们能健康。

老婆,我爱你,希望我们的六六健康成长。

Nginx Gzip

1
2
gzip on;
gzip_types text/plain text/css text/javascript application/json application/x-javascript;

nginx.conf 配置 gzip on; 即可打开 gzip 压缩,需要注意的是默认情况下 nginx 只对 text/html 类型进行压缩,所以需要设置 gzip_types

参考文档 ngx_http_gzip_module.

CocoaPods Podspec for Static Library

新建 podspec 可以用命令 pod spec create YourLibrary 自动生成 YourLibrary.podspec,然后根据具体项目进行修改。对于 libYourLibrary.a 形式的静态库需要注意的地方:

1
2
3
4
s.source_files = '*.h'
s.preserve_paths = 'libYourLibrary.a'
s.library = 'YourLibrary'
s.xcconfig = { 'LIBRARY_SEARCH_PATHS' => '$(PODS_ROOT)/YourLibrary' }

preserve_paths 可以用 *.a 模糊匹配或指明静态库名,LIBRARY_SEARCH_PATHS 指定路径。

参考 CocoaPod/Podspec and *.framework

Reload HAProxy on the Fly

1
haproxy -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid -sf $(cat /var/run/haproxy.pid)

Performance on Optimization

Donald Knuth:

Premature optimization is the root of all evil.

高性能的程序是一个程序员应该有的追求,但是过早的性能优化往往起到反作用,浪费时间,拖慢进度等等。如何尽量少的优化投入同时达到高性能?

  1. 一个高性能框架,赢在起跑线,比如 ngx_lua。
  2. 一套成熟高效的技术架构解决方案,比如 Tornado + PostgreSQL + Redis。
  3. 一开始就按照最佳实践写代码,把常规需要优化的地方降到最少。
  4. 不要只局限于软件层,硬件升级往往比软件优化更给力,比如 SSD。

Vim 文本选择范围

Vim 文本选择时可以用 a i 指定选择范围。a 代表一个整体(block),i 代表 inner。比如:

vaw 包括单词和单词后的空格,viw 只选中单词。帮助 :help v_aw/v_iw.

vat – select a tag block, 包括 本身,vit – select inner tag,只选择 包起来的部分。帮助 :help v_at/v_it.

vab 选中包括 () 在内的文本,vib 不包括 () 自身,等同 va(/va), vi(/vi). 帮助 :help v_ab.

vaB 选中包括 {} 在内的文本,viB 不包括 {} 本身,等同 va{/va}, vi{/vi}, 帮助 :help v_aB. 类似还有 va[vi[ 等。

v 换为 d 是就变成了删除操作,删除范围同上。

Only When

Well you only need the light when it’s burning low
Only miss the sun when it starts to snow
Only know you love her when you let her go

Only know you’ve been high when you’re feeling low
Only hate the road when you’re missing home
Only know you love her when you let her go

Let Her Go

Moving

如果我提前离开北京,那么房子可能是最大的原因。并不是要买房,而是租房都不让人省心。我只是想踏踏实实的租房,但现实是,房东嫌麻烦一般都把房子交给中介,无良中介又很多,让人心烦。 2013-03-03

来北京后第一次搬家,离开住了将近四年的天通苑。

一直很抗拒搬家,因为找房子搬家是个麻烦事,而我自己不知道从什么时候养成了一个毛病:事情在开始时候过于关注困难的部分,放大了可能出现的问题。这样的结果就是前期过于悲观,继而可能会影响自己的心情。这次也是如此,找房子时候烦中介,收拾东西时嫌东西多又不舍得扔,搬家还得找车找人,连续几天心情都是忽好忽坏。

这个毛病的“好处”就是如果事情发展没有想象中的那么困难,那会非常有干劲,因为最坏的情况已经有了思想准备,后续的发展都可以轻松接受。其实回过头看搬家也没有那么恐怖,我们之前遇到的问题是东西平铺开摆放没有规划,在收拾时就显得很多很杂;中介问题其实也不必过于担心受骗,大一点的中介公司还是很规范的。

Happy Moving.