跳到主要内容

代码有所能,有所不能

· 阅读需 10 分钟

S1: 封面

大家好,很高兴受邀《美丽中国》接力演讲项目,我是第63位演讲者南川,我的主题是《代码有所能,有所不能》。

S2: 作者简介

这是我的一些基本介绍。

众所周知,自18世纪以来,人类目前已有三次工业革命,其中第三次工业革命也称之为信息革命,而随着个人电脑、手机的普及,这场革命目前也已经渗透到了我们每个人的方方面面,例如微信就已经成为国内社交无法剥离的关键应用,而这些都可以归功于代码的“能”(Capability)。

但类似微信这样的软件在方便我们自身的同时,也对我们做了诸多的限制;或者当你有一些需求在市面上找不到的时候,你可能会希望像稚晖君、手工耿一样自己动手把它实现出来。尽管有时候会有一定的门槛,但能显著提升生活的一些体验,我一般称之为:对生活的控制感

以下就来简单谈谈我在实际生活中碰到的一些需要用代码提高生活控制感的场景,主要分两个大类,第一类是关于个人生活的,第二类是关于公共生活的。

S3: 针对个人生活的项目一:微信聊天记录捕获与分析

项目地址:https://github.com/m-archive/wechat-dbcracker

下面来看看第一个场景,微信聊天记录的捕获与分析。

这个项目需要用到的一些技术包括网络通信劫持、客户端函数注入、加密数据库破解等。

首先我们基于 MacOS 预装 dtrace 脚本去捕获 PC 端微信的启动与数据库加载,获得所有数据库的文件地址与秘钥,继而使用 sqlchipher 进行解密,从而能够自由访问 PC 端微信所有数据库的内容,包括好友、群组、聊天记录等信息,再基于对微信数据库设计的研究,从而写出一套供自己使用的 SDK,并封装成 app 形式,这样就可以非常方便地对微信数据进行备份、管理与transform,比如生成和微信官方界面一模一样的聊天记录截图,或者网页形式等。在某些特定的场合,例如刑事诉讼的微信材料取证方面也有一定用途。

S4: 针对个人生活的项目二:微信之电影拼图

上面那个项目听起来不是很友好,接下来再看另一个也是和微信相关的小项目:朋友圈电影拼图。

做这个小项目是因为我习惯性地使用朋友圈记录自己看过的电影,但是苦于微信的九图限制,不足以完全表达我对电影的理解,但是通过长拼图技术,我们可以在有限的图片数量里表达足够多的信息。

这个项目的目标效果就是点击朋友圈里的一张图片,然后显示的是一个长图,长图是由很多个表达某个主题的子图组成。

比如说我们现在看到的是一张图片,分成了四个小块,但每个小块点开后,可能是2-10张图片组成,所以实际藏了有几十张图片。

不过其实真正更难的问题,是如何拥有与挑选这几十张图片,而背后实际上是更复杂的一个场景,那就是我需要持续地使用对电脑的投影进行截图,但在观看投影时,我又不方便去操控电脑,当时十分苦恼这个问题,并尝试去搜索是否有硬件控制方案。

后来最终自己开发了一个基于 ssh 的内网远程控制程序,将自己的手机当做电脑的遥控器,设置快捷映射,将音量键改为截图键,这样就能用手机的音量键控制电脑里的播放软件同步截图,这几乎是目前能想到的观看投影并整理输出最好的解决方案。

接着就是对主题分类,但这个就不细谈了。总之,大家可以看到,很多时候,仅仅是为了一些小小的需求,我们确实需要写很多的代码,需要贯通不同领域的知识与技能,但只要认真分析、耐心研究、准确实现,这些都不是难题。

S5: 针对个人生活的项目三:豆瓣租房

项目地址: https://github.com/m-archive/douban-renting

由于时间关系,这个基于油猴的豆瓣租房就暂时不做展开了。

S6: 针对公众生活的项目一:隔离食用手册

项目地址: https://github.com/yunyoujun/cook 使用地址: https://cook.yunyoujun.cn/

刚刚说的几个小项目都比较小众、比较个人化,接下来再谈两个公众参与的,第一个是隔离食用手册,是我很喜欢的一个项目。

它创新式地基于供给端给出食谱方案,非常完美地给出了疫情物资紧缺的条件下我们该如何做饭的问题。

有兴趣的朋友们可以体验体验。

S7: 针对公众生活的项目二:Docusaurus

最后再讲一个由Facebook开源的博客框架Docusaurus,目前我的个人博客就是基于这个框架深度定制实现。

对于普通人来说,提到博客,大概会想到十二十年前中国的站长们,不过今时今日博客生态已经有了天翻地覆的变化。github的流行让markdown文件走入程序员视野,并被选用为最广泛使用的文档载体;而react的流行,也为markdown提供了更新鲜、更强大的能力,这使得稍微会一点前端技术的程序员,可以通过docusaurus等框架很方便、快读地搭建自己的博客,并基于markdown的写作体系,让自己的文档系统高速运行着。

这也正是我这几年最感兴趣的一个领域,那就是构建第二大脑,也就是自己的、独有的、可持续化的知识系统,而代码在这个场景里承担了最主要的角色。

S8: 工程师的超能力

最后以知乎某个工程师的一篇回答总结一下代码的能与不能。

用该工程师的话说,就是“工程师的超能力”。

我相信,对于任何一个有追求、有想法、有毅力的朋友,在当今知识爆炸的年代,借助编码能力,是可以极大地提升生活的小确幸与控制感的。尽管代码不是万能的,但是可以给你的生活整点薯条,这大概就是我如此痴迷代码的原因所在了,但愿我们每个人都能收获工程师的超能力,谢谢观看。