From 0af6d7171fe65b1e7797461ae54ddfe5179fd97c Mon Sep 17 00:00:00 2001 From: "yu.wang" Date: Sun, 22 Mar 2026 04:09:03 +0800 Subject: [PATCH 1/4] update post --- posts/ai-generated-dashboard.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/posts/ai-generated-dashboard.md b/posts/ai-generated-dashboard.md index 6148041..7741ac2 100644 --- a/posts/ai-generated-dashboard.md +++ b/posts/ai-generated-dashboard.md @@ -1,12 +1,12 @@ --- -title: AI-Powered Data Visualizer - AI 驱动的数据库可视化面板 +title: AI 驱动的数据库可视化面板 date: 2026-03-21 12:00:00 tags: - Next.js - AI - SQLite - Data Visualization -category: Fullstack +category: AI --- ![AI-Powered Data Visualizer](/images/20260321_dashboard.jpg) @@ -103,4 +103,4 @@ docker run -d \ 项目地址:https://github.com/wangyucode/ai-generated-dashboard -本文原始发表于 ,转载请注明出处 +本文原始发表于 ,转载请注明出处 From d32ef601b487f0ccafc62c60f52a77f18cdf83b2 Mon Sep 17 00:00:00 2001 From: "yu.wang" Date: Tue, 24 Mar 2026 21:50:18 +0800 Subject: [PATCH 2/4] cc by --- package.json | 4 +- posts/ai-generated-dashboard.md | 2 - posts/caddy.md | 4 +- posts/openclaw-docker.md | 2 - posts/rust-sqlite-webui.md | 99 ++++++++++++++++++++------------- posts/start-from-limitation.md | 2 - src/app/blog/[pid]/page.tsx | 4 ++ 7 files changed, 67 insertions(+), 50 deletions(-) diff --git a/package.json b/package.json index 2eba2d9..7ac9770 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "wycode", - "version": "3.4.2", + "version": "3.5.0", "private": true, "scripts": { "dev": "next dev --turbopack", @@ -11,7 +11,7 @@ "dependencies": { "@heroicons/react": "^2.2.0", "lodash-es": "^4.17.23", - "next": "16.1.6", + "next": "^16.1.7", "ogl": "^1.0.11", "react": "19.2.0", "react-dom": "19.2.0", diff --git a/posts/ai-generated-dashboard.md b/posts/ai-generated-dashboard.md index 7741ac2..654926d 100644 --- a/posts/ai-generated-dashboard.md +++ b/posts/ai-generated-dashboard.md @@ -102,5 +102,3 @@ docker run -d \ 如果你正在寻找一个能帮你快速从数据库中"挖掘"价值,且无需编写代码的可视化工具,**AI-Powered Data Visualizer** 绝对值得一试。 项目地址:https://github.com/wangyucode/ai-generated-dashboard - -本文原始发表于 ,转载请注明出处 diff --git a/posts/caddy.md b/posts/caddy.md index c5fd70c..d95165c 100644 --- a/posts/caddy.md +++ b/posts/caddy.md @@ -76,6 +76,4 @@ wycode.cn { - **Swagger UI:**`handle_path /swagger-ui/*` 配置静态文件服务,`root * /srv/swagger-ui` 表示将 `/swagger-ui` 目录映射到 `/srv/swagger-ui` 目录 - **Deno API:**`handle /api/v1/*` 配置反向代理,`reverse_proxy "http://deno:8083"` 表示将 `/api/v1` 映射到 `http://deno:8083` 服务 - **MongoDB WebUI:**`handle /mongo/*` 配置反向代理,`reverse_proxy "http://mongo-express:8081"` 表示将 `/mongo` 映射到 `http://mongo-express:8081` 服务 -- **NextJs主站:**`handle` 配置静态文件服务,`root * /srv/wycode` 表示将 `/` 目录映射到 `/srv/wycode` 目录,`try_files {path} /{path}.html {path}/ /404.html` 表示如果请求的路径不存在,则尝试查找 `/` 目录下的文件,如果文件不存在,则返回 404 错误。 - -本文原始发表于 ,转载请注明出处 \ No newline at end of file +- **NextJs主站:**`handle` 配置静态文件服务,`root * /srv/wycode` 表示将 `/` 目录映射到 `/srv/wycode` 目录,`try_files {path} /{path}.html {path}/ /404.html` 表示如果请求的路径不存在,则尝试查找 `/` 目录下的文件,如果文件不存在,则返回 404 错误。 \ No newline at end of file diff --git a/posts/openclaw-docker.md b/posts/openclaw-docker.md index c866dc6..9a3f7d6 100644 --- a/posts/openclaw-docker.md +++ b/posts/openclaw-docker.md @@ -95,5 +95,3 @@ docker compose run --rm openclaw-cli dashboard --no-open ## 总结 通过 Docker 部署 OpenClaw 不仅简化了环境配置,更重要的是通过容器化技术提供了良好的安全隔离。遵循“最小权限原则”,我们可以更放心地让 AI 助手为我们工作。 - -本文原始发表于 ,转载请注明出处 diff --git a/posts/rust-sqlite-webui.md b/posts/rust-sqlite-webui.md index df82616..9b5dd12 100644 --- a/posts/rust-sqlite-webui.md +++ b/posts/rust-sqlite-webui.md @@ -17,80 +17,95 @@ category: Backend 2. **内存占用高**:一些基于 Python 或 Node.js 的解决方案,运行时内存占用较高。 3. **部署复杂**:依赖繁多,配置麻烦。 -为了解决这些痛点,我开发了 **Rust SQLite WebUI**。它的目标非常明确:**极致轻量** 和 **高性能**。 +为了解决这些痛点,我开发了 **Rust SQLite WebUI**。它的目标非常明确:**极致轻量** , **高性能** 并且 **支持AI** 。 -* **Docker 镜像大小**:仅约 **6.5MB**。 -* **运行时内存占用**:仅约 **700KB**。 +* **Docker 镜像大小**:仅约 **10MB**。 +* **运行时内存占用**:仅约 **1MB**。 +* **支持 AI 智能助手**:自然语言转 SQL、SQL 纠错,兼容 OpenAI 及 DeepSeek 协议。 -同时,这也是一个非常好的 **Rust + Solid.js** 全栈开发实践项目。 +同时,这也是一个非常好的 **Rust (Axum) + Solid.js (Vite 7 + Tailwind 4)** 全栈开发实践项目。 -项目已开源在GitHub: [https://github.com/wangyucode/rust-sqlite-webui](https://github.com/wangyucode/rust-sqlite-webui) +项目已开源在 GitHub: [https://github.com/wangyucode/rust-sqlite-webui](https://github.com/wangyucode/rust-sqlite-webui) -## 技术栈选择 (Why this way?) +## 技术栈:追求极致 (Cutting-edge Stack) 为了达到极致轻量和高性能的目标,技术栈的选择至关重要。 -### 后端:Rust + Axum +### 后端:Rust + Axum 0.8 * **Rust**:提供了零成本抽象和内存安全保证,编译出的二进制文件极小且运行效率极高。 -* **Axum**:Rust 生态中非常流行且高性能的 Web 框架,基于 Tokio 异步运行时,能够轻松处理高并发请求。 -* **SQLx**:提供了异步的数据库连接,保证了数据库操作的性能。 +* **Axum 0.8**:Rust 生态中非常流行且高性能的 Web 框架,基于 Tokio 异步运行时。 +* **SQLx 0.8**:提供了异步的数据库连接,支持编译期 SQL 检查(虽然本项目由于动态路径采用了运行期查询,但 SQLx 的连接池依然极具优势)。 -### 前端:Solid.js + Vite +### 前端:Solid.js 1.9 + Vite 7 * **Solid.js**:不同于 React 的虚拟 DOM 机制,Solid.js 采用细粒度的响应式更新,直接编译成原生 DOM 操作,性能极高,且打包体积非常小。 -* **TailwindCSS + DaisyUI**:提供了快速构建现代 UI 的能力。 - -这种前后端分离的架构,结合 Rust 和 Solid.js 的优势,使得整个应用在保持功能完整的同时,将资源占用降到了最低。 +* **Tailwind CSS 4 + DaisyUI 5**:采用了最新的 Tailwind 4 架构,更快的编译速度和更简洁的类名管理,配合 DaisyUI 5 提供的丰富组件。 ## 技术实现细节与亮点 -### 1. 极致的 Docker 镜像优化 (Multi-stage Build) +### 1. 极致的 Docker 镜像优化 -为了实现 ~6.5MB 的惊人镜像大小,项目使用了 Docker 的**多阶段构建**(Multi-stage Build)技术: +为了实现 **不到 10MB** 的惊人镜像大小,项目使用了 Docker 的**多阶段构建**(Multi-stage Build)和 Rust 的**静态编译**技术: -1. **Frontend Builder**: 使用 `node` 镜像构建 Solid.js 前端资源。 -2. **Backend Builder**: 使用 `rust` 镜像,配合 `musl` target 进行静态链接编译,生成独立的二进制文件。 -3. **Final Runtime**: 使用 `scratch` 或极小的 `alpine` 镜像作为最终运行时环境,仅包含编译好的二进制文件和前端静态资源。 +1. **Frontend Builder**: 使用 `node:24-alpine` 镜像构建 Solid.js 前端资源。 +2. **Backend Builder**: 使用 `rust:alpine` 镜像,配合 `musl-dev` 进行全静态链接编译,生成不依赖系统 C 库的独立二进制文件。 +3. **Final Runtime**: 基于基础的 `alpine` 镜像作为最终运行时环境。 -此外,通过 `strip` 命令移除二进制文件中的符号表,进一步压缩了体积。 +此外,在 `Cargo.toml` 中配置了: +- `strip = true`: 移除二进制文件中的调试符号表。 +- `lto = true`: 开启链接时优化(Link Time Optimization)。 +- `codegen-units = 1`: 增加编译优化强度。 -### 2. 高效的内存管理 +### 2. 高效的内存与资源管理 -Rust 的所有权(Ownership)机制保证了内存安全,同时无需垃圾回收(GC)的开销。 -配合 **Axum** 框架的零成本抽象(Zero-cost abstractions),使得应用在处理请求时仅占用极少的内存(运行时约 700KB)。 -数据库连接方面,使用了 **SQLx** 的连接池(Connection Pool),复用数据库连接,避免了频繁创建销毁连接的开销。 +Rust 的所有权机制保证了内存安全,配合 Axum 框架的零成本抽象,使得应用在运行时仅占用极少的内存(常态下约 1MB)。 +数据库连接方面,使用了 **SQLx** 的连接池,复用数据库连接,避免了频繁创建销毁连接的开销。 ### 3. Solid.js 的细粒度响应式 -前端没有选择 React,而是选择了 Solid.js,主要看重其**无虚拟 DOM**(No Virtual DOM)的特性。 -Solid.js 将模板直接编译为真实的 DOM 操作节点,并在更新时仅修改变化的部分(Fine-grained Reactivity)。这意味着: - +前端选择了 Solid.js,主要看重其**无虚拟 DOM**(No Virtual DOM)的特性: * **更少的内存占用**:不需要在内存中维护两棵 DOM 树。 * **更快的更新速度**:状态变化直接触发 DOM 更新,没有 Diff 算法的计算开销。 -### 4. 安全性设计 - -虽然是一个轻量级工具,但安全性依然重要。项目内置了基于中间件(Middleware)的认证机制: +### 4. 安全性:轻量但不简陋 +项目内置了基于中间件(Middleware)的认证机制: * 所有 API 请求都会经过认证中间件。 -* 检查 HTTP Header 中的 `Authorization` 字段是否匹配环境变量中的 `API_KEY`。 -* 有效防止了未授权的访问和恶意操作。 +* 校验 `x-api-key` 请求头是否匹配环境变量中的 `API_KEY`。 +* 有效防止了未授权的访问。 + +### 5. AI 智能 SQL 助手 + +项目集成了 AI 能力,不仅能纠正 SQL,还能理解表结构: +* **上下文感知**:自动获取目标表的 `PRAGMA table_info`(列名、类型、约束)和 `PRAGMA foreign_key_list`(外键关系)。 +* **智能纠错**:结合表结构信息,AI 能够理解业务语义,给出准确的 SQL 建议。 +* **自然语言操作**:支持自然语言转 SQL,大幅降低非技术人员的操作门槛。例如输入 "查询年龄大于 20 的用户",AI 会根据表结构自动生成 `SELECT * FROM users WHERE age > 20;`。 +* **高度兼容**:支持 OpenAI 标准接口,可无缝对接 DeepSeek (支持 `reasoning_effort` 参数)、本地 LLM (如 Ollama) 等。 + +配置方式简单,只需设置环境变量即可启用: + +```bash +OPENAI_API_KEY=your_api_key # API 密钥(必需) +OPENAI_BASE_URL=https://api.openai.com/v1 # API 地址(可选,默认 OpenAI) +OPENAI_MODEL=gpt-4o-mini # 模型名称(可选,默认 gpt-3.5-turbo) +``` ## 功能与使用 ### 主要功能 -* **多数据库管理**:自动扫描指定目录下的 SQLite 数据库文件。 -* **SQL 执行**:支持执行任意 SQL 语句。 -* **数据浏览**:便捷地查看表结构和数据。 -* **安全认证**:支持基于 API Key 的简单认证机制。 +* **多数据库支持**:自动扫描并列出 `/app/db` 目录下的所有 SQLite 数据库。 +* **SQL 编辑器**:支持执行任意 SQL,提供实时结果反馈。 +* **AI 辅助**:一键生成/纠正 SQL。 +* **数据浏览**:快速查看表结构、字段类型、外键关系及数据。 +* **响应式设计**:适配 PC 和移动端。 ### 快速部署 -推荐使用 Docker 进行部署,极其简单: +推荐使用 Docker 进行部署: ```bash docker run -d \ @@ -117,8 +132,16 @@ services: ### 配置说明 -* `API_KEY`:访问 WebUI 的认证密钥,默认为 `your-super-secure-key`。生产环境建议修改。 * 挂载目录:将你的 SQLite 数据库文件所在的宿主机目录挂载到容器的 `/app/db` 目录即可。 +* 环境变量: + +| 环境变量 | 默认值 | 说明 | +| :--- | :--- | :--- | +| `API_KEY` | `your-super-secure-key` | WebUI 的访问密钥 | +| `OPENAI_API_KEY` | - | AI 接口密钥 | +| `OPENAI_BASE_URL` | `https://api.openai.com/v1` | API 基础路径 | +| `OPENAI_MODEL` | `gpt-3.5-turbo` | 使用的模型名称 | +| `RUST_LOG` | `info` | 日志级别 (info, debug, warn) | ## 总结 @@ -127,5 +150,3 @@ services: 本站已部署并正在使用此项目:[https://wycode.cn/manage/sqlite/](https://wycode.cn/manage/sqlite/) 项目地址:[https://github.com/wangyucode/rust-sqlite-webui](https://github.com/wangyucode/rust-sqlite-webui) - -本文原始发表于 ,转载请注明出处 diff --git a/posts/start-from-limitation.md b/posts/start-from-limitation.md index 67a4adf..334b88f 100644 --- a/posts/start-from-limitation.md +++ b/posts/start-from-limitation.md @@ -58,5 +58,3 @@ category: Story 不想被贴上“女权”的标签,又想发表女性主义言论。 为了照顾女性而设立的全国的“女性服务中心”,又因为不想被特殊对待,改成“男女共同参与中心”。改完又觉得男性被纳入瓜分了她们的预算。啊?那我们全国各地的妇联岂不是有歧视女性之嫌?但愿我们不会有那一天。 - -本文原始发表于 ,转载请注明出处 diff --git a/src/app/blog/[pid]/page.tsx b/src/app/blog/[pid]/page.tsx index e63dfb4..92e554d 100644 --- a/src/app/blog/[pid]/page.tsx +++ b/src/app/blog/[pid]/page.tsx @@ -52,6 +52,10 @@ export default async function PostDetail({ params }: { params: Promise<{ pid: st )}
+ +
+ 本文原始发表于 https://wycode.cn/blog/{pid} 并采用 CC-BY 国际许可协议 进行许可。 +
From b3dfd638ad7016295b764fe202510cb6b116673b Mon Sep 17 00:00:00 2001 From: "yu.wang" Date: Tue, 24 Mar 2026 22:25:49 +0800 Subject: [PATCH 3/4] re-category --- posts/Share.md | 2 +- posts/ai.md | 2 +- posts/android-dp.md | 2 +- posts/auto-deploy.md | 2 +- posts/blender-learn.md | 2 +- posts/caddy.md | 2 +- posts/chicken-dinner-tesla.md | 2 +- posts/data-structures01.md | 2 +- posts/data-structures02.md | 2 +- posts/data-structures03.md | 2 +- posts/flutter.md | 2 +- posts/github-action.md | 2 +- posts/gitignore.md | 2 +- posts/gradle-build.md | 2 +- posts/home-deus.md | 2 +- posts/kotlin-learn.md | 2 +- posts/linux-vi.md | 2 +- posts/nginx-redirect.md | 2 +- posts/nginx.md | 2 +- posts/ngrok.md | 2 +- posts/raspberrypi-fish.md | 2 +- posts/raspberrypi.md | 2 +- posts/rich-dad.md | 2 +- posts/rust-ownership.md | 2 +- posts/rxjava.md | 2 +- posts/ssh-key.md | 2 +- posts/start-from-limitation.md | 2 +- posts/the-crowd.md | 2 +- posts/travis-ci.md | 2 +- posts/unity-json.md | 2 +- posts/unity-lifecycle.md | 2 +- posts/unity-platform.md | 2 +- posts/unity-web-request.md | 2 +- posts/unity2android.md | 2 +- posts/virtualbox-network.md | 2 +- posts/wave-progress.md | 2 +- posts/why-blog.md | 2 +- 37 files changed, 37 insertions(+), 37 deletions(-) diff --git a/posts/Share.md b/posts/Share.md index f644e99..e50550b 100644 --- a/posts/Share.md +++ b/posts/Share.md @@ -4,7 +4,7 @@ date: 2017-6-16 13:37:35 tags: - Android - Wechat -category: Android +category: Mobile --- > 本文介绍如何为Android应用添加分享功能。包含通过原生`Intent`和利用第三方SDK。 diff --git a/posts/ai.md b/posts/ai.md index b09bea8..c263d20 100644 --- a/posts/ai.md +++ b/posts/ai.md @@ -3,7 +3,7 @@ title: 这一波AI浪潮是否是泡沫? date: 2024-10-30 20:24:53 tags: - AI -category: Story +category: Life --- ![chatgpt](https://assets.datamation.com/uploads/2023/05/dm-how-to-use-chatgpt-696x464.png) diff --git a/posts/android-dp.md b/posts/android-dp.md index 564fc1e..fd7d830 100644 --- a/posts/android-dp.md +++ b/posts/android-dp.md @@ -4,7 +4,7 @@ date: 2017-9-4 16:46:17 tags: - Android - Material Design -category: Android +category: Mobile --- ![Android](https://img-blog.csdnimg.cn/c5c68cae3bf640eaa2a3ec03fc518b1c.png) diff --git a/posts/auto-deploy.md b/posts/auto-deploy.md index 66af302..e16309a 100644 --- a/posts/auto-deploy.md +++ b/posts/auto-deploy.md @@ -5,7 +5,7 @@ tags: - Watchtower - Docker - NodeJS -category: CI CD +category: DevOps --- ![flow](/images/20200512_auto_deploy.png) diff --git a/posts/blender-learn.md b/posts/blender-learn.md index 74f6123..20f7d39 100644 --- a/posts/blender-learn.md +++ b/posts/blender-learn.md @@ -3,7 +3,7 @@ title: Blender建模入门 date: 2017-7-18 17:53:34 tags: - Blender -category: 3D +category: Life --- ![Blender](/images/20170717_blender_logo.png) diff --git a/posts/caddy.md b/posts/caddy.md index d95165c..f71af58 100644 --- a/posts/caddy.md +++ b/posts/caddy.md @@ -4,7 +4,7 @@ date: 2024-09-24 08:00:00 tags: - Linux - Docker -category: Linux +category: DevOps --- ![Caddy](https://caddyserver.com/old/resources/images/caddy-logo.svg) diff --git a/posts/chicken-dinner-tesla.md b/posts/chicken-dinner-tesla.md index c3d8faa..299d898 100644 --- a/posts/chicken-dinner-tesla.md +++ b/posts/chicken-dinner-tesla.md @@ -2,7 +2,7 @@ title: 用数学期望计算《和平精英》特斯拉(玛莎拉蒂)到底要多少钱? date: 2020-7-24 19:51:18 tags: -category: Story +category: Life --- ![tesela](https://game.gtimg.cn/images/gp/ingame/a20200724tslcar/intor_6.png) diff --git a/posts/data-structures01.md b/posts/data-structures01.md index 0732810..1bb91ff 100644 --- a/posts/data-structures01.md +++ b/posts/data-structures01.md @@ -3,7 +3,7 @@ title: 数据结构与算法学习笔记01 date: 2018-3-14 20:41:04 tags: - C -category: Computer Science +category: Life --- ![浙江大学](https://www.smpg888.com/resource/images/19b3b5c5671f44a4b9f4320dd8fcc734_34.jpg) diff --git a/posts/data-structures02.md b/posts/data-structures02.md index 888faf1..c6efe5c 100644 --- a/posts/data-structures02.md +++ b/posts/data-structures02.md @@ -3,7 +3,7 @@ title: 数据结构与算法学习笔记02 date: 2018-3-16 20:41:04 tags: - C -category: Computer Science +category: Life --- ![浙江大学](https://www.smpg888.com/resource/images/19b3b5c5671f44a4b9f4320dd8fcc734_34.jpg) diff --git a/posts/data-structures03.md b/posts/data-structures03.md index b3dee3f..6cbf059 100644 --- a/posts/data-structures03.md +++ b/posts/data-structures03.md @@ -3,7 +3,7 @@ title: 数据结构与算法学习笔记03 date: 2018-3-26 13:25:27 tags: - C -category: Computer Science +category: Life --- ![浙江大学](https://www.smpg888.com/resource/images/19b3b5c5671f44a4b9f4320dd8fcc734_34.jpg) diff --git a/posts/flutter.md b/posts/flutter.md index 1c350ea..d7170ad 100644 --- a/posts/flutter.md +++ b/posts/flutter.md @@ -6,7 +6,7 @@ tags: - Dart - Android - iOS -category: Android +category: Mobile --- ![Flutter](https://blog.scottlogic.com/bquinn/assets/Flutter_logo_text.png) diff --git a/posts/github-action.md b/posts/github-action.md index 1b52cc3..0c6ce1a 100644 --- a/posts/github-action.md +++ b/posts/github-action.md @@ -5,7 +5,7 @@ tags: - Github - NodeJS - SFTP -category: CI CD +category: DevOps --- ![Github Action](https://blog-cdn.everhour.com/blog/wp-content/uploads/2023/02/h2jfrvzrbyh1yff2n3wfu2hkqqps6x_uvqo.jpg) diff --git a/posts/gitignore.md b/posts/gitignore.md index 98b761d..2a960f1 100644 --- a/posts/gitignore.md +++ b/posts/gitignore.md @@ -5,7 +5,7 @@ tags: - Android - Git - SVN -category: Android +category: Mobile --- ![gitignore](https://git-scm.com/images/logo@2x.png) diff --git a/posts/gradle-build.md b/posts/gradle-build.md index 78648c6..884b711 100644 --- a/posts/gradle-build.md +++ b/posts/gradle-build.md @@ -4,7 +4,7 @@ date: 2017-9-4 15:53:38 tags: - Gradle - Android -category: Android +category: Mobile --- ![Gradle](https://ts1.cn.mm.bing.net/th/id/R-C.da7d3edf2afaf378bff91a21e6385091?rik=kWTVUo%2be2O8bbg&riu=http%3a%2f%2ftheeye.pe.kr%2fwp-content%2fuploads%2f2014%2f02%2fgradle.png&ehk=5NJHqrr5W7rLhp4CEUQIadjJ83TfKvlokTsc%2bzFFiLo%3d&risl=&pid=ImgRaw&r=0) diff --git a/posts/home-deus.md b/posts/home-deus.md index 53897fe..27a2d67 100644 --- a/posts/home-deus.md +++ b/posts/home-deus.md @@ -2,7 +2,7 @@ title: 《未来简史》读书笔记 date: 2018-1-29 15:08:00 tags: -category: Story +category: Life --- ![未来简史](/images/20180129_homo_deus.jpg) diff --git a/posts/kotlin-learn.md b/posts/kotlin-learn.md index 52fd1a3..780d7f3 100644 --- a/posts/kotlin-learn.md +++ b/posts/kotlin-learn.md @@ -3,7 +3,7 @@ title: Kotlin入门 date: 2017-7-27 13:19:47 tags: - Kotlin -category: Languages +category: Mobile --- > 在Google I/O 2017上Google正式宣布Kotlin成为Android开发的官方新语言,Kotlin得到了Google的背书,随着Android O和Android Studio3.0的正式发布,Kotlin语言的春天可能马上就要来临了。 diff --git a/posts/linux-vi.md b/posts/linux-vi.md index 750da4d..24c8b14 100644 --- a/posts/linux-vi.md +++ b/posts/linux-vi.md @@ -4,7 +4,7 @@ date: 2017-6-21 16:24:38 tags: - Linux - vi -category: Linux +category: DevOps --- ![vim](https://tse1-mm.cn.bing.net/th/id/OIP-C.S7PWetAEkXIKI3Fgncz96wHaFF?pid=ImgDet&rs=1) diff --git a/posts/nginx-redirect.md b/posts/nginx-redirect.md index d2c6480..b56b02c 100644 --- a/posts/nginx-redirect.md +++ b/posts/nginx-redirect.md @@ -4,7 +4,7 @@ date: 2019-5-17 10:34:11 tags: - Linux - NGINX -category: Linux +category: DevOps --- ![NGINX](https://nginx.org/nginx.png) diff --git a/posts/nginx.md b/posts/nginx.md index b810430..55f8d69 100644 --- a/posts/nginx.md +++ b/posts/nginx.md @@ -4,7 +4,7 @@ date: 2018-6-23 15:12:33 tags: - Linux - NGINX -category: Linux +category: DevOps --- ![NGINX](https://nginx.org/nginx.png) diff --git a/posts/ngrok.md b/posts/ngrok.md index 9672616..4550bcc 100644 --- a/posts/ngrok.md +++ b/posts/ngrok.md @@ -3,7 +3,7 @@ title: 实现内网穿透的最新姿势 date: 2019-9-2 12:15:50 tags: - Linux -category: Linux +category: DevOps --- ![Network](https://www.howtogeek.com/thumbcache/2/200/b47f24b18abd7d5411b75447849e04ff/wp-content/uploads/2017/03/why-is-a-network-tunnel-called-a-tunnel-00.jpg) diff --git a/posts/raspberrypi-fish.md b/posts/raspberrypi-fish.md index c979c0a..2d07b58 100644 --- a/posts/raspberrypi-fish.md +++ b/posts/raspberrypi-fish.md @@ -5,7 +5,7 @@ tags: - RaspberryPi - Linux - Python -category: Linux +category: DevOps --- 因为最近要出门一段时间,鱼缸没人照顾,树莓派的第一个实用需求出现了。 diff --git a/posts/raspberrypi.md b/posts/raspberrypi.md index f1df460..beb7a14 100644 --- a/posts/raspberrypi.md +++ b/posts/raspberrypi.md @@ -4,7 +4,7 @@ date: 2019-8-7 10:11:15 tags: - RaspberryPi - Linux -category: Linux +category: DevOps --- 开启吃派之旅! diff --git a/posts/rich-dad.md b/posts/rich-dad.md index 3009398..6c90682 100644 --- a/posts/rich-dad.md +++ b/posts/rich-dad.md @@ -2,7 +2,7 @@ title: 《富爸爸,穷爸爸》热门标注 date: 2019-7-26 15:26:05 tags: -category: Story +category: Life --- ![rich-dad](https://images-cn.ssl-images-amazon.com/images/I/51mZHfA%2B-6L._SX351_BO1,204,203,200_.jpg) diff --git a/posts/rust-ownership.md b/posts/rust-ownership.md index 9cbc460..74f64b4 100644 --- a/posts/rust-ownership.md +++ b/posts/rust-ownership.md @@ -3,7 +3,7 @@ title: 理解Rust语言的所有权以及借用、引用、切片。 date: 2021-1-23 12:05:02 tags: - Rust -category: Languages +category: Backend --- ![Rust](https://www.rust-lang.org/static/images/rust-logo-blk.svg) diff --git a/posts/rxjava.md b/posts/rxjava.md index cf357fb..0ece102 100644 --- a/posts/rxjava.md +++ b/posts/rxjava.md @@ -4,7 +4,7 @@ date: 2018-1-20 15:31:15 tags: - RxJava - Java -category: Languages +category: Mobile --- ![ReactiveX](https://cdn-ssl-devio-img.classmethod.jp/wp-content/uploads/2021/08/ReactoveX.png) diff --git a/posts/ssh-key.md b/posts/ssh-key.md index 029a7e6..edb5790 100644 --- a/posts/ssh-key.md +++ b/posts/ssh-key.md @@ -4,7 +4,7 @@ date: 2023-09-11 23:19:47 tags: - Linux - Git -category: Linux +category: DevOps --- ![git](https://git-scm.com/images/logo@2x.png) diff --git a/posts/start-from-limitation.md b/posts/start-from-limitation.md index 334b88f..6068865 100644 --- a/posts/start-from-limitation.md +++ b/posts/start-from-limitation.md @@ -2,7 +2,7 @@ title: 《始于极限》标注 date: 2025-08-20 21:26:05 tags: -category: Story +category: Life --- ![始于极限](https://pic.arkread.com/cover/ebook/f/407667944.1663903605.jpg!cover_default.jpg) diff --git a/posts/the-crowd.md b/posts/the-crowd.md index 30b2b3b..4b4fbe9 100644 --- a/posts/the-crowd.md +++ b/posts/the-crowd.md @@ -2,7 +2,7 @@ title: 《乌合之众:大众心理研究》热门标注 date: 2021-7-22 18:17:40 tags: -category: Story +category: Life --- ![The Crowd](https://p1.qhimg.com/t016f1e762c0161d220.jpg) diff --git a/posts/travis-ci.md b/posts/travis-ci.md index 91609cd..1f92ff3 100644 --- a/posts/travis-ci.md +++ b/posts/travis-ci.md @@ -6,7 +6,7 @@ tags: - Hexo - NodeJS - Linux -category: CI CD +category: DevOps --- ![TravisCI](https://www.smartfile.com/blog/wp-content/uploads/2015/05/logo-travisci-wide1.jpg) diff --git a/posts/unity-json.md b/posts/unity-json.md index ea21790..ebf8a80 100644 --- a/posts/unity-json.md +++ b/posts/unity-json.md @@ -5,7 +5,7 @@ tags: - Unity - CSharp - JSON -category: Unity +category: Mobile --- ![Unity](https://tse1-mm.cn.bing.net/th/id/OIP-C.TPnSpv0PowWa1j_0SdXeWQHaEM?pid=ImgDet&rs=1) diff --git a/posts/unity-lifecycle.md b/posts/unity-lifecycle.md index ac0123e..026487d 100644 --- a/posts/unity-lifecycle.md +++ b/posts/unity-lifecycle.md @@ -4,7 +4,7 @@ date: 2017-7-7 22:55:47 tags: - Unity - CSharp -category: Unity +category: Mobile --- ![Unity](https://tse1-mm.cn.bing.net/th/id/OIP-C.TPnSpv0PowWa1j_0SdXeWQHaEM?pid=ImgDet&rs=1) diff --git a/posts/unity-platform.md b/posts/unity-platform.md index 3fd97e6..848886c 100644 --- a/posts/unity-platform.md +++ b/posts/unity-platform.md @@ -4,7 +4,7 @@ date: 2017-6-27 10:30:04 tags: - Unity - CSharp -category: Unity +category: Mobile --- ![Unity](https://tse1-mm.cn.bing.net/th/id/OIP-C.TPnSpv0PowWa1j_0SdXeWQHaEM?pid=ImgDet&rs=1) diff --git a/posts/unity-web-request.md b/posts/unity-web-request.md index 8281f05..7abd9b0 100644 --- a/posts/unity-web-request.md +++ b/posts/unity-web-request.md @@ -4,7 +4,7 @@ date: 2017-7-12 09:17:17 tags: - Unity - HTTP -category: Unity +category: Mobile --- ![Unity](https://tse1-mm.cn.bing.net/th/id/OIP-C.TPnSpv0PowWa1j_0SdXeWQHaEM?pid=ImgDet&rs=1) diff --git a/posts/unity2android.md b/posts/unity2android.md index f3e40b8..711d7af 100644 --- a/posts/unity2android.md +++ b/posts/unity2android.md @@ -4,7 +4,7 @@ date: 2017-7-26 10:18:07 tags: - Android - Unity -category: Unity +category: Mobile --- ![Unity](https://tse1-mm.cn.bing.net/th/id/OIP-C.TPnSpv0PowWa1j_0SdXeWQHaEM?pid=ImgDet&rs=1) diff --git a/posts/virtualbox-network.md b/posts/virtualbox-network.md index 981983e..783e41b 100644 --- a/posts/virtualbox-network.md +++ b/posts/virtualbox-network.md @@ -3,7 +3,7 @@ title: VirtualBox的虚拟机网络配置 date: 2019-9-20 14:32:06 tags: - VirtualBox -category: Linux +category: DevOps --- ![virtual-box](https://www.virtualbox.org/graphics/vbox_logo2_gradient.png) diff --git a/posts/wave-progress.md b/posts/wave-progress.md index f23cbb3..797a94d 100644 --- a/posts/wave-progress.md +++ b/posts/wave-progress.md @@ -3,7 +3,7 @@ title: 自定义形状波浪进度 date: 2017-7-24 12:41:59 tags: - Android -category: Android +category: Mobile --- > 今天碰到个需求,要求以波浪进度填充自定义透明形状,废话不多说,直接上最终效果图 diff --git a/posts/why-blog.md b/posts/why-blog.md index 3cfb0b6..d063aa0 100644 --- a/posts/why-blog.md +++ b/posts/why-blog.md @@ -2,7 +2,7 @@ title: 我为什么开始写博客了? date: 2017-6-8 12:15:53 tags: -category: Story +category: Life --- From 46838a560debe401056caab313dc56f837d37123 Mon Sep 17 00:00:00 2001 From: "yu.wang" Date: Tue, 24 Mar 2026 23:19:00 +0800 Subject: [PATCH 4/4] re-tag --- posts/ai-generated-dashboard.md | 1 - posts/android-dp.md | 2 +- posts/comments-sql.md | 1 - posts/docker-spring.md | 2 +- posts/github-action.md | 1 - posts/gitignore.md | 1 - posts/linux-vi.md | 1 - posts/nodejs.md | 1 - posts/rust-sqlite-webui.md | 1 - posts/web-flux.md | 1 - posts/websocket.md | 2 +- 11 files changed, 3 insertions(+), 11 deletions(-) diff --git a/posts/ai-generated-dashboard.md b/posts/ai-generated-dashboard.md index 654926d..cbad66f 100644 --- a/posts/ai-generated-dashboard.md +++ b/posts/ai-generated-dashboard.md @@ -5,7 +5,6 @@ tags: - Next.js - AI - SQLite - - Data Visualization category: AI --- diff --git a/posts/android-dp.md b/posts/android-dp.md index fd7d830..6a796ec 100644 --- a/posts/android-dp.md +++ b/posts/android-dp.md @@ -3,7 +3,7 @@ title: Android度量设计规范 date: 2017-9-4 16:46:17 tags: - Android - - Material Design + - Design category: Mobile --- diff --git a/posts/comments-sql.md b/posts/comments-sql.md index 8b82f1b..17130a0 100644 --- a/posts/comments-sql.md +++ b/posts/comments-sql.md @@ -6,7 +6,6 @@ tags: - SQL - Spring - JPA -- Hibernate category: Backend --- diff --git a/posts/docker-spring.md b/posts/docker-spring.md index 8f734e5..a8b064f 100644 --- a/posts/docker-spring.md +++ b/posts/docker-spring.md @@ -4,7 +4,7 @@ date: 2019-11-20 14:32:06 tags: - Linux - Docker -- Spring Boot +- Spring category: Backend --- diff --git a/posts/github-action.md b/posts/github-action.md index 0c6ce1a..dc9dc11 100644 --- a/posts/github-action.md +++ b/posts/github-action.md @@ -4,7 +4,6 @@ date: 2020-10-28 20:04:26 tags: - Github - NodeJS - - SFTP category: DevOps --- diff --git a/posts/gitignore.md b/posts/gitignore.md index 2a960f1..3c4df34 100644 --- a/posts/gitignore.md +++ b/posts/gitignore.md @@ -4,7 +4,6 @@ date: 2017-6-16 14:46:22 tags: - Android - Git - - SVN category: Mobile --- diff --git a/posts/linux-vi.md b/posts/linux-vi.md index 24c8b14..591eeee 100644 --- a/posts/linux-vi.md +++ b/posts/linux-vi.md @@ -3,7 +3,6 @@ title: 可能是史上最简单的vi/vim教程 date: 2017-6-21 16:24:38 tags: - Linux -- vi category: DevOps --- diff --git a/posts/nodejs.md b/posts/nodejs.md index 557fa00..9f11abd 100644 --- a/posts/nodejs.md +++ b/posts/nodejs.md @@ -5,7 +5,6 @@ tags: - NodeJS - JavaScript - Linux -- Ubuntu category: Frontend --- diff --git a/posts/rust-sqlite-webui.md b/posts/rust-sqlite-webui.md index 9b5dd12..bb95ad1 100644 --- a/posts/rust-sqlite-webui.md +++ b/posts/rust-sqlite-webui.md @@ -5,7 +5,6 @@ tags: - Rust - Solid.js - SQLite - - WebUI category: Backend --- diff --git a/posts/web-flux.md b/posts/web-flux.md index 631041e..76e3e51 100644 --- a/posts/web-flux.md +++ b/posts/web-flux.md @@ -4,7 +4,6 @@ date: 2018-7-20 11:28:08 tags: - Spring - RxJava -- WebFlux - Java - Kotlin category: Backend diff --git a/posts/websocket.md b/posts/websocket.md index 7d8223c..90bcd91 100644 --- a/posts/websocket.md +++ b/posts/websocket.md @@ -3,7 +3,7 @@ title: 使用WebSocket和STOMP协议开发一个匿名聊天室 date: 2020-3-9 21:09:14 tags: - WebSocket -- Spring Boot +- Spring - Kotlin category: Backend ---