肇鑫的日常博客

肇鑫 / Owen Zhao

独立开发者,主要开发 iOS、watchOS、macOS 应用。

目前在维护 SleepTapRooster Time,以及 Markdown Writer 相关工具。

最新文章

Xbox One S手柄在macOS下的安装使用流程

技术

起因

之前买的北通震动手柄3是有线的。macOS下可以免驱,打一些模拟器的小游戏。不过它不支持Xbox 360模式,Steam里的游戏没法玩儿。

于是我打算买升级版的阿修罗2无线版。可以无线,可以模拟Xbox 360,价格还便宜。唯一缺点是,据说手感不如Xbox One的手柄。于是我想不如加钱买Xbox的手柄算了,Xbox的手柄一共有3种,360手柄,One手柄,One S手柄,分别是有线/无线/蓝牙,其中后两者也可以有线玩儿。

买之前搜索了一下,发现说法是,Xbox的手柄,macOS下虽然可以无线连,但是打游戏的时候,手柄会被同时识别为鼠标,导致没法玩儿游戏,因为会经常点到别的东西。但是实际上这个说法是错误的,或者说,至少它是不适合Xbox One S手柄的,应该指的是Xbox One的无线手柄。

综合比较

  • 北通阿修罗2无线版:可无线、可模拟Xbox 360手柄,价格便宜,做工据说较差。
  • Xbox One S手柄:可无线、可有线,价格贵(大概是2.5倍的阿修罗2无线版的价格),据说做工较好。

于是我买了后者。

测试

第一轮

收到货之后,发现无法连接。原因有两点:

  1. 手柄背面的电池位置,看起来两个电池是并联,实际上是串联的。你要看弹簧片上的正负极标注,一个是正,一个是负。我刚开始以为是并联的。这点还不如很多年前的设计。那时弹簧片一侧是负极,另一边是正极。这个手柄的弹簧片有正也有负。
  2. 微软的快速安装手册的描述是错误的。它说安装好电池之后,按3秒无线连接键,然后Xbox的灯会闪动,就可以蓝牙配对了。这个说法是错误的。正确的操作是电池装好之后,按Xbox标志的按钮,等灯开始闪烁之后,再按住无线连接按钮几秒,这时灯会更快速的闪动,此时就可以蓝牙配对了。

macOS High Sierra下,蓝牙可以配对之后,一些模拟器的小游戏,比如OpenEmu,就可以直接玩儿了。但是Steam的游戏不识别。安装了Xbox 360 Controllers应用,重启之后,无论是否连接USB线,都无法识别手柄。

第二轮

到Github上的Xbox 360 Controllers的页面查看issues,看看有没有人提到Xbox One S手柄的不兼容问题,发现的确有。但是有的人说没问题。

为了定位问题,我安装了OS X Mavericks 10.10,以及Xcode 6.4到Parallels Desktop 13中。我一共测试了3个版本的macOS,10.10、10.12、10.13。我发现前两个重启之后都能自动识别手柄。但是10.13不可以。可喜的是,这次我注意到,重启之后会提示有软件被禁用,到系统偏好设置->安全与隐私查看,果然提示来自开发者“Drew Mills”的系统软件已被阻止载入。点击允许之后,手柄就正确被识别了。

正确流程

有线连接,适用于玩儿Steam平台的大型游戏以及模拟器游戏

下载这个。我安装时最新的是0.16.5版。

英文说明在这里

macOS Sierra 10.12及以前的版本的系统

正常安装驱动,重启电脑即可。然后再升级到macOS High Sierra,可以保证后者也还能继续识别。

macOS High Sierra 10.13

  1. 安装好电池,按Xbox标志按钮,此时按钮会闪动。(这个闪动是比较慢的,不同于蓝牙配对时的快速闪动)
  2. 使用USB连线与电脑相连。
  3. 安装Xbox 360 Controllers应用。如果期间Xbox按钮的闪动停止了,再次按一次Xbox标志,保证按钮一直处于闪动状态。
  4. 重启系统。
  5. 重新进入系统后,点击系统偏好设置->安全与隐私,点击允许。此时有可能会提示你需要重启,如果提示,就重启。如果不提示,就去看系统偏好设置->Xbox 360 Controllers。手柄的灯一直亮就代表驱动安装成功了。
    驱动被系统阻止

伪装成Xbox 360手柄,这样Steam的游戏才会识别

