Golang
2022-07-22
-
main.go
:
package main
import (
"fmt"
"os"
"github.com/spf13/pflag"
"github.com/spf13/viper"
)
func main() {
// 1. 设置 Viper 配置
viper.SetConfigName("config") // 配置文件名(不带后缀)
viper.AddConfigPath(".") // 配置文件路径
viper.SetConfigType("yaml") // 配置文件类型
viper.AutomaticEnv() // 自动读取环境变量
// 2. 设置命令行参数
pflag.String("name", "", "project name")
pflag.String("host", "", "host address")
pflag.String("port", "", "port number")
pflag.String("config", "./config.yaml", "config file") // 配置文件参数
pflag.Parse()
viper.BindPFlags(pflag.CommandLine) // 将命令行参数绑定到 Viper
// 3. 读取配置文件
if configFile := viper.GetString("config"); configFile != "" {
fmt.Println(configFile)
if err := viper.ReadInConfig(); err != nil {
fmt.Fprintf(os.Stderr, "读取配置文件失败:%v\n", err)
os.Exit(1)
}
}
// 4. 读取配置项
projectName := viper.GetString("name")
port := viper.GetInt("port")
fmt.Printf("ProjectName: %s, Port: %d\n", projectName, port)
}
-
config.yaml
:
name: hello
host: 10.10.0.172
port: 9090
-
支持环境变量、命令行参数、YAML 配置文件。
Python 测试 pytest
2022-07-12
- 全局
setup_module(module)
/ teardown_module(module)
引入包的时候执行
setup_function(function)
/ teardown_function(function)
- 模块级别
setup()
/ teardown()
测试模块载入的时候执行
- 类级别
setup_class(cls)
/ teardown_class(cls)
setup_method(self, method)
/ teardown_method(self, method)
setup(self)
/ teardown(self)
nose 语法,会被上面两个方法覆盖
Supported nose Idioms
setup()
and teardown()
at module/class/method level: any function or method called setup
will be called during the setup phase for each test, same for teardown
.
SkipTest
exceptions and markers
- setup/teardown decorators
__test__
attribute on modules/classes/functions
- general usage of nose utilities
个人
2022-07-02
个人 阮一峰
2022-07-01
本周的《科技爱好者周刊》讲了冯·诺依曼的故事。
学计算机的,应该没有人不知道冯·诺依曼架构,冯·诺依曼也被称为现代计算机的发明人。他结合了数理逻辑、信息论和生物学,开创了自动机理论,并希望在这个领域做出更大贡献。但是他总是插入其他相对不重要的工作,比如政府相关事务,以致于最后并没有为自动机理论的发展做出应有的贡献。
他本人并非不知道这一点,但就是这种性格,喜欢同时研究很多事情,一旦对某件事情产生了兴趣,就会放下手头的工作,推说稍后再回来接着做,可惜人生并没有为他留出"回过头再做"的时间。
尤其是这句话,我感觉扎心了,妥妥的就是在说我。
我感兴趣的事情实在太多,以致总是被各种事情打断而很少能实现预定目标。我一直就有一种感觉,感觉自己是一只在追赶沙丁鱼群的、“没有经验”的小旗鱼,悲哀!
我要安静下来,仔细思考我的目标到底是什么,它们有一个怎样的优先级。

幻想
2022-06-30
Golang GUI
2022-06-20
明显,fyne 遥遥领先。
开发者
2022-06-17
DB
2022-06-13
开发者 英语
2022-06-06
不看不知道,一看,读错好多单词。
包管理工具 Windows
2022-06-04
winget list
winget list -?
winget search xxx # 搜索
winget install xxx # 安装
winget upgrade # 列出 upgradable 包
winget upgrade xxx # 升级指定包
winget upgrade --all # 升级
winget
Windows 程序包管理器 v1.3.2691
版权所有 (C) Microsoft Corporation。保留所有权利。
WinGet 命令行实用工具可从命令行安装应用程序和其他程序包。
使用情况: winget [<命令>] [<选项>]
下列命令有效:
install 安装给定的程序包
show 显示包的相关信息
source 管理程序包的来源
search 查找并显示程序包的基本信息
list 显示已安装的程序包
upgrade 显示并执行可用升级
uninstall 卸载给定的程序包
hash 哈希安装程序的帮助程序
validate 验证清单文件
settings 打开设置或设置管理员设置
features 显示实验性功能的状态
export 导出已安装程序包的列表
import 安装文件中的所有程序包
如需特定命令的更多详细信息,请向其传递帮助参数。 [-?]
下列选项可用:
-v,--version 显示工具的版本
--info 显示工具的常规信息
可在此找到更多帮助: https://aka.ms/winget-command-help
开发者
2022-06-03
根据最新的 TIOBE 数据, 分析前面 50 中语言。
具体排名的意义对我们来说到不大,只是用来做一个比较热门语言的清单。
开发者
2022-05-22
Linux GNOME
2022-05-17
Pipenv Python
2022-05-16
pipenv requirements > requirements.txt && pipenv requirements --dev-only > requirements-dev.txt
Edge 浏览器
2022-05-15
-
Microsoft Edge 中的键盘快捷方式
-
Ctrl + R / F5 刷新
- Ctrl + Shift + R / Shift + F5 强制刷新
- Ctrl + Shift + B 隐藏收藏夹栏
- Ctrl + Shift + N 打开隐私窗口
- Ctrl + F 在页面上查找
- Ctrl + H 历史记录
- Ctrl + J 下载
- Ctrl + K 搜索
- Ctrl + Shift + O 收藏夹管理
- F12
- Ctrl + 加号 / Ctrl + 减号 / Ctrl + 0 缩放与还原
- Ctrl + D 聚焦地址栏