Mac被Time Capsule救回来了

背景

RMBP服役的年头进入了第四年,老当益壮,时时让人惊叹“用了这么多年,竟然还丝般顺滑,性能依然强劲”,但是相比起来,同样已经服役2年多(这是第二台time capsule的工作时间,第一台Time Capsule在第一年的时候,莫名其妙坏掉了,于是苹果给换了一台新的)的Time Capsule的存在感就是一种让人完全忽略的状态:静静地躲藏在笔筒、本、杂物的后面。虽然,Time Capsule只要上电就实际上是7×24小时工作的,但是,也只有在极安静的时候,才能注意到一两声硬盘启动时特有的嗡嗡声,仅此而已。

系统崩坏

前面说到了,RMBP是相当优秀的电脑,相比较硬件配置,这更得益于优秀的操作系统。这4年来,电脑平均每天的运行时间不低于8小时,平均每周的关机次数小于1次,但是,意外宕机的次数大约1只手就能数的过来,即使非常非常偶尔地强制重启(其实这里暗含了一个容易被忽视的事实:发生意外重启的次数实际上很少),当再次按下电源按钮的时候,系统也能满血复活。

于是,就在几天前的下午,当我发现finder发生了卡顿,并且在退出了几乎所有的应用后,finder仍然在转风车的时候,我自然而然地选择了强制关机,悠然地夹着本到会议室去开会,一边和访客寒暄,一边自然地翻开rmbp,等待macOS重启复活。然而,这次一切静止在了登陆之后的进度条。

我没有死心,继续重试重启电脑,但是,每次在输入密码之后,进度条在2/3的地方就开始停顿,然后,龟速进展到100%后,就失去任何动静。我故作镇静,重启+CMD+R,尝试用磁盘管理程序来检查是不是文件系统出了问题:主硬盘检测没问题;挂载主分区,输入密码,再急jiu….唉,怎么主分区挂载不上了?再试一次,连输入密码的窗口都弹不出来了。重启再来一遍,一样的故障,第一次挂在主分区,可以输入密码,但是挂载不上,第1+n次挂载,密码输入窗口一闪而过。

抢救RMBP

莫非是SSD的寿命到了?立刻致电苹果客服。本以为电话客服会直接把我踢给Genius Bar,但是出乎意料,MacOS的电话客服非常有耐心,也非常会安慰人,一方面用各种已知的方法,一步一步带着我,尝试帮我解决问题(例如已经试过的急救,以及重置NVRAM 或 PRAM),另一方面,也确认SSD没有问题,让我安心。

当然,这次的问题是比较严重的,重新选择启动盘,系统提示在硬盘上没有找到系统。所以,在电话沟通了1小时以后,最后的结论是:可能是系统文件丢失或损坏,尝试抹掉系统,然后用Time Machine恢复。

这时候,Time Capsule登场了。这时,我产生了两个疑问。第一个疑问:怎么连接Time Capsule。我的TC禁用了无线功能(出于安全和使用寿命考虑),平时是通过ThunderBolt口,连接TB Hub再用过网线与TC相连。但是,在系统恢复的窗口中,并没有有线连接到选项,RMBP上也没有网线插口。客服MM这时,很笃定地告诉我,照往常那样连接就可以。我将信将疑,把TB线插好后,不需要做任何设置,只需要选择从Time Machine恢复,很快就提示找到了TC。

第二个疑问:TC能担负起恢复整个系统和文件系统的重任么?这个问题其实由来已久。由于苹果一贯的黑盒策略,Time Machine的工作一直是在后台默默进行的,备份了哪些内容,备份到了什么地方,保存成了什么文件,其实都是不透明的。这种全自动化的好处是,你完全不会感受到Time Machine在工作,但是,也不知道Time Machine是真的在正常工作还是其实已经挂了,考虑到曾经的TC用坏的经历,这种顾虑更加严重?另一方面,Time Machine以前只是用来恢复一些简单的文件,这次要一次性恢复整个系统,其实难免担忧。因此,从TC中找到可以恢复的系统镜像列表是至关重要的第一步。这是一段让人的焦虑的等待时间,每次小菊花转一圈,你都不确定将会出现的是错误提示还是系统镜像列表,没有预估时间,让人更加紧张。但是实际上,只过了大约1分钟左右,系统镜像列表就成功地获取了,这也是TC工作2年多来,第一次列出这个列表。当看到镜像是大约3小时以前完成的,我一个多小时以来,第一次感到了安心,重要的数据和文件有找落了。

