每日一库之「Readline」 你是否也遇到过,在启动的服务中,试图通过上下键来追溯历史输入时却打出了 ^[[A 的问题。 12345scanner := bufio.NewScanner(os.Stdin)for scanner.Scan() { line := scanner.Text() fmt.Printf("line: %v\n", line)} 这都是常规的输入会有的问题,如果你也讨厌这个上下左右键的限制, 2024-08-16 每日一库 #github #readline
Web 项目怎么做单元测试 单元测试能有效提升项目代码质量、增强项目的可维护性和稳定性。但问题是,Web 项目怎么做单元测试? 对于一个 golang 的 web 项目,可能的层级有 middleware, handler, service, repo 等,至少这里列举的每一层都有单元测试的必要: middleware:测试登陆校验、权限校验、日志等中间件功能是否正常。 handler:测试路由、请求参数、响应是否正确。 2024-07-25 golang #单元测试
在 pre-commit 中加入代码测试 在 .git/hooks/pre-commit 中加入以下内容,用于在提交前执行测试(golang 项目)。 123456789#!/bin/shgo test ./...TEST_STATUS=$?if [ $TEST_STATUS -ne 0 ]; then echo "Tests failed. Commit aborted." exit 1fi 如果修改了仓库内容,在测试不通 2024-07-25 git #测试
Go 资源列表 【导读】:awesome-go 就是 avelino 发起维护的 Go 资源列表,内容包括:音频和音乐库、命令行工具、服务端应用、流处理、持续集成、数据库、机器学习、NLP、物联网、中间件、文本处理、安全、机器人技术等。 音频和音乐库 flac: 原生 Go 语言编写的 FLAC 数据流编码与解码器。 gaad: 原生 Go 语言编写的 AAC 比特流解析器。 go-sox: libsox 库的 2024-07-12 golang #golang
每日一库之「Survey」 Survey 是一个轻量级的命令行交互库,它提供了一套简单的问题类型,并支持多种类型的答案。 安装1go get github.com/AlecAivazis/survey 示例 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647package mainimport ( "f 2024-07-12 每日一库 #github #survey
每日一库之「Cobra」 Cobra 是一个用于创建命令行应用程序的库。 Install安装依赖 1go get -u github.com/spf13/cobra@latest 同时 cobra 也提供了他的命令行工具帮助你快速地搭建你的应用程序。 1go install github.com/spf13/cobra-cli@latest UsageCobra-cli 命令行工具的使用教程:https://githu 2024-07-12 每日一库 #github #cobra
封装 zap 日志注入 trace id 如果想要对每个请求的调用进行跟踪,需要充分利用 context 包,通过 context 来传递一个唯一标识 trace id,从而能够追踪请求的调用链。 自定义 Logger 对 *zap.SugaredLogger 进行包装12345678910111213141516171819202122232425262728293031323334353637383940414243444546474 2024-07-01 golang #golang #zap #trace #gin
第四章、数据编码与演化 应用程序不可避免地需要随时间而变化、调整,在大多数情况下,更改应用程序功能时,也需要更改其存储的数据:可能需要捕获新的字段或记录类型,或者需要以新的方式呈现已有数据。 当数据格式或模式发生变化时,经常需要对应用程序代码进行相应的调整。但是新旧版本的代码,以及新旧数据格式,可能会同时在系统内共存。为了使系统继续顺利运行,需要保持双向的兼容性: 向后兼容:较新的代码可以读取由旧代码编写的数据。 2024-05-09 《数据密集型应用系统设计》 #designing data-intensive applications