使用buildx构建多平台可用Docker镜像

在日常的开发中,我们会有让程序在不同平台运行的需求。除了常用的Windows系统,Linux系统以及Mac OS系统外,我们甚至还希望让程序运行在以树莓派为代表的ARM平台下,或者是跑在嵌入式设备的路由器上。要构建出适合不同平台的镜像并不是一件容易的事情,除非你直接到目标平台下构建,或者模拟出目标平台下的环境来进行构建。最近我的开源项目GoDNS就有用户提了个issue,GoDNS的Docker镜像在树莓派平台下运行失败,从错误提示来看,就知道是镜像的问题。之前只考虑了镜像在

从Spacemacs迁移到Doom Emacs

Spacemacs是一个非常不错的基于Emacs+Evil的配置,默认的开箱即用的安装方式,省去了 Emacs对于新手相对繁琐的配置,安装过程对新手用户也非常友好,是Vim用户体验Emacs的 不可多得的选择。自从上次从Vim切换到Spacemacs之后, Spacemacs已经能满足我日常开发需求。不过,现在我找到了更加适合我的Emacs配置: Doom Emacs。弃用Spacemacs的原因Spacemacs的配置已经日益复杂,默认配置加载的插件较多,启动Spacema

Your own time zone

New York is three hours ahead of California,But that doesn’t make California slow.Someone graduated at the age of 22,But waited five years before securing a good job.Some became a CEO at 25,And died at 50.While another became a CEO at 50,An

HHKB 蓝牙改造指北

前言自从 2013 年入手 HHKB Pro2,以及后续入手 HHKB Pro Type-S以来,HHKB 已经成为我日常工作的主力键盘。尽管后续官方还推出了 HHKB 的蓝牙版本,考虑再三,我也没有继续再入手了。原因是官方的蓝牙版 HHKB 有一个凸起的电池仓,由两节电池进行供电。相比起有线版本,凸起的电池仓有点影响美观。要是 HHKB 的蓝牙版能通过内置锂电池的方式对键盘进行供电,并去掉那个电池仓的话,那岂不是更好?事实上,虽然官方并没有推出这样的版本,但是民间已经有很多

在Spacemacs中配置Fira Code并启用ligatures特性

Fira是Mozilla主推的字体系列。Fira Code是其中的一员,专为写程序而生。出来具有等宽等基本属性外,还加入了编程连字特性(ligatures)。编程连字特性,其实就是利用这个特性对编程中的常用符号进行优化,比如把输入的「!=」直接显示成「≠」或者把「>=」变成「≥ 」等等,以此来提高代码的可读性。作为传说中的程序员,Fira Code也早已称为我的各大常用编辑器标配字体。Fira Code在其他编辑器和终端上配置较为简单,选中字体过后,启用Ligature

使用Spacemacs打造你的开发环境

前言从Vim到NeoVim至今,已经三年多了,我的主力开发环境依然是iTerm2+Tmux+NeoVim。中途还试过VSCode和GoLand,作为新生代的编辑器,这两款用起来果然不错。不过,总感觉可以折腾的东西变少了一些。后来看到Emacs里面的Evil Mode,知道原来在Emacs里面也可以折腾Vim的键位绑定,何不一试?在Google和查找了很多资料,还找到几份不错的Emacs配置,拿来直接修改一下就可以满足自己日常Go的开发了。不过对于我这种Elisp不太熟悉的新手

使用HomeBrew安装回滚软件到指定版本

HomeBrew是Mac OS下一个必备的软件包管理神器,用它来安装软件能省去不少的麻烦,因为它能自动帮你搞定一些软件包的依赖关系。稍微麻烦的是,在HomeBrew中,当使用brew upgrade命令的时候,会直接更新软件到最新的版本,而本身没有提供一个可以在升级某个软件之后再回滚到某个指定版本的功能。就拿Tmux来说,我常常会在日常工作中用到它,但是Tmux的版本更新往往比较激进,作者仿佛不太考虑和之前版本的兼容性,而带来一些breaking changes。导致在某个新

Redis中批量删除Key

最近在自己的阿里云服务器上跑一个Redis容器,不小心监听了宿主机器的0.0.0.0地址,而且Redis server裸奔没密码,被嗅探到并植入了一堆辣鸡Key,网卡流量跑了接近1TB。还好是docker跑的,因为容器的隔离,宿主机器没被植入啥后门。修复的措施也比较简单,直接rm了docker容器,重新跑了一个redis,把端口修改为只监听127.0.0.1的本机地址,问题解决。等等,容器的安全搞定了,那一堆Redis的Key怎么清理掉呢?搜索了一下,Redis本身并没有提供

使用Docker生成LetsEncrypt证书

起因自从Blog启用SSL证书以来,一直用LetsEncrypt家的免费SSL证书。最近,因为配置一些新的域名,免不了要继续申请LetsEncrypt的新证书。之前申请证书的方法,都是手动git clone在GitHub上的那个certbot项目,然后运行命令。这种方式唯一的不足,是certbot本身需要用到python环境,每次申请证书还会更新一些本机的环境,如果遇到了Linux的包冲突,还得先解决冲突才行。解决办法基于这样的困扰,哥想到了能不能用Docker来实现证书的申

Gen8折腾记--Proxmox VE篇

前言自从上次在Gen上搭建Esxi虚拟化平台过后,感觉总算是把Gen8给充分利用起来了。在虚拟化平台上使用软路由的体验也很好,唯一不足的地方,是在Esxi上不可避免的遇到了Gen8的磁盘驱动问题。在网上搜索了一下,通过更换回低版本的磁盘驱动,感觉磁盘性能仍然没能提升,就算把硬盘进行直通,从局域网拷贝高清电影的速度也只能在40MB/s左右。好吧,打算要彻底放弃Esxi平台了。于是,哥又把折腾的目标设定为了PVE。PVE全称Proxmox Virtual Environment,