go-soap 简介
前言 最近需要调用一个第三方的接口进行数据的采集,这个接口是基于 SOAP 协议的,所以需要使用soap 相关的客户端进行调用。于是我调研了一些开源的 golang 的 soap 客户端,发现 go-soap 这个库的文档比较完善,而且使用起来也比较简单,所以就选择了这个库。 安装 使用以下命令进行安装: go get github.com/tiaguinho/gosoap 使用 由于目前没有特别好的例子,这里就以官方的例子进行说明。 官方的代码如下: package main import ( "encoding/xml" "log" "net/http" "time" "github.com/tiaguinho/gosoap" ) // GetIPLocationResponse will hold the Soap response type GetIPLocationResponse struct { GetIPLocationResult string `xml:"GetIpLocationResult"` } // GetIPLocationResult will type GetIPLocationResult struct { XMLName xml.Name `xml:"GeoIP"` Country string `xml:"Country"` State string `xml:"State"` } var ( r GetIPLocationResponse ) func main() { httpClient := &http.Client{ Timeout: 1500 * time.Millisecond, } soap, err := gosoap.SoapClient("http://wsgeoip.lavasoft.com/ipservice.asmx?WSDL", httpClient) if err != nil { log.Fatalf("SoapClient error: %s", err) } // Use gosoap.ArrayParams to support fixed position params params := gosoap.Params{ "sIp": "8.8.8.8", } res, err := soap.Call("GetIpLocation", params) if err != nil { log.Fatalf("Call error: %s", err) } res.Unmarshal(&r) // GetIpLocationResult will be a string. We need to parse it to XML result := GetIPLocationResult{} err = xml.Unmarshal([]byte(r.GetIPLocationResult), &result) if err != nil { log.Fatalf("xml.Unmarshal error: %s", err) } if result.Country != "US" { log.Fatalf("error: %+v", r) } log.Println("Country: ", result.Country) log.Println("State: ", result.State) } 可以看到 go-soap的使用跟常规的 http client的使用方法类似,都是创建一个连接,准备方法的参数,然后调用相应的方法。 这段代码展示了如何使用 go-soap 库连接 SOAP 服务、发送请求、处理响应,以及如何解析 XML 格式的返回数据。 ...
Docker Desktop 设置网络代理
前言 最近遇到 Docker Desktop 构建 node 项目时,由于网络问题导致的构建失败问题,本文将介绍两个给 Docker Desktop 设置网络代理的方法。 修改 WSL2 配置 为了测试代理的效果,这里创建一个go服务,代码很简单,就是访问 https://www.google.com/ 并返回结果。如果能正常访问,说明代理设置成功。 package main import "net/http" func main() { resp, err := http.Get("https://www.google.com/") if err != nil { panic(err) } defer resp.Body.Close() println(resp.Status) } 第一种方法是修改 WSL2 的配置,在 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 自动配置代理设置。 配置好,我们构建 Docker 镜像,运行: 可以看到代理成功生效,可以正常访问。 接下来介绍通过修改 Docker Desktop 的配置文件,设置代理。 修改 Docker Desktop 配置 打开 Docker Desktop 的设置,找到 Resources Proxies 选项,设置代理。 ...
如何在 Github Pages 上部署 Hugo 网站
前言 本文将介绍当初我搭建这个博客网站的时候,是如何将 Hugo 网站部署到 GitHub 上的,本文会采用与 hugo 官方不同的方式进行部署。 创建仓库 首先我们在 GitHub 上创建一个仓库,仓库名称为 username.github.io,其中 username 为你的 GitHub 用户名。这个仓库是用来存储hugo最终生成的静态网站文件的。再创建一个名称为 blogs 的仓库,这个仓库是用来存储 hugo 网站源内容文件的。 启用 GitHub Pages 在 username.github.io 仓库中,点击 Settings 选项卡,在 GitHub Pages 中选择 Source 为 从分支部署,然后点击 Save 按钮。 启用 GitHub Actions 接下来要实现提交 hugo 网站源文件到 blogs 仓库后,自动将 hugo 网站源文件编译成静态网站文件,并提交到 username.github.io 仓库中,这样就可以通过访问 username.github.io 仓库来访问 hugo 网站了。 生成 personal_token 在配置 Actions 前,需要先生成 personal_token,用于在 GitHub Actions 中使用。我们进入 Settings 选项卡,在 Developer settings 中选择 Personal access tokens,然后选择 Tokens (classic), 然后点击 Generate new token 下的Generate new token(classic)按钮,在 Note 中输入 blog,在 Expiration 中选择 No expiration,在 Select scopes 中选择 repo 和 admin:repo_hook,然后点击 Generate token 按钮,生成 personal_token。 ...
V0.dev chat
v0.dev chat 介绍 v0.dev chat 是 vercel 推出的最新的生成式 AI 聊天机器人,可以通过用户对话的方式来生成相应的 react 代码。 v0.dev chat 相比 V0.dev 有以下优点: 最新的 react、next.js、web 技术知识 可以运行 npm 包 更快更可靠的流失传输 接下来将通过官方的几个例子及个人尝试的效果来讲解。 官方例子 解释 next 缓存机制 打开 https://v0.dev/chat/E8fIPvg, 可以看到 bot 很好的通过图表及文字讲述了 next 的缓存机制。 贪吃蛇游戏 打开这个 https://v0.dev/chat/AjJVzgx ,可以看到用户上传蛇的皮肤并一步步引导 bot 生成贪吃蛇游戏。 个人尝试 接下来将通过一个简单的视频网站例子来尝试 v0.dev chat 的效果。 先通过简单的提示生成视频网站的初始代码: 可以看到 bot 生成的代码是非常完整的,并且可以运行预览的。接下来继续完善视频网站。 接下来添加视频下载保存功能 接下来添加视频网站首页功能 通过不断的调整,可以慢慢的形成一个视频网站的雏形。 ...
Markdown Preview Enhanced plugin introduction and simple use
前言 最近需要写总结报告,以前写总结报告时,往往使用 Word 进行编写,但由于显示排版等问题,本次采用了 Markdown 进行编写,在编写时使用了 Markdown Preview Enhanced 插件。本文介绍 Markdown Preview Enhanced 插件的安装及所使用的功能。 安装 打开 vscode编辑器,打开扩展栏,输入 Markdown Preview Enhanced ,第一个就是,点击安装后即可。 功能介绍 接下来将介绍一些在编写文档中所使用的功能。 diagrams Markdown Preview Enhanced 插件支持 low charts, sequence diagrams, mermaid, PlantUML, WaveDrom, GraphViz,Vega & Vega-lite,Ditaa 图像渲染。 在文档中我使用了 mermaid 和 Vega-lite,Vega-lite 用于绘制图表,mermaid 用于绘制流程图。 接下来介绍 markdown 中如何使用 Vega-lite 绘制图表,使用以下代码即可绘制一个漂亮的饼图: 如果想要居中的效果,可以添加 {align="center"}来设置居中的效果。 mermaid 可以用来绘制流程图,使用以下代码即可绘制一个简单的流程图: 如果我们想要添加 css 效果该怎么办呢,可以通过 HTML + css 的形式来显示我们想要的效果: ...