go humanize介绍

前言 今天在 Github 查看一些开源项目时,发现了一个"人性化"的项目 go-humanize,此项目可以将一些常见的容量、时间、千分位转换为人们可以理解的形式,例如一个文件大小是 2000000 bytes,我们不能很好的理解,但如果告诉你是 2mb,我们就能很好的理解了。 go-humanize 就是方便的将一些不太能快速理解的数字转换为人们可以理解的形式。 安装 使用以下命令安装: go get github.com/dustin/go-humanize 使用 接下来分别介绍一些常见的功能。 容量转换 现在我们有一个文件大小是 52854982 bytes,我们使用 humanize 包的 Bytes 方法将其转换为人们可以理解的形式 53MB,也可以使用IBytes方法转换为MIB单位的值。也可以使用ParseBytes方法将可以理解的形式转换为bytes单位的值。 fmt.Printf("That file is %s.\n", humanize.IBytes(52854982)) fmt.Printf("That file is %s.", humanize.Bytes(52854982)) 时间转换 时间转换与容量转换类型,使用方法十分类似,使用方法如下: t := time.Now().Add(time.Hour * -7) fmt.Printf("This was touched %s.", humanize.Time(t)) //This was touched 7 hours ago. Time 根据相对时间转换为人们可以理解的形式,例如: xx天之前、xx小时之后等形式。 千分位转换 如果我们想在数字中添加逗号,就可以使用 Comma 方法,例如在处理金额时,我们通常会使用逗号将数字分隔开,例如 1,000,000,000 fmt.Printf("num is %s.", humanize.Comma(1000000000)) 还可以使用 Commaf 方法将浮点数转换为千分位形式。 位序 在日常使用中,我们有时需要表示位序例如 1st、2nd、3rd、4th 等,humanize 包也提供了相应的功能。 fmt.Printf("num is %s.", humanize.Ordinal(1000000000)) 简单看了下源码,发现函数十分简单: func Ordinal(x int) string { suffix := "th" switch x % 10 { case 1: if x%100 != 11 { suffix = "st" } case 2: if x%100 != 12 { suffix = "nd" } case 3: if x%100 != 13 { suffix = "rd" } } return strconv.Itoa(x) + suffix } 小结 本文介绍了 go-humanize 包的一些使用方法,可以方便的将一些数字转换为人们可以理解的形式。go-humanize 还有一些格式化的函数,感兴趣的读者可以自行查看源码。 ...

八月 10, 2024 · overstarry

解决检测到 localhost 代理配置,但未镜像到 WSL。NAT 模式下的 WSL 不支持 localhost 代理。

前言 最近在使用WSL时,想要在 WSL 中使用代理,但由于一些历史原因,宿主机开启的代理,WSL 无法使用,为了解决这个问题,查找了相关文档,在本文记录一下。 解决 在 windows C:\Users<your_username> 目录下创建 .wslconfig 文件,输入以下内容: [experimental] autoMemoryReclaim=gradual networkingMode=mirrored dnsTunneling=true firewall=true autoProxy=true 然后重启 WSL: wsl --shutdown networkingMode 为mirrored 表示网络模式使用镜像模式,会镜像宿主机的网络设置,能更好的集成宿主机和WSL的网络。 autoProxy 开启了自动代理的功能,意味 WSL 自动配置代理设置。 参考 https://github.com/microsoft/WSL/issues/10753 https://learn.microsoft.com/en-us/windows/wsl/wsl-config#experimental-settings

七月 18, 2024 · overstarry

AI编程助手 - Cody

介绍 cody 是一个 AI 编程助手,可以帮助你更快更好的理解代码,编写代码,解决代码中的问题。通过本地代码仓库和远程代码库提取上下文,让你能够更好的理解和编写代码。Cody 目前可以在以下编程工具中使用: VS Code JetBrains IDE Neovim (实验性) Web (实验性) Cody 主要有以下功能: 自动完成 基于代码上下文的自动补全 聊天 在聊天视图中询问代码相关的问题 命令 为常见的操作提供了快捷命令,例如:生成文档,添加测试,检测代码问题 调试 在编辑器中调试代码,帮你寻找代码中的问题 忽略 可以过滤某些文件及过滤某些仓库 价格 介绍完 Cody 的特点后,接下来介绍大家关心的价格问题,Cody 有3个版本,分别是 Free、Pro、Enterprise. Free 版本为免费版,目前每月提供 20 次聊天次数、500 次代码自动完成,今天查看 sourcegraph 的 blog,发现 Free 版本的额度提高了,代码自动完成次数为无限次,聊天和命令次数增加了10倍为200次。 Pro 版本为每个月9美元,提供了不限次数的代码补全及聊天功能及提供了 GPT-4o 等高级 LLM. Enterprise 的价格需要联系 sourcegraph 的销售人员,Enterprise 相较于 Pro 版提供了更多的团队功能。 安装 接下来介绍如何安装 Cody,主要介绍 VS Code 中如何安装: 1 打开 VS Code 2 打开扩展界面,搜索 Cody AI ,点击安装 3 安装完可能需要重启 VS Code ...