然后,就是开始恢复,没有什么可以做的,感谢了苹果客服,挂了电话,拿着备用电脑,我就继续去开会了。再回来检查已经是接近4小时以后。这时,系统已经自动重启,进入了正常的登录界面,忐忑地输入密码,看着进度条刷地一下走到头,桌面文件慢慢浮现,终于,长舒一口气,RMBP又活过来了!

后记

使用Time Machine恢复系统之后,部分通过激活码安装的软件需要重新注册,例如:Alfred,Hazel,Nums,iPic(联网后自动重新激活)。

惊不惊喜,意不意外?软件更新了

首先,非常感谢大家的关注和反馈。3GPP FTP Downloader作为一个非常小众的工具程序,能有3位数的下载量,其实已经大大超出我的预期了。
这段时间,参加了Reno和Montreal的两次会议,我也对这个小程序进行了评估,发现了几处不尽如人意的地方。距离下次开会时间还早,本想偷偷懒,但是精神洁癖似乎又发作了(其实是因为一不留神,就到写稿的Deadline了),于是意外地有了这一次的提前到来的软件更新。
这次更新包括了Bug修正,文件下载功能完善,以及新增了文件的通配符匹配方式。下载地址:https://pan.baidu.com/s/1-nVwArIehE82TIeNOALH9g
包括:mac、win_x86(32位)、win_x64(64位)版本以及新版的JRE。
启动方法和之前的一致,请参考有用功:3GPP提案下载太烦了,怎么破

Bug Fix

有同学提到了的这个bug,我也遇到了。对于还没有更新到服务器文稿,会生成一个无效的zip文件。在这个版本中,会检查文件的下载状态,避免这个情况的发生。

功能完善

  • 增加了对会场local FTP中文件和public服务器上Meetings_3GPP_SYNC目录中文件的下载;
  • 改进了文件查找方式,可以进行子目录的迭代查找,这个特别适用于下载会场提交的Revision的文稿,这些文稿有的被放在inbox目录,有的被放在update_01,有的被放在update_02;
  • 增加了配置文件的自动生成功能,避免程序启动发生意外;
第一项改进并不是新功能,访问Local FTP可以通过手动(manual)的方式来实现,访问Meetings_3GPP_SYNC可以通过编辑配置文件实现,但是在开会的时候,发现还是做成可以直接使用的方式比较轻松,可以尽可能地减少键盘操作,尽可能不要打断工作思路。
手动模式在设计的时候,主要考虑是应对一些突发情况和需求。但是,在实际使用中我发现意义并不大。在未来的版本中,可能会考虑将手动模式的选项去掉。
文件查找方式的改进源于下载Revision文稿时发现的一个问题:由于秘书会适时地整理会场提交的新文稿,因此虽然大家都会上传到inbox目录,但是可能到了讨论的时候,提交的文稿已经被移到了诸如update_01这样的临时目录中,或者被放要求放进Draft目录;这对下载某篇特定文稿来说,会造成相当的困扰。更新后,下载文件变得更加无脑化,简单讲……你就让程序自己去下载吧。另外,顺手把FTP服务器文件路径的配置文件也改为自动生成了。

新增功能

这次更新最重要的部分是增加了对*通配符的支持。这个新增功能源于一个看起来特别不起眼的事情:查看Agenda。因为要在不同的会场来回跑,因此总是会比较关心主会场Agenda的调整情况。但是,人不在的话,并没有办法及时知道当前Agenda更新的什么版本了。所以,最偷懒和直接的办法,就是把所有的agenda都下载下来,不论是发布在Agenda目录里的,还是Draft目录里的,统统自动撸下来。然后再看现在到哪个版本了。
引入通配符,下载就完全不用关心目录结构这种事情了。
以上面提到的下载Agenda为例:不用区分大小写,在file list里面填上agenda再加上一个*号,按Download,就可以了。

