YAML,比JSON更适合作配置文件

很多项目使用JSON作为配置文件,最明显的例子就是npm和yarn使用的package.json文件.当然这更多的是因为JSON和JS千丝万缕的关系. 但是,JSON实际上是一种非常糟糕的配置语言.别误会我的意思,我其实是喜欢JSON的.它是一种相对灵活的文本格式,对于机器和人类来说都很容易阅读,而且是一种非常好的数据交换和存储格式.但作为一种配置语言,它有它的不足. JSON的问题 缺乏注释 注释对于配置语言而言绝对是一个重要的功能.注释可用于标注不同的配置选项,解释为什么要配置成特定的...

用Nginx和rclone做Google Drive下载页

在写了在Linux上使用rclone挂载Google Drive等服务以后偶然想到能挂载Google Drive等一众网盘以后还能催生出很多玩法,其中一种就是与Nginx等Web server结合起来,做一个方便的下载页面. 准备 要实现下载页主要用到Nginx以及Nginx提供的一些功能. 其中包括自动检索,身份验证等. 配置 默认的情况下Nginx索引到目录会直接返回403,这个时候需要的只是开启autoindex autoindex on; 重载后就可以成功开启autoindex模...

用acme.sh签发Let's Encrypt证书

这几天用certbot签发Let's Encrypt证书的时候发现了各种问题, 有Python版本问题以及pip源问题. 反正就是各种蠢 对我这样一个使用者来说Python制造的问题比它解决的问题还多 于是开始使用国人制作的shell工具acme.sh来签发, 这个工具安装使用很简单, 安装: curl https://get.acme.sh | sh 使用: # 使用手动dns验证 acme.sh --issue -d example.com --dns --yes-I-kno...

Stop DHCP From Changing resolv.conf

For DHCP users, there may be times when you need to edit /etc/resolv.conf to use other nameservers. Then, after a period of time (or after a system reboot), you discover that your changes to /etc/resolv.conf have been reverted. This tutorial shows th...

在Linux上使用rclone挂载Google Drive等服务

rclone可以帮助我们在Linux上挂载一些储存服务,包括Google drive, onedrive, box, AWS S3等等.同时不会占用硬盘空间 安装依赖 apt-get install fuse 下载 wget https://downloads.rclone.org/v1.41/rclone-v1.41-linux-amd64.zip 截止目前最新版为1.41,在 https://downloads.rclone.org/ 可以看到历史版本. 下载解压后里面的可执行文件rcl...

Github被微软收购

Congratulations to GitHub on their acquisition by Microsoft! This is validation of the growing influence of software developers in the world, and the importance of modern DevOps. The software community owes a lot to GitHub, and that includes the GitLab...

GDPR到底是什么

最近几天至少收到几十个服务的有关隐私协议的邮件(如果你没收到甚至没听说过GDPR,说明你基本不使用这个星球上的主流网络服务) 那么这个GDPR到底是什么呢? GDPR介绍 GDPR是欧盟于2018年5月25日正式开始实行的<通用数据保护条例> 该条例是近三十年来数据保护立法的最大变动,旨在加强对欧盟境内居民的个人数据和隐私保护.此外,它还将通过统一数据和隐私条例来简化对跨国企业的监管框架.它将取代1995年颁布的<数据保护指令> 1995年的<数据保护指令...

用Golang重写Github webhook后台服务

起因 前段时间写过一篇利用Github的Webhook功能进行持续集成, 当时使用nodejs来写了webhook的后台服务. 那个程序已经稳定运行了一段时间,期间并没有出现大的问题. 但是毕竟是js的程序,空转状态就需要占用几十Mb的内存,就一个HTTP监听占用这么大确定不是开玩笑??? 另外一个问题就是该程序跑起来以后在Linux里会是一个node进程,这个时候如果你的服务器上同时运行了好几个由nodejs驱动的程序的话..你可以想到有多壮观 行动 于是决定用go来重新实现这个工具,...

for循环中的++i和i++有什么区别

i++和++i是C系语言的经典课题, 我们知道i++和++i的表面区别为++i的返回值为i+1,而i++则为i,而它们的底层实现分别为: ++i实现: int operator ++ () { return i+1; } i++实现: int operator ++ (int flag) { int j = i; i += 1; return j; } 两者实现的本质区别为其中的j,这个j在程序中称为匿名变量. 现在很明显了,因为这个匿名变量的存在直接...

我眼中程序员简历

为开源项目贡献过代码 +10 接触过3种以上编程语言 +10 有业余编程项目 +10 有持续维护的开源项目 +10 简历为PDF格式或独立HTML页面 +5 有独立域名的技术博客 +5 有自己的Github地址 +5 同时接触过编译语言和脚本语言 +5 只接触过一种编程语言 -5 屡次强调自己的Master/Doctor学历 -5 简历格式为docx -5 简历中提到熟悉Microsoft Office -5 Github中全是Markdown项目 -5 简历中提到各种认证 -5 简历...