vim 7.4

在vim-cn邮件组看到vim7.4发布啦!!!!! 这个版本主要变化包括:

- 新的正则表达式引擎
- 对诸多 runtime 文件进行了改善
- 更好的语法加亮及缩进

官网没有下载编译了一个Mac办的cli出来自己用。

Mailbox - getting mail done

就在昨天凌晨一点在西安回杭州的路上,我的Mailbox经历了差不多一个月的等待(排在48万!),终于可以正常使用了。

什么是Mailbox

官方的解释说:

Put Email In Its Place.

关于做Mailbox想法的由来可以看看官网的Story

Mailbox的亮点在于,作者把一套高效的管理邮箱的方法,做成了一个App。所以,与其说你在使用这个App,倒不如说你在使用作者提供的这套方法。就相当于[git-flow]至于[git]。

Mac开机自动启动shadowsocks

最近开始用shadowsocks来和世界人民保持联系了。这个工具非常之好。以至于我非常写给作者买杯啤酒什么的。但是都被clowwindy老师婉言谢绝了。


shadowsocks可以用ohdarling88老师的GUI程序GoAgentX。配置启动都相当方便。

GoAgentX中用到的是Python版本的shadowsocks,我想用nodejs版本的。还有就是我觉得shadowsocks这样的神工具应该是在开机到关机一直在后台运行的。虽然GoAgentX也可以开机启动,但是每次启动要允许防火墙输入密码什么的。

PopClip 排序去重插件

PopClip冰点降价的时候入手了这个神器。本来以为不就是照着iOS实现了个功能么,入手后发现自己错了。确实非常好用。

关于这个软件Lucifr老师已经介绍不少了。


看今年wwdc sessions的时候,在402号视频《Working Efficiently with Xcode》中Apple的工程师介绍了用Automator创建系统服务,来给选择的文本的行进行排序和去重操作,非常实用。虽然加上快捷键这种方式已经非常完美了。

但是,既然买了PopClip不做点插件还是有点心里痒痒。 参考这个官方插件库PopClip-Extensions中的文档,把上面说的功能做了一个插件。

pip 更新所有包

很蛋疼,忽然想吧python中的各种包更新一下。看了pip的各种选项,没有找到更新所有包的命令。

google后找到了这么一条命令(跟我一样蛋疼的人不少Y(^_^)Y)。

pip freeze --local | cut -d = -f 1  | sudo xargs pip install -U

用了一下提示:

Could not find any downloads that satisfy the requirement bonjour-py in /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python No distributions at all found for bonjour-py in /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python

做后台时候没必要写的完美,可以忽略用户体验?

那天在一次技术圈的聚会上,一个新加坡来的哥们提出自己在做一个ERP系统。想要把这个后台的用户体验优化一下,问了大家有什么建议?

悲剧的是,聚在那里的好的人纷纷“劝”他不用做这个事,他们基础了大致下面这些高见。

  1. 后台都是给自己用的,能忍就忍,没有必要吧经精力在这些地方。
  2. 像ERP这样的系统都是直接卖给老板的,你只要把功能做的好一点。多实现一点功能,老板觉得牛屄买下就好了。至于手下用的人需要多花时间来用你的系统,让他们加班去好了。老板不会管的。
  3. ERP这种系统就是表单多,只能是堆各种输入框。没办法的。
  4. 。。。。。

vim插件推荐:Syntastic

早上看到主席大人@TualatriX老师推荐了Syntastic这个vim插件。

Syntastic这个Vim插件真是好东西阿:https://github.com/scrooloose/syntastic 可以每次在保存文件时检查语法和代码。比如Python中定义了一个变量但没有用,就会高亮警告。

@TualatriX via Twitter

于是用Vandle装上。开始无法正常工作,不管是python还是PHP。仔细看了一下doc。

不同的语言需要单独配置,需要看看syntax_checkers目录下面相应的语言的配置。python需要安装["flake8", "pyflakes", "pylint"]其中一个。

在iOS单元测试中使用NSBundle

最近开始整理项目的代码。找了一本《重构-改善既有代码的设计》来看。

一边整理一边写单元测试来确定新添加的方法是执行正确的。其中有一个方法死活通不过。这个方法中我使用了NSBundle来获取app中打包进去的资源。但是调试发现根本无法定位资源。

用同一套代码写不同版本的客户端

最近公司的项目,需要对不同的攻略做定制版本。功能和主客户端差不多。开始想到的做法是人肉复制工程文件夹。然后把原来的项目改成需要的方式。但是这样很难做到多个客户端一起维护。要实现一个新功能需要在不同的项目中重复编码。非常之乏味。

这种场景最常见的是pro版和lite版。还有iPhone/iPod Touch版和iPad版。

这种情况下可以用xcode的target来解决。

在不同的target中设置不同的预处理宏,然后在代码中根据宏来编码。

Best Practices for Objective-C Coding

v2ex有朋友推荐了这篇文章。做了翻译。欢迎纠错和讨论


前言

我通常不会在我的blog中写和技术非常相关的东西,但是我希望对Mac和iOS(iPhone & iPad)的开发社区做点贡献。所以,如果你不是apple开发者,自行绕道。

介绍

这篇文章积累了一些多年使用objc这门语言的一些程序员公认为有效的最佳实践。我之所以把它们称作为“戒律”,是因为有很多理由可以证明它们。但是当我把这些实践拿给别的开发者看,他们往往会非常反对。。。