Abel'Blog

我干了什么?究竟拿了时间换了什么?

0%

go-推荐库

记录一些比较好的库,到时候可以方便使用。

管理后台

go-vue-admin

awesome-go

awesome-go

go-trending
你可以使用以下Go语言函数来生成包含8个字符的随机密码,确保每个字符类型(小写字母、大写字母、数字和特殊字符)至少出现一次:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
package main

import (
"crypto/rand"
"fmt"
)

func generatePassword() (string, error) {
lowercase := "abcdefghijklmnopqrstuvwxyz"
uppercase := "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
digits := "0123456789"
specialChars := "!@#$%^&*()"
allChars := lowercase + uppercase + digits + specialChars

// Ensure at least one character from each category is included
password := make([]byte, 8)
categories := []string{lowercase, uppercase, digits, specialChars}
for i, category := range categories {
char, err := getRandomChar(category)
if err != nil {
return "", err
}
password[i] = char
}

// Fill the remaining positions with random characters from all categories
for i := 4; i < 8; i++ {
char, err := getRandomChar(allChars)
if err != nil {
return "", err
}
password[i] = char
}

// Shuffle the password to prevent predictable placement
shuffledPassword, err := shuffle(password)
if err != nil {
return "", err
}

return string(shuffledPassword), nil
}

func getRandomChar(s string) (byte, error) {
b := make([]byte, 1)
_, err := rand.Read(b)
if err != nil {
return 0, err
}
index := int(b[0]) % len(s)
return s[index], nil
}

func shuffle(b []byte) ([]byte, error) {
shuffled := make([]byte, len(b))
perm, err := rand.Perm(len(b))
if err != nil {
return nil, err
}
for i, v := range perm {
shuffled[v] = b[i]
}
return shuffled, nil
}

func main() {
password, err := generatePassword()
if err != nil {
fmt.Println("Error generating password:", err)
return
}
fmt.Println("Generated Password:", password)
}

这个程序分几个步骤:

  1. 从每个字符类别(小写、大写、数字、特殊字符)中随机选择一个字符。
  2. 填充密码的剩余部分。
  3. 使用随机索引对密码字符进行混排,确保密码的随机性。
  4. 使用标准的crypto/rand库来生成安全的随机数,确保密码的强度和随机性。

运行此程序将生成一个包含至少每种类型字符的8位密码。

sh: 1: vite: not found
这个错误表明在执行 Vite 命令时,系统找不到 vite 可执行文件。以下是可能的原因和解决方案:

原因分析

1.    未安装 Vite:
•    你可能没有安装 Vite 或者安装失败。
2.    全局路径问题:
•    Vite 未安装为全局模块,或者环境变量未正确配置。
3.    运行环境问题:
•    你可能是在非项目目录下运行了 vite 命令。

解决方案

  1. 确保 Vite 已正确安装

Vite 可以作为全局依赖或项目本地依赖安装。首先,尝试以下命令:

•    全局安装 Vite:

npm install -g vite

•    或者在项目中安装:

npm install vite —save-dev

  1. 检查 node_modules 中的 Vite

如果安装为本地依赖,运行以下命令来确保 vite 安装在 node_modules 中:

ls node_modules/.bin/vite

如果存在,则用 npx 命令执行:

npx vite

  1. 检查全局路径

如果你安装了全局 Vite (-g 选项),但仍然出现错误,可能是 npm 的全局路径未加入环境变量。

运行以下命令检查全局路径:

npm list -g —depth=0

确保 Vite 在全局模块中。如果存在但无法找到,手动添加路径到环境变量:

•    查看全局路径:

npm config get prefix

通常是 /usr/local 或类似路径。

•    将全局路径添加到 PATH 环境变量中:

export PATH=$PATH:$(npm config get prefix)/bin

将此行添加到 ~/.bashrc 或 ~/.zshrc,以便永久生效。

  1. 运行环境问题

确保你在项目目录中运行 vite 命令。如果是启动开发服务器,应该进入包含 package.json 的目录,再运行以下命令:

npm run dev

  1. 重装 Node.js 和 Vite

如果问题依然存在,可能需要重新安装 Node.js 和 Vite:

1.    删除旧的 Node.js 和全局模块。
2.    安装 Node.js 最新版本。
3.    按需重新安装 Vite。

验证安装是否成功

安装完成后,运行以下命令检查:

vite —version

如果显示版本号,说明安装成功。

额外建议

•    如果你使用的是 Yarn 或 PNPM,可以尝试对应的命令安装 Vite:

yarn add vite —dev
pnpm add vite —save-dev

•    如果是一个特定项目问题,检查 package.json 的 scripts 配置是否正确。

gin-admin-vue

默认密码 123456

默认端口: 前端 8080 后端 8888

要快速检查你的 Golang 项目中 go.mod 文件所依赖的库是否存在已知的安全风险,可以使用以下几种方法:

  1. 使用 GoSec 工具

GoSec 是一个静态分析工具,可以帮助你扫描 Go 代码中的安全漏洞。

安装 GoSec

你可以通过以下命令安装 GoSec:

go install github.com/securego/gosec/v2/cmd/gosec@latest

使用 GoSec 扫描项目

然后,使用 gosec 对你的 Go 项目进行扫描:

gosec ./…

GoSec 会扫描项目中的所有 .go 文件,并报告可能的安全问题。它并不直接针对 go.mod 文件,但可以帮助你发现代码中可能的安全漏洞。

  1. 使用 Snyk 扫描 Go 依赖库

Snyk 是一个流行的安全工具,提供了对 go.mod 中的所有依赖包进行漏洞扫描的功能。