同样,这个功能也可以用来查找并下载其他的文件,例如:Frank的ChairmanNotes:

目前程序里的通配符功能非常初级,仅仅起到一个标记的作用,也就是说输入agenda* ,*agenda,甚至agen*da,效果是一样的。(需要正则表达式的同学,请举手告诉我)另外,为了防止意外下载,在程序中也做了文件数目限制,如果单个文件夹内通配符匹配到的文件数目大于100个,那么就不会下载。

提问时间

有同学留言:
在会场的时候,我也会使用类似的方法,使用everything这样的软件来进行本地检索(macos: spotlight + alfred),这主要是因为开会时候一篇一篇过提案,基本就是跟着主席的节奏走,讲到哪篇跟到哪篇。但是,在会前做Contribution Review或者或者会后整理Report的时候,我还是更倾向于用这样一个工具将一个专题的文件集中下载存放在一起后再操作。同一个主题的文稿放在一个文件夹,再配合一些辅助手段(例如,macos的快速预览功能),不论是阅读还是作批注,比起用搜索引擎按照编号一遍遍反复查找到文件后再处理,都会方便很多。
还有同学留言:
这些情况基本上都是与系统安装的jre版本有关。基本上下载和使用和系统对应的JRE能够避免很多稀奇古怪的问题。我也会尽量多在windows下进行一些版本的测试,就像这样:
目前最新的JRE:http://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html
以上就是全部内容,如果使用中有任何问题,欢迎给我留言。
See you in Sanya!

iPhone升级了iOS11后总是睡死,怎么办?

自从升级了iOS11之后,iPhone 6P经常一睡不醒。

于是,悲剧的一幕总是上演:
当你站在收银台,打算用iPhone付款的时候,当着收银员的面儿,手机就点不亮了,home、侧键,能按的地方全试一遍,没反应。

在后面长长的一溜儿人,纷纷投来的关切的眼光中,你想把手机砸了心都有了。手忙脚乱一通,翻出现金信用卡赶紧付完了款。

但就在这时,你的6P屏幕突然亮了,一通乱闪之后,siri也蹦出来了,若无其事地说,对不起,我没听清楚你说什么。。。。。。

终于,忍无可忍,抹掉手机数据(DFU也可以),重新恢复了一下。

流畅的操作又回来了,:)

印象里iOS11 也用新的文件系统,大约是旧的程序数据和系统数据与新系统和新的应用程序的兼容性不佳所致。

反正,问题解决了,应该是可以挺到iPhone X铺货了。

MacOS 自动化处理 winmail.dat 邮件附件

最近不知道邮件列表里谁的outlook没有升级,收到的多封带有附件的邮件,附件都变成了winmail.dat。

没有了醒目的图标,很容易忽略掉附件,导致很多麻烦的事情。

Mac下的解决方法我试过TNEF’s enougth。

这是尝试的第一个解决方案,虽然能解决问题,但是不方便之处也很明显:需要手动点开一层层菜单,打开邮件附带的winmail.dat,然后再手工把附件抽取出来。

这种繁复的操作,如果是刚刚用mbp的话,我倒也是能接受。但是,现在我比较看中工作流的顺畅程度。这和原先Mail中按个空格预览一下附件看看有没有必要保存的工作流相比,太麻烦了。

第二个解决方案是我现在使用的方案:用Hazel 解决这个问题。

Hazel可以理解为是系统自带的Automator的改良版本,更加简单易用,或者说更强大。唯一的缺憾就是收费

先说下设计的工作流:

在桌面有一个winmail的文件夹,用来专门存储和处理winmail.dat。邮件附件里的winmail.dat直接拖进这个桌面的文件夹(或者放在dock里收藏),然后Hazel会运行一个shell脚本自动提取其中的文件,并且保存到一个带有时间戳的子文件夹中,并打开。处理完附件也不用刻意去处理这个子文件夹,它会在一定时间后自动删除。

btw,因为功能的核心是一个shell脚本,因此这个工作流程的主要功能,也可以通过Automator来完成。

