针对 Universal 应用上线 App Store 的提示
官方禁止新版本支持的设备小余旧版本
乐居计算器是我们的第一款 Universal 应用,这次做了重要变化,但仅限于 iPhone 的修改,本想改本次上线仅支持 iPhone 来赶 deadline,临到上线的时候却被 Xcode 报错:
"This bundle does not support one or more of the devices that were supported in the previous bundle for this app. Bundles must continue to support any devices previously supported."
官方《App Store Review Guidelines》却没有提到有这样的限制,最后在官方技术 Q&A 找到答疑,参见 Why am I getting device support errors when uploading my app?
iPhone 和 iPad 的排名是分开统计的
不知道大家注意没有,其实就算你发布的 app 是 Universal,但 app store 针对它的排行榜确实分开计算的,因此在做排名统计的时候不要只顾着一个设备的数据。那这个下载的数据怎么计算呢?
- 什么设备下载就算那个设备的数据
- 通过 itunes 下载的算 iphone 的数据(Ocz)
数据来源:How does being a universal app affect App Store rankings
iPhone/iPad 新版本改为 Universal,两者都算新品上线
原理同上,不再细说
iPhone/iPad 还是一劳永逸的 Universal
这是一个众说纷纭的话题,我的个人建议是,如果团队人较少且应用是免费发布,尽可能做成 Universal,减少不必要的维护成本和开发成本(虽然兼容平台会有一些牺牲);如果是做付费且运营的人员可以支撑,可以最快最能抓住市场需求的点发布 iPhone 版本,通过市场反应去绝对是否开发 iPad 版本,等推广达到一个峰值(这个需要自己衡量)时,可以把 iPhone 或 iPad 的改成 Universal 版本,再次赚上一笔。
当然也有从 Universal 版拆分为 iPhone 和 iPad 的策略,不过我个人对此营销手段感到反感。重要的事让用户失去了占便宜的特殊心理。
扩展阅读
Dash 你值得拥有的文档管理工具
Dash 是 Mac OS 的一个文档管理工具,从它第一版发布用到现在,绝对是一个你值得拥有的文档管理工具,因为它还是免费的,你可以从 Mac App Store 购买。但是全功能需要应用内付费,否则有些“小骚扰”。
建议购买 Full Version,目前是半价,人民币 30 元
![]()
特性
- 支持任何一个你想管理的文档(iOS/Mac/PHP/Python/Java/jQuery/Backbone.js 等等)
- 支持自定义生成你想要的文档(AppleDoc/JavaDoc/RDoc/Doxygen/pydoctor/Sphinx/Scaladoc)
- 自动升级文档版本
- 快捷键搜索文档及 API
- 管理和搜索 Code Snippets
- 无缝插入众多第三方应用(Alfred,XCode,Terminal,Eclipse,甚至任意的 App)

