mirror of
https://github.com/Colin-XKL/Colinx-Blog.git
synced 2026-01-11 10:11:28 +08:00
Merge commit 'dce5b411423b26f3b76842da9f7e8580a51953c2'
# Conflicts: # layouts/partials/footer.html
This commit is contained in:
15
.github/dependabot.yml
vendored
Normal file
15
.github/dependabot.yml
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
# Please see the documentation for all configuration options:
|
||||
# https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
|
||||
|
||||
version: 2
|
||||
updates:
|
||||
# Maintain dependencies for GitHub Actions
|
||||
- package-ecosystem: "github-actions"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "daily"
|
||||
- package-ecosystem: "gitsubmodule"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
day: "sunday"
|
||||
31
.github/workflows/CDN-URL.yaml
vendored
Normal file
31
.github/workflows/CDN-URL.yaml
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
name: Check and correct img CDN URLs
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [master]
|
||||
pull_request:
|
||||
branches: [master]
|
||||
|
||||
jobs:
|
||||
check-version:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
|
||||
- name: Find and Replace Release
|
||||
uses: jacobtomlinson/gha-find-replace@2.0.0
|
||||
with:
|
||||
find: "blog-1301127393.cos.ap-shanghai.myqcloud.com"
|
||||
replace: "blog-1301127393.file.myqcloud.com"
|
||||
|
||||
- name: Create Pull Request
|
||||
uses: peter-evans/create-pull-request@v3
|
||||
with:
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
commit-message: "Change img CDN URL"
|
||||
title: "Update imgs' CDN URL"
|
||||
labels: "URL"
|
||||
author: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
|
||||
branch: "update-img-url"
|
||||
body: "Some imgs' URL need to be updated."
|
||||
45
.github/workflows/azure-static-web-apps-nice-glacier-095b09e00.yml
vendored
Normal file
45
.github/workflows/azure-static-web-apps-nice-glacier-095b09e00.yml
vendored
Normal file
@@ -0,0 +1,45 @@
|
||||
name: Azure Static Web Apps CI/CD
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
pull_request:
|
||||
types: [opened, synchronize, reopened, closed]
|
||||
branches:
|
||||
- master
|
||||
|
||||
jobs:
|
||||
build_and_deploy_job:
|
||||
if: github.event_name == 'push' || (github.event_name == 'pull_request' && github.event.action != 'closed')
|
||||
runs-on: ubuntu-latest
|
||||
name: Build and Deploy Job
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
submodules: true
|
||||
- name: Build And Deploy
|
||||
id: builddeploy
|
||||
uses: Azure/static-web-apps-deploy@v1
|
||||
with:
|
||||
azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN_NICE_GLACIER_095B09E00 }}
|
||||
repo_token: ${{ secrets.GITHUB_TOKEN }} # Used for Github integrations (i.e. PR comments)
|
||||
action: "upload"
|
||||
###### Repository/Build Configurations - These values can be configured to match your app requirements. ######
|
||||
# For more information regarding Static Web App workflow configurations, please visit: https://aka.ms/swaworkflowconfig
|
||||
app_location: "/" # App source code path
|
||||
api_location: "" # Api source code path - optional
|
||||
output_location: "public" # Built app content directory - optional
|
||||
###### End of Repository/Build Configurations ######
|
||||
|
||||
close_pull_request_job:
|
||||
if: github.event_name == 'pull_request' && github.event.action == 'closed'
|
||||
runs-on: ubuntu-latest
|
||||
name: Close Pull Request Job
|
||||
steps:
|
||||
- name: Close Pull Request
|
||||
id: closepullrequest
|
||||
uses: Azure/static-web-apps-deploy@v1
|
||||
with:
|
||||
azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN_NICE_GLACIER_095B09E00 }}
|
||||
action: "close"
|
||||
18
.github/workflows/main.workflow
vendored
Normal file
18
.github/workflows/main.workflow
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
workflow "Hugo Link Check" {
|
||||
resolves = "linkcheck"
|
||||
on = "pull_request"
|
||||
}
|
||||
|
||||
action "filter-to-pr-open-synced" {
|
||||
uses = "actions/bin/filter@master"
|
||||
args = "action 'opened|synchronize'"
|
||||
}
|
||||
|
||||
action "linkcheck" {
|
||||
uses = "marccampbell/hugo-linkcheck-action@v0.1.3"
|
||||
needs = "filter-to-pr-open-synced"
|
||||
secrets = ["GITHUB_TOKEN"]
|
||||
env = {
|
||||
HUGO_FINAL_URL = "https://blog.colinx.one"
|
||||
}
|
||||
}
|
||||
22
.github/workflows/mardkwon-SEO.yaml
vendored
Normal file
22
.github/workflows/mardkwon-SEO.yaml
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
name: SEO check
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ master ]
|
||||
|
||||
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 }}
|
||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -97,3 +97,4 @@ $RECYCLE.BIN/
|
||||
|
||||
# Custom rules (everything added below won't be overriden by 'Generate .gitignore File' if you use 'Update' option)
|
||||
|
||||
.hugo_build.lock
|
||||
|
||||
2
README.md
Normal file
2
README.md
Normal file
@@ -0,0 +1,2 @@
|
||||
# Colinx-Blog
|
||||
Colin's Personal Blog http://blog.colinx.one
|
||||
192
config.toml
192
config.toml
@@ -3,107 +3,113 @@ languageCode = "en-us"
|
||||
defaultContentLanguage = "zh-cn"
|
||||
defaultContentLanguageInSubdir = false
|
||||
theme = "hello-friend"
|
||||
paginate = 7
|
||||
paginate = 10
|
||||
|
||||
[markup.goldmark.renderer]
|
||||
unsafe= true #避免MarkDown内嵌的HTML被优化掉,尤其是Typora缩放过的图片
|
||||
unsafe = true #避免MarkDown内嵌的HTML被优化掉,尤其是Typora缩放过的图片
|
||||
|
||||
[params]
|
||||
# dir name of your blog content (default is `content/posts`)
|
||||
contentTypeName = "posts"
|
||||
# "light" or "dark"
|
||||
defaultTheme = "light"
|
||||
# if you set this to 0, only submenu trigger will be visible
|
||||
showMenuItems = 5
|
||||
# Enable to show reading time in minutes for posts
|
||||
showReadingTime = false
|
||||
# leave empty to disable, enter display text to enable
|
||||
lastModDisplay = "最后修改"
|
||||
# dir name of your blog content (default is `content/posts`)
|
||||
contentTypeName = "posts"
|
||||
# "light" or "dark"
|
||||
defaultTheme = "light"
|
||||
# if you set this to 0, only submenu trigger will be visible
|
||||
showMenuItems = 5
|
||||
# Enable to show reading time in minutes for posts
|
||||
showReadingTime = false
|
||||
# leave empty to disable, enter display text to enable
|
||||
lastModDisplay = "最后修改"
|
||||
rssFullText = true
|
||||
|
||||
[languages]
|
||||
[languages.en]
|
||||
title = "Colinx Blog"
|
||||
subtitle = "Colin's Blog"
|
||||
keywords = ""
|
||||
copyright = ""
|
||||
menuMore = "Show more"
|
||||
writtenBy = "Written by"
|
||||
readMore = "Read more"
|
||||
readOtherPosts = "Read other posts"
|
||||
newerPosts = "Newer posts"
|
||||
olderPosts = "Older posts"
|
||||
minuteReadingTime = "min read"
|
||||
dateFormatSingle = "2006-01-02"
|
||||
dateFormatList = "2006-01-02"
|
||||
[languages.en]
|
||||
title = "Colinx Blog"
|
||||
subtitle = "Colin's Blog"
|
||||
keywords = ""
|
||||
copyright = ""
|
||||
menuMore = "Show more"
|
||||
writtenBy = "Written by"
|
||||
readMore = "Read more"
|
||||
readOtherPosts = "Read other posts"
|
||||
newerPosts = "Newer posts"
|
||||
olderPosts = "Older posts"
|
||||
minuteReadingTime = "min read"
|
||||
dateFormatSingle = "2006-01-02"
|
||||
dateFormatList = "2006-01-02"
|
||||
|
||||
[languages.en.params.logo]
|
||||
logoText = "Colinx Blog"
|
||||
logoHomeLink = "/"
|
||||
# or
|
||||
#
|
||||
# path = "/img/your-example-logo.svg"
|
||||
# alt = "Your example logo alt text"
|
||||
[languages.en.params.logo]
|
||||
logoText = "Colinx Blog"
|
||||
logoHomeLink = "/"
|
||||
# or
|
||||
#
|
||||
# path = "/img/your-example-logo.svg"
|
||||
# alt = "Your example logo alt text"
|
||||
|
||||
[languages.en.menu]
|
||||
[[languages.en.menu.main]]
|
||||
identifier = "archive"
|
||||
name = "Archive"
|
||||
url = "/archive"
|
||||
[[languages.en.menu.main]]
|
||||
identifier = "categories"
|
||||
name = "Categories"
|
||||
url = "/categories"
|
||||
[[languages.en.menu.main]]
|
||||
identifier = "tags"
|
||||
name = "Tags"
|
||||
url = "/tags"
|
||||
[[languages.en.menu.main]]
|
||||
identifier = "about"
|
||||
name = "About"
|
||||
url = "/aboutme"
|
||||
[languages.en.menu]
|
||||
[[languages.en.menu.main]]
|
||||
identifier = "archive"
|
||||
name = "Archive"
|
||||
url = "/archive"
|
||||
[[languages.en.menu.main]]
|
||||
identifier = "categories"
|
||||
name = "Categories"
|
||||
url = "/categories"
|
||||
[[languages.en.menu.main]]
|
||||
identifier = "tags"
|
||||
name = "Tags"
|
||||
url = "/tags"
|
||||
[[languages.en.menu.main]]
|
||||
identifier = "about"
|
||||
name = "About"
|
||||
url = "/aboutme"
|
||||
|
||||
[languages.zh-cn]
|
||||
title = "Colinx Blog"
|
||||
subtitle = "Colin的个人博客"
|
||||
keywords = "Colin,个人博客"
|
||||
copyright = ""
|
||||
menuMore = "显示更多"
|
||||
writtenBy = "作者"
|
||||
readMore = "点击阅读"
|
||||
readOtherPosts = "阅读更多"
|
||||
newerPosts = "上一页"
|
||||
olderPosts = "下一页"
|
||||
minuteReadingTime = "分钟"
|
||||
dateFormatSingle = "2006-01-02"
|
||||
dateFormatList = "2006-01-02"
|
||||
[languages.zh-cn]
|
||||
title = "Colinx Blog"
|
||||
subtitle = "Colin的个人博客"
|
||||
keywords = "Colin,个人博客"
|
||||
copyright = ""
|
||||
menuMore = "显示更多"
|
||||
writtenBy = "作者"
|
||||
readMore = "点击阅读"
|
||||
readOtherPosts = "阅读更多"
|
||||
newerPosts = "上一页"
|
||||
olderPosts = "下一页"
|
||||
minuteReadingTime = "分钟"
|
||||
dateFormatSingle = "2006-01-02"
|
||||
dateFormatList = "2006-01-02"
|
||||
|
||||
[languages.zh-cn.params.logo]
|
||||
logoText = "Colinx Blog"
|
||||
logoHomeLink = "/"
|
||||
# or
|
||||
#
|
||||
# path = "/img/your-example-logo.svg"
|
||||
# alt = "Your example logo alt text"
|
||||
[languages.zh-cn.params.logo]
|
||||
logoText = "Colinx Blog"
|
||||
logoHomeLink = "/"
|
||||
# or
|
||||
#
|
||||
# path = "/img/your-example-logo.svg"
|
||||
# alt = "Your example logo alt text"
|
||||
|
||||
[languages.zh-cn.menu]
|
||||
[[languages.zh-cn.menu.main]]
|
||||
identifier = "archive"
|
||||
name = "归档"
|
||||
url = "/archive"
|
||||
[[languages.zh-cn.menu.main]]
|
||||
identifier = "categories"
|
||||
name = "分类"
|
||||
url = "/categories"
|
||||
[[languages.zh-cn.menu.main]]
|
||||
identifier = "tags"
|
||||
name = "标签"
|
||||
url = "/tags"
|
||||
[[languages.zh-cn.menu.main]]
|
||||
identifier = "about"
|
||||
name = "关于"
|
||||
url = "/aboutme"
|
||||
[[languages.zh-cn.menu.main]]
|
||||
identifier = "rss"
|
||||
name = "RSS"
|
||||
url = "/index.xml"
|
||||
|
||||
[languages.zh-cn.menu]
|
||||
|
||||
[[languages.zh-cn.menu.main]]
|
||||
identifier = "archive"
|
||||
name = "文章归档"
|
||||
url = "/archive"
|
||||
weight = 1
|
||||
[[languages.zh-cn.menu.main]]
|
||||
identifier = "categories"
|
||||
name = "分类"
|
||||
url = "/categories"
|
||||
weight = 2
|
||||
[[languages.zh-cn.menu.main]]
|
||||
identifier = "tags"
|
||||
name = "Tags"
|
||||
url = "/tags"
|
||||
weight = 3
|
||||
[[languages.zh-cn.menu.main]]
|
||||
identifier = "about"
|
||||
name = "关于"
|
||||
url = "/aboutme"
|
||||
weight = 5
|
||||
[[languages.zh-cn.menu.main]]
|
||||
identifier = "rss"
|
||||
name = "RSS"
|
||||
url = "/index.xml"
|
||||
weight = 10
|
||||
|
||||
@@ -14,7 +14,7 @@ tags:
|
||||
|
||||
---
|
||||
|
||||
# 2020年度总结
|
||||
<!-- # 2020年度总结 -->
|
||||
|
||||
## 序
|
||||
|
||||
@@ -103,6 +103,7 @@ tags:
|
||||
* 十一过后每天学习吉他
|
||||
* 继续折腾RSS
|
||||
* 实验室开通了微信公众号
|
||||
* CFC 四级小班课,消灭了四级 (updated)
|
||||
* 正式开始做Logic项目,但是发现思绪混乱不堪,工作方式与预期相差甚远
|
||||
* 第一次穿西装
|
||||
* 挖了又没填完的几个坑
|
||||
@@ -111,21 +112,3 @@ tags:
|
||||
* 抓住2020的尾巴上线了https://coding-step-one.colinx.one/
|
||||
* 2020终
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
115
content/posts/2021年度总结.md
Executable file
115
content/posts/2021年度总结.md
Executable file
@@ -0,0 +1,115 @@
|
||||
---
|
||||
|
||||
title: 2021 年度总结
|
||||
date: 2021-12-31
|
||||
lastmod: 2021-12-31
|
||||
description: 转眼又快是新的一年,似乎岁数越大,会感觉时间过得越快。想起小时候下课前的三分钟都无比漫长,现在在学校待两个月却仿佛只是两天。纵有万分感慨,但无法阻挡的事实是,2021结束了,我又长了一岁,父母又老了一岁,我的大学时光又少了一年,我在自己的道路上又行走了一年。
|
||||
categories:
|
||||
- 杂记
|
||||
- 年度总结
|
||||
tags:
|
||||
- 总结
|
||||
- 杂记
|
||||
- 2021
|
||||
|
||||
---
|
||||
|
||||
<!-- # 2021 年度总结 -->
|
||||
|
||||
## 序
|
||||
|
||||
转眼又快是新的一年,似乎岁数越大,会感觉时间过得越快。想起小时候下课前的三分钟都无比漫长,现在在学校待两个月却仿佛只是两天。纵有万分感慨,但无法阻挡的事实是,2021结束了,我又长了一岁,父母又老了一岁,我的大学时光又少了一年,我在自己的道路上又行走了一年。
|
||||
|
||||
|
||||
|
||||
## 我的2021简述
|
||||
|
||||
**印象·2021**
|
||||
|
||||
* 拿到BATJ实习
|
||||
* 与公司CEO一起吃饭,认识了很多有趣的人和事
|
||||
* 开源项目RSS Man获得认可,有20+ star
|
||||
* 完成年初的flag,阅读了10本书
|
||||
* 入坑并追完了星际宝贝系列
|
||||
* 买了HomePod mini作为自己的生日礼物,立体声组合相当nice
|
||||
* 爬长城,游故宫,打卡北京
|
||||
* 体验了烫染,get枯草般的头发,get另一种自己
|
||||
* 体验了打飞的,还全报销了,有种超级忙的boss赶脚
|
||||
* 入手XBOX和极米投影仪,备战寒假`真·躺平`生活
|
||||
|
||||
|
||||
|
||||
**年度遗憾:**
|
||||
|
||||
* 博客4.0又咕咕咕了
|
||||
* CFC官网4.0又咕咕咕了
|
||||
* RSS Man 3.0 又又又咕咕咕了。。。
|
||||
* 没能完成6.828
|
||||
|
||||
|
||||
|
||||
## 2021关键词:工作、健康
|
||||
|
||||
2021对我而言是特殊的一年,大三的我一只脚迈进了职场,体验了社会的酸甜。回学校的第二天着手开始面试,很荣幸,先后拿到了BATJ四家的实习offer,最终选择了把我最后一个暑假给阿里高德事业群。我的实习生活算是比较轻松的,没有pua,没有疯狂加班,以一种温和的方式熟悉了职场,对技术和资本有了新的理解,见到了不一样的世界,也破灭了北京的幻想。有些人生在罗马,有些人穷其一生也到不了罗马,但还是很庆幸,这是一个通过自己的努力就可以到达罗马的时代。
|
||||
|
||||
在北京实习的日子过得很快,也很愉快。leader和mentor都很nice。不过在实习的日子里身边发生了好几件事,让我对健康这个问题又有了新的看法。我看到公司CEO日理万机,事业蒸蒸日上,而他自己坚持锻炼,精力旺盛。我又看到接连几个朋友罹患肿瘤,昔日同学频频心里障碍,影响学业。平日里不起眼的几条消息,现在到了我身边,一时间竟无所适从。健康是一种隐形的财富,无病无痛时感知不到它,甚至认为毫无价值,只有病痛落到自己头上,才知道健康的可贵。单说起病痛其实并没有什么,疼哪医哪,问题不大。但是当我们谈及的是肿瘤和癌症,问题就变得复杂了起来。并不是被感染、受伤了才会有肿瘤,也并不是岁数大了抵抗力弱了一定会得癌症。甚至目前来看,它没有贫富之分,众生平等,有钱有势也无力回天。联合国世界卫生组织有长长一串致癌物清单,但这只是一小部分,现阶段被人类从统计学角度认知的一小部分,而且列表上的致癌物也并不是毒素,摄入即罹患癌症。
|
||||
|
||||
对于肿瘤和癌症这类问题,现在最有效的防治手段应该只有一个,早发现早治疗。而要减少患病的几率,我想环境应该是非常重要的一点。这里包括两个:居住环境和饮食环境。居住环境也包括物理上的,也有心理上的。物理上减少致癌物,保持通风,保持光照,减少不必要、明显不适的电磁场。心理上保持积极,保持开朗。
|
||||
|
||||
---
|
||||
|
||||
关于电磁场,我个人观点一向是认为,这的确会对生物体有影响。网络上大多数科普电磁辐射对人体没有危害的论点主要有两个:一是现在没有确切的实验数据说明电磁辐射对人体有明显的危害,二是论剂量,电磁辐射对人体的危害主要是热效应、升温,只有剂量非常大才会影响到人体。这两条放到现在来说没有什么问题,并不是说他们正确,而是不能说他们错了。电磁辐射的热效应的确是对人体造成最大伤害的一种途径,现阶段实验的确没有证据可以表明电磁辐射有害。但是电磁波不仅仅有振幅,还要考虑频率和他的波形,当年3G升4G就有很多人说打电话时间长了会头痛,而之前不会,我也有类似体感;现阶段实验不可能有长达二三十年的关于电磁场对生物体健康的实验,就算有确凿证据也不可能放出来,因为这触及资本利益,参考汽油产业和铅的故事。此外我们也不可能全部放弃无线时代带给我们的便利。
|
||||
|
||||
---
|
||||
|
||||
|
||||
## Answers to 2020
|
||||
|
||||
2020年底我的一个疑问是逃离IT业的内卷,这个问题我有了一个阶段性的答案。目前来看有两个方向,一是选择不同的赛道,另一个是选择资源富裕开发程度不高的领域。今年我选择了前者。
|
||||
|
||||
## Flags for 2022
|
||||
|
||||
* 阅读12本书
|
||||
* 打卡5个景点
|
||||
|
||||
## 流水账时间
|
||||
|
||||
* 一个挺暖和的春节
|
||||
* 过年在家有天晚上睡不着,翻身起来做了个数码宝贝的MV,但是咕咕咕又不想投稿。。
|
||||
* 拿云台坐在电动车上给老家拍了个视频,等十年后再回来看
|
||||
* 游万佛湖,几年没去没想到景区建设得很快
|
||||
* MC私服,云服务器好友联机爽歪歪,还有1.5个外国友人沟通变得奇妙了起来
|
||||
* 返校第二天拿到jd实习offer
|
||||
* 无聊的编译原理课
|
||||
* 各种上课接电话
|
||||
* 各种准备面试和被面试,最终拿到BAT实习offer
|
||||
* 📕深入理解Java虚拟机👍
|
||||
* 折腾RSS,对RSS Man做了不少优化
|
||||
* CFC 六级冲关小班课
|
||||
* 前往北京实习
|
||||
* 打飞的回来考试
|
||||
* 平平无奇的暑假,体验公司生活
|
||||
* 搭建ARK私服,天天开黑
|
||||
* 参加Linux平台的一个开发比赛,没想到白天上班晚上回来写点东西这么累
|
||||
* 周末拿公司的mbp回去听歌爽歪歪,想买个homepod结果停产了。。
|
||||
* 入坑鲁邦三世系列,很有魅力的一部剧
|
||||
* 📕《凤凰架构》👍
|
||||
* 龟龟到家
|
||||
* 过生日入了一对homepod mini,立体声效果很nice
|
||||
* 第一次体验现场器乐表演
|
||||
* 天气转凉,爬长城游故宫打卡北京
|
||||
* 同学来北京玩,天天吃好的,才发现稍微奢侈一点点可以吃到超棒的美食
|
||||
* 回学校体验隔离套餐:(
|
||||
* 博客上线评论
|
||||
* 随手做的RSS Man项目渐渐获得关注和认可,感觉超棒
|
||||
* 第一次体验翻,土蔷,真墙
|
||||
* 入坑并追完星际宝贝系列
|
||||
* 入手XBOX,XGP真香
|
||||
* 最后一次参加CFC招新
|
||||
* 入手极米投影仪,躺在宿舍床上看电影美滋滋
|
||||
* 📕《编码:隐匿在计算机软硬件背后的语言》👍
|
||||
* Linux&Git小班课,一周从`ls`到nginx
|
||||
* 搞到了三百块4c16g的服务器,y1s1真的给力
|
||||
* 赶在年末疫情没严重溜回家,保住我的最后一个寒假
|
||||
* 2021 the end
|
||||
|
||||
@@ -12,7 +12,7 @@ tags:
|
||||
- Flutter
|
||||
---
|
||||
|
||||
# Colin's实验室 - 2021春
|
||||
<!-- # Colin's实验室 - 2021春 -->
|
||||
|
||||
> 小玩具及他们的demo
|
||||
>
|
||||
@@ -22,7 +22,7 @@ tags:
|
||||
|
||||
> 自动分割给定的英文文本,提取词元后在数据库中搜索,根据给定的词汇量和难度等级进行筛选,只能提取阅读障碍词汇并高亮当前备考项目(如四级)的重点单词
|
||||
|
||||

|
||||

|
||||
|
||||
## 知乎爬虫及JS逆向
|
||||
|
||||
@@ -40,7 +40,7 @@ tags:
|
||||
|
||||
> 1核2G学生机,从2人联机频频崩溃到8人挖矿毫无压力,学习了JVM GC种种,对服务端程序的一些参数也渐渐熟悉。优化效果喜人,总有还能压榨的性能,就像资本家看手下的骡子一样hhh
|
||||
|
||||

|
||||

|
||||
|
||||
|
||||
|
||||
@@ -48,7 +48,7 @@ tags:
|
||||
|
||||
> 一款跨平台的灵感素材收集与简易管理App,基于Flutter构建,跨平台,颜值在线。
|
||||
|
||||

|
||||

|
||||
|
||||
> 持续开发中,附roadmap
|
||||
>
|
||||
|
||||
@@ -10,7 +10,7 @@ tags:
|
||||
- Flutter
|
||||
---
|
||||
|
||||
# Flutter 拖动排序列表与跨平台优化实践
|
||||
<!-- # Flutter 拖动排序列表与跨平台优化实践 -->
|
||||
|
||||
|
||||
|
||||
@@ -46,7 +46,7 @@ Flutter中实现拖动排序的列表非常简单,使用官方的`ReorderableL
|
||||
|
||||
|
||||
|
||||

|
||||

|
||||
|
||||
虽然可以实现拖动了,但是右边有一个按钮很碍眼。不过这个是用来控制拖动的,鼠标移上去才能触发拖动。
|
||||
|
||||
@@ -65,7 +65,7 @@ Flutter中实现拖动排序的列表非常简单,使用官方的`ReorderableL
|
||||
|
||||
不过相应的,ListTile的`onLongPress`就不能再有响应了。刚好今天完成了滑动删除的实现,现在列表也的删除、排序已经高度可用且多平台统一了。
|
||||
|
||||

|
||||

|
||||
|
||||
附相关代码实现:
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ date: 2021-01-09
|
||||
lastmod: 2021-01-10
|
||||
description: 折腾了自己的专属RSS信息流,每天都能从那些高质量的信息源中获得不少干货知识,一般就会顺手收藏一下。有一天突然想起自己收藏的那些文章,本身不就是经过二次筛选的高质量文章吗?于是便在构想能不能通过某种方式将这个信息源也公开出来,一方面是记录,另一方面也是间接地展示自己。恰逢遇见JAMStack,最近在国外非常火,国内的阿里和腾讯也在跟进,搞静态托管那一套。经多方物色,最终确定基于Pocket API+Gatsby来构建这样一个自己的「网络日志」。
|
||||
categories:
|
||||
- 杂记
|
||||
- 教程
|
||||
tags:
|
||||
- 技术
|
||||
- JAMStack
|
||||
@@ -13,7 +13,7 @@ tags:
|
||||
- Github
|
||||
---
|
||||
|
||||
# JAMStack初体验 - 基于Pocket 和 Gatsby 构建你的「网络日志」
|
||||
<!-- # JAMStack初体验 - 基于Pocket 和 Gatsby 构建你的「网络日志」 -->
|
||||
|
||||
折腾了自己的专属RSS信息流,每天都能从那些高质量的信息源中获得不少干货知识,一般就会顺手收藏一下。有一天突然想起自己收藏的那些文章,本身不就是经过二次筛选的高质量文章吗?于是便在构想能不能通过某种方式将这个信息源也公开出来,一方面是记录,另一方面也是间接地展示自己。恰逢遇见**JAMStack**,最近在国外非常火,国内的阿里和腾讯也在跟进,搞静态托管那一套。经多方物色,最终确定基于`Pocket API`+`Gatsby`来构建这样一个自己的「网络日志」。
|
||||
|
||||
@@ -49,7 +49,7 @@ JAMStack是一种新颖的网站架构,与传统的服务端渲染和近些年
|
||||
1. 我在其他地方看到不错的文章,将其收藏到Pocket
|
||||
2. 定时任务,从`Pocket API`获取文章数据,交给Gatsby生成站点
|
||||
3. 自动部署,将生成的静态文件部署到CDN
|
||||
4. [reading.colinx.one](reading.colinx.one)站点主页就会出现我收藏的文章啦
|
||||
4. [reading.colinx.one](https://reading.colinx.one)站点主页就会出现我收藏的文章啦
|
||||
|
||||
|
||||
|
||||
@@ -59,7 +59,7 @@ JAMStack是一种新颖的网站架构,与传统的服务端渲染和近些年
|
||||
|
||||
## 总结
|
||||
|
||||
项目已经开源,地址在https://github.com/Colin-XKL/Colinx-Reading.git。你也可以去申请自己的Pocket API然后部署你自己的站点。
|
||||
项目已经开源,地址在[https://github.com/Colin-XKL/Colinx-Reading.git](https://github.com/Colin-XKL/Colinx-Reading)。你也可以去申请自己的Pocket API然后部署你自己的站点。
|
||||
|
||||
初始尝试JAMStack,感觉对于博客、文档这类的站点会非常友好,国外比较火的像Shopify这种的无头电商也不错,国内的碍于国情应该不大可能了。
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@ tags:
|
||||
|
||||
|
||||
|
||||
# Mac平台配置C/Python/Java学习环境
|
||||
<!-- # Mac平台配置C/Python/Java学习环境 -->
|
||||
|
||||
> 本系列教程旨在为刚入门的编程语言学习者做好指南工作,开始编码,本应很简单
|
||||
>
|
||||
@@ -36,7 +36,7 @@ tags:
|
||||
|
||||
C语言的编译需要编译器,一般可以选择gcc或是clang。Mac系统默认安装了clang同时兼容了gcc的指令。在终端中进行查看:
|
||||
|
||||

|
||||

|
||||
|
||||
输入`gcc -v`指令测试gcc命令是否可用并查看其版本,由上图输出可以看到,该命令可用,版本信息显示的则是clang的信息。一般来说,刚学习C语言无需关注两者的异同。
|
||||
|
||||
@@ -48,35 +48,35 @@ C语言的编译需要编译器,一般可以选择gcc或是clang。Mac系统
|
||||
|
||||
如果下载速度太慢,可以参考[这篇文章](https://zhuanlan.zhihu.com/p/112215618)。
|
||||
|
||||

|
||||

|
||||
|
||||
安装完毕后,打开会看到如下图所示的界面。默认界面为英文,下面对其进行汉化并安装一些必要的插件。
|
||||
|
||||

|
||||

|
||||
|
||||
单击方形图标,打开扩展面板。
|
||||
|
||||
<img src="https://blog-1301127393.cos.ap-shanghai.myqcloud.com/BlogImgs/20201219015621.png" alt="image-20201218223234296" style="zoom:50%;" />
|
||||
<img src="https://blog-1301127393.file.myqcloud.com/BlogImgs/20201219015621.png" alt="image-20201218223234296" style="zoom:50%;" />
|
||||
|
||||
|
||||
|
||||
搜索`chinese`安装汉化插件。
|
||||
|
||||

|
||||

|
||||
|
||||
搜索`code runner`安装Code Runner插件。并按指示重启应用(Reload字样)
|
||||
|
||||
<img src="https://blog-1301127393.cos.ap-shanghai.myqcloud.com/BlogImgs/20201219015620.png" alt="image-20201218222511011" style="zoom:50%;" />(截图中因为本地已安装故只显示了Uninstall卸载按钮。未安装的情况下会显示Install按钮可点击安装)
|
||||
<img src="https://blog-1301127393.file.myqcloud.com/BlogImgs/20201219015620.png" alt="image-20201218222511011" style="zoom:50%;" />(截图中因为本地已安装故只显示了Uninstall卸载按钮。未安装的情况下会显示Install按钮可点击安装)
|
||||
|
||||
其他插件可根据需要安装。此处推荐安装C/C++插件以实现C代码的高亮和补全等功能。
|
||||
|
||||
<img src="https://blog-1301127393.cos.ap-shanghai.myqcloud.com/BlogImgs/20201219015624.png" alt="image-20201218223432859" style="zoom:50%;" />
|
||||
<img src="https://blog-1301127393.file.myqcloud.com/BlogImgs/20201219015624.png" alt="image-20201218223432859" style="zoom:50%;" />
|
||||
|
||||
重启后进入应用,界面自动切换到中文。再点击扩展图标,展开扩展列表,在已安装扩展中找到**Code Runner**,点击齿轮图标展开菜单,点击进入扩展设置。<img src="https://blog-1301127393.cos.ap-shanghai.myqcloud.com/BlogImgs/20201219015627.png" alt="image-20201218224215676" style="zoom:50%;" />
|
||||
重启后进入应用,界面自动切换到中文。再点击扩展图标,展开扩展列表,在已安装扩展中找到**Code Runner**,点击齿轮图标展开菜单,点击进入扩展设置。<img src="https://blog-1301127393.file.myqcloud.com/BlogImgs/20201219015627.png" alt="image-20201218224215676" style="zoom:50%;" />
|
||||
|
||||
|
||||
|
||||
在输入栏中,在当前选项卡为**用户**的情况下,输入`run`并按回车进行搜索。修改`Run in Terminal`和 `Save File Before Run`的设置项。<img src="https://blog-1301127393.cos.ap-shanghai.myqcloud.com/BlogImgs/20201219015626.png" alt="image-20201218224059150" style="zoom:50%;" />
|
||||
在输入栏中,在当前选项卡为**用户**的情况下,输入`run`并按回车进行搜索。修改`Run in Terminal`和 `Save File Before Run`的设置项。<img src="https://blog-1301127393.file.myqcloud.com/BlogImgs/20201219015626.png" alt="image-20201218224059150" style="zoom:50%;" />
|
||||
|
||||
|
||||
|
||||
@@ -86,19 +86,19 @@ C语言的编译需要编译器,一般可以选择gcc或是clang。Mac系统
|
||||
|
||||
点击左侧第一个按钮,来到文件管理面板。点击打开文件夹按钮,打开一个空白的文件夹(任意文件夹都可以,只是保存你代码的地方,一般一个干净整洁的新文件夹为宜)
|
||||
|
||||
<img src="https://blog-1301127393.cos.ap-shanghai.myqcloud.com/BlogImgs/20201219015623.png" alt="image-20201218230901008" style="zoom:50%;" />
|
||||
<img src="https://blog-1301127393.file.myqcloud.com/BlogImgs/20201219015623.png" alt="image-20201218230901008" style="zoom:50%;" />
|
||||
|
||||
打开文件夹后,在空白处单击右键,新建一个文件,文件名输入为`hello.c`
|
||||
|
||||
<img src="https://blog-1301127393.cos.ap-shanghai.myqcloud.com/BlogImgs/20201219015629.png" alt="image-20201218224536077" style="zoom:50%;" />
|
||||
<img src="https://blog-1301127393.file.myqcloud.com/BlogImgs/20201219015629.png" alt="image-20201218224536077" style="zoom:50%;" />
|
||||
|
||||
键入代码。
|
||||
|
||||

|
||||

|
||||
|
||||
点击右上角的三角形按钮即可自动编译运行你的C语言代码。在窗口下方的终端即可看到输出的`Hello,C!`字样。
|
||||
|
||||

|
||||

|
||||
|
||||
### 完成✅
|
||||
|
||||
@@ -116,13 +116,13 @@ C语言的编译需要编译器,一般可以选择gcc或是clang。Mac系统
|
||||
|
||||
Mac系统会自带有Python环境。在终端中输入python并回车。
|
||||
|
||||

|
||||

|
||||
|
||||
可以看到系统已经安装有Python,但是显示版本为2.7。现在的主流版本是Python3,Python2与Python3的语法并不兼容。
|
||||
|
||||
在`>>>`后面键入`exit()`退出python2的交互程序。再次在终端输入`python3`
|
||||
|
||||

|
||||

|
||||
|
||||
|
||||
|
||||
@@ -132,7 +132,7 @@ Mac系统会自带有Python环境。在终端中输入python并回车。
|
||||
|
||||
在交互式命令行界面,我们可以直接输入python语句并执行。
|
||||
|
||||

|
||||

|
||||
|
||||
一句一句地输入代码再执行显然太低效了。我们需要一个趁手的代码编辑器。
|
||||
|
||||
@@ -146,25 +146,25 @@ Mac系统会自带有Python环境。在终端中输入python并回车。
|
||||
|
||||
|
||||
|
||||

|
||||

|
||||
|
||||
|
||||
|
||||
点击左侧第一个按钮,来到文件管理面板。点击打开文件夹按钮,打开一个空白的文件夹(任意文件夹都可以,只是保存你代码的地方,一般一个干净整洁的新文件夹为宜)
|
||||
|
||||
<img src="https://blog-1301127393.cos.ap-shanghai.myqcloud.com/BlogImgs/20201219015623.png" alt="image-20201218230901008" style="zoom:50%;" />
|
||||
<img src="https://blog-1301127393.file.myqcloud.com/BlogImgs/20201219015623.png" alt="image-20201218230901008" style="zoom:50%;" />
|
||||
|
||||
打开文件夹后,在空白处单击右键,新建一个文件,文件名输入为`hello.py`
|
||||
|
||||
<img src="https://blog-1301127393.cos.ap-shanghai.myqcloud.com/BlogImgs/20201219015629.png" alt="image-20201218224536077" style="zoom:50%;" />
|
||||
<img src="https://blog-1301127393.file.myqcloud.com/BlogImgs/20201219015629.png" alt="image-20201218224536077" style="zoom:50%;" />
|
||||
|
||||
键入代码。
|
||||
|
||||

|
||||

|
||||
|
||||
点击右上角的三角形按钮开始运行我们编写的代码
|
||||
|
||||

|
||||

|
||||
|
||||
|
||||
|
||||
@@ -201,13 +201,13 @@ Mac OS并没有内置Java语言的支持,需要我们另外安装。
|
||||
|
||||
下载完成后点击打开,出现如下的安装界面。根据指引完成安装。
|
||||
|
||||

|
||||

|
||||
|
||||
|
||||
|
||||
安装完成后,在终端中输入`java -version`并回车确认。看到如下输出说明已经正确安装且Java的版本为`11.0.9.1`即Java 11.
|
||||
|
||||

|
||||

|
||||
|
||||
下面来为Java的学习配置一个趁手的代码编辑器,以VSCode为例。
|
||||
|
||||
@@ -221,23 +221,23 @@ Mac OS并没有内置Java语言的支持,需要我们另外安装。
|
||||
|
||||
在左侧扩展面板的搜索栏中搜索`java`,选择`Language Support for Java`并安装。
|
||||
|
||||
<img src="https://blog-1301127393.cos.ap-shanghai.myqcloud.com/BlogImgs/20201219015641.png" alt="image-20201218235514041" style="zoom:50%;" />
|
||||
<img src="https://blog-1301127393.file.myqcloud.com/BlogImgs/20201219015641.png" alt="image-20201218235514041" style="zoom:50%;" />
|
||||
|
||||
点击左侧第一个按钮,来到文件管理面板。点击打开文件夹按钮,打开一个空白的文件夹(任意文件夹都可以,只是保存你代码的地方,一般一个干净整洁的新文件夹为宜)
|
||||
|
||||
<img src="https://blog-1301127393.cos.ap-shanghai.myqcloud.com/BlogImgs/20201219015623.png" alt="image-20201218230901008" style="zoom:50%;" />
|
||||
<img src="https://blog-1301127393.file.myqcloud.com/BlogImgs/20201219015623.png" alt="image-20201218230901008" style="zoom:50%;" />
|
||||
|
||||
打开文件夹后,在空白处单击右键,新建一个文件,文件名输入为`hello.java`
|
||||
|
||||
<img src="https://blog-1301127393.cos.ap-shanghai.myqcloud.com/BlogImgs/20201219015629.png" alt="image-20201218224536077" style="zoom:50%;" />
|
||||
<img src="https://blog-1301127393.file.myqcloud.com/BlogImgs/20201219015629.png" alt="image-20201218224536077" style="zoom:50%;" />
|
||||
|
||||
键入代码。
|
||||
|
||||

|
||||

|
||||
|
||||
可以看到,在窗口下方的终端面板中,已经成功出现了**Hello, Java!**字样,代码运行成功。
|
||||
|
||||

|
||||

|
||||
|
||||
### 完成✅
|
||||
|
||||
@@ -253,7 +253,7 @@ Mac OS并没有内置Java语言的支持,需要我们另外安装。
|
||||
|
||||
|
||||
|
||||
<img src="https://blog-1301127393.cos.ap-shanghai.myqcloud.com/BlogImgs/20201219015638.png" alt="image-20201218234917588" style="zoom:50%;" />
|
||||
<img src="https://blog-1301127393.file.myqcloud.com/BlogImgs/20201219015638.png" alt="image-20201218234917588" style="zoom:50%;" />
|
||||
|
||||
这是因为插件内置的一些功能需要Java来运行,而这些功能又依赖于一些较新的特性,这些特性最早出现在Java 11中。为了更好地学习和使用Java,这里推荐安装Java 11 或Java 12。网站教程或学校授课常常以Java 8为例,但对于初学者来说,几者无太大区别,Java 8的代码都可以被很好地支持。
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ tags:
|
||||
|
||||
---
|
||||
|
||||
# Minecraft上云笔记 - MC服务器快速搭建&MOD推荐&性能优化
|
||||
<!-- # Minecraft上云笔记 - MC服务器快速搭建&MOD推荐&性能优化 -->
|
||||
|
||||
|
||||
|
||||
@@ -89,7 +89,7 @@ services:
|
||||
ONLINE_MODE: "FALSE" #正版校验开关
|
||||
ALLOW_FLIGHT: "FALSE"
|
||||
USE_AIKAR_FLAGS: "false" # 一些优化
|
||||
RESOURCE_PACK: "https://blog-1301127393.cos.ap-shanghai.myqcloud.com/MC/Distribution/VNR-1.0.1.zip" # 我自己会用的资源包,这里填url
|
||||
RESOURCE_PACK: "https://blog-1301127393.file.myqcloud.com/MC/Distribution/VNR-1.0.1.zip" # 我自己会用的资源包,这里填url
|
||||
NETWORK_COMPRESSION_THRESHOLD: 512 # 网络优化
|
||||
restart: unless-stopped
|
||||
rcon:
|
||||
@@ -146,7 +146,7 @@ volumes:
|
||||
|
||||
上一张HMCL的主页的图:
|
||||
|
||||

|
||||

|
||||
|
||||
其他没有使用过的启动器暂时不予评价。
|
||||
|
||||
@@ -344,7 +344,7 @@ MC服务器的优化主要聚焦在两个地方
|
||||
* 联机游戏间或卡顿,但很快恢复
|
||||
* 查看日志发现空载时时竟然仍会`can't keep up`
|
||||
|
||||

|
||||

|
||||
|
||||
|
||||
|
||||
@@ -381,19 +381,19 @@ JVM优化的大头是GC。网上吹的漫天飞的G1GC的确有他的可取之
|
||||
|
||||
1. 优化前MC服务器的资源占用情况
|
||||
|
||||

|
||||

|
||||
|
||||
|
||||
|
||||
2. SERIAL GC (1 ONLINE)
|
||||
|
||||

|
||||

|
||||
|
||||
|
||||
|
||||
3. 进一步对mod优化后,2 online
|
||||
|
||||

|
||||

|
||||
|
||||
|
||||
|
||||
@@ -411,11 +411,11 @@ JVM优化的大头是GC。网上吹的漫天飞的G1GC的确有他的可取之
|
||||
|
||||
我家:
|
||||
|
||||

|
||||

|
||||
|
||||
|
||||
|
||||

|
||||

|
||||
|
||||
|
||||
|
||||
@@ -423,13 +423,13 @@ JVM优化的大头是GC。网上吹的漫天飞的G1GC的确有他的可取之
|
||||
|
||||
我安装的光影 Sildurs Vibrant Shaders v1.281 High 效果图
|
||||
|
||||

|
||||

|
||||
|
||||
|
||||
|
||||
Better HUD + 旅行地图效果图
|
||||
|
||||

|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ tags:
|
||||
|
||||
---
|
||||
|
||||
# Minecraft上云笔记 - MC自定义皮肤并支持联机
|
||||
<!-- # Minecraft上云笔记 - MC自定义皮肤并支持联机 -->
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ tags:
|
||||
- 环境配置
|
||||
---
|
||||
|
||||
# Win 10配置C语言环境的正确姿势
|
||||
<!-- # Win 10配置C语言环境的正确姿势 -->
|
||||
|
||||
> 本系列教程旨在为刚入门的编程语言学习者做好指南工作,开始编码,本应很简单
|
||||
>
|
||||
@@ -65,7 +65,7 @@ Cygwin的安装程序可以[从其官方站点下载](https://cygwin.com/install
|
||||
|
||||
|
||||
|
||||
<img src="https://blog-1301127393.cos.ap-shanghai.myqcloud.com/BlogImgs/20201227164821.png" alt="image-20201224235413884" style="zoom:50%;" />
|
||||
<img src="https://blog-1301127393.file.myqcloud.com/BlogImgs/20201227164821.png" alt="image-20201224235413884" style="zoom:50%;" />
|
||||
|
||||
|
||||
|
||||
@@ -73,7 +73,7 @@ Cygwin的安装程序可以[从其官方站点下载](https://cygwin.com/install
|
||||
|
||||
|
||||
|
||||
<img src="https://blog-1301127393.cos.ap-shanghai.myqcloud.com/BlogImgs/20201227164829.png" alt="image-20201224235436360" style="zoom:50%;" />
|
||||
<img src="https://blog-1301127393.file.myqcloud.com/BlogImgs/20201227164829.png" alt="image-20201224235436360" style="zoom:50%;" />
|
||||
|
||||
|
||||
|
||||
@@ -83,13 +83,13 @@ Cygwin的安装程序可以[从其官方站点下载](https://cygwin.com/install
|
||||
|
||||
网络条件不好的情况下,半分钟以内就会报错说网络连接失败。不过不用担心,接下来可以自己填写国内镜像地址。
|
||||
|
||||
<img src="https://blog-1301127393.cos.ap-shanghai.myqcloud.com/BlogImgs/20201227164833.png" alt="image-20201224235644342" style="zoom:50%;" />
|
||||
<img src="https://blog-1301127393.file.myqcloud.com/BlogImgs/20201227164833.png" alt="image-20201224235644342" style="zoom:50%;" />
|
||||
|
||||
在User URL的输入框输入`https://mirrors.tuna.tsinghua.edu.cn/cygwin/`并点击Add添加。之后点击下一步继续。
|
||||
|
||||
|
||||
|
||||
<img src="https://blog-1301127393.cos.ap-shanghai.myqcloud.com/BlogImgs/20201227164836.png" alt="image-20201224235719679" style="zoom:50%;" />
|
||||
<img src="https://blog-1301127393.file.myqcloud.com/BlogImgs/20201227164836.png" alt="image-20201224235719679" style="zoom:50%;" />
|
||||
|
||||
|
||||
|
||||
@@ -97,13 +97,13 @@ Cygwin的安装程序可以[从其官方站点下载](https://cygwin.com/install
|
||||
|
||||
之后会进入一个选择界面。这里选择要安装的组件。我们只需要C语言的编译器,这里在搜索框内输入`gcc`,然后在下方找到`gcc-core` 和 `gcc-g++`,点击右侧的三角形打开下拉菜单,选择9开头的版本。如下图所示。
|
||||
|
||||
<img src="https://blog-1301127393.cos.ap-shanghai.myqcloud.com/BlogImgs/20201227164839.png" alt="image-20201225000518139" style="zoom:50%;" />
|
||||
<img src="https://blog-1301127393.file.myqcloud.com/BlogImgs/20201227164839.png" alt="image-20201225000518139" style="zoom:50%;" />
|
||||
|
||||
|
||||
|
||||
选择完成后,一路点击下一步安装。如果出现如下的警告信息,直接用默认的设置,点下一步继续就可以了。
|
||||
|
||||
<img src="https://blog-1301127393.cos.ap-shanghai.myqcloud.com/BlogImgs/20201227164842.png" alt="image-20201225000604625" style="zoom:50%;" />
|
||||
<img src="https://blog-1301127393.file.myqcloud.com/BlogImgs/20201227164842.png" alt="image-20201225000604625" style="zoom:50%;" />
|
||||
|
||||
|
||||
|
||||
@@ -115,51 +115,51 @@ Cygwin的安装程序可以[从其官方站点下载](https://cygwin.com/install
|
||||
|
||||
在开始菜单中找到`Windows系统` - 控制面板。如果这里没有的话,按`Windows徽标键`+`S`可以呼出搜索面板,可以在此搜索控制面板菜单项。
|
||||
|
||||
<img src="https://blog-1301127393.cos.ap-shanghai.myqcloud.com/BlogImgs/20201227164856.png" alt="image-20201227152139118" style="zoom:50%;" />
|
||||
<img src="https://blog-1301127393.file.myqcloud.com/BlogImgs/20201227164856.png" alt="image-20201227152139118" style="zoom:50%;" />
|
||||
|
||||
在控制面板主页找到系统与安全。
|
||||
|
||||

|
||||

|
||||
|
||||
或者如果你的控制面板打开不是上面的布局而是下面这种布局的话,找到系统菜单。
|
||||
|
||||

|
||||

|
||||
|
||||
进入如下的页面,点击高级系统设置。
|
||||
|
||||
<img src="https://blog-1301127393.cos.ap-shanghai.myqcloud.com/BlogImgs/20201227164910.png" alt="image-20201225001127874" style="zoom:50%;" />
|
||||
<img src="https://blog-1301127393.file.myqcloud.com/BlogImgs/20201227164910.png" alt="image-20201225001127874" style="zoom:50%;" />
|
||||
|
||||
切换到高级选项卡,点击下方的环境变量菜单
|
||||
|
||||
<img src="https://blog-1301127393.cos.ap-shanghai.myqcloud.com/BlogImgs/20201227164913.png" alt="image-20201225000925342" style="zoom:50%;" />
|
||||
<img src="https://blog-1301127393.file.myqcloud.com/BlogImgs/20201227164913.png" alt="image-20201225000925342" style="zoom:50%;" />
|
||||
|
||||
在用户变量中,点击`Path`,点击下方编辑按钮进行编辑
|
||||
|
||||
<img src="https://blog-1301127393.cos.ap-shanghai.myqcloud.com/BlogImgs/20201227164916.png" alt="image-20201225000949291" style="zoom:50%;" />
|
||||
<img src="https://blog-1301127393.file.myqcloud.com/BlogImgs/20201227164916.png" alt="image-20201225000949291" style="zoom:50%;" />
|
||||
|
||||
输入Cygwin安装路径下的bin目录。如果你之前没有自定义安装路径,直接设置如图即可。否则设置为你自定义的路径。
|
||||
|
||||
**注意:这一步只要添加这一个就好**,不要看我截图里面的很干净,就把其他的都删了
|
||||
|
||||
<img src="https://blog-1301127393.cos.ap-shanghai.myqcloud.com/BlogImgs/20201227164919.png" alt="image-20201225001045854" style="zoom:50%;" />
|
||||
<img src="https://blog-1301127393.file.myqcloud.com/BlogImgs/20201227164919.png" alt="image-20201225001045854" style="zoom:50%;" />
|
||||
|
||||
一路点击确定。修改完之后重启下电脑确保改动生效。
|
||||
|
||||
在PowerShell中或者命令提示符中输入gcc并回车。如果显示no input files则表示安装成功。
|
||||
|
||||
<img src="https://blog-1301127393.cos.ap-shanghai.myqcloud.com/BlogImgs/20201227164921.png" alt="image-20201225001234917" style="zoom:50%;" />
|
||||
<img src="https://blog-1301127393.file.myqcloud.com/BlogImgs/20201227164921.png" alt="image-20201225001234917" style="zoom:50%;" />
|
||||
|
||||
### 配置编辑器
|
||||
|
||||
安装完了编译器,可以先来Hello world了
|
||||
|
||||

|
||||

|
||||
|
||||
|
||||
|
||||
按住Shift键,右键点击文件夹空白处,会出现在此处打开Powershell窗口的选项。
|
||||
|
||||
<img src="https://blog-1301127393.cos.ap-shanghai.myqcloud.com/BlogImgs/20201227164932.png" alt="image-20201225001744160" style="zoom:50%;" />
|
||||
<img src="https://blog-1301127393.file.myqcloud.com/BlogImgs/20201227164932.png" alt="image-20201225001744160" style="zoom:50%;" />
|
||||
|
||||
|
||||
|
||||
@@ -167,7 +167,7 @@ Cygwin的安装程序可以[从其官方站点下载](https://cygwin.com/install
|
||||
|
||||
输入`./hello.exe`即可执行该exe文件。
|
||||
|
||||

|
||||

|
||||
|
||||
|
||||
|
||||
@@ -201,41 +201,41 @@ https://code.visualstudio.com/sha/download?build=stable&os=win32-x64-user
|
||||
|
||||
|
||||
|
||||
<img src="https://blog-1301127393.cos.ap-shanghai.myqcloud.com/BlogImgs/20201227165016.png" alt="image-20201227155805507" style="zoom:50%;" />
|
||||
<img src="https://blog-1301127393.file.myqcloud.com/BlogImgs/20201227165016.png" alt="image-20201227155805507" style="zoom:50%;" />
|
||||
|
||||
|
||||
|
||||
<img src="https://blog-1301127393.cos.ap-shanghai.myqcloud.com/BlogImgs/20201227165019.png" alt="image-20201227155937465" style="zoom:50%;" />
|
||||
<img src="https://blog-1301127393.file.myqcloud.com/BlogImgs/20201227165019.png" alt="image-20201227155937465" style="zoom:50%;" />
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||

|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
|
||||

|
||||

|
||||
|
||||
|
||||
|
||||

|
||||

|
||||
|
||||
|
||||
|
||||
<img src="https://blog-1301127393.cos.ap-shanghai.myqcloud.com/BlogImgs/20201227165032.png" alt="image-20201227160939375" style="zoom:50%;" />
|
||||
<img src="https://blog-1301127393.file.myqcloud.com/BlogImgs/20201227165032.png" alt="image-20201227160939375" style="zoom:50%;" />
|
||||
|
||||
|
||||
|
||||
<img src="https://blog-1301127393.cos.ap-shanghai.myqcloud.com/BlogImgs/20201227165035.png" alt="image-20201227161003478" style="zoom:50%;" />
|
||||
<img src="https://blog-1301127393.file.myqcloud.com/BlogImgs/20201227165035.png" alt="image-20201227161003478" style="zoom:50%;" />
|
||||
|
||||
|
||||
|
||||
在输入栏中,在当前选项卡为**用户**的情况下,输入`run`并按回车进行搜索。修改`Run in Terminal`和 `Save File Before Run`的设置项。
|
||||
|
||||
<img src="https://blog-1301127393.cos.ap-shanghai.myqcloud.com/BlogImgs/20201227165038.png" alt="image-20201227161205762" style="zoom:50%;" />
|
||||
<img src="https://blog-1301127393.file.myqcloud.com/BlogImgs/20201227165038.png" alt="image-20201227161205762" style="zoom:50%;" />
|
||||
|
||||
|
||||
|
||||
@@ -245,20 +245,20 @@ https://code.visualstudio.com/sha/download?build=stable&os=win32-x64-user
|
||||
|
||||
点击左侧第一个按钮,来到文件管理面板。点击打开文件夹按钮,打开一个空白的文件夹(任意文件夹都可以,只是保存你代码的地方,一般一个干净整洁的新文件夹为宜)
|
||||
|
||||
<img src="https://blog-1301127393.cos.ap-shanghai.myqcloud.com/BlogImgs/20201227165059.png" alt="image-20201227163528187" style="zoom:50%;" />
|
||||
<img src="https://blog-1301127393.file.myqcloud.com/BlogImgs/20201227165059.png" alt="image-20201227163528187" style="zoom:50%;" />
|
||||
|
||||
|
||||
打开文件夹后,在空白处单击右键,新建一个文件,文件名输入为`hello.c`
|
||||
|
||||
|
||||

|
||||

|
||||
|
||||
|
||||
|
||||
点击右上角的三角形按钮即可自动编译运行你的C语言代码。在窗口下方的终端即可看到输出的`Hello,C!`字样。
|
||||
|
||||
|
||||
<img src="https://blog-1301127393.cos.ap-shanghai.myqcloud.com/BlogImgs/20201227165112.png" alt="image-20201227164041803" style="zoom:50%;" />
|
||||
<img src="https://blog-1301127393.file.myqcloud.com/BlogImgs/20201227165112.png" alt="image-20201227164041803" style="zoom:50%;" />
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -11,16 +11,14 @@ tags:
|
||||
---
|
||||
|
||||
|
||||
<!-- # 云服务器入门指南 -->
|
||||
|
||||
# 云服务器入门指南
|
||||
|
||||
<a name="4lA6Y"></a>
|
||||
## 前言
|
||||
各大厂商持续发力云计算,上云的门槛也越来越低。获取云服务器的门槛越来越低,但是真正使用好云服务器的难度一直都很高。本文旨在为新上云的小白提供方向性的指引并引导入坑 : )
|
||||
|
||||
<a name="7EZ9O"></a>
|
||||
|
||||
## 云服务器相关的几个概念
|
||||
<a name="8sCl1"></a>
|
||||
|
||||
### 服务器的操作系统
|
||||
主要分为两大阵营:Windows Server和Linux Server。前者一般自带可视化界面,基本兼容平时使用的exe程序,某种程度上也可以作为“云电脑”使用。后者一般不自带图形化界面,操作都通过特定命令完成,上手难度较高,但配置各种开发环境、安装各类高级工具比win平台更容易。没有Linux基础的用户建议先在本地建立虚拟机练习。
|
||||
|
||||
@@ -30,14 +28,14 @@ Linux Server主要的两个阵营为Debian系、RedHat系。主要的发行版
|
||||
- RedHat系:RedHat, CentOS, Fedora
|
||||
|
||||
对于初学者来说,最明显的区别在于前者使用 `apt install xxx` 来安装软件,而后者是通过 `yum install xxx` 来安装。
|
||||
<a name="VUFQF"></a>
|
||||
|
||||
### 公网IP
|
||||
IP可以理解为一台设备在互联网世界中的门牌号和地址,相当于知道某个具体的地址就能发快递包裹。IP分为公网IP和内网IP。顾名思义,内网IP一般用于公司或学校内部。一般来说,只知道一台设备的内网IP的情况下并不能准确定位这台设备,就类似于只知道你的朋友的名字,并不能直接给他寄快递,你必须要知道他学校/单位/家的地址才行。
|
||||
|
||||
服务器拥有公网IP的好处在于,你可以直接通过这个IP定位到你的服务器,相当于你的服务器在互联网世界中拥有了响当当的名号,只要说出这个名号,互联网世界的公民都能知道他,给他发消息。
|
||||
|
||||
_*此处公网内网IP的叙述仅适用于IPv4地址。更多关于IPv4地址和IPv6地址的相关信息参见文末扩展阅读。_
|
||||
<a name="oWycK"></a>
|
||||
|
||||
### 端口
|
||||
|
||||
端口的英文为port,有港口的意思。一般来说,一台设备不同的端口运行着不同的服务,我们可以很好的控制特定端口的开放与关闭,从而控制不同的服务是否对外开放,正如开放一个通商口岸。常见的服务端口有 `HTTP 80` `HTTPS 443` `DNS 53` `SSH 22`
|
||||
@@ -45,8 +43,9 @@ _*此处公网内网IP的叙述仅适用于IPv4地址。更多关于IPv4地址
|
||||
一个服务也可能不是仅仅通过一个端口提供服务,他可能会将一个大的功能拆分为几个子功能,通过不同的端口与外界通讯。如FTP,SMB等。你可以通过关闭指定端口来详细控制特定服务。当然如果你想想外面提供像FTP这样通过多个端口与外界通讯的端口,就要注意要确保他使用的所有端口都要设置为开放才能保证外界的正常访问。
|
||||
|
||||
|
||||
_*FTP是一种文件传输协议,你可以在某些电影资源的下载链接里看见以 `ftp://` 开头的链接。这说明这个电影资源是存放在某个FTP服务器上。_<br />_*关于FTP、SMB的端口使用及配置参见文末扩展阅读_
|
||||
<a name="daIMz"></a>
|
||||
_*FTP是一种文件传输协议,你可以在某些电影资源的下载链接里看见以 `ftp://` 开头的链接。这说明这个电影资源是存放在某个FTP服务器上。_
|
||||
_*关于FTP、SMB的端口使用及配置参见文末扩展阅读_
|
||||
|
||||
### 防火墙
|
||||
|
||||
防火墙(Firewall)某种程度上是控制本机与外界通讯的工具。下面以几个具体的实例来介绍下防火墙:
|
||||
@@ -55,8 +54,8 @@ _*FTP是一种文件传输协议,你可以在某些电影资源的下载链接
|
||||
- 公司有一台服务器搭载了一个仅面向公司员工的网站,希望仅允许公司内的员工访问。而公司内员工的内网IP个格式为192.168.*.*,那么就可以在防火墙中设置,仅允许来自IP为192.168.*.*的设备访问这台服务器的80端口,其他一律禁止
|
||||
- 近期互联网上流行一种病毒X通过计算机的1234端口感染其他机器。那么为了保护本机不受病毒影响,你可以在防火墙中设置关闭1234端口,禁止任何来源访问1234端口,从而将病毒X阻挡在防火墙外。
|
||||
|
||||
**注意:对于云服务器来说,可能会存在多重防火墙。一般Linux系统自身会有一套防火墙(firewalld/ufw等),云服务商会有一套网络防火墙(一般为网络安全组/网络访问控制等) **
|
||||
<a name="8vffy"></a>
|
||||
**注意:对于云服务器来说,可能会存在多重防火墙。一般Linux系统自身会有一套防火墙(firewalld/ufw等),云服务商会有一套网络防火墙(一般为网络安全组/网络访问控制等)**
|
||||
|
||||
### 几种远程连接方式对比
|
||||
|
||||
| **连接方式** | SSH | VNC | RDP |
|
||||
@@ -67,31 +66,44 @@ _*FTP是一种文件传输协议,你可以在某些电影资源的下载链接
|
||||
| **网络要求** | 极低 | 高 | 较高 |
|
||||
| **配置难度** | ★ | ★★★ | ★★ |
|
||||
|
||||
- _*__1 __部分Linux发行版自带VNC连接,不过大部分需手动启用_
|
||||
- _*__2__ RDP连接对于同为Win的机器更为容易,对于平台不一样的情况,配置比较麻烦_
|
||||
<a name="Q8OP1"></a>
|
||||
- 1 部分Linux发行版自带VNC连接,不过大部分需手动启用
|
||||
- 2 RDP连接对于同为Win的机器更为容易,对于平台不一样的情况,配置比较麻烦
|
||||
|
||||
## 快速入门须知
|
||||
|
||||
当你拥有了一台属于自己的云服务器,你发现面对复杂的控制台手足无措,不知道怎么连接,不知道能拿来干什么。那么你可以参考一下的步骤。**下文仅适用于Linux Server & 有一点点Linux操作经验的选手**。
|
||||
|
||||
<a name="YAQ3M"></a>
|
||||
|
||||
### 开启SSH远程连接
|
||||
<br />
|
||||
<a name="7ahE2"></a>
|
||||
|
||||
|
||||
#### 服务器端设置
|
||||
1.首先,登陆你的账户,打开云服务器的控制台,开机(不解释) <br />2.定位到你的云服务器,一般新的账户只有一台云服务器实例,点击其菜单,找到远程连接选项 <br />3.接下来会打开一个网页端的黑框,根据其提示,设置实例密码等等。这里记录你的系统用户名和密码。<br />4.一般网页端会有提示,根据具体情况开启SSH服务,设置允许root权限远程登录。具体的操作因平台和操作系统不同而不同,此处不再赘述。<br />5.现在到服务器菜单里找到网络设置/防火墙设置/网络安全组设置,点击进入,**开启服务器22端口的访问权限**。
|
||||
1.首先,登陆你的账户,打开云服务器的控制台,开机(不解释)
|
||||
2.定位到你的云服务器,一般新的账户只有一台云服务器实例,点击其菜单,找到远程连接选项
|
||||
3.接下来会打开一个网页端的黑框,根据其提示,设置实例密码等等。这里记录你的系统用户名和密码。
|
||||
4.一般网页端会有提示,根据具体情况开启SSH服务,设置允许root权限远程登录。具体的操作因平台和操作系统不同而不同,此处不再赘述。
|
||||
5.现在到服务器菜单里找到网络设置/防火墙设置/网络安全组设置,点击进入,**开启服务器22端口的访问权限**。
|
||||
|
||||
接下来在你的电脑上配置SSH远程访问。
|
||||
|
||||
<a name="51wEl"></a>
|
||||
#### 本地电脑设置
|
||||
1.1 Win10用户和Linux用户、Mac OS用户一般系统会预装ssh客户端。打开CMD命令控制符/PowerShell,输入ssh回车看是否有反应。**如果没有提示xxx找不到,可以直接到步骤2.1**。<br />1.2 如果没有反应,你需要到 设置-应用-可选功能 中,安装SSH客户端。<br />1.3 Windows其他版本用户需要安装第三方SSH客户端。这里推荐使用Putty。<br />2.1 接下来使用 `ssh 你的用户名@你的服务器IP` 来连接到你的服务器。注意**@符号前后没有空格**,**输完回车确认**。正常情况下可以成功连接到。<br />2.2 如果出现Permission denied,可能的原因有_用户名密码错误_/_未开启root账户远程登录_。<br />2.3 如果出现Connection time out,则大概率是你_IP地址填写错误_,也有可能是你的_服务器没开机_/_你的服务器系统没有默认开启ssh服务_/_防火墙未放行22端口_。
|
||||
1.1 Win10用户和Linux用户、Mac OS用户一般系统会预装ssh客户端。打开CMD命令控制符/PowerShell,输入ssh回车看是否有反应。**如果没有提示xxx找不到,可以直接到步骤2.1**。
|
||||
|
||||
1.2 如果没有反应,你需要到 设置-应用-可选功能 中,安装SSH客户端。
|
||||
|
||||
1.3 Windows其他版本用户需要安装第三方SSH客户端。这里推荐使用Putty。
|
||||
|
||||
2.1 接下来使用 `ssh 你的用户名@你的服务器IP` 来连接到你的服务器。注意**At符号@前后没有空格 ,输完回车确认**。正常情况下可以成功连接到。
|
||||
|
||||
2.2 如果出现Permission denied,可能的原因有`用户名密码错误` / `未开启root账户远程登录`。
|
||||
|
||||
2.3 如果出现Connection time out,则大概率是你`IP地址填写错误`,也有可能是你的`服务器没开机`/ `你的服务器系统没有默认开启ssh服务 `/ `防火墙未放行22端口`。
|
||||
|
||||
排查相关问题请带上相关关键字去搜索引擎搜索。
|
||||
|
||||
<a name="X9DJ5"></a>
|
||||
|
||||
### 安装软件
|
||||
<a name="by8iU"></a>
|
||||
|
||||
#### 安装软件的命令及常见问题
|
||||
|
||||
参见上文介绍操作系统的部分。不过具体安装的时候,经常会遇到的问题为安装需要root权限。一般来说,日常使用时为了安全期间,我们不会直接用root账户进行操作。通常的做法为创建一个普通的账户,当执行需要高权限的指令时在命令前加上sudo,或是使用 `su root` 来临时切换为root用户*,并输入密码来进行二次确认,以确保安全性。此处涉及到的操作有:
|
||||
@@ -103,33 +115,34 @@ _*FTP是一种文件传输协议,你可以在某些电影资源的下载链接
|
||||
具体操作可以以 `操作系统名称+操作关键字` 为关键字在搜索引擎中自行搜索详细教程。
|
||||
|
||||
_*临时切换为root用户,执行完命令后,记得用exit命令退出root账户_
|
||||
<a name="HY0JM"></a>
|
||||
|
||||
#### 镜像源的设置
|
||||
|
||||
执行完上述命令,当你尝试安装一个软件时,如果你云服务器提供商没有为你的系统进行“优化”的话,你会发现安装软件的速度非常慢。这是因为这些Linux系统基本都是由国外的厂商/组织进行开发,安装软件时需要到位于国外的服务器获取数据,你的网络请求可能会跨越大半个地球,网络速度也随着传输距离的增加不断减小*。国内有很多组织建立了公益性质的镜像站点,我们可以将安装程序的软件源设置为位于国内的镜像站点以大大提高软件安装下载的速度。<br />国内的镜像站点有**阿里云镜像站**、**清华大学tuna镜像站**、**中国科学技术大学开源镜像站**等。这些站点提供多种主流Linux发行版的软件安装源的镜像。不同操作系统更换软件源的操作有所不同,可以到以上镜像站点中查找特定系统更换软件源的详细步骤。
|
||||
执行完上述命令,当你尝试安装一个软件时,如果你云服务器提供商没有为你的系统进行“优化”的话,你会发现安装软件的速度非常慢。这是因为这些Linux系统基本都是由国外的厂商/组织进行开发,安装软件时需要到位于国外的服务器获取数据,你的网络请求可能会跨越大半个地球,网络速度也随着传输距离的增加不断减小*。国内有很多组织建立了公益性质的镜像站点,我们可以将安装程序的软件源设置为位于国内的镜像站点以大大提高软件安装下载的速度。
|
||||
国内的镜像站点有**阿里云镜像站**、**清华大学tuna镜像站**、**中国科学技术大学开源镜像站**等。这些站点提供多种主流Linux发行版的软件安装源的镜像。不同操作系统更换软件源的操作有所不同,可以到以上镜像站点中查找特定系统更换软件源的详细步骤。
|
||||
|
||||
_*请注意此处叙述并不准确,与一个站点通信的速度取决于很多因素。_
|
||||
<a name="Ivxvo"></a>
|
||||
|
||||
#### 常用工具的安装
|
||||
更换好了软件源后,我们就可以愉快的安装软件了。你可以尝试安装一下 `screenfetch` 的软件包进行测试,安装完成后输入 `screenfetch` 命令,他会在你的屏幕上输出字符画形式的系统图标和系统配置信息。
|
||||
|
||||
部分Linux发行版可能并没有预置很多的软件包,你可以根据自己的需要进行安装,如文本编辑工具 `nano` `vim` 等*。C编译工具 `gcc` ,C++编译工具 `g++` ,Java开发组件 `openjdk` 等。
|
||||
|
||||
_*推荐初学者使用易于上手的 `nano` 文本编辑器。大部分Linux发行版都有预置。_
|
||||
<a name="buNrX"></a>
|
||||
|
||||
## 初级玩法
|
||||
|
||||
- **搭建Wordpress网站**:为服务器安装好基础设施,部署wordpress服务。参见 [服务器LAMP部署](https://help.aliyun.com/document_detail/50774.html?spm=a2c4g.11186623.6.1134.26fc7ed9zbIv5a),[Wordpress搭建](https://segmentfault.com/a/1190000013035065)
|
||||
- **作为远程开发环境**: [VSCode进行远程开发](https://www.jianshu.com/p/0f2fb935a9a1)
|
||||
|
||||
|
||||
<a name="Nj6Qf"></a>
|
||||
|
||||
## 其他高级玩法
|
||||
|
||||
|
||||
参见:[知乎问答:自己拥有一台服务器可以做哪些很酷的事情?](https://www.zhihu.com/question/40854395)
|
||||
|
||||
<a name="QmdHY"></a>
|
||||
|
||||
## 扩展阅读
|
||||
|
||||
|
||||
|
||||
@@ -11,7 +11,6 @@ tags:
|
||||
- 局域网
|
||||
---
|
||||
|
||||
|
||||
序
|
||||
-
|
||||
|
||||
@@ -29,7 +28,7 @@ tags:
|
||||
由于要分配的公网 IPv6 地址是要由路由器从公网获取一个前缀然后再为局域网的每个支持 IPv6 的设备分配地址,这一项任务不能由内网的树莓派代劳,所以当时就没有改动,没想到现在竟然成了救命稻草。
|
||||
通过 IPv6 的方式,成功连接上了树莓派。查看了 AdGuardHome 的 DNS 服务以及 DHCP 服务,并没有发现任何异常。
|
||||
例行 SSH 连上查看日志。`sudo systemctl status AdGuardHome.service`,果然,发现了端倪。
|
||||

|
||||

|
||||
原来!DHCP 服务!是要单独监听 67 端口的!
|
||||
而一个小时之前,为了防止暴露在公网上的树莓派遭到攻击,我特地启用了防火墙,并设置规则为,除了放行的 DNS 53 等端口,其他默认屏蔽。想来应该是误伤了 DHCP 的 67 端口。而之前 DHCP 设置每个 IP 地址的租约为一个小时,即,每间隔一个小时才会重新进行一次 DHCP 请求。于是`sudo ufw allow 67/tcp`端口放行 DHCP 服务信息。win10 断网重连以令其重新获取 IP 地址。
|
||||
没想到还是不成功。AdGuardHome 的 DHCP 租约面板,依然显示没有任何设备连接。依据以往的经验,乖乖去查了 DHCP 所使用的端口信息,发现 DHCP 需要`67/udp`和`68/udp`两个端口,且还是使用 udp 连接。
|
||||
@@ -44,7 +43,7 @@ tags:
|
||||
-----
|
||||
|
||||
防火墙抵挡了来自外部的威胁,也会对现有的服务造成影响。除了网页访问的 80 和 443 端口,其他有固定端口的特定服务要手动在防火墙中添加规则。对于像 BT 下载这种没有固定端口的,需要根据实际设定来更新防火墙规则。
|
||||

|
||||

|
||||
图中为 Aria2 的默认监听端口,为了保证正常的 BT 下载,需要保证这个范围的端口也添加进防火墙允许通过的规则。
|
||||
最简单有效的办法是,将所有出站的请求默认允许,对于外部传入的请求,除了必要的几个服务,其他一概默认禁止。
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ tags:
|
||||
|
||||
---
|
||||
|
||||
# 伪·苹果全家桶喜添新成员:小米手环6使用体验
|
||||
<!-- # 伪·苹果全家桶喜添新成员:小米手环6使用体验 -->
|
||||
|
||||
继iPad 2018,iPhone Se2,漫步者无线耳机(伪·AirPods),黑苹果Dell G3 3579(伪·MacBook Pro),千元捡垃圾华强北黑苹果主机+4K显示器(伪·iMac)后,我的伪·苹果全家桶终于迎来了新成员:智能穿戴设备,小米手环6。
|
||||
|
||||
|
||||
@@ -10,7 +10,6 @@ tags:
|
||||
---
|
||||
|
||||
|
||||
|
||||
在一次编译 VSCode 的项目中,跨越千山万水,解决重重依赖后,终于来到了编译环节。然而才开始没多久,就出现了一个匪夷所思的报错。
|
||||
|
||||
谷歌一番,又到 /var/log/message 里查看了一番系统日志,竟然说是内存爆满,进程被 kill 了。想来我阿里云的那台服务器内存的统计曲线基本就没超过一半,今儿个怎么会出现内存爆掉的情况。又是一顿折腾发现这台阿里云的机子 Swap 大小竟然为 0??Swap 为物理内存达到一定临界值之后,系统将磁盘的一部分空间作内存使用,一般在 Windows 系统上都是由系统自动管控,新安装的 Linux 桌面发行版也会在安装时提醒用户设置,这坑爹的阿里云在安装的时候没给我分配 Swap 分区?
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
title: 我的RSS方案与心得
|
||||
date: 2021-05-10
|
||||
lastmod: 2021-05-10
|
||||
lastmod: 2021-12-03
|
||||
cover: https://www.gethow.org/wp-content/uploads/2013/07/feed-297x140.jpg
|
||||
description: 使用RSS已经一年有余,这种对信息的主动掌握让我获取信息的质量和密度都上升了一个台阶。最早是使用TTRSS做服务端,安卓手机使用FeedMe订阅,主要订阅的是有源的商业内容站点、个人博客以及其他人分享的使用Feed43或Feedburner压制的源。随着我逐渐加大RSS阅读在我闲暇、琐碎时间内的比重,我对RSS有了更高的期望和要求,便开始了对如何构建更高效、更易用的RSS方案的探索。
|
||||
draft: false
|
||||
@@ -15,45 +15,57 @@ categories:
|
||||
- 指南
|
||||
---
|
||||
|
||||
# 我的 RSS 方案与心得
|
||||
<!-- # 我的 RSS 方案与心得 -->
|
||||
|
||||
使用 RSS 已经一年有余,这种对信息的主动掌握让我获取信息的质量和密度都上升了一个台阶。最早是使用 TTRSS 做服务端,安卓手机使用 FeedMe 订阅,主要订阅的是有源的商业内容站点、个人博客以及其他人分享的使用 Feed43 或 Feedburner 压制的源。随着我逐渐加大 RSS 阅读在我闲暇、琐碎时间内的比重,我对 RSS 有了更高的期望和要求,便开始了对如何构建更高效、更易用的 RSS 方案的探索。
|
||||
使用 RSS 已经一年有余,这种对信息的主动掌握让我获取信息的质量和密度都上升了一个台阶。最早是使用 TTRSS 做服务端,安卓手机使用 [FeedMe](https://github.com/seazon/FeedMe) 订阅,主要订阅的是有源的商业内容站点、个人博客以及其他人分享的使用 Feed43 或 Feedburner 压制的源。随着我逐渐加大 RSS 阅读在我闲暇、琐碎时间内的比重,我对 RSS 有了更高的期望和要求,便开始了对如何构建更高效、更易用的 RSS 方案的探索。
|
||||
|
||||
## 借助 RSSHub 订阅各种热门冷门网站
|
||||
## 0x01 借助 RSSHub 订阅各种热门冷门网站
|
||||
|
||||
RSSHub 是个很赞的项目,它聚集了众多 RSS 爱好者来为现代的网站构建 RSS 订阅源。众所周知,网站提供 RSS 并不能为他的站点带来更高的收入,反而会减少主站的访客数。借助 RSSHub 可以方便地通过 RSS 订阅知乎、豆瓣、Facebook 等现代媒体社交平台。
|
||||
[RSSHub](https://docs.rsshub.app/) 是个很赞的项目,它聚集了众多 RSS 爱好者来为现代的网站构建 RSS 订阅源。众所周知,网站提供 RSS 并不能为他的站点带来更高的收入,反而会减少主站的访客数。借助 RSSHub 可以方便地通过 RSS 订阅知乎、豆瓣、Facebook 等现代媒体社交平台。
|
||||
|
||||
## 获取 Feed 文章全文
|
||||
## 0x02 获取 Feed 文章全文
|
||||
|
||||
部分 RSS 源并不会在 xml 文件内提供文章全文,说白了是想让你点进他们的网站去浏览,这样网页上的广告才有可能被你点击。解决的方案有很多,方便起见我使用了 TTRSS 的插件 Readability 和 Mercury。两者都不能完美适配所有站点,同时启用这两者以实现互补。
|
||||
|
||||
## 无障碍阅读繁体中文 Feed
|
||||
## 0x03 无障碍阅读繁体中文 Feed
|
||||
|
||||
发现了几个质量不错的繁体中文信息源,主要是台湾的站点,如泛科学。由于文字和部分两岸文化差异,直接阅读繁体中文的文章有些困难。我的解决方案是使用 OpenCC 简繁转换服务,它能够对可映射的简繁汉字以及同一事物的两岸不同的表述进行翻译,输出的简体中文版文章基本可以无障碍阅读。Awesome-TTRSS 内有集成相应的插件和服务程序。
|
||||
|
||||
不过原作者是使用 node.js 编写的服务端,翻译数据库得不到及时更新,如翻译后还是写的是`义大利`而不是`意大利`。而且 docker image 体积 100+M,内存占用也较大。我在考虑用 Go 语言重写 OpenCC 的服务端并兼容 TTRSS 的 OpenCC 插件,并加入 CI 自动从上游同步翻译数据库。
|
||||
|
||||
## 为不支持 RSS 的网站自制源
|
||||
## 0x04 为不支持 RSS 的网站自制源
|
||||
|
||||
繁茂如 RSSHub 也不能保证拥有所有站点的 RSS 源。对于自制源,网上的方案大多数为使用 Feed43 和 Feedburner,但是人家是商业服务,虽然使用确实方便,但说到底还是为了商业。白嫖用户限制多不说,天知道哪天会有 break change 或者直接被墙或者跑路。最稳妥的做法还是自建。
|
||||
|
||||
手写爬虫程序简单灵活,不过后期维护难度较高而且难以复用。对于我想要订阅而有没有现成的源的网站,我的解决方案主要是两个:
|
||||
|
||||
### 为 RSSHub 编写目标站点的规则,并 Pull Request 申请合并
|
||||
### 1. 为 RSSHub 编写目标站点的规则,并 Pull Request 申请合并
|
||||
|
||||
RSSHub 除了提供众多现成的各类站点的 RSS 规则之外,也提供了快速构建一个站点的 RSS 源的常用工具类和模板。需要对 Javascript 和爬虫技术有一定了解。很荣幸能提交了几个 pr 并且已经合并进了主分支,如 CQUT 的教务处通知和知乎的用户文章列表。
|
||||
RSSHub 除了提供众多现成的各类站点的 RSS 规则之外,也提供了快速构建一个站点的 RSS 源的常用工具类和模板。需要对 JavaScript 和爬虫技术有一定了解。很荣幸能提交了几个 pr 并且已经合并进了主分支,如 CQUT 的教务处通知和[知乎的用户文章列表](https://docs.rsshub.app/social-media.html#zhi-hu-yong-hu-wen-zhang)。
|
||||
|
||||
### 使用 Huginn 为目标站点自制源
|
||||
### 2. 使用 Huginn 为目标站点自制源
|
||||
|
||||
Huginn 是一个强大的 IFTTT 应用,用它来生成 RSS 源简直是大材小用(主要是他动辄 200M 的内存占用)。不过某些情况下我需要监视特定站点并在内容变化时得到通知,个人向为主,这类就不适合写 RSSHub 的规则。
|
||||
[Huginn](https://github.com/huginn/huginn) 是一个强大的 [IFTTT](https://sspai.com/post/25270#!) 应用,用它来生成 RSS 源简直是大材小用(主要是他动辄 200M 的内存占用)。不过某些情况下我需要监视特定站点并在内容变化时得到通知,个人向为主,这类就不适合写 RSSHub 的规则。
|
||||
|
||||
使用门槛比 RSSHub 略低,可视化界面还是比较友好的,不过新手上手还是会有点困难,了解了 Huginn 的工作原理和基本的 Liquid 语法之后就手到擒来了。
|
||||
|
||||
## 解锁海外 RSS 源
|
||||
### 3. 使用feed43和rss-proxy这类可视化工具自助生成RSS链接
|
||||
|
||||
手写解析规则还是太麻烦,很多网页结构很简单根本没必要单独花时间写一堆解析规则,而且有些时候只是想临时订阅一段时间或是订阅个很小的网站,不想大费周章,选择feed43这类工具不失为一个轻量又便捷的选择。不过[feed43](https://feed43.com/)对免费账户创建的RSS并不保证稳定,时常无法连接甚至直接失效。在Github上发现一个不错的替代品[rss-proxy](https://github.com/damoeb/rss-proxy/),一个可视化的,快速自助生成站点RSS链接的工具。
|
||||
|
||||

|
||||
|
||||
填入目标网址就可以自动解析目标网页,程序会自动检测网页上的列表内容,可以自己选择要订阅哪个列表,然后就可以生成一个RSS链接。生成的RSS链接包括的信息有目标网址、要订阅的目标列表的节点信息和输出格式(RSS/ATOM)等,也就是说,rss-proxy并不像feed43会把解析的规则存储在服务端,它是直接编码在url里面的!rss-proxy开源支持自部署,不想用它提供的公用实例也可以自建,迁移零门槛。rss-proxy也支持调用无头浏览器渲染异步获取数据的网页,可玩性很高。
|
||||
|
||||
->>>> [rss-proxy公用实例](https://rssproxy-v1.migor.org/),可以点击体验下,还是很方便的
|
||||
|
||||
使用了一段时间体验挺不错,有个小问题就是对UTF-8以外的编码不太友好。
|
||||
|
||||
## 0x05 解锁海外 RSS 源
|
||||
|
||||
由于众所周知的原因,我国的互联网是不「互联」的。rsshub.app 部署在国外,现已基本无法直接访问。国内服务器上自建的 RSSHub 订阅如 Facebook 等国外站点更是不可行。为此我使用了 Clash 代理,并添加了一些公开的机场订阅,虽然速度和稳定性不是很高,但对于 RSS 这种需求还是绰绰有余的。又完善了一些爬墙的规则,比如对 google、facebook,rsshub.app 走代理,内网地址和 CN 的 IP 直连,反爬严格的网站完全走随机节点。一番操作下来,基本可以实现全球 RSS 订阅自由了 😁
|
||||
|
||||
## RSS 订阅破 CloudFlare 五秒盾
|
||||
## 0x06 RSS 订阅破 CloudFlare 五秒盾
|
||||
|
||||
如上所述,海外 RSS 源走公用机场可以解决国内的网络问题。但是很多站点会使用 CloudFlare 做 CDN 和防火墙,我们使用的公用机场其实一大半都是被用作非法用途的,IP 很多都在人家的黑名单里面,但凡通过那个节点访问 CloudFlare 保护的网站都会触发五秒盾防御,浏览器访问倒是没什么,但是可苦了 RSS。
|
||||
|
||||
@@ -67,13 +79,13 @@ google 了一番,没人写过我这个问题。。。人家都是爬虫绕过
|
||||
|
||||
可能的改进:匹配到 CF 节点,选择从本机连接东亚的连接较好的 CF 节点来请求目标站点的内容,可以一次解决那两个问题
|
||||
|
||||
以上都被我整合进了我的 Github 项目 RSSManX
|
||||
以上都被我整合进了我的 Github 项目 [RSSman X](https://github.com/Colin-XKL/RSSmanX)
|
||||
|
||||
> [RSSman X](https://github.com/Colin-XKL/RSSmanX) 基于 docker-compsoe 提供容器化 TTRSS 与 RSSHUB 等组件的一键部署,整合实用组件为你带来最佳 RSS 体验
|
||||
>
|
||||
> **Feature: 简单一键部署,常用组件整合,自动更新支持,服务健康自检支持,海外站点 RSS 解锁**
|
||||
|
||||

|
||||

|
||||
|
||||
感兴趣的朋友可以关注一下 🍺
|
||||
|
||||
|
||||
@@ -36,9 +36,9 @@ tags:
|
||||
|
||||

|
||||
|
||||

|
||||

|
||||
|
||||

|
||||

|
||||
|
||||
这样的广告呢,虽然他的侵略性或许比以往更小了,不过还是有点碍眼。而且在某种程度上,依然可能会误导家里的老人或是小孩。为了统一家庭的互联网体验,减少不必要的麻烦,这个广告也是我们的 target。由于这个广告是嵌入搜索结果中的,如果你用之前的小伎俩,打算单独屏蔽这个广告对应的元素的话,你就要失望了。因为他会连带着屏蔽所有的搜索结果。这显然是不可取的。下面我们要介绍另外两个工具。
|
||||
|
||||
@@ -52,16 +52,16 @@ tags:
|
||||

|
||||
|
||||
安装好油猴插件后,你可以在 [Greasyfork.org](https://greasyfork.org/zh-CN/) 上下载各种黑科技般的脚本。安装成功后,油猴会在你进入符合条件的网页时自动启用对应的脚本。比如,你安装了 AC 的这个脚本,而这个网页是适配了某度的,那么当你进入某度的网页时,油猴就会自动启用这个脚本。快来领取属于你的纯净版度度吧。
|
||||

|
||||

|
||||
|
||||
前面介绍的几个,都只是借助第三方工具来屏蔽网页上特定的碍眼的元素。如果我们要阅读来自不同网站的新闻,为了获得机制纯净的阅读体验,难道要用 AdBlock 一个一个选中页面中除文章主体文字以外其他所有元素? 对于这种页面结构非常固定的一类网站,我们是否可以通过某种方式,来只提取页面主体的文字,以优化我们的阅读体验呢?
|
||||
|
||||
### 使用浏览器自带的阅读工具
|
||||
|
||||
苹果很早就想到了这一点,Safari 浏览器可以识别当前的的页面是否是一个结构简单,文字为主题的页面。在符合条件的网页上,Safari 会提示你使用阅读工具来优化页面,以获得更好的阅读体验。当然,你也可以手动启用他。
|
||||

|
||||

|
||||
微软也不甘示弱,在随 Win10 推出的 Microsoft Edge 上,也内置了阅读工具。你可以在地址栏的右边找到他。
|
||||

|
||||

|
||||
_[注:区别与 2020 年新的基于 Chromium 内核的新 Edge 浏览器,此处指的是老版 Edge HTML 内核的 Microsoft Edge 浏览器]_
|
||||
|
||||
### 使用第三方阅读工具 - [简阅 SimpRead](http://ksria.com/simpread/)
|
||||
|
||||
@@ -11,8 +11,6 @@ tags:
|
||||
---
|
||||
|
||||
|
||||
* Last Update: April 9th,2019
|
||||
|
||||
从两年前第一次听说黑苹果,到暑假第一次装黑苹果,再到几个月前成功装上黑苹果,一路走来,收获颇丰。在这里将 Dell G3 大致安装过程记录下来。
|
||||
|
||||
配置:Dell G3 3579 Intel i5-8300H UHD630 GTX1050Ti
|
||||
|
||||
21
layouts/partials/comments.html
Normal file
21
layouts/partials/comments.html
Normal file
@@ -0,0 +1,21 @@
|
||||
<div id="gitalk-container" style="
|
||||
margin: 20px auto;
|
||||
max-width: 800px;
|
||||
padding: 20px;
|
||||
width: 100%;
|
||||
text-align: left;
|
||||
"></div>
|
||||
<script src="https://cdn.jsdelivr.net/npm/gitalk@1/dist/gitalk.min.js"></script>
|
||||
<script>
|
||||
const gitalk = new Gitalk({
|
||||
clientID: '94eae56b89dcc480bf4d',
|
||||
clientSecret: '1e4218c0293a998a9483ab09ba9ace46cabc76b3',
|
||||
repo: 'Colinx-Blog', // The repository of store comments,
|
||||
owner: 'Colin-XKL',
|
||||
admin: ['Colin-XKL'],
|
||||
id: decodeURI(location.pathname), // Ensure uniqueness and length less than 50
|
||||
distractionFreeMode: false // Facebook-like distraction free mode
|
||||
});
|
||||
gitalk.render('gitalk-container');
|
||||
</script>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/gitalk@1/dist/gitalk.min.css">
|
||||
@@ -1,2 +1,7 @@
|
||||
<script async src="//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"></script>
|
||||
<style type="text/css">body {font-weight: unset !important;}</style>
|
||||
<script async src="https://busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"></script>
|
||||
<style type="text/css">body {font-weight: unset !important;font-family: -apple-system,BlinkMacSystemFont,Helvetica Neue,PingFang SC,Microsoft YaHei,Source Han Sans SC,Noto Sans CJK SC,WenQuanYi Micro Hei,sans-serif!important;}</style>
|
||||
|
||||
<meta http-equiv="x-dns-prefetch-control" content="on">
|
||||
<link rel="dns-prefetch" href="//api.github.com" />
|
||||
<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>">
|
||||
@@ -1,3 +1,4 @@
|
||||
<<<<<<< HEAD
|
||||
<div id="gitalk-container" style="
|
||||
margin: 20px auto;
|
||||
max-width: 800px;
|
||||
@@ -71,6 +72,28 @@
|
||||
}
|
||||
</style>
|
||||
|
||||
=======
|
||||
|
||||
<!-- 超链接样式 -->
|
||||
<style>
|
||||
.post-tags a,
|
||||
.post-content a {
|
||||
text-decoration: none;
|
||||
border-bottom: 1px dashed #d71a1b;
|
||||
-webkit-transition: all .2s;
|
||||
transition: all .2s;
|
||||
}
|
||||
|
||||
.post-tags a:hover,
|
||||
.post-content a:hover,
|
||||
nav a:hover {
|
||||
text-decoration: none;
|
||||
border-bottom: 1px solid #d71a1b;
|
||||
-webkit-transition: all .2s ease-out;
|
||||
transition: all .2s ease-out;
|
||||
}
|
||||
</style>
|
||||
>>>>>>> dce5b411423b26f3b76842da9f7e8580a51953c2
|
||||
<footer class="footer">
|
||||
<span id="busuanzi_container_site_pv" style='display:none'>
|
||||
嗨,第<span id="busuanzi_value_site_pv"></span>位小伙伴 : )
|
||||
@@ -93,7 +116,6 @@
|
||||
|
||||
<script src="{{ "assets/main.js" | absURL }}"></script>
|
||||
<script async src="{{ "assets/prism.js" | absURL }}"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/gitalk@1/dist/gitalk.min.js"></script>
|
||||
|
||||
<script>
|
||||
meta = document.querySelectorAll('.post:not(.on-list) .post-meta')[0];
|
||||
@@ -101,19 +123,7 @@
|
||||
if (meta) meta.innerHTML = meta.innerHTML + visitors
|
||||
</script>
|
||||
|
||||
<script>
|
||||
const gitalk = new Gitalk({
|
||||
clientID: '94eae56b89dcc480bf4d',
|
||||
clientSecret: '1e4218c0293a998a9483ab09ba9ace46cabc76b3',
|
||||
repo: 'Colinx-Blog', // The repository of store comments,
|
||||
owner: 'Colin-XKL',
|
||||
admin: ['Colin-XKL'],
|
||||
id: decodeURI(location.pathname), // Ensure uniqueness and length less than 50
|
||||
distractionFreeMode: false // Facebook-like distraction free mode
|
||||
});
|
||||
gitalk.render('gitalk-container');
|
||||
</script>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/gitalk@1/dist/gitalk.css">
|
||||
|
||||
<!-- Sentry -->
|
||||
<script src="https://browser.sentry-cdn.com/6.15.0/bundle.tracing.min.js"
|
||||
integrity="sha384-1k7XKRQgqjUbNyG2sI+qsY8HTHMOeLdycMx6hoGuNSANZ3WrMa3LXkr+M4t+SIpF"
|
||||
|
||||
@@ -3,7 +3,7 @@ publish = "public"
|
||||
command = "hugo --gc --minify"
|
||||
|
||||
[context.production.environment]
|
||||
HUGO_VERSION = "0.69.2"
|
||||
HUGO_VERSION = "0.91.2"
|
||||
HUGO_ENV = "production"
|
||||
HUGO_ENABLEGITINFO = "true"
|
||||
|
||||
@@ -11,20 +11,20 @@ HUGO_ENABLEGITINFO = "true"
|
||||
command = "hugo --gc --minify --enableGitInfo"
|
||||
|
||||
[context.split1.environment]
|
||||
HUGO_VERSION = "0.69.2"
|
||||
HUGO_VERSION = "0.91.2"
|
||||
HUGO_ENV = "production"
|
||||
|
||||
[context.deploy-preview]
|
||||
command = "hugo --gc --minify --buildFuture -b $DEPLOY_PRIME_URL"
|
||||
|
||||
[context.deploy-preview.environment]
|
||||
HUGO_VERSION = "0.69.2"
|
||||
HUGO_VERSION = "0.91.2"
|
||||
|
||||
[context.branch-deploy]
|
||||
command = "hugo --gc --minify -b $DEPLOY_PRIME_URL"
|
||||
|
||||
[context.branch-deploy.environment]
|
||||
HUGO_VERSION = "0.69.2"
|
||||
HUGO_VERSION = "0.91.2"
|
||||
|
||||
[context.next.environment]
|
||||
HUGO_ENABLEGITINFO = "true"
|
||||
|
||||
Reference in New Issue
Block a user