这时Steam的大型游戏也还是不识别,需要再伪装一下。

  1. 打开系统偏好设置->Xbox 360 Controllers->Advanced,点击右下角的Pretend to be an Xbox 360 Controller

伪装成Xbox 360的手柄

  1. 打开你要玩儿的游戏。
    古墓丽影9正确识别了手柄

蓝牙连接,适用于玩儿模拟器游戏

  1. 按Xbox按钮,按钮会慢慢的闪动。
  2. 长按无线连接按钮,Xbox按钮会快速闪动。
  3. 打开系统偏好设置->蓝牙。当出现手柄时点连接。

上面这几步比较简单。主要的问题在于从有线连接切换到蓝牙连接时有些问题。比如你在有线连接时,直接拔下USB线,这时,并不会直接切换到蓝牙连接。Xbox按钮会慢慢的闪,你这时有两个选择:

  • 按住Xbox按钮,直到灯灭。然后再按Xbox按钮,将手柄打开。此时,会自动连接蓝牙。
  • 或者,你可以打开系统的蓝牙设置,先删除掉手柄,然后重复上面的第2步,重新配对蓝牙。

说说Xbox按钮指示灯

它有4个状态:

  1. 慢闪。代表手柄没有连接到电脑,处于等待的状态。此时如果一段时间还是没连接,会自动进入到省电状态。
  2. 快闪。代表手柄等待蓝牙配对。
  3. 常亮。代表手柄已经正常连接到了设备上,可以正常操作。
  4. 不亮。电池没装好。或者手柄处于关闭或节电状态。

电池正确安装后,长按Xbox键可以开启手柄,慢闪。慢闪状态,长按配对按钮,可以配对,快闪。快闪状态,配对成功后,会常亮。常亮状态,连接USB线会变成有线连接。有线连接拔掉USB线,会变成慢闪。

说说Parallels Desktop虚拟机里的Xbox One S手柄

  • 在Windows 10的虚拟机里,通过蓝牙分享可以识别出来无线连接下的手柄。但这个手柄在游戏中无法使用。
  • 在Windows 10的虚拟机里,USB连接的手柄,通过指派给虚拟机,可以在Windows 10里正确识别手柄,并且可以在游戏中使用。另外,安装Xbox 附件应用,可以更新手柄的固件。值得说的有一点,即便是Xbox 附件应用,也仅支持USB连线下更新固件,而不支持蓝牙更新。这个是微软的限制,和虚拟机无关。

没有工信部的投诉,联通你就置之不理吗?
——记29天艰难解决联通手机卡收不到银行短信问题

随笔

联通手机收不到上海银行短信的问题总算解决了。从7月20号开始,到8月18号凌晨可用,共计29天。可以说耗费了一个月的精力。虽然最终问题是联通解决的,但是耽误这么多天,也完全是联通的问题。

我分别联系过京东金融客服、银联客服、辽宁联通客服,上海银行客服、上海联通客服。问题我搞清楚了,但是联通不配合。

在要求联通解决这个问题25天都没能解决这个问题的情况下,这周一(8月14号),我不得不向工信部投诉辽宁联通。

周二(8月15号),我收到联通接收到工信部反馈给它的我的投诉的通知。之后接到联通的电话。周三,上午再次收到联通的电话,让我再次尝试一次,它那边好定位问题。上午沈阳联通创建了跨省协助的工单。下午,再次收到联通电话,说上海联通反馈了。说是我在2010年开通了屏蔽来自上海的业务短信的功能。解开需要1个工作日。让我18号再试。

我问,这个业务是如何开的?联通客服语焉不详。我说我不是想追究责任,我就想问,如果现在一个普通用户,找你开这个屏蔽某省范围的短信功能,能开通吗?对方回答,我不太清楚这个业务。

至此,这个问题应该算是解决了。早在2010年,不知何故,联通为我开通了屏蔽所有来自上海业务短信的功能。这导致我有好多事情办不出,但是我一直都没重视。直到这次,我终于较真了,才解决了这个问题。

由于内容较多,精简为流程图便于理解。括号内的天数是距离我首次向联通请求协助的日期

7月20日(+0天)

round 1

round 2

7月21日(+1天)

round 3

round 4

7月28日(+8天)

round 5

8月3日 (+14天)

打10010反映联通无回复问题。但是还是没有任何回复。

8月14日 (+25天)

round 6

8月18日 (+29天)

