Skip to content

Instantly share code, notes, and snippets.

View zhengkai's full-sized avatar
🎯
Focusing

郑凯 zhengkai

🎯
Focusing
View GitHub Profile
@zhengkai
zhengkai / law-of-survivors.md
Created March 21, 2025 02:59
幸存工程师律法

幸存工程师律法

我知道大部分人并不想当专职的工程师,但是,如果你的工作里有一部分是用文本编辑器写代码、并用这些代码跟别人交流的话,应注意一些最基本的规范。使用“幸存”这种耸人听闻的字眼是为了强调,这些是下限。

我认为这些小的细节背后的原因是如此不言自明,是一眼区分一个人是否适合将代码作为职业生涯的标准。但让我沮丧的是很多人可能一辈子都在业余的沙漠上打转、写着没人在乎的代码、因为缺乏起码的规范而在调试上浪费了无数时间、出了问题会抱怨“这谁能想到啊”,最后依然理直气壮地反问“又不是不能用”。

额外说一句,下面都是零碎的知识点,我建议每个人都能完整读完《程序员修炼之道》,而进读一读《代码大全》。

TOC

@zhengkai
zhengkai / chang-ip.md
Created November 15, 2024 07:15
使特定端口仅限特定 IP 访问

登录 ssh 时,sshd server 会赋值 $SSH_CLIENT,其中包含来源 IP

所以将 change-ip.sh 部署到目标机器上

ssh 主机名 "~/change-ip.sh"

即可使目标主机上的特定端口仅限 ssh 来源 IP 访问

我将其用于限制某个 ss 端口仅家里可用,感觉能更安全谢。如果日常使用需要记录自己的 IP 并在发现变化时 ssh,还需要考虑重启后 iptables-restore /etc/iptables/ss.v4

@zhengkai
zhengkai / base64fix.md
Last active October 18, 2024 10:29
base64 fix

我发现 xxx 这边用 base64 的方式用错了

我离xx组之前,跟某A对一个接口,当时他就给我这种错误的方式,我当时就那一个接口,我让他改了,但是他没能明白我说的什么意思,我今天是给某B那边做东西才发现所有接口都是这种方式

就是咱们用 hex 表达的时候,其实是两个字符对应一个字节,比方说单个字母 A41Z5A,空格是 20

所以 md5 用 hex 表达是 32 个字节,但其实二进制(binary)形式是 16 个字节

base64 比 hex 紧凑些,不是二倍而是大约 4/3(1.33)倍

@zhengkai
zhengkai / tg.md
Last active August 16, 2024 08:28
Telegram 学习
@zhengkai
zhengkai / daqi.md
Last active August 3, 2022 03:19
一曲忠诚的赞歌是2011年本拉登被击毙后,在 HI-PDA 论坛上出现的一个热门帖子中的一句台词。在天涯论坛和百度贴吧等其他平台有大量转载与二次创作。
@zhengkai
zhengkai / mingyue-tang300.md
Last active April 19, 2021 02:10
唐诗三百首里带明月二字的

月下独酌
作者:李白
花间一壶酒,独酌无相亲。
举杯邀明月,对影成三人。
月既不解饮,影徒随我身。
暂伴月将影,行乐须及春。
我歌月徘徊,我舞影零乱。
醒时同交欢,醉后各分散。
永结无情游,相期邈云汉。

@zhengkai
zhengkai / golang-coredns-dnstap.md
Last active January 28, 2021 03:55
针对指定域名的 TCP 流量分析方法

针对指定域名的 TCP 流量分析方法

需求

需要对某手机 app 做分析和诊断,该 app 会 TCP 长连接远程多台主机(不同域名)中的一个。

大体方式

建立一个特定端口范围的代理服务器(这里用 golang 写的),使用 DNS server(这里使用 coredns) 将指定范围的域名指向代理 IP,其他一切照常,这样手机端只要更改 DNS 即可切换是否走代理,这样影响最小。

@zhengkai
zhengkai / coredns-domain-hijack-example.txt
Last active December 9, 2020 10:46
域名劫持例子:劫持指定域名到 127.0.0.1,其他的访问上游 192.168.1.1
(hijack) {
template IN A {
answer "{{ .Name }} 60 IN A 127.0.0.1"
}
log
}
amazonaws.com {
import hijack
}
@zhengkai
zhengkai / make-practice.md
Last active December 10, 2020 02:52
Make 实践

Make 实践

这只是我个人摸索出来的方法,不确认是否是“最佳”实践

很多时候写的东西无法热更,如我目前正在写一些 golang 和 nodejs 的东西。总之一个常见需求是需要快速重启一个 server 以用来调试。

首先有一个启动脚本,做以下必要操作,并且在敲 make 的时候不带参数时会默认执行

  1. 关闭之前运行的 server(如果有)
@zhengkai
zhengkai / diff.md
Last active October 21, 2020 06:58
GNU diff 和 git diff-tree

GNU diff 和 git diff-tree

这只是在学习 git 里 object id 概念过程中的一个实际例子,如果对 object id 已经很熟悉了那可能不需要看了

目前在配置文件管理上有这么一个需求。同一个目录有三个格式相同的目录,目录下的文件和格式几乎相同,根目录在 git 里,因此三个目录会产生不同的历史。需求就是,可以比较任意历史的任意目录。

这个网页工具的最终效果是这样: