我有一个习惯,就是不断的记录在工作中反复用到的知识点,原本我很喜欢使用印象笔记和有道云笔记,其一是云笔记的同步功能,其二是云笔记的搜索功能,当你输入的笔记多了之后,你才会发现搜索功能是多么的重要。
鉴于公司内部对信息安全管理比较严格,这种云笔记在内部禁止了。很遗憾。大凡优秀的企业都不应该在限制这些条条框框。
没办法。在本地使用Atom 加上 Markdown 插件编写笔记。
初期我是这么做:
这个页面包含当天的待办事项、遇到的问题收集、以及解决办法的思路。
后期,我不这么做了,是因为Atom + Markdown 不支持搜索功能。我需要一个一个翻才能找到我需要的知识。
同样包含本月的代办事项、遇到的问题、以及解决问题的思路。文本内支持搜索。这样就把几百个文件的搜索量压缩在12个文件内,文件内搜索可以轻易达到。
这篇文章就是我遇到问题的知识点的合集。希望对你有启发。
既然是合集,你可能看到知识点不成体系。相互之间没有太多联系,相互独立。
如何将一个分支的修改移植到另一个分支?
背景:
远端维护着好几个分支,每个分支对应的不同的发布版本,但是有些修改却是一样的。为了快速实现修改,可以使用 cherry-pick 功能
具体做法:
库和工程在同一级目录下,怕影响库文件的使用,这个时候结合govender 能很好的管理自己创建的工程里使用到的第三方库。
json 是一种比较常见的数据交互格式,但是在linux 手动配置经常可能受限于格式导致配错。这个时候格式检查工具就能有很好的用途。还可以进行内容的提取。
下载:
$ wget http://stedolan.github.io/jq/download/linux32/jq (32-bit system)
$ wget http://stedolan.github.io/jq/download/linux64/jq (64-bit system)
$ chmod +x ./jq
$ sudo cp jq /usr/bin
使用示例:
{
"name": "Google",
"location":
{
"street": "1600 Amphitheatre Parkway",
"city": "Mountain View",
"state": "California",
"country": "US"
},
"employees":
[
{
"name": "Michael",
"division": "Engineering"
},
{
"name": "Laura",
"division": "HR"
},
{
"name": "Elise",
"division": "Marketing"
}
]
}
# 使用
cat json.txt | jq '.name' == > “Google”
cat json.txt | jq '.location.city' == > "Mountain View"
cat json.txt | jq '.employees[0].name' == >
{
"city": "Mountain View",
"street": "1600 Amphitheatre Parkway"
}
cat json.txt | jq . ## 检查格式
使用:格式化输出并检查格式
cat json.txt | python -m json.tool
这几个库都是和Go 编写测试用例相关的库,用来打桩或者替代原生测试框架。
示例:打桩 ioutil.ReadFile 函数
guard := Patch(ioutil.ReadFile, func (filename string) ([]byte, error) {
return fileBytes, nil
})
defer guard.Unpatch()
var e *Etcd
guard := PatchInstanceMethod(reflect.TypeOf(e), "Get", func(_ string) []string {
return []string{"task1", "task5", "task8"}
})
defer guard.Unpatch()
前提:安装 git
export GOPATH=$HOME/go export PATH=$PATH:$GOPATH/bin
在工程目录下执行 govendor init 即会在工程下生成一个vendor 目录,用来存放项目中用到的第三方库。
govendor add +external 即将src 下的工程用到的库拷贝至vendor 目录下。
是个很好的管理第三方库的工具。和python 中的virtualenv 很像。
.
省略前缀_
导入包:只是完成初始化操作 init 函数func (o *Once) Do(f func()) # 多次调用,只取一次
var once sync.Once
func GetPsmCfgInstance() *PsmCfg {
once.Do(func() {
inst = &PsmCfg{}
})
return inst
}
sudo apt-get install yamllint
pip install yamllint
用法:yamllint 文件名.yml
pip install shyaml
get-type:获取相应的类型
get-value:获取值
get-values{,-0}:对序列类型来说,获取值列表
keys{,-0}:返回键列表
values{,-0}:返回值列表
key-values,{,-0}:返回键值对
cat struct.yaml | shyaml get-value parameters.iaas