Hazel对winmail这个文件夹的规则如下:

Step1.提取附件,并打开:

其中的脚本如下


#!/bin/bash
timestamp=$(date +%Y%m%d%H%m%S)
mkdir ${timestamp}_winmail
mv ./*.dat ./${timestamp}_winmail
cd ${timestamp}_winmail
tnef winmail.dat && tnef -t winmail.dat | xargs convmv -f GBK -t utf8 –notest
open ./

其中用到两个程序包 tnefconvmv。都是通用版本,最简单的方法是通过brew来安装。brew的安装和使用方法,网上很多,例如这篇,在这里就不赘述了。

Step2. 删除过期文件

Step3. (可选)删除放入这个文件夹的除了.dat之外的其他文件

以上。

转载请注明来自http://gatherlight.info/?p=526, 谢谢!

Mac 下 word to pdf的转换

Mac下PDF是最方便交换格式。

本身MacOS 也自带了PDF打印机,可以将几乎所有能打印的东西,输出成PDF。

但是Mac OS的自带PDF打印功能,不能将Word文档中的目录层级导出为书签。这在看上百页的技术资料的时候,那是相当地不方便。

输出PDF,第一个想到的就是Adobe Acrobat。但是,为一个PDF打印功能单独安装个几个G的Acrobat,还得注册,真是太不划算了。

你一定会说,要Acrobat干什么,Word本身不是就可以另存为PDF吗?这就是本文要说的内容:怎么让word正常导出PDF。

Word不能正常导出PDF吗?

当处理小文件时,通过word的另存为PDF,并选择“最适合电子分发和辅助功能”,便能将文档和word导航窗格中的层级信息作为PDF标签一并导出。

但是,当导出比较大的word文档时(例如几十MB),就没那么easy了。

你可能会遇到这样的恶心事儿:

刚开始,一切看起来非常正常,

Screenshot

 

但是耐心等待了几分钟以后,

Screenshot

WTF?

一开始,我觉得是文档有问题,例如,是不是版本不对啊?换个别的大文件试试?换成doc/docx试试?换成兼容格式试试?但是,当各种尝试都失败之后,我注意到了一个细节:这个导出PDF的功能是“使用MIcrosoft联机服务”。

于是脑洞突然开了一下,会不会是这个服务本身也需要“联机支持”,例如后台自动装载个字体什么的,并且用到的服务器GFW对其访问有限制?

马上尝试第N+1次,挂上全局VPN再来。

这次,居然成功了!

为了验证,换个别的文件,再试。Bingo!

Summarize一下:

需要word转PDF,word本身提供了这个转换功能,并且这个功能(在绝大多数情况下)是可以脱机独立完成的。

如果需要转换复杂的文档(一个典型的特征就是,文件庞大,内容格式复杂),那么,最好保证和电脑和微软的服务器保持正常的网络连接,必要的情况下,需要翻墙。

这里也不得不吐槽一下word的这个缺陷:如果程序本身的功能或者引用的功能做不到对其他应用或服务的0依赖,那么,就别弄成黑盒。可以想见:这个“稍后重试”,得等你找到网络连接,甚至还得肉身翻墙了之后,才能“等到”,完全就是敷衍。(这里我觉得可以对比一下苹果,同样是稍后重试,但是,真的“稍后”能试到结果)。

有用功: OSX的键盘符号

用OSX时间长了,对OSX里面的各种键盘符号已经了然于心了,至少在很长一段时间,我自己是这么认为的。

今天用Xcode,无意中看到了这样的一个热键组合:

我瞬间崩溃了:这个到底是TM什么鬼,从来没见过啊?苹果真的给每个键都画了个符号吗?这不会是opt+xxx按出来的吧?

虽然这东西这么奇葩,见过一次,估计这辈子都忘不了了, 但是总得见第一次。于是便把这个表留下了,顺便把HHKB的键位也补上了。

符号 名称 缩写 HHKB
/ command cmd  ◇/
control ctrl  Control
option opt  Opt/Alt
shift shft  Shift
caps lock  

 fn+Tab

esc    Esc
eject    fn+f
delete del Delete/fn+Delete
forward delete   fn+Del
return   Return
enter    fn+Return(至少键盘上这样写的)
tab    Tab
back-tab   shift+tab
page up  

fn+l

page down   fn+.
↖︎ home   fn+k
↘︎ end   fn+,
fn function   fn

 

 BTW,如果要打出这些符号,在可以输入的地方按⇧+⌘+Space,就可以调出符号输入窗,在技术那一栏(⌘)里。

Safari地址栏直接启动百度搜索失败的修复

症见:

1. 默认搜索引擎设置为百度

2. 在地址栏里直接输入搜索内容,按回车后,没有反应。

 

解决办法:

1. 在地址栏里随便输入点儿东西,例如“papi酱”,别着急按回车;

2. 按cmd+return,这时应该会打开一个新的tab显示safari默认搜索引擎(百度)的结果;

3. 打开safari的preference,清除cookie

 

一些猜测:

如果按照上述过程,解决了问题:

1. 那可能是百度的cookie处理过程出问题了(或者cookie更新了),造成safari的请求处理失败;

2. 直接用step 3应该就能解决问题,不过,有人尝试说不成功。可能是Safari保存cookie的问题;

如果上述过程没有解决问题,可能要考虑如下cookie劫持的可能性:

1. 确保host没有被篡改,查看一下;

2. 确保DNS没有被劫持,换个“8.8.8.8”之类的。

Screen命令

Screen命令

 

编程学习 Linux posts

 

用Mac,常常要和terminal打交道,特别是和服务器交互,写代码,搞搞SDR之类,时常要同时在terminal里进行几件事情。

一般情况下,我会开多个Terminal窗口,每个窗口只负责做一件事情。用OSX的多任务可以非常直观地切换不同任务。但是,在用SSH远程登录的时候,有时候我们还是希望能够尽量在一个窗口里并行的完成多个任务。

screen命令可以很方便地完成这件事情,你可以把它理解成一个console窗口管理器。虽然每次Terminal中只能容纳一个窗口,但是,利用screen可以attache多个窗口在后台运行,通过screen命令可以创建这些并行的窗口,并在窗口之间进行切换。

这里仅列举基本的screen命令,以作备忘。

screen #创建一个session窗口,名称为一个编号,按空格继续
screen -S session_name #创建名为"session_name"的窗口,按空格继续
screen -ls #列出已有的screen窗口的编号
screen -dr xxxxx #连接到session_name为xxxxx的窗口
Ctrl-a d #离开当前窗口回到最原始的terminal窗口
exit #在attached的窗口中一路exit,最后会关闭当前attached的窗口,退回最原始的terminal窗口

相当好用,谁用谁知道。

Numbers 制作弹出列表

例如,想要制作这样一个列表,金额数目为¥10,¥20,……¥200的弹出式菜单:

image

首先,有张空白的表,在表格中填入弹出式菜单的数据选项,这里就是: 10,20,30,40……200:

image

选中金额的内容部分(不要包含标题),选定单元格的内容的格式,这里我们选择货币。

image

在制作弹出式菜单前,单元格内容的格式要先设定好。
然后,再次选中这些将要出现在弹出式菜单中的数据,选择单元格格式,选择弹出式菜单。

image

这时,可以发现这些数字已经添加到弹出式菜单的选项栏目里了。

接下来,我们可以除了第一个数据以外的其他数据删掉,重新选择这些单元格,然后,选择单元格格式,选择弹出菜单。这时候,这些单元格就被清空,并且可以利用弹出式菜单填写了。其实,你不做这步,这些单元格也是可以直接用了,强迫症作祟。

image

 

至于为什么要留第一个数据,其实,留哪个都一样,目的就是将这个自定义的弹出式菜单的格式保存下来。

A fast method to delete every entry in the iMessage

Well, clean the iMessage conversation list was very painful to me, since even with the Cmd+Delete shortcut, I had to press enter to confirm the deletion every time when a conversation entry was about to delete.

 

Here comes the cure:

select the top most message entry that you want to start deletion,

hold opt+cmd

press delete again and again and again…….

No more pop-up confirmation, you just delete them one after one, directly.

 

COOL!