手机恢复正常。

记一次CCC4提示Clone出错的故障排除

技术

macOS 10.12的磁盘工具移除了之前的磁盘查错功能,号称磁盘不会再出错,其实不然。今早CCC4(Carbon Copy Cloner 4)提示备份完成但有错误。

ccc erro

点开查看日志,发现已经连续5天备份错误,达到极值,因此弹出特别提醒。查看最早那天,是一个警告,说是一些文件名字太长,没法备份。之后几天就都是错误了。日志内部记录是,有一个文件夹,出现了无限循环的自引用的情况,类似“a/a/a/a.../a”,具体几层我没数。

ccc alert

我删掉了多出来的文件夹,再次点击CCC的clone,但是过了一会儿再看,它又卡在这个文件夹里的".DS_Store"文件的位置。于是我打开磁盘工具,在源盘和目标盘,分别做了一次急救。再次重新运行clone,这次成功了。

仔细回想这段期间发生的事情,几天之前的一次意外断电嫌疑最大。那天突然断电,又马上来电,结果家里的电脑都灭了。当时这台电脑是处于睡眠状态,而非开机,但应该还是受到了一些影响。

结论:当涉及磁盘的故障发生时,我们还是可以使用磁盘工具进行修复的。虽然磁盘查错表面上看没有了,但是其实是被转移到了急救当中。

另外,我还发现,虽然CCC每天都会有一个通知,但是由于它大部分时间都是成功的,所以那个通知我很少看。而今天之所以能发现错误, 是因为CCC在连续5次错误后,使用了提示风格的通知(平时都是横幅的,过一会就会自动消失那种)。为了今后能第一时间收到错误的通知,我开启了CCC的邮件通知功能。它在备份错误时,会发一封邮件到我的邮箱。这样就不用等5天才知道有错误发生了。

Neato BV85使用22个月的感受

评测

Neato BV85买来使用至今已有22个月了。期间增添了底部的抹布。最近更换了电池和边刷的皮带(实际上是个胶皮圈)。

优点:

  1. 自动规划式,清扫速度快,吸力大。我最初买的是小狗品牌的千元机型,是随机碰撞式的。但是用了几次发现吸得不干净,而且几天后它在自动后退时,会发出很大的噪音(摩擦的嘎吱声)。于是就找京东退货了。钱退回来之后,还是想买,但是不想买随机碰撞的了。于是买了这个。Neato用起来还是挺满意的,打扫的很干净,而且只扫一遍,速度令人满意。我家96平方米(房证面积,无电梯),充满电一次就能打扫完毕。
  2. 结构简单,易于维护和修理。我夏天每两天清扫一次,冬天每三天。尘盒平均每2周清理一次。顺便还会摘下边刷、滚刷等清洗。最近几个月由于电池不太行了,需要二次充电才能清扫完毕。再加上这两天边刷不怎么转了,于是我找淘宝我买机器的卖家让他帮我找变刷的皮带,顺便又买了一块新电池。平时清洁还是挺方便的,不需要使用任何工具,徒手把边刷、滚刷等拿下来,清洗晒干就好。换电池也比较容易,用一般的螺丝刀就行。不过换边刷的皮带就没那么容易了。首先是螺丝刀的问题,必须是T10的螺丝刀。我本来有,但是我的没那么深,于是我只好从淘宝又买了一把单独的T10螺丝刀。拆机我看的Youtube上的拆机视频,难度不高,一次就成功了。
  3. 功能完备,绕线能力突出。临时打扫一定区域的功能很实用。比如你做电脑边上吃了一堆零食,吃完之后,只需要把Neato抱过来,让它把附近区域清理一下就可以了。另外Neato也很不容易被线缠住。

缺点

