某天我像往常一样逛知乎,突然就看到了一篇文章,文章内容是“马克扎克伯格自己打造的智能家庭 AI — Javals”,我相信看过这篇文章或者知道这个报道的人肯定不少。我当时也没觉得我自己也能打造一个 AI 系统,因为小扎的一套完全从改装硬件电路到中央服务器都是自己实现,我没那么大本事,但我当时正好沉迷于效率软件 IFTTT、Workflow、Alfred,其中我发现 IFTTT 里面有很多 Applets 和硬件有关,这勾起了我的好奇心,我虽做不到小扎那样的工程,但能不能利用市面上现有的产品,打造一个类似的智能家居系统? 首先我觉得,

本文只用作技术交流,切莫干出格的事情,请使用者不忘初心。 事情的起因还是昨天虾神放出了这篇文章,外加上对 Pokemon 的强烈热爱,让我第一次有动力实现一次逆向。准确地说,只是第一次重签名。因为虾神把大部分事情都做完了,留给我们动手的只剩重签名这一步了。然而虽然仅仅只有一步,也让我这个逆向新人整整折腾了 5 个小时。不过收获嘛也不小,补了之前漏下的证书的那些事而且也入门一点逆向。 一. 重签名 .dylib 首先,我们 clone 好虾神的项目。你会看到这样的目录结构:

你还记得当初的梦想吗? 三天前,我突然这么问自己。缘于我去了一次学校,进行毕设答辩。 我突然才意识到,原来我还是个理论意义上的学生。九个月前的今天,我还在这里上学、下课、教室宿舍两点一线;如今,我竟然已经成了工作了九个月满脑子只有工作和代码的准毕业生了。 时间真是个可怕的东西。它让人麻木,磨平人的棱角,让人变成一模一样的工业品。仅仅是搬离学校这九个多月,我就已经变得这么世俗。我已经忘了当初在寝室许下的踏遍五大洲的誓言,我甚至发现和室友的微信对话也已经滑到了列表最下方。以前嘲笑工作了的人失去了年轻时的理想和抱负。现在看看自己,真是讽刺。 今早一睁眼,我发现手机上有一条未读消息,

最近工作陆续生产了一些方便开发的工具类,尽管最终没被收入使用,但不妨碍个人使用,故特此开一篇博文,也记录一些自己踩的坑。 UIGestureRecognizer+Block 简单来说,你可以这样使用 UIGestureRecognizer: [self.view addGestureRecognizer:[UITapGestureRecognizer gestureRecognizerWithActionBlock:^(id gestureRecognizer) { //... }]]; 不再需要繁琐地使用 selector 反射,也解决了代码分离的问题。 实现代码如下: static const int target_

已经被玩烂的题目,纯粹好玩,直接上代码吧。 定义树: class Tree { var key: Int var leftTree: Tree? var rightTree: Tree? init(key: Int) { self.key = key } } 非递归实现 思路:广度优先。从上往下,从左往右。

很惭愧,标题很浮夸,其实就是消息转发啦。想这个标题想了很久,本想着取个形象生动有意思的标题,不想水平不够,于是就搞了这么个奇怪的名字出来。但今天这篇博客的确有那么点一箭双雕的意思。 摆事实,讲道理。我们先看这么一个场景。我正在写一个自定义的 TableView 滚动条,可以实时显示当前 Cell 的编号,比原生的黑条更具可视性。 实现原理也很简单,KVO 监听 contentOffset 然后根据 public func indexPathForRowAtPoint(

最近这段日子,我在北京,见了好多好多的人,有新朋友,有老朋友,听了形形色色的故事。一个晚上,我约了 leon 在车库咖啡叙旧,leon 是我大学时期认识的一个创业小伙伴,就读清华。酒过三巡,leon 突然抛出一个问题:"你认为作为一个个体如何才能在竞争中突围?"我当时没有给出满意的答案,不是我说不上来,而是有太多想说以至于我不满足于只通过廉价的口头表达,我更希望用文字的形式系统性地呈现出来。回到酒店,我总觉得心里塞着好多东西驱使着我写点什么却又不知从何下笔。我冲了个澡,理了理思绪,才写出了第一段话。

一直以来,我都很讨厌「职业规划」这几个字。我认为人的一生不是靠规划出来的,都是走出来的。我前二十几年的人生经历深刻地教育了我一句话:「计划赶不上变化」。然而话虽如此,我们也不能一点不去计划,至少大方向还是要有的。二十多年了,你也应该知道自己擅长哪方面、喜欢哪方面了。以及一些人生观价值观的建立,你也应该知道自己未来想要成为一个什么样的人。所以我就试着给自己拟了个「职业规划」。 1.0 版。 一想到一辈子做个安逸的工程师,老了回想起来的只有整天坐在办公椅上的背影,我就感觉害怕,我觉得这不够 exciting。

首先明确几个函数: 输入一个 NSQualityOfService qos ,输出一个 YYDispatchContext 输入当前的 context,输出一个队列 dispatch_queue_t 输入 NSQualityOfService,输出 qos_class_t 输入 NSQualityOfService,输出 dispatch_queue_priority_t 输入原始信息