呓语 | 杨英明的个人博客

专注于c++、Python,欢迎交流

By

[顶] 一个基于 Golang + React 的定时任务可视化配置网站的设计与实现

这个项目的初衷是为了监控我正在看的网络小说的更新情况,我希望在小说更新时就给我发一封 email 邮件,这样就能在第一时间看到热乎乎刚出炉的小说咯!

最初的时候我写了个 Python 脚本快速实现我的思路,借助 Linux 自带的 crontab 定时运行脚本抓取更新情况,有更新时就发送邮件给我。这个早期项目的地址见:elliotxx/RenewRemind

通过 Python 脚本 + crontab 的方式实现起来确实快速,运行也算稳定(使用了一年),但是也有缺点:要添加新的监控目标时,需要直接改代码;要添加新的通知邮箱时,也要改代码;总的来说,就是配置&维护不方便,直面代码,对用户不友好。

正巧最近在学习 Golang 和 React,于是就计划将以上想法做成一个可视化配置的 Web 工具。同时也加入了 Dockerfile 和 webhooks 技术实现了持续集成&持续交付(CICD),方便部署和发布,也算实践了一些想法,下面分享这个简单项目的设计和实现思路。

项目命名为 watchman(更夫),开源地址见:elliotxx/watchman

在线 Demohttp://watch.yangyingming.com

默认登录账号:admin 密码:12345

By

Minikube 入门指南

简单来说,就是 minikube 借助 VirtualBox 创建了名叫 Minikube VM 的虚拟机,然后在这个虚拟机中运行了一个单节点的 Kubernetes 集群 Minikube 利用本地虚拟机环境部署 Kubernetes,其基本架构如下图所示:

用户使用 Minikube CLI 管理虚拟机上的 Kubernetes 环境,比如:启动,停止,删除,获取状态等。一旦 Minikube 虚拟机启动,用户就可以使用熟悉的 Kubectl CLI 在 Kubernetes 集群上执行操作。

from Minikube - Kubernetes本地实验环境

By

k8s.gcr.io 国内无法访问的替代解决方案

Kubernetes 很多组件的镜像全部托管在 gcr.io 这个域名下(现在换成了 k8s.gcr.io);由于众所周知的原因,这个网站在国内是不可达的;

By

200 行代码实现一个简单的命令行解析库

本文介绍一个简单的、只有 200 行代码的命令行解析库的实现原理,库暂命名为 ArgParse。

命令行解析库一般在写命令行 CLI 工具的时候会使用到,它的主要作用是方便的配置和解析命令行参数,Go 语言标准库中其实就提供了一个命令行解析库 flag, 但是在使用过程中发现 flag 不支持同时识别多个参数,比如 -nfp 10 这样的参数集合。于是我就撸了个简单的命令行解析库,其中也借鉴了 flag 的思路。

名字嘛,因为之前使用过 python 中的 ArgParse,所以这个简单的 Go 语言命令行解析库也叫做 ArgParse 好了。

开源地址:elliotxx/argparse

By

对于 12-Factor 开发规范的一些理解

12-Factor 是 Heroku 的工程师结合大量实践经验总结出的软件开发规范,它包含 12 条开发规范。在当前万物上“云”的时代,不管对于开发人员还是运维人员,12-Factor 都十分有借鉴作用。而遵循 12-Factor 规范开发的应用程序,被称为 12-Factor App。

官方文档(中文):https://12factor.net/zh_cn/

这篇英文博文总结的很精炼:"12-FACTOR APP" SUMMARY

由于官方文档翻译的不太流畅,所以笔者在这里结合原文聊聊个人的粗浅理解。

By

Golang 间接实现 interface的一种方式

在看 k8s HPA 的时候,发现一段有意思的代码

By

C++ 中类的函数重载(overload)、函数重写(override)、虚函数重写(virtual override)、虚函数重载(virtual overload)区别