功能介绍
这块已经有人介绍了,我就不多说了:Dash:程序员的的好帮手
生成自己的文档
Dash 本身只支持 docsets 格式的文档,也就是由 appledoc 生成的。默认是让 XCode 的 Organizer 管理文档,但是针对这个庞然大物,只是做文档的管理和快速搜索有消受不起。因此 Dash 才诞生出来的。
其实本篇日志主要是讲这块的内容,从上面的特性上面我也说到 Dash 支持生成任何的文档,因为它支持的文档类型涵盖了目前绝大多数的文档格式,针对这块官方已经写了如何转换的说明,这里简单说明下:
| 语言 | 转换工具 |
|---|---|
| Objective-C 文档 | appledoc |
| Python, Sphinx, pydoctor | doc2dash |
| Javadoc | java.docset |
| RDoc | 使用 Dash 自身的 "Ruby Installed Gems" |
| Scaladoc | mkscaldocset |
| Doxygen(源码) | 修改参数生成 |
| docsetutil | 需要创建指定目录结构 |
| SQLite | 官方支持数据库索引,需要创建指定目录结构 |
生成 Flask 文档
因为最近在学习 Flask,过年回家家里没有网络,因为我需要可以查询它的文档,虽然官方提供了 html 和 pdf 格式,但是没有办法快速搜索 API,没法发挥 Dash 的优势嘛,对吧!
Flask 官方提供的 html 文档是 Sphinx 格式的,首先把文档下载到本地,并安装好 doc2dash,另外备好一个 flask icon。
$ pip install doc2dash
因为 Dash 可以让每个文档都有自己的 Icon,否则默认只是 docset 的 Icon,下载完毕之后,执行代码:
$ doc2dash --name Flask --icon flask-logo.png --add-to-dash /path/to/flask-docs
其中 --add-to-dash 是生成完毕后自动添加到 Dash,默认生成好的 docset 文件在当前目录。
好了,Dash 已经可以索引到所有的 Flask API 了,真是太 TMD 的酷了!
维护你的文档
如果你希望把自己生成的文档分享出来,并提供后期的维护升级,你可以提供一个 feed 保持文档的自动更新,这里有一个关于 NodeJS 的例子。
- 你可以提供多个 url 多备份提供文档下载
- 支持 tgz 格式的打包
介绍 virtualenvwrapper
上回说到 virtualenv 的基本使用,这会为了提高工作效率,再次介绍针对于它增强的一个扩展 virtualenvwrapper。
安装配置
$ pip install virtualenvwrapper
安装好之后需要简单配置下,主要是设置独立环境的保存路径:
$ export WORKON_HOME=~/Envs
$ mkdir -p $WORKON_HOME
$ source /usr/local/bin/virtualenvwrapper.sh
如果使用 oh-my-zsh 的可以开启对应的 virtualenvwrapper 插件, WORKON_HOME 会设置在 ~/.virtualenvs/
常用命令
# 查看已创建的环境 $ lsvirtualenv # 创建环境 $ mkvirtualenv <env_name> $ mkvirtualenv -r requirements.txt <env_name> # 切换到某个环境 $ workon <env_name> # 设置当前环境的默认工作路径(下次执行 workon 命令会自动切换路径) (env_name) $ setvirtualenvproject # 查看当前环境已安装的 packages $ lssitepackages # 删除环境 $ rmvirtualenv <env_name> # 创建临时环境 (deactivate 之后自动销毁) $ mktmpenv
查看更详细的命令描述文档。
面粉的种类说明
以下资源收集于网络。
面粉为何物
小麦是世界上栽种最广的粮食。与其它谷物去壳后直接食用不同,小麦表面麸皮坚韧,内部胚乳易碎,难以加工成整粒,所以只能磨制成面粉。
小麦面粉和其它粮食磨成粉的最大区别在于小麦特有的两种蛋白质能够结合形成弹性和延展性都很好的面筋(就是既能拉得很长,又不会断掉),因此只有小麦才能制作出花样繁多、口感各异的面食制品。
面粉中面筋的含量和质量(就是两种蛋白质各自的含量)取决于小麦作物的品种和种植过程,而不是面粉加工过程,但是在加工储藏过程中,蛋白质含量有可能发生变化。
基本概念
面筋:就是从面粉中提取出的(纯筋度)蛋白质部分,可以拌凉皮、做油面筋等中国特色美食。小麦淀粉:又叫澄粉,澄面,汀粉,汀面,就是面粉里除掉蛋白质之后剩下的(无筋度)淀粉部分,颜色非常白,是水晶糕点的主要原料,也是凉皮的原料。
面粉的分类
高筋面粉:又叫强力粉,bread flour,蛋白质含量11.5%以上,筋度最强,用于做面包、批萨、泡芙、油条、千层饼等需要依靠很强的弹性和延展性来包裹气泡、油层以便形成疏松结构的点心。中筋面粉:最普通的面粉,plain flour,蛋白质含量9.5-11.5%,用于做馒头、包子、饺子、烙饼、面条、麻花等大多数中式点心。低筋面粉:又叫薄力粉,cake flour,蛋白质含量6.5-9.5%,可以用按照质量比四份中筋面粉加一份玉米淀粉(其它淀粉也可以)混合配成,适合做蛋糕、饼干、蛋挞等松散、酥脆、没有韧性的点心。自发粉:超市里卖的自发粉是面粉中混入一定比例的酵母、泡打粉和其它化学添加剂,用时只需要加水,而且可以节约发酵时间。使用自发粉应该按照包装上的说明,因为不同的产品配方,使用方法可能有不同。全麦面粉:小麦种子由麸皮、胚乳、胚芽三部分组成,麸皮坚硬难以消化,胚芽含油丰富易酸败,因此面粉由胚乳制成。但是麸皮提供丰富的膳食纤维,非常有益于人的消化过程。所以,全麦面粉就是在胚乳制成的普通面粉中添加磨制过的麸皮,对于面包、蛋糕、面条等不同的用途,所添加的麸皮比例和麸皮大小、形状也各有不同,所以其实全麦面粉并不是整个的麦粒直接磨碎的粗制品,反而是更加复杂的精制品。
中国地区的说明
现在国内超市粮食区卖的面粉主要是适合中式面食的中筋面粉,而标注精粉, 特粉, 富强粉的是表明面粉的加工精细程度,而不是面粉的筋度含量。一般可以用中筋面粉代替高筋面粉或者低筋面粉而不会有明显差别。
饺子粉是中筋面粉,面包粉是高筋面粉。
2011-2012 两年总结
从 2011 年忙碌到 2012 年,这两年的时间经历的很多事物,让我感受颇多,而我惊讶的是 2011 的年终总结居然缺失了。这两年工作上专注了一个领域,也是当前最火热移动互联网。两年放在一起总结也算是比较完整的。
总结从已下几大方面分别详细描述:
- 移动互联网
- 技术
- 户外
- 书影音
- 下厨
- 品酒
- 游戏
移动互联网
在 2010 年终总结也有说过,因为出身 Java,对于 Android 的兴趣以及入手 MBP,又禁不住和 iOS 做个比较,以至于今后踏上了移动互联网的风潮。正好公司和领导也希望组建这样一个团队。于是 @lnsoso 牵头,尽快组建了小团队开始了新的尝试。
团队
新的团队专注于移动互联网的手机平台:Android 和 iOS。应用主要是“房产”这个相对比较垂直的领域。虽然经历了两年的时间,我们还是保持轻小的团队,核心人员加起来也不到 6 个人,更像是一个创业团队。经历了两年的时间,做了一些产品,其中有欢乐,有痛苦,有争执,甚至更激烈的争吵。但是这些都不会阻碍我们的前进,不仅让我们之间在工作中更好的合作,生活上也成为了至好的朋友。
能够和这么出色的移动团队一起工作,我感动非常的荣幸!借此感谢 @lnsoso, @米饭, @SC崔圣, @瑞宇, 小胖, @Design_L, 英军,周奎,庆祥,刘伟和小雨。
角色变化
小团队虽然灵活度很高,但每个人也要担着多项的角色,对于每个人来说都是一种挑战,同样对于我也是。从产品构思,原型设计,前端、后段的代码编写都需要一个人来全程承担,对于程序员来说,相对还算好,缺陷是容易站在局限的角度考虑事情;对于一个项目,不仅仅产品要优秀,更重要的还是要运营的好。对于这个角色我感到有压力。虽然这个行业大家都是在摸着石头过河,本身作为程序员来说,“运营”是一个艰巨的任务。
最初作为程序员来说,总是觉得和产品,设计等非技术人员存在沟通障碍。尤其是上面想法传达下来的本质变化导致开发出来一个四不像的“怪物”,内心会有一种“产品应该这样才符合逻辑,这样,那样修改灵活的更高”的冲动。然后自己真正担当了“产品”这个角色,需要涉及到:
- 扩大自己的思考范围
- 如何和各阶人员沟通
- 和所有参与人员很好沟通并还原真实想法继续碰撞火花
- 更好的在技术上展现
而“运营”这个角色,体现了如何把自己的产品扩散出去。程序员很难从自身的“小宇宙”释放出来。这也是为什么程序员的转型只有两个:架构师和产品经理。
说实话我本身不是一个好运营,也当不了这个角色。接触这个角色能让我在产品和技术上继续更多的思考。
不过“技术”才是我的最爱,其他的角色只是为了更好的让我架构于技术。
产品
房产类的应用其实非常的小众。买房,装修对于大多数人来说都是一次性消费。也很难会有冲动消费。唯一可以有苗头的就是租房业务。然后这个行业由于各种房产中介的介入导致行业的乌鸦瘴气,再加上用户的流动性非常的大,需求周期相对比较长。导致整个房产行业相对比较难做。因此团队初期没有任何创新的应用,大多于公司业务相关:
- 口袋房产 - 专注租房和二手房用户,里面整合了我们很多贴心而且很酷的功能。
- 乐居计算器 - 最给力的房产、家居计算器。汇率第一时间更新,还有贷款的还款提醒,妈妈再也不用担心我忘记还款了。
- 帝都空气质量 - 去年 PM2.5 很火的时候,花了一个星期做的小应用,上线第一天就冲到了天气分类前三名,而且当时我在外地出差,路上构思了很好的宣传语,结果第二天被“网监局”勒令下线了。原因在于应用不能以大公司的名义发布。
- 口袋新房 - 凭借我们强大的房产数据库,打造最新最热的新房资料及资讯。
后续还有些公司的产品由其他部门策划和开发。导致策划的创新项目又无法开展。这点较为头疼。
除此之外其实自己还有一个比较不太惹眼的项目:移动产品通用管理后台系统。由于产品的数据需要不断的交互,加上各种需求和统计需要,实现了很多很棒的功能:
- 各个产品的信息,用于版本更新和应用推荐
- 用户评论的自动采集,Feedback 的反馈和答复
- 产品的用户统计数据
- 统计任意 iOS 产品的发布情况,策略分析和排名情况
- 应用调用接口的权限系统和统计数据
- 健全的日志系统
- 加上 twitter boostrap 的出现,又很好的兼容了移动设备。
根据产品的需求不断的改善优化一个产品的感觉真好。
技术
PHP/Java/Obj-C
工作原因这三个语言哪个都不能丢,需实时关注和研究:
- PHP: 继续保持关注 Kohana 这个框架。更好为服务器端开发,为前端服务。
- Java/Android: 从效率和内存管理上,更好的架构整个框架。
- Obj-C/iOS: 除了自身的知识学习,每次 iOS 升级都有新鲜感,ARC,Storyboard 等特性。推荐 CocoaPod 管理库类。迁移升级 ShareKit 目前已经能够完美支持国内主流分享服务。生产自己的应用。
- Obj-C/Mac:破天荒的为了朋友写了第一个编码转换的 Mac App:EasyConvert,而且还破天荒的收到一个 pull request,感动
- Javascript/jQuery:写过几个豆瓣扩展,全选邀请好友,批量喜欢友邻的喜欢的东西。唉,热心肠就是要多付出。
除此之外还接触了 Python 和 Go。
Python 作为脚本语言在命令行下可以完美处理零碎的工作,加上 OpenParty 网站代码需要改进,而又学习了 Django 框架(好大好重- -!)。
Go 了解不多,个人感觉更像是 C 的变异超集,性能和编写上有了很大的改进,也能很好的调试,甚至是为服务器端服务。但是受于 C 的理念和局限性, Go 也不能脱离一些缺陷的设计。
户外
从 09 年开始和几个朋友陆续做了几次外出。起初爬山仅仅是为了活动筋骨,减少职业病的发生,但后来却逐渐的爱上了这个爱好。工作突然繁忙中断了下来,但对于户外热爱不曾熄灭过。2011 年夏天重新走出户外。
爬山
2011:
- 2011-06-04 参加了活动 去看看初夏的关沟
- 2011-06-12 参加了活动 《小北队》“箭扣长城-那无法抵挡的诱惑”
- 2011-07-17 参加了活动 去十三陵走八陵一库
- 2011-07-31 参加了活动 【逍遥游】7月31日 水泉沟-黄花城-香屯一日穿越
- 2011-08-06 参加了活动 三岔村野长城
- 2011-08-13 参加了活动 【逍遥游】8月13-14翡翠岛第二季优惠活动火爆召集中
- 2011-09-03 参加了活动 【华北小黄山】云蒙天仙瀑 冷甸豪宅任我行
2012:
- 2012-01-02 参加了活动 元旦崇礼雪乡穿越
- 2012-03-03 参加了活动 北京最美乡村-香屯-大云峡谷穿越,感受山谷间纯净的美-徒步、观冰瀑,摄影,赏古长城,一日穿越活动!
- 2012-03-17 尼泊尔文化之旅
- 2012-07-07 参加了活动 7号8号海陀第二届帐篷节扎营 纯属自娱自乐 捡拾垃圾活动。
- 2012-08-04 参加了活动 【三丰队】明长城、东指壶——平谷第一高峰连穿
- 2012-08-11 组织了活动 【漫步人生,活在当下】东灵山重装穿越,露营
- 2012-11-11 参加了活动 【漫步人生,活在当下】风雪箭扣 - 反穿线路,西栅子 - 将军把关 - 天梯 - 飞鹰倒挂
- 2012-11-19 参加了活动 【四野户外】风雪大五台,周末五台连穿
- 2012-12-08 组织了活动 【漫步人生,活在当下】经典线路:香八拉-新人拉练
户外照片:http://www.517huwai.com/photos/11573
骑行
怎么说呢,既然爬山了,怎么能少的了骑车呢,从小就爱骑车,每逢周末都要骑上车在小城里面四处的骑行。虽然没有怎么骑行远路。从心底还是比较热爱的。在 2012 年 05 月末结束了缠绕我两年多的纠结,入手了“美利达”山地车(淘宝购入,远远低于低于市场价。全新专卖店货色)
然后总是频频刷街于长安街,还是没有太远的骑行,到现在最长的路线也就 100 多公里而已。骑行之后才真正发现,骑行原来比爬山过程更加艰辛。尤其是丘陵地带(有感于南京)。
明年争取环青海湖 :)
部分骑行路线:http://www.douban.com/photos/album/34304181/
旅行
- 2011年十一期间的北疆之旅,历时 8 天,花费 8k 上下
- 2012年三月的尼泊尔文化之旅,历史 7 天,花费 5k 上下
两次单身旅行,让我深深的感受到,其实出国游没有那么难,而且更舒服,钱还不一定比国内游贵。
书影音
数据来源于自己书影音的记录。
读书
看了下历年的统计,我 2010 年读过 82 本(有水分)。 11 年读过 20 本,12 年读过 14 本,这两年读的书明显下降了好多,旅游的书在多数,技术的书明显少了很多。而图书馆去的次数也非常少了。来年要继续努力,读书不能再减了!
好评图书:窥视印度,不去会死,简单法则,冰与火之歌,黑客与画家,禅与摩托车的维修艺术。
电影
很遗憾,IMDB Top250,居然历时三年还是没有看完,目前已经看到了第 194 名(不是最新的排名数据)。看了那么多不同类型的电影,终于从脑容量的电影成功转型,认识了一些影人,导演。相比较最近几年的电影,我很庆幸也很遗憾有那么多老电影没看过。
好评电影:IMDB Top250 所以电影 XD
音乐
尝试听古典音乐,而且还听了耶鲁大学的公开课《Listen to music》,让我喜欢上了德彪西的《月光》和柴可夫斯基第一&第一钢琴协奏曲。钢琴和小提琴的配合是那么的颤动心灵。
其实自己听的音乐比较杂,和电影类似,除了重金属,等比较极度喧嚣的音乐外,能接受度比较高。
下厨
总觉得出了开封,我们家的小吃在任何地方要么吃不着,要么没有熟悉的味道。加上新搬的家附近没有一家良心餐馆,结果把自己的身体吃垮了。时隔 3 年依赖重新下厨开灶。本身擅长开封小吃类面点:羊肉炕馍,大肉火烧,锅贴,千层饼,鸡蛋饼,炒凉粉各种折腾。反正吃的自己不亦乐乎。
就在写这篇总结之前,花了一个小时给自己做了几张鸡蛋饼,一碗紫菜虾皮汤。
做饭本着一个原则:不能亏待自己的肚子,嗯!
品酒
在 2011 年体检查出来轻微脂肪肝,而原因有三,我可能涉及到两种:酒精性脂肪肝,肥胖性脂肪肝。为了健康,戒了大半年酒(也在于追求对象要求)。最终于 11 年光棍节之后还是单身开了酒戒。转念的体检发现脂肪肝木有了。由于同年也开始了户外,所以最终也没有判断出原因 >.<
啤酒:经 Tin 大师的推荐,喜欢上了比利时啤酒,尤其是智美和都威,前者是修道院啤酒,口感醇厚可嘉,分蓝/红/白帽,红、蓝智美都会随温度不同而明显呈现味道上的变化,至于白帽国内没见到有卖的;而后者劲儿相对比较大,入口略苦,入喉之后出现甘甜,是一种前期痛苦立马又享受想和下一口的冲动。
白酒:伏特加,托 CNBorn 的福,尝试了纯伏特加的感觉,类似于都威前期,酒性很烈,入喉之后犹如一泉山水滋润着喉咙。这次试喝的是 Absolut Vodka。我不知道是否是否和喝的品牌有差异。
红酒:北京桂花陈酒,经济实惠的最佳选择。入口初体验入桂花糖水一般甜蜜,又夹杂着一些酒心糖的特殊酒味。后劲较大,一不小心很容易醉。
游戏
从小就爱玩游戏,打电动,从最初的掌声游戏机(俄罗斯方块),GBC,GBA SP,PSP 到主机类游戏红白机,街机,世嘉,土星,PS,PS2,电脑游戏,网游。都一概不拉的接触过。但自从开始工作之后接触的游戏基本上降到了最低。
一个机缘巧合,听说烈火战车(Twisted Metal)将于 2012 年情人节发行 PS3 版本。为了这个重温这个游戏,我居然入手了一台 PS3,因此购入了一些比较耐玩的游戏:
- 烈火战车
- 刺客信条:兄弟会、启示录
- 镜之边缘
- 暴雨
- 神秘海域3
- 蝙蝠侠:阿卡姆疯人院
- 战地3
游戏对于来说属于业余消遣,没事时候的解闷工具。沉迷?已经不太可能了。
单纯
原来出了程序员这个圈子,其他地方是那么的妖魔化,我喜欢纯粹的程序员生活。希望自己可以保持这份单纯,同时多一份戒心,防止不轨分子的侵袭。
两年结语
很长时间没有写东西了,这一写有些控制不了自己的思想,最近两年思考的东西太多了,同时又少了倾诉。做的事情也逐渐多了,有时候觉得总会被世俗的东西侵袭,一些理想化,纯粹的东西开始动摇。有时候变得很难把握。感觉曾经的很多东西都在一件件的被磨灭或改变。
2013?
说好的世界末日没有到来,日子还有继续生活下去。该奋斗的东西也不能丢,相信自己的信念,勇往直前吧!少年!