说完优点,再说说缺点。

  1. 价格和保修不匹配。我买的时候是4500,这个还是优惠后的价格。但是保修呢,只有1年。我想一般人花这个价钱买扫地机应该不会想只能用一年吧?的确,美版也只保修1年。但是美版的机器、配件等的价格也都比国内的行货低不少啊。而且1年的保修应该是最少的了。高端的机型只保修1年,令人有些遗憾。
  2. 外壳脆,做工粗糙。虽然不影响使用,但是Neato的塑料外壳的确有问题。比如电池仓拧螺丝的位置,就开裂了。我拆机时,也发现内部有崩掉的塑料茬儿。放尘盒的位置里面,也有开裂的地方。另外,它所有的螺丝都是直接拧在塑料外壳上,没有使用任何垫片。
  3. 清理尘盒的通知过于频繁。这个功能开着时,基本上每清理两次就会提示要清理尘盒。但是打开一看,灰只有浅浅的一层。所以,这个通知功能,对于我来说,后来变成了查看功能。看一看没啥东西,我就又把它盖回去了。
  4. 边刷更换皮带比较麻烦。虽然拆机过程不复杂。但是如果这个皮带属于耗材,需要定期更换,那么这个更换应该像换电池一样容易。
  5. Neato对于能通过的通道宽度,要求过宽。比如沙发和茶几之间,如果想要Neato清扫,就必须挪开较宽的距离才可以。

未来期许

我很少使用Neato的定时功能。因为家里一般都有人在,而在清理时,为了清洁更干净,我会把垃圾桶移开,并且把餐座旁的椅子挪开。说起来奇怪,Neato有好几次卡在餐桌旁的椅子的两腿之间,所以我就只好把椅子挪开了。

期待未来Neato可以同智能家居相连,能够自动在家中无人时进行打扫而不必进行设置。此外,也期待会有更好的app,可以在程序里的扫描地图中直接划定区域作为虚拟墙,而不必设置物理的虚拟墙。

iMac 27 5K 2014 late 故障现象

技术

先说结论

在24小时之内发生了5次问题,其中4次是使用时电脑自动断电并无法立刻开机,需要切断电源并等上一段时间再开机。1次是我主动关机之后,无法再开机,症状与自动断电的相同。

从某次开机到自动断电,最短的时间是30分钟左右。例如下文提到的第三次和第四次是在1小时之内发生的。最长,可能用了整晚都没事。

我个人倾向于这个和系统的负载有关,CPU负载高或系统整体功耗高时,更容易自动断电。我的系统没有安装游戏,因此没测试显卡负载高的部分。

第一次故障

2016年12月21日下午5点10分左右,正在运行的iMac突然断电(屏幕全黑,USB鼠标灯灭)。我开始还以为是停电了,但是看了一下插线板,发现灯都还亮着。

  • 按iMac背部的电源键,没有反应(正常开机会有“当……”的声音)。
  • 拔掉所有外接设备(USB鼠标,USB移动硬盘),再按电源键,依然没有反应。
  • 插拔电源线与插座,换另外一个插口,再试。没反应。
  • 拔开电源线与iMac,再试,没反应。
  • 拔下电源线,将iMac放到床上,打开iMac后盖,拔下内存再重新插上。
  • 只连电源线再开机,正常开机。进入系统之后连接鼠标和移动硬盘。一切正常。

第二次故障

本来这一切就应该结束了。但是我好奇究竟是什么原因导致这个问题。于是晚上我在iPad上搜索类似的故障。

其中,有一种说法引起了我的注意。该说法说,如果是电源的问题,那么你只要不关机,就不会有问题。比如你每次不使用时,都是用睡眠而不是关机,那么就没问题。一旦你选择了关机,那么再开就有一定的几率无法开机。

我一直都是使用睡眠而非关机的,所以这个说法很吸引我。22号上午8点多,我选择了关机。然后按电源键开机,发现的确没法打开了。

8:50的时候,我去苹果网站申请服务。这个时间我记得很清楚,因为苹果的服务是从9:00开始的。

9:00的时候我接到苹果打来的电话。听了我的说法后,苹果说可以安排上门,但是由于当时苹果的内部系统有问题,说是稍后安排好之后再通知我。期间我收到了苹果高级客服的邮件确认。

此时我尝试重新开机,发现竟然可以开机了。然后选择关机,再开机,竟然也都没有问题。于是我给苹果的高级客服写邮件,说明如果还没有申请维修的话,就先停下,我要再测试几天。苹果回复说系统还没有好,还没申请维修。

第三次和第四次故障

收到苹果回复的邮件的时间是上午10点。我使用了一段时间,iMac突然又自动断电了。这一次,我选择将内存插槽更换一下,之前是1、3,我更换为了2、4。更换没有起到作用,11点刚过不久,iMac又自动断电一次。

我只好再次预约了维修。

更进一步的研究

现阶段故障的定位还是太模糊了。自动断电太过随机,我期望可以更快的定位故障。

