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 包也提供了相应的功能。 ...

八月 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 中如何安装: ...

七月 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\[email protected]\javascript # github.com/smacker/go-tree-sitter go\pkg\mod\github.com\smacker\[email protected]\iter.go:17:18: undefined: Node go\pkg\mod\github.com\smacker\[email protected]\iter.go:21:21: undefined: Node go\pkg\mod\github.com\smacker\[email protected]\iter.go:25:20: undefined: Node go\pkg\mod\github.com\smacker\[email protected]\iter.go:30:26: undefined: Node go\pkg\mod\github.com\smacker\[email protected]\iter.go:34:20: undefined: Node go\pkg\mod\github.com\smacker\[email protected]\iter.go:38:32: undefined: Node go\pkg\mod\github.com\smacker\[email protected]\iter.go:43:9: undefined: Node go\pkg\mod\github.com\smacker\[email protected]\iter.go:46:18: undefined: Node go\pkg\mod\github.com\smacker\[email protected]\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

AI 检测文件类型 Magika

magika 介绍 Magika 是 Google 推出的一个新型工具,使用 AI 用来文件类型的检测,采用了高度优化的 Keras 模型,具有较高的准确性、模型较小等优点,支持100多种文件类型,准确性高达 99%,推测每个文件的时间大约 5 ms。 Magika 在 Google 内部已被大量使用,用于 Gmail,网络硬盘等应用,检测各种文件,提高了用户的安全性。 Magika 提供了 Pyhton 命令行、Pyhton API 和 js 包等多种方式使用,还支持批量处理提高推理速度。 安装 可以使用 pip 命令进行安装:pip install magika 如果没有 Python 环境,还可以 Docker 中进行使用: git clone https://github.com/google/magika cd magika/ docker build -t magika . docker run -it --rm -v $(pwd):/magika magika -r /magika/tests_data 如果 Docker 环境也没有,那你可以使用 Google 部署的网站进行试用 https://google.github.io/magika/。 运行 运行仓库提供的测试数据 (magika -r /magika/tests_data): 可以看到文件的类型很精准的被识别出来了。 接下来做个试验,将一个 png 的图片的后缀修改为 jpg ,看看还能否正确识别,可以看到还是成功精准识别了。 ...

六月 15, 2024 · overstarry

使用 Coze 打造专属 AI Bot

前言 Coze 是新一代一站式 AI Bot 开发平台。无论你是否有编程基础,都可以在 Coze 平台上快速搭建基于 AI 模型的各类问答 Bot,从解决简单的问答到处理复杂逻辑的对话。并且,你可以将搭建的 Bot 发布到各类社交平台和通讯软件上,与这些平台/软件上的用户互动。 Coze 具有以下功能及优势: Coze 提供了丰富的插件集合,可以扩展你的 Bot 的能力。用户也可进行插件的自定义,将现有的 API 能力通过配置的方式让 Bot 进行调用。 提供了知识库功能来管理和存储数据,可以让 Bot 使用知识库的内容进行回答。 长期记忆能力,Coze 提供了用于长期记忆的数据库功能,Bot 可以持久化的记住用户输入的参数和内容。 定时任务支持,Coze 支持为 Bot 创建定时任务,无需编写任何代码,只需输入任务描述,Bot 会暗示执行任务。 工作流,Coze 支持通过可视化的方式来创建工作流。 多 Agent 支持 Coze 有国内版 (www.coze.cn) 和国际版[www.coze.com],本篇文章使用国际版进行介绍如何创建一个 Bot。 创建 Bot 注册完 Coze 账号,先创建 Bot,点击 Create Bot 输入 Bot 名称,这里由于想搭建一个 blog 助手,于是输入 Blog Assistant,然后上次 Bot 图像,如果没有合适的图像,也可以使用 DALL·E-3 生成头像。 设置 创建完 Bot 后,就进入 Bot 的设置页面。 ...

六月 1, 2024 · overstarry

golang 生成 slug 字符串

