Mac 上自带的 Preview.app 是我日常使用频率非常高的应用软件,可以用它打开图片,阅读 pdf 文档。近期看论文喜欢直接在电脑上圈圈画画做批注(感觉比以前用 iPad 看效率高一点),然而 Preview 有一个严重的 bug,它间歇性地不保存我的批注,可想而知,当你累死累活做了一大堆批注和高亮,过一天后打开文件发现一切都消失了,你的心情会有多糟糕!一开始我一直以为自己没有正确的保存,但出现的次数多了就不是我的问题了😂

之前 Preview 有一个关于搜索的 bug(现已修复),虽然有点难受但也不影响正常使用,但这次是直接消失的 bug 就有点难以接受了。。

网上搜到一篇文章分析了 Preview 是如何处理批注的,以及为啥会出现高亮消失的情景,这与高亮批注的存储形式有关。正如作者所说:

Preview isn’t, of course, a ‘serious’ PDF editor.

是时候考虑考虑其他的 PDF 阅读器了!之前在 iPad 用过 PDF Expert 觉得特别好用,但它 mac 版本的价格让我望而却步…准备还是用一段时间免费的 Skim 看看,Skim 的缺点就是注释文件单独保存,跨平台和分享不太方便,但先试试吧~

日渐窒息…没有达到某院士“12小时”的下限,但已经感觉自己要吃不消了😭

如何提高效率啊啊啊啊啊?但我认为我目前的执行力已经达到了巅峰,无欲无求,只有学习和工作。。是任务太多了吗。。

几个星期前就想开启一个 30 days challenge,push 自己早睡早起,但以目前这个情况,真不知道哪一天能按时 🛌

PS: 周一那天老爸实在看不下去我每天宅着,带我出去晃悠了一下,但实际上为了出去,前一天晚上熬夜到了X点(我不敢说出来🤦‍♀️)

都说“吃一堑长一智”,而我却被同样的石头绊倒了两次,记一次难忘的 debug 经历。今天本是个好日子,照猫画虎地 archive 了整个项目,点击 Distribute App 后选择 Copy App,点点点,我的第一个 Mac Application 成型了!✌️

正当我兴高采烈想和朋友分享我的喜悦时,现实给我泼了冷水,打开 App 居然没有声音!!作为整个 App 的重要功能,声音可一定得有呀!但是 release 的 app 怎么调试呢?前期没想到调试 release app 这点,像个无头苍蝇一样到处乱改,最后可想而知什么都没干成,浪费了时间。直到我不经意间右击 Show Package Contents,在 MacOS 文件夹下看到一个终端的图标,打开,发现它跟 Xcode 下面的 Console 功能差不多,可以看到输出。终于有点路子了,写了一大堆 print 语句,发现我调用的 AVAudioPlayer 相关的所有方法都返回 nil。追本溯源,找到 AVAudioPlayer 的初始化代码,发现自己用了 try? 但是没有 catch 错误。(…) 最终通过输出 error 发现是音乐文件没有 read 权限导致。啊啊啊,那不是我在 debug 最初遇到的那个错误嘛!

嘤!Debug 和 Release 模式是分开来的!

总结:

  1. debug 要讲究方法,首先得知道有什么可用的工具,其次从源头出发,项目肯定是分模块的,从有问题的模块出发追本溯源。
  2. 可能出现异常的代码不要图简单写个 try 完事,catch 打印一下错误信息。
  3. 使用 Xcode 开发 Cocoa Application 时注意项目的设置,很多地方区分了 Debug 和 Release 两种模式。

最近在捣鼓 Tasker 和 钱迹的联动,基于b站大佬分享的原型做了一些小改动,本想自己写一篇博文,但今天搜资料的时候发现已经有人写出来了:从通知实现钱迹 Tasker 自动化记账 - 少数派。这篇文章展示的效果比较基础,但基本囊括了所有要素,只需要按照个人需求照猫画虎就行,有兴趣的朋友可以瞅一瞅。目前对这个自动化记账没什么新想法,要是我能有所创新就写一篇文章出来,没有的话就作罢。看少数派这篇文章收获还是有的,可以提供 Pushbullet 的服务自定义消息推送,这可比比每次自己发红包、转账做测试方便多啦~

嘤嘤嘤,赶任务到现在快凌晨1点才搞定,每次我都高估自己,收集资料也不是件容易的事呀。

主要是想记录一下晚上和老爸无意间的对话,爸爸谈起做父母的心态,既希望孩子出息,又不希望孩子出息。培养了个出息的孩子远走高飞,等到自己晚年却发现无人依靠;只有平庸点的孩子才属于自己。爸爸这时又想到龙应台的那句话,特意念给我听:

孩子,我要求你读书用功,不是因为我要你跟别人比成绩,而是因为,我希望你将来会拥有选择的权利,选择有意义、有时间的工作,而不是被迫谋生。当你的工作在你心中有意义,你就有成就感。当你的工作给你时间,不剥夺你的生活,你就有尊严。成就感和尊严,给你快乐。

