如何解决乱码问题?
相信几乎每一位中文开发者都遇到过中文乱码问题,其表象各式各样,不同编程语言的解决方法也不一而同。但是从本质上来说,表象的背后是相通的原理,不论什么编程语言,解决途径的背后是相同的方法。
相信几乎每一位中文开发者都遇到过中文乱码问题,其表象各式各样,不同编程语言的解决方法也不一而同。但是从本质上来说,表象的背后是相通的原理,不论什么编程语言,解决途径的背后是相同的方法。
我们在 Shadowsocks 源码分析——TCP 代理中分析了 TCP 部分的源码,UDP 的实现比 TCP 简单不少,同时代码结构上与 TCP 又有所不同。本文将在假设读者已经看过了前面几篇文章的基础上,对 UDP 部分的实现作分析。
一年一度的年终小结又到了,今年似乎做了不少事情,又似乎没做什么,是时候写下来好好的审视一下了。
Shadowsocks 是一款性能很不错的代理工具,它的高性能体现在两个方面:速度快、资源占用少。相信你在读完「协议与结构」和「TCP 代理」这两篇文章后,就能理解为什么 shadowsocks 的速度快了1。资源占用少主要是因为 shadowsocks 使用了事件循环而不是多线程,另一方面,及时的进行超时和异常处理,能够将空闲的资源回收再利用也是原因之一。本文基于 2.9.0 版本的源码介绍 tcprelay.py
如何进行超时处理。
Shadowsocks 源码分析——协议与结构 已经对 shadowsocks 进行了大体上的分析,我们进一步的深入,来了解 shadowsocks 真正的核心——TCP 代理。
Shadowsocks 是一款著名的 SOCKS5 代理工具,深受人民群众喜爱。它的源码工程质量很高,十分便于研究。不过当你真正开始读源码的时候,会有一种似懂非懂的感觉,因为虽然它的大体框架容易理解,但是其中的诸多细节却不是那么简单明了。
本文将基于 2.9.0 版本的源码对 shadowsocks 进行分析,希望读者看完以后能对 shadowsocks 的原理有个大体上的认识。为了行文简洁,在示例中我们用 ss 指代 shadowsocks。
为了读懂 JOS 的代码,最近学了一波汇编。主要是通过粗略的过一遍 OpenSecurityTraining.info 上的 Introductory Intel x86 课程 来了解大概,因为已经学过一次,所以只要捡起来直接看代码就行了,遇到模糊不清的地方就详细看看 PC Assembly Tutorial。
Introductory Intel x86 课程上有个很有趣的逆向工程作业——拆除「炸弹」。「炸弹」是一个二进制可执行文件,由 6 个阶段和 1 个隐藏阶段组成,每个阶段都会读取用户输入,只有特定的输入才能通过这个阶段,在通过所有阶段后,炸弹就被成功拆除了。之所以说它有趣,是因为:
本文将一步一步介绍怎么拆除炸弹。关于炸弹的详细说明请戳:CMU binary bomb challenge,下载「炸弹」请戳:bomb32.tar,查看答案或者帮助请戳:loggerhead/CMU-binary-bomb-challenge。
一直对 Python 的 import 机制不甚了解,这次在写 Easy-Karabiner 的时候就踩坑了,顺便了解了一下,发现这玩意儿还不是那么「符合直觉」,遂写篇博客讲讲。
如果你常常使用 GitHub,稍微留心就会发现,不少项目都有勋章(badges),那这些勋章有什么用呢?要怎么给自己的项目也「戴上」勋章呢?
呜。。写小结完全是为了督促自己一把,顺便理一理过去一年自己把时间都花在哪了。就像理财,不怕亏损,就怕花得不明不白。很具体的也没啥好说的,就随便过一过好了。