Skip to content

Instantly share code, notes, and snippets.

View snakevil's full-sized avatar

Snakevil Zen snakevil

View GitHub Profile
@snakevil
snakevil / static.pattern.rules.in.gnumake.md
Created April 7, 2017 04:43
GNUMake 使用静态模式规则

GNUMake 使用静态模式规则

最近在写 Luadex 时,顺手就用 GNUMake 来做构建工具了——这样还能热热手把好久好久没用地 GNUMake 再捡回来。中间碰到一个问题,我需要动态地扫描出全部的某类型的文件,然后按照同样的规则进行处理。

1 扫描文件

@snakevil
snakevil / tostring.in.lua.oo.md
Created April 7, 2017 03:31
Lua 面向对象式开发的 __tostring 问题

Lua 面向对象式开发的 __tostring 问题

LuaJIT-2.0.4 为止tostring() 函数都只会检查并调用元表__tostring 函数。那么在面向对象式开发时,如何让基类定义地统一 __tostring 机制生效?

print(setmetatable({
    __tostring = function ( self )
        return '3'
    end
}, setmetatable({
@snakevil
snakevil / nginx-try_files.md
Last active July 8, 2021 11:34
Nginx try_files 的美感问题

Nginx try_files 的美感问题

Nginx try_files 指令自实现之日启,风靡至今。单纯说功能实现地话,确实能够快速地适配各种需要场景,省掉了大段的 ifset。但相应的 URL 拼写格式,就真地不忍直视了。

2016 年 11 月 21 日修订 REQUEST_METHOD 被改变地问题。

丢失的 301 跳转

@snakevil
snakevil / use-gnupg2-to-sign-git-commits.md
Created October 24, 2016 09:10
使用 GnuPG2 为 Git 版本签名

使用 GnuPG2 为 Git 版本签名

从很久很久以前开始,我就一直用 GnuPG 对自己提交的 Git 代码签名。最初地时候是为了装X,后来则是为了确保代码的可靠性——毕竟 git config 都是随便写的。今天因为更换 Homebrew,顺路就更新到了 GnuPG2。但是,问题来了…

git commit -veS 报错:

@snakevil
snakevil / s6-svscan-1.md
Created September 29, 2016 09:32
【译】如何将 s6-svscan 用作初始进程

【译】如何将 s6-svscan 用作初始进程

点击这里阅读原文。


2015 年 6 月 17 日之后,如果你是 Linux 用户,你可以使用 s6-linux-init 包来帮助你实现同样的目标!尽管如此,还是请你首先阅读本篇文档,以理解 s6-linux-init 的工作内容。

将 s6-svscan 用作初始进程是可行的。但这并不意味着你可以直接通过 s6-svscan 引导,因为它还无法胜任完整的初始化系统所应做地全部工作。正确地替换掉初始进程,还需要对其工作内容做更多地理解。

@snakevil
snakevil / docker-and-s6-my-new-favorite-process-supervisor.md
Created September 29, 2016 05:50
【译】Docker 和 S6 ——我的进程管理器新欢
@snakevil
snakevil / the-5-most-important-things-ive-learned-from-using-docker.md
Created September 29, 2016 04:25
【译】使用 Docker 地 5 大心得
@snakevil
snakevil / baseimage-docker-fat-containers-treating-containers-vms.md
Last active July 18, 2019 12:56
【译】Baseimage-docker,胖容器和“容器也是虚拟机”

【译】Baseimage-docker,胖容器和“容器也是虚拟机”

作者 Hongli Lai 看着像是华人,可惜没找到文章的中文版本,于是就很土鳖地手翻了一遍。文章的措辞很口语化,因此意译为主。点击这里可以阅读原文。


Baseimage-docker 是针对 Docker 优化地 Ubuntu 最小化基础镜像。我们可以从 Docker 仓库中拉取回来作为基础镜像用在自己的镜像中。

笔者也算是 Docker 的早期使用者了,早在其 1.0 版本发布前,就已经将其用来做持续集成和构建开发环境了。因而,笔者才研发了 Baseimage-docker 以解决 Docker 工作模式中的一些问题,主要是子进程的“僵尸化”问题

@snakevil
snakevil / docker-and-the-pid-1-zombie-reaping-problem.md
Last active March 21, 2023 12:30
【译】Docker 和子进程“僵尸化”问题

【译】Docker 和子进程“僵尸化”问题

作者 Hongli Lai 看着像是华人,可惜没找到文章的中文版本,于是就很土鳖地手翻了一遍。文章的措辞很口语化,因此意译为主。点击这里可以阅读原文。


在构建 Docker 容器时,我们需要注意子进程的“僵尸化”问题(PID 1 Zombie Reaping Problem)。这会导致不可预知的和看起来匪夷所思的问题。本文解释了这个问题,也解释了如何去解决,并提供了一种预构建方案:Baseimage-docker 。

@snakevil
snakevil / ssh-proxy.sh
Last active September 18, 2016 03:49
ssh-proxy.sh
#!/bin/sh
#
# Proxy agent script, for 'ProxyCommand' directive in 'ssh_config'.
#
# Usage:
# ssh-proxy.sh <Origin Host> <Origin Port> [<Alternative Host> [<Alternative Port>]]
#
# Example:
# ProxyCommand ssh-proxy.sh %h %p ddns.host.name
#