七月 3, 2024 · overstarry

katana 新一代的爬虫工具

katana 介绍 katana是一款强大的新一代的网络爬虫工具,通过使用 katana ,用户能够快速的进行互联网资源的爬取和渗透测试阶段的收集任务。 特点 katana 有以下特点: 快速及高可配置的网络爬虫 标准及无头模式 主动和被动模式 JavaScript 脚本爬取解析 定制的表单内容自动填充 爬取范围控制 可自定义设置输出字段 输入数据 支持标准输入(STDIN),URL和列表(LIST) 输出数据 支持STDOUT、文件和JSON格式 安装 接下来介绍如何安装 katana katana 的安装需要 go1.18版本以上,可以执行以下命令或下载Github 仓库的发布版本。 go install github.com/projectdiscovery/katana/cmd/katana@latest windows 在安装中可能会遇到以下报错: github.com/smacker/go-tree-sitter/javascript: build constraints exclude all Go files in C:\Users\overstarry\go\pkg\mod\github.com\smacker\go-tree-sitter@v0.0.0-20230720070738-0d0a9f78d8f8\javascript # github.com/smacker/go-tree-sitter go\pkg\mod\github.com\smacker\go-tree-sitter@v0.0.0-20230720070738-0d0a9f78d8f8\iter.go:17:18: undefined: Node go\pkg\mod\github.com\smacker\go-tree-sitter@v0.0.0-20230720070738-0d0a9f78d8f8\iter.go:21:21: undefined: Node go\pkg\mod\github.com\smacker\go-tree-sitter@v0.0.0-20230720070738-0d0a9f78d8f8\iter.go:25:20: undefined: Node go\pkg\mod\github.com\smacker\go-tree-sitter@v0.0.0-20230720070738-0d0a9f78d8f8\iter.go:30:26: undefined: Node go\pkg\mod\github.com\smacker\go-tree-sitter@v0.0.0-20230720070738-0d0a9f78d8f8\iter.go:34:20: undefined: Node go\pkg\mod\github.com\smacker\go-tree-sitter@v0.0.0-20230720070738-0d0a9f78d8f8\iter.go:38:32: undefined: Node go\pkg\mod\github.com\smacker\go-tree-sitter@v0.0.0-20230720070738-0d0a9f78d8f8\iter.go:43:9: undefined: Node go\pkg\mod\github.com\smacker\go-tree-sitter@v0.0.0-20230720070738-0d0a9f78d8f8\iter.go:46:18: undefined: Node go\pkg\mod\github.com\smacker\go-tree-sitter@v0.0.0-20230720070738-0d0a9f78d8f8\iter.go:68:40: undefined: Node 可以使用以下命令解决: ...

六月 29, 2024 · overstarry

Tianji 介绍

介绍 Tianji 是一个集网站分析、网站状态监控、服务状态监控集一体的工具平台。 在我们日常使用中,我们在观察监控一个网站使往往需要使用多个工具一起使用,例如使用 GA 来进行 PV/UV 数据的收集,使用 uptime monitor 来查看服务器的网络及连通性,使用 prometheus 来查看服务器的状态等 那么有没有一个工具能满足这些需求呢? Tianji 就是这样一个工具,能够更方便更简洁的满足用户的需求。 安装 docker 安装 Tianji wget https://raw.githubusercontent.com/msgbyte/tianji/master/docker-compose.yml docker compose up -d 默认账号密码是 admin/admin kubernetes 安装 Tianji kubernetes 环境下可以使用 Helm 安装 helm repo add msgbyte https://msgbyte.github.io/charts helm search repo tianji helm install tianji msgbyte/tianji 本文使用了 Docker 进行安装,接下来的介绍也会以这个环境为主。 使用 安装完浏览器打开 http://localhost:12345/ 输入默认账号密码即进入主界面。 可以看到有六个栏目,接下来依次介绍这六个栏目的使用。 网站 网站顾名思义就是统计网站的PV/UV 数据,创建好一个网站后,可以在你的网站中嵌入相应的脚本代码,就可追踪相应的用户数据。 监控器 监控器就是针对网站云服务进行一个相应的监控,保证服务的稳定性。 ...

六月 22, 2024 · overstarry