最近写了很多接口,需要反复处理 json 数据,抽离数据,重组格式。 花时间研究了一些 Python 的列表生成式,以及更高级的 Map/Reduce,并给大家做了一次分享,记录一下分享过程中写下的代码。 示例数据123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172...
第一次在github里的高星项目中merge code, 激动!
在做手里的项目的过程中,用到了 Cobra,过程中需要使用动态的 help 信息,目前 Cobra 本身还不支持,所以手工加了一些额外代码才实现。 但是在读 Cobra 源码的过程中,发现只需要改动几个地方,就可以更轻松地实现,于是提交了一个 PR,跟 Owner 沟通了几次,顺利被 merge 了。 很惊喜,Mark 一下:https://github.com/spf13/cobra/pull/1760
通过docker registry的文件夹获取到所有的镜像
工作需要获取 docker registry 里所有的镜像和 tag,但是系统在磁盘被占满的情况下出现无法工作的情况,无法通过 docker registry 的 API 去获取。 所以尝试通过 registry 的文件夹目录结构中提取想要的结果,最后证明可行。 列出所有镜像:tag123export docker_registry_dir=/opt/bcmt/storage/docker-registry/ # docker registry 的安装目录。cd ${docker...
Cobra支持动态自定义flag
用 Go 实现了一个 binary,这个 binary 会发送 API 请求到服务端,服务端完成对 K8S 环境的部署工作。 由于后端进行了大量封装,并且参数非常多,所以有了一个想法,具体的要求如下: 支持自定义 flag 列表 help 信息支持展示自定义的 flag 列表 列表信息来自于一个专门的 API 基于这些需求,查询了很多文档后,没有找到成功的例子,经过一下午的尝试,最后实现了预期的需求,分享一下。回头准备写一篇 post 给 Cobra。 在 Cobra 的 GitHu...
在GO项目中使用Uber-zap日志框架
现在需要把一个日志框架加入到新的项目中,对比了一下 Go 语言里的几个日志框架,最后发现 zap 是个不错的选择。 https://github.com/uber-go/zap 官网也把 zap 和其他框架做了一些对比,看起来挺不错。 不过在集成到 Cobra 里的过程中遇到了一点点小坑,记录一下。 日志初始化代码12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849...
Python判断一个函数是否被一个装饰器修饰
今天正在做新项目的框架。比如下面的 gen_task 方法是一个很耗时的方法,这样的方法在系统里有很多,于是就写了一个装饰器 nuke_long_task 用于处理长请求事务,用它去处理一些常规通用的业务,比如记录和更新状态等。 被装饰的业务函数123456@nuke_long_task()def gen_task(data): print(" start -- " + threading.current_thread().name) time.sleep...
linux下根据IP反查MAC
今天遇到一个问题:给一个 VM 上配置了两个 IP,同时配置到了同一个网卡上,结果一个 IP 通,一个 IP 不通。 排查方法排查半天,最后发现可以在另外一个 VM 上利用 arp 命令,查出所配置的两个 IP,发现 IP 对应的 MAC 不一样,说明其中一个 IP 的 MAC 地址是不对的。 这种情况一般是由 IP 地址配置引起的,更换一下 IP 就好了。同时根据 MAC 的前几位可以查询一下设备生产厂家,这样大致能猜出来占用 IP 的是什么类型的设备。 1234[root@sandbo...
McAfee会误认为GoLang多线程程序是病毒
这几天在学习 GoLang,今天遇到一个有趣的现象:写了下面这段关于多线程 goroutine 的代码,一执行就会被 McAfee 认为是病毒。 程序被 kill 掉,甚至连 VS Code 都被关掉,并且桌面上的 VS Code 图标都被删掉了,有意思。 触发误报的代码12345678910111213141516171819package mainimport ( "fmt" "time")func main() { go c() fm...
预览FontAwesome
现在在用的 Hexo 主题里,有一个标题旁边的图片写错了,导致显示是个方块,挺丑。想从现在的字体里选一个,却不知道怎么弄出来全部的。 使用 IcoMoon 预览图标发现有个网站:https://icomoon.io/app/#/select 选择「导入图标」,然后选择 SVG 文件 选择一个图标,点击下方「生成字体」 在下一页就能看到这个图标的 16 进制编码了
GoLang的编程规范
分享一张 Golang 的编程规范,来源见水印。