重载和重写都是对同名函数的处理,区别是处理的同名函数参数类型、个数、返回值是否完全一样。

重载(overload):定义多个同名函数,这些同名函数的参数类型、个数、返回值可以不一样。

重写(override):存在于子父类之间,在子类中重新定义从父类继承的同名函数(参数类型、返回值要求完全一样)

By

在 VSCode 中配置 C++ 环境

参考了一些博客,最后加了些自己的配置,方便以后配置。

其中重点参考了:VSCode下配置C++

By

Surface go 上手指北

最近入手了 Surface go,配置为 8+128G,带键盘,淘宝价格 3838元。

研究了两天,体验不错,对我来说,需求就是一个平板,最好还能轻度办公,Surface go 完美的满足了这两点需求。

以下聊聊我的体验和使用技巧。

By

2019 年 2 月份阅读记录

By

2019 年 1 月份阅读记录

崔斯特来到地表,开始旅居生活

图片来自:http://www.lizardlounge.net/2016/03/02/re-read-exile-sojourn-r-salvatore/

By

Vultr 修复记

过了个春节,回来发现梯子失效了,一下子打回原型,感觉和世界失去了联系。

查看了一下 vultr 服务器,ssh 能正常登录,ss 也能连上,但信号就是翻不出去。

查了下原因,可能是 ss 的端口号被封了。

于是我换了个 ss 的端口号,手动设置防火墙开放该端口,重载防火墙设置,修复成功。

By

搭个网站免费无限制看漫画

By

使用 argparse 编写自己的命令行工具

如果你还在用 sys.argv 的方式解析复杂的命令行参数,那儿你就 out 了!快来使用更加强大的 argparse 吧~

By

编写 setup.py 打包 python 程序且安装到命令行运行

这两天封装了一个异常点检测的工具,并且需要把它部署到一个新环境中。为了方便使用,我想到编写 setup.py 打包/安装我的 python 程序。

By

2018 年读书记录

图片来自:NPUBits-Porcupine

2018年眼瞅着要结束了,趁着年末总结一下今年的读书情况。

记得去年快结束的时候数了数自己读了多少本书,一共37本,今年我又数了数,24本……

……有点惭愧(捂脸)。

读书其实也是为了娱乐自己,实验室书桌伸手可及处便是一堆书,正事忙累了随手抽一本阅读,转换一下大脑的同时也是为了让自己静下心来。

不知不觉便读了一个又一个系列,一本又一本喜欢的书,慢慢地就习惯了这样的节奏。

兴趣确实是可以培养的,同时好的习惯将受用终身。

2019年快到了,保持激情,继续努力。

By

2018 年 12 月份阅读记录

By

2018 年 11 月份阅读记录

By

Pandas 学习拾遗

By

关于人工智能浪潮下浮躁的互联网行业的思考和自己的定位

好久没胡思乱想了,最近压力有些大,大脑有些乱。不止是最近要做的事情比较多,也有来自对未来的担忧。

我热爱计算机,因为和人比起来,我更喜欢和计算机打交道。

热爱计算机之后,我便不那么容易迷茫。对我来说,学好计算机,我便能获得满足感。而不同时期“学好计算机”又代表着不同的意义。大一时候,学好计算机意味着学会编程,于是我经常去机房写代码。大二时候,学好计算机意味着打好基础,学好各种专业课。大三时候,学好计算机意味着争取ACM比赛那块牌。大四时候,学好计算机意味着探索更多借助计算机可以做到,而人类做不到的事情。研一这段时间,我也在继续探索这件事情。

但渐渐地,随着知识越来越多,“学好计算机”这件“简单”的事情,也变得复杂起来。因为精力有限,坑却越来越大,我开始不得已选择性的学习,一些原本十分感兴趣,十分想去了解的领域,也因为“选择”而暂时摒弃掉。

这个过程中,我不得已的又开始“迷茫”了。在接下来的路途中,我又应该将“学好计算机”定位成什么呢?