MeowRain Life is Simple Life is Simple
找到.eslintrc.cjs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 /* eslint-env node */ require('@rushstack/eslint-patch/modern-module-resolution') module.exports = { root: true, 'extends': [ 'plugin:vue/vue3-essential', 'eslint:recommended', '@vue/eslint-config-typescript', '@vue/eslint-config-prettier/skip-formatting' ], parserOptions: { ecmaVersion: 'latest' }, rules: { "no-undef": "off" } } 添加
1 2 3 rules: { "no-undef": "off" } 就可以了
安裝sqlite 1 npm i sqlite3 在main.js中使用ipcMain創建相關函數 記住要導入包
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 app.whenReady().then(() => { createWindow() dbInit() }) const sqlite3 = require('sqlite3').verbose() let db const dbInit = () => { // Ensure the directory exists const dbPath = path.
https://juejin.cn/post/7360899424107970586#heading-3 https://juejin.cn/post/7163088791007068191
安裝vue 1 npm create vue@latest 安裝electron 在安装 electron之前需要先配置一下 安装源
新建一个 .npmrc文件
windows的.npmrc在C:\Users\yourname
Linux在用戶家目錄下
1 2 3 4 5 proxy=http://127.0.0.1:2080 home=https://www.npmjs.org registry=https://registry.npmjs.org/ https-proxy=http://127.0.0.1:2080 electron_mirror=https://npmmirror.com/mirrors/electron/ 我這裏不僅設置了electron的mirror,還設置了npm的代理,防止下載出現問題
然後我們安裝electron
1 npm install --save-dev electron 安装electron-builder 用于打包可安装exe程序和绿色版免安装exe程序
1 npm install -D electron-builder 用vite构建electron应用程序需要一个vite插件
1 npm install -D electron-devtools-installer 安裝vite配套electron的插件
1 npm install vite-electron-plugin vite-plugin-electron-renderer -D 接下來我們新建一個electron目錄
在electron目錄裏面創建一個index.ts,用於配置electron
這個目錄裏的ts文件後面會被編譯為js文件,放在dist-electron目錄中
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 // src-electron/main.
介绍 公共变量 Vite 在一个特殊的 import.meta.env 对象上暴露环境变量,这些变量在构建时会被静态地替换掉。 加载的环境变量也会通过 import.meta.env 以字符串形式暴露给客户端源码。
为了防止意外地将一些环境变量泄漏到客户端,只有以 VITE_ 为前缀的变量才会暴露给经过 vite 处理的代码。例如下面这些环境变量:
1 2 VITE_SOME_KEY=123 DB_PASSWORD=foobar 只有 VITE_SOME_KEY 会被暴露为 import.meta.env.VITE_SOME_KEY 提供给客户端源码,而 DB_PASSWORD 则不会。
1 2 console.log(import.meta.env.VITE_SOME_KEY) // "123" console.log(import.meta.env.DB_PASSWORD) // undefined 默认情况下,Vite 在 vite/client.d.ts 中为 import.meta.env 提供了类型定义。随着在 .env[mode] 文件中自定义了越来越多的环境变量,你可能想要在代码中获取这些以 VITE_ 为前缀的用户自定义环境变量的 TypeScript 智能提示。 见下面额外配置
.env文件 使用 带VITE的普通使用方法 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 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 login.
什么是跨域 跨域:浏览器从一个域名的网页去请求另一个域名的资源时,域名、端口、协议任一不同,都是跨域。
在前后端分离的模式下,前后端的域名是不一致的,此时就会发生跨域访问问题。跨域问题来源于JavaScript的同源策略,即只有 协议+主机名+端口号(如存在)相同,则允许相互访问。也就是说JavaScript只能访问和操作自己域下的资源,不能访问和操作其他域下的资源。跨域问题是针对JS和ajax的。而axios是通过Promise实现对ajax技术的一种封装,也同样存在跨域问题。
解决方案 后端修改响应头 原理: 通过在后端服务器的响应头中添加 Access-Control-Allow-Origin 字段,允许指定域名或通配符下的前端访问资源。
优点: 简单易行,直接在后端代码中修改即可,无需额外配置。
缺点: 需要后端配合修改代码,对于跨域请求的控制力度有限。
前端反向代理 原理: 使用前端代理服务器,将跨域请求转发到目标服务器,然后将响应结果返回给前端。
优点: 无需后端配合,前端可以完全控制跨域请求,灵活度高。
缺点: 需要额外的代理服务器配置,可能会增加前端开发的复杂度。
vite配置 Vite 的 server 选项主要用于配置开发服务器,其中包含 proxy 属性,可以用来设置反向代理规则。
通过 proxy 属性,你可以将开发环境中的某些请求转发到其他服务器,从而解决跨域问题,或者访问不同的 API 服务。
举个例子,假设你想要将 /api 路径下的所有请求转发到 http://localhost:3000 服务器,你可以在 vite.config.js 文件中添加以下配置:
1 2 3 4 5 6 7 8 9 10 11 12 13 import { defineConfig } from 'vite'; export default defineConfig({ server: { proxy: { '/api': { target: 'http://localhost:3000', changeOrigin: true, rewrite: (path) => path.
meowrain 发布于 2024-08-23 收录于 Docker docker 报permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock 解决办法 这是最常见的解决方法。将你的用户添加到 docker 用户组,就可以获得访问 Docker daemon socket 的权限。 查看当前用户所在的组:
1 groups 将用户添加到 docker 组 (需要 root 权限):
1 sudo usermod -aG docker $USER 重启 shell 或重新登录: 使更改生效。
meowrain 发布于 2024-08-23 收录于 数据库 Redis 配置密码 Redis 默认情况下是不需要密码的,任何人都可以连接到 Redis 服务器。为了安全起见,建议您为 Redis 设置密码。
以下是几种常见的 Redis 配置密码的方法:
1. 使用配置文件(redis.conf)
找到 Redis 的配置文件 redis.conf,通常位于 redis/redis.conf 或 /etc/redis/redis.conf。 在配置文件中找到 requirepass 选项,并设置您想要使用的密码: 1 requirepass your_password 保存配置文件并重启 Redis 服务。 2. 使用命令行工具
使用 CONFIG SET 命令设置密码: 1 redis-cli CONFIG SET requirepass your_password 重启 Redis 服务。 3. 使用 Docker 容器
使用 docker run 命令启动 Redis 容器时,添加 -e requirepass=your_password 选项: 1 docker run -d -p 6379:6379 -e requirepass=your_password redis:latest 4. 使用其他工具
一些 Redis 管理工具,例如 Redis Desktop Manager (RDM) 和 Redis Commander,也支持设置密码。 需要注意的是:
meowrain 发布于 2024-08-23 收录于 Go 基本使用 示例代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 package main import ( "fmt" "github.com/go-redis/redis" ) func main() { rdb := redis.NewClient(&redis.Options{ Addr: "127.0.0.1:6379", Password: "123456", DB: 0, }) err := rdb.Set("name", "meowrain", 0).Err() if err != nil { panic(err) } val, err := rdb.Get("name").Result() if err != nil { panic(err) } fmt.Println("name", val) } 把连接数据库的代码封装为函数 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 package main import ( "fmt" "time" "github.
meowrain 发布于 2024-08-17 收录于 Go grpc: https://grpc.io/docs/languages/go/quickstart/
简单编写 server端 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 package main import ( "fmt" "net" "net/rpc" ) // 定义类对象 type World struct { } // 绑定类方法 func (w *World) HelloWorld(name string, resp *string) error { *resp = name + " 你好!" return nil } func main() { // 1.
meowrain 发布于 2024-08-11 收录于 折腾 编辑模式下: ctrl + h删除上一个字符 ctrl + w 删除上一个单词 ctrl + u 删除当前行
ctrl + o 进入单词命令模式 ctrl + [ 退出编辑模式 进入Normal模式
Normal Mode: r 替换字符 ra会把光标所在的字符替换为a s 删除字符并进入编辑模式 R 不断的替换后面的字符,进入replace模式 S 删除当前整行,进入编辑模式 a在当前字符后面添加进入编辑模式
i 进入编辑模式
o 新开一行进入编辑模式
x 删除后面的一个字符
dd删除当前行
dt)删除括号中的内容 delete until ) dt " 删除双引号中的内容 d$ 从当前光标位置删除到行尾
ct) 删除括号中的内容,并进入插入模式 ct" 删除双引号中的内容并进入插入模式 c$ 和S的效果相同,删除当前行并进入插入模式 yy复制整行 p 粘贴 v 进入visual模式,选中文本,按y进行复制
A 跳转到当前行末尾,在当前行末尾添加字符,进入编辑模式
I 跳转到当前行开头,进入编辑模式
O 在当前行的上一行新开一行,进入编辑模式
gi 快速跳转到你最后一次编辑的地方并进入插入模式
dw 删除一个单词 cw 删除一个单词并进入编辑模式