Skip to content

Instantly share code, notes, and snippets.

Snakevil Zen snakevil

Block or report user

Report or block snakevil

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
@snakevil
snakevil / static.pattern.rules.in.gnumake.md
Created Apr 7, 2017
GNUMake 使用静态模式规则
View static.pattern.rules.in.gnumake.md

GNUMake 使用静态模式规则

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

1 扫描文件

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

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 Sep 9, 2018
Nginx try_files 的美感问题
View nginx-try_files.md

Nginx try_files 的美感问题

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

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

丢失的 301 跳转

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

使用 GnuPG2 为 Git 版本签名

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

git commit -veS 报错:

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

【译】如何将 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 Sep 29, 2016
【译】Docker 和 S6 ——我的进程管理器新欢
View docker-and-s6-my-new-favorite-process-supervisor.md
@snakevil
snakevil / baseimage-docker-fat-containers-treating-containers-vms.md
Last active Jul 18, 2019
【译】Baseimage-docker,胖容器和“容器也是虚拟机”
View baseimage-docker-fat-containers-treating-containers-vms.md

【译】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 Nov 18, 2019
【译】Docker 和子进程“僵尸化”问题
View docker-and-the-pid-1-zombie-reaping-problem.md

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

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


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

@snakevil
snakevil / ssh-proxy.sh
Last active Sep 18, 2016
ssh-proxy.sh
View 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
#
You can’t perform that action at this time.