安装 Snyk CLI

你可以通过以下命令安装 Snyk:

npm install -g snyk

扫描项目中的依赖

然后,使用以下命令扫描 go.mod 中的依赖:

snyk test —all-projects

Snyk 会检查项目的依赖库(包括 go.mod 和 go.sum 文件)是否有已知的漏洞,并显示安全报告。

注册并连接你的项目

你还可以通过 Snyk 的官方网站注册账户并连接你的 GitHub、GitLab 等代码仓库,定期扫描并监控项目的安全性。

  1. 使用 Dependabot 或 GitHub Security Alerts

如果你的项目托管在 GitHub 上,你可以启用 GitHub 提供的安全功能(如 Dependabot 或 Security Alerts)来自动检测依赖项中的漏洞。

启用 Dependabot

1.    在你的 GitHub 项目中,点击 “Settings”。
2.    在 “Security & analysis” 部分,启用 “Dependabot alerts” 和 “Dependabot security updates”。
3.    Dependabot 会自动扫描你项目的 go.mod 文件,并在发现依赖项存在已知漏洞时,自动创建一个拉取请求来更新依赖库。

使用 GitHub Security Alerts

如果启用了 GitHub 的安全功能,它会在发现项目中使用的库存在安全漏洞时,直接给出警告通知,并提供修复建议。

  1. 使用 Go Modules Vulnerability Database

Go 官方提供了一个名为 Go Modules Vulnerability Database 的数据库,你可以使用它来查找 Go 模块中已知的漏洞。

手动查询

你可以访问 Go 官方的漏洞数据库网站来查看某个库是否有已知的漏洞:

Go Vulnerability Database

  1. 使用 govulncheck

govulncheck 是 Go 官方提供的工具,可以扫描 Go 代码中的漏洞。

安装 govulncheck

使用以下命令安装 govulncheck:

go install golang.org/x/vuln/cmd/govulncheck@latest

扫描 Go 项目

然后,在项目根目录下运行以下命令:

govulncheck ./…

该工具会扫描 Go 代码并报告与已知漏洞相关的任何依赖库。

总结
• GoSec 和 govulncheck 适合检查代码中的安全漏洞。
• Snyk 是一个跨语言的工具,能够检测 go.mod 依赖中的安全问题。
• 如果你的代码托管在 GitHub 上,可以利用 Dependabot 和 GitHub Security Alerts 来自动扫描和更新存在漏洞的依赖。

结合这些工具,你可以快速检测和修复 go.mod 文件中的潜在安全风险,确保依赖项的安全性。

是的,Go 语言有多个 lint 插件可以用来检查代码质量、风格以及潜在的错误。最常用的工具是 golint 和 staticcheck,它们都可以帮助你发现代码中的常见问题。

  1. golint

golint 是一个非常基础的 Go 代码检查工具,主要关注代码风格。它会检查诸如注释风格、变量命名、函数命名等问题。golint 并不会像 staticcheck 那样检查更复杂的潜在错误,但它能帮助你写出符合 Go 编码规范的代码。

安装 golint

go install golang.org/x/lint/golint@latest

使用 golint 检查代码

在你的 Go 项目中,你可以通过命令行使用 golint 来检查某个文件或目录:

golint ./…

这会检查当前目录及其子目录中的所有 Go 文件,并输出建议。

  1. staticcheck

staticcheck 是一个功能更强大的工具,不仅会检查代码风格问题,还会检查潜在的逻辑错误、性能问题、冗余代码等。它比 golint 更全面,更适合用于大型项目。

安装 staticcheck

go install honnef.co/go/tools/cmd/staticcheck@latest

使用 staticcheck 检查代码

同样,你可以通过命令行在 Go 项目中使用 staticcheck:

staticcheck ./…

  1. VS Code 插件(如果你使用 VS Code)

如果你使用 VS Code 编辑器,有很多插件可以集成 Go lint 工具,提升开发体验。

Go 扩展插件
• 安装 Go 插件:首先,在 VS Code 中安装 Go 插件。这个插件会自动集成 golint、staticcheck 和其他 Go 工具。
• 配置 Go 插件:在安装完 Go 插件后,你可以通过设置来启用或禁用 golint、staticcheck 等工具的集成,通常 VS Code 会自动检测并提示你安装需要的工具。

配置 VS Code 使用 Lint 工具

1.    打开 VS Code 的设置(Ctrl + ,)。
2.    搜索 Go Lint,然后根据需要启用或禁用相应的 lint 工具。
3.    在 .vscode/settings.json 中,你可以手动配置 lint 工具的路径:

{
“go.lintTool”: “golint”, // 或 “staticcheck”
“go.lintOnSave”: “file”,
“go.lintFlags”: []
}

  1. 其他 Lint 工具

除了 golint 和 staticcheck,你还可以使用一些其他 Go 的 lint 工具:
• golangci-lint: 它是一个非常流行的 Go lint 集成工具,支持多种 lint 引擎(包括 golint、staticcheck 等)。它是一个多功能的 linter,可以通过配置文件控制启用哪些检查。

安装 golangci-lint

go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest

使用 golangci-lint

golangci-lint run

你也可以创建一个配置文件 .golangci.yml 来定制化 lint 行为。

总结
• golint 适合用于基础的代码风格检查。
• staticcheck 更适合查找潜在的错误和优化建议。
• golangci-lint 可以集成多个 lint 工具,提供更全面的检查。

这些工具都可以提高代码质量,减少潜在的错误,建议你在项目中使用它们进行自动化代码检查。