解决检测到 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, 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

docker init 命令

前言 Docker 是一个广受欢迎的开发平台,它允许用户通过容器化技术来构建、打包和部署应用程序。尽管 Docker 提供了强大的功能和灵活性,但对于初学者而言,在项目中配置 Docker 可能会遇到一些挑战。 不过,Docker 官方为了降低使用门槛,推出了一个便捷的命令docker init。这个命令旨在快速初始化 Docker 配置,从而简化将 Docker 集成到项目中的流程。通过使用这个命令,用户可以轻松地为项目设置必要的 Docker 支持,进而享受到 Docker 带来的便利和效率提升。 docker init 简介 docker init 命令会根据用户指定的选项生成运行容器的一些文件,极大的加快了项目的容器化: .dockerignore : docker 构建时忽略的文件列表 Dockerfile: 镜像的核心文件 Compose.yaml: docker compose 的配置文件 README.Docker.md 如果你的项目中已有以上文件,会让你选择是否覆盖旧文件避免文件冲突问题。 docker init 提供了一组项目的模板文件,包括了 Go、Python、ASP.NET Core等常见的服务器应用程序及一个其它类型应用程序模板。开发者使用 init 命令时,可以根据选择的模板生成相应的文件,使开发者可以快速的构建并启动容器。 使用 接下来介绍如何使用 docker init 进行项目容器的初始化,这里以前文的go项目为例子进行介绍。 进入项目根目录执行 init 命令,选择go模板,会让你选择使用的go版本,主程序的位置及应用所使用的端口: 执行完可以看到会生成相应的文件及如何构建并运行的命令。 查看生成的Dockerfile 和 Compose.yaml文件: # syntax=docker/dockerfile:1 # Comments are provided throughout this file to help you get started. # If you need more help, visit the Dockerfile reference guide at # https://docs.docker.com/go/dockerfile-reference/ # Want to help us make this template better? Share your feedback here: https://forms.gle/ybq9Krt8jtBL3iCk7 ################################################################################ # Create a stage for building the application. ARG GO_VERSION=1.21.0 FROM --platform=$BUILDPLATFORM golang:${GO_VERSION} AS build WORKDIR /src # Download dependencies as a separate step to take advantage of Docker's caching. # Leverage a cache mount to /go/pkg/mod/ to speed up subsequent builds. # Leverage bind mounts to go.sum and go.mod to avoid having to copy them into # the container. RUN --mount=type=cache,target=/go/pkg/mod/ \ --mount=type=bind,source=go.sum,target=go.sum \ --mount=type=bind,source=go.mod,target=go.mod \ go mod download -x # This is the architecture you’re building for, which is passed in by the builder. # Placing it here allows the previous steps to be cached across architectures. ARG TARGETARCH # Build the application. # Leverage a cache mount to /go/pkg/mod/ to speed up subsequent builds. # Leverage a bind mount to the current directory to avoid having to copy the # source code into the container. RUN --mount=type=cache,target=/go/pkg/mod/ \ --mount=type=bind,target=. \ CGO_ENABLED=0 GOARCH=$TARGETARCH go build -o /bin/server ./retry/server ################################################################################ # Create a new stage for running the application that contains the minimal # runtime dependencies for the application. This often uses a different base # image from the build stage where the necessary files are copied from the build # stage. # # The example below uses the alpine image as the foundation for running the app. # By specifying the "latest" tag, it will also use whatever happens to be the # most recent version of that image when you build your Dockerfile. If # reproducability is important, consider using a versioned tag # (e.g., alpine:3.17.2) or SHA (e.g., alpine@sha256:c41ab5c992deb4fe7e5da09f67a8804a46bd0592bfdf0b1847dde0e0889d2bff). FROM alpine:latest AS final # Install any runtime dependencies that are needed to run your application. # Leverage a cache mount to /var/cache/apk/ to speed up subsequent builds. RUN --mount=type=cache,target=/var/cache/apk \ apk --update add \ ca-certificates \ tzdata \ && \ update-ca-certificates # Create a non-privileged user that the app will run under. # See https://docs.docker.com/go/dockerfile-user-best-practices/ ARG UID=10001 RUN adduser \ --disabled-password \ --gecos "" \ --home "/nonexistent" \ --shell "/sbin/nologin" \ --no-create-home \ --uid "${UID}" \ appuser USER appuser # Copy the executable from the "build" stage. COPY --from=build /bin/server /bin/ # Expose the port that the application listens on. EXPOSE 9000 # What the container should run when it is started. ENTRYPOINT [ "/bin/server" ] 可以看到 Dockerfile 是一个常见的多阶段构建镜像流程。 ...

四月 13, 2024 · overstarry