68 Commits

Author SHA1 Message Date
github-actions[bot]
f718df5a11 chore: lint text and auto correct 2025-06-23 19:40:48 +08:00
ad8fbc6fc2 Update 个人向Linux新服务器初始化清单.md 2025-06-23 19:40:32 +08:00
d2368e9008 feat: update post 2025-06-21 16:17:57 +08:00
dependabot[bot]
c0e9369ebf build(deps): bump actions/deploy-pages from 1 to 4
Bumps [actions/deploy-pages](https://github.com/actions/deploy-pages) from 1 to 4.
- [Release notes](https://github.com/actions/deploy-pages/releases)
- [Commits](https://github.com/actions/deploy-pages/compare/v1...v4)

---
updated-dependencies:
- dependency-name: actions/deploy-pages
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-15 20:05:19 +08:00
dependabot[bot]
0f95c8de33 build(deps): bump actions/configure-pages from 2 to 5
Bumps [actions/configure-pages](https://github.com/actions/configure-pages) from 2 to 5.
- [Release notes](https://github.com/actions/configure-pages/releases)
- [Commits](https://github.com/actions/configure-pages/compare/v2...v5)

---
updated-dependencies:
- dependency-name: actions/configure-pages
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-15 20:05:11 +08:00
dependabot[bot]
767e3ae8a5 build(deps): bump actions/upload-pages-artifact from 1 to 3
Bumps [actions/upload-pages-artifact](https://github.com/actions/upload-pages-artifact) from 1 to 3.
- [Release notes](https://github.com/actions/upload-pages-artifact/releases)
- [Commits](https://github.com/actions/upload-pages-artifact/compare/v1...v3)

---
updated-dependencies:
- dependency-name: actions/upload-pages-artifact
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-15 18:51:40 +08:00
github-actions[bot]
b7d529f579 chore: lint text and auto correct 2025-06-15 18:49:28 +08:00
b1565d9c3e feat: update article 2025-06-15 18:44:09 +08:00
github-actions[bot]
2f9267f4c4 chore: lint text and auto correct 2025-03-01 14:13:04 +08:00
bf30cadbde feat: update color for 404 page 2025-02-09 23:31:43 +08:00
5594f822b1 fix: typo fix 2025-02-09 22:57:41 +08:00
5c10849e64 feat: update theme and style 2025-02-09 22:57:34 +08:00
283269d4b5 feat: tag cleanup 2025-02-09 21:52:33 +08:00
14a221facd feat: add new posts 2025-02-09 21:50:20 +08:00
github-actions[bot]
6a13d8c366 chore: lint text and auto correct 2024-12-15 22:09:30 +08:00
d37f0f4a9e Update 个人向Linux新服务器初始化清单.md 2024-12-15 22:08:33 +08:00
03bcf813be Update 个人向Linux新服务器初始化清单.md (#101)
* Update 个人向Linux新服务器初始化清单.md

* Update 个人向Linux新服务器初始化清单.md
2024-11-27 14:31:41 +08:00
687dcf0353 Update 来谈谈日志集中管理方案 - syslog是你的好伙伴.md 2024-10-17 18:56:16 +08:00
6b08b7ae93 Merge pull request #94 from Colin-XKL/text-lint
Text lint and fix
2024-10-14 19:02:33 +08:00
github-actions[bot]
69e98a0a09 chore: lint text and auto correct 2024-10-14 11:02:06 +00:00
5ea07ab91a Merge pull request #98 from Colin-XKL/update-img-url
Update imgs' CDN URL
2024-10-14 19:01:42 +08:00
github-actions[bot]
dd23178da7 Change img CDN URL 2024-10-13 13:32:53 +00:00
3b96b5bf7d feat: add new post 2024-10-13 21:31:32 +08:00
97109397c7 Merge pull request #91 from Colin-XKL/dependabot/github_actions/huacnlee/autocorrect-action-2.10.0
build(deps): bump huacnlee/autocorrect-action from 2.8.4 to 2.10.0
2024-09-02 13:08:34 +08:00
dependabot[bot]
4e94713d41 build(deps): bump huacnlee/autocorrect-action from 2.8.4 to 2.10.0
Bumps [huacnlee/autocorrect-action](https://github.com/huacnlee/autocorrect-action) from 2.8.4 to 2.10.0.
- [Release notes](https://github.com/huacnlee/autocorrect-action/releases)
- [Commits](https://github.com/huacnlee/autocorrect-action/compare/v2.8.4...v2.10.0)

---
updated-dependencies:
- dependency-name: huacnlee/autocorrect-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-28 14:39:08 +00:00
ad0bb3a482 Merge pull request #90 from Colin-XKL/text-lint
Text lint and fix
2024-08-28 22:36:41 +08:00
github-actions[bot]
d50b8359c0 chore: lint text and auto correct 2024-06-17 11:01:41 +00:00
95135588fc Update 个人向Linux新服务器初始化清单.md 2024-06-17 19:01:19 +08:00
d1e6c28649 update default docker daemon config 2024-06-01 15:55:26 +08:00
45e5bafcef Merge pull request #84 from Colin-XKL/text-lint
Text lint and fix
2024-04-21 14:42:33 +08:00
github-actions[bot]
4b10bcfdac chore: lint text and auto correct 2024-04-18 03:50:34 +00:00
83d6a8ba7f Merge pull request #83 from Colin-XKL/update-img-url
Update imgs' CDN URL
2024-04-18 11:50:11 +08:00
github-actions[bot]
0e27520929 Change img CDN URL 2024-02-03 12:17:09 +00:00
69f2c54965 feat: update posts 2024-02-03 20:16:33 +08:00
28f928b570 feat: update posts 2024-02-03 20:16:33 +08:00
f97d55835b feat: update posts 2024-01-24 19:21:26 +08:00
0195d85641 feat: update posts 2023-12-31 23:13:38 +08:00
4b6100bfee feat: add post 2023-12-31 22:56:34 +08:00
2aede33107 feat: add new post 2023-12-31 22:35:37 +08:00
233bc3fa9b feat: update post 2023-12-18 23:38:50 +08:00
7668b918ee feat: update post 2023-12-01 21:54:18 +08:00
55f5bbd15e Update RSSManX安装部署指南.md 2023-09-19 16:44:04 +08:00
99d00283e1 feat: update post 2023-09-18 00:06:26 +08:00
65c0429ce5 Merge pull request #76 from Colin-XKL/update-img-url
Update imgs' CDN URL
2023-09-10 21:10:55 +08:00
github-actions[bot]
a17e1106bc Change img CDN URL 2023-09-10 13:10:38 +00:00
d5caf5e0a5 Merge pull request #77 from Colin-XKL/dependabot/github_actions/actions/checkout-4
build(deps): bump actions/checkout from 2 to 4
2023-09-10 21:10:21 +08:00
379e1a1557 Merge pull request #74 from Colin-XKL/text-lint
Text lint and fix
2023-09-10 21:09:08 +08:00
github-actions[bot]
3e3fb03791 chore: lint text and auto correct 2023-09-10 13:07:21 +00:00
3aba40b4de feat: add post 2023-09-10 21:06:40 +08:00
9ac9b49cc1 feat: update docker mirror 2023-09-10 15:55:27 +08:00
dependabot[bot]
e76f833e27 build(deps): bump actions/checkout from 2 to 4
Bumps [actions/checkout](https://github.com/actions/checkout) from 2 to 4.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v2...v4)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-05 02:52:04 +00:00
1d4a05c0b7 feat: update post 2023-08-28 23:41:22 +08:00
84af25f948 fix: typo 2023-08-28 00:02:10 +08:00
0e688cf099 feat: new post 2023-08-28 00:01:48 +08:00
1b9dc286d9 feat: update favicon 2023-08-12 16:27:21 +08:00
7091956af0 Merge pull request #73 from Colin-XKL/dependabot/github_actions/huacnlee/autocorrect-action-2.8.4
build(deps): bump huacnlee/autocorrect-action from 2.5.4 to 2.8.4
2023-08-12 11:07:34 +08:00
a672c3b56e Update CDN-URL.yaml 2023-08-12 11:06:02 +08:00
d90f4b0c43 Update text-lint.yml 2023-08-12 11:05:50 +08:00
dependabot[bot]
283a4d635a build(deps): bump huacnlee/autocorrect-action from 2.5.4 to 2.8.4
Bumps [huacnlee/autocorrect-action](https://github.com/huacnlee/autocorrect-action) from 2.5.4 to 2.8.4.
- [Release notes](https://github.com/huacnlee/autocorrect-action/releases)
- [Commits](https://github.com/huacnlee/autocorrect-action/compare/v2.5.4...v2.8.4)

---
updated-dependencies:
- dependency-name: huacnlee/autocorrect-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-12 02:58:03 +00:00
85fea90b07 Delete mardkwon-SEO.yaml 2023-08-12 10:57:13 +08:00
91e62836e5 Update CDN-URL.yaml 2023-08-12 10:53:08 +08:00
b1c2b0bccf Merge pull request #69 from Colin-XKL/dependabot/github_actions/peter-evans/create-pull-request-5
build(deps): bump peter-evans/create-pull-request from 4 to 5
2023-08-12 10:43:19 +08:00
29d991c5b5 Merge pull request #72 from Colin-XKL/text-lint
Text lint and fix
2023-08-12 10:36:42 +08:00
github-actions[bot]
0c6092abe0 chore: lint text and auto correct 2023-07-30 09:47:25 +00:00
3875a6074d style 2023-07-30 17:47:00 +08:00
8d43db3c12 feat: update posts 2023-07-30 17:45:59 +08:00
c4d3536b22 feat: typo 2023-07-30 17:44:50 +08:00
dependabot[bot]
148e6969d9 build(deps): bump peter-evans/create-pull-request from 4 to 5
Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 4 to 5.
- [Release notes](https://github.com/peter-evans/create-pull-request/releases)
- [Commits](https://github.com/peter-evans/create-pull-request/compare/v4...v5)

---
updated-dependencies:
- dependency-name: peter-evans/create-pull-request
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-07 02:58:48 +00:00
33 changed files with 1548 additions and 158 deletions

View File

@@ -3,15 +3,15 @@ name: Check and correct img CDN URLs
on:
push:
branches: [master]
pull_request:
branches: [master]
# pull_request:
# branches: [master]
jobs:
check-version:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4
- name: Find and Replace Release
uses: jacobtomlinson/gha-find-replace@2.0.0
@@ -22,12 +22,13 @@ jobs:
- name: Create Pull Request
uses: peter-evans/create-pull-request@v4
uses: peter-evans/create-pull-request@v5
with:
token: ${{ secrets.GITHUB_TOKEN }}
commit-message: "Change img CDN URL"
title: "Update imgs' CDN URL"
labels: "URL"
base: "master"
author: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
branch: "update-img-url"
body: "Some imgs' URL need to be updated."

View File

@@ -15,7 +15,7 @@ jobs:
runs-on: ubuntu-latest
name: Build and Deploy Job
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4
with:
submodules: true
- name: Build And Deploy

View File

@@ -37,12 +37,12 @@ jobs:
wget -O ${{ runner.temp }}/hugo.deb https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_Linux-64bit.deb \
&& sudo dpkg -i ${{ runner.temp }}/hugo.deb
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
submodules: recursive
- name: Setup Pages
id: pages
uses: actions/configure-pages@v2
uses: actions/configure-pages@v5
- name: Build with Hugo
env:
# For maximum backward compatibility with Hugo modules
@@ -53,7 +53,7 @@ jobs:
--minify \
--baseURL "/"
- name: Upload artifact
uses: actions/upload-pages-artifact@v1
uses: actions/upload-pages-artifact@v3
with:
path: ./public
@@ -67,4 +67,4 @@ jobs:
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v1
uses: actions/deploy-pages@v4

View File

@@ -1,20 +0,0 @@
name: MD SEO check
on: [push, pull_request]
jobs:
seocheck:
name: Markdown SEO Check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
ref: ${{ github.event.pull_request.head.sha }}
- name: Markdown SEO Check
uses: zentered/markdown-seo-check@v1.1.5
with:
max_title_length: 70
max_description_length: 150
max_slug_length: 100
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -3,23 +3,23 @@ name: Check and correct text
on:
push:
branches: [master]
pull_request:
branches: [master]
# pull_request:
# branches: [master]
jobs:
check-and-lint-text:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4
- name: huacnlee.autocorrect
uses: huacnlee/autocorrect-action@v2.5.4
uses: huacnlee/autocorrect-action@v2.10.0
with:
args: --fix
- name: Create Pull Request
uses: peter-evans/create-pull-request@v4
uses: peter-evans/create-pull-request@v5
with:
token: ${{ secrets.GITHUB_TOKEN }}
commit-message: "chore: lint text and auto correct"

View File

@@ -2,8 +2,12 @@
framed = true
+++
# Hi there!
# Hi there!👋
Welcome to my blog👋 Check these
<p align="center">
<img src="/favicon.png" width=120 />
</p>
[💻 技术文章](/categories/%E6%8A%80%E6%9C%AF/) | [📖 My Readings](https://reading.colinx.one) | [💡 My Github](https://github.com/Colin-XKL/) | [💎 公开服务](/services/)
Welcome to my blog🎩 Check these
[💻 技术文章](/categories/%E6%8A%80%E6%9C%AF/) | [💡 My Github](https://github.com/Colin-XKL/) | [💎 公开服务&个人作品](/services/)

View File

@@ -1,5 +1,4 @@
---
title: 2020 年度总结
date: 2020-12-26
lastmod: 2020-12-31
@@ -10,8 +9,6 @@ categories:
tags:
- 总结
- 杂记
- 2020
---
<!-- # 2020 年度总结 -->

View File

@@ -1,5 +1,4 @@
---
title: 2021 年度总结
date: 2021-12-31
lastmod: 2021-12-31
@@ -10,8 +9,6 @@ categories:
tags:
- 总结
- 杂记
- 2021
---
<!-- # 2021 年度总结 -->

View File

@@ -9,7 +9,6 @@ categories:
tags:
- 总结
- 杂记
- 2022
---
## 我的 2022 年度关键词
@@ -78,7 +77,7 @@ tags:
- 回高中母校转转,很激动也很局促,在上课也没敢多逛,没见到班里的老师有点可惜
- 比赛的奖状奖杯、公司的新年礼盒陆续寄到家了,自己没什么感觉,但是家里人倒是挺高兴
- 回学校后每天背单词准备着大概率没用的托福考试
- qB+Plex+TMM+投影仪,打通了影视流,看片更方便体验更好了
- qB+Plex+TMM+ 投影仪,打通了影视流,看片更方便体验更好了
- 入坑 JOJO、Rick&Morty 等神作
- 每日饭后娱乐:学校池塘抓龟,一段惬意自在的时光
- RSSMAN 项目获得更多认可,并与一个律师用户朋友进行深度交流,感觉很奇妙

View File

@@ -0,0 +1,123 @@
---
title: 2023 年度总结
date: 2023-12-31
lastmod: 2023-12-31
description: 我的 2023 年度关键词 空虚&丰满
categories:
- 杂记
- 年度总结
tags:
- 总结
- 杂记
---
## 年度关键词
**空虚**, **丰满**
2023 年,久违的没有疫情了,这一年跑了很多地方,也解锁了工作一周年的成就,尝试做了很多东西,也入手了不少好物,有些切切实实提升了日常体验,有些则是放以前我能兴奋把玩很久,但是如今买了一堆,兴奋和喜悦却只能持续一个周末。这一年有很多睡不着的晚上,虽然大多数时候都是喝了咖啡或者茶睡不着,不过睡不着的时候也不能全赖咖啡因,睡不着就开始胡思乱想,越想就越睡不着了。到后面脑子里到处都是 idea, 受不来了就爬起来打开电脑哐哐哐开始写,可惜最后一个周末过去上了几天班,这些项目就推进不下去了。上班还是挺消耗心智的。可能这也是为什么今年的很多时候都隐隐感觉到空虚吧。
在尝试写下这篇年度总结的时候,我又回去翻了相册、购物记录、代码记录,梳理一通发现今年虽然主观上感觉比较空虚,但其实还是做了不少事情的,或者说有了不少独特的体验。无论是演唱会、打卡的景点、折腾的玩具、入坑的剧集,还是说工作上的一些事项,同事和老板的一些肯定,这些加起来,总体来看,似乎也不能说过去的一年是一个平平无奇的,无聊的,一事无成的一年。那我为什么会感到空虚呢?
我不禁想反问自己,空虚的反义词是什么?什么情况下我才不会感到空虚呢?为什么我回忆起过去的一年会觉得自己很空虚呢?
追自己非常喜欢的剧集不会让我感到空虚,今年看的几部剧也确实都不错,看了挺长时间。
去外面旅游打卡不会让我感到空虚,但是今年也没少出去玩,甚至中间还有几个长假玩了挺久
折腾自己的玩具项目不会让我感到空虚,但是今年折腾的东西一点都不少
入手心仪很久的科技产品不会让我感到空虚,今年同样没少买,又是小主机又是 3D 打印机的
得到赞赏不会让我感到空虚,可是今年,无论是来自同事的,来自老板的,来自开源社区的陌生人的,都不少
那什么也没缺,为什么我会觉得自己很空虚呢?
细细想来,过去的一年高光时刻很多,但是总的时长其实很有限。可能正是因为高光时刻太令人兴奋了,相比之下,日常普普通通,波澜不惊的那些日子,显得尤为空虚。
满打满算,有高光时刻,非常“精彩”的天数可能才 60 天,也就是说一年里 300 多天我都是在“刚刚经历高光时刻,兴奋刚刚退去”的“戒断反应”下度过的,这些平常的日子相比较起来确实非常无聊,非常空虚。
所谓“平平淡淡才是真”, 平凡的日子才是生活的主旋律。这样一看,统计下那些“不平凡”的天数,其实过去的一年是相当丰富、充盈的,这里我选择了“丰满”这个词作为年度关键词之一。一方面是指“高光时刻”真的很多,另外一方面也是有“羽翼渐丰”的意思。
2023 解锁了工作一周年的成就,无论是在社会角色,经济能力,还是消费理念,工作能力等方面,我发觉自己都开始达到了一个新的台阶。我开始能够作为子女,作为业务的核心成员,能够“独当一面”, 在社交和消费时也能从过往十几年的枷锁中突破开来,更加开放,果断,自信。用 2023 年的流行语来说由“I 人”变得更“E”了。
这里也引出另外一个话题如何判断自己到底是“I 人”还是“E 人”, 为什么我是“I 人”而不是“E 人”呢为什么我只能是“I 人”或“E 人”而不是两者兼具呢?
我一度因为自己厌恶社交不会“来事”而给自己贴上内向的标签。按照评测结果来看我是妥妥的“I 人”, 但是过去的几年里,接触到不少同学、朋友、同事,不少人给我打的标签都是“积极的”,“勇敢的”,“外向的”, 甚至还有同学来问我,如何才能像我一样,在公开场合讲话时“临危不惧”,“娓娓道来”, 我诧异了,我一直都觉得自己是个内向寡言胆小怕事的小透明,至少从小学开始,我就是给自己立的这个人设,每逢过年走亲戚、外出活动和社交的时候我也总是尽量一个人在角落里企图避开所有其他人的交流。
我回忆起每次有大人来尝试给我开玩笑我后面总是气到不行原地大哭,现在想想当时只是因为开的玩笑太过分,不尊重人,我那时不懂得反驳而已。
我回忆起每次过年走亲戚我总是躲在房间里不想出去,饭桌上也总是沉默不语只企图尽快逃离。现在想来,一桌子不认识的亲戚,聊着我都听不懂的家长里短,我怎么可能会有待下去的意图。
我回忆起以前在学校总是避开所有的社交活动、体育活动,一个人在座位上看书,现在看来单纯只是因为那个时候自己已经和班里的大部分同学不在一个频道上面了,无论是成绩还是兴趣方向、话题等等。上大学以及后面工作时,遇见过很多很优秀的朋友,日常交流时我从来都没感觉到自己需要逃避,反而我会非常期待,以及非常珍惜在一起交流玩耍的时间。
回过头来看,过去几年的我并不是变得更外向,更积极,更擅长社交了,而是我从人设的枷锁中解放了自己的人格,在与优秀的伙伴相处时找回了真实的自己。新的一年,希望自己能够更多地发展真实的自我,没有定义,没有标签,做自己想做的自己!
## 2023 年度高光时刻 ✨
- 花了好几个晚上做铃芽主题曲的短片,每天盼着下班就回家开始剪辑和调整节奏,那股热情和冲劲可遇而不可求
- 部门团建去贵州玩了四天,不知道是不是因为上班压抑的太久,感觉玩了一个星期多,很充实
- 下半年去湖南参加婚礼顺带玩了一周,行程满满当当,天气也很给力,错峰出行总体体验也非常不错
## 2023 年度遗憾 ☁️
- 铃芽的短片做完了投稿没有 check 状态,后面过了好几天才发现之前投错了被审核拒绝了,错失了流量热点
- 在窗帘伴侣接入 HomeAssistant 这件事情上浪费了太多时间,早知道应该直接钞能力解决,时间和精力可以做更多的事
## Flags From 2022
- 阅读 6 本书 (✅, 包括球状闪电在内的 4 部文学作品1 部心理学1 部技术类)
- 发布 6 篇博客文章 (✅, 虽然有赶工的嫌疑不过最后还是完成了 hhh )
- 打卡 6 个景点 (✅13/6, 217% 超额完成,广州的大学城,海心沙亚运公园,贵州的肇兴侗寨,荔波小七孔等,湖南的桃花源,张家界,凤凰古城等)
- 在各种公共平台发表总共 6 个作品 (✅, 勉强完成,可惜很多都只开了个头没有继续运营下去)
## Question From 2022
> **一年后的自己,有没有变得更加善于表达自己,有没有更多、更畅酣地表达自己?**
这个问题需要分成两个部分来回答。首先毫无疑问的是2023 的我在表达自己的时候更加顺畅了,但是还算不上酣畅。目前来看,我表达自己的一个重要途径是创作,任何内容的创作。我需要一些创作的动机和契机来实现这一点,期待在新的一年里,能够有更多,更深度,更持续的创作。
## Flags For 2024
- 发布 6 篇博客文章
- 做 3 个 Weekend Project, 两天马拉松直接从 0 到上线
- 做 2 个 Side Project, 并持续投入运营
## Question For 2024
一年后的自己,有没有找到或者建立一个会愿意持续投入 3 年以上的项目,方向,或者事业?
---
## 年度流水账环节
- 没有寒假的春节,失去了才发现有长假是真的爽
- 春节期间三五好友的露天烧烤
- 年后没几天就匆匆回来上班,不过开头几天大家都是不约而同默契摸鱼,加上不知道因为是不是疫情退散加上新年新气象,感觉倒也没那么糟糕
- 入坑 Astro, 这个集合 SSR+CSR+Component Island + Hydration 众多新概念的框架确实有点意思,尝试做了个 version selector 的玩具项目,可以给项目开坑或者升级的时候选择技术组件的版本提供查询和参考,使用 headless CMS 方案,虽然最后没做成多大的规模,不过这个 Headless CMS 方案却给朋友带来了一点小小的震撼,激动到回家就开始准备写小程序开店 hhh
- 公司年会,抽中了个 AirPods 3, 运气还不错
- 打卡海上世界,华强北等地,之后几天又去深圳湾、南山公园,疫情放开感觉有点想报复性地多出去走走
- 尝试折腾水族,买了鱼缸、水泵等一大堆东西,后面发现水泵太吵、缸放阳台顶不住夏天暴晒
- 疯狂追剧 Futurama 系列
- 给铃芽的主题曲做了个中日粤三语的 MV(或者说 MAD?), 一直以来我都对音乐以及画面之间的节奏很感兴趣,这一次真正动手做,花了很多时间和精力,而且久违的有很多热情和冲动,每天下班回家就是疯狂剪辑和调整节奏,成片一遍又一遍检查和调整。不过最终的效果还可以,虽然没能蹭上热点,但是评论区和弹幕还是有不少小伙伴表示了认可和赞赏。
- 折腾 Azure windows vm, 未果,教训是远离 win vm, 太麻烦了
- 折腾智能家居,入手了空调伴侣、远程控制空调和红外控制风扇等,体验不错,值得颁一个年度好物奖 👍
- 五一难得趁假期回了趟家,久违的又遇见了初夏季节的家乡
- 去广州看杨千嬅的演唱会,不得不说实力派歌手的现场真的很棒
- 借着朋友还没毕业的机会,逛了下广州大学城,看了场篮球赛,短暂的感受了一下没有疫情下的,慢慢的校园活力
- 部门团建,去贵州玩了几天,风景很好,活动也很精彩,短短四天玩的很开心很充实,不知道是不是因为平时节假日都是中午才起,白天太短,这次加上往返只有四天但是感觉玩了整整一个星期
- 折腾 GPT 和 wordpress, 尝试通过 AI 自动生成内容建站,后面发现对中文支持不太行,人工审校还是需要花不少经历
- 折腾智能家居,买的窗帘伴侣不能接 Home Assistant, 不能每天早上定时开启,很烦,尝试通过闲置的安卓手机模拟操控,打开米家每天定时开窗帘。为此又久违的操起了 ROOT 安卓手机的旧活,最后终于在 Mi6 上跑起来类原生的 Android 13
- 脑袋一热研究 AI 写网文小说脑洞打开写了不少可惜网文要求的水分实在太大AI 对于超长上下文也处理不好,不太听使唤
- 折腾旁路由OpenWRT on Raspberry Pi 的方案最终失败OpenWRT 对容器场景并没有做优化,插件更新和升级等的体验比较糟糕,再叠加其他一些因素,后面回归独立路由器 OpenWRT 的方案
- 折腾 NAS on Cloud, 由于网络环境变化,在家里连接我那新加坡的服务器使用 plex 时晚高峰丢包非常严重,折腾了好久的内核参数和 TCP 协议,最后发现在丢包率高达 20+%的情况下神仙来了也没用
- 疯狂追剧 The Simpsons 系列
- 折腾双语字幕的自动化方案,自动从 bundle 了多国语言字幕的视频资源文件中提取两种语言字幕并合并,以及根据 SDH 字幕自动把网上搜到的双语字幕进行时间轴对齐操作
- 办公室坐太久,切身体会到对身体的影响,火速下单腰靠和人体工学鼠标等配件,不得不说,用上之后确实能缓解不少,日常也开始多多注意一些屏幕前久坐的坏习惯
- 折腾把窗帘伴侣接入 Home Assistant 无果,又不想自己写驱动适配,后面妥协还是入手了小米的多模网关。回头想想自己花了那么多时间和精力,投入的远远不止网关这点钱,真是不值当
- 赶上中秋和十一连休,超长假期又回了趟老家
- 香港初体验,不由得感叹香港在文化氛围、无障碍设施覆盖、商业活力真的很好,相较于内地的一线城市还要高一个层次
- 拿起吃灰许久的电饭煲折腾自制酸奶,味道还不错
- 双十一疯狂剁手,入手了 3D 打印机、超迷你精悍全金属的双网口迷你小主机等等,以及在某东几分钱几毛钱薅了一堆羊毛,包括两毛钱包邮的十棵多肉,薅羊毛薅的欲罢不能
- 借着参加婚礼的机会,连休了一周,在湖南玩了一大圈,景区人很少,错峰出来玩又是一周连休真的很爽
- 入坑老头环,开场被虐的体无完肤,后面才发现逃课才是最大的乐趣
- 疯狂追剧星际牛仔
- 疯狂追剧浩瀚苍穹系列
- 又跑了一趟香港办卡,本来以为流程会很麻烦没想到当天现场就丝滑下卡
- 打卡少数派线下店,有些硬件的东西还是实际摸起来更有感觉
- 2023 the end

View File

@@ -1,7 +1,7 @@
---
title: 2023 静态网站托管服务速度对比
date: 2022-12-25
description: 对几家喜闻乐见的静态网站托管服务商 Vercel、Netlify、Cloudflare Pages、Azure Static Pages 测个速, 2023 版
description: 对几家喜闻乐见的静态网站托管服务商 Vercel、Netlify、Cloudflare Pages、Azure Static Pages 测个速2023 版
categories:
- 技术
tags:

View File

@@ -32,7 +32,7 @@ Huginn 使用多个不同功能的 Agent 组合搭配来实现一系列功能,
该元素可以用 CSS 选择器`.meiwen`选择到。
**Tips:** class=xxx则使用`.xxx`,如果为id=xxx则使用`#xxx`
**Tips:** class=xxx 则使用`.xxx`,如果为 id=xxx 则使用`#xxx`
该标签是 a 标签,我们可以继续限定一下条件,使用`a.meiwen`
@@ -249,7 +249,7 @@ Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like
}
```
注意将原来的`url:??`的部分更改为`"url_from_event": "{{url}}"`,这样就指定使用Phantom JS Cloud为我们获取的完整网页接下来的操作就大同小异了。配置好要爬取的字段和规则后点击Dry Run就可以看到结果
注意将原来的`url:??`的部分更改为`"url_from_event": "{{url}}"`,这样就指定使用 Phantom JS Cloud 为我们获取的完整网页,接下来的操作就大同小异了。配置好要爬取的字段和规则后点击 Dry Run 就可以看到结果
![image-20220508215636780](https://blog-1301127393.file.myqcloud.com/BlogImgs/202205082207727.png)

View File

@@ -1,8 +1,8 @@
---
title: Mac 平台配置C/Python/Java学习环境
title: Mac 平台配置 C/Python/Java 学习环境
date: 2020-12-18
lastmod: 2020-12-19
description: Mac 平台配置C/Python/Java学习环境
description: Mac 平台配置 C/Python/Java 学习环境
categories:
- 技术
- 指南
@@ -18,7 +18,7 @@ tags:
<!-- # Mac平台配置C/Python/Java学习环境 -->
<!-- # Mac 平台配置 C/Python/Java 学习环境 -->
> 本系列教程旨在为刚入门的编程语言学习者做好指南工作,开始编码,本应很简单
>
@@ -68,7 +68,7 @@ C 语言的编译需要编译器,一般可以选择 gcc 或是 clang。Mac 系
<img src="https://blog-1301127393.file.myqcloud.com/BlogImgs/20201219015620.png" alt="image-20201218222511011" style="zoom:50%;" />(截图中因为本地已安装故只显示了 Uninstall 卸载按钮。未安装的情况下会显示 Install 按钮可点击安装)
其他插件可根据需要安装。此处推荐安装 C/C++插件以实现 C 代码的高亮和补全等功能。
其他插件可根据需要安装。此处推荐安装 C/C++ 插件以实现 C 代码的高亮和补全等功能。
<img src="https://blog-1301127393.file.myqcloud.com/BlogImgs/20201219015624.png" alt="image-20201218223432859" style="zoom:50%;" />

View File

@@ -216,7 +216,7 @@ volumes:
| Mod 名称 | 说明 |
| -------- | ------------------------------------------------------------ |
| LootBags | 击杀怪物得到战利品带,随机开出各种物品。不过你的箱子很快就会被一堆奇奇怪怪的东西堆满(比如我有一大箱无用的钻石马铠) |
| Cuisine | 中文名烹饪工艺,默认开发的 Mod挺有趣很好地还原了做菜的过程做完之后的菜会获得药水一样的效果。不过目测已经停更而且没有很好的教程 |
| Cuisine | 中文名烹饪工艺,国人作者开发的 Mod挺有趣很好地还原了做菜的过程做完之后的菜会获得药水一样的效果。不过目测已经停更而且没有很好的教程 |
**注意**:上面列举的所有 Mod 都是 Mod 本体,有些 Mod 的功能还依赖于其他 Mod在安装时必须同时安装 Mod 本体和他依赖的 Mod。具体的依赖关系可以参考 mcmod.cn 上对 Mod 介绍页的 Mod 关系选项卡CurseForge 的 Mod 介绍页的 Relation 选项卡。

View File

@@ -12,6 +12,7 @@ tags:
- Github
- 代理
---
![logo](https://cdn.jsdelivr.net/gh/Colin-XKL/RSSmanX/.github/logo.png)
![license](https://img.shields.io/github/license/Colin-XKL/RSSmanX)

View File

@@ -3,14 +3,13 @@ title: RSSManX 安装部署指南
date: 2022-05-07
description: RSS Man X 是我两年前入坑 RSS 后,为了方便更多人更方便地使用 RSS 所发起的一个项目,主要是用 docker-compose 整合了一些常用的服务如 TTRSS、RSSHub、Huginn、OpenCC 等并进行了一些优化调整,如自动更新,反反爬虫等。这篇文章会尽可能详尽地讲解安装部署的步骤以及安装过程中可能会遇到的一些问题。
categories:
- 技术
- 指南
- 技术
- 指南
tags:
- RSS
- Linux
- 教程
- Docker
- RSS
- Linux
- 教程
- Docker
---
<!-- # RSSManX 安装部署指南 -->
@@ -23,7 +22,8 @@ RSS Man X 会利用到 docker 和 docker-compose首先需要确保你的服
检查服务器中是否已经安装了 docker 和 docker-compose并检查他们的版本是否太老。比如输入`docker --version`来检查 docker 的版本
docker 的版本建议不要低于 19docker-compose 的版本建议不要低于 1.20
docker 的版本建议不要低于 19docker-compose 的版本建议不要低于 1.20
(注Docker 新版本可使用`docker compose` 替代 `docker-compose`)
```shell
~ » docker --version
@@ -37,7 +37,7 @@ docker-compose version 1.25.0, build unknown
如果上面命令执行后提示`command not found`,那么说明并没有安装对应的软件包(或是安装的路径并不在当前用户的 PATH 变量中,尝试切换到 root 操作,详细的原因和解决方法见后文)
### 1.1 Ubuntu/Debian安装Docker
### 1.1 Ubuntu/Debian 安装 Docker
ubuntu 和 debian 主要是用 apt 安装和管理软件包,可以使用以下命令来安装,根据实际情况选择是否要加 sudo。下面以 Ubuntu 为例。Debian 下的安装略有不同,可以参见[Docker 官方文档](https://docs.docker.com/engine/install/debian/),以及[清华镜像源](https://mirrors.tuna.tsinghua.edu.cn/help/docker-ce/)。其中`download.docker.com`连接不同的可以尝试讲域名部分更换为[中科大提供的镜像](https://mirrors.ustc.edu.cn/help/docker-ce.html)地址`mirrors.ustc.edu.cn/docker-ce`
@@ -81,7 +81,7 @@ sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
```
### 1.2 CentOS/Fedora安装Docker
### 1.2 CentOS/Fedora 安装 Docker
CentOS 和 Fedora 使用 yum 安装和管理软件包,新版本则是使用 dnf不过两者功能一致且高度兼容。下面以 CentOS 为例Fedora 可参见[官方文档](https://docs.docker.com/engine/install/fedora/)或[清华镜像源](https://mirrors.tuna.tsinghua.edu.cn/help/docker-ce/)
@@ -103,7 +103,7 @@ sudo yum install -y yum-utils
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
# 3.B 墙内方案
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo sed -i 's+download.docker.com+mirrors.tuna.tsinghua.edu.cn/docker-ce+' /etc/yum.repos.d/docker-ce.repo
@@ -114,8 +114,6 @@ sudo yum update
sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
```
### 1.3 安装或更新 docker-compose
docker-compose 目前有两个主要版本 V1 和 V2都是可用的。V1 使用 Python 编写,使用时类似`sudo docker-compose up -d`V2 则是 Golang 编写,与前者高度兼容,但是是作为 docker 的插件安装的,使用时类似`sudo docker compose up -d`,中间的短杠不需要了。
@@ -150,6 +148,7 @@ pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple
```
如果提示 pip 命令不存在需要先安装一下
```shell
# Ubuntu/Debian
sudo apt install python3-pip
@@ -164,26 +163,30 @@ sudo yum install python3-pip
python3 -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade pip
```
### 1.4 为 Docker 配置镜像源
如果 Docker 下载镜像非常慢,你可能需要单独配置一下 Docker 的镜像源。==**注意Docker 安装软件源的镜像和 Docker 镜像或者说映像的国内源并不是同一个,英文表述可能更准确一些:**==
* 上文安装 docker 时配置的是 docker 的 reporepo 里含有 docker 的软件包,[国内的镜像](https://mirrors.ustc.edu.cn/help/docker-ce.html)为 Docker CE 安装软件包的镜像
* 现在我们要配置的是 Docker Hub 的 MirrorDocker 里拉取 Image 默认会访问[Docker Hub](https://hub.docker.com),国内有多个 Docker Hub 镜像或是 Docker 镜像加速器,如[中科大的源](https://mirrors.ustc.edu.cn/help/dockerhub.html)
- 上文安装 docker 时配置的是 docker 的 reporepo 里含有 docker 的软件包,[国内的镜像](https://mirrors.ustc.edu.cn/help/docker-ce.html)为 Docker CE 安装软件包的镜像
- 现在我们要配置的是 Docker Hub 的 MirrorDocker 里拉取 Image 默认会访问[Docker Hub](https://hub.docker.com),国内有多个 Docker Hub 镜像或是 Docker 镜像加速器,如[中科大的源](https://mirrors.ustc.edu.cn/help/dockerhub.html)
`/etc/docker/daemon.json`文件中写入以下内容,如不存在可先行创建,注意 json 中列表的最后一项末尾是没有逗号的
```json
{
"registry-mirrors": [
"https://mirror.ccs.tencentyun.com",
"https://docker.mirrors.ustc.edu.cn"
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com",
"https://docker.nju.edu.cn",
"https://docker.mirrors.sjtug.sjtu.edu.cn",
"https://dockerproxy.com",
"https://docker.m.daocloud.io"
]
}
```
update 20230720: 部分镜像源不再可用,更新镜像源配置。参考 https://gist.github.com/y0ngb1n/7e8f16af3242c7815e7ca2f0833d3ea6
配置完成后`sudo systemctl restart docker`重启 docker 服务,然后输入`sudo docker info`,在输出结果的末尾可以看到`Registry Mirrors`里会出现我们刚刚配置的 Docker Hub 镜像
群辉等 NAS 的系统并不是标准版 Linux安装的也是魔改版 docker上面的配置文件地址并不适用建议自行搜索对应的文档或教程。
@@ -193,17 +196,17 @@ python3 -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade pip
[RSS MAN X 项目](https://github.com/Colin-XKL/RSSmanX)旨在为 RSS 的同好提供一个方便地搭建自己的 RSS 服务的捷径,毕竟不是所有 RSS 爱好者都懂代码 😂。RSS Man X 能够有 RSS 订阅管理、RSS 在线阅读界面,进阶功能包括服务健康自检、海外站点 RSS 解锁等,提供不同的版本供选择,三个版本的 `docker-compose` 文件对应不同的需求,包含的组件和服务有差异。
| 组件 / 服务 / 功能名称 | 标准版 | Lite 版 | Ultimate 版 ✨ |
| ---------------------- | ------ | ------- | ------------- |
| TTRSS | ✅ | ✅ | ✅ |
| RSSHub | ✅ | ✅ | ✅ |
| ---------------------- | ------ | ------- | -------------- |
| TTRSS | ✅ | ✅ | ✅ |
| RSSHub | ✅ | ✅ | ✅ |
| Huginn | | | ✅ |
| Mercury | ✅ | | ✅ |
| Mercury | ✅ | | ✅ |
| OpenCC | | | ✅ |
| Redis | ✅ | | ✅ |
| Redis | ✅ | | ✅ |
| Browserless | | | ✅ |
| 数据持久化保存 | ✅ | ✅ | ✅ |
| 容器自动更新 | ✅ | | ✅ |
| 容器健康检查 | ✅ | | ✅ |
| 数据持久化保存 | ✅ | ✅ | ✅ |
| 容器自动更新 | ✅ | | ✅ |
| 容器健康检查 | ✅ | | ✅ |
| 海外站点加速 | | | ✅ |
| 智能路由 | | | ✅ |
| 反反爬虫 | | | ✅ |
@@ -235,31 +238,29 @@ python3 -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade pip
8. RSS Man X 的除 lite 以外的版本默认包含了自托管的 mercury 实例,你只需要在插件配置页面设置 mercury 实例地址为 `service.mercury:3000` 即可同理OpenCC 实例地址为`service.opencc:3000`
9. 如果部分 RSS 源不能订阅,检查是否使用了非常规端口。在`.env`文件中设置`RSS_ALLOEW_PORTS`
9. 如果部分 RSS 源不能订阅,检查是否使用了非常规端口。在`.env`文件中设置`RSS_ALLOW_PORTS`
10. 若部署后某个应用一直无法通过浏览器访问,请检查是否绑定到了`6000`/`6666`等特殊端口,浏览器会拦截对这些端口的访问参见[这里](https://blog.colinx.one/posts/docker-compose%E7%9A%84%E9%94%99%E8%AF%AF%E4%BD%BF%E7%94%A8%E5%A7%BF%E5%8A%BF/)
11. `ls`没有显示`.env`文件是因为以点开头的文件在 Linux 中都是默认隐藏的,可以使用`ls -a`查看到
12. vi/vim编辑文本太麻烦可以尝试使用nano
12. vi/vim 编辑文本太麻烦可以尝试使用 nano
13. RSS Man 里所有容器绑定了服务器的/etc/localtime使用`sudo timedatectl set-timezone Asia/Shanghai` 设定系统的时区为上海后,容器里的时区也可以同步,这样日志里的时间就是东八区了
**获取帮助**
* **For Tiny tiny RSS problems:**
- **For Tiny tiny RSS problems:**
[https://tt-rss.org/wiki.php](https://tt-rss.org/wiki.php)
[http://ttrss.henry.wang/](http://ttrss.henry.wang/)
* **For RSShub problems:**
- **For RSSHub problems:**
[https://docs.rsshub.app/faq.html](https://docs.rsshub.app/faq.html)
* **For Huginn problems:**
- **For Huginn problems:**
[https://github.com/huginn/huginn#readme](https://github.com/huginn/huginn#readme)
### 2.3 链接
* [我的 RSS 方案与心得](https://blog.colinx.one/posts/%E6%88%91%E7%9A%84rss%E6%96%B9%E6%A1%88%E4%B8%8E%E5%BF%83%E5%BE%97/)
* [RSS Man X GitHub repo](https://github.com/Colin-XKL/RSSmanX)
* [Huginn 指南:为任意网站制作 RSS](https://blog.colinx.one/posts/huginn%E6%8C%87%E5%8D%97%E4%B8%BA%E4%BB%BB%E6%84%8F%E7%BD%91%E7%AB%99%E5%88%B6%E4%BD%9Crss/)
* [docker compose 的错误使用姿势](https://blog.colinx.one/posts/docker-compose%E7%9A%84%E9%94%99%E8%AF%AF%E4%BD%BF%E7%94%A8%E5%A7%BF%E5%8A%BF/)
- [我的 RSS 方案与心得](https://blog.colinx.one/posts/%E6%88%91%E7%9A%84rss%E6%96%B9%E6%A1%88%E4%B8%8E%E5%BF%83%E5%BE%97/)
- [RSS Man X GitHub repo](https://github.com/Colin-XKL/RSSmanX)
- [Huginn 指南:为任意网站制作 RSS](https://blog.colinx.one/posts/huginn%E6%8C%87%E5%8D%97%E4%B8%BA%E4%BB%BB%E6%84%8F%E7%BD%91%E7%AB%99%E5%88%B6%E4%BD%9Crss/)
- [docker compose 的错误使用姿势](https://blog.colinx.one/posts/docker-compose%E7%9A%84%E9%94%99%E8%AF%AF%E4%BD%BF%E7%94%A8%E5%A7%BF%E5%8A%BF/)

View File

@@ -2,7 +2,7 @@
title: Win 10 配置 C 语言环境的正确姿势
date: 2020-12-27
lastmod: 2020-12-27
description: VC6.0 太古老Dev C++没补全不友好MinGW 安装太烦恼?你用着最新的电脑,最新的系统,却在用着上个世纪的软件开始你人生第一门编程课?你需要这篇指南:在现代化的硬件和平台上使用现代化工具学习 C 语言
description: VC6.0 太古老Dev C++ 没补全不友好MinGW 安装太烦恼?你用着最新的电脑,最新的系统,却在用着上个世纪的软件开始你人生第一门编程课?你需要这篇指南:在现代化的硬件和平台上使用现代化工具学习 C 语言
categories:
- 技术
- 指南
@@ -18,7 +18,7 @@ tags:
>
> The PAINLESS way to start coding!
VC6.0 太古老Dev C++没补全不友好MinGW 安装太烦恼?
VC6.0 太古老Dev C++ 没补全不友好MinGW 安装太烦恼?
你用着最新的电脑,最新的系统,却在用着上个世纪的软件开始你人生第一门编程课?
@@ -175,9 +175,9 @@ Cygwin 的安装程序可以[从其官方站点下载](https://cygwin.com/instal
配置 VSCode 的作为 C 语言学习环境
## 配置 VSCode 的作为 C 语言学习环境
<span id="vscode">VSCode</span>是由微软主导开发的一款开源免费、轻巧简单、功能强大的代码编辑器。配合各式各样的插件可以方便地实现各种你想得到和你想不到的功能。
VSCode 是由微软主导开发的一款开源免费、轻巧简单、功能强大的代码编辑器。配合各式各样的插件可以方便地实现各种你想得到和你想不到的功能。
前往[VSCode 官网](https://code.visualstudio.com/)下载 Windows 版 VScode。并按照安装程序的指引进行安装。

View File

@@ -1,23 +1,22 @@
---
title: 个人向 Linux 新服务器初始化清单
date: 2023-03-14
description: 一份 Linux 初始化清单, 避免每次拿到新的服务器都要一个个去各种地方搜集指令, 以做备忘 & 供有需要的朋友参考. 以目前最新的 Debian 11 Bullseye 为例
lastmod: 2025-06-21
description: 一份 Linux 初始化清单,避免每次拿到新的服务器都要一个个去各种地方搜集指令,以做备忘 & 供有需要的朋友参考。以目前最新的 Debian 11 Bullseye 为例
categories:
- 技术
tags:
- 技术
- Linux
- Debian
- Traefik
- Headless CMS
---
一份 Linux 初始化清单,避免每次拿到新的服务器都要一个个去各种地方搜集指令,以做备忘 & 供有需要的朋友参考。
服务器发行版我个人推荐 Debian 系列CentOS 系现在已经开始分裂而且说实话对新手其实并不友好。Debian 是在兼容性,易用性和稳定性之间都取得不错平衡的发行版。新手推荐 Ubuntu, 不过最近商业化有点过度,夹带了越来越多的私活,我个人所有新安装的 Linux 已经全线转向 Debian. 下文以目前最新的 Debian 11 Bullseye 为例
服务器发行版我个人推荐 Debian 系列CentOS 系现在已经开始分裂而且说实话对新手其实并不友好。Debian 是在兼容性,易用性和稳定性之间都取得不错平衡的发行版。新手推荐 Ubuntu, 不过最近商业化有点过度,夹带了越来越多的私活,我个人所有新安装的 Linux 已经全线转向 Debian. 下文以目前最新的 Debian 11 Bullseye 为例。Debian 12 bookworm 也测试通过。
> azure 干净的 debian 11 镜像,资源使用情况供参考
> azure 干净的 debian 11 镜像,资源使用情况供参考
>
> ~1G Disk, ~100M RAM, ~300 packages
@@ -32,13 +31,15 @@ tags:
检查服务商防火墙和系统自带防火墙 (debian 系一般为 `ufw`, cent os 系一般为 `firewall-cmd`).放行 SSH(22), 新的 SSH(自定义), HTTP, HTTPS, 以及其他常用开发端口
### 1.2 新建用户与检查 sudoer
登录到 root 用户,创建个人账户并设定密码
```shell
// -m 创建对应home文件夹
// 添加到wheel用户组自动获得sudo权限
// 添加到 sudo 用户组自动获得sudo权限, 部分发行版为wheel组
useradd -m --groups wheel colin
useradd -m --groups sudo colin
// 设定密码
passwd colin
```
也可直接编辑`/etc/sudoers` 文件为新用户添加 sudo 权限,使用 `visudo` 指令可以自动帮你校验,避免配置写错把系统搞崩
@@ -52,18 +53,16 @@ useradd -m --groups wheel colin
一般情况下,将  `/etc/apt/sources.list`  文件中 Debian 默认的源地址  `http://deb.debian.org/`  替换为  `http://mirrors.ustc.edu.cn`  即可。
```shell
//for debian
sudo sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
//for ubuntu
sudo sed -i 's@//.*archive.ubuntu.com@//mirrors.ustc.edu.cn@g' /etc/apt/sources.list
```
CentOS 系建议启用 EPEL, PowerTools 等 repo 以更方便地安装常用软件和工具。此处不再赘述
推荐的几个国内镜像站: [清华大学 TUNA 镜像站](https://mirrors.tuna.tsinghua.edu.cn/), [中科大 USTC LUG 镜像站](https://mirrors.ustc.edu.cn/), [腾讯镜像站](https://mirrors.cloud.tencent.com/)
推荐的几个国内镜像站[清华大学 TUNA 镜像站](https://mirrors.tuna.tsinghua.edu.cn/), [中科大 USTC LUG 镜像站](https://mirrors.ustc.edu.cn/), [腾讯镜像站](https://mirrors.cloud.tencent.com/)
#### 基础软件
@@ -75,38 +74,44 @@ sudo apt install zsh tmux htop duf htop tldr screenfetch tree
### 1.4 SSH 安全
修改端口,配置文件`/etc/ssh/sshd_config`. 重启机器或 sshd 服务后生效
修改端口,配置文件`/etc/ssh/sshd_config`. 重启机器或 sshd 服务后生效
此外最好将`PermitRootLogin`修改为`no`, 可以禁用 root 登录。
在本机检查`~/.ssh/`有无 id_rsa 等已生成的 key. 如没有再使用 `ssh-keygen` 生成私钥
将本机的公钥上传到远端,再写入远端的 `authorized_keys`
`cat ~/id_rsa.pub >> ~/.ssh/authorized_keys`
注意修改权限,`~/.ssh/authorized_keys` 权限为 600. `~/.ssh/`400
注意修改权限,`~/.ssh/authorized_keys` 权限为 600. `~/.ssh/`700
可以参考以下设置
> .ssh/ 0700/rwx------
> .ssh/*.pub 644/rw-r--r--
> .ssh/* 0600/rw-------
如失败可参考这篇文章 debug. [https://superuser.com/questions/1137438/ssh-key-authentication-fails](https://superuser.com/questions/1137438/ssh-key-authentication-fails)
### 1.5 设置 hostname
可选,为了便于识别和后续配置 oh-my-zsh 更美观
可选,为了便于识别和后续配置 oh-my-zsh 更美观。这里修改完后还需要更新 hosts 设置,把刚才设置的新的主机名指向 localhost
```shell
sudo hostnamectl set-hostname my-new-server
sudo hostnamectl status
```
此外`/etc/hosts` 中默认会有个本机 hostname 映射到`127.0.0.1` 的配置,修改 host 之后这里别名的映射也要修改下,不然终端执行命令会一直弹 `sudo: unable to resolve host xxx: Name or service not known`
修改后需重启
---
### 1.6 SWAP
可选,建议内存<2G 配置 swap, 大小至少为 2 倍物理内存
可选,建议内存<2G 配置 swap, 大小至少为 2 倍物理内存可以有效避免意外爆内存的情况仅推荐 SSD 盘的服务器开启
推荐用 `fallocate` , 因为这个是最简单最快速的创建交换空间的方法 `fallocate`  命令用于为文件预分配块 / 大小
以下内容参考 linux.cn
使用  `fallocate`  创建交换空间首先在  `/`  目录下创建一个名为  `swap_space`  的文件然后分配 2GB  `swap_space`  文件
```shell
@@ -127,8 +132,6 @@ sudo swapon -s
```
每次重启后都要重新挂载磁盘分区因此为了使之持久化就像上面一样我们编辑  `/etc/fstab`  并输入下面行
```
@@ -137,6 +140,10 @@ sudo swapon -s
保存并退出文件现在我们的交换分区会一直被挂载了我们重启后可以在终端运行  `free -m`  来检查交换分区是否生效
还可以按需选择使用 zram提升内存可用量不过会略微增加 cpu 使用和内存延时可以搜索 zramctl, zramswap 等关键字
---
### 1.7 绑定域名  
@@ -165,18 +172,31 @@ Host serverA
或者我之前写的 RSS MAN 部署文档中 docker 安装的部分
[RSS MAN X 安装部署指南/#1-docker 环境准备](https://blog.colinx.one/posts/rssmanx%E5%AE%89%E8%A3%85%E9%83%A8%E7%BD%B2%E6%8C%87%E5%8D%97/#1-docker%E7%8E%AF%E5%A2%83%E5%87%86%E5%A4%87)
#### Docker 镜像源配置
#### Docker 镜像源配置及日志配置
docker mirror 配置可以加速 image pull, 国内公开可用的加速站点可以参考这里 [docker 加速站点](https://gist.github.com/y0ngb1n/7e8f16af3242c7815e7ca2f0833d3ea6)
此外服务器上的 docker 都是长时间持续运行的不少容器日志打的很随意log 文件容易占据过多空间也最好限制一下
文件位置`/etc/docker/daemon.json`, 下面的配置供参考
```json
{
  "registry-mirrors": [
    "https://mirror.ccs.tencentyun.com",
    "http://hub-mirror.c.163.com",
    "https://registry.docker-cn.com",
    "https://docker.mirrors.ustc.edu.cn"
  ]
"registry-mirrors": [
"https://docker.nastool.de",
"https://docker.actima.top",
"https://docker.unsee.tech",
"https://docker.gh-proxy.com",
"https://docker.zhai.cm",
"https://docker.1panel.live",
"https://docker.1ms.run",
"https://docker.imgdb.de",
"https://dockerproxy.net"
],
"log-opts": {
"max-file": "5",
"max-size": "1m"
}
}
```
@@ -187,8 +207,13 @@ Host serverA
安装 OH-MY-ZSH, 在此之前确保已安装 `git` `zsh`
```shell
sh -c "$(curl -fsSL [https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh](https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh))"
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
# 如果在墙内 github 速度不加可以考虑使用清华的镜像
# https://mirrors.tuna.tsinghua.edu.cn/help/ohmyzsh.git/
# 先下载到任意位置然后指定REMOTE 参数执行安装程序
git clone https://mirrors.tuna.tsinghua.edu.cn/git/ohmyzsh.git --depth=1
cd ohmyzsh/tools
REMOTE=https://mirrors.tuna.tsinghua.edu.cn/git/ohmyzsh.git sh install.sh
```
安装插件
@@ -199,6 +224,11 @@ git clone https://github.com/zsh-users/zsh-autosuggestions $ZSH_CUSTOM/plugins/z
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting --depth=1
```
git clone 速度不佳可以考虑一些开放的加速服务比如
- https://ghproxy.org/
- https://mirror.ghproxy.com/
按需修改配置文件位置`~/.zshrc`, 下面为个人常用配置供参考注意去源文件修改对应项没有再到末尾加
```shell
@@ -244,6 +274,53 @@ sudo timedatectl set-timezone Asia/Shanghai
懂得都懂自己搜
### 2.6 fail2ban 配置
使用 fail2ban 可以很好地保护你的服务器避免被人恶意爆破 SSH 等服务
```bash
// 安装 fail2ban
sudo apt update && sudo apt install fail2ban
sudo systemctl enable fail2ban
```
之后需要按照实际情况修改一下配置文件这里记录一下最小配置注意默认的配置 `/etc/fail2ban/jail.conf`不要改不然每次软件更新会被覆盖 jaid.d 这个目录下面新建一个文件`/etc/fail2ban/jail.d/local.conf`
```conf
[sshd]
enabled = true
# 这里修改为实际的 sshd 端口
port = 20000
filter = sshd
banaction = iptables-allports
[DEFAULT]
# 1h 时间窗口
findtime = 3600
maxretry = 3
bantime = 6h
```
之后重启`sudo systemctl restart fail2ban`然后可以看下服务状态是否正常 `sudo systemctl status fail2ban`如果配置文件有问题会报错如果是显示` active (running)` 就说明没有问题了
fail2ban 的测试及关闭服务方法
查看当前封禁 IP`sudo fail2ban-client status sshd`
解禁某一 IP: `sudo fail2ban-client set sshd unbanip IP_ADDRESS`
停止 fail2ban 服务`sudo systemctl stop fail2ban`
关闭 fail2ban 服务`sudo systemctl disable fail2ban`
刚配置没一会就有 IP 被封禁了可以看到效果还是很给力也安心了不少
```
➜ sudo fail2ban-client status sshd
Status for the jail: sshd
|- Filter
| |- Currently failed: 1
| |- Total failed: 6
| `- File list: /var/log/auth.log
`- Actions
|- Currently banned: 1
|- Total banned: 1
`- Banned IP list: 154.216.19.42
```
## 3 - 进阶内容
### 3.1 内核参数调优
@@ -252,7 +329,7 @@ sudo timedatectl set-timezone Asia/Shanghai
配置文件位置 `/etc/sysctl.conf`
```c
```conf
# mem
vm.swappiness = 10
@@ -261,6 +338,11 @@ net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr
net.ipv4.tcp_fastopen=3
net.ipv4.tcp_slow_start_after_idle=0
# zram 相关配置,配合下文 zram 使用
vm.watermark_boost_factor = 0
vm.watermark_scale_factor = 125
vm.page-cluster = 0
```
配置完之后保存并应用
@@ -269,7 +351,74 @@ net.ipv4.tcp_slow_start_after_idle=0
sudo sysctl -p
```
### 3.2 其他进阶配置
### 3.2 更多内存空间 - ZRAM
ZRAM 内存压缩对于个人服务器来说始终活跃的程序占用的内存只有比较小一部分启用 zram 可以将这部分内存压缩从而可以部署更多的服务
建议使用`zramtool`, 简单方便
```shell
sudo apt install zram-tools
```
修改`/etc/default/zramswap`, 末尾添加
```ini
ALGO=zstd
PERCENT=60
```
之后执行`sudo service zramswap reload`重载生效
可以使用 swapon 命令查看生效情况
```
~ » sudo swapon -show
NAME TYPE SIZE USED PRIO
/swap_space file 2G 32.1M -2
/dev/zram0 partition 489.9M 0B 100
```
这样一来会将机器物理内存的 50% 配置 zram, 使用 zstd 压缩算法一般压缩比能达到 3:1, 也就是说1G 的机器可以相当于有`0.5G+3*0.5G=2G`的内存
注意 Debian 新版本 swapon 等工具所在的目录 /usr/sbin 不在普通用户的 PATH 可能需要手动执行前缀使用 /usr/sbin/swapon
### 3.3 更多内存空间 - 关闭 kdump释放预留的内存空间
新服务器开起来之后你会发现无论是 htop 还是 free 等命令看到的总内存就是比你买服务器时页面上写的要小比如我开的两核 1G 的机器实际机器上看到的总内存只有 816M. 这是因为 linux 系统会默认开启 kdump预留了一部分内存不让我们使用
Kdump Linux 系统的一种内核崩溃转储机制它允许在系统发生内核崩溃例如内核 panic捕获内存的转储信息从而帮助事后分析故障原因默认的配置`2G-8G:256M,8G-16G:512M,16G-:768M`, 如果你买的是 2G 的机器上来就有 1/8 的空间用不了
但是我们个人日常使用的 linux 机器基本用不到这个功能不用预留这部分空间
操作方法有两种将预留内存改为 0 or 直接关闭 kdump 服务对于个人玩家小内存机器我建议直接关闭操作如下
```bash
# 备份grub配置文件
sudo cp /etc/default/grub /etc/default/grub.bak
# 编辑grub配置,删除 crashkernel=0M-2G:0M,2G-8G:192M 这样的部分
sudo nano /etc/default/grub
# 部分发行版镜像可能还有单独的kdump配置文件,直接删除
sudo rm /etc/default/grub.d/kdump-tools.cfg
# 更新grub配置
sudo update-grub
# 关闭并禁用Kdump服务
sudo systemctl disable kdump-tools
sudo systemctl stop kdump-tools
# 重启系统
sudo reboot
# 检查是否生效, 状态为 inactive(dead),即 kdump 服务已停止运行
sudo systemctl status kdump
# 检查 crash size 是否为0
cat /sys/kernel/kexec_crash_size
```
更多内容可以参见这篇文档[预留内存相关文档 - 阿里云](https://help.aliyun.com/zh/ecs/use-cases/view-and-change-the-size-of-reserved-memory-on-a-linux-instance#7d5ae6803amdp) 或者 [预留内存相关文档 - 腾讯云](https://cloud.tencent.com/document/product/213/115734)
### 3.3 其他进阶配置
一些其他的系统维护技巧与策略

View File

@@ -126,7 +126,7 @@ _*请注意此处叙述并不准确,与一个站点通信的速度取决于很
#### 常用工具的安装
更换好了软件源后,我们就可以愉快的安装软件了。你可以尝试安装一下 `screenfetch`  的软件包进行测试,安装完成后输入 `screenfetch`  命令,他会在你的屏幕上输出字符画形式的系统图标和系统配置信息。
部分 Linux 发行版可能并没有预置很多的软件包,你可以根据自己的需要进行安装,如文本编辑工具 `nano`  `vim`  等*。C 编译工具 `gcc`  ,C++编译工具 `g++`  Java 开发组件 `openjdk`  等。
部分 Linux 发行版可能并没有预置很多的软件包,你可以根据自己的需要进行安装,如文本编辑工具 `nano`  `vim`  等*。C 编译工具 `gcc`  ,C++ 编译工具 `g++`  Java 开发组件 `openjdk`  等。
_*推荐初学者使用易于上手的 `nano`  文本编辑器。大部分 Linux 发行版都有预置。_

View File

@@ -8,9 +8,7 @@ categories:
tags:
- Apple
- 小米
- 小米手环
- 杂记
---
<!-- # 伪·苹果全家桶喜添新成员:小米手环 6 使用体验 -->

View File

@@ -0,0 +1,112 @@
---
title: 关于双语字幕这件小事
date: 2023-09-10
description: 今天这篇文章来探讨下双语字幕这件小事。首先对于一部外语影片或剧集,原生的英文字幕肯定是能够轻松获得的,但是匹配、高质量的翻译字幕缺并不总是能找到。这里分享一些我在寻找和手动 DIY 双语字幕的一些经验和想法,我自己也编写了一些工具,有同样需求的朋友也可以快速上手:D
categories:
- 杂记
- 技术
tags:
- 技术
- Linux
---
今天这篇文章来探讨下双语字幕这件小事。
首先对于一部外语影片或剧集,原生的英文字幕肯定是能够轻松获得的,但是匹配、高质量的翻译字幕缺并不总是能找到。这里分享一些我在寻找和手动 DIY 双语字幕的一些经验和想法,我自己也编写了一些工具,有同样需求的朋友也可以快速上手:D
## 1. 考虑寻找现成的高质量字幕
很多大火的剧集都会有字幕组第一时间跟进字幕制作和资源的发布,我们可以在各种 BT, PT 站点找到这些字幕组打包好的自带字幕的资源,或者也可以在第三方的字幕站点上寻找合适的字幕。
这里安利一个油猴脚本:[豆瓣资源下载大师](https://greasyfork.org/zh-CN/scripts/329484-%E8%B1%86%E7%93%A3%E8%B5%84%E6%BA%90%E4%B8%8B%E8%BD%BD%E5%A4%A7%E5%B8%88-1%E7%A7%92%E6%90%9E%E5%AE%9A%E8%B1%86%E7%93%A3%E7%94%B5%E5%BD%B1-%E9%9F%B3%E4%B9%90-%E5%9B%BE%E4%B9%A6%E4%B8%8B%E8%BD%BD),可以在豆瓣的影视详情页右侧显示有资源的站点,非常方便
![Pasted image 20230910152405](https://blog-1301127393.file.myqcloud.com/BlogImgs/202309102054802.png)
效果如下图所示
![image-20220509144533549](https://blog-1301127393.file.myqcloud.com/BlogImgs/202309102054800.png)
中文字幕推荐 [字幕库](http://zimuku.org/), 大部分字幕都可以在这里找到。其他语言可以到 [OpentSubtitles](https://www.opensubtitles.org/zh) 碰碰运气,虽然界面有点古朴,但是人家资源还是很丰富滴
## 2. 字幕的时间轴修正
对于下载的字幕,我们常遇到的问题就是时间轴不匹配,相信每个影视爱好者都或多或少碰到过这样的问题。产生不匹配有多种原因,典型的比如:
- 视频帧率不匹配
- 视频有删减 (片头或者片中都有可能,常见于电视剧集,有些中间有广告转场有些没有)
- 视频版本不一样 (各种删减版,完整版,导演剪辑版等等)
最后一种差异的地方太多,建议重新找字幕。对于前面两种情况,文本的部分没有太多差异,只需要调整字幕的时间轴就可以了。
这里需要一些对齐时间轴的工具,这个市面上已经有很多了,大部分都是基于将对白音频持续时间和字幕对白持续时间做匹配,然后进行字幕整体时间轴的缩放或平移来实现对齐的。
比如 [Sushi](https://github.com/tp7/Sushi), 以及[ffsubsync](https://github.com/smacke/ffsubsync)
还有一类是最近比较火的,利用 AI 来对语音进行识别,输出对应的字幕。一半都是通过 Whisper 这个开源的语音识别模型来实现的,比如[autosubsync](https://github.com/oseiskar/autosubsync).
这类语音识别的 AI 目前已经很成熟了,市面上有很多商业应用,比如办公软件 飞书,腾讯会议一般都会支持会议语音转文字。但是这种都是为会议场景准备的。其实国内网易有道在这块做的更早,对英文支持更好,[网易见外](https://jianwai.youdao.com/)可以直接对音频进行识别,并生成 srt 文件,甚至还可以直接加上翻译,效率直接拉满。免费额度基本够用,各位轻度使用的朋友不要错过。
当然,这类 AI 语音识别和翻译现阶段还是差了点意思,在各种影视作品中,各类人名,专有名词,还有各种各样的梗 (比如 The Simpsons ), AI 处理起来还是有点够呛,所以最好还是优先选择人工调教后的字幕比较好。
上面罗列的那些对齐工具只能处理字幕和影片都是原生语言的情况,比如处理英文电影的英文字幕,但是对于要对时间轴不匹配的中英文双语字幕就基本没辙了。找遍了全网都没找到合适的工具,所以我就自己写了一个 [srt-fuzzy-sync](https://github.com/Colin-XKL/srt-fuzzy-sync)
> fuzzy-sync 是一个简单的同步 srt 字幕的工具,通过指定一个与音轨匹配的参考字幕文件,来将另一个未同步的字幕进行匹配,时间轴修正,使得其可以与音轨正确对齐。
简单点来说呢,这是一个专门用来对双语字幕时间轴进行修正的工具。你手头有一个英文电影资源,一个正确对齐的英文字幕,一个没对齐的双语字幕,这个时候你就可以用 srt-fuzzy-sync 这个工具,将英文字幕设定为参考,然后对双语字幕的时间轴进行修正,就可以得到一个时间轴正确的双语字幕啦!
为什么叫 fuzzy-sync 呢,这主要是为了通用性,只对两个字幕之间高度相同的一些关键对白进行匹配,其他的对白则只是基于匹配结果进行整体偏移,这样做的好处是即便你找的这两个字幕的对白数量不一样,仍然可以完成同步。
一般英文的 SDH 无障碍字幕里都会有很多非对白场景下的文字提示,比如
> (Theme Music Playing)
> (sigh)
> (Bird Singing)
而影片对应中文字幕里一般都不会加上这些翻译。此外中文字幕还常常对影片中出现的标题、店铺招牌、标语、新闻标题做翻译说明,种种因素导致中英文字幕在句子的数量上不是严格对等的。
此外这些字幕出现的时间,通常是没有对应的对白音频的。上面基于音频匹配的都无法很好地处理这类情况,所以我才抛弃按句匹配的方法,改为按一些句子很长,具有标志性,在影片中通常只会出现一次的关键语句匹配。
至于找不到的现成双语字幕的,那就需要我们自己动手制作啦。
## 3. 自制双语字幕
有时只能找到现成的中文字幕和原版英文字幕,但是没有双语的版本,这个时候就需要我们手动合并了。
这里推荐一个工具网站 [Subtitle Tools](https://subtitletools.com/merge-subtitles-online), 里面有各种简单的字幕工具,比如字幕合并,字幕格式转换。
对于手上又对齐的英文字幕和对齐的英文字幕,但是数量很多不想一个个到网站上去合并的,可以考虑 srt-merge 这个工具。不过原作者很久没更新了,我这里也编写了一个工具,也可以实现一样的功能。[dual-lang-sub-tool](https://github.com/Colin-XKL/dual-lang-sub-tool/tree/main)
此外还有一种常见的情况,就是我们下载的 WebRip 版本资源,影片已经内置了多国语言分别的字幕,这些资源大部分是来源于 Netfilx, Disney Plus , iTunes 这些,我们可以直接提取影片资源内置的两种语言的字幕然后将它们合并。
内置字幕的提取可以使用 ffmpeg 工具,首先用 ffmpeg -i 文件路径 来查看基本信息,确定好字幕所在的 track, 比如 Stream #0:3(chi) Subtitle, 这种就是说明 3 号 stream 是中文字幕。
```shell
# example output # ......
Stream #0:1(jpn): Audio: aac (LC), 48000 Hz, stereo, fltp (default)
Metadata: title : 日语
Stream #0:2(chi): Audio: aac (LC), 48000 Hz, stereo, fltp
Metadata: title : 国语
Stream #0:3(chi): Subtitle: ass (default)
Metadata: title : gb
Stream #0:4(chi): Subtitle: ass
Metadata: title : big5
```
可以用下面的命令将其提取出来并转换成 srt 格式
```shell
ffmpeg -i xxx.mkv -map 0:3 -c:s srt output.srt
```
提取完成后就可以直接合并得到成品的双语字幕了,但是你应该也会觉得这样提取太麻烦,尤其是一部剧几十集的情况。一般同一个资源,里面各个音轨和字幕的排布是一样的,比如上面只取了一集进行查看,其他集数都是一样的,中文字幕都是在 stream 0:3, shell 循环一下就可以了。
当然你可能觉得这还是太麻烦了,我也是这么想的,所以 dual-lang-srt-tool 工具也支持自动检测,导出,合并双语字幕啦:D DIY 双语字幕可以很简单
## 后记
对于一些专有名词太多AI 翻译质量欠佳,又没有现成中文字幕可供参考的,那目前就没有很好的办法了。通常我遇到这种情况是用 AI 的版本将就下,或者直接全英文一把梭。不过随着 AI 技术的发展,后面或许可以考虑将过往季的字幕喂给 AI 让 ta 自己学习人名地名翻译,再辅以各种新闻八卦材料让 AI 也能对各种潮流热梗烂熟于心,到那个时候制作双语字幕就是分分种的事情了,可以预见的是这样的 AI 应该有生之年就可以用上,至于是好事还是坏事,那就交给未来去评判吧。

View File

@@ -0,0 +1,202 @@
---
title: 安全不是特权 - 雷池 WAF 使用体验及部署安装教程
date: 2023-12-18
description: 近期刚好关注到雷池 WAF 这个项目比较火,看了下是国内一个安全公司搞得,看 Github Repo 和官方文档像模像样的,虽然文档跟大多数中文项目一样,很多地方写的不够清晰,一些小细节没有跟最新的版本同步,但是总体而言,可用,不难用。值得一试
categories:
- 技术
tags:
- 技术
- WAF
- docker
---
自从开始倒腾服务器,部署各种各样服务以来,网站安全一直是那个令我焦虑的一个话题。暴露了那么多服务在公网,总免不了有无聊的人或者别有用心的人在搞事。(当然也有可能不是人类 hhh) 之前也有几次被攻击的历史,比如阿里云控制台一堆 SSH 爆破攻击记录,还有 Wordpress 被攻陷,出现一堆奇怪的文章和评论。虽然损失不是很大,但是处理起来还是有点麻烦的。(被攻击之后学乖了,老老实实定期备份) 况且我在明敌在暗,我们总是处于被动的那个,时间一长,网站的风险和潜在的损失还是不小的,最好是可以有一些防火墙和策略能够拦截点大部分不友好的请求。
很早以前就有调研过世面上的网站防火墙类产品,主要就几种类型:
- 各大云厂商配套的 WAF, 不过收费都很贵
- Cloudflare 等 CDN 服务商提供的服务,不过必须要接入其 CDN 反代才能用。而且大陆地区联通性并不好
- [ModSecurity](https://github.com/SpiderLabs/ModSecurity) 等开源方案,开源免费可自托管,不过配置比较麻烦,而且没有好用的 web 页面
近期刚好关注到雷池 WAF 这个项目比较火,看了下是国内一个安全公司搞得,看 Github Repo 和官方文档像模像样的,虽然文档跟大多数中文项目一样,很多地方写的不够清晰,一些小细节没有跟最新的版本同步,但是**总体而言,可用,不难用。值得一试**
![Pasted image 20231218222249](https://blog-1301127393.file.myqcloud.com/BlogImgs/202312182326408.png)
## 使用体验
谈一谈我为什么选择使用雷池 WAF:
- 免费,开源 (这点存疑,没有详细审计过所有 submoudule, 目前看起来只有部分开源,仓库里大部分都是文档啥的。不过有有安全厂商实名,应该不会做出来一些自毁招牌的操作)
- 支持通过 `docker compose` 自部署
- 功能够用。基本反代站点配置SSL, 多种规则的黑白名单,频率限制,人机验证,攻击历史看板
目前已经使用了有几个月了,来谈一谈一些个人感受
优点:
- 又要免费,又要能自部署,又要有方便使用的 web 页面,目前这个好像是唯一能选的...
- 支持 `docker compose` 自部署,可以自行编排和自定义很多配置
- TOTP 认证,加分
- UI 简约清晰,加分
缺点:
- 有一些小 bug, 挺影响使用体验的,比如我最开始用的那个版本,那时候还不知道这个只能 TOTP 验证,又找不到地方和文档设置初始账号密码,但是进首页直接跳到了仪表盘,又一直刷报错。这种情况没登录就不应该显示仪表盘界面的,非常误导人,我还以为是强制开了 HTTPS 但是我没有上传 SSL 证书导致的后端请求一直报错。
- 开源了但是又没有完全开。人家企业做这个的本意是推销自家的收费套餐这个没毛病。但是请不要挂羊头卖狗肉影响不好。GitHub Repo 都是些文档内容,有个所谓的语义检测引擎倒是放了一点代码,但是这个代码量级太少了,像个玩具项目,不像是正儿八经投入使用的引擎的源码。看了下这个社区版本的文档之类的,从头到尾就没有提过怎么参与项目贡献代码,挂了个 GitHub 链接似乎只是诱导大家去 star, 这样好做宣传。合着这个所谓的社区版就只是部署了之后有个按钮,可以共享攻击记录的 ip?
- `docker compose` 写的方式令人费解。竟然需要在`.env` 文件中自定义一个内网网段,然后用 docker compose 的时候自动创建一个子网,每个容器根据子网的前缀指定了一个 ip, 然后其他容器连接都是在环境变量里写死....明明可以用 compose 文件里定义的 service name 或者 container name 作为 alias 使用内置的 dns 轻松实现的服务发现,为什么搞得如此麻烦?而且有没有考虑过,如果要更新,再执行 compose up 的时候,先前的子网 ip 是被占用的,每次还得先看一下当前用了哪些子网,然后找个没用的,这操作也是没谁了... 你说人家懂吧,他还通过 env 文件自定义 compose 创建的子网前缀,说人家不懂吧,用 container name 做 alias 自动实现服务发现这么简单的方式竟然不用。可能有安全或者性能方面的考量?不过我个人使用还是全部删掉了写死子网前缀的配置,这个使用方法真实太离谱了
- 目前只会记录疑似恶意的请求,正常请求不会记录,没法通过这个来看网站总访问情况了,有点可惜
## 安装部署流程
简单分享下我调优后的安装流程,不使用写死的子网前缀做服务发现。
### 1. 获取 compose 文件
官方文档默认提供的不是通过 `docker compose` 安装,而是他们的一个脚本。可能是为了照顾广大墙内被 CSDN "惯坏"的用户吧,脚本里除了基本的环境检测,主要是提供 docker 的便捷安装,但是怎么说呢...本意是给墙内用户便捷安装,但是为什么安装的操作还是到 docker 官方安装脚本,有没有一种可能,大部分大陆的服务器访问这个站点都很慢甚至连不上呢?但凡这里切一下 docker ce 镜像源都没这么离谱...
回到正题,这里还是大家通过 `docker compose` 安装。没安装 docker 的建议先去安装,有条件的可以直接按照官方文档来,[安装文档链接](https://docs.docker.com/engine/install/ubuntu/). 也可以参考我之前写的 RSSMAN 部署文档中 Docker 安装的部分,有讲解在国内环境下提前更换镜像源以更快完成下载安装。[Docker 安装-RSSMAN 部署指南 - RSS101](https://rss101.colinx.one/deploy/rssman-full-guide/#1-docker)
[RSSMan 部署指南](https://blog.colinx.one/posts/rssmanx%E5%AE%89%E8%A3%85%E9%83%A8%E7%BD%B2%E6%8C%87%E5%8D%97/)
之后获取官方最新的 compose 文件。文档里贴的链接是在离线安装的章节有个 compose 文件链接 https://waf-ce.chaitin.cn/release/latest/compose.yaml
当然也可以直接去 Github 找,在 release 文件夹下。https://github.com/chaitin/SafeLine/blob/main/release/latest/compose.yaml
之后需要按照文档指示,在 compose 文件同文件夹位置,创建一个`.env`文件,并填写相关的变量。这里推荐使用我调整后的版本。后续如果官方对于整个架构有更新,以官方的为准,可以自行根据需要调整 compose 文件。
```yaml
services:
safeline.manager:
container_name: safeline-manager
restart: always
image: chaitin/safeline-mgt-api:${IMAGE_TAG:?image tag required}
volumes:
- ${SAFELINE_DIR?safeline dir required}/resources/management:/resources/management
- ${SAFELINE_DIR}/resources/nginx:/resources/nginx
- ${SAFELINE_DIR}/logs:/logs
- /etc/localtime:/etc/localtime:ro
ports:
- ${MGT_PORT:-9443}:1443
environment:
- MANAGEMENT_RESOURCES_DIR=/resources/management
- NGINX_RESOURCES_DIR=/resources/nginx
- DATABASE_URL=postgres://safeline-ce:${POSTGRES_PASSWORD}@safeline-db/safeline-ce
- MARIO_URL=http://safeline-mario:3335
- FVM_MANAGER_URL=safeline.fvm-manager:9004
- MANAGEMENT_LOGS_DIR=/logs/management
dns:
- 119.29.29.29
- 223.5.5.5
- 8.8.8.8
networks:
- safeline
cap_drop:
- net_raw
safeline.detector:
container_name: safeline-detector
restart: always
image: chaitin/safeline-detector:${IMAGE_TAG}
volumes:
- ${SAFELINE_DIR}/resources/detector:/resources/detector
- ${SAFELINE_DIR}/logs/detector:/logs/detector
- /etc/localtime:/etc/localtime:ro
environment:
- LOG_DIR=/logs/detector
networks:
- safeline
cap_drop:
- net_raw
safeline.mario:
container_name: safeline-mario
restart: always
image: chaitin/safeline-mario:${IMAGE_TAG}
volumes:
- ${SAFELINE_DIR}/resources/mario:/resources/mario
- ${SAFELINE_DIR}/logs/mario:/logs/mario
- /etc/localtime:/etc/localtime:ro
environment:
- LOG_DIR=/logs/mario
- GOGC=100
- DATABASE_URL=postgres://safeline-ce:${POSTGRES_PASSWORD}@safeline.postgres/safeline-ce
networks:
- safeline
cap_drop:
- net_raw
safeline.tengine:
container_name: safeline-gateway
restart: always
image: chaitin/safeline-tengine:${IMAGE_TAG}
volumes:
- ${SAFELINE_DIR}/resources/nginx:/etc/nginx
- ${SAFELINE_DIR}/resources/management:/resources/management
- ${SAFELINE_DIR}/resources/detector:/resources/detector
- ${SAFELINE_DIR}/logs/nginx:/var/log/nginx
- /etc/localtime:/etc/localtime:ro
# - ${SAFELINE_DIR}/resources/cache:/usr/local/nginx/cache
- tengine-cache:/usr/local/nginx/cache
environment:
- MGT_API=https://safeline.manager:1443/api/publish/server
ulimits:
nofile: 131072
networks:
- safeline
ports:
- 80:80
- 443:443
safeline.fvm-manager:
container_name: safeline-fvm-manager
restart: always
image: chaitin/safeline-fvm-manager:${IMAGE_TAG}
environment:
- FVM_LOGS_DIR=/logs/management
- DETECTOR_URL=http://safeline-detector:8001
volumes:
- /etc/localtime:/etc/localtime:ro
- ${SAFELINE_DIR}/logs:/logs
networks:
- safeline
cap_drop:
- net_raw
safeline.postgres:
container_name: safeline-db
restart: always
image: postgres:15-alpine
volumes:
- ${SAFELINE_DIR}/resources/postgres/data:/var/lib/postgresql/data
- /etc/localtime:/etc/localtime:ro
environment:
- POSTGRES_USER=safeline-ce
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD:?postgres password required}
networks:
- safeline
cap_drop:
- net_raw
command: [postgres, -c, max_connections=200]
volumes:
tengine-cache:
networks:
safeline:
name: safeline
driver: bridge
driver_opts:
com.docker.network.bridge.name: safeline
```
### 2. 安装部署
部署成功后,第一次使用理论上会跳转到 TOTP 绑定页面。我之前这里卡到 bug, 第一次访问不是首页,没有看到那个绑定 TOTP 的二维码,后面就一直没法跳转到绑定页面了....不知道后面这个 bug 修复了没有,如果大家也遇到这个问题可以考虑全部清理干净,重新安装。
TOTP 软件推荐和对比:
- Microsoft Authenticator( 微软出品,支持云同步,国内可用,微软账户验证有单独的通道和验证方式,速度和体积一般)
- Google Authenticator (谷歌出品,简约好用,体积小速度快,可惜大陆地区没法云同步)
- BitWarden (支持使用自建实例,可惜 app 略卡)
## 总结
雷池 WAF 目前来看是一款够用,不难用的免费 WAF, 建议一试。
此外重要数据还是要经常备份,多副本 + 多地存储,数据无价!

View File

@@ -0,0 +1,252 @@
---
title: 我创作AI与网文小说
date: 2023-08-27
lastmod: 2023-08-27
description: 上周,我发布了一部网文小说作品。它的特别之处在于,这是一部 AI 高度参与创作过程的作品。今天我想来聊一聊创作AI和网文小说。
categories:
- 杂记
tags:
- 总结
- 杂记
- AI
- GPT
---
上周,我发布了一部网文小说作品。它的特别之处在于,这是一部我尝试的第一部长篇文字类作品,一部企图可以面向大众市场的作品,一部 AI 高度参与创作过程的作品。
今天我想来聊一聊创作AI和网文小说。
首先在小说达到五万字左右数量的节点先来概览一下这部作品。《决战核废水引爆的亚特兰蒂斯》这个故事包括一开始创作的动机其实都是我和朋友一时兴起想尝试下社会热点AI 创作工具,以及曾经一个阅文无数,一腔热血想书写自己的小说的少年之前,和另一个对网文知之甚少,惜字如金的软件工程师之间,到底能碰撞出什么样的火花。于是我利用调休和周末的几天时间,构建出了这样一部作品并正式上架了番茄小说的平台。
![Xnip2023-08-27_15-27-41](https://blog-1301127393.file.myqcloud.com/BlogImgs/202308272353573.png)
TLDR当前的 AI 工具尚且不足以完成整部中文网文小说作品,但是对于短篇偏纪实和科幻类已经能有比较不错的效果了。主要的挑战在于:
- 上下文。网文每章节动辄几千上万字,现有的大模型根本无法完整记录好超长的上下文信息,容易出现前后驴唇不对马嘴的情况。
- 中文优质语料的缺失。
- 大模型预训练时期人为添加的诸多限制
但是 GPT 的出现已经让我们看到了这种可能。相信不出十年AI 在超长上下文的文学创作能力就能有质的飞跃。
## 谈一谈使用的 AI 工具
在创作这部小说的过程中,主要用到了以下几个工具,在各自的领域都是代表性的存在,这里拿出来单独说一下。
**文生图模型:稿定设计-AI 绘图**
这次的封面图的底图就是采用 AI 绘制的,坦白说一开始我个人不是特别满意,不是我预期想象中的样子。但是对于这整个过程使用的时间来说,我觉得这个效率反而是最惊人的。一分钟不到,符合基本设定要求的底图生成好了。我再画三分钟添加个文字,摆一摆位置,一个基本元素完备,风格色彩合格的网文小说封面图就制作好了。相比较之下,听闻之前的类似出图都是以天级别计算的,费用甚至几百上千,这其中的效率差简直恐怖。
我之前也尝试过手动搭建 stable diffusion 在自己的 GPU 服务器上运行,用的 gradio 那个 web ui自我感觉良好出图的效果也挺不错。但是拿给非工科的朋友用上来就是吐槽界面怎么全是英文怎么那么多按钮该怎么启动该怎么写提示词怎么不会画中国风。有一说一那个时候的 AI 工具更像是一个工程原型机,而现在被稿定设计这样的 toC 平台引进做好本土化适配和产品化设计之后,使用上手出乎意料的简单。
**图片超分模型Upscayl**
图片超分这是一个起步较早的方向,门槛低,效果好,我是用它来对上述生成的封面图进行超分后降采样得到一个更加可用的画面,毕竟上面没交钱开会员只能用截图工具获取画稿 hhh
可以预先选择好图片的风格以获取更好的超分效果,比如原图是偏动漫插画类的,还是偏写诗类的。
**LLM 大语言模型Claude-2-100k**
![Pasted image 20230827234731](https://blog-1301127393.file.myqcloud.com/BlogImgs/202308272353574.png)
GPT 早已经火出圈了,但是之前由于上下文长度限制,其实并不能很好的作用于网文小说写作这种场景。尝试了一众 AI 模型LLama, Palm 这些因为对中文支持不友好所以排除名单。Claude-2-100k 综合使用下来是最合适的。可以在一开始给他说明好他的任务,是作家,然后再把故事背景和设定给他,后面就可以根据情节安排写出一段段故事了。
这类大模型是需要使用者通过不断调整 Prompt 才能发挥好的,比如让他写一段餐馆里的闲谈的场景,一开始会写的比较干,几句话描述下什么人,进到里面,坐下来,点了餐,吃了饭,干了什么事,走了。这种就很没意思。需要手动调教他,添加更多的环境描写,设定是在秋天,傍晚时分,温馨的环境,餐厅里面有什么,路人的神态是放松的,背景是本世纪初,对白偏生活化一点,诸如此类。很惊喜的是,它完成的很好,语言流畅自然,中文里一些高级的词汇和中文里一些口语化的描述,都能写出来。但是作为网文小说这种,就太死板了,目前看来写写严肃文学倒是很合适。
**LLM 大语言模型:彩云小梦**
Claude 和 GPT 说到底还是外国人训练的,对于网文小说这种题材,还是国内的公司做的更有那味。
产品从一开始就是为小说的场景而设计的。进来就会指引你填写世界观设定,风格选择等,续写风格可以选言情,玄幻,脑洞大开等等,看起来很有趣。实际体验下来,写出来的东西也确实很有网文那味,比如霸道总裁,玄幻武功,炼丹修仙,这个『中国特色文学体裁』那是信手拈来。甚至还会写擦边球。可以看得出来这个模型的确是用各种五发八门的国内网文小说训练出来的。
不过缺点也很明显,其底层技术应该是类似于 GPT3.5 的技术,主要问题是上下文太短,生成的故事没有连贯性,而且风格差异化太明显,经常跑偏。经常写着写着上一句还是霸道总裁的现代都市言情,下一段就斗气三段直接来到玄幻世界。还出现过前面一段是两人往事的叙事,转成霸道总裁风,然后两人调情没几句就直接变成讥讽和争吵,变成了一场战斗戏,再一转又是欲情故纵的调情擦边球戏。
不过总体来说,用来添加一些言情类的对白细节和玄幻类的战斗戏细节还是非常合适的。
## 当前 AI 创作工具的局限性
在使用 AI 创作这部小说的几天时间里,我最大的瓶颈,不是奇葩又烧脑的设定,不是新书上线缺乏积极反馈的一丢丢沮丧,也不是因为各个 AI 输出结果千疮百孔需要我人工救场时的懊恼,最大的问题,是白嫖额度到期。
没错,上面使用的平台,全部都是我白嫖的。即便他们都拥有可以加钱获得力量的会员方案,但在这个时间点,我还不想为了一本读者都没几个,收益遥遥无期的这么一个作品,甚至连完本都不能保证的作品去投入。毕竟这目前还只是一时兴起的一个玩具,还是想用一个更大众化的视角去看看当前 AI 技术在国内的发展和普及。
不过好在这些平台都很大方,每天都有免费额度,第二天就可以继续用了。这配额也一定程度上避免了我熬夜爆肝 hhh
这里就不得不提到当前 AI 普及和发展的一个大难题:算力要求。
这里不仅仅是这些大模型对运行的硬件规格要求高,目前在手机那样的平台上运行还是非常吃力。更重要的一点是,这些质量高效果好的模型需要更多参数,更多材料,更高规格的 GPU 去训练,更多个人和企业推送整个生态发展。而现在这些高端 GPU 而设计和制造技术都是掌握在美国科技企业手里,目前还有相关法案禁止出口先进制程的 GPU 到中国,国内高质量的材料也是少的可怜,生态更是无从谈起,各家都想自己搞自己的。国内本就不强的 AI 技术将雪上加霜。
国内前几年吹得牛逼哄哄的各种超算,各种国产芯片,在 AI 的浪潮前,似乎都没声了。国内外的 AI 技术和生态差距将被进一步拉大。不出意外的是,不久之后国内的 AI 就会落后于欧美一到两个世代。
下面再来探讨下这些国际领先的 AI 模型才需要考虑的,在这种内容创作场景下的一些局限性。
**第一:上下文**
这里并不单纯指的是上下文长度的问题,还有上下文形式的问题。
首先显而易见的,对于网文这种篇幅超长,水货超过的类型,现有的大模型的上下文长度还是不太够。短期来看,提高上下文长度可以很大程度上改善续写跑偏的问题。但是有些问题不是单纯增加这个长度就可以解决的。一个很明显的例子,就是伏笔。
挖坑,或者说埋伏笔,是文学写作过程中非常常见的一种手法。悬念的制造,气氛的推动,离不开伏笔。而且对于长篇幅的作品来说,伏笔的呼应可以强化作品的连贯性,让读者能够清晰地认识到,这些文字是一个整体,他们共同构建了这个作品。这对于网文小说更是尤其重要。
但是从目前我使用 AI 创作的体验来看,目前的 AI 完全无法掌控好伏笔。几乎全部都是需要我人工来盯着,并思考什么时候适合去挖坑和填坑,一个坑挖了又需要以什么样的方式把他填上。
另外一个问题是,这些伏笔,人物关系,概念设定等,很多时候他都并不是一个线性的结构,所以通过文字的形式作为输入放到上下文里其实都不是很合适。我个人感觉他们更像是网状的结构,但是这种模式似乎又与当前这些模型的原理和运行模式格格不入,就期待后续有没有使用网状结构信息训练和推理的模型出现了。
**第二:预训练时期人为添加的限制**
这一限制在国外这些大厂的 AI 模型上尤为明显,『政治正确』对他们来说太重要了。非常明显的体现就是,我要求 AI 构思一个反派角色,并输出人物的基本设定,以及往事的一些碎片特写。
但是 AI 返回的结果让我总是苦笑不得,说我们要保持正确的积极的价值观,同时不能对性别,种族,外貌等方面有任何的歧视。而且对环保还有 happy ending 有着莫名的执念。举例来说的话就是一个反派有这黑暗的过往后来成为了故事中的反派烧杀抢掠破坏环境最后迷途知返众人谅解the end.
这些限制不仅仅使得 AI 在构思故事时,尤其是反派或者一些消极的事物时缺乏真实性和张力,此外也是的故事中的很多人物缺乏性格。男主就是男主,女主就是女主。关键情节上戏份谁多一点谁少一点罢了。
相较之下,国内的 AI 在处理人物性格这个问题上就太过极端。以彩云小梦为例,写出来的男性任务,要么就是霸道总裁,要么就是童年悲惨,后来灵力爆棚;女生呢要么是冷淡的御姐,要么就是看起来古灵精怪故作娇羞其实前言不搭后语的神经病。从体验的结果来看,倒是非常符合我对国内网文的刻板印象呢。
作为对比,就几个我认为人物塑造上很有特色的几个例子。
- 一个就是最近看的《阿基拉》,铁雄在一个孤儿院长大,处处被大哥一般的金田保护着,使唤着,在他面前,铁雄似乎永远是个长不大的弟弟。他向往着金田那酷炫的红色摩托座驾,几次试图驾驭他却失败闹了笑话。后来机缘巧合下被改造获得了超乎常人的力量,也成为了乱世里麻木,愤慨的民众敬仰和追随的救世主,神明。铁雄获得力量,在一次慌乱恐惧的半梦半醒的战斗中,意识到自己的强大后,进行了一番发泄,暴击了追赶而来的武装部队。对追赶而来的金田等人,他的第一反应是再也不是小弟了,现在换成铁雄保护他了。后来他的反应不是对所有欺负过自己的人复仇,也不是什么圣母拯救世界。不知道是出于害怕还是好奇,他继续追寻着终极的力量,阿基拉。后来追寻阿基拉成为一场空,在一片废墟上,双方战斗有来有回,这段给我的感觉,甚至不像是少年打败怪兽,更像是两个童年玩伴之间,想象自己化身超人后的嬉戏。后面铁雄身体里的力量不受控制,他变成一个肌肉组织疯狂增生甚至吞噬女友的巨型肉瘤怪兽后,又一次向金田发起了救助『救救我』。
- 科幻巨著《三体》,动画作品《我的三体》里,对于章北海这个人物的刻画也很有意思。一个从海军时代走到太空军时代,意志坚定,正义凛然的军人,为了保卫人类文明,为了应对无处不在,封锁人类科技的质子,章北海对整个世界封锁了自己的内心,坚定他的信念。跨越了几个世纪,在他冬眠几百年后醒来,三体的探测器水滴第一次到达太阳系与人类文明接触前夕,章北海利用他代理星际舰长的身份,带着保卫人类文明的使命,带着整艘星舰以最大速度脱离了太阳系,向着无尽星辰大海远去。他深知人类文明在三体世界的技术面前毫无还手之力,他拼尽全力,为人类文明留下一个火种。后面假装追击叛逃者章北海,实则心有灵犀,志同道合的褚岩舰长等也与其汇合。但是在资源储备不同的情况下,四只舰队不得不自相残杀争夺所剩无几的资源以支撑长途的星际航行。这场战斗中章北海以释然的心态交出了这个接力棒,由之前与他素未谋面不曾相识的褚岩舰长,作为他的精神延续来完成这个延续人类文明火种的使命。
这两个人物塑造都很有意思,风格迥异,不落俗套,却又富有戏剧张力,而且透露出作者对生活和人性的观察,有独特的人文温度。
而这样的人物塑造,不仅现阶段的 AI 无法直接达到甚至作为创作者给定故事大纲和发展脉络AI 都很难写出对应的契合特定作品风格和人物个性的文字。
当然上面拿文学上获得高度评价的作品来欺负现阶段不够成熟的 AI 有点不够意思。但即便对于网文,要写出让人印象深刻的角色和情节,只有这么几个脸谱化高度同质化的画像,我觉得是几乎不可能的。如果要写流水账形式,刻板印象的,没有太多要求的工业流水线作品,我觉得目前还是有这个可能的,不过需要足够好的模型能力和预训练作为基石,再加上创作者对 AI 模型和提示词的了解才行。这个想必在未来两到三年应该就会有突破,到时候市面上这些高度同质化的小说只会更加泛滥。
## 浅谈字节与番茄小说
![](https://blog-1301127393.file.myqcloud.com/BlogImgs/202308272353572.png)
番茄小说的产品的月活,营收之类的我在此就不再过多赘述,大家有兴趣的可以去找些商业分析报告看看。这里主要探讨的是,他作为字节旗下的产品,身上有这哪些字节的影子,又有这什么独特的优势和产品策略?
首先,和头牌产品抖音一样,番茄小说是一个 UGC 的,重流量,数据,反馈和推荐算法驱动的这样一个产品。
说起推荐算法,很多人都会觉得 AI 这一块国外技术这个牛批,为什么抖音这种模式首先在国内流行起来,后来又席卷国外互联网。
这里有几个抖音发家致富很重要的因素,推荐算法需要大量数据做训练,相较于奈飞这样的长视频流媒体平台,抖音的短视频在相同时间内能够采集到的用户的反馈数据是前者的几十上百倍。数据量有了,训练算法的模型也就更精准了,用户得到的反馈越来越积极,在内容制造者层面和内容消费者层面都开始扩张开来,越来越多的流量,越来越多的用户反馈数据,越来越好的算法,越来越好的用户积极反馈,越来越多的内容创作者涌入,这个商业飞轮就运转起来了,而且转的越来越快。
在这一点上,番茄小说师承抖音,在这条正反馈链路上也是做的很好,小说免费,叠加头条的引流,大家都跑过来看,用的人多了,反馈数据有了,推进更精准了,反响更好了,更多的写作者入驻,内容多了,整个盘子越来越大,越来越好。
除此以外小说作为当代国内文娱领域一个重要组成部分IP 也是一个非常重要的资产。每本小说都会在两万字的时候有一个跟番茄签约的流程,签了,就能获得被搜索推荐的资格,获得平台分成,不签,对不起啥也没有。签约之后 IP 相关的内容肯定是要被平台买去了的,具体作者能分到几个点吗。。。那就是另外一个故事了。
这一点跟腾讯阅文集团的布局是一样的流量IP影视和周边。这些大体都是同一套商业逻辑。不知道其他平台怎么样番茄应该是非常注重反馈数据的那一个了更新频率完读率互动活跃度等等各种指标来考核作者整的比上班还累。
不过总体来说,番茄和字节整个的这个商业逻辑和发家致富历史还是很值得我们去学习的。尤其是这个恐怖的飞轮,一旦转动起来,就是能以势不可挡的架势冲击大半个互联网。
## 创作历程分享
平心而论,我认为自己一直都不是,也无法成为一个优秀的文字工作者。也许我可以写出中学时期那些所谓的辞藻华丽,立意高深的『好』作文,也许可以写出一篇简洁,严谨的工作文档。但是我知道,这里面缺乏温度,缺少灵魂。见过真正有人文关怀,突破天际的想象力,性格迥异却又充满戏剧性张力的人物故事,见过那些有天赋的作者和同学,我觉得有些东西就是需要天赋,没天赋就是没天赋,可能终其一生都赶不上。
如果我要写一个故事,可能最多也只是一篇平平无奇,逻辑上通顺,偶尔有那么几个脑洞,大部分时间都只能在前辈的影子下拙劣地模仿的一个故事。
在创作这部甚至不能称为作品的作品中,我的大部分时间也都是在构思一个试图有些新鲜东西的『合理』的情节,补充各种细节和设定,挖坑,填坑,水字数,调整 AI 生成文本中的 bug。
不过也不是完全没有收获,在尝试使用 AI 创作整个小说的时候,我大概掌握了一些技巧。比如设定要预先给 GPT 定好,情节的节奏和衔接还是要亲自把控,但是一些细节可以让 GPT 代劳,这个真的很有用,(尤其是对于需要大量水字数的网文小说)
比如让 GPT 写一段餐馆里众人围着小电视机的日常对白。
> 街道上行人并不多,都是些步履匆匆的上班族,或悠哉散步的老人。秋阳从树隙间洒落下来,洋洋洒洒铺满了整条街道。路边的建筑不是传统的日式木质结构,而是夹杂着些西式的红砖或水泥房屋,显得格调混杂却又和谐统一。
>
> 这是一条看似平凡却让人感到亲切温馨的小街道,没有太多喧嚣与烦扰,却处处透着人情味。林凡和明石正要开始一段充满未知冒险的旅程,这家小餐馆像一个温暖的港湾,让疲惫的身心得以喘息。
>
> 两人兴许不知道前方有怎样的险阻在等待,但是此刻,享受这份静谧与温情,已经足够。
>
> 小餐馆的电视上,又在播放着新闻。
>
> “天呐,蔬菜价格又要涨价了!”一个头发花白的老奶奶放下碗筷,双手扶额无奈地说。
>
> “是呀,最近物价飞涨,生活费用压力太大了。”旁边一位白胡子老头也叹了口气。
>
> “就是有证据显示这起事件有阴谋!”那名中年男子神秘兮兮地小声说。
>
> “天哪!这也太可怕了。”老奶奶捂住嘴巴,一副震惊的表情。
>
> “唉,真不知道这社会要到什么地步。”老头叹道。
>
> 电视上又切换到了其他新闻,几名上班族模样的青年男女也加入了讨论。
>
> “诶,你们看,股市又跌了!”一个男生着急地说。
>
> “最近经济形势越来越不景气啊。”一个女生也愁眉苦脸地说。
>
> “工作这么辛苦,钱还是省不下来,年轻人现在日子没指望了。”另一个男生一脸失望。
>
> 三名年轻人叹息连连,满脸忧虑之色。这时,电视画面跳转到了娱乐新闻,几名艺人的花边新闻占据了荧屏。
>
> “来来来,看这个,明星的绯闻啦!”一个女生眼前一亮,话锋一转。
>
> “嗨,这些娱乐新闻才叫有意思。”另一个女生也来了精神。
>
> “工作那么辛苦,看点这些解压解压嘛。”一个男生笑着说。
>
> 三人又投入到了对明星私生活的讨论中,烦恼的表情一扫而空,兴奋地指点着电视画面。
>
> 林凡和明石面面相觑,感慨百态人心,千头万绪,便也没去打扰他们继续闲聊。
还有一些人物对白类的,写起来很麻烦的,也可以让 GPT 代劳水字数。
> 他们一边在海上漂流,一边在研究这片海域的变异生物,寻找着这个世界的根源。他们的进展很顺利,在几天之后,他们终于查到了一些蛛丝马迹。一处人迹罕至的海岛上,有一座奇怪的建筑。
>
> 在研究中心的顶楼,一个房间的窗户被打开,里面站立着数十名科学家。这些科学家都身着白大褂,戴着墨镜,一副严肃冷漠的表情。他们正在进行一项实验。
>
> 在林凡和明石的监视之下,他们在实验台上摆弄着一块金属板。这块金属板通体呈现黄铜颜色,表面光滑如镜。
>
> 一位穿着白大褂的科学家拿着一把匕首,匕首微微泛着幽蓝的光芒。
>
> 不知为什么,林凡看到这个光芒第一个想起的是明石。
>
> 匕首插进了那块金属板。金属板的表面顿时出现了一阵阵波纹,波纹越来越大,最后化作一张人脸出现。
>
> 林凡看着这张诡异的人脸,心脏不由自主地加速跳动,呼吸急促,额头渗出细汗,双腿忍不住微微发抖。
>
> "你在害怕什么?你是不是害怕这块金属板上有一张狰狞的人脸?"
>
> 科学家的声音响起,让林凡清醒了过来。他看着林凡,露出一丝嘲讽的微笑:"害怕什么?你在害怕这块金属板上的人脸是假的?哈哈!你真幼稚啊!"
> "你在胡说八道些什么!"林凡怒声反驳,"你们的实验已经失败了,现在我们就能证明它不是真的!"
>
> "证明?怎么证明?"科学家冷哼一声,"如果这块金属板上没有人类的话,你认为你有资格跟我们谈条件吗?"
>
> 林凡愣了愣,一时语塞。这个时候,明石走了过来,"我们已经找到了这个实验的关键,我想我们应该跟他们谈判一下。"
>
> 他们跟着科学家走到了那个办公室里。那里坐着四个人,分别是两男三女,男人的年纪约摸四十岁左右,看上去有些阴郁,眼睛里透露着一抹狡黠的寒光。女人的年龄比较大,约有七十多岁,头发花白,脸上的皱纹深邃。男人看上去三十多岁,皮肤黝黑,眼眸深邃。三女中有两个看上去年龄稍微小一点的女孩,大约只有十六七岁,但是却穿着一套白大褂,一看就像是医院里的护士装。
>
> "你们是谁?想干什么?"其中一个男人开口问道。
上面这两段文字,前面一段是 Claude 生成的,后面这段时彩云小梦生成的。可以看出有这非常明显的风格差异。
Claude 生成的很『正确』,前后通顺合理,但是总感觉没那味,像是先生成的英文再翻译过来一样,而且感觉很平淡,里面的每个人物,换成男人女人,大人小孩,感觉都没有什么不会有什么违和感。
彩云小梦生成的相较而言就很『疯癫』,写的一长剧情上就容易出 bug而且动不动就『冷哼』『嘲讽』情绪波动倒是有了不过总感觉全是国内网文的套路化应该是国内网文看多了吧也怪不得人家的模型 hhh
![一副 AI 创作的插图](https://blog-1301127393.file.myqcloud.com/BlogImgs/202308280001121.webp)
## 关于创作欲
最后的最后,来聊一聊『创作欲』这个东西。
马斯洛需求层次理论模型
人的需求分成**生理需求**、**安全需求**、**归属与爱**、**尊重需求**和**自我实现**五个层次。需求是由低到高逐级形成并得到满足的。
创作这件事正是最高的那一层,自我实现的层次。
创作这件事,其实并不是单纯指的是创作小说,音乐,电影等。我个人理解,他应该是一种更广义的,自身能力参与建设最终使得一样事物变得独一无二。至此,个人的价值得到了体现,收获了『心流』状态的正向反馈,『归属感』的反馈,以及这一件事物变得独一无二带来的价值的提升。
举例来说,写代码是一种创作,摄影是一种创作,唱歌是一种创作,某时某刻你在朋友圈留下一段自己的文字,也是一种创作。
『我』的参与,让这个事物变得独一无二。『我』的沉浸,给我带来积极的反馈,『我』创作的作品,属于我,有一种归属感。
我在给自己的年度目标中,也把中大型创作作为我的指标之一。我觉得首先无论结果时好时坏,我很享受创作的过程。就比如本文开头提到的这本小说,以及前段时间制作的『铃芽之旅』中日粤三语 MV花了很多时间和精力但是并不会觉得累反而会觉得很有成就感甚至是反向充电。也许这就是『为爱发电』的魅力吧。
## 畅想
时代的发展技术的更迭让我们有机会去尝试和实现我们的祖辈做梦也想不到的东西。当前AI 作为创作的辅助工具尚且处在初级阶段AI 绘图AI 写小说AI 写代码,都还只是高度场景化,模板化的一些应用。也许未来的某一天,让我们可以真正地,从脑机接口将我们的想法输入到 AI通过 AI 进行解读和艺术加工。到那个时候,创作的权利,属于我们每个人。人类世界会变得更好吗,我不知道。但是我期待未来的某一天,我能够通过这种方式,记录下脑海中的旋律,梦境中的画面,以及记忆中的故事。

View File

@@ -0,0 +1,152 @@
---
title: 来谈谈日志集中管理方案 - syslog 是你的好伙伴
date: 2024-10-13
lastmod: 2024-10-13
description: 身为一个数码宅,家里总是会有越来越多的数码设备,智能化的设备多起来,总是难免会遇到各种各样的问题,排查问题的时候日志就很重要了,对于一些偶发的 case, 比如偶发网络卡顿,能够看到足够完整清晰的日志,就很方便了。
categories:
- 技术
tags:
- Linux
- NAS
- OpenWRT
- Docker
---
身为一个数码宅,家里总是会有越来越多的数码设备,智能化的设备多起来,总是难免会遇到各种各样的问题,排查问题的时候日志就很重要了,对于一些偶发的 case, 比如偶发网络卡顿,能够看到足够完整清晰的日志,就很方便了。
对于一些低功耗设备,比如路由器,其磁盘资源很紧张,日志通常不会保存很久。这个时候要排查一些偶发的持续时间长的小 bug 就很头痛了。好在 openwrt 原生就支持将日志通过 syslog 协议发送到远程服务器。不过看了一圈,发送是发送过去了,但是看日志还得命令行一个个看,要想有个方便的地方看的话就得上 ELK 那一套非常繁琐且吃资源的那一套,我的需求是这样的:
- 免费,可以持续使用
- 能够通过 syslog 协议收集日志
- 能够自部署最佳,但是不希望是 ELK 那种繁琐且非常消耗资源的
- 有个 web 界面能方便的查找日志
- 能够配置监控,那样的话如果设备有 fatal 日志我可以立即知道
搜寻了一番,发现有个 datalust 公司出的 seq 看起来挺不错,在自己服务器上部署了一套,完美符合我的需求,分享一下。
seq 不仅支持 syslog, 还支持程序主动上报、采集容器日志等很多功能,这里只主要围绕 syslog, 收集各种终端设备日志做介绍
![Pasted image 20241013170403](https://blog-1301127393.file.myqcloud.com/BlogImgs/202410132128864.png)
![Pasted image 20241013170340](https://blog-1301127393.file.myqcloud.com/BlogImgs/202410132128865.png)
## 安装:通过 docker compose 部署 seq
首先生成下默认密码,这里需要通过程序自身的指令生成明文密码对应的密文才行。比如我这里指定初始密码的明文为`initP@ss`, 运行这个指令,就会输出对应的密文,这个待会部署的时候需要使用
```bash
echo 'initP@ss' | sudo docker run --rm -i datalust/seq config hash
QE6k2bZLWkh7BwWYRNsG3h9sZPcLskSLKJGii4mvU0rsDyN0/UqW1TwEZp43O09wvOCjbOgswZxHX7FeNo05cfiv3KkB8/q/Msj8nlXL4TGd
```
之后通过 docker compose 进行部署,下面为 compose 文件示例
```yaml
services:
seq-input-syslog:
image: datalust/seq-input-syslog:latest
container_name: seq_syslog_input
depends_on:
- seq
ports:
- "20014:514/udp" # 接收 syslog 协议请求的端口,这里配置的是 20014, 可以自定义,后面需要用到
environment:
SEQ_ADDRESS: "http://seq:5341" # 要转发到主程序进行处理,端口为默认的 5341, 不用改
restart: unless-stopped
seq:
image: datalust/seq:latest
container_name: seq_log
ports:
- "20054:80" # web ui
environment:
ACCEPT_EULA: Y
SEQ_FIRSTRUN_ADMINPASSWORDHASH: QE6k2bZLWkh7BwWYRNsG3h9sZPcLskSLKJGii4mvU0rsDyN0/UqW1TwEZp43O09wvOCjbOgswZxHX7FeNo05cfiv3KkB8/q/Msj8nlXL4TGd # 这里填写刚生成的密文
restart: unless-stopped
volumes:
- /data/seq-data:/data
```
之后执行 sudo docker compose up -d , 顺利的话,在配置的 web ui 端口,就可以看到管理台了。默认账户为 admin, 密码为刚才设置的密码的原始明文。
## 使用syslog 配置
基本上所有 Linux-base 系统都支持将系统日志通过 syslog 协议发送到远端服务器。我手头主要的 openwrt 路由器、运行 truenas 系统的 nas、树莓派上跑的 debian, 以及其他 linux 云服务器都可以无缝接入,这里简单介绍下
### openwrt 配置远程 log
在 system -> system 菜单下,有个 logging 的 tab, 里面配置好服务器 ip、端口就可以使用了。协议记得选 udp
![Pasted image 20241013165852](https://blog-1301127393.file.myqcloud.com/BlogImgs/202410132128867.png)
### truenas 配置远程 log
在 system setting -> advaned -> syslog 菜单下,配置远程服务器地址和端口,协议选择 udp, 保存就可以了
![Pasted image 20241013171725](https://blog-1301127393.file.myqcloud.com/BlogImgs/202410132128868.png)
### linux 服务器配置远程 log
大多数 Linux 发行版已经预装了 rsyslog。可以通过以下命令检查是否已安装
`rsyslogd -version`
如果未安装,可以使用以下命令安装:
```bash
# Debian/Ubuntu:
sudo apt update
sudo apt install rsyslog
# CentOS/RHEL:
sudo yum install rsyslog
```
步骤 2配置客户端的 rsyslog
编辑 rsyslog 配置文件:打开配置文件进行编辑,通常位于 `/etc/rsyslog.conf``/etc/rsyslog.d/` 目录下。
```bash
sudo nano /etc/rsyslog.conf
```
添加远程服务器配置:在文件末尾,添加以下行以指定远程服务器的 IP 地址和端口(默认是 UDP 514 或 TCP 514
```conf
*.* @remote-server-ip:514 # 使用 UDP
*.* @@remote-server-ip:514 # 使用 TCP
```
这里我们需要使用 udp 协议的。
将 remote-server-ip 替换为远程 Syslog 服务器的实际 IP 地址或者域名,保存并关闭文件。
比如
```conf
*.* @syslog.myserver.com:20014
```
步骤 3重启 rsyslog 服务
在进行更改后,重启 rsyslog 服务以应用新配置:
```bash
sudo systemctl restart rsyslog
```
## 其他配置
### 配置日志定期清理
默认情况下,是没有配置日志清理规则的,时间一长服务器硬盘可能直接满了,所以这里一定不要忘记配置自动清理。在菜单里的 retention 可以配置过多少天删除
![Pasted image 20241013170659](https://blog-1301127393.file.myqcloud.com/BlogImgs/202410132128869.png)
![Pasted image 20241013170654](https://blog-1301127393.file.myqcloud.com/BlogImgs/202410132128870.png)
### 配置告警通知
各种通知渠道的支持是通过插件形式提供的,在 设置里可以自行安装。可以支持 email、http webhook, 钉钉机器人、telegram 机器人等多种渠道。
[插件市场链接](https://www.nuget.org/packages?q=Tags%3A%22seq-app%22)
---

View File

@@ -0,0 +1,104 @@
---
title: 浅谈如何获得满血版互联网体验
date: 2023-12-30
description: 众所周知,国情所限,大家基本都是局域网玩家。在 AI 爆火的 2023, 我们甚至输在了起跑线上……GPT 不对大陆地区开放,普通银联卡无法注册,甚至有代理都不一定行。受够了二等公民的气,这篇文章来结合我自身的经历和经验探讨一下,身为互联网二等公民,我们缺失了什么,身在墙内如何通过一些手段,获得满血版互联网体验 🕶️
draft: false
categories:
- 指南
tags:
- AI
- Apple
- Google
---
众所周知,国情所限,大家基本都是局域网玩家。在 AI 爆火的 2023, 我们甚至输在了起跑线上……GPT 不对大陆地区开放,普通银联卡无法注册,甚至有代理都不一定行。受够了二等公民的气,这篇文章来结合我自身的经历和经验探讨一下,身为互联网二等公民,我们缺失了什么,身在墙内如何通过一些手段,获得满血版互联网体验 🕶️
**TLDR - 你需要解锁以下技能 (按照难度和依赖排序):**
- 解锁基础版盾构机,能访问 Google 等站点
- 解锁进阶版盾构机,海外 VPS, 可以玩一些进阶的操作,比如 Google Gemini 的话普通 HK 的 🐔 都是不行的,如果你有新加坡的 VPS就可以转发一下解锁 Gemini
- 解锁海外平台的账号,常用的有 Gmail, 美区 App Store, X(原 Twitter) 等
- 解锁基础版海外支付,国内银行的支持外币支付有 Visa/MasterCard 标的,可以美区 App Store 付款购买 App 等
- 解锁进阶版海外支付,无外汇限制,可以自由出入金,外币交易无障碍
- 解锁可长久持有的海外手机号,很多平台都会通过手机号来决定你可以使用哪个地区的服务,重要性毋庸置疑。可长期持有是个重难点,不过在解锁上面的能力之后这一步稍微花点心思都能达到
## Level 0: 局域网和互联网差一个 Google
🌍 **新手村 BOSS: Google**
GFW List 成百上千,但是最具代表性的就是 Google. Google 在国外影响力之大,导致你可以在很多平台上看到,外国友人听说大陆地区不能用 Google 都表示无法理喻。不过解锁了 Google 你也就基本解锁其他 GFW List 里所有的项目
**基础版:**
通过各个奇怪的网站和搜索内容触发`VPN``海外加速``外贸电商助手` 等关键词,或者身边有朋友在用相关工具的找人家要一个安装包,然后先随便找一个试用,速度和可用性先不用关注,解锁 Google 后,你就可以自由的所有其他的产品,你可以挑选速度快,节点多,服务好,质量高,价格实惠的其他产品了。这里主要是有个鸡生蛋蛋生鸡的问题,只有通过某个突破点先能访问 Google 才能自由搜索其他的产品
**进阶版:**
购置一个海外的服务器然后自行部署安装相关配套工具。这里服务商可以自行选择国内厂商的可以作为跳板但是不适宜长期使用。海外的搬瓦工Vultr 等服务商都比较著名,不过价格偏贵,这些后期都可以慢慢比较选择。
部署的话2023 年 Clash 已经删库跑路,这里推荐 **singbox**, 支持的协议众多,性能也不错,还有官方的 android, ios 客户端 (免费,划重点,隔壁小火箭虽然好用,风评也挺不错,但是需要付费,淘宝虽然很多卖的不过这里自行斟酌)
如果家里,实验室等长期固定位置使用的话,建议通过旁路由方式接入,更为方便便捷。很多代理软件都支持 TUN 模式模拟出一个网关,只需要把局域网中设备的网关地址修改指向它即可,非常方便快捷。还可以通过修改 DHCP 设定,所有设备默认连接到该网关,无缝接管网络流量,解锁海外网站。
## Level 1: 平台为王,你需要账号作为敲门砖
📒 众所周知,各个~~国家都有各个国家的国歌~~ (bushi) 平台都有各个平台的账号,很多小的产品和服务会选择通过依附于某些大平台的账号,减少开发适配成本,降低用户使用门槛等等。一些外网冲浪必备的平台账户:
- **Gmail 账号**: 这个不仅仅是 Google 账号,邮箱也是必备品。很多海外的产品都是不认国内的邮箱的,有个 Gmail 账号会方便很多。不过近些年注册难度提高了,可能需要找些攻略突破一下
- **美区 App Store 账号,** **美区 Google Play 账号**: 很多 App 都是不在国区上架的,想用就必须到美区才能下载到。大多数时候这里注册需要生成虚拟海外地址,以及接码平台做一个临时的验证,不过总体难度不大。
- X(原 Twitter) 账号Facebook 账号Instagram 账号Telegram 账号等一些流行的社交平台外网冲浪必备。这里按需去找攻略注册即可。不过要注意尽量不要在一些敏感问题上发言不然容易被查水表。THE BIG BROTHER IS WATCHING YOU!
## Level 2: Shut up and take my money
💰 海淘,买游戏,买 App, 这些都需要你有外币的卡可以进行这些交易
这里一般去找个银行开一张支持 Visa/MasterCard 的外币卡即可,借机卡或者信用卡都行,这里简单谈一下可选项以及个人办卡的一些经验。
- 中国银行的汇率应该是比较优惠的一个了,可以去办一个他家的 Visa/MasterCard 借记卡或者信用卡。App 里提供信用卡的申请,过了的直接邮寄到家。如果非常担心盗用盗刷或者单纯不想用信用卡的话,可以去申请借记卡。不过这个得去线下申请,而且一般级别比较低的网店也搞不了需要去分行。即便如此也最好提前打电话问一下可不可以办,以及有哪些种类和卡面。避免白跑一趟
- 无论办哪家的,办信用卡还是借记卡,**要确认清楚收不收年费,年费多少**. 很多活动推销说的免年费都只是首年免年费,或是消费达到多少笔,达到多少金额然后给你免下一年的年费。这里我们办的境外卡可能没法稳定的进行消费,消费满多少多少,所以一般要主要好年费的问题。有一些种类是基本上一直面年费的,可以留意下。
- 小红书B 站也有很多博主分享各家银行,各个卡种的区别和使用体验,可以了解下。注意部分活动有时效性,留意博主发布的时间
- 信用卡到手最好限制下额度,避免一些不必要的麻烦。各大银行的 App 都可以设置,甚至如果使用频次很低可以用完先锁卡
国内银行开的外币卡都是要受外汇额度限制的,可以考虑办外资的卡。这里简要介绍几个比较容易获取到的类别
**类别一:肉身去香港办理外资银行实体卡**
汇丰,中银香港,招商永隆,渣打银行,新加坡南洋银行等都是不错的选择,其中:
- **中银香港**是中国银行的,最大的优势就是同名账户转账没有杂七杂八的手续费克扣,经常需要跨境转账的可以考虑。
- **招商永隆**申请门槛相对较低,只需要提前在单独的 App 上填写申请资料,如果审核通过了你就可以去香港任意一家招商永隆的网店面签认证,即可当场下卡。这个好处就是你是在确定可以下卡的情况下再去香港,避免出现当天现场办卡没通过审核,开不了户拿不了卡的情况。额外注意招商永隆这个是对存款有要求的,卡里面没能持续保持至少一万港币的余额是要收年费的
- **汇丰**, **渣打**, **南洋**等都是外资银行,相对来说比较独立不过审核也会更严格些,如果是专程去香港办卡最好不要在一棵树上吊死,提前准备 plan b, 避免一张卡都办不下来的尴尬局面。
**类别二:肉身去香港顺带办理虚拟银行**
虚拟银行顾名思义就是没有实体网点的银行,好处就是高度数字化,很多流程手续都可以在线下完成,少了很多繁琐的步骤; 而且没有了线下网点的开支,一般他们的优惠力度啥的也会更大。除此之外他们的开户门槛也会低不少。香港有几家虚拟银行比较受欢迎,据说本地都有很多人日常在用。比较受欢迎的有**众安银行**(ZA Bank), **理慧银行**(Livi Bank), **Mox Bank**, **天星银行**, **蚂蚁银行**的,这些后面基本都有国内的一线科技企业如腾讯,蚂蚁金服,小米,京东参与投资,或是背靠传统实力雄厚的传统银行,如渣打银行,中银香港等。即便如此还是不建议作为主力账户存放资金,毕竟哪天人家要是跑路了或者是强制破产了,你的钱不一定能全拿回来。
这些虚拟银行一般申请都比较简单,审批也不会卡的很严。你在 App 上直接提交申请,填写相应资料,然后后台自动给你审核。不过因为政策法规的限制,你必须人在 HK 内,用的当地的 IP(手机流量,公共 WiFi 都可以), 才能正常走申请流程。
**类别三:在家线上办理虚拟信用卡**
DuPay, NodePay, OneKey Card 等专门搞虚拟信用卡的平台都是支持线上认证直接开卡的,不过这些有的充值渠道有限制,需要 USDT 加密货币才能转入不支持人民币直接转入,还有的需要月费年费,还有各种交易手续费,这些就见仁见智,各取所需了。这类门槛低,使用方便,可靠度也是最低的,像 OpenAI 之前大规模封过一波虚拟银行卡,上述这些账户都会被拦截了,相对而言传统的银行和有实体卡的那些账户就要稳不少。
此外像 Wise 这类换汇平台在某书上也是挺火的,可以开虚拟信用卡,服务质量也有保证,不过默认不对大陆地区开放服务,得曲线救国,这个感兴趣的可以自行搜索攻略。
## Level 3: 手机号 与 Duck Typing
> 如果一个东西走路像鸭子,叫的也像鸭子,那它就是一只鸭子
📱 当代互联网世界中,手机号几乎就是最通用的身份认证 id. 如果你有新加坡节点的梯子工具,有新加坡的手机号码,那么你就是一个新加坡用户,你就可以解锁所有新加坡地区的互联网服务。
这里的主要难点
- 需要先解锁海外支付技能
- 很多找到可以保号,保号成本低的运营商和套餐
- **需要找到支持在大陆激活**, 能在大陆长期漫游且能收到短信的运营商和套餐。很多淘宝卖的旅游流量卡,那种都是要在目标地区才能激活和使用的
- 所在地区最好限制比较少,能解锁尽可能多的服务 (如 HK 的解锁不了 GPT), 最理想的 OpenAI, Tiktok 等都要能解锁
- 最好不要是虚拟号码,不然很多平台会受限制
这里给几个参考,可自行搜索攻略选购
- Giffgaff 英国的
- haha SIM, club SIM ,香港的
- UltraMobile 美国
- Knowroaming 加拿大一家公司的
- Piranha Mobile 英国的
鉴于有些套餐并不是长期开放,政策也一直在变,一些详细套餐配置和购买途径,保号方式等此处不再详述
## 结语
总的来说,梯子节点,海外信用卡,海外手机号这三个都集齐了,你基本就可以畅快体验满血版互联网了。当然更直接的方法是肉身翻墙 hhh. Anyway, 希望各位都能生活在一个开放,互联,自由的互联网,而不要被被迫做互联网的二等公民。

View File

@@ -0,0 +1,49 @@
---
title: 解决安装 Plex 时无法进入安装页面的问题
date: 2023-12-31
description: 近期在部署 Plex 的时候死活找不到安装初始化的页面,看了几遍安装文档和官网的流程,都没找到问题在哪。后来 Google 了一圈才意识到自己这次不是局域网环境部署Plex 为了安全性考虑,每个新实例的安装部署页面是只对局域网访问的 IP 开放的,甚至不是全部局域网 IP, 只有本机 (Localhost). 这里简单记录下排查和解决的流程,其他朋友在这块可以少踩些坑。
draft: false
categories:
- 指南
tags:
- Plex
- Linux
- SSH
- Docker
---
Plex 是一款非常好用的影音库,可自托管,支持 Web, 颜值在线。近期在部署 Plex 的时候死活找不到安装初始化的页面,看了几遍安装文档和官网的流程,都没找到问题在哪。后来 Google 了一圈才意识到自己这次不是局域网环境部署Plex 为了安全性考虑,每个新实例的安装部署页面是只对局域网访问的 IP 开放的,甚至不是全部局域网 IP, 只有本机 (Localhost). 这里简单记录下排查和解决的流程,其他朋友在这块可以少踩些坑。
问题页面如图所示,正常来说新 Plex 服务器是要设定电影资料库,电视节目资料库的文件夹位置,绑定 Plex 账号等。官方文档和其他人的流程都大致如此。但是我访问这个新 Plex 实例对应的初始化 URL, 进来怎么也找不到配置文件夹位置的入口。
![Pasted image 20221216213737](https://blog-1301127393.file.myqcloud.com/BlogImgs/202312312254779.png)
后来在这两个地方的资料才发现一些端倪,人家一般都是在 NAS 本机安装,然后访问本机地址进入初始化页面,但是我这个就不是。
https://askubuntu.com/questions/1321062/plex-installation-doesnt-give-option-to-setup-server
https://www.linode.com/docs/guides/install-plex-media-server-on-ubuntu-18-04/#configuring-plex-media-server-on-ubuntu-1804
知道了问题所在,解决方案还是比较简单的,那就是 SSH 连接使用端口转发,将目标服务器 Plex 网页服务的端口,映射到本机的一个端口。这样访问本机的这个端口,就能访问到 Plex 服务了,而对于 Plex 服务器的 Web 端来说,我们就是访问的本机地址。
访问 http://localhost:8888/web/ 即可看到 Plex 的页面。如果没有带上后面的`web` 后缀的话,直接访问可能会显示一个 XML 页面。
```bash
ssh user@192.0.2.1 -L 8888:localhost:32400
```
上面这句话就是 ssh 连接到 192.0.2.1 这个远端,然后在本地,即 ssh 客户端的机器,监听 8888 端口,本地所有访问 8888 端口的请求都会被重定向,等同为远端机器访问自身的 32400 端口,即为上文提到的,部署 plex 服务的端口
![Pasted image 20221216213514](https://blog-1301127393.file.myqcloud.com/BlogImgs/202312312254781.png)
如下是正常的初始化页面:
![Pasted image 20221216214020](https://blog-1301127393.file.myqcloud.com/BlogImgs/202312312254782.png)
有些情况下可能会遇到需要额外执行关联操作的情况,不过问题不大
![Pasted image 20221216214456](https://blog-1301127393.file.myqcloud.com/BlogImgs/202312312254783.png)
![Pasted image 20221216214521](https://blog-1301127393.file.myqcloud.com/BlogImgs/202312312254784.png)
配置成功后就可以正常享受影音资源啦 😎
![Pasted image 20231231225353](https://blog-1301127393.file.myqcloud.com/BlogImgs/202312312254785.png)

View File

@@ -0,0 +1,170 @@
---
title: 踏着风,去远方 - 我的 2024 年度总结
date: 2024-12-31
lastmod: 2025-02-09
description: 我的 2024 年度关键词 去远方&心流
categories:
- 杂记
- 年度总结
tags:
- 总结
- 杂记
---
## Part 1. 回顾
### 年度关键词:去远方
2024 年里,我去了更远的地方,尝试了更多以前不曾想到的体验,并决定了几个长期投入的方向,以更高的视角来看,我「拓宽」了我的边界。总有很多鸡汤营销号喜欢鼓吹「走出舒适区」,虽然这句话现在已经打上深深地 PUA 标签了,不过确实挑战陌生领域能更快地成长。但我觉得真正有意义的事是「扩张舒适区」。方向有两个,一个是降低自己的欲望,降低阈值,提高自己的韧性;另一个方向就是扩大疆域,发现更多舒适区。
### 年度关键词:心流
工作上的事情太烦杂,躺在床上没睡着又容易胡思乱想。但是当我在涂装模型,在给涂色书上色,在练习架子鼓的时候,发现我真的可以做到什么都不想,很放松,脑海里面也不会有各种杂音。本来我以为向给涂色书上色这种活动,只是消磨时间用的,像疫情的时候无聊肯定很合适。没想到简简单单,用画笔涂色,能够有这么治愈的效果。
这种跟玩游戏或者写代码时的高度专注还不太一样,给我的感觉是完全不需要动脑,基本处于放空状态,像是泡在热水里。不过也有可能是用脑区域不一样?
不管怎么说,我非常庆幸找到了这样一种状态,一个从另一种角度放松和疗愈自己的手段。
### 2024 highlights
- 泰国游,解锁了新地图,还是挺新鲜的,很多在国内习以为常的事物或者文化,换个角度能看到很多不一样的东西
- 搬家,同等价位房间面积升级,大 house 就是更爽啊
#### 年度好物
- **扫地机器人**!懒人福音,每天回家都是干干净净的真的超赞
- **回音壁 with 实体后环绕**!没有大 house 原来也可以有家庭影院,实体环绕才是真牛批
- **Homepod**!从 mini 换到大 homepod, 低频清晰了不止一星半点,听到了很多听不出的低频细节
#### 年度五星书影音
- 进击的巨人系列
- 混沌武士
- 迷宫饭
- 跃动青春
### 年度遗憾
- 今年也是 AI 大爆发的一年,上半年在折腾 AI 生图,做了一个基于 AI 生图的混剪视频,从分镜到粗剪都做的七七八八,不过最后没能解决好角色一致性问题,没能达到上线标准
- 十一 A 股和港股爆火的行情没能高位下车,果然会买是徒弟,会卖的才是师傅啊
### Flags From 2024
- 发布 6 篇博客文章(❌ 零零散散写了几篇笔记,但是没有到博客文章的完成度)
- 做 3 个 Weekend Project, 两天马拉松直接从 0 到上线(❓ 混剪类视频倒是做了几个,不过时间超长了)
- 做 2 个 Side Project, 并持续投入运营(✅ 一个是 FeedCraft目前是自用为主计划长期维护另外就是 模型设计 + 涂装,从图片到拿在手上的模型,真的超有成就感)
### Question From 2024
> 一年后的自己,有没有找到或者建立一个会愿意持续投入 3 年以上的项目,方向,或者事业?
找到了,而且还是 3 个。
1. 学习乐器,目前刚入坑架子鼓,感觉良好,持续投入
2. 模型设计&涂装,随着 3D 打印 + AI 3D 生成的技术的不断进化,我相信普通人也可以离手办自由更近一些。不过打印归打印,上色目前来看还只有靠人工,计划先从上色开始入门,除了模型涂装可以用到,后面也可以考虑尝试学习绘画
3. 第二收入。延迟退休政策叠加国内这糟糕的职工体系,让我对正常工作到退休不敢抱有幻想。搞钱才是硬道理
## Part 2. 「一夜暴富」and「早日退休」
延迟退休的新闻一出,一想到还有几十年才能退休,我才发觉这个时代的「工作」有多离谱。科技在进步,时代在发展,我们的生活我们的人生真的变得更好了吗?动辄几十年的房贷,不断动荡的市场行情,让当下的很多年轻人都萌生了不买房不生娃的理念。如果可以的话,谁不想有个安稳的家,享受生活呢?结合 24 年很多反社会事件的新闻,可以看到当下大众的压力是不小的。
「一夜暴富」,「早日退休」,是安慰,是自嘲,也是祝福。无论是路人的手机壳,各种活动的文案,都可以见到这样类似的标语。不过空有口号是没用,「想致富,先修路」,今年我开始更多地关注这一方面的内容,看了很多 up 的案例和一些所谓的「理论支撑」,谈到最多的就是「被动收入」、「复利」「副业」等等。先不考虑一夜暴富,能有更多的收入来源也能在很多时候多提供一些底气和选择。
### 我的被动收入现状
#### 投资理财
- 银行理财:收益率 2.69%
- 港股:收益率 10.1%
- A 股:持仓收益算下来其实是小亏的,不过总体量级很小,忽略不计
- 美股:年底又回到了之前的水位,前后比较基本没赚,忽略不计
#### 年度总收入占比
银行稳定理财收益占比 0.18%
股票收入在总收入 1.85%
总体来看,被动收入占比只有 2.03%,之前的理财策略还是太保守了。大部分闲钱都在卡里没动过,其实放余额宝都好。还有进阶理财的部分,也是配比太低。
#### 时薪变化追踪
以总收入情况来看2024 相较于 2023 年:
- 只看税后到卡上的部分,月均工资 +19.4%
- 但其实加上各类奖金补贴等综合来看,+8.6%
以综合后的总收入为基准,计算时薪。
工作时长 +4.76%
工作时薪 +3.67%
虽然账面上说涨工资了,但是隐形的加班也变多了,总体感觉更累了。如果继续这个趋势下去,工资越来越高,但是却越来越累,这不是一个好的结果。
## Part 3. 2025 plan
### 一些想法
#### better me 专项基金计划
以前学生时代没有收入总是习惯性的避免开销,现在工作了这个惯性还是很大。很多事物是值得去花小钱去投资或者体验的,比如今年去找了几个乐器和绘画的体验课,以及尝试了涂色书、涂装等,感觉很不错,投入其实也很低。一方面从每天重复的工作领域抽离开来,有很多新鲜感。另外这些艺术类活动,有创作的成分在里面,「我」和这个世界的事物产生交互,融入了「我」的劳动和表达,诞生出了这个世界上独一无二的事物,这件事情本身就是令人欣喜的。
2025 年,我期望通过一些指定领域的专项基金,定额投入,尽量全部消费完,来「强迫」自己,去做出一些新的尝试。比如这些方向
- **户外基金**:多运动,避免久坐。可能我会去买个自行车,日常溜达溜达;买个穿越机,周末多去外面转转拍拍
- **AI 探索基金**:一方面探索当下最流行的 AI 应用,以及探索 AI 应用的可能。现在 LLM 的 API 已经非常便宜了,之前一直碍于价格没有用起来,如果价格不再是瓶颈,我能用 AI 做出什么,这个是一个很值得探索的问题。预计 25 年我会投入不少于 1k 专门来做这个
- 小确幸基金:提升日常幸福感,比如买些鲜花、装饰画、香氛等
- **投资能力成长基金**:尝试各类投资类型,如股票,债权,贵金属,加密货币等等
#### AI Agent & 人类 Manager
AI agent 一定是未来一个非常有潜力的领域AI 能不能给人类社会带来进步,给普通大众带来幸福暂且不谈。「超级个体」+ 超级 AI agent 一定是有很大的发展空间的。
但是从我目前的一些经验来看,虽然当前 AI 的能力有限,先达到了瓶颈,但是按照这个发展速度,用不了几年,主导 AI agent 的人一定是先达到瓶颈的那个。那么这里 个体的组织能力,管理能力,以及部分领域的专业高度就显得非常重要了。
目前来看,项目组织和管理能力一定是值得去花时间精力去投资的,未来一堆 agent 就相当于一堆打工人,能创造什么价值很大程度上取决于主导的那个人类个体。
### 2025 小目标
- 更多的收入来源,薪资外收入占比超过 5%
- 在至少两个领域,分别至少有一个阶段性的代表作
### 2025 时空信件
一年后的自己,有没有找到一件不后悔青春的事?
---
## Part 4. 年度流水账环节
- 年前幻兽帕鲁爆火,狂肝帕鲁,久违地又能拉一群朋友打同一款游戏
- 元旦到春节的间隔格外的长,格外不适应,之前都是过完元旦差不多就快回家过年了的,今年还要上很久的班
- 年会运气爆棚,抽中了年会现场的门票,还是第一排!晚会嘉宾还是周深,感受到什么是行走的 CD
- 城里过春节,相较而言可以说是非常单调了,没有那么多亲戚朋友和邻里的来来往往,虽说时间更自由了,却突然有点不太适应
- 春节一个星期主要都在狂肝老头环,很上头
- 攒了个纯固态 NAS 方案,算是很好地满足了我的需求,安静,低功耗
- 元宵跟朋友去香港澳门转了一圈,特种兵行程一天一城,超级充实。要说印象最深刻的场面的话,香港的海水很漂亮,澳门的赌场第一次去很震撼,富丽堂皇而且很有格调
- 不知道是澳门赌场的香氛里面有令人上头的东西,还是单纯是玩的很嗨突然第二天要去上班,节后回来那几天像是有戒断反应一样,上班上的很痛苦
- 突然上头开始玩 stable diffusion不得不说 AI 进化的速度真的很恐怖,去年那会儿用 disco diffusion 画个风景画勉勉强强,画个蛋糕都能画崩。今年上手玩了下,社区已经发展的很成熟了,出来的效果也挺惊艳,在舒适区内,合适的调教下可以秒杀大部分人类画师了,更别说这逆天的效率
- 养的多肉里面有一株突然开花了,第一次知道多肉还能这样开花,淡黄色的小花娇弱,很漂亮
- 尝试用 AI 生图做了个短片,学习了不少 AI 绘图流程的东西,风格、景别等等。发现到最后成片的瓶颈其实还是人类作者的编剧和分镜质量
- 清明休了个小长假去四川和重庆玩了一圈,老友相聚很欢乐。不知道是因为出来玩心境不一样,还是单纯是不同城市的气质不一样,成都这边明显更有活力,即便是工作日地铁上都更热闹些
- 翻出吃灰的电饭锅开始尝试做酸奶,成色还不错挺有成就感的,不过发现真的酸,外面卖的酸奶原来加了那么多糖。另外还物理意义上感知到了好牛奶和差牛奶的差距,生鲜牛乳做出来的酸奶真不错
- 爆肝塞尔达,太上头了
- 五一终于把之前一直想做的 RSS 处理中间件做出来的,起名叫 FeedCraft反响还不错
- 第一次出国去泰国玩了一周,体验了骑大象、真枪射击、看线下拳击表演、各种东南亚的菜系。泰国的文化和娱乐产业原来这么丰富,感觉很多地方做的比国内一线城市还要好不少,不知道是国内监管太严格了还是我们近代的文化发展落后太多
- 搬家,没想到能找到个很实惠的房子,相较于之前的加量不加价,大 house 幸福感拉满
- 趁活动入了个扫地机器人,每天到点自动扫地拖地自动洗拖布,每天回家都是干干净净的,幸福感++
- 带刚毕业的发小逛香港和澳门,给他一点小小的赌场震撼
- 抢到票了,去看了 tia 的演唱会,舞美和演唱等各个方面真的很用心,期待 tia 后面继续做出更好的作品
- 又有同学离开北京过来深圳发展了,小聚了下。还去蹭了场 livehouse
- 团建去惠州漂流,刺激是真刺激,不过后知后觉感觉也挺危险的。还是要趁年轻去体验这些刺激的项目啊
- 从 homepod mini 升级到了大的 homepod低音部分非常不错贝斯、鼓声、低音提琴这些头一次听得这么清晰睡前放几首感觉低频的振动就是在给心灵按摩年度最佳电子产品
- 入坑涂色书,上色的过程很放松,能够放空自己安静地享受上色,年度最具性价比投入
- 入坑巨人系列,从第一季一口气追到完结,不得不说还是很震撼的
- 国庆带北京来的同学玩了一周,逛漫展、华强北、广州塔、长隆野生动物园、高达基地等等,野生动物园真是一分钱一分货,跟之前逛的那些动物园完全不是一个维度的。漫展上看到巨人粉的 coser 激动不已,切身感受到了什么叫打破了次元壁
- 某团上经常有各种免费体验课,心血来潮找了几个去试着玩了下,找了一个周末试了水彩画和乐器课,体验很新鲜,也很有成就感。而且每一项其实时间也才不超过两个小时,看来还是要更多去探索些新鲜事物啊,重复的事物里面很难找到激情和活力
- 突然想起自己还有个吃灰的 3D 打印机,之前房子太小施展不开一直闲置,翻出来重新发光发热,每天走之前把他开起来,下班之后回来直接就打好了,有种收菜的快感
- 3D 打印了一堆玩具之后开始尝试模型涂装,努力实现手办自由,没想到很上头,一开始用丙烯画笔简单粗暴效果好,后来部分颜色不太够,又开始自己调色,自由度更高。出来的效果也很不错,涂装过程也很治愈
- 抢到了 Jessie J 的演唱会门票,结石姐的 vocal 功力真的强的可怕
- 开始每周上课学习和练习架子鼓,也算是圆了一直以来内心隐蔽角落的一个心愿
- 整了个带实体后环绕和低音炮的回音壁,结合投影仪超大荧幕,观影体验拉满!原来整套方案其实不贵也不麻烦
- 2024 the end

View File

@@ -230,9 +230,9 @@
margin-top: 4rem;
padding: 1.2rem 3rem;
color: white;
color: #01ac88;
color: #9dd5c0;
/* background-color: #04cba0; */
border: #01ac88;
border: #9dd5c0;
border-width: 2px;
border-style: solid;
transition: all 0.15s ease-in-out
@@ -242,7 +242,7 @@
.button:hover {
color: white;
background-color: #01ac88;
background-color: #9dd5c0;
font-weight: bold;
}
@@ -258,7 +258,23 @@
}
.byLink {
color: #04cba0;
color: #9dd5c0;
}
/* custom ::selection */
::selection {
background: #9dd5c0;
color: #fff;
}
::-moz-selection {
background: #9dd5c0;
color: #fff;
}
::-webkit-selection {
background: #9dd5c0;
color: #fff;
}
</style>
</body>

View File

@@ -1,5 +1,8 @@
<link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22>
<text y=%22.9em%22 font-size=%2290%22>👋</text></svg>">
<!-- <link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22>
<text y=%22.9em%22 font-size=%2290%22>👋</text></svg>"> -->
<link rel="icon" href="/favicon.png">
<link rel="apple-touch-icon" href="/favicon.png">
<script>
function loadAgies() {
const aegis = new Aegis({

View File

@@ -8,23 +8,71 @@ Params:
{{ with $.Get "name" }}
{{ $name := . }}
{{ $data := getJSON $url }}
{{ range $data.data }}
{{ $item := . }}
<h3 id="{{$item.name}}">{{$item.name}}</h3>
{{ $link := urls.Parse $item.link }}
<p>{{$item.type}} - {{$item.subtitle}}</p>
<p>地址:
{{ range $data.data }}
{{ $item := . }}
<div class="card">
<h3 id="{{$item.name}}">{{$item.name}} <span class="badge">{{$item.type}}</span></h3>
<p>{{$item.subtitle}}</p>
<p><strong>地址:</strong>
{{ $link := urls.Parse $item.link }}
{{ if (gt (len $link.Host) 1) }}
<a href="{{$item.link}}" >{{$link.Host}}</a>
<a href="{{$item.link}}">{{$link.Host}}</a>
{{ else }}
{{$item.link}}
{{ end }}
</p>
{{ if (gt (len $item.StartServingAt) 1) }}
<p>上线于{{$item.StartServingAt}}</p>
{{ end }}
{{ end }}
</p>
<p><strong>上线时间:</strong>
{{ if (gt (len $item.StartServingAt) 1) }}
{{$item.StartServingAt}}
{{ else }}
{{ end }}
</p>
</div>
{{ end }}
{{ end }}
<style>
:root {
--card-border: #cccccc51;
--badge-background: #9dd5c0;
--badge-color: white;
}
[data-theme='dark'] {
--card-border: #44444451;
--badge-background: #9dd5c0;
--badge-color: white;
}
.card {
border: 1px solid var(--card-border);
border-radius: 8px;
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
margin: 1rem;
padding: 2rem;
transition: transform 0.2s ease-in-out;
}
.card:hover {
transform: scale(1.02);
}
.card h3 {
margin: 0;
display: inline-flex;
align-items: center;
}
.card p {
margin: 5px 0;
}
.card a {
text-decoration: none;
}
.badge {
background-color: #9dd5c0;
color: white;
border-radius: 12px;
padding: 4px 8px;
font-size: 0.6em;
margin-left: 8px;
}
</style>
{{ end }}

BIN
static/favicon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

View File

@@ -39,7 +39,7 @@
padding: 1rem 0rem;
}
ol.toc-list > li > a:hover {
ol.toc-list>li>a:hover {
text-underline-position: under;
font-weight: bolder;
}
@@ -57,45 +57,47 @@ ol.toc-list > li > a:hover {
}
.is-active-link::before {
background-color: #d71a1b !important;
background-color: #9dd5c0 !important;
}
.logo__cursor {
background: #d71a1b;
background: #9dd5c0;
}
/* 超链接样式 */
.post-tags a,
.post-content a {
.post-content a,
.index-content a {
text-decoration: none;
border-bottom: 1px dashed #d71a1b;
border-bottom: 1px dashed #9dd5c0;
-webkit-transition: all 0.2s;
transition: all 0.2s;
}
.post-tags a:hover,
.post-content a:hover,
.index-content a:hover,
nav a:hover {
text-decoration: none;
border-bottom: 2px solid #d71a1b;
border-bottom: 2px solid #9dd5c0;
-webkit-transition: all 0.1s ease;
transition: all 0.1s ease;
}
/* custom ::selection */
::selection {
background: #b5b5b5;
background: #9dd5c0;
color: #fff;
}
::-moz-selection {
background: #b5b5b5;
background: #9dd5c0;
color: #fff;
}
::-webkit-selection {
background: #b5b5b5;
background: #9dd5c0;
color: #fff;
}
@@ -116,3 +118,33 @@ nav a:hover {
.post-content a:active {
background-size: 80% 100%;
} */
.logo__cursor {
background-color: #9dd5c0 !important;
}
.on-list .post-title:hover {
transform: translateY(-0.1rem);
-webkit-transition: all 0.1s ease-in-out;
transition: all 0.1s ease-in-out;
}
.read-more:hover {
transform: translateX(0.1rem);
-webkit-transition: all 0.1s ease-in-out;
transition: all 0.1s ease-in-out;
}
span.button.next:hover {
display: block;
transform: translateX(0.2rem);
-webkit-transition: all 0.1s ease-in-out;
transition: all 0.21s ease-in-out;
}
span.button.previous:hover {
display: block;
transform: translateX(-0.2rem);
-webkit-transition: all 0.1s ease-in-out;
transition: all 0.1s ease-in-out;
}