使用 FLEX 调试任意第三方应用

本文章的源码已经上传到 GitHub:https://github.com/buginux/FLEXLoader

最近有一篇文章很火,这篇文章的作者发现了苹果的一个私有方法,可以在应用中调出悬浮的调试窗口。调试工具很强大,可以在运行时查看视图层级,还能查看各个类的属性和实例变量,不得不说,这对开发者来说是一件利器。

但是,其实在这个私有方法被发现之前很久,就已经有一个开源的应用内调试工具可以提供类似甚至更强大的功能了,那就是 Flipboard 公司开源的 FLEX。至于这个调试工具的功能有多逆天,大家可以自行上它的 Github仓库进行查看,这里就不赘述了。

破解 Mac 版 Ulysses 试用

本着“如无必要,勿增实体”的原则,一直以来都是直接使用 vim 或者 sublime 编写 markdown 文档的。但是,作为一个程序员,总有一颗不安分的心,现在市面上有那么多优秀的 markdown 编辑器,不去试用一番,总觉得缺了点什么。

经过一轮试用,最终决定使用 Ulysses。其实,像 MWeb,Bear,MarkEditor 这些在编辑方面都是不相上下的,最终选择 ulysses 只是因为它的一个小功能,那就是文档的数字统计和目标功能。对于字数统计之前就一直想要有这个功能,但是 vim 里的 airline 不支持中文字数的统计,而且在提过 issue 后作者表明没有打算实现中文字数统计的功能,因此一直也是个缺憾。至于目标功能,对于像我这种不能坚持写文章的人也有奇效,实在不想写的时候,就给自己定一个字数,然后在写的过程中看着字数一点点朝着目标前进,也是一种相当有效的自我激励方式。

破解 Mac 迅雷离线下载

最近在刷豆瓣的电影 Top250,因此下载需求大大增加了,之前我一般都是直接使用浏览器直接进行下载,现在不得已还是用到了迅雷。

本来想说买一个月的会员专门用来下载电影,然而我立马又想到,既然一直在逆向 iOS,这次何不试试 Mac 上的逆向,把迅雷给破解了呢。

印象笔记 Python SDK 踩坑记

于我而言,一个笔记工具最重要的两个功能就是信息采集和提取。

人脑是用来思考而非用来记忆的,因此我们需要一个外部系统来存储个人化的信息。这一点的体现就在于,我们能随时随地方便地将看到的有价值的信息保存起来。网上的各种博客文章和微信公众号是我的主要信息来源,我的印象笔记配合上剪藏插件就能完美地解决我信息采集的问题。

提取信息最好的办法是搜索,印象笔记在这一点上也是做得很出色。可以说,有了它的搜索功能,基本上我收藏文章的时候可以不需要进行分类了(然而,作为一个有整理强迫症的人,不分类我是不能忍的)。IBM 做过一个研究,让人去找一封电子邮件,有的人喜欢搜索,有的人喜欢平时就把邮件分类。结果搜索的人平均只需要 17 秒可以找到他想要的邮件,而分类的人则需要 58 秒。

虽然印象笔记的搜索功能已经很好用了,但是每次要搜索的时候还是得先打开印象笔记再进行搜索,这一个流程下来,少说也要花掉三四秒的时间,并且还要把手从键盘上移到鼠标(触摸板)上,实在是太费劲了。

iOS 逆向实战 - 钉钉签到远程“打卡”

作为程序员,大家应该都碰到过这样的问题:公司要求加班到 10 点才算加班费或者报销打车费,而你在 9 点多的时候就把活干完了。这时,你是选择强行加班到 10 点,还是选择提前走人不要加班费呢。

所谓鱼和熊掌不可得兼,不过在这个问题上,如果公司恰巧使用了钉钉的考勤系统,我们还是可以做一点手脚的。而这就是这两天我的一个朋友对我提出的需求,伪装钉钉的 GPS 定位,实现躺在宿舍床上也能打卡签到的功能。

我用了最简单粗暴的方法完成了这个需求。现在,再次应这位朋友的需求,把整个问题的解决过程记录一下,顺便把使用 theos 写 tweak 的整个流程再梳理一遍。

源码已经上传到 Github :https://github.com/buginux/DingTalkGPSFaker

工资都去哪儿了

过年就不谈技术了,今天来说说工资的那点事儿。

今天闲着没事干,就对了对自己去年的工资单,发现每个月都要被扣掉不少的钱,排除掉请假等其它的因素,到手的工资比自己预想中的要少不少。虽然一直都清楚这些是扣掉五险一金还有个人所得税后的钱,但是由于神经太大条,从开始工作到现在都没有仔细计算过这一部分的钱,所以一直不知道到底每次的工资要被扣掉多少钱,所谓“五险一金”的福利,到底给我带来了什么好处。

本着程序员的严谨作风,就专门花了半天的时间,把这些本该毕业时就弄清楚的东西给梳理了一遍。

《软件开发者成长完全攻略》连载公告

从今天开始,此博客会持续更新翻译 “The Complete Software Developer’s Career Guide” 系列博文,这个连载博文是《软技能:代码之外的生存指南》的作者 John Z.Sonmez 正在完成的一本新书。他每周更新一章,并发布在他的博客 SimpleProgrammer 上,目前已经完成二十多章。

最近刚看完作者的《软技能》一书,这本书大大扩展了自己的视野,书里面讨论了程序员在代码之外应该掌握的方方面面的技能,包括营销、学习方法、理财以及健身等等,是一本真正以关注“人”为主的软件开发书籍。

而 “The Complete Software Developer’s Career Guide” 这本书从作者宣布要开始写作,并在博客上连载时我就已经关注了,这本书与《软技能》不同之处在于,这本书完全讨论了程序员在技术方面的个人发展,虽然作者是以美国的软件环境来写作的,有些地方跟我国的国情不符,但是我还是觉得不管对于初学者还是有经验开发者都可以从书上学习到不少东西的。

Swift 中的指针操作

默认情况下,Swift 是内存安全的,这意味着它禁止我们直接操作内存,并且确保所有的变量在使用前都已经被正确地初始化了。但是,Swift 也提供了我们使用指针直接操作内存的方法,直接操作内存是很危险的行为,很容易就出现错误,因此官方将直接操作内存称为 “unsafe 特性”。

一旦我们开始直接操作内存,一切就得靠我们自己了,因为在这种情况下编译能给我们提供的帮助实在不多。正常情况下,我们在与 C 进行交互,或者我们需要挖掘 Swift 内部实现原理的时候会需要使用到这个特性。