处理iPhone6、6+标准视图和放大视图 & 新增的[UIScreen nativeScale]方法

标准模式与放大模式

iPhone6和6+的设置(Settings)->显示与亮度(Display & Brightness)->显示模式(View)都带有标准模式(Standard)和放大模式(Zoomed)。
这个功能被引入后,依赖[UIScreen bounds][UIScreen scale]并不能完全确定屏幕分辨率是多大、用户选择了放大试图还是标准视图。比如放大模式下iPhone6读到的这两个属性和iPhone5是一模一样的,而放大模式下iPhone6+的[UIScreen bounds]属性和标准模式下iPhone6的一样。

iOS8中苹果引入了[UIScreen screenScale],可以用来区分不同的显示模式。

Read on →

在Windows上安装Ruby

Mac上使用RVM[https://rvm.io]安装与管理各种版本的Ruby是非常简单易行的。今天心血来潮想在Windows上写Octopress,安装了Ruby,似乎已经没有13年的时候那么难装了。

  1. 下载安装包 访问RubyInstaller下载页,找到适合版本的Ruby Installer和Development Kit。

  2. 安装RubyInstaller:基本上只要双击安装包一直点下一步就可以了。

  3. 安装Development Kit:双击解压下载到的7z自解压文件,将其解压到自己喜欢的路径下。

  4. 按照Development Kit Wiki的指引步骤完成Development Kit安装。
    一般首次安装只要执行以下命令就可以了:

1
2
$ ruby dk.rb init
$ ruby dk.rb install
  1. 检查是否安装成功
1
2
3
4
$ gem install json --platform=ruby
# 成功则最后一行显示 1 gem installed
$ ruby -rubygems -e "require 'json'; puts JSON.load('[42]').inspect"
# 安装成功则显示 [42]

Over

使用BFG Repo-Cleaner清除git的历史错误提交

Git中有时会不小心提交大文件或密码到repo中,然而使用git-filter-branch清理以往的全部提交是非常复杂的。
今天介绍一个好用的工具BFG Repo-Cleaner,可以方便清理错误的二进制文件或密码文件提交。

以下命令中所有的 bfg 是 java -jar bfg.jar 的alias。

1. 克隆一份repo到本地

1
git clone --mirror git@github.com:OpenFibers/openfibers.github.com.git

2. 执行bfg命令移除目标文件:

从历史纪录中删除所有文件名是 ‘id_rsa’ 或 ‘id_dsa’ 的文件:

1
$ bfg --delete-files id_{dsa,rsa}  openfibers.github.com.git

从历史纪录中删除所有大于1M的二进制文件 :

1
$ bfg --strip-blobs-bigger-than 1M  openfibers.github.com.git
Read on →

三年来用过的键盘

Type-s镇楼

入坑

12年的时候,公司的薄膜键盘实在太烂,按的手机关节疼,IT不给换。于是萌生了撸一把机械键盘的想法。
话说有那么一天节假日老婆回老家(当时还是女友)。
前几天她的电脑硬盘被我摔坏了,于是在这天我自己把她的电脑背出来到售后修理。返程途中过一家颐高数码城。当天数码城门口正在露天打WCG我市星际2的决赛,印象中是三星赞助的。完全不会玩星际,天气又非常热,于是直接进数码城上了四楼外设层。

Read on →

自动选用速度快的CDN播放MV in iOS

为什么要做这件事

最近云音乐用户数量要上亿了,用户量增加的过程中总有许许多多以前没暴露的问题。
比如最近好多人反馈MV经常卡顿。从反馈情况看是某个区域的用户访问我们CDN的速度比较慢。
但是如果只是换CDN服务提供商的话,就算这个区域的用户连接速度康复了,也很容易造成另一个区域的用户访问CDN变慢的情况。挑选新的CDN提供商也是个麻烦事。
不管怎样,先不考虑换CDN的事情,客户端层面的访问速度优化还是有必要做的。
既然不把更换CDN的因素考虑在内,一个特定用户的终端连接到每个CDN节点的速度是硬生生摆在那的。
所以要提升访问速度有两个事情可以做:

  1. 降低视频文件尺寸
  2. 选取最快的CDN节点
Read on →

In-App Purchase Walk Through

1. 适用情况

想使用In-App Purchase(以下简称IAP)完成App内付费前,先确定需求是不是能用这个方案来满足。
除了IAP以外,还有支付宝SDK、信用卡等其他方式完成软件内付费。

在苹果制定的游戏规则中,所有在App内提供的服务需要付费时,都应当使用IAP,比如软件功能、游戏道具;所有在App外提供的服务需要付费时,都应使用其他支付方式,比如Uber的信用卡,淘宝、快的打车的支付宝SDK等。

在IAP里,可以出售:

  1. 数字内容:比如杂志、图片、游戏关卡解锁、相机付费滤镜等;
  2. 软件功能:如各种扩展features;
  3. 一次性服务:比如一次语音通话等。注意是「一次性」服务,不是一次「性服务」。

在IAP里,不能出售:

  1. 现实世界的商品或服务:比如刚才提到的一次「性服务」。严格遵守此方案有个好处:IAP 如果被破解,用户无法得到大量实物,开发商也不会有很大经济损失。非要做的话想绕过也是可以的:用 IAP 购买代币,审核通过后用代币购买实物。
  2. 其他the App Review GuideLines中规定的不允许的内容:比如刚才提到的一次「性服务」。

顺便说下,有次大网易的同事分享时提到:使用兑换码兑换App内服务是一条高压线。像Uber和Amazon里允许有码,是因为他们的码是用在现实世界的产品或服务上的。

如果你确定内购需求符合IAP的使用要求,可以继续往下读了。

Read on →

解忧杂货店

这本书与11年开始连载,12年角川书店发行了单行本,不是新书。这几天亚马逊付费榜排行第一。前几天买了,刚刚看完。

三个穷小偷为了跑路,钻进一家三十多年没开张的杂货店。

世界观大体就是这样的:当杂货店完全关上门时,店内时间流逝是要比店外面慢的。而且杂货店可以收到三十年前人的来信并回复来信。来信都是一些烦恼咨询,三个贼居然有模有样的在店内回复了起来。

整本书讲了几个咨询者身上发生的故事,以及店的来历。几个故事层层交织在一起,稍微带点推理小说的意思。毕竟作者是东野圭吾。
Kindle版带X-Ray,翻交织的线索很方便。

整书透过故事描述了日式的理想、亲情和爱,每段故事都挺感人的。
总之是一本非常好的书,很值得一读。

Over

Hello Octopress

Octopress好像挺好玩啊

主题选了Medium Fox,页脚有点奇怪,怎么不是长在页脚上的。。。。