下载安装包

wget https://dl.google.com/go/go1.22.5.linux-amd64.tar.gz

解压

tar -zxvf go1.14.1.linux-amd64.tar.gz
mv go /home/
mkdir /home/gopath -p

设置环境变量,最好添加到bashrc中

export GOROOT=/home/go/
export PATH=$PATH:/home/go/bin/
export GO111MODULE=on
export GOPATH=/home/gopath

# 腾讯特别配置
export GOPRIVATE=*.code.oa.com

[查看更多...]

来自 大脸猪 发送于 2019-07-19 16:21 - 0 条评论

到了离开的时候,所以就不写我那三脚猫技术文章了。

快六年了,这是我待的最久的一份工作。前几天,看了看 talos 早年提交的代码,回想起这个功能还是在散步的时候构思出来的,那时妻子得了一场不大不小的病,辗转于医院和窄小的出租房。我在陪她等号的时候,在病历本最后一页兴致勃勃的给她介绍了我的算法权当尬聊。

时光匆匆,当我看 commit 记录的时候,这样的小片段还有很多。总是不经意间在我脑海中浮现。不知从何时起,这些 commit info 越来越潦草,少了快乐和灵动,多了焦虑和遗憾。如果说用两个字来总结这六年,前四年是怀念,后两年是遗憾。

此刻在敦煌的民宿,下午西出阳关,看到历经两千年,这条大道仍然存在并依然宽广。如果古人踏上这条路,是去国怀乡的恐惧,我踏上去,则是一种释然和期待。阳关大道似乎是一种吉祥的预兆。

[查看更多...]

来自 大脸猪 发送于 2024-07-05 01:03 - 0 条评论

在go中,解析json一直是一个让人痛苦的话题。尤其是对不特定的json对象,将它解析到map[string]any 对象时,key会发生乱序。

大部分场景中,这不会有什么问题,但有一些涉及签名的场景,则可能产生错误。有时需要对Marshal后产生的字符串json,按特定key顺序展示。

方法一,使用jsonvalue库

这个库是腾讯的老哥开发的,功能非常强大。尤其对json排序有很丰富的接口。MustMarshal可以传入丰富的配置。 1. 简单通用,甚至允许自定义排序 2. 性能会略差一些,约是官方json.Marshal的1/10。

直接上示例:

//  jsonvalue "github.com/Andrew-M-C/go.jsonvalue"

[查看更多...]

来自 大脸猪 发送于 2024-06-05 10:48 - 0 条评论

go大量地使用错误,但错误系统一直饱受诟病,早期errors包中只有一个光秃秃的New方法,使得很多著名的项目如GRPC也只能使用偏门方法处理错误。

在1.13后,errors包中新增了 As/Is两个方法,同时,fmt.Errorf中可以使用 %w进行错误的封装,这使得搭建简单的错误系统方便起来。

    // fmt.Errorf error %w 封装
    err1 := fmt.Errorf("find error:%w", ErrUnknown)
    // 封装后的错误仍然是 ErrUnknown
    gtest.Assert(errors.Is(err1, ErrUnknown), true)

[查看更多...]

来自 大脸猪 发送于 2024-06-18 14:39 - 0 条评论

godoc利用函数、结构、包的注释生成文档。同时,可以利用一些约定的文件和函数命名方式,生成更细致的用例。非常方便,便于维护。

安装相关库

go install -v golang.org/x/tools/cmd/godoc@latest
go install github.com/princjef/gomarkdoc/cmd/gomarkdoc@latest

运行godoc服务

godoc -http=0.0.0.0:8000 -play

此时,可以在浏览器中使用 0.0.0.0:8000查看文档网页。编辑注释和用例会实时更新,刷新网页即可。

[查看更多...]

来自 大脸猪 发送于 2024-06-12 15:00 - 0 条评论

在go中,官方实现了并发安全的sync.Map。它的出现有一定争议(性能勉强),但因为并发安全,在go中仍然广泛使用。

今天介绍的xsync系列("github.com/puzpuzpuz/xsync/v3"),使用了新的算法,对原官方的实现有一定的性能提升,此外,它提供了Size方法,补充了官方sync.Map的一大短板。

此外,它还提供了CounterMPMCQueue(bounded multi-producer multi-consumer concurrent queue)RBMutex等多种并发安全结构。功能十分强大。

[查看更多...]

来自 大脸猪 发送于 2024-06-11 13:47 - 0 条评论

tag:vscode;remote ssh;golangci-lint

vscode对远程开发的支持可谓一骑绝尘。关于golangci-lint的支持方法,网上已经很多。但没有找到远程开发的配置,故摸索了一番。

环境:本地vscode+Remote ssh插件,远程 centos

远程安装golangci-lint

curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin v1.46.2

golangci-lint

[查看更多...]

来自 大脸猪 发送于 2024-05-20 14:32 - 0 条评论

最近在研究home assistant自动化的编写,本文将不断的更新,汇集常见的条件和触发器

条件类

判定传感器(如小米夜灯)300秒无人

condition: template
value_template: >-
  {{ as_timestamp(now()) -
  as_timestamp(state_attr('binary_sensor.68abbc58bd0e_motion',
  'last_triggered')) > 300  }}
alias: 桌面夜灯300秒无动作

代码以template添加:

[查看更多...]

来自 大脸猪 发送于 2023-08-24 00:44 - 0 条评论