Skip to content

Instantly share code, notes, and snippets.

View snakevil's full-sized avatar

Snakevil Zen snakevil

View GitHub Profile
@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 / manage-nginx-confs.md
Last active January 8, 2021 03:26
Nginx 配置管理

Nginx 配置管理

Nginx 一直以来都有一个很尴尬地问题——就是为了效率,抛弃了 htaccess 目录配置文件。当一个项目打算使用 Nginx 来提供 HTTP 服务时,就不得不在配置文件中大量地硬编码目录信息,可移植性和可维护性很差。那么,能否找到一种相对变通的方法,来提高可移植性和可维护性?

〇 从网络节点的主机名称出发

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

GNUMake 使用静态模式规则

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

1 扫描文件

@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 / the-5-most-important-things-ive-learned-from-using-docker.md
Created September 29, 2016 04:25
【译】使用 Docker 地 5 大心得
@snakevil
snakevil / router.pi-3.md
Last active August 12, 2018 03:00
使用树莓派3B打造超强路由之三:阴影

使用树莓派3B打造超强路由之三:阴影

在[《使用树莓派3B打造超强路由之二:初成》][之二:初成]之后,似乎接下来的工作,就是朝着整合网络扩展存储 NAS家庭影院电脑 HTPC 去努力了。但在此之前,省视实际需求,不难发现其中的阴影——公共需求和私人需求存在显著差异——如:儿童能接触到的、成年人能接触到的和我能接触到的,如何区分开?所以在开始整合前,先尝试解决这个问题。

WARNING 本文所有指令均仅供参考,切勿无脑复制粘贴!

〇 前文提要

@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 / 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 / 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
#
@snakevil
snakevil / virtualbox-hates-sendfile.md
Last active August 29, 2015 14:04
VirtualBox 厌恶 SENDFILE 功能

VirtualBox 厌恶 SENDFILE 功能

很长一段时间内,我的开发环境都是:VirtualBox for OS X + Debian 所组成。通过 VirtualBox Guest Additions 所提供地 Shared Folders 功能,将 OS X 中地项目目录挂载进虚拟机中。这种方式优势很突出,既保持了本地开发地便捷性,又充分利用了虚拟机沙盒模式地可塑性。

但昨天在调试 CCNR2 地页面样式时,就碰到了这样地问题——

我已经在 OS X 中修改样式文件。但 Nginx 仍然输出原来地内容,只是文件尾部多了一些意味不明的红点。