作者:matrix
被围观: 1,211 次
发布时间:2023-06-24
分类:Golang |
一条评论 »
熟悉面向对象语言的话,Golang的struct结构体有点像面向对象编程中的类。但这两者不是完全一样,只能说都有继承、封装、多态的特点。
结构体(struct)
结构体可以将零个或多个任意类型的值聚合在一起,能描述多个数据类型
type Person struct { name string age int value string address string}
成员方法和接收者
func (p *Person) setName(name string) { p.name = name}
说明:setName 为声明的方法p *Person为接收者(指针类型)struc类型新增成员方法的语法很另类,像是单独给struct做绑定,绑定的时候会有接收者来指定当前实例类型。Golang其实可以给任何类型创建成员方法:
type MyInt intfunc (i MyInt) IsZero() ......
作者:matrix
被围观: 1,098 次
发布时间:2023-06-23
分类:零零星星 |
无评论 »
https://github.com/Hootrix/keyword_alert_bot
针对keyword_alert_bot项目早就有添加docker镜像的想法,这次趁着有机会就完成这个feature,也算是使用下GitHub的CI/CD。我的想法是利用github action功能,推送代码更新后自动打包docker镜像且安装所有依赖。打包的时候把最新版本号写入到代码中(当前日期作为版本号)。使用者把docker镜像pull后可以轻松运行整个bot。
流水线配置
项目的 .github/workflows/main.yml路径下新建文件:
name: CI/CD Pipelineon: push: # 指定分支push操作触发流水线 branches: # - dev.20230419 # debug - masterjobs: # 自定义job流水线名字 build-and-push: # 指定运行环境 ubuntu......
作者:matrix
被围观: 3,204 次
发布时间:2023-04-28
分类:Python |
4 条评论 »
安装构建工具
首先确保安装了setuptools 和wheel。如果没有就运行以下命令安装:
$ pip3 install setuptools wheel twine
配置项目
目录结构可参考:
https://github.com/Hootrix/text-box-wrapper
项目中包含以下文件:
setup.py:包含项目的元数据和依赖关系。README.md:项目的描述文件。LICENSE:选择一个许可证并将其放在此文件中。wrapper.py:自己定义的文件,包含功能代码__init__.py 包定义,以及可引入的方法
配置setup.py
setup.py可配置作者、readme、仓库等信息
import osfrom setuptools import setup, find_packageswith open(os.path.join(os.path.dirname(__file__), "README.md"), encoding="utf-8") as f: long_de......
作者:matrix
被围观: 1,927 次
发布时间:2023-02-10
分类:Golang |
无评论 »
Golang支持跨平台编译,比起python只能编译为当前平台的二进制文件要好太多。
go build help
$ go help buildusage: go build [-o output] [build flags] [packages]...
默认编译(输出当前平台二进制文件)
$ go build -ldflags="-s -w" main.go && upx -9 ./main
说明:upx 该工具用于压缩二进制文件 -9 表示最高压缩率(选择范围为1-9)
跨平台编译
Mac/Linux系统下:
输出Linux可执行文件:
$ CGO_ENABLE=0 GOOS=linux GOARCH=amd64 go build -ldflags='-s -w -extldflags "-static -fpic"' -o main-linux-amd64 main.go && upx -9 ./main-linux-amd64
输出Windows可执行文件:
$ CGO_ENABLE=0 GOOS=windows GOARC......
作者:matrix
被围观: 1,728 次
发布时间:2023-01-31
分类:Golang |
一条评论 »
变量声明
Golang属于强类型语言,且定义的变量一定要被使用不然会编译报错。Golang可以使用:=的语法糖来自动实现类型推断,一般都在非全局变量中使用。var的声明多用在全局变量声明。变量赋值后必须使用,否则编译失败例外: _变量 表示占位变量。不能赋值和调用,仅为占位作用。
var a int = 16var a = 16 //类型自动推断//等同于短变量声明a := 16//多变量快捷声明var a, b intvar a, b, c = 16, true, "str" //可以不同类型
变量作用域
{ var b string = "hi~" fmt.Println("asd") fmt.Println("b->", b) } num := 12 { a, num := false, 5 // 这里的num会被认为是一个新变量 b := 100 fmt.Println(a, num, b)......
作者:matrix
被围观: 2,194 次
发布时间:2022-12-31
分类:零零星星 |
无评论 »
很多时候需要搭建简单的socket代理或者其他中转隧道,方便学习开发。gost是用golang实现的隧道代理工具,功能强大,也有docker环境可以快速使用。
github
https://github.com/go-gost/gost
docker镜像
ginuerzh/gostgogost/gost
两个docker镜像应该都可信,来源于作者/官方
前置条件
外网服务器 + 中转服务器(可选) + 域名 + 域名SSL证书下面用中转/直连方案实现隧道代理,记录下~
服务端(outside server)
外网落地服务器a. 直连方案配置
$ docker run --rm -it \ --net=host \ -v /etc/letsencrypt:/etc/letsencrypt:ro \ ginuerzh/gost -L "mwss://USERNAME:PASSWORD@:443?cert=/etc/letsencrypt/live/wwww.hhtjim.com......
作者:matrix
被围观: 3,916 次
发布时间:2022-10-18
分类:零零星星 |
2 条评论 »
环境:Mac + vscode + docker
创建项目和容器镜像
基于nodejs的docker镜像安装tailwindcss,daisyui新建目录tailwind-project
$ mkdir -p ./tailwind-project/src/ ./tailwind-project/dist/$ cd ./tailwind-project/$ docker run -it --rm -v $(pwd):/data -w /data node:latest sh -c 'npm install -D tailwindcss tailwindcss-cli ;npm i daisyui;npx tailwindcss-cli init;bash'
install -D 参数表示dev daisyui为组件库 可取消显示「Created Tailwind css config file: tailwind.config.js」 即创建成功安装成功的npm包:
root@4e27e6ae691b:/data# npm listdata@ /data+-- daisyui@2.31.0+-- tailwindcss-cli@0.1.2`-- tailwind......
作者:matrix
被围观: 2,956 次
发布时间:2022-10-02
分类:零零星星 |
一条评论 »
SLA探活的需求很广泛,简单的可以自己实现。但是专门独立的探活工具倒是极少~EaseProbe由GO编写,不需要其他依赖支持直接使用二进制程序运行。这几天测试用来给api接口、ssl证书、web 200探活,好用~
github仓库
https://github.com/megaease/EaseProbe支持HTTP、TCP、SSH、SSL证书、各种数据库/消息中间件服务探活,和email、SLAck、Discord、Telegram、飞书...的通知。还支持消息通知和定时发送报表,可以自定义分类告警渠道
配置config.yaml
参照官方配置,新建文件config.yaml配置SSL证书过期检测、WEB HTTP200检测、接口HTTP状态检测:
http: # http探活 # 默认监控网页HTTP是否为200OK - name: "HHTJIM.COM OK" url: https:......