HHKB布局的GH60

很喜欢HHKB的键位,但是静电容的手感不是太喜欢,type-s一直在吃灰。于是萌生了做一把HHKB布局的GH60的想法。
GH60富有富玩法,穷有穷玩法,这次是最穷的玩法。200块钱的洋垃圾键帽,60块钱的poker2外壳,改好弹簧的内胆400块钱,35块钱的屏蔽滑块,总共700搞定。

Read on →

热熔胶修改键帽菊花

最近很流行复古灰白色键帽,流行到几乎每把客制化键盘都要用,好像不用复古灰白色就不是客制化一样。
通常来说选择有以下几种:
1. 较高档的进口键帽比如GMK要上千而且不一定能买到,逼格是非常高的;
2. 其次是原厂洋垃圾拆机热升华灰白套、二色灰白套键帽,一套要700左右,逼格也是非常高的;
3. 更便宜的是G80拆机薄的pbt键帽,菊花大部分兼容现代键盘,一套要200左右,逼格还算说的过去;
4. 再便宜的是太豪二色,复古色140搞定,带7键增补(7x空格、1.75x shift、阶梯capslock)一般键盘都能用,但是逼格太低;
5. 最便宜的是G81拆机键帽,在100以内就能淘到,但是G81定位比较廉价,键帽大多只兼容平衡杆,并不像现代键盘是卫星轴平衡杆双兼容,这个逼格也是说的过去的。

于是很多人买G81的拆机键帽改菊花给现代键盘用,有逼格又便宜,就是改菊花比较麻烦。
网上搜到几篇AB胶改菊花的经验贴,本人手残党,对使用AB胶完全没有信心。而且AB胶粘歪了想抠下来是非常麻烦的。
于是这次摸石头过河尝试了热熔胶改菊花,操作简单效果好,和我一样同样是手残党的朋友可以尝试一下。
此法改pbt键帽出错的话,可以吹风机吹掉热熔胶,于是可以无限重试,并不像AB胶那样重试会非常麻烦。如果改abs二色要重试的话吹风机吹下键帽变形的危险性比较大,最好是有局部加热工具拿掉热熔胶。话说回来,AB胶改ABS二色键帽出错更难重试,因为AB胶失去粘性需要200摄氏度的温度,出错就只能用刀抠了。
先上张效果图:

Read on →

Apple Watch人机交互指南

翻译自官方文档 - Apple Watch Human Interface Guidelines

文档主要分为三部分:
1. 为Apple Watch设计软件的注意事项。包括介绍了watch软件的特点、watch独有的新的交互方式、Glances、Notifications、Modal Sheets、布局、颜色与排版、动画、app品牌化,也穿插了一些设计原则;
2. 各种控件的使用与设计原则。包括labels、images、groups、tables、buttons、switches、sliders、maps、dates、times和menus。虽然控件种类不多,但是和以往相比区别还是比较大的;
3. Icon、image和menu image的设计原则。

苹果的人机交互文档不只是给码农看的,也是给PD与设计师看的。建议PD和设计师们也读一读。

为Apple Watch设计软件的注意事项:

Apple从未有过的穿戴式设备

  1. Personal: 一方面更隐私,另一方面更个人化。带有心率等其它传感器,可以得到比以往设备更多的个人信息。由于是苹果的首个穿戴式设备,从未有过一款设备像apple watch一样如此与使用者紧密相连,这一点在设计应用时要多加注意。
  2. Holistic: Apple watch是软件与硬件的结合。新的交互方式包括Digtal Crown(表冠)、Taptic Engine(触觉反馈+细微声音反馈)和Force Touch(压力感应触摸屏),官方相关介绍传送门。设计App时应当把以上交互体验一并考虑在内。
  3. Lightweight: Apple watch上的软件定义为轻量级的,要求能快速启动,交互简洁、UI简单。iPhone的人机交互文档也是这么要求的,可惜遵守的人不多。这次苹果重新指出了这一点。

UI架构与交互方式

UI类型

App有两种基本样式,基于继承的,和基于平行页面的。

  1. Hierarchical:更像iOS上的导航模式。有推入推出。适合处理复杂的业务逻辑。

  1. Page-based:几个页面横滑切换的模式。苹果希望并列的页面能尽量少。适合处理简单的业务逻辑。

这两种基本架构不允许同时存在,只能二选其一。

用户交互

  1. Action-based:单击操作。在各种各样的控件上点的事件都是。
  2. Gestures:竖滑、横滑、左边缘右滑后退、点击。
  3. Force Touch:大力按下时系统会弹出context menu,作用类似pc上的右键菜单。App内当使用此menu显示上下文可以操作的actions。
  4. The Digital Crown:第三方应用仅可以使用表冠卷动来支持滚动长页面。
Read on →

处理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