The Year 2020

我不经意间才发觉,2020 年过得如此之快。

Read More

The Year 2019

Read More

获取 macOS 网易云音乐的正在播放 —— 方案改进与 Mach 内核的探索之旅

在前文中我们结合 LLDB 验证了在 macOS 版网易云音乐的 - (void) refreshDockMenuTitlesForPlayLoadModel 函数中获取当前播放歌曲信息的可行性。同时,也发现了如果直接用 LLDB 解决获得正在播放歌曲信息的话,即要严重依赖 Debugger,又要接受 LLDB 常驻运行时内存占用较大的问题。

LLDB 真的那么神奇?

如果我们跳出盒子重新思考这个方案的话,就会发现之前使用 LLDB 的时候无非是使用了以下的几个功能:

  • Attach 与 Detach 目标进程
  • 分析进程的虚拟内存布局与 Mapping
  • 设置断点
  • 捕捉触发断点的事件
  • 恢复断点处理后的程序执行流程
  • 解析指针所指向的内存中存储的 Objective-C 对象(如 NSString)

也就是说,如果我们在自己的程序中实现了以上这些功能,也就可以脱离 LLDB 来实现获得当前播放信息的需求。

Read More

获取 macOS 网易云音乐的正在播放 —— 使用 LLDB 验证思路

8102 年和 9102 年可谓是 Virtual YouTuber 爆发的时代,每天的乐趣也多了一项去 YouTube 看可爱的 VTuber 们唱歌玩游戏和闲聊日常,这也让我想起来以前在哔哩哔哩上看绘师们直播画画的日子。

macOS 的用户数量相对于 Windows 的用户数量来说还是差距不小的,使用 Windows 进行直播的主播们应该还是占有很大比例的。而直播中又经常会有使用到 BGM 的地方,这里便产生了一个将当前 BGM 的信息显示在直播画面上的需求,有的主播选择直接将播放器放在直播画面中,而有的则选择了使用插件来获取软件当前播放的歌曲信息,这些插件也多是为运行在 Windows 上的音乐程序而开发的,有的是依靠取得窗口标题来获得当前播放的歌曲信息,一般来说能获得歌曲名与歌手名和/或专辑名就足够了;还有一些插件依靠分析网络请求来从服务器响应的 JSON 中获得歌曲信息;而在 macOS 上也有读取网易云音乐在本地存储的和网络请求相关的历史文件来获得歌曲信息的方案,不过我测试时似乎并不是那么好用。这些插件多是和 OBS 配合使用,毕竟 OBS 有一个很好用的功能——将文本文件的内容显示在画面上。外部插件写入文本文件,OBS 读取文本文件,一个很简单的管道就产生了,虽然并不能保证安全。

Read More

The Year 2018

不知不觉又到了年终总结的时间了,今年的主题是「匆匆」与「远方」。

请点击 https://mak1t0.cc/2018/ 前往页面。

同时也欢迎在本文章下留下你的评论〜

祝每一位小伙伴新年快乐,新年继续一起玩耍。

晚安!

Makito

USTC Hackergame 2018 小结

最近一边在前后端开发实习一边在复习准备考试,还是挺忙的,或者说,嗯,忙到爆炸。拖这么久才更新博客,顺便也更新了自己的 Journal. 主题。

这大半年始终处于迷茫之中,心情一直不是很好,只能经常找些事情做一做。刚过完十一假期的时候,群里有人发了个链接,看了看是 USTC 发起的 CTF 模式的线上竞赛[1](其实是游戏啦)。最终的参与人数大概有 2500 人?因为自己比较弱,我最终只拿到了 #37 的排名[2]

不过既然是想着找点事情分散注意力,还是重在参与,解题的过程不还是挺有趣的么。

Read More

またね、日本。

十天的日本之旅结束了,本来这个时间已经应该在飞机上了,但 PVG 的天气不好导致航班延误。借此机会,我又可以在此多停留几个小时,于是便在机场打下这段潦草的文字。

十天前,我踏入了这片陌生而又莫名熟悉的国土,开始了一场「奇妙之旅」。

陌生是因为身边的人们都讲着现实中不常听得到的语言,即便能够听懂一些,这种陌生感也在所难免;而至于莫名的熟悉感,就说来话长了。

人们似乎很喜欢做「圣地巡礼」的事情,不论是演员偶像去过的景点餐馆,还是动画电影作画的取景场地,当它们就出现在人们眼前时,仅仅是既视感就足够强烈了。

Read More

Google I/O'18 超简略内容提要

简单地整理了一下前一个半小时的内容,可能有不全的地方,敬请谅解。

Read More

译・存在于瑞士的无形语言边界

原文来自 BBC Travel
原文链接 http://www.bbc.com/travel/story/20180325-switzerlands-invisible-linguistic-borders
原文作者 Eric Weiner
译者 Makito

Röstigraben 的直译之意是“土豆饼鸿沟”(在法语中也称作“土豆饼屏障”或是“土豆饼之幕”),最早出现于世界第一次大战时期。当时,法国与德国交战,中立国瑞士的居民因语言而产生分歧,法语区的人们同情法国,而德语区的人们支持德国。Rösti 是一道传统的德瑞风味菜肴,主要由煎土豆制成,马铃薯作为主要食材,有时还会配以培根、洋葱和奶酪。虽然这条顺着萨林河(Sarine)走向的“鸿沟”并不在地图上,但这条思想的边界还是被居于瑞士的人们从小铭记在心。

Read More

比念诗还简单 —— Let's Encrypt 泛域名证书申请体验

今天 Let’s Encrypt 官方也宣布正式对 ACMEv2 和泛域名证书提供支持,想必经常折腾 SSL 证书的同学对于 Let’s Encrypt 这个致力于免费、开放以及自动化的证书颁发机构应该是很熟悉的。

之前 Let’s Encrypt 提供的证书是单域名的,因此新的子域名需要申请签发新的证书。而我一些域名下依附的 API 较多,每次改动子域名都是一套麻烦的操作,签发后再维护一大堆碎片化的证书实在是很让人头疼。

这次趁着机会,我来申请一个泛域名证书,这样今后也会方便许多。顺便我也会记录下申请的过程,方便需要的同学参考。

Read More