CherryPy 隐藏版本信息
CherryPy 默认会在响应的头部带上服务器的版本号,但一些安全扫描软件会认为这是一个漏洞: # https://github.com/cherrypy/cherrypy/blob/v18.1.1/cherrypy/_cprequest.py#L839 class Response(object): def __init__(self): dict.update(self.headers, { 'Content-Type': 'text/html', 'Server': 'CherryPy/' + cherrypy.__version__, 'Date': httputil.HTTPDate(self.time), }) 针对每个
yum/apt 安装指定版本
版本查询 https://pkgs.org/ yum(CentOS) 历史版本 yum 源只有最新的 rpm 包版本,历史版本需要使用如下的源 http://vault.centos.org/ yum ~$ yum --showduplicates list dpdk Loaded plugins: copr, versionlock Available Packages dpdk.x86_64 16.11.2-4.el7 dpdk dpdk.x86_64 17.11-7.el7 dpdk dpdk.x86_64 17.11-11.el7 dpdk dpdk.x86_64 17.11-13.el7 dpdk dpdk.x86_64
Go 读写 csv 文档
CSV 是一种非常简单的格式,如下所示: ipv;table;command;chain;proto;src;dst;sport;dport;match;jump;desc 4,6;filter;A;x;tcp;;;;6789;;ACCEPT;MON 4,6;filter;A;x;tcp;;;;6800:7300;;ACCEPT;OSD,MGR,MDS 4,6;filter;A;x;tcp;;;;3300;;ACCEPT;MON >= Nautilus 但 golang 自带的 encoding/csv 包只是简单对字符串解析进行了一些封装,因此用起来算不上有多方便
Go 读写 yaml 文档
Go 对 yaml 的读写没有标准库支持,第三方库中 go-yaml/yaml 的支持比较好。 go-yaml/yaml 的使用非常简单,下面举例说明。 yaml 文档 比如有以下的 yaml 文档: table: filter enabled: [mon,osd]
netcat/socat 基础操作
netcat 和 socat 是两个很古老的网络工具,两者名字类似,但基本上是两个完全不一样的东西。 netcat 其中 netcat 比较简单,通常使用它的客户端模式来测
为 spf13/flag 增加指针类型
由于 Go 的 bool、int、string 等类型缺少类似于 C++ std::optional 的支持,因此在使用 json、yaml 等序列化的库时,无法有效的
Gatsby 静态博客托管到 coding.me
github.io 的网速在国内 GFW 环境下慢得实在是有点让人受不了,所以想部署到一个速度稍微快点的平台上。 支持静态博客托管的站点有很多,以前
go 程序初始化
Go 的用户代码初始化流程与 C/C++ 类似,都是先初始化全局变量,然后才调应用的 main 函数,但这个顺序限定在 package 内部,即在 package 内部初始化顺序
使用指定 ssh 私钥访问 git 仓库
通常来说,git 仓库上的 ssh 公钥与本地某个系统账号的 ssh 私钥关联,但有时可能会由于 CI 等需要在多台机器间分发该 ssh 私钥,这时 git clone
git submodule 使用本地镜像
通常,主项目会由开发人员自己主动跟踪并更新至社区的最新的代码,但对于主项目中引用的第三方模块(submodule)一般都