我仔细回想了一下。这几次故障时的共同点。第一故障时,我在Safari里看在线视频,Parallels Desktop的虚拟机开了两个,一个是macOS 10.12,一个是macOS 10.11,都在升级系统。当时CPU的负载较高。

第三次故障时,我为了进一步的测试,运行了视频转码软件,对系统进行压力测试,也是CPU高负载的项目。

因此,我猜可能是CPU高负载导致耗电升高,然后电源温度过高导致无法开机。

为了测试这个结论,我设计了一个实验。打开转码软件,让它把一个1080p的mkv,转码为mp4。我用手表定时了5分钟。软件显示转码要8分钟。5分钟时间到的时候,我点转码软件的暂停,结果就在我点暂停之后的瞬间,iMac断电黑屏了。

但是这个结论在后来的验证中没能证实。接下来的使用,包括整晚的使用,都没能出现断电的情况。因此,我这里还是没能得到一定能复现问题方式。

macOS Sierra 增强了与磁盘加密的兼容性

技术

之前的macOS,一旦启用了FileVault。在升级系统之后就会无法自动开启远程登录,必须本机登录才可以。新的macOS Sierra,同样的情形下,会自动进入到输入用户名和密码的地方。这样就方便多了。

现在,除非是断电,否则就不需要本机直连服务器了。可以一直远程登录。

网页版微博时间线的问题

随笔

相对于每次的“浪费”加载,新的时间线的思路就是“节省”,节省到什么程度呢?就是每个用户的时间线上的每条微博只从新浪加载一次。

具体实现是这样的。首次使用时,从微博加载到用户浏览器缓存,然后再用时就从缓存里调用,缓存失败也不从微博加载,而是显示一个虚假的正在加载,但是永远也不会成功。

验证方法:刷新微博到最新,然后清空浏览器缓存和cookie,关闭浏览器,再打开。重新登录微博。你会看到一个一直加载,但是永远不会成功。

从孤岛危机获得的vista驱动经验值

最近喜欢上了玩儿crisis(孤岛危机),结果听说最新的驱动提升了fps,看看自己当前的驱动是182.08,而最新的已经是186.18。于是很开心的从驱动之家下载了回来。

兴奋的安装上,打开游戏,玩儿了一会就黑屏了。ctrl+alt+del调出来任务管理器,查看温度,才70℃啊。上网搜索,结果发现有人说这个驱动玩儿crisis会黑屏,说的都是9800gt的用户,而我的是8800gt(9800gt是8800gt的马甲版本)。好吧,退而求其次,卸载掉186.18,安装上了185.85。结果还是黑屏。我怀疑是不是驱动卸载不完全啊。于是卸载掉了185.85。重启之后发现nvidia的控制面板还能进入,显示驱动版本是182.08。但是添加删除程序里面已经没有可以卸载的地方了。

上网搜索nvidia驱动的卸载工具,结果找到的都是04年的。当然不能用了。于是决定采用最笨的方法,下载对应的驱动,安装上再卸载,直到完全卸载干净为止。

在这里,我要感谢驱动之家跟google,帮助我找到了如图的所有驱动。

清理干净了之后,我重新安装上了186.18,结果还是黑屏。安装nvidia system tools监控温度,结果发现最高才75℃。最终,我卸载掉了186.18,重新安装上了182.08。一切正常了。

总结一下,我安装的顺序如下:

1 尝试安装阶段,安装186.18(求新)后卸载(游戏黑屏),安装185.85(求次新)后卸载(还是黑屏);
2 清除驱动阶段,因为我怀疑新驱动不好用是因为旧的没有卸载干净。安装并卸载了182.08,180.48,177.83;
3 尝试新驱动阶段,安装186.18(求新)后卸载(还是黑屏而且温度不高)。最后我还是决定继续用182.08算了。稳定最重要。

额外的收获:我发现卸载掉旧驱动,vista并没有回到没有驱动的阶段,而是变成了回归到上一版驱动。但是这里存在一个bug,就是上一版驱动变得无法卸载了,只能用安装了再卸载这种本办法。而vista这种保留驱动多个版本的方法,使用空间换取了便捷。如果是最求系统速度最快的用户,就应该规避这种方式,每次升级驱动的时候,采取先卸载,重启之后再安装的方式。这样虽然时间会长一些,但是却可以保证系统最大的整洁与快速。

最后,还有一个收获就是我卸载掉了那些多余的驱动之后,c盘增加了好几G的空间。囧