ent相同列名排序问题解决

前言 最近在开发的时候,需要进行数据库计算,主要是根据表中的某些字段进行汇总计算,但由于数据库表中已有同名字段名,ent 不会使用计算后的指标,默认使用schema中定义的字段,导致无法返回正确的结果。 针对这种情况,我能想到的方法有2种: 1) 不使用同名的字段名 2) 查找ent是否有相关的解决方案。 这里我采用了第二种方法,查找相关的issues, 通过查找相关issue,找到了相关的解决方案: ent 的 sql/modifier 特性。 场景重现 定义一个新的数据库表结构,结构如下: 1 2 3 4 5 6 7 8 func (Ad) Fields() []ent.Field { return []ent.Field{ field.Float("estimated_earnings"), field.Int("page_views"), field.Time("date"), field.Float("page_views_rpm").Optional(), } } page_views_rpm 字段是由 estimated_earnings 和 page_views 计算而来。 编写相应的查询代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 package main import ( "context" "entgo....

August 12, 2023 · 2 min · overstarry

Golang_embed简单介绍

最近需要使用 golang1.16 中的功能 embed ,本文简单记录下 embed 的使用。 embed 介绍 Go 1.16 引入了embed包,允许我们在编译时将静态文件(例如 .go、.html、.css、.js 等)嵌入到 Go 源文件中。这在构建静态网站、单页应用程序(SPA)和其他项目时非常有用。 主要有几个优点: 方便部署:不需要再部署静态资源文件,所有的资源都直接嵌入到可执行文件中。 安全:用户无法直接访问或修改嵌入的文件。 版本管理:和Go代码一起版本控制。 使用 嵌入为字符串 可以将文件内容保存到字符串变量中。 1 2 3 4 5 6 7 8 9 10 11 12 13 package main import ( _ "embed" "fmt" ) //go:embed hello.txt var s string func main() { fmt.Println(s) } 文件路径下有个 hello.txt,内容如下:hello, overstarry,代码运行输出:hello, overstarry 保存为 []bytes 还可以将文件内容保存为 []bytes变量 1 2 3 4 5 6 7 8 9 10 11 12 13 package main import ( _ "embed" "fmt" ) //go:embed hello....

August 5, 2023 · 2 min · overstarry

Nginx反向代理中出现的问题及解决方法

最近在使用nginx反向代理时遇到了一些问题,在本文记录一下问题及相应的解决方法。 问题1 问题现象 错误日志如下: 1 2 : host not found in upstream "xx.xx.vip"in /etc/nginx/conf.d/default.conf:17 nginx: [emerg] host not found in upstream "xx.xx.vip”in /etc/nginx/conf.d/default. conf:17 从错误日志可以看出这个问题主要是nginx无法解析相应的域名。 解决方法 怎么解决这个问题呢,我们只需添加相应的dns服务器即可 resolver 8.8.8.8; 。 问题2 问题现象 错误日志如下: 1 2023/07/28 01:35:43 [error] 34#34: *44 SSL_do_handshake() failed (SSL: error:14094438:SSL routines:ssl3_read_bytes:tlsv1 alert internal error:SSL alert number 80) while SSL handshaking to upstream, client: 172.16.64.75, server: , request: "POST /v1/data/xx/filter HTTP/1.1", upstream: "https://xxxx:443/v1/data/xx/filter", host: "xx.xx.com", referrer: "https://xx.xx.com/user/login" 解决方法 这个问题主要是https相关配置的问题,我们只需添加这几行配置即可:...

July 28, 2023 · 1 min · overstarry

使用cert Manager申请免费证书

cert manager 介绍 cert-manager 是一个可信证书管理器,可以自动为您的集群中的服务提供SSL证书和可靠的基础设施。它执行以下任务: 自动通过类似 Let’s Encrypt 和 eigene 之类的 Certificate Authority (CA) 重新生成即将过期的证书。 为您的集群中的服务自动生成证书。 提供一个组件库,可用于自签名证书或其他CA API。 主要特性: 自动生成/重新生成证书 支持多种 CA 颁发的证书:Let’s Encrypt、自签名证书、HashiCorp Vault 等 支持多种记录类型:DNS01、HTTP01、Kubernetes Ingress 等 适用于支持 TLS 密码学的任何 Kubernetes API 对象 具有密钥轮换功能,可无缝替换即将到期的证书 流畅的 API,易于扩展 总的来说,cert-manager 可以让您将集群负载均衡的 TLS 实现自动化,减少运维负担。它主要用于解决基础设施中最常见的挑战:如何高可用地为应用提供 TLS 证书。 申请证书 接下来我来讲解本文的重点:如何使用 cert-manager 申请证书并配置于ingress上。 安装 cert-manager 执行 kubectl apply -f https://github.com/cert-manager/cert-manager/releases/latest/download/cert-manager.yaml 部署最新版本 cert-manager. 查看 pod状态 部署后,过一会执行 kubectl get pods -n cert-manager 查看pod状态。 创建 ClusterIssuer 创建 cert-manager 的crd ClusterIssuer....

July 22, 2023 · 1 min · overstarry

Golang i18n

最近在开发一个需求时,需要将英文转为中文,这就需要进行本地化的处理,通过查找相关的库,决定使用 gettext-go 来进行本地化的处理,本篇文章主要简单介绍 gettext-go 和 它在k8s kubectl 中的运用。 gettext-go 简单介绍和使用 gettext-go 简单来说就是读取预先编写的 po或mo文件来进行本地化的处理. po和mo文件是什么呢? 接下来介绍一下po和mo文件 po和mo文件介绍 .po文件,.mo文件是由gettext程序生成或者使用的源代码和编译结果。 1、.pot文件 是一种模板文件,其实质与.po文件一样,其中包含了从源代码中提取所有的翻译字符串的列表,主要提供给翻译人员使用。 2、.po文件 (1)用程序msginit来分析pot文件,生成各语言对应的po文件,比如中文就是zh_CN.po,法语就是fr.po文件。 (2)PO是Portable Object(可移植对象)的缩写形式,它是面向翻译人员的、提取于源代码的一种资源文件。 (3).po文件可以用任何编辑器如poEdit,vi,Emacs,editplus打开,交给翻译人员来将其中的文字翻译成本国语言。 3、.mo文件 (1)用msgfmt将.po文件编译成mo文件,这是一个二进制文件,不能直接编辑。 (2)MO是Machine Object(机器对象)的缩写形式,它是面向计算机的、由.po文件通过GNU gettext工具包编译而成的二进制文件,应用程序通过读取.mo文件使自身的界面转换成用户使用的语言,如简体中文。 (3)可以用工具如msgunfmt命令将.mo文件反编译为.po文件。 很多软件都是通过这些文件实现多语言的功能。 gettext-go 简单使用 1 2 3 4 5 6 7 8 9 10 11 12 13 14 package main import ( "fmt" "github.com/chai2010/gettext-go" ) func main() { gettext := gettext.New("hello", "./examples/locale").SetLanguage("zh_CN") fmt.Println(gettext.Gettext("Hello, world!")) // Output: 你好, 世界! } 这段代码主要就是读取预先定义的 po或mo文件,选择中文翻译,将 Hello, world!...

July 16, 2023 · 6 min · overstarry