0x744A7c03ec825A877FA1d0e5CBb90328176dFdDd
纪念自己成为摸鱼人
这是一个伟大的日子,我决定加入伟大的摸鱼人组织,成为一名合格的摸鱼人。
为了严谨记录这个伟大决议,特意加了数字签名。
一些常用的go command
more: https://pkg.go.dev/cmd
go build
特别地,文件最上方加入 build tags 可以指定编译的平台
//go:build
≥ Go1.17
// +build
≤ Go1.16 时使用
//go:build ignore
表示编译时需要忽略
也可以采用文件名为 *_GOOS_GOARCH
的形式(source_windows_amd64.go)来限定文件制定的编译平台
go list
go list -m all
列出所有依赖
go list -m -u all
列出所有依赖以及其当前最新版本
go list -m -versions xx
列出xx包的所有版本
go get
go get -d xx
更新xx的版本
go get -d -u ./...
更新所有直接/简介依赖的modules的版本
go get -d xx@vx.x.x
更新某个包到指定版本
ps: Go1.18 默认隐式携带-d
, 不会下载包,只会更新go.mod文件
go install
go install xx@version
下载某个program的指定版本
go mod
go mod tidy
删除go.mod中的无用包
go vet
go vet
找到文档中的错误之处,不一定十分准确
go fix
go tool fix -diff file
找到旧API并给出建议
如果没有 -diff
则直接替换文件,或路径下的所有文件
Go 1.17 的一些小变化
go get
Go1.17中, go get
不加-d
选项是不推荐的,-d
的意思是只修改 go.mod 的内容而不会将包下载下来,这样可以避免下载耗时太长,也可以减少无用的包下载;Go1.18中,-d
选项是默认的,也就是go get
将无法用于下载包的编译文件
https://go.dev/doc/go-get-install-deprecation
Starting in Go 1.17, installing executables with go get is deprecated. go install may be used instead.
In Go 1.18, go get will no longer build packages; it will only be used to add, update, or remove dependencies in go.mod. Specifically, go get will always act as if the -d flag were enabled.
以前用go get xxx
现在变成go install xxx@version
Lazy module loading
Go1.17的Go Command使用Module的懒加载模式Lazy module loading 来下载module。也就是如果go.mod的requires包涵盖了所有import packages,就不会加载module graph,否则再按需加载
go build标签
Go1.17及之后用来指定编译平台的标签是//go:build
,新标签的语法与Go的逻辑语法相同,比如限定在linux或者OS X编译: //go:build linux || darwin
而在Go1.16及之前采用的标签是 // +build
, 旧标签的语法为
- 空格表示OR
- 逗号表示AND
- !表示NOT
比如限定只能在linux或者OS X编译: // +build linux darwin
gofmt命令可以在遇到旧标签的时候添加一个等价的新标签
Reference of Go Modules
Reference of Go Modules
Go Modules Reference https://go.dev/ref/mod
Go Modules Tutorial https://go.dev/blog/using-go-modules
Dependency Problem by Russ cox https://research.swtch.com/deps
note
go.mod中的go行指明了期望版本,编译器在遇到大于期望版本的新特性时会报错,比如要求
go 1.15
那么编译的代码中有Go1.16新特性//go:embed
时会提示错误
尽量使得go.mod要求版本和实际编译版本一致
Happy Birthday
祝我生日快乐~
迪克模型
概述
迪克模型是用来描述工程师的技术能力的模型,由YYYMagic于2021年正式提出。
模型由T型模型发展而来,强调了对核心目标的关注,更适用于专家成长路线。并且能够满足工程师的长期目标管理需求,制定清晰的三年长期目标,在专注主要矛盾的同时关注次要矛盾。避免摇摆不定、模糊不清的问题。
迪克模型,如下图所示,由中心目标(center)以及分散目标(ball)组成,center是首要目标,需要深思熟虑来选定,比如你想在一年后成为优秀的XX工程师,那么这个XX就是center。ball是次要目标,分散在center的根部,可以是对center有一定支撑的领域,当然也可以是其他兴趣领域。选定首要次要目标之后,迪克模型的构建就完成了。

构建迪克模型的过程并不复杂,关键是需要按照模型不断学习充实自己,伴随工程能力的提升,center和ball也会变得越来越大。
实践
以音视频工程师为例,可以构造如下迪克模型

注意点
- 中心目标只能选定一个,但是可以有两个方面,比如”音视频“是核心目标,但是音视频又可以拆为”音视频技术“和”网络传输技术“两方面
- 虽然不被禁止,但应该避免加入两个以上的ball,该模型取法科学发展观,遵循了“一个中心,两个基本点“的发展理念,具有相当的科学性。加入两个以上的ball违背了专注中心的原则。
以后再把事情拖到最后做我就是SB
如何强迫自己在12点躺到床上去
如何强迫自己在12点躺到床上去…
What is Craas
我碰巧遇到了一个介绍Craas(Creeping as a Service),爬行即服务的Blog: https://every.to/divinations/creeping-as-a-service-craas 我需要先去阅读一下。。
顺便一提,Haas是Hardware as a Service 硬件及服务,是一个我搞不来的东西: (