霎时眼角酸酸的,想象着一位孤独老人在家想念孩子却无法见到孩子的酸涩。曾经在豆瓣一刻上看过一篇文章《你不要回来》(现在找不到了),就是这般场景,当时看了一遍又一遍,耳边一直萦绕着老人家鹦鹉的那声“你不要回来”,是真的不想儿子回来吗?

今天尝试了以下苹果的软件库乐队 (GarageBand),简直绝了!功能强大,完全没有乐理知识的我随便折腾的音乐都好好听,创作欲爆棚!

刚刚在 Github 新建仓库然后上传本地的 Git 文件一直报错,发现 Github 把默认分支 master 改名成了 main,delete + add Repository 好几遍才发现问题在于我的本地文件夹不是通过 clone 创建的,需要指定 --allow-unrelated-histories。我很好奇难道我之前没这样干过嘛,居然今天才发现这个问题。顺便如果不希望使用 main 作为分支名,可以通过 https://github.com/settings/repositories 更新。

正在赶进度,隔壁老爸在看电影,隔音效果不好能听到背景音乐,特诡异,处处弥漫着阴谋的味道。我不禁思考:如果存在一个没有听过音乐的人,让他听听这段音乐,他会觉得恐怖吗?我们究竟是后天被训练形成的神经回路,还是这音乐本身就会让人感到毛骨悚然?

实在不想做正事,翻了翻博客建立之初写的每日「日常记录」没想到在那段时光我好有想法。我经常惊觉过去的自己是这么的棒,比如在组会上被提问当时竟然能听懂问题并回答,事后回顾起来觉得不可思议。我自觉自己是一个反应迟钝的人,当年达叔就公开说坚决不做我开的车怕出事,我问为啥呀,“因为你反应慢,从和你一起创新实验答辩时就有深刻的感受”。

有点打击人,但有时候确实如此,大三大四的创新实验简直是我的煎熬,经常周末扛着重重的仪器设备到户外晒大太阳收集实验数据,由于设备不定期故障可能花个一整天还没什么结果,大半个学期都在收集数据,于是答辩的时候我真不知道我能说点什么,尽管苦是苦了,但没有技术含量的活我觉得不值一提,遇到老师的质疑难点在哪里,我什么都说不出来,还是达叔帮忙打圆场。不过幸运的是,后来靠着光正学长杀出一条血路,还发了篇论文。不过我至今也没搞明白为什么我用 Pytorch 写的代码总训练不好,而学长用 Keras 同样的模型 batch size 能设置得很大而且还训练到最后还像模像样。

在 UCI 和大家一起做 PPG 项目时也是这样,我其实不看好这个项目,看 related work 貌似已经被做透了,事实上,最后大家也只是复现某篇论文而已。我内心很羞耻,心里有个小人叫嚣着“你不过是拿了别人的工作,还没完全复现出来,这有什么值得展示的呢”。但五木和达叔同学都是很会表达的人,他们答辩都很有一套,于是这个项目最终以还不错的课程分数结束了。后来我离开 UCI,五木把这个当作毕业设计,我帮他代交所以翻了翻内容,还是当年答辩的内容…

我的反思:要求高是好的,但是不要苛求自己刚开始一个新领域就有所创新;保持自信,善于抓住工作的难点,善于表达自己的 contribution。

好久没 update 碎碎念了,刚结束完一个大项目,写写感想。

帮助一个同学写用于申请的 research proposal,他未来想研究 computational thinking 这一领域,所以过去一周恶补了这段知识。这个概念最早是由谁提出来的不太记得了,现在大家公认的把这个概念发扬光大的是周以真教授(Jeannette M. Wing)可以去听听 Youtube 这段演讲,周老师讲话特别有激情,快来感受感受她独特的魅力吧。

但我想说的不是计算思维怎么怎么滴,而是从另一个角度出发。前不久看了一本短短的科幻“小言”,以我最爱的银河帝国系列为蓝本,人类制造了高级机器人,然而几亿年之后机器人越来越厉害,最终它们背叛了人类。小说的刚开始,呈现在我面前的就是一个以机器人为核心的世界,它们是银河的主宰,像灭霸一样(比灭霸强,它们是绝对控制)试图控制银河系中各个物种与生态之间的平衡,具体操作就是如果某一物种发展太快,种群数量太大,它们就试图灭族。机器人世界的个体都以编号命名,编号越小说明地位越高,1号为机器人世界的主母,它有点类似盖娅般的存在,拥有整个机器人世界的资料和记忆,但又有点不同,我理解的盖娅是一个大生命,她是所有生命的集合;但这里的主母有点类似《Rick and Morty》里的 Unity,更像是一个个体同化一群个体然后控制它们。整个故事发生在川陀,女主是机器人,男主是人类,后面的剧情可以猜到了,就像《西部世界》那样,女主最后被删除记忆修改程序。。

培养计算思维固然很重要,但是过犹不及,上帝最好的创造就是赋予人类情感,这让我们可以追求个性的发展,世界因我们而多姿。试想一下,如果将来要是研究出来人类本身是 programmable 的,那是多么可怕的一件事呀!我们的感知、记忆、情感,都是可以伪造的,我们日复一日执行着着设定好的任务而不自知…这大概就是科学发展的两面性,我们既期望崭新的技术和发现改善人类的生活,但同时我们也害怕自己某一天被科技反噬。