WWDC 2015 带来的新玩法

WWDC 2015 更新了五大产品线:OS X EI,iOS 9,watchOS 2,Xcode 7,Swift 2.

1. OS X EI

Metal APIs

Metal是一个开销极低的一种访问 GPU 的框架。
Metal framework 提供了 GPU 加速的先进的3D渲染和数据并行计算能力。
Metal 提供了流水线式的 API(streamlined API),预编译着色器(precompiled shaders),以及高性能的多线程支持。这些 features 可以帮助你把你的游戏或 app 的性能提升一个档次。
Metal 最主要的目标是把一部分的CPU 工作交给 GPU 做。

相关资源:
Metal Home Page
Metal Programming Guide
Metal Shading Language Guide
Metal Framework Reference

Read on →

OSX各种实现毛玻璃效果窗口的方式与比较

毛玻璃窗体是10.10中新增的效果. 比如Finder的左边栏.
本文只对10.8, 10.9, 10.10三个版本进行讨论. 我的App未对10.6和10.7做任何支持, 此处也不予讨论.

第一种方式: NSVisualEffectView

这是10.10中新开放的API, 只能在10.10的runtime上使用.
如果需要上架App Store, 这也是在10.10上完成毛玻璃效果的唯一方式.
首先为NSView增加扩展:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
@interface NSView (Vibrancy)

//Returns NSVisualEffectView
- (instancetype)insertVibrancyViewBlendingMode:(NSVisualEffectBlendingMode)mode;

@end

@implementation NSView (Vibrancy)

- (instancetype)insertVibrancyViewBlendingMode:(NSVisualEffectBlendingMode)mode
{
    Class vibrantClass=NSClassFromString(@"NSVisualEffectView");
    if (vibrantClass)
    {
        NSVisualEffectView *vibrant=[[vibrantClass alloc] initWithFrame:self.bounds];
        [vibrant setAutoresizingMask:NSViewWidthSizable|NSViewHeightSizable];
        [vibrant setBlendingMode:mode];
        [self addSubview:vibrant positioned:NSWindowBelow relativeTo:nil];

        return vibrant;
    }
    return nil;
}

@end
Read on →

如何优雅的使用60%键盘—-在所有App中使用Control+P、N、B、F代替上下左右

最近新宠是各种GH60,都没有独立方向键,按FN组合键是非常远的,刷固件修改按键也颇为不便,用软件修改就方便多了。
经常有软件不支持Control+P、N、B、F做上下左右操作,于是想到直接把Control+P、N、B、F改为上下左右。

OSX上可以用Karabiner自定义按键,可定制程度非常高,其前身是Keymap4MacBook,已开源在https://github.com/tekezo/Karabiner

首先从官网下载一个最新版并安装好。我需要将将control+P、N、B、F修改为上下左右,在预置中找不到相应设置。直接在Misc & Uninstall页面点击Open private.xml,修改这个配置文件可以完成各种高度可定制化改键。

Read on →

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 →