slug 介绍 slug 在不同的场景有不同的意义,在 URL 中表示一种用于描述资源的短简洁易于理解的资源描述符,在数据库系统中还可以用于描述资源的唯一标识符,总的来说 slug 可以用来标识和描述资源的文本标识符,有很好的可读性和唯一性。 本文将介绍 golang 中如何根据字符串生成相应的 slug 文本。 安装 执行 go get -u github.com/gosimple/slug 来安装 slug 使用 先介绍 slug 库的基础使用方法: package main import ( "fmt" "github.com/gosimple/slug" ) func main() { text := slug.Make("overstarry home") fmt.Println(text) text = slug.Make("text generate") fmt.Println(text) } 运行后: overstarry-home text-generate 除了基础的转换功能,slug 还支持将不同的语言进行转换,查看下面的例子: func main() { text := slug.Make("overstarry home") fmt.Println(text) text = slug.Make("text generate") fmt.Println(text) text = slug.Make("Hellö Wörld хелло ворлд") fmt.Println(text) someText := slug.Make("影師") fmt.Println(someText) enText := slug.MakeLang("This & that", "en") fmt.Println(enText) } overstarry-home text-generate hello-world-khello-vorld ping-guo this-and-that 如果想要保留大写字母,可以设置 slug.Lowercase 参数来实现。如果想实现自定义的替换可以使用 slug.CustomSub 来实现。 ...

五月 25, 2024 · overstarry

metabase 介绍及简单使用

前言 前面的文章介绍过一个开源的大数据可视化工具 - Apache Superset,本文将介绍作者最近了解到的另一个可视化工具 Metabase。 Metabase 介绍 Metabase 是一个简单易用的开源项目,旨在为公司中的每个人提供商业智能和分析的最简单、最快捷的方法。Metabase 具有以下核心优势和主要功能: 短时间内完成设置。 团队成员不需要 SQL 知识基础。 提供 SQL 编辑器来进行更复杂的查询。 构建漂亮、交互式的仪表盘,包括过滤器、自动刷新、全屏显示和自定义点击行为等功能。 定义规范的细分和指标供团队使用 使用仪表板订阅按计划将数据发送到 Slack 或发送电子邮件。 设置警报,让数据更改时通知您。 在应用程序中嵌入图表及仪表盘。 配置了细粒度的数据权限功能,方便进行数据安全控制。 安装 接下来介绍如何安装 Metabase,我们将使用 docker 部署的方式进行安装。 docker-compose.yaml 内容如下: version: '3.9' services: metabase: image: metabase/metabase:latest container_name: metabase hostname: metabase volumes: - /dev/urandom:/dev/random:ro ports: - 3000:3000 environment: MB_DB_TYPE: postgres MB_DB_DBNAME: metabaseappdb MB_DB_PORT: 5432 MB_DB_USER: metabase MB_DB_PASS: mysecretpassword MB_DB_HOST: postgres networks: - metanet1 healthcheck: test: curl --fail -I http://localhost:3000/api/health || exit 1 interval: 15s timeout: 5s retries: 5 postgres: image: postgres:latest container_name: postgres hostname: postgres environment: POSTGRES_USER: metabase POSTGRES_DB: metabaseappdb POSTGRES_PASSWORD: mysecretpassword networks: - metanet1 networks: metanet1: driver: bridge 执行 docker compose up -d 即可启动服务。接下来访问 http://127.0.0.1:3000/ 进行安装,设置完语言密码默认数据库,安装即算完成。 ...

五月 17, 2024 · overstarry

Go 生成 Google analytics 衡量 ID

Google Analytics 介绍 Google Analytics(分析)4 是一项分析服务,用于衡量您的网站和应用中的流量和互动情况。本文将介绍如何通过调用 Google Analytics admin API 来生成 Google Analytics 衡量 ID. 配置 启用 API 在 Google Cloud console 后台 API 和服务 启用 Google Analytics Admin API。 配置服务账号 为了调用 API,我们需要创建一个服务账号,然后为创建的服务账号添加密钥。 需要注意的是还需要在 Google Analytics 为服务账号添加权限,不然请求接口会没数据。 安装 go 客户端 接下来安装 go 客户端: go get google.golang.org/api/analyticsadmin/v1alpha 生成流程 接下来我们会按照常规的 id 生成流程编写相应的代码,流程: 1 获取账号信息 通过 List 接口获取当前服务账号所拥有的所有 Google Analytics 账户信息。 accountsService := analyticsadmin.NewAccountsService(service) accountsReply, err := accountsService.List().Do(); if err != nil { log.Fatal("list account err",err) return } for _,acc := range accountsReply.Accounts { fmt.Println(acc.Name) } 2 创建媒体资源 ...

四月 18, 2024 · overstarry