关于我自己被性侵经历的访谈记录
这篇文章是我 2020 年 12 月接受华中师范大学关于儿童性侵的采访所产生采访稿。在这次采访中,我完整的复盘了在我12岁那年发生在我身上的强奸事件。在这次采访中,我完整回顾了当时我和我家庭的一些反应,也表达了我一些关于性侵这件事的看法。我希望每个人都能平安顺利的过完一生,但是如果有不好的事情发生的时候,我希望这篇文章能帮到你。Everything is gonna be...
利用动态 tracing 技术来 trace 内核中的网络请求
这周帮朋友用 eBPF/SystemTap 这样的动态 tracing 工具做了一些很有趣的功能。这篇文章算是一个总结 开篇实际上这周的一些想法,最开始是实际上来源于某天一个朋友问我的一个问题 我们能不能监控机器上哪些进程在发出 ICMP 请求?需要拿到 PID,ICMP 包出口地址,目标地址,进程启动命令 很有趣的问题。实际上首先拿到这个问题时候,我们第一反应肯定是 “让机器上的进程在发 ICMP 包的时候”直接往一个地方写日志不就好了,emmmm,用一个 meme 镇楼吧 嗯,可能大家都知道我想说什么了,我们这种场景实际上只能选择旁路,无侵入的方式去做。 那么涉及到包的旁路的 trace,大家第一反应肯定是 tcpdump 去抓包。但是在我们今天的问题下,tcpdump 只能拿到包信息, 但是拿不到具体的 PID,启动命令等信息。 所以我们可能需要用另外一些方式去实现我们的需求 在需求最开始之初,我们还可能的选择的方式有这样一些 走 /proc/net/tcp 去拿具体的 socket 的 inode 信息,然后反查 pid 关联 eBPF + kprobe...
当我们在聊 CI/CD 时,我们在聊什么?
本文实际上是在群内第二次分享的内容。这次其实想来聊聊,关于 CI/CD 的一些破事和演进过程中我们所需要遇到的一些问题,当然本文中是一个偏新手向的文章和一点点爆论,随便看看就好。 开宗明义,定义先行在我们谈论一个事物之前,我们需要对这个事物给出一个定义,那我们先来看一下我们今天要聊的 CI 与 CD 的定义。 首先,CI 指 Continuous Integration ,在中文语境中的表述是持续集成。而 CD 在常见语境下可能是两种意思:Continuous Delivery 或 Continuous Deployment,与之对应的表述是持续交付/持续部署。这里借用一下 Brent Laster 在 What is CI/CD?1 中给出的定义 Continuous integration (CI) is the process of automatically detecting, pulling, building, and (in most cases) doing unit testing as source code is changed for a...
继续爆论容器中的一号进程
上周的文章聊了关于容器中的一号进程的一些概况后,在我师父某川(可以去 GitHub 找他玩,jschwinger23) 的指导与配合下,我们一起对目前主流的被广泛使用的两个容器中一号进程的实现 dumb-init 和 tini 做了一番探究,继续写个水文来爆论一番。 正文我们为什么需要一个一号进程,我们希望的一号进程需要承担怎样的职责?在继续聊关于 dumb-init 和 tini 的相关爆论之前,我们需要来 review 一个问题。我们为什么需要一个一号进程?以及我们所选择的一号进程需要承担怎么样的职责 其实我们在容器场景下需要一号进程托管在前面实际上有两种主要的场景, 对于容器内 Graceful Upgrade 二进制这种场景,主流的一种做法之一是 fork 一个新的进程,exec 新的二进制文件,新进程处理新链接,老进程处理老链接。(Nginx 就采用这种方案) 没有正确的处理信号转发以及进程回收的情况 一些如同 calico-node...
简单聊聊容器中的一号进程
新年了,决定趁着有时间的时候多写几篇技术水文。今天的话,准备来简单聊聊容器中我们每天都会接触,但是时常又会被我们忽略的一号进程 正文容器技术发展到现在,其实形态上已经发生了很大的变化。根据不同的场景,既有传统的 Docker1, containterd2 这样传统基于 CGroup + Namespace 的容器形态,也有像 Kata3 这样基于 VM 的新型的容器形态。本文主要着眼在传统容器中一号进程上。 我们都知道,传统容器依赖的 CGroup + Namespace 进行资源隔离,本质上来说,还是 OS 内的一个进程。所以在继续往下聊容器相关的内容之前,我们需要先来简单聊聊 Linux 中的进程管理 Linux 中的进程管理简单聊聊进程Linux 中的进程实际上是个非常大的话题,如果要展开聊,实际上这个话题可以聊一整本书= =,所以为了时间着想,我们还是把目光聚集在最核心的一部分上面(实际上是因为很多东西我也不懂。 首先来讲,在内核中利用一个特殊的结构体来维护进程有关的相关信息,比如常见的 PID,进程状态,打开的文件描述符等信息。在内核代码中,这个结构体是...
但行好事,莫问前程
这篇文章,实际上本应该在 2020 年结束时写完的。不过我是一个拖延症患者,而且写这篇文章时会想起一些已经离去的人,所以一直不愿动笔,拖到了现在。不过在农历新年的末尾,还是得写出来,给自己去过一年一个总结吧。 开篇怎么说呢,2020其实是很操蛋的一年,我无数次的在内心问候”2020,我日你仙人“(山本大佐表示很赞) 但是2020呢,其实又是挺好的一年,让我估计后面会无数次的从2020这一年里学到的东西中受益。 所以吧,我把这暂且称为薛定谔2020?(算了,这 TM 就是 Manjusaka...
云原生时代的几个爆论
从去年调转到现在,做了一段时间的云原生,我突发奇想,想发表几个爆论来论述下我眼中的云原生来作为今年最后一篇技术博客。本文纯属个人向吐槽,与本人公司立场无关 概述云原生大概在 2014-2015 年开始左右,开始正式的提出了这个概念。2015 年 Google 主导成立了云原生计算基金会(Cloud Native Computing Foundation aka CNCF)。在 2018 年,CNCF 在 CNCF Cloud Native Definition v1.01 首次对云原生的概念有了一个认定 Cloud native technologies empower organizations to build and run scalable applications in modern, dynamic environments such as public, private, and hybrid clouds. Containers, service meshes, microservices, immutable infrastructure, and...
简单聊聊进程中的信号处理 V2
上次写了一个水文简单聊聊进程中的信号处理 ,师父看了后把我怒斥了一顿,表示上篇水文中的例子太 old style, too simple ,too naive。如果未来出了偏差,我也要负泽任的。吓得我连和妹子周年庆的文章都没写,先赶紧来重新水一篇文章,聊聊更优秀,更方便的信号处理方式 前情提要首先来看看,之前那篇文章中的例子 1234567891011121314151617181920212223242526272829303132333435363738394041#include <errno.h>#include <signal.h>#include <stdio.h>#include <string.h>#include <sys/wait.h>#include <unistd.h>void deletejob(pid_t pid) { printf("delete task %d\n", pid); }void addjob(pid_t pid)...
为什么有些时候 Python 中乘法比位运算更快
我本来以为我不再会写水文了,但是突然发现自己现在也只能勉强写写水文才能维持生活这样子。那就继续写水文吧 某天,一个技术群里老哥提出了这样一个问题,为什么在一些情况下,Python 中的简单乘/除法比位运算要慢 首先秉持着实事求是的精神,我们先来验证一下 1234567891011In [33]: %timeit 1073741825*2 7.47 ns ± 0.0843 ns per loop (mean ± std. dev. of 7 runs,...
简单聊聊进程中的信号处理
最近在某个技术群里帮人分析了 Linux 编程下信号处理的一段代码。我自己觉得这段代码是挺不错的一个例子,所以写个简单的水文,用这段代码聊聊 Linux 中的信号处理 正文我们首先来看一看这一段代码 1234567891011121314151617181920212223242526272829303132333435363738394041#include <errno.h>#include <signal.h>#include <stdio.h>#include <string.h>#include <sys/wait.h>#include <unistd.h>void deletejob(pid_t pid) { printf("delete task %d\n", pid); }void addjob(pid_t pid) { printf("add task %d\n", pid); }void...