mirror of
https://github.com/Colin-XKL/Colinx-Blog.git
synced 2026-03-08 05:01:27 +08:00
chore: lint text and auto correct
This commit is contained in:
committed by
GitHub
parent
263610a74c
commit
663265dccc
@@ -10,7 +10,7 @@ enableRobotsTXT = true
|
|||||||
# init theme sub module by this command
|
# init theme sub module by this command
|
||||||
# git submodule update --init --recursive
|
# git submodule update --init --recursive
|
||||||
[markup.goldmark.renderer]
|
[markup.goldmark.renderer]
|
||||||
unsafe = true #避免MarkDown内嵌的HTML被优化掉,尤其是Typora缩放过的图片
|
unsafe = true #避免 MarkDown 内嵌的 HTML 被优化掉,尤其是 Typora 缩放过的图片
|
||||||
|
|
||||||
[params]
|
[params]
|
||||||
# dir name of your blog content (default is `content/posts`)
|
# dir name of your blog content (default is `content/posts`)
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ lastmod: 2021-05-10
|
|||||||
|
|
||||||
## About Me
|
## About Me
|
||||||
|
|
||||||
00 后,性别男,爱好女,CS专业,软件攻城狮一枚,业余摄影师、音乐制作人,RSS 爱好者
|
00 后,性别男,爱好女,CS 专业,软件攻城狮一枚,业余摄影师、音乐制作人,RSS 爱好者
|
||||||
|
|
||||||
### I Like
|
### I Like
|
||||||
|
|
||||||
@@ -19,7 +19,7 @@ lastmod: 2021-05-10
|
|||||||
## Catch Me
|
## Catch Me
|
||||||
|
|
||||||
- 博客主页:https://blog.colinx.one
|
- 博客主页:https://blog.colinx.one
|
||||||
- Github 主页: https://github.com/Colin-XKL
|
- Github 主页:https://github.com/Colin-XKL
|
||||||
- Email: Colin_XKL#outlook.com
|
- Email: Colin_XKL#outlook.com
|
||||||
|
|
||||||
|
|
||||||
@@ -27,6 +27,6 @@ lastmod: 2021-05-10
|
|||||||
|
|
||||||
获取支持/服务
|
获取支持/服务
|
||||||
|
|
||||||
支持公益事业发展, 如任何非盈利机构有 IT 服务部署 / 网站托管或维护 / 架构咨询 / 问题排障 等需求可直接联系, 在能力范围内提供无偿支持
|
支持公益事业发展,如任何非盈利机构有 IT 服务部署 / 网站托管或维护 / 架构咨询 / 问题排障 等需求可直接联系,在能力范围内提供无偿支持
|
||||||
|
|
||||||
其他个人或企业有相关需求的可通过email免费咨询或以其他形式提供付费支持
|
其他个人或企业有相关需求的可通过 email 免费咨询或以其他形式提供付费支持
|
||||||
@@ -3,7 +3,7 @@
|
|||||||
title: 2020 年度总结
|
title: 2020 年度总结
|
||||||
date: 2020-12-26
|
date: 2020-12-26
|
||||||
lastmod: 2020-12-31
|
lastmod: 2020-12-31
|
||||||
description: 新冠疫情侵袭下的2020过的额外的快,仿佛上一秒还在家里上完课,下一刻就是秋季复学,一晃眼又是一年圣诞,2020就快过完了。这里记录一下我的2020.
|
description: 新冠疫情侵袭下的 2020 过的额外的快,仿佛上一秒还在家里上完课,下一刻就是秋季复学,一晃眼又是一年圣诞,2020 就快过完了。这里记录一下我的 2020.
|
||||||
categories:
|
categories:
|
||||||
- 杂记
|
- 杂记
|
||||||
- 年度总结
|
- 年度总结
|
||||||
@@ -14,17 +14,17 @@ tags:
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
<!-- # 2020年度总结 -->
|
<!-- # 2020 年度总结 -->
|
||||||
|
|
||||||
## 序
|
## 序
|
||||||
|
|
||||||
新冠疫情侵袭下的2020过的额外的快,仿佛上一秒还在家里上完课,下一刻就是秋季复学,一晃眼又是一年圣诞,2020就快过完了。这里记录一下我的2020.
|
新冠疫情侵袭下的 2020 过的额外的快,仿佛上一秒还在家里上完课,下一刻就是秋季复学,一晃眼又是一年圣诞,2020 就快过完了。这里记录一下我的 2020.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## 我的2020简述
|
## 我的 2020 简述
|
||||||
|
|
||||||
* 博客2.0、3.0
|
* 博客 2.0、3.0
|
||||||
* 刷完了几部经典动漫
|
* 刷完了几部经典动漫
|
||||||
* 刷完了我的三体和三体三部曲
|
* 刷完了我的三体和三体三部曲
|
||||||
* 上半年在家中了花花草草
|
* 上半年在家中了花花草草
|
||||||
@@ -36,30 +36,30 @@ tags:
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
## 2020的遗憾
|
## 2020 的遗憾
|
||||||
|
|
||||||
* 挖了好些坑都没填
|
* 挖了好些坑都没填
|
||||||
* 种的花没能看到开花,人又在学校了
|
* 种的花没能看到开花,人又在学校了
|
||||||
* 没能集齐老家四季的照片
|
* 没能集齐老家四季的照片
|
||||||
* 2020唯一的Logic作品没能上线,还没到令自己满意的程度
|
* 2020 唯一的 Logic 作品没能上线,还没到令自己满意的程度
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## -
|
## -
|
||||||
|
|
||||||
疫情给所有人都带来了冲击,很庆幸的是,疫情于我,于我的家庭,都没有造成任何大的影响。2020有再多遗憾,在这一条面前都不值一提。曾经一度想逃离这个地区,在后疫情时代看来,大的灾难面前,不发达的内陆地区和偏远郊区是不可多得的避难所。人口和资源会自然地聚集在大城市那些经济发达的地区,但除此之外的地区并不是荒无人烟自有他的道理。
|
疫情给所有人都带来了冲击,很庆幸的是,疫情于我,于我的家庭,都没有造成任何大的影响。2020 有再多遗憾,在这一条面前都不值一提。曾经一度想逃离这个地区,在后疫情时代看来,大的灾难面前,不发达的内陆地区和偏远郊区是不可多得的避难所。人口和资源会自然地聚集在大城市那些经济发达的地区,但除此之外的地区并不是荒无人烟自有他的道理。
|
||||||
|
|
||||||
2020下的中国无疑是值得肯定的,社会主义集中力量办大事的特征在这一场风波中展现地淋漓尽致,资本主义过渡不香了,所有的固有印象都被打破,疫情揭开了这层虚伪的面具,我能够以几乎为0的代价得到这个经验是我人生莫大的荣幸。
|
2020 下的中国无疑是值得肯定的,社会主义集中力量办大事的特征在这一场风波中展现地淋漓尽致,资本主义过渡不香了,所有的固有印象都被打破,疫情揭开了这层虚伪的面具,我能够以几乎为 0 的代价得到这个经验是我人生莫大的荣幸。
|
||||||
|
|
||||||
除了对制度的认知的变化,2020我也在重新思考两个问题。
|
除了对制度的认知的变化,2020 我也在重新思考两个问题。
|
||||||
|
|
||||||
1. **什么是我想要的?**
|
1. **什么是我想要的?**
|
||||||
|
|
||||||
2. **如何逃离IT业的内卷**
|
2. **如何逃离 IT 业的内卷**
|
||||||
|
|
||||||
这两个问题本质上是同一个。十年来我想要的一直都没有变,在学生时代也一直没有足够的眼界、见识、能力和精力去仔细思考这个问题。
|
这两个问题本质上是同一个。十年来我想要的一直都没有变,在学生时代也一直没有足够的眼界、见识、能力和精力去仔细思考这个问题。
|
||||||
|
|
||||||
但这两个问题,在2020年的结束,我还是不能给自己一个答案。但是,正如 *数码宝贝:羁绊* 中所阐述的那样,我会努力去寻求自身更多的可能性,不放弃希望与初心。在没有答案之前,我选择
|
但这两个问题,在 2020 年的结束,我还是不能给自己一个答案。但是,正如 *数码宝贝:羁绊* 中所阐述的那样,我会努力去寻求自身更多的可能性,不放弃希望与初心。在没有答案之前,我选择
|
||||||
|
|
||||||
* **保持健康的身体**,虽然近视了没办法,但只要我还有良好的听觉,我就还能欣赏世界上美妙的音乐;只要我还有良好的味觉,我就还能品尝世界上美味的食物;只要我还有良好的嗅觉,我就还能品味大自然的芬芳;只要我还能唱,我就还有机会把心中的旋律唱出来;只要我还能说,我就还有机会把脑海的故事说出来;还有只要我还有双脚,我就还有机会丈量世界;只要我还有双手,我就还有机会创造世界;
|
* **保持健康的身体**,虽然近视了没办法,但只要我还有良好的听觉,我就还能欣赏世界上美妙的音乐;只要我还有良好的味觉,我就还能品尝世界上美味的食物;只要我还有良好的嗅觉,我就还能品味大自然的芬芳;只要我还能唱,我就还有机会把心中的旋律唱出来;只要我还能说,我就还有机会把脑海的故事说出来;还有只要我还有双脚,我就还有机会丈量世界;只要我还有双手,我就还有机会创造世界;
|
||||||
* **读更多的书,看更多的电影**。也许这些迷茫只是因为我太久没有阅读,思想僵化了吧。但我想,这个问题,书中一定有答案。我的人生是有限的,但是我可以通过书籍、电影和音乐来感受别人的人生。
|
* **读更多的书,看更多的电影**。也许这些迷茫只是因为我太久没有阅读,思想僵化了吧。但我想,这个问题,书中一定有答案。我的人生是有限的,但是我可以通过书籍、电影和音乐来感受别人的人生。
|
||||||
@@ -74,7 +74,7 @@ tags:
|
|||||||
|
|
||||||
## 终
|
## 终
|
||||||
|
|
||||||
最后的最后,2020年度流水账
|
最后的最后,2020 年度流水账
|
||||||
|
|
||||||
* 不拜年的春节,开心😄
|
* 不拜年的春节,开心😄
|
||||||
* 寒假放完了,直接线上教学,懵逼
|
* 寒假放完了,直接线上教学,懵逼
|
||||||
@@ -84,11 +84,11 @@ tags:
|
|||||||
* 快递初步解封,买了花种子
|
* 快递初步解封,买了花种子
|
||||||
* 发小高三无心复习,我又不能放开耍
|
* 发小高三无心复习,我又不能放开耍
|
||||||
* 每天照料种子,感受初生的喜悦,超有成就感
|
* 每天照料种子,感受初生的喜悦,超有成就感
|
||||||
* 折腾docker
|
* 折腾 docker
|
||||||
* 折腾博客,Hugo
|
* 折腾博客,Hugo
|
||||||
* 刷红七
|
* 刷红七
|
||||||
* 水水的网页设计比赛拿了个一等奖,奖品自选,我们队选了三大箱零食哈哈
|
* 水水的网页设计比赛拿了个一等奖,奖品自选,我们队选了三大箱零食哈哈
|
||||||
* 折腾RSS
|
* 折腾 RSS
|
||||||
* 复学
|
* 复学
|
||||||
* 一头雾水的组原实验,可是看看四周好像只有自己在做
|
* 一头雾水的组原实验,可是看看四周好像只有自己在做
|
||||||
* 水水的中青杯,说好的组队到头来基本是自己一个人写
|
* 水水的中青杯,说好的组队到头来基本是自己一个人写
|
||||||
@@ -99,16 +99,16 @@ tags:
|
|||||||
* 小一个月过了科二科三,刺激
|
* 小一个月过了科二科三,刺激
|
||||||
* 刷了三体三部曲,必须点赞
|
* 刷了三体三部曲,必须点赞
|
||||||
* 开学数模比赛,很辛苦,但是挺考验人的
|
* 开学数模比赛,很辛苦,但是挺考验人的
|
||||||
* 捡垃圾组了第一台主机,吃上了Catalina黑苹果
|
* 捡垃圾组了第一台主机,吃上了 Catalina 黑苹果
|
||||||
* 十一过后每天学习吉他
|
* 十一过后每天学习吉他
|
||||||
* 继续折腾RSS
|
* 继续折腾 RSS
|
||||||
* 实验室开通了微信公众号
|
* 实验室开通了微信公众号
|
||||||
* CFC 四级小班课,消灭了四级 (updated)
|
* CFC 四级小班课,消灭了四级 (updated)
|
||||||
* 正式开始做Logic项目,但是发现思绪混乱不堪,工作方式与预期相差甚远
|
* 正式开始做 Logic 项目,但是发现思绪混乱不堪,工作方式与预期相差甚远
|
||||||
* 第一次穿西装
|
* 第一次穿西装
|
||||||
* 挖了又没填完的几个坑
|
* 挖了又没填完的几个坑
|
||||||
* 肝课设
|
* 肝课设
|
||||||
* 写这篇文章
|
* 写这篇文章
|
||||||
* 抓住2020的尾巴上线了https://coding-step-one.colinx.one/
|
* 抓住 2020 的尾巴上线了 https://coding-step-one.colinx.one/
|
||||||
* 2020终
|
* 2020 终
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
title: 2021 年度总结
|
title: 2021 年度总结
|
||||||
date: 2021-12-31
|
date: 2021-12-31
|
||||||
lastmod: 2021-12-31
|
lastmod: 2021-12-31
|
||||||
description: 转眼又快是新的一年,似乎岁数越大,会感觉时间过得越快。想起小时候下课前的三分钟都无比漫长,现在在学校待两个月却仿佛只是两天。纵有万分感慨,但无法阻挡的事实是,2021结束了,我又长了一岁,父母又老了一岁,我的大学时光又少了一年,我在自己的道路上又行走了一年。
|
description: 转眼又快是新的一年,似乎岁数越大,会感觉时间过得越快。想起小时候下课前的三分钟都无比漫长,现在在学校待两个月却仿佛只是两天。纵有万分感慨,但无法阻挡的事实是,2021 结束了,我又长了一岁,父母又老了一岁,我的大学时光又少了一年,我在自己的道路上又行走了一年。
|
||||||
categories:
|
categories:
|
||||||
- 杂记
|
- 杂记
|
||||||
- 年度总结
|
- 年度总结
|
||||||
@@ -18,98 +18,98 @@ tags:
|
|||||||
|
|
||||||
## 序
|
## 序
|
||||||
|
|
||||||
转眼又快是新的一年,似乎岁数越大,会感觉时间过得越快。想起小时候下课前的三分钟都无比漫长,现在在学校待两个月却仿佛只是两天。纵有万分感慨,但无法阻挡的事实是,2021结束了,我又长了一岁,父母又老了一岁,我的大学时光又少了一年,我在自己的道路上又行走了一年。
|
转眼又快是新的一年,似乎岁数越大,会感觉时间过得越快。想起小时候下课前的三分钟都无比漫长,现在在学校待两个月却仿佛只是两天。纵有万分感慨,但无法阻挡的事实是,2021 结束了,我又长了一岁,父母又老了一岁,我的大学时光又少了一年,我在自己的道路上又行走了一年。
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## 我的2021简述
|
## 我的 2021 简述
|
||||||
|
|
||||||
**印象·2021**
|
**印象·2021**
|
||||||
|
|
||||||
* 拿到BATJ实习
|
* 拿到 BATJ 实习
|
||||||
* 与公司CEO一起吃饭,认识了很多有趣的人和事
|
* 与公司 CEO 一起吃饭,认识了很多有趣的人和事
|
||||||
* 开源项目RSS Man获得认可,有20+ star
|
* 开源项目 RSS Man 获得认可,有 20+ star
|
||||||
* 完成年初的flag,阅读了10本书
|
* 完成年初的 flag,阅读了 10 本书
|
||||||
* 入坑并追完了星际宝贝系列
|
* 入坑并追完了星际宝贝系列
|
||||||
* 买了HomePod mini作为自己的生日礼物,立体声组合相当nice
|
* 买了 HomePod mini 作为自己的生日礼物,立体声组合相当 nice
|
||||||
* 爬长城,游故宫,打卡北京
|
* 爬长城,游故宫,打卡北京
|
||||||
* 体验了烫染,get枯草般的头发,get另一种自己
|
* 体验了烫染,get 枯草般的头发,get 另一种自己
|
||||||
* 体验了打飞的,还全报销了,有种超级忙的boss赶脚
|
* 体验了打飞的,还全报销了,有种超级忙的 boss 赶脚
|
||||||
* 入手XBOX和极米投影仪,备战寒假`真·躺平`生活
|
* 入手 XBOX 和极米投影仪,备战寒假`真·躺平`生活
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
**年度遗憾:**
|
**年度遗憾:**
|
||||||
|
|
||||||
* 博客4.0又咕咕咕了
|
* 博客 4.0 又咕咕咕了
|
||||||
* CFC官网4.0又咕咕咕了
|
* CFC 官网 4.0 又咕咕咕了
|
||||||
* RSS Man 3.0 又又又咕咕咕了。。。
|
* RSS Man 3.0 又又又咕咕咕了。。。
|
||||||
* 没能完成6.828
|
* 没能完成 6.828
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## 2021关键词:工作、健康
|
## 2021 关键词:工作、健康
|
||||||
|
|
||||||
2021对我而言是特殊的一年,大三的我一只脚迈进了职场,体验了社会的酸甜。回学校的第二天着手开始面试,很荣幸,先后拿到了BATJ四家的实习offer,最终选择了把我最后一个暑假给阿里高德事业群。我的实习生活算是比较轻松的,没有pua,没有疯狂加班,以一种温和的方式熟悉了职场,对技术和资本有了新的理解,见到了不一样的世界,也破灭了北京的幻想。有些人生在罗马,有些人穷其一生也到不了罗马,但还是很庆幸,这是一个通过自己的努力就可以到达罗马的时代。
|
2021 对我而言是特殊的一年,大三的我一只脚迈进了职场,体验了社会的酸甜。回学校的第二天着手开始面试,很荣幸,先后拿到了 BATJ 四家的实习 offer,最终选择了把我最后一个暑假给阿里高德事业群。我的实习生活算是比较轻松的,没有 pua,没有疯狂加班,以一种温和的方式熟悉了职场,对技术和资本有了新的理解,见到了不一样的世界,也破灭了北京的幻想。有些人生在罗马,有些人穷其一生也到不了罗马,但还是很庆幸,这是一个通过自己的努力就可以到达罗马的时代。
|
||||||
|
|
||||||
在北京实习的日子过得很快,也很愉快。leader和mentor都很nice。不过在实习的日子里身边发生了好几件事,让我对健康这个问题又有了新的看法。我看到公司CEO日理万机,事业蒸蒸日上,而他自己坚持锻炼,精力旺盛。我又看到接连几个朋友罹患肿瘤,昔日同学频频心里障碍,影响学业。平日里不起眼的几条消息,现在到了我身边,一时间竟无所适从。健康是一种隐形的财富,无病无痛时感知不到它,甚至认为毫无价值,只有病痛落到自己头上,才知道健康的可贵。单说起病痛其实并没有什么,疼哪医哪,问题不大。但是当我们谈及的是肿瘤和癌症,问题就变得复杂了起来。并不是被感染、受伤了才会有肿瘤,也并不是岁数大了抵抗力弱了一定会得癌症。甚至目前来看,它没有贫富之分,众生平等,有钱有势也无力回天。联合国世界卫生组织有长长一串致癌物清单,但这只是一小部分,现阶段被人类从统计学角度认知的一小部分,而且列表上的致癌物也并不是毒素,摄入即罹患癌症。
|
在北京实习的日子过得很快,也很愉快。leader 和 mentor 都很 nice。不过在实习的日子里身边发生了好几件事,让我对健康这个问题又有了新的看法。我看到公司 CEO 日理万机,事业蒸蒸日上,而他自己坚持锻炼,精力旺盛。我又看到接连几个朋友罹患肿瘤,昔日同学频频心里障碍,影响学业。平日里不起眼的几条消息,现在到了我身边,一时间竟无所适从。健康是一种隐形的财富,无病无痛时感知不到它,甚至认为毫无价值,只有病痛落到自己头上,才知道健康的可贵。单说起病痛其实并没有什么,疼哪医哪,问题不大。但是当我们谈及的是肿瘤和癌症,问题就变得复杂了起来。并不是被感染、受伤了才会有肿瘤,也并不是岁数大了抵抗力弱了一定会得癌症。甚至目前来看,它没有贫富之分,众生平等,有钱有势也无力回天。联合国世界卫生组织有长长一串致癌物清单,但这只是一小部分,现阶段被人类从统计学角度认知的一小部分,而且列表上的致癌物也并不是毒素,摄入即罹患癌症。
|
||||||
|
|
||||||
对于肿瘤和癌症这类问题,现在最有效的防治手段应该只有一个,早发现早治疗。而要减少患病的几率,我想环境应该是非常重要的一点。这里包括两个:居住环境和饮食环境。居住环境也包括物理上的,也有心理上的。物理上减少致癌物,保持通风,保持光照,减少不必要、明显不适的电磁场。心理上保持积极,保持开朗。
|
对于肿瘤和癌症这类问题,现在最有效的防治手段应该只有一个,早发现早治疗。而要减少患病的几率,我想环境应该是非常重要的一点。这里包括两个:居住环境和饮食环境。居住环境也包括物理上的,也有心理上的。物理上减少致癌物,保持通风,保持光照,减少不必要、明显不适的电磁场。心理上保持积极,保持开朗。
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
关于电磁场,我个人观点一向是认为,这的确会对生物体有影响。网络上大多数科普电磁辐射对人体没有危害的论点主要有两个:一是现在没有确切的实验数据说明电磁辐射对人体有明显的危害,二是论剂量,电磁辐射对人体的危害主要是热效应、升温,只有剂量非常大才会影响到人体。这两条放到现在来说没有什么问题,并不是说他们正确,而是不能说他们错了。电磁辐射的热效应的确是对人体造成最大伤害的一种途径,现阶段实验的确没有证据可以表明电磁辐射有害。但是电磁波不仅仅有振幅,还要考虑频率和他的波形,当年3G升4G就有很多人说打电话时间长了会头痛,而之前不会,我也有类似体感;现阶段实验不可能有长达二三十年的关于电磁场对生物体健康的实验,就算有确凿证据也不可能放出来,因为这触及资本利益,参考汽油产业和铅的故事。此外我们也不可能全部放弃无线时代带给我们的便利。
|
关于电磁场,我个人观点一向是认为,这的确会对生物体有影响。网络上大多数科普电磁辐射对人体没有危害的论点主要有两个:一是现在没有确切的实验数据说明电磁辐射对人体有明显的危害,二是论剂量,电磁辐射对人体的危害主要是热效应、升温,只有剂量非常大才会影响到人体。这两条放到现在来说没有什么问题,并不是说他们正确,而是不能说他们错了。电磁辐射的热效应的确是对人体造成最大伤害的一种途径,现阶段实验的确没有证据可以表明电磁辐射有害。但是电磁波不仅仅有振幅,还要考虑频率和他的波形,当年 3G 升 4G 就有很多人说打电话时间长了会头痛,而之前不会,我也有类似体感;现阶段实验不可能有长达二三十年的关于电磁场对生物体健康的实验,就算有确凿证据也不可能放出来,因为这触及资本利益,参考汽油产业和铅的故事。此外我们也不可能全部放弃无线时代带给我们的便利。
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
||||||
## Answers to 2020
|
## Answers to 2020
|
||||||
|
|
||||||
2020年底我的一个疑问是逃离IT业的内卷,这个问题我有了一个阶段性的答案。目前来看有两个方向,一是选择不同的赛道,另一个是选择资源富裕开发程度不高的领域。今年我选择了前者。
|
2020 年底我的一个疑问是逃离 IT 业的内卷,这个问题我有了一个阶段性的答案。目前来看有两个方向,一是选择不同的赛道,另一个是选择资源富裕开发程度不高的领域。今年我选择了前者。
|
||||||
|
|
||||||
## Flags for 2022
|
## Flags for 2022
|
||||||
|
|
||||||
* 阅读12本书
|
* 阅读 12 本书
|
||||||
* 打卡5个景点
|
* 打卡 5 个景点
|
||||||
|
|
||||||
## 流水账时间
|
## 流水账时间
|
||||||
|
|
||||||
* 一个挺暖和的春节
|
* 一个挺暖和的春节
|
||||||
* 过年在家有天晚上睡不着,翻身起来做了个数码宝贝的MV,但是咕咕咕又不想投稿。。
|
* 过年在家有天晚上睡不着,翻身起来做了个数码宝贝的 MV,但是咕咕咕又不想投稿。。
|
||||||
* 拿云台坐在电动车上给老家拍了个视频,等十年后再回来看
|
* 拿云台坐在电动车上给老家拍了个视频,等十年后再回来看
|
||||||
* 游万佛湖,几年没去没想到景区建设得很快
|
* 游万佛湖,几年没去没想到景区建设得很快
|
||||||
* MC私服,云服务器好友联机爽歪歪,还有1.5个外国友人沟通变得奇妙了起来
|
* MC 私服,云服务器好友联机爽歪歪,还有 1.5 个外国友人沟通变得奇妙了起来
|
||||||
* 返校第二天拿到jd实习offer
|
* 返校第二天拿到 jd 实习 offer
|
||||||
* 无聊的编译原理课
|
* 无聊的编译原理课
|
||||||
* 各种上课接电话
|
* 各种上课接电话
|
||||||
* 各种准备面试和被面试,最终拿到BAT实习offer
|
* 各种准备面试和被面试,最终拿到 BAT 实习 offer
|
||||||
* 📕深入理解Java虚拟机👍
|
* 📕深入理解 Java 虚拟机👍
|
||||||
* 折腾RSS,对RSS Man做了不少优化
|
* 折腾 RSS,对 RSS Man 做了不少优化
|
||||||
* CFC 六级冲关小班课
|
* CFC 六级冲关小班课
|
||||||
* 前往北京实习
|
* 前往北京实习
|
||||||
* 打飞的回来考试
|
* 打飞的回来考试
|
||||||
* 平平无奇的暑假,体验公司生活
|
* 平平无奇的暑假,体验公司生活
|
||||||
* 搭建ARK私服,天天开黑
|
* 搭建 ARK 私服,天天开黑
|
||||||
* 参加Linux平台的一个开发比赛,没想到白天上班晚上回来写点东西这么累
|
* 参加 Linux 平台的一个开发比赛,没想到白天上班晚上回来写点东西这么累
|
||||||
* 周末拿公司的mbp回去听歌爽歪歪,想买个homepod结果停产了。。
|
* 周末拿公司的 mbp 回去听歌爽歪歪,想买个 homepod 结果停产了。。
|
||||||
* 入坑鲁邦三世系列,很有魅力的一部剧
|
* 入坑鲁邦三世系列,很有魅力的一部剧
|
||||||
* 📕《凤凰架构》👍
|
* 📕《凤凰架构》👍
|
||||||
* 龟龟到家
|
* 龟龟到家
|
||||||
* 过生日入了一对homepod mini,立体声效果很nice
|
* 过生日入了一对 homepod mini,立体声效果很 nice
|
||||||
* 第一次体验现场器乐表演
|
* 第一次体验现场器乐表演
|
||||||
* 天气转凉,爬长城游故宫打卡北京
|
* 天气转凉,爬长城游故宫打卡北京
|
||||||
* 同学来北京玩,天天吃好的,才发现稍微奢侈一点点可以吃到超棒的美食
|
* 同学来北京玩,天天吃好的,才发现稍微奢侈一点点可以吃到超棒的美食
|
||||||
* 回学校体验隔离套餐:(
|
* 回学校体验隔离套餐:(
|
||||||
* 博客上线评论
|
* 博客上线评论
|
||||||
* 随手做的RSS Man项目渐渐获得关注和认可,感觉超棒
|
* 随手做的 RSS Man 项目渐渐获得关注和认可,感觉超棒
|
||||||
* 第一次体验翻,土蔷,真墙
|
* 第一次体验翻,土蔷,真墙
|
||||||
* 入坑并追完星际宝贝系列
|
* 入坑并追完星际宝贝系列
|
||||||
* 入手XBOX,XGP真香
|
* 入手 XBOX,XGP 真香
|
||||||
* 最后一次参加CFC招新
|
* 最后一次参加 CFC 招新
|
||||||
* 入手极米投影仪,躺在宿舍床上看电影美滋滋
|
* 入手极米投影仪,躺在宿舍床上看电影美滋滋
|
||||||
* 📕《编码:隐匿在计算机软硬件背后的语言》👍
|
* 📕《编码:隐匿在计算机软硬件背后的语言》👍
|
||||||
* Linux&Git小班课,一周从`ls`到nginx
|
* Linux&Git 小班课,一周从`ls`到 nginx
|
||||||
* 搞到了三百块4c16g的服务器,y1s1真的给力
|
* 搞到了三百块 4c16g 的服务器,y1s1 真的给力
|
||||||
* 赶在年末疫情没严重溜回家,保住我的最后一个寒假
|
* 赶在年末疫情没严重溜回家,保住我的最后一个寒假
|
||||||
* 2021 the end
|
* 2021 the end
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
title: 2023静态网站托管服务速度对比
|
title: 2023 静态网站托管服务速度对比
|
||||||
date: 2022-12-25
|
date: 2022-12-25
|
||||||
description: 对几家喜闻乐见的静态网站托管服务商 Vercel、Netlify、Cloudflare Pages、Azure Static Pages 测个速, 2023 版
|
description: 对几家喜闻乐见的静态网站托管服务商 Vercel、Netlify、Cloudflare Pages、Azure Static Pages 测个速, 2023 版
|
||||||
categories:
|
categories:
|
||||||
@@ -13,7 +13,7 @@ tags:
|
|||||||
- Azure
|
- Azure
|
||||||
---
|
---
|
||||||
|
|
||||||
<!-- # 2023静态网站托管服务速度对比 -->
|
<!-- # 2023 静态网站托管服务速度对比 -->
|
||||||
|
|
||||||
对几家喜闻乐见的静态网站托管服务商 Vercel、Netlify、Cloudflare Pages、Azure Static Pages 测个速
|
对几家喜闻乐见的静态网站托管服务商 Vercel、Netlify、Cloudflare Pages、Azure Static Pages 测个速
|
||||||
|
|
||||||
@@ -108,7 +108,7 @@ TX 海外 CDN 红绿参半,不过可以看到很强的地域特性
|
|||||||
- 移动走 Netlify 和腾讯云海外 CDN
|
- 移动走 Netlify 和腾讯云海外 CDN
|
||||||
- 联通走 Netlify、Cloudflare、腾讯云海外 CDN
|
- 联通走 Netlify、Cloudflare、腾讯云海外 CDN
|
||||||
|
|
||||||
博客的几个镜像站点我也挂在了仓库的README页面,加了几个badge可以快速看到几个mirror的联通性情况。[https://github.com/Colin-XKL/Colinx-Blog](https://github.com/Colin-XKL/Colinx-Blog)
|
博客的几个镜像站点我也挂在了仓库的 README 页面,加了几个 badge 可以快速看到几个 mirror 的联通性情况。[https://github.com/Colin-XKL/Colinx-Blog](https://github.com/Colin-XKL/Colinx-Blog)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
---
|
---
|
||||||
title: Colin's实验室 - 2021春
|
title: Colin's 实验室 - 2021 春
|
||||||
date: 2021-02-25
|
date: 2021-02-25
|
||||||
lastmod: 2021-03-30
|
lastmod: 2021-03-30
|
||||||
description: 小玩具及他们的demo
|
description: 小玩具及他们的 demo
|
||||||
categories:
|
categories:
|
||||||
- 技术
|
- 技术
|
||||||
tags:
|
tags:
|
||||||
@@ -12,9 +12,9 @@ tags:
|
|||||||
- Flutter
|
- Flutter
|
||||||
---
|
---
|
||||||
|
|
||||||
<!-- # Colin's实验室 - 2021春 -->
|
<!-- # Colin's 实验室 - 2021 春 -->
|
||||||
|
|
||||||
> 小玩具及他们的demo
|
> 小玩具及他们的 demo
|
||||||
>
|
>
|
||||||
>
|
>
|
||||||
|
|
||||||
@@ -22,35 +22,35 @@ tags:
|
|||||||
|
|
||||||
> 自动分割给定的英文文本,提取词元后在数据库中搜索,根据给定的词汇量和难度等级进行筛选,只能提取阅读障碍词汇并高亮当前备考项目(如四级)的重点单词
|
> 自动分割给定的英文文本,提取词元后在数据库中搜索,根据给定的词汇量和难度等级进行筛选,只能提取阅读障碍词汇并高亮当前备考项目(如四级)的重点单词
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## 知乎爬虫及JS逆向
|
## 知乎爬虫及 JS 逆向
|
||||||
|
|
||||||
> 日常用RSS订阅知乎的一些高质量专栏。但由于知乎本事并不支持RSS,内容大多通过RSShub来的,其本质是个爬虫,经常会受到前端页面结构变更的影响。为了应对这个变化,RSShub中对于知乎相关页面的爬取规则必须得重写。
|
> 日常用 RSS 订阅知乎的一些高质量专栏。但由于知乎本事并不支持 RSS,内容大多通过 RSShub 来的,其本质是个爬虫,经常会受到前端页面结构变更的影响。为了应对这个变化,RSShub 中对于知乎相关页面的爬取规则必须得重写。
|
||||||
>
|
>
|
||||||
> 分析了一通知乎的页面,发现有个接口可以直接请求,但是会检验header。header里面有几项特殊的自定义参数,`x-zse-83` 和 `x-zse-86`等。为了搞清楚这里面的数值怎么来的,就必须对知乎前端页面资源中的一个js文件进行逆向分析。
|
> 分析了一通知乎的页面,发现有个接口可以直接请求,但是会检验 header。header 里面有几项特殊的自定义参数,`x-zse-83` 和 `x-zse-86`等。为了搞清楚这里面的数值怎么来的,就必须对知乎前端页面资源中的一个 js 文件进行逆向分析。
|
||||||
>
|
>
|
||||||
> 逆向折腾了大半天,就快要成功提取核心加密函数的时候,发现知乎的前端页面为了SEO有加入一页的文章列表数据,可以直接用上。考虑到逆向的工作量和潜在的法律问题,遂放弃原本的方案。
|
> 逆向折腾了大半天,就快要成功提取核心加密函数的时候,发现知乎的前端页面为了 SEO 有加入一页的文章列表数据,可以直接用上。考虑到逆向的工作量和潜在的法律问题,遂放弃原本的方案。
|
||||||
>
|
>
|
||||||
> 新的方案完成后,已向RSShub提交PR并已被合并。
|
> 新的方案完成后,已向 RSShub 提交 PR 并已被合并。
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## MC服务器搭建与极限优化
|
## MC 服务器搭建与极限优化
|
||||||
|
|
||||||
> 1核2G学生机,从2人联机频频崩溃到8人挖矿毫无压力,学习了JVM GC种种,对服务端程序的一些参数也渐渐熟悉。优化效果喜人,总有还能压榨的性能,就像资本家看手下的骡子一样hhh
|
> 1 核 2G 学生机,从 2 人联机频频崩溃到 8 人挖矿毫无压力,学习了 JVM GC 种种,对服务端程序的一些参数也渐渐熟悉。优化效果喜人,总有还能压榨的性能,就像资本家看手下的骡子一样 hhh
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## 洞洞板/冰箱贴/CVPRO/(...没想好名字)
|
## 洞洞板/冰箱贴/CVPRO/(...没想好名字)
|
||||||
|
|
||||||
> 一款跨平台的灵感素材收集与简易管理App,基于Flutter构建,跨平台,颜值在线。
|
> 一款跨平台的灵感素材收集与简易管理 App,基于 Flutter 构建,跨平台,颜值在线。
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
> 持续开发中,附roadmap
|
> 持续开发中,附 roadmap
|
||||||
>
|
>
|
||||||
> version 1.0
|
> version 1.0
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ tags:
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
Flutter中实现拖动排序的列表非常简单,使用官方的`ReorderableListView`替代原本的`ListView`即可,`ListView.builder`同理。
|
Flutter 中实现拖动排序的列表非常简单,使用官方的`ReorderableListView`替代原本的`ListView`即可,`ListView.builder`同理。
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -42,30 +42,30 @@ Flutter中实现拖动排序的列表非常简单,使用官方的`ReorderableL
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
上面是官方给的demo,简洁明了。[官方介绍视频](https://www.youtube.com/watch?v=yll3SNXvQCw)下面的评论里,人家直呼比原生Android写的过瘾的多。阅读文档后我给我的App的界面也加上了可拖动排序的功能。效果如下图
|
上面是官方给的 demo,简洁明了。[官方介绍视频](https://www.youtube.com/watch?v=yll3SNXvQCw)下面的评论里,人家直呼比原生 Android 写的过瘾的多。阅读文档后我给我的 App 的界面也加上了可拖动排序的功能。效果如下图
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
虽然可以实现拖动了,但是右边有一个按钮很碍眼。不过这个是用来控制拖动的,鼠标移上去才能触发拖动。
|
虽然可以实现拖动了,但是右边有一个按钮很碍眼。不过这个是用来控制拖动的,鼠标移上去才能触发拖动。
|
||||||
|
|
||||||
翻了翻文档发现,这个地方`ReorderableListView`在移动端和桌面端的处理是不一样的,上图(桌面macos)右边会出现一个dragHandler,而移动端则是靠长按列表项触发拖动。
|
翻了翻文档发现,这个地方`ReorderableListView`在移动端和桌面端的处理是不一样的,上图(桌面 macos)右边会出现一个 dragHandler,而移动端则是靠长按列表项触发拖动。
|
||||||
|
|
||||||
要把这个碍眼的图标去掉,有两个方案:
|
要把这个碍眼的图标去掉,有两个方案:
|
||||||
|
|
||||||
- 找到定义这个图标的地方,更换一个合适的图标,并在外面包裹一层,仅在鼠标hover时将图标显示以进行拖动,其他情况下隐藏
|
- 找到定义这个图标的地方,更换一个合适的图标,并在外面包裹一层,仅在鼠标 hover 时将图标显示以进行拖动,其他情况下隐藏
|
||||||
- 将拖动的实现定义为和移动端相同,即都通过长按列表项触发拖动
|
- 将拖动的实现定义为和移动端相同,即都通过长按列表项触发拖动
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
针对方案一,以`ReorderableListView` 和`Icon`为关键词搜索,很遗憾的是并没有这方面的资料,又翻了翻源码,并没有找到可以自定义右边这个拖拽按钮的实现。
|
针对方案一,以`ReorderableListView` 和`Icon`为关键词搜索,很遗憾的是并没有这方面的资料,又翻了翻源码,并没有找到可以自定义右边这个拖拽按钮的实现。
|
||||||
|
|
||||||
在Flutter官方的Github仓库的issue中,[https://github.com/flutter/flutter/issues/66080#issuecomment-771123430](https://github.com/flutter/flutter/issues/66080#issuecomment-771123430) 对相关问题做了阐述,并有提案对`ReorderableListView`进行了改进。该issue对应的pr已经被合并到stable channel,查阅相关API后了解到可以使用`buildDefaultDragHandles: false`,关闭默认的拖拽触发实现,再使用`ReorderableDelayedDragStartListener`包裹原先的`ListTile`即可实现桌面端和移动端都通过长按列表项触发拖拽排序。
|
在 Flutter 官方的 Github 仓库的 issue 中,[https://github.com/flutter/flutter/issues/66080#issuecomment-771123430](https://github.com/flutter/flutter/issues/66080#issuecomment-771123430) 对相关问题做了阐述,并有提案对`ReorderableListView`进行了改进。该 issue 对应的 pr 已经被合并到 stable channel,查阅相关 API 后了解到可以使用`buildDefaultDragHandles: false`,关闭默认的拖拽触发实现,再使用`ReorderableDelayedDragStartListener`包裹原先的`ListTile`即可实现桌面端和移动端都通过长按列表项触发拖拽排序。
|
||||||
|
|
||||||
不过相应的,ListTile的`onLongPress`就不能再有响应了。刚好今天完成了滑动删除的实现,现在列表也的删除、排序已经高度可用且多平台统一了。
|
不过相应的,ListTile 的`onLongPress`就不能再有响应了。刚好今天完成了滑动删除的实现,现在列表也的删除、排序已经高度可用且多平台统一了。
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
附相关代码实现:
|
附相关代码实现:
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
---
|
---
|
||||||
title: Huginn指南:为任意网站制作RSS
|
title: Huginn 指南:为任意网站制作 RSS
|
||||||
date: 2022-05-08
|
date: 2022-05-08
|
||||||
lastmod: 2022-05-08
|
lastmod: 2022-05-08
|
||||||
description: 又一篇介绍使用Huginn制作RSS的教程🕶️
|
description: 又一篇介绍使用 Huginn 制作 RSS 的教程🕶️
|
||||||
categories:
|
categories:
|
||||||
- 技术
|
- 技术
|
||||||
- 指南
|
- 指南
|
||||||
@@ -14,35 +14,35 @@ tags:
|
|||||||
- 技术
|
- 技术
|
||||||
---
|
---
|
||||||
|
|
||||||
<!-- # Huginn指南:为任意网站制作RSS -->
|
<!-- # Huginn 指南:为任意网站制作 RSS -->
|
||||||
|
|
||||||
Huginn使用多个不同功能的Agent组合搭配来实现一系列功能,一个Agent可以执行特定的操作,并产生一个Event,你可以指定他产生的Event由哪个Agent接收处理。
|
Huginn 使用多个不同功能的 Agent 组合搭配来实现一系列功能,一个 Agent 可以执行特定的操作,并产生一个 Event,你可以指定他产生的 Event 由哪个 Agent 接收处理。
|
||||||
|
|
||||||
比如我们需要使用WebSite Agent来爬取某个网站上的列表内容,爬取后列表的每一项会生成一个Event,我们可以指定一个Output Agent来接收这些Event,并将其转换为RSS的格式进行输出,复制Output Agent返回给你的URL就可以进行订阅啦,Huginn爬取网站生成RSS的基本原理就是这样。
|
比如我们需要使用 WebSite Agent 来爬取某个网站上的列表内容,爬取后列表的每一项会生成一个 Event,我们可以指定一个 Output Agent 来接收这些 Event,并将其转换为 RSS 的格式进行输出,复制 Output Agent 返回给你的 URL 就可以进行订阅啦,Huginn 爬取网站生成 RSS 的基本原理就是这样。
|
||||||
|
|
||||||
## Huginn爬取普通网页制作RSS
|
## Huginn 爬取普通网页制作 RSS
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
右键网页打开开发者工具,屏幕会分出一部分空间显示开发者工具窗口,点击左上角的按钮再把鼠标移动到页面上可以选择页面的某一个元素,比如这里我们要爬取推荐文章列表,推荐文章列表的每一项都有同样的样式,我们可以使用CSS选择器来指定爬取该项
|
右键网页打开开发者工具,屏幕会分出一部分空间显示开发者工具窗口,点击左上角的按钮再把鼠标移动到页面上可以选择页面的某一个元素,比如这里我们要爬取推荐文章列表,推荐文章列表的每一项都有同样的样式,我们可以使用 CSS 选择器来指定爬取该项
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
该元素可以用CSS选择器`.meiwen`选择到。
|
该元素可以用 CSS 选择器`.meiwen`选择到。
|
||||||
|
|
||||||
**Tips:** class=xxx则使用`.xxx`,如果为id=xxx则使用`#xxx`
|
**Tips:** class=xxx则使用`.xxx`,如果为id=xxx则使用`#xxx`
|
||||||
|
|
||||||
该标签是a标签,我们可以继续限定一下条件,使用`a.meiwen`
|
该标签是 a 标签,我们可以继续限定一下条件,使用`a.meiwen`
|
||||||
|
|
||||||
如果要限制必须是h2 标签下的带有meiwen的class属性的a标签,可以使用`h2 a.meiwen`
|
如果要限制必须是 h2 标签下的带有 meiwen 的 class 属性的 a 标签,可以使用`h2 a.meiwen`
|
||||||
|
|
||||||
如果要再加一个限制,是列表元素li下面的h2标签里带有meiwen的class属性的a标签,可以使用`li h2 a.meiwen`
|
如果要再加一个限制,是列表元素 li 下面的 h2 标签里带有 meiwen 的 class 属性的 a 标签,可以使用`li h2 a.meiwen`
|
||||||
|
|
||||||
添加其他附加限定条件以此类推
|
添加其他附加限定条件以此类推
|
||||||
|
|
||||||
你也可以在右侧Style面板里点击加号添加一个自定义样式,输入CSS选择器,浏览器会自动高亮符合条件的网页元素,你可以使用这个功能来检验你写的CSS选择器是否正确以及是不是提取的你想要的内容
|
你也可以在右侧 Style 面板里点击加号添加一个自定义样式,输入 CSS 选择器,浏览器会自动高亮符合条件的网页元素,你可以使用这个功能来检验你写的 CSS 选择器是否正确以及是不是提取的你想要的内容
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
@@ -50,7 +50,7 @@ Huginn使用多个不同功能的Agent组合搭配来实现一系列功能,一
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
接下来在Huginn里创建一个Scenario,然后点击新建一个Agent,类型选择WebSite Agent,填写一个名称,并在最下面的配置处指定你要爬取的网页元素
|
接下来在 Huginn 里创建一个 Scenario,然后点击新建一个 Agent,类型选择 WebSite Agent,填写一个名称,并在最下面的配置处指定你要爬取的网页元素
|
||||||
|
|
||||||
> ###### **Website Agent**
|
> ###### **Website Agent**
|
||||||
>
|
>
|
||||||
@@ -63,35 +63,35 @@ url: {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
以爬取url为例,css表示使用css选择器选择网页元素,value表示从哪里获取对应的值,对于刚才我们选取的一个元素来说
|
以爬取 url 为例,css 表示使用 css 选择器选择网页元素,value 表示从哪里获取对应的值,对于刚才我们选取的一个元素来说
|
||||||
|
|
||||||
```html
|
```html
|
||||||
<a class="meiwen" href="/article/58030.html" title="缘起则聚,缘灭则散">缘起则聚,缘灭则散</a>
|
<a class="meiwen" href="/article/58030.html" title="缘起则聚,缘灭则散">缘起则聚,缘灭则散</a>
|
||||||
```
|
```
|
||||||
|
|
||||||
href属性里面的内容是他的链接,title属性里面的内容则是他的标题。接下来在value中填写`@href`指定从href属性提取内容,就可以取到链接地址了
|
href 属性里面的内容是他的链接,title 属性里面的内容则是他的标题。接下来在 value 中填写`@href`指定从 href 属性提取内容,就可以取到链接地址了
|
||||||
|
|
||||||
> **Pro Tips:**
|
> **Pro Tips:**
|
||||||
>
|
>
|
||||||
> 如果是纯文本节点或是想提取标签内嵌的文本,value里可以填写`string(.)`
|
> 如果是纯文本节点或是想提取标签内嵌的文本,value 里可以填写`string(.)`
|
||||||
>
|
>
|
||||||
> 如果想删除多余的空格,可以使用`normalize-space(.)`
|
> 如果想删除多余的空格,可以使用`normalize-space(.)`
|
||||||
|
|
||||||
> **Pro Tips 2:**
|
> **Pro Tips 2:**
|
||||||
>
|
>
|
||||||
> 字符串处理函数和标签属性值变量可以一起使用,如`normalize-space(@title)`可以获取该标签的title属性值并删除多余的空白字符
|
> 字符串处理函数和标签属性值变量可以一起使用,如`normalize-space(@title)`可以获取该标签的 title 属性值并删除多余的空白字符
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
接下来点击Dry Run按钮进行测试,不出意外我们会得到一个json的输出,里面包括我们爬取到的每一项他的url和title。
|
接下来点击 Dry Run 按钮进行测试,不出意外我们会得到一个 json 的输出,里面包括我们爬取到的每一项他的 url 和 title。
|
||||||
|
|
||||||
如果没有成功,你可能需要删掉上面没有使用到的hovertext节点,因为该项指定的内容在我们刚才的网页中并不存在。
|
如果没有成功,你可能需要删掉上面没有使用到的 hovertext 节点,因为该项指定的内容在我们刚才的网页中并不存在。
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
点击Save保存,我们开始下一步输出RSS。在刚才的Scenario中再新建一个Agent,选择Data Output Agent,并设置他的名字和Source Agent
|
点击 Save 保存,我们开始下一步输出 RSS。在刚才的 Scenario 中再新建一个 Agent,选择 Data Output Agent,并设置他的名字和 Source Agent
|
||||||
|
|
||||||
> ###### Data output Agent
|
> ###### Data output Agent
|
||||||
>
|
>
|
||||||
@@ -101,13 +101,13 @@ href属性里面的内容是他的链接,title属性里面的内容则是他
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
**Propagate immediately**是指即时处理来自Source Agent的Event,启用他方便我们调试,但会略微增加服务器负载,你可以自行决定是否使用。
|
**Propagate immediately**是指即时处理来自 Source Agent 的 Event,启用他方便我们调试,但会略微增加服务器负载,你可以自行决定是否使用。
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
在secret字段中为你的这个RSS标注一个英文的名字,修改title字段标注你的RSS的名字。item字段是每条文章会有的属性,一般来说主要就title和link,分别设置为上文我们提取的值的变量名。这里添加一个guid字段,这是一篇文章的唯一标识符,避免RSS阅读器读到的文章标题不同但是内容相同,常见于某篇文章的标题被修改,这会导致RSS阅读器内出现多篇重复文章。
|
在 secret 字段中为你的这个 RSS 标注一个英文的名字,修改 title 字段标注你的 RSS 的名字。item 字段是每条文章会有的属性,一般来说主要就 title 和 link,分别设置为上文我们提取的值的变量名。这里添加一个 guid 字段,这是一篇文章的唯一标识符,避免 RSS 阅读器读到的文章标题不同但是内容相同,常见于某篇文章的标题被修改,这会导致 RSS 阅读器内出现多篇重复文章。
|
||||||
|
|
||||||
此外建议增加一个link字段,值设置为与爬取的网站的主域名一致,避免网站内使用相对链接开头的资源无法正常加载。
|
此外建议增加一个 link 字段,值设置为与爬取的网站的主域名一致,避免网站内使用相对链接开头的资源无法正常加载。
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
@@ -115,7 +115,7 @@ href属性里面的内容是他的链接,title属性里面的内容则是他
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
点击Save保存,回到Scenario界面,第一次需要手动点击运行一下刚才的Website Agent。稍等片刻后台会进行爬取,右上角会显示产生了多少个Event。再点开刚才设置的Data Output Agent查看详情,vola!右侧就会显示生成的RSS链接了,复制以xml结尾的链接到RSS阅读器中就可以订阅啦🎉
|
点击 Save 保存,回到 Scenario 界面,第一次需要手动点击运行一下刚才的 Website Agent。稍等片刻后台会进行爬取,右上角会显示产生了多少个 Event。再点开刚才设置的 Data Output Agent 查看详情,vola!右侧就会显示生成的 RSS 链接了,复制以 xml 结尾的链接到 RSS 阅读器中就可以订阅啦🎉
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
@@ -123,33 +123,33 @@ href属性里面的内容是他的链接,title属性里面的内容则是他
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
如果你的配置正确但是WebSite Agent又没有输出任何内容的话,那么你要爬取的站点的内容应该是通过JavaScript在你带开浏览器时动态生成的。
|
如果你的配置正确但是 WebSite Agent 又没有输出任何内容的话,那么你要爬取的站点的内容应该是通过 JavaScript 在你带开浏览器时动态生成的。
|
||||||
|
|
||||||
> **Pro Tips:**
|
> **Pro Tips:**
|
||||||
>
|
>
|
||||||
> 你可以右键网页在开发人员菜单中点击显示源代码,然后用Ctrl+F搜索你在页面上见到的想爬取的某一条内容,如果有说明该网站的页面时静态的,否则说明你要爬取的内容并不是静态的。
|
> 你可以右键网页在开发人员菜单中点击显示源代码,然后用 Ctrl+F 搜索你在页面上见到的想爬取的某一条内容,如果有说明该网站的页面时静态的,否则说明你要爬取的内容并不是静态的。
|
||||||
|
|
||||||
要爬取这样的站点,我们需要模拟浏览器操作,执行页面上的JavaScript脚本,待数据生成完毕后再使用上面的方法去爬取内容。要模拟浏览器操作,这里介绍两个方案:一个是利用browserless的无头浏览器,另一个是使用在线PhatomJS服务。
|
要爬取这样的站点,我们需要模拟浏览器操作,执行页面上的 JavaScript 脚本,待数据生成完毕后再使用上面的方法去爬取内容。要模拟浏览器操作,这里介绍两个方案:一个是利用 browserless 的无头浏览器,另一个是使用在线 PhatomJS 服务。
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## 使用Huginn+Browserless为动态网页生成RSS
|
## 使用 Huginn+Browserless 为动态网页生成 RSS
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
部署了[RSS Man X](https://github.com/Colin-XKL/RSSmanX)的完整版的话默认已经包含huginn和browserless服务,无需重复安装。且huginn可以通过`service.browserless:3000`访问到browserless服务。
|
部署了[RSS Man X](https://github.com/Colin-XKL/RSSmanX)的完整版的话默认已经包含 huginn 和 browserless 服务,无需重复安装。且 huginn 可以通过`service.browserless:3000`访问到 browserless 服务。
|
||||||
|
|
||||||
总体步骤与上文一样,不过因为被抓取的内容是通过JavaScript动态生成的,所以直接使用WebSite Agent是抓取不到东西的,我们需要先使用Post Agent向browserless服务发送指令,让他帮我们模拟浏览器操作,再将最终完整的网页返回给我们,再使用WebSite Agent进行后续处理。
|
总体步骤与上文一样,不过因为被抓取的内容是通过 JavaScript 动态生成的,所以直接使用 WebSite Agent 是抓取不到东西的,我们需要先使用 Post Agent 向 browserless 服务发送指令,让他帮我们模拟浏览器操作,再将最终完整的网页返回给我们,再使用 WebSite Agent 进行后续处理。
|
||||||
|
|
||||||
> ###### **Post Agent**
|
> ###### **Post Agent**
|
||||||
>
|
>
|
||||||
> A Post Agent receives events from other agents (or runs periodically), merges those events with the Liquid-interpolated contents of payload, and sends the results as POST (or GET) requests to a specified url. To skip merging in the incoming event, but still send the interpolated payload, set no_merge to true.
|
> A Post Agent receives events from other agents (or runs periodically), merges those events with the Liquid-interpolated contents of payload, and sends the results as POST (or GET) requests to a specified url. To skip merging in the incoming event, but still send the interpolated payload, set no_merge to true.
|
||||||
|
|
||||||
接下来以[这个网站](https://pccz.court.gov.cn/pcajxxw/pcgg/ggdh?lx=0)为例介绍一下,这个列表页的内容是由JavaScript动态生成的
|
接下来以[这个网站](https://pccz.court.gov.cn/pcajxxw/pcgg/ggdh?lx=0)为例介绍一下,这个列表页的内容是由 JavaScript 动态生成的
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
按照以下内容设置你的Post Agent
|
按照以下内容设置你的 Post Agent
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
@@ -170,15 +170,15 @@ href属性里面的内容是他的链接,title属性里面的内容则是他
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
其中`post_url`为你的browserless实例地址,如果你使用了RSS MAN X里的Huginn可以直接向上面一样填写。`payload`中的`url`字段填写你需要的网页地址。注意emit_events要设置为`true`,这样才方便我们后续使用WebSite Agent操作。
|
其中`post_url`为你的 browserless 实例地址,如果你使用了 RSS MAN X 里的 Huginn 可以直接向上面一样填写。`payload`中的`url`字段填写你需要的网页地址。注意 emit_events 要设置为`true`,这样才方便我们后续使用 WebSite Agent 操作。
|
||||||
|
|
||||||
点击Dry Run,如果能返回一个带有`body`字段且里面有文本内容说明调用成功。
|
点击 Dry Run,如果能返回一个带有`body`字段且里面有文本内容说明调用成功。
|
||||||
|
|
||||||
调用不成功检查一下配置,以及是不是我们的爬虫被目标网站拦截了。若是爬虫被拦截可参考文末的解决方案。
|
调用不成功检查一下配置,以及是不是我们的爬虫被目标网站拦截了。若是爬虫被拦截可参考文末的解决方案。
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
接下来点击Save保存,再新建一个Website Agent,Source设置为刚才的Post Agent。
|
接下来点击 Save 保存,再新建一个 Website Agent,Source 设置为刚才的 Post Agent。
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
@@ -205,17 +205,17 @@ href属性里面的内容是他的链接,title属性里面的内容则是他
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
注意修改`data_from_event`的值,其他地方与爬取普通网站一样。再新建并配置一下Output Agent,RSS的链接就出来了
|
注意修改`data_from_event`的值,其他地方与爬取普通网站一样。再新建并配置一下 Output Agent,RSS 的链接就出来了
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## 使用PhantomJS为动态页面生成RSS
|
## 使用 PhantomJS 为动态页面生成 RSS
|
||||||
|
|
||||||
首先需要到[Phantom Js Cloud的官网](https://phantomjscloud.com)注册一个账户,每个账户官方提供了一定的免费额度,每天大概可以爬取500个页面,对于做RSS来说妥妥的够用了。注册之后可以得到一个API KEY,这个待会会使用到。
|
首先需要到[Phantom Js Cloud 的官网](https://phantomjscloud.com)注册一个账户,每个账户官方提供了一定的免费额度,每天大概可以爬取 500 个页面,对于做 RSS 来说妥妥的够用了。注册之后可以得到一个 API KEY,这个待会会使用到。
|
||||||
|
|
||||||
接下来新建一个Phantom JS Cloud Agent,填写基本的名称、API KEY和目标URL,render type选择html。底下User Agent建议改用真实的浏览器UA,减少触发反爬虫的可能性。如果不知道自己的UA可以到这个网站查看当前浏览器的UA,复制字符串即可。如果懒得查也可以用这个
|
接下来新建一个 Phantom JS Cloud Agent,填写基本的名称、API KEY 和目标 URL,render type 选择 html。底下 User Agent 建议改用真实的浏览器 UA,减少触发反爬虫的可能性。如果不知道自己的 UA 可以到这个网站查看当前浏览器的 UA,复制字符串即可。如果懒得查也可以用这个
|
||||||
|
|
||||||
```
|
```
|
||||||
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.81 Safari/537.36
|
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.81 Safari/537.36
|
||||||
@@ -227,7 +227,7 @@ Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like
|
|||||||
>
|
>
|
||||||
> URLs generated by this Agent are formulated in accordance with the PhantomJs Cloud API. The generated URLs can then be supplied to a Website Agent to fetch and parse the content. Sign up to get an api key, and add it in Huginn credentials.
|
> URLs generated by this Agent are formulated in accordance with the PhantomJs Cloud API. The generated URLs can then be supplied to a Website Agent to fetch and parse the content. Sign up to get an api key, and add it in Huginn credentials.
|
||||||
|
|
||||||
点击Dry Run后会返回一条url,返回格式类似这样
|
点击 Dry Run 后会返回一条 url,返回格式类似这样
|
||||||
|
|
||||||
```json
|
```json
|
||||||
[
|
[
|
||||||
@@ -237,7 +237,7 @@ Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like
|
|||||||
]
|
]
|
||||||
```
|
```
|
||||||
|
|
||||||
之后创建一个WebSite Agent,Source Agent设置为上面的Phantom JS Cloud Agent,然后稍微改一下url的部分
|
之后创建一个 WebSite Agent,Source Agent 设置为上面的 Phantom JS Cloud Agent,然后稍微改一下 url 的部分
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
@@ -255,7 +255,7 @@ Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
这里是刚才的Agent产生的一个Event。这里除了url和title我还提取了date字段。在Output Agent中,可以配置为每一条文章输出发布时间的信息。对于这种规整的日期字母串,可以使用`{{ date | date: %F }}`进行解析并格式化输出为rss规范的时间格式如果没有配置的话,每篇文章的发布时间显示的都是一样的,为Huginn爬虫更新的时间。
|
这里是刚才的 Agent 产生的一个 Event。这里除了 url 和 title 我还提取了 date 字段。在 Output Agent 中,可以配置为每一条文章输出发布时间的信息。对于这种规整的日期字母串,可以使用`{{ date | date: %F }}`进行解析并格式化输出为 rss 规范的时间格式如果没有配置的话,每篇文章的发布时间显示的都是一样的,为 Huginn 爬虫更新的时间。
|
||||||
|
|
||||||
```json
|
```json
|
||||||
"item": {
|
"item": {
|
||||||
@@ -267,9 +267,9 @@ Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like
|
|||||||
|
|
||||||
> **Pro Tips:**
|
> **Pro Tips:**
|
||||||
>
|
>
|
||||||
> Huginn解析日期
|
> Huginn 解析日期
|
||||||
>
|
>
|
||||||
> 注意`{{ date | date: %F }}`里面,第一个`date`是上面的Website Agent产生的Event里面的变量名,第二个`date`是Huginn使用的Liquid模版引擎语法里内置的一个filter,可以理解为有特定功能的函数
|
> 注意`{{ date | date: %F }}`里面,第一个`date`是上面的 Website Agent 产生的 Event 里面的变量名,第二个`date`是 Huginn 使用的 Liquid 模版引擎语法里内置的一个 filter,可以理解为有特定功能的函数
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -283,33 +283,33 @@ Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like
|
|||||||
|
|
||||||
## FAQ
|
## FAQ
|
||||||
|
|
||||||
* **为什么启动docker容器后访问Huginn显示网络错误?**
|
* **为什么启动 docker 容器后访问 Huginn 显示网络错误?**
|
||||||
|
|
||||||
Huignn冷启动较慢,需要等待三五分钟。如果还是不行,检查端口映射和防火墙设置
|
Huignn 冷启动较慢,需要等待三五分钟。如果还是不行,检查端口映射和防火墙设置
|
||||||
|
|
||||||
* **为什么抓取到的包含相对路径的结果,网页上可以点击访问,但是生成的RSS不能正常使用?**
|
* **为什么抓取到的包含相对路径的结果,网页上可以点击访问,但是生成的 RSS 不能正常使用?**
|
||||||
|
|
||||||
检查link的设置,有些网站只是域名,有些网站有子目录,具体查看该网页源码中head节点里base url的设置
|
检查 link 的设置,有些网站只是域名,有些网站有子目录,具体查看该网页源码中 head 节点里 base url 的设置
|
||||||
|
|
||||||
* **如何对爬取到的某一项的字符串做更高级更复杂的处理?**
|
* **如何对爬取到的某一项的字符串做更高级更复杂的处理?**
|
||||||
|
|
||||||
可以参考[Hugnn官方对Liquid语法的文档](https://github.com/huginn/huginn/wiki/Formatting-Events-using-Liquid)以及[Shopify官方关于Liquid模板的语法文档](https://shopify.dev/api/liquid)
|
可以参考[Hugnn 官方对 Liquid 语法的文档](https://github.com/huginn/huginn/wiki/Formatting-Events-using-Liquid)以及[Shopify 官方关于 Liquid 模板的语法文档](https://shopify.dev/api/liquid)
|
||||||
|
|
||||||
* **为什么部署了Huginn,等了很长时间都无法访问后台页面?**
|
* **为什么部署了 Huginn,等了很长时间都无法访问后台页面?**
|
||||||
|
|
||||||
若部署后某个应用一直无法通过浏览器访问,请检查是否绑定到了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/)
|
若部署后某个应用一直无法通过浏览器访问,请检查是否绑定到了 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/)
|
||||||
|
|
||||||
* **Huginn 爬虫访问目标网站被拦截了怎么解决**
|
* **Huginn 爬虫访问目标网站被拦截了怎么解决**
|
||||||
介绍几个基本的反反爬虫策略:
|
介绍几个基本的反反爬虫策略:
|
||||||
1. 带上User Agent,要求是真实的浏览器UA。
|
1. 带上 User Agent,要求是真实的浏览器 UA。
|
||||||
2. Browserless去掉默认会和请求一起发送的可以被识别为爬虫的特征参数,设置browserless的环境变量`DEFAULT_HEADLESS=false`
|
2. Browserless 去掉默认会和请求一起发送的可以被识别为爬虫的特征参数,设置 browserless 的环境变量`DEFAULT_HEADLESS=false`
|
||||||
3. 使用随机代理IP,适用于因爬取频率达到爬虫阈值
|
3. 使用随机代理 IP,适用于因爬取频率达到爬虫阈值
|
||||||
|
|
||||||
|
|
||||||
## 扩展阅读
|
## 扩展阅读
|
||||||
|
|
||||||
* [Huginn官方文档](https://github.com/huginn/huginn/wiki/)
|
* [Huginn 官方文档](https://github.com/huginn/huginn/wiki/)
|
||||||
* [Liquid模板引擎语法官方文档](https://shopify.dev/api/liquid/filters/)
|
* [Liquid 模板引擎语法官方文档](https://shopify.dev/api/liquid/filters/)
|
||||||
* [RSS Man X部署指南](https://blog.colinx.one/posts/rssmanx%E5%AE%89%E8%A3%85%E9%83%A8%E7%BD%B2%E6%8C%87%E5%8D%97/)
|
* [RSS Man X 部署指南](https://blog.colinx.one/posts/rssmanx%E5%AE%89%E8%A3%85%E9%83%A8%E7%BD%B2%E6%8C%87%E5%8D%97/)
|
||||||
* [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/)
|
* [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/)
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
---
|
---
|
||||||
title: JAMStack初体验 - 基于 Pocket 和 Gatsby 构建你的「网络日志」
|
title: JAMStack 初体验 - 基于 Pocket 和 Gatsby 构建你的「网络日志」
|
||||||
date: 2021-01-09
|
date: 2021-01-09
|
||||||
lastmod: 2021-01-10
|
lastmod: 2021-01-10
|
||||||
description: 折腾了自己的专属RSS信息流,每天都能从那些高质量的信息源中获得不少干货知识,一般就会顺手收藏一下。有一天突然想起自己收藏的那些文章,本身不就是经过二次筛选的高质量文章吗?于是便在构想能不能通过某种方式将这个信息源也公开出来,一方面是记录,另一方面也是间接地展示自己。恰逢遇见JAMStack,最近在国外非常火,国内的阿里和腾讯也在跟进,搞静态托管那一套。经多方物色,最终确定基于Pocket API+Gatsby来构建这样一个自己的「网络日志」。
|
description: 折腾了自己的专属 RSS 信息流,每天都能从那些高质量的信息源中获得不少干货知识,一般就会顺手收藏一下。有一天突然想起自己收藏的那些文章,本身不就是经过二次筛选的高质量文章吗?于是便在构想能不能通过某种方式将这个信息源也公开出来,一方面是记录,另一方面也是间接地展示自己。恰逢遇见 JAMStack,最近在国外非常火,国内的阿里和腾讯也在跟进,搞静态托管那一套。经多方物色,最终确定基于 Pocket API+Gatsby 来构建这样一个自己的「网络日志」。
|
||||||
categories:
|
categories:
|
||||||
- 技术
|
- 技术
|
||||||
tags:
|
tags:
|
||||||
@@ -13,30 +13,30 @@ tags:
|
|||||||
- Github
|
- Github
|
||||||
---
|
---
|
||||||
|
|
||||||
<!-- # JAMStack初体验 - 基于Pocket 和 Gatsby 构建你的「网络日志」 -->
|
<!-- # JAMStack 初体验 - 基于 Pocket 和 Gatsby 构建你的「网络日志」 -->
|
||||||
|
|
||||||
折腾了自己的专属RSS信息流,每天都能从那些高质量的信息源中获得不少干货知识,一般就会顺手收藏一下。有一天突然想起自己收藏的那些文章,本身不就是经过二次筛选的高质量文章吗?于是便在构想能不能通过某种方式将这个信息源也公开出来,一方面是记录,另一方面也是间接地展示自己。恰逢遇见**JAMStack**,最近在国外非常火,国内的阿里和腾讯也在跟进,搞静态托管那一套。经多方物色,最终确定基于`Pocket API`+`Gatsby`来构建这样一个自己的「网络日志」。
|
折腾了自己的专属 RSS 信息流,每天都能从那些高质量的信息源中获得不少干货知识,一般就会顺手收藏一下。有一天突然想起自己收藏的那些文章,本身不就是经过二次筛选的高质量文章吗?于是便在构想能不能通过某种方式将这个信息源也公开出来,一方面是记录,另一方面也是间接地展示自己。恰逢遇见**JAMStack**,最近在国外非常火,国内的阿里和腾讯也在跟进,搞静态托管那一套。经多方物色,最终确定基于`Pocket API`+`Gatsby`来构建这样一个自己的「网络日志」。
|
||||||
|
|
||||||
> You are what you read.
|
> You are what you read.
|
||||||
|
|
||||||
## 简谈JAMStack
|
## 简谈 JAMStack
|
||||||
|
|
||||||
> JAMStack 即基于客户端 **J**avaScript,可重用 **A**PI 和预先构建 **M**arkup 的现代 Web 开发架构。当我们谈论 “堆栈” 时,我们不再谈论操作系统,特定 Web JAMStack 与特定技术无关。这是一种构建网站和应用程序的新方法,可提供更好的性能,更高的安全性,更低的扩展成本以及更好的开发人员体验。
|
> JAMStack 即基于客户端 **J**avaScript,可重用 **A**PI 和预先构建 **M**arkup 的现代 Web 开发架构。当我们谈论“堆栈”时,我们不再谈论操作系统,特定 Web JAMStack 与特定技术无关。这是一种构建网站和应用程序的新方法,可提供更好的性能,更高的安全性,更低的扩展成本以及更好的开发人员体验。
|
||||||
|
|
||||||
JAMStack是一种新颖的网站架构,与传统的服务端渲染和近些年国内流行的前后端分离等架构不同的是,他的网页是静态的,可以托管在CDN上,内容是动态的,可以方便地进行修改。
|
JAMStack 是一种新颖的网站架构,与传统的服务端渲染和近些年国内流行的前后端分离等架构不同的是,他的网页是静态的,可以托管在 CDN 上,内容是动态的,可以方便地进行修改。
|
||||||
|
|
||||||
**JAMStack几个显著的优势**:
|
**JAMStack 几个显著的优势**:
|
||||||
|
|
||||||
* 页面为静态,TTFT(TimeToFirstByte)的时间可以降到非常低
|
* 页面为静态,TTFT(TimeToFirstByte)的时间可以降到非常低
|
||||||
* 页面为静态,服务器遭受的安全风险要低得多
|
* 页面为静态,服务器遭受的安全风险要低得多
|
||||||
* 不同于客户端渲染,JAMStack对SEO会非常友好
|
* 不同于客户端渲染,JAMStack 对 SEO 会非常友好
|
||||||
* 不同于传统纯静态网站,内容可以方便地动态更新
|
* 不同于传统纯静态网站,内容可以方便地动态更新
|
||||||
|
|
||||||
## 为什么选择Gatsby
|
## 为什么选择 Gatsby
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
作为一个网站生成器Site Generator,Gastby的入门门槛其实是较高的,相对于Hexo、Hugo那种简简单单配置下就是一个站点,Gatsby的难度要更高,因为其灵活度更大,所有的配置、页面都是Javascript来配置的,当然你也可以使用Typescript。其基于React,生态丰富且灵活度高,天生`GarphQL`是选择它的主要原因。
|
作为一个网站生成器 Site Generator,Gastby 的入门门槛其实是较高的,相对于 Hexo、Hugo 那种简简单单配置下就是一个站点,Gatsby 的难度要更高,因为其灵活度更大,所有的配置、页面都是 Javascript 来配置的,当然你也可以使用 Typescript。其基于 React,生态丰富且灵活度高,天生`GarphQL`是选择它的主要原因。
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -46,22 +46,22 @@ JAMStack是一种新颖的网站架构,与传统的服务端渲染和近些年
|
|||||||
|
|
||||||
流程:
|
流程:
|
||||||
|
|
||||||
1. 我在其他地方看到不错的文章,将其收藏到Pocket
|
1. 我在其他地方看到不错的文章,将其收藏到 Pocket
|
||||||
2. 定时任务,从`Pocket API`获取文章数据,交给Gatsby生成站点
|
2. 定时任务,从`Pocket API`获取文章数据,交给 Gatsby 生成站点
|
||||||
3. 自动部署,将生成的静态文件部署到CDN
|
3. 自动部署,将生成的静态文件部署到 CDN
|
||||||
4. [reading.colinx.one](https://reading.colinx.one)站点主页就会出现我收藏的文章啦
|
4. [reading.colinx.one](https://reading.colinx.one)站点主页就会出现我收藏的文章啦
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
这其中,Gastby充当的是**Site Generator**的角色,而数据来源为我的`Pocket API`,也就是我把Pocket作为**Headless CMS**来管理我的数据,可以方便地进行更新和管理。
|
这其中,Gastby 充当的是**Site Generator**的角色,而数据来源为我的`Pocket API`,也就是我把 Pocket 作为**Headless CMS**来管理我的数据,可以方便地进行更新和管理。
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## 总结
|
## 总结
|
||||||
|
|
||||||
项目已经开源,地址在[https://github.com/Colin-XKL/Colinx-Reading.git](https://github.com/Colin-XKL/Colinx-Reading)。你也可以去申请自己的Pocket API然后部署你自己的站点。
|
项目已经开源,地址在[https://github.com/Colin-XKL/Colinx-Reading.git](https://github.com/Colin-XKL/Colinx-Reading)。你也可以去申请自己的 Pocket API 然后部署你自己的站点。
|
||||||
|
|
||||||
初始尝试JAMStack,感觉对于博客、文档这类的站点会非常友好,国外比较火的像Shopify这种的无头电商也不错,国内的碍于国情应该不大可能了。
|
初始尝试 JAMStack,感觉对于博客、文档这类的站点会非常友好,国外比较火的像 Shopify 这种的无头电商也不错,国内的碍于国情应该不大可能了。
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -28,31 +28,31 @@ tags:
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
## 配置C语言环境
|
## 配置 C 语言环境
|
||||||
|
|
||||||
下面以clang+VSCode+CodeRunner为例,搭建一个简单的C语言学习环境。
|
下面以 clang+VSCode+CodeRunner 为例,搭建一个简单的 C 语言学习环境。
|
||||||
|
|
||||||
### 检查编译器支持
|
### 检查编译器支持
|
||||||
|
|
||||||
C语言的编译需要编译器,一般可以选择gcc或是clang。Mac系统默认安装了clang同时兼容了gcc的指令。在终端中进行查看:
|
C 语言的编译需要编译器,一般可以选择 gcc 或是 clang。Mac 系统默认安装了 clang 同时兼容了 gcc 的指令。在终端中进行查看:
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
输入`gcc -v`指令测试gcc命令是否可用并查看其版本,由上图输出可以看到,该命令可用,版本信息显示的则是clang的信息。一般来说,刚学习C语言无需关注两者的异同。
|
输入`gcc -v`指令测试 gcc 命令是否可用并查看其版本,由上图输出可以看到,该命令可用,版本信息显示的则是 clang 的信息。一般来说,刚学习 C 语言无需关注两者的异同。
|
||||||
|
|
||||||
### 配置VSCode
|
### 配置 VSCode
|
||||||
|
|
||||||
<span id="vscode">VSCode</span>是由微软主导开发的一款开源免费、轻巧简单、功能强大的代码编辑器。配合各式各样的插件可以方便地实现各种你想得到和你想不到的功能。
|
<span id="vscode">VSCode</span>是由微软主导开发的一款开源免费、轻巧简单、功能强大的代码编辑器。配合各式各样的插件可以方便地实现各种你想得到和你想不到的功能。
|
||||||
|
|
||||||
前往[VSCode官网](https://code.visualstudio.com/)下载Mac 版VScode。并按照安装程序的指引进行安装。
|
前往[VSCode 官网](https://code.visualstudio.com/)下载 Mac 版 VScode。并按照安装程序的指引进行安装。
|
||||||
|
|
||||||
如果下载速度太慢,可以参考[这篇文章](https://zhuanlan.zhihu.com/p/112215618)。
|
如果下载速度太慢,可以参考[这篇文章](https://zhuanlan.zhihu.com/p/112215618)。
|
||||||
|
|
||||||

|

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

|

|
||||||
|
|
||||||
单击方形图标,打开扩展面板。
|
单击方形图标,打开扩展面板。
|
||||||
|
|
||||||
@@ -64,11 +64,11 @@ C语言的编译需要编译器,一般可以选择gcc或是clang。Mac系统
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
搜索`code runner`安装Code Runner插件。并按指示重启应用(Reload字样)
|
搜索`code runner`安装 Code Runner 插件。并按指示重启应用(Reload 字样)
|
||||||
|
|
||||||
<img src="https://blog-1301127393.file.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代码的高亮和补全等功能。
|
其他插件可根据需要安装。此处推荐安装 C/C++插件以实现 C 代码的高亮和补全等功能。
|
||||||
|
|
||||||
<img src="https://blog-1301127393.file.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%;" />
|
||||||
|
|
||||||
@@ -80,7 +80,7 @@ C语言的编译需要编译器,一般可以选择gcc或是clang。Mac系统
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
完成了上述的设置,我们就可以来编写C语言的程序了。
|
完成了上述的设置,我们就可以来编写 C 语言的程序了。
|
||||||
|
|
||||||
### Hello,C!
|
### Hello,C!
|
||||||
|
|
||||||
@@ -96,53 +96,53 @@ C语言的编译需要编译器,一般可以选择gcc或是clang。Mac系统
|
|||||||
|
|
||||||

|

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

|

|
||||||
|
|
||||||
### 完成✅
|
### 完成✅
|
||||||
|
|
||||||
现在,开始你的C语言学习之旅吧!
|
现在,开始你的 C 语言学习之旅吧!
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## 配置Python语言学习环境
|
## 配置 Python 语言学习环境
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### 检查Python环境
|
### 检查 Python 环境
|
||||||
|
|
||||||
Mac系统会自带有Python环境。在终端中输入python并回车。
|
Mac 系统会自带有 Python 环境。在终端中输入 python 并回车。
|
||||||
|
|
||||||

|

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

|

|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
此时显示的版本为3.8.6。
|
此时显示的版本为 3.8.6。
|
||||||
|
|
||||||
### Hello, Python!
|
### Hello, Python!
|
||||||
|
|
||||||
在交互式命令行界面,我们可以直接输入python语句并执行。
|
在交互式命令行界面,我们可以直接输入 python 语句并执行。
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
一句一句地输入代码再执行显然太低效了。我们需要一个趁手的代码编辑器。
|
一句一句地输入代码再执行显然太低效了。我们需要一个趁手的代码编辑器。
|
||||||
|
|
||||||
下面以VSCode为例。
|
下面以 VSCode 为例。
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
**VSCode的下载和基本配置**请参考上文C语言环境配置中VSCode的配置环节。
|
**VSCode 的下载和基本配置**请参考上文 C 语言环境配置中 VSCode 的配置环节。
|
||||||
|
|
||||||
完成基本的设置后,来安装Python的专属插件,以实现Python代码的高亮、补全等功能。
|
完成基本的设置后,来安装 Python 的专属插件,以实现 Python 代码的高亮、补全等功能。
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -160,11 +160,11 @@ Mac系统会自带有Python环境。在终端中输入python并回车。
|
|||||||
|
|
||||||
键入代码。
|
键入代码。
|
||||||
|
|
||||||

|

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

|

|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -172,32 +172,32 @@ Mac系统会自带有Python环境。在终端中输入python并回车。
|
|||||||
|
|
||||||
### 完成✅
|
### 完成✅
|
||||||
|
|
||||||
现在,开始你的Python语言学习之旅吧!
|
现在,开始你的 Python 语言学习之旅吧!
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## 配置Java 语言学习环境
|
## 配置 Java 语言学习环境
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### 安装JDK
|
### 安装 JDK
|
||||||
|
|
||||||
Mac OS并没有内置Java语言的支持,需要我们另外安装。
|
Mac OS 并没有内置 Java 语言的支持,需要我们另外安装。
|
||||||
|
|
||||||
直接在终端输入`java`,系统会提示Java未安装并跳转到Oracle官方的下载页面。在官网下载会强制要求你注册并登陆Oracle账户,网站连接缓慢且步骤繁琐。此处我们到清华大学的TUNA开源软件镜像站下载相关软件。
|
直接在终端输入`java`,系统会提示 Java 未安装并跳转到 Oracle 官方的下载页面。在官网下载会强制要求你注册并登陆 Oracle 账户,网站连接缓慢且步骤繁琐。此处我们到清华大学的 TUNA 开源软件镜像站下载相关软件。
|
||||||
|
|
||||||
首先到TUNA开源软件镜像站,来到[AdoptOpenJDK的下载页面](https://mirrors.tuna.tsinghua.edu.cn/AdoptOpenJDK/)。在列表中找到你需要的版本,点击进入后依次选择处理器架构和平台。
|
首先到 TUNA 开源软件镜像站,来到[AdoptOpenJDK 的下载页面](https://mirrors.tuna.tsinghua.edu.cn/AdoptOpenJDK/)。在列表中找到你需要的版本,点击进入后依次选择处理器架构和平台。
|
||||||
|
|
||||||
此处以Java 11 为例,其Mac OS 下安装程序的下载地址为[https://mirrors.tuna.tsinghua.edu.cn/AdoptOpenJDK/11/jdk/x64/mac/OpenJDK11U-jdk_x64_mac_hotspot_11.0.9.1_1.pkg](https://mirrors.tuna.tsinghua.edu.cn/AdoptOpenJDK/11/jdk/x64/mac/OpenJDK11U-jdk_x64_mac_hotspot_11.0.9.1_1.pkg)。需要其他版本的也可以自行选择。
|
此处以 Java 11 为例,其 Mac OS 下安装程序的下载地址为[https://mirrors.tuna.tsinghua.edu.cn/AdoptOpenJDK/11/jdk/x64/mac/OpenJDK11U-jdk_x64_mac_hotspot_11.0.9.1_1.pkg](https://mirrors.tuna.tsinghua.edu.cn/AdoptOpenJDK/11/jdk/x64/mac/OpenJDK11U-jdk_x64_mac_hotspot_11.0.9.1_1.pkg)。需要其他版本的也可以自行选择。
|
||||||
|
|
||||||
> 自行选择时请注意:
|
> 自行选择时请注意:
|
||||||
>
|
>
|
||||||
> * jre只是java运行环境,并不包括对java代码的编译功能。下载时请认准**jdk**
|
> * jre 只是 java 运行环境,并不包括对 java 代码的编译功能。下载时请认准**jdk**
|
||||||
>
|
>
|
||||||
> * 选择处理器架构时,传统Intel内核Mac请选择**x86**,对于M1内核的Mac,截止本文写作,暂无相关支持,请关注后续更新。
|
> * 选择处理器架构时,传统 Intel 内核 Mac 请选择**x86**,对于 M1 内核的 Mac,截止本文写作,暂无相关支持,请关注后续更新。
|
||||||
> * 最内层下载资源的列表中,jdk的资源文件名会有`hotspot`和 `openj9`两种字样。Java入门请选择`hotspot`,文件后缀名请选择`.pkg`
|
> * 最内层下载资源的列表中,jdk 的资源文件名会有`hotspot`和 `openj9`两种字样。Java 入门请选择`hotspot`,文件后缀名请选择`.pkg`
|
||||||
|
|
||||||
下载完成后点击打开,出现如下的安装界面。根据指引完成安装。
|
下载完成后点击打开,出现如下的安装界面。根据指引完成安装。
|
||||||
|
|
||||||
@@ -205,19 +205,19 @@ Mac OS并没有内置Java语言的支持,需要我们另外安装。
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
安装完成后,在终端中输入`java -version`并回车确认。看到如下输出说明已经正确安装且Java的版本为`11.0.9.1`即Java 11.
|
安装完成后,在终端中输入`java -version`并回车确认。看到如下输出说明已经正确安装且 Java 的版本为`11.0.9.1`即 Java 11.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
下面来为Java的学习配置一个趁手的代码编辑器,以VSCode为例。
|
下面来为 Java 的学习配置一个趁手的代码编辑器,以 VSCode 为例。
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### 为Java语言学习配置VSCode
|
### 为 Java 语言学习配置 VSCode
|
||||||
|
|
||||||
**VSCode的下载和基本配置**请参考上文C语言环境配置中VSCode的配置环节。
|
**VSCode 的下载和基本配置**请参考上文 C 语言环境配置中 VSCode 的配置环节。
|
||||||
|
|
||||||
完成基本的设置后,来安装Java的专属插件,以实现Java代码的高亮、补全等功能。
|
完成基本的设置后,来安装 Java 的专属插件,以实现 Java 代码的高亮、补全等功能。
|
||||||
|
|
||||||
在左侧扩展面板的搜索栏中搜索`java`,选择`Language Support for Java`并安装。
|
在左侧扩展面板的搜索栏中搜索`java`,选择`Language Support for Java`并安装。
|
||||||
|
|
||||||
@@ -237,11 +237,11 @@ Mac OS并没有内置Java语言的支持,需要我们另外安装。
|
|||||||
|
|
||||||
可以看到,在窗口下方的终端面板中,已经成功出现了**Hello, Java!**字样,代码运行成功。
|
可以看到,在窗口下方的终端面板中,已经成功出现了**Hello, Java!**字样,代码运行成功。
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
### 完成✅
|
### 完成✅
|
||||||
|
|
||||||
至此,Mac平台下的Java语言学习环境配置完毕,开始你的Java学习之旅吧!
|
至此,Mac 平台下的 Java 语言学习环境配置完毕,开始你的 Java 学习之旅吧!
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -249,11 +249,11 @@ Mac OS并没有内置Java语言的支持,需要我们另外安装。
|
|||||||
|
|
||||||
## 常见问题
|
## 常见问题
|
||||||
|
|
||||||
### 1. Java扩展安装弹出提示JDK版本过低
|
### 1. Java 扩展安装弹出提示 JDK 版本过低
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<img src="https://blog-1301127393.file.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的代码都可以被很好地支持。
|
这是因为插件内置的一些功能需要 Java 来运行,而这些功能又依赖于一些较新的特性,这些特性最早出现在 Java 11 中。为了更好地学习和使用 Java,这里推荐安装 Java 11 或 Java 12。网站教程或学校授课常常以 Java 8 为例,但对于初学者来说,几者无太大区别,Java 8 的代码都可以被很好地支持。
|
||||||
|
|
||||||
|
|||||||
@@ -1,15 +1,15 @@
|
|||||||
---
|
---
|
||||||
title: Minecraft上云笔记 - MC服务器快速搭建&MOD推荐&性能优化
|
title: Minecraft 上云笔记 - MC 服务器快速搭建&MOD 推荐&性能优化
|
||||||
date: 2021-02-07
|
date: 2021-02-07
|
||||||
lastmod: 2021-02-07
|
lastmod: 2021-02-07
|
||||||
description: Minecraft上云笔记 - MC服务器快速搭建&MOD推荐&性能优化。MC快速上云,学生机轻松带动,三五好友,畅快联机
|
description: Minecraft 上云笔记 - MC 服务器快速搭建&MOD 推荐&性能优化。MC 快速上云,学生机轻松带动,三五好友,畅快联机
|
||||||
categories:
|
categories:
|
||||||
- 技术
|
- 技术
|
||||||
- 指南
|
- 指南
|
||||||
tags:
|
tags:
|
||||||
- Java
|
- Java
|
||||||
- MC
|
- MC
|
||||||
- MC服务器
|
- MC 服务器
|
||||||
- Minecraft
|
- Minecraft
|
||||||
- 我的世界
|
- 我的世界
|
||||||
- 游戏
|
- 游戏
|
||||||
@@ -19,36 +19,36 @@ tags:
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
<!-- # Minecraft上云笔记 - MC服务器快速搭建&MOD推荐&性能优化 -->
|
<!-- # Minecraft 上云笔记 - MC 服务器快速搭建&MOD 推荐&性能优化 -->
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
> MC快速上云,学生机轻松带动,三五好友,畅快联机
|
> MC 快速上云,学生机轻松带动,三五好友,畅快联机
|
||||||
|
|
||||||
## 前言&踩坑
|
## 前言&踩坑
|
||||||
|
|
||||||
距离上一次玩MC已有四年之久,上次玩的时候还用的是家里的老爷机,连独显都没有,玩个整合包都费劲。如今设备早已更新换代,B站不少做MC的UP主的内容挺有趣,于是尝试重新拾起MC。
|
距离上一次玩 MC 已有四年之久,上次玩的时候还用的是家里的老爷机,连独显都没有,玩个整合包都费劲。如今设备早已更新换代,B 站不少做 MC 的 UP 主的内容挺有趣,于是尝试重新拾起 MC。
|
||||||
|
|
||||||
手机端国内只有网易代理,APP卡顿严重,生态封闭,体验奇差。安卓下载的国际服倒是还不错,不过身为基岩版,与Java版的生态并不相通。Github上找到了可以让基岩版进Java版服务器的轮子,不过手机端连接服务器又是一个麻烦事。连接远程服务器又需要登录Xbox,但是登上了连接的时候又出现奇怪的问题。
|
手机端国内只有网易代理,APP 卡顿严重,生态封闭,体验奇差。安卓下载的国际服倒是还不错,不过身为基岩版,与 Java 版的生态并不相通。Github 上找到了可以让基岩版进 Java 版服务器的轮子,不过手机端连接服务器又是一个麻烦事。连接远程服务器又需要登录 Xbox,但是登上了连接的时候又出现奇怪的问题。
|
||||||
|
|
||||||
贴吧有人给出解决方案,搭建VPN,形成局域网,那样服务器会被视为局域网内开放的MC服务端。但天朝政策收紧,搭建PPTP、L2TP等隧道均未果,严重怀疑云服务商干扰了对应服务的端口。几番权衡决定投归PC端的Java版,生态丰富而且可以充分利用好硬件性能。
|
贴吧有人给出解决方案,搭建 VPN,形成局域网,那样服务器会被视为局域网内开放的 MC 服务端。但天朝政策收紧,搭建 PPTP、L2TP 等隧道均未果,严重怀疑云服务商干扰了对应服务的端口。几番权衡决定投归 PC 端的 Java 版,生态丰富而且可以充分利用好硬件性能。
|
||||||
|
|
||||||
## MC服务器快速搭建
|
## MC 服务器快速搭建
|
||||||
|
|
||||||
### MC服务端选择
|
### MC 服务端选择
|
||||||
|
|
||||||
物色了很多MC服务端,但看了下主要可用且被应用广泛的就两类,
|
物色了很多 MC 服务端,但看了下主要可用且被应用广泛的就两类,
|
||||||
|
|
||||||
1. Spigot、PaperSpigot这类加装插件的
|
1. Spigot、PaperSpigot 这类加装插件的
|
||||||
2. SpongeForge这类可以加装Mod的
|
2. SpongeForge 这类可以加装 Mod 的
|
||||||
|
|
||||||
前者生态目测更丰富些,MCBBS上的开服板块大部分都是PaperSpigot搭建的。但是好像都是那种几十上百人的公用服务器,什么权限控制、小游戏、防作弊的插件居多,而我只是想要一个能够装Mod的可以供三五好友方便联机的服务器。我的选择是后者
|
前者生态目测更丰富些,MCBBS 上的开服板块大部分都是 PaperSpigot 搭建的。但是好像都是那种几十上百人的公用服务器,什么权限控制、小游戏、防作弊的插件居多,而我只是想要一个能够装 Mod 的可以供三五好友方便联机的服务器。我的选择是后者
|
||||||
|
|
||||||
### MC服务器快速搭建
|
### MC 服务器快速搭建
|
||||||
|
|
||||||
搭建方案千千万,不过Docker来的最实在。Github找到一个非常方便的镜像,[itzg/minecraft-server](https://github.com/itzg/docker-minecraft-server)。这个镜像是运行时构建的,会根据指定的环境变量下载和安装对应的MC服务端程序。支持的服务端有Bukkit、Spigot、PaperSpigot、SpongeForge等等,MC的版本和各项参数均支持通过环境变量自定义,非常方便。而且可以通过更换不同的Tag来使用不同的JDK版本,从8到15,Hotspot和OpenJ9都有,可以按需选用。有arm版本,树莓派也可食用。
|
搭建方案千千万,不过 Docker 来的最实在。Github 找到一个非常方便的镜像,[itzg/minecraft-server](https://github.com/itzg/docker-minecraft-server)。这个镜像是运行时构建的,会根据指定的环境变量下载和安装对应的 MC 服务端程序。支持的服务端有 Bukkit、Spigot、PaperSpigot、SpongeForge 等等,MC 的版本和各项参数均支持通过环境变量自定义,非常方便。而且可以通过更换不同的 Tag 来使用不同的 JDK 版本,从 8 到 15,Hotspot 和 OpenJ9 都有,可以按需选用。有 arm 版本,树莓派也可食用。
|
||||||
|
|
||||||
安装Docker和docker-compose后,可以方便地编写脚本来快速启动一个MC服务器。这里放上我的`docker-compose.yml`文件
|
安装 Docker 和 docker-compose 后,可以方便地编写脚本来快速启动一个 MC 服务器。这里放上我的`docker-compose.yml`文件
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
version: "3"
|
version: "3"
|
||||||
@@ -64,15 +64,15 @@ services:
|
|||||||
- "25565:25565"
|
- "25565:25565"
|
||||||
volumes:
|
volumes:
|
||||||
- "mc:/data" # 主要数据,包括存档数据等
|
- "mc:/data" # 主要数据,包括存档数据等
|
||||||
- "~/.minecraft/forgemods/:/data/mods/" #Forge Mod位置
|
- "~/.minecraft/forgemods/:/data/mods/" #Forge Mod 位置
|
||||||
# - "~/.minecraft/sponegemods/:/data/mods/plugins"
|
# - "~/.minecraft/sponegemods/:/data/mods/plugins"
|
||||||
- "~/.minecraft/tmp/:/tmp" # Forge下载失败可以自己放进去
|
- "~/.minecraft/tmp/:/tmp" # Forge 下载失败可以自己放进去
|
||||||
- /etc/timezone:/etc/timezone:ro #绑定本机的时区,方便看日志
|
- /etc/timezone:/etc/timezone:ro #绑定本机的时区,方便看日志
|
||||||
environment:
|
environment:
|
||||||
SERVER_NAME: "MCServer"
|
SERVER_NAME: "MCServer"
|
||||||
EULA: "TRUE"
|
EULA: "TRUE"
|
||||||
VERSION: "1.12.2" #(Ensure this is compatbile with the version of SpongeForge you are using!)
|
VERSION: "1.12.2" #(Ensure this is compatbile with the version of SpongeForge you are using!)
|
||||||
TYPE: "FORGE" # 这里以SpongeForge的服务端为例,其他服务端也支持
|
TYPE: "FORGE" # 这里以 SpongeForge 的服务端为例,其他服务端也支持
|
||||||
FORGEVERSION: "RECOMMENDED"
|
FORGEVERSION: "RECOMMENDED"
|
||||||
# FORGEVERSION: "14.23.5.2854"
|
# FORGEVERSION: "14.23.5.2854"
|
||||||
CONSOLE: "false"
|
CONSOLE: "false"
|
||||||
@@ -83,13 +83,13 @@ services:
|
|||||||
MAX_MEMORY: 1536M # 内存根据实际需要修改
|
MAX_MEMORY: 1536M # 内存根据实际需要修改
|
||||||
OVERRIDE_SERVER_PROPERTIES: "true"
|
OVERRIDE_SERVER_PROPERTIES: "true"
|
||||||
SNOOPER_ENABLED: "false" # 统计数据
|
SNOOPER_ENABLED: "false" # 统计数据
|
||||||
VIEW_DISTANCE: 8 #加载区块范围,默认10,建议4~8
|
VIEW_DISTANCE: 8 #加载区块范围,默认 10,建议 4~8
|
||||||
SEED: "-505794890" # 初始生成世界的种子
|
SEED: "-505794890" # 初始生成世界的种子
|
||||||
PVP: "true"
|
PVP: "true"
|
||||||
ONLINE_MODE: "FALSE" #正版校验开关
|
ONLINE_MODE: "FALSE" #正版校验开关
|
||||||
ALLOW_FLIGHT: "FALSE"
|
ALLOW_FLIGHT: "FALSE"
|
||||||
USE_AIKAR_FLAGS: "false" # 一些优化
|
USE_AIKAR_FLAGS: "false" # 一些优化
|
||||||
RESOURCE_PACK: "https://blog-1301127393.file.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 # 网络优化
|
NETWORK_COMPRESSION_THRESHOLD: 512 # 网络优化
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
rcon:
|
rcon:
|
||||||
@@ -120,131 +120,131 @@ volumes:
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
环境变量可以设置的地方非常多,可以到项目主页的README查看。https://github.com/itzg/docker-minecraft-server
|
环境变量可以设置的地方非常多,可以到项目主页的 README 查看。https://github.com/itzg/docker-minecraft-server
|
||||||
|
|
||||||
`docker-compose up -d` 启动,第一次启动他会下载MC、下载MC服务端、初始化世界。之后就可以在MC客户端连接了。(启动完毕就测试一下,测试没问题再进行后面安装mod、服务器调优(按需)的步骤!)
|
`docker-compose up -d` 启动,第一次启动他会下载 MC、下载 MC 服务端、初始化世界。之后就可以在 MC 客户端连接了。(启动完毕就测试一下,测试没问题再进行后面安装 mod、服务器调优(按需)的步骤!)
|
||||||
|
|
||||||
## MC客户端安装
|
## MC 客户端安装
|
||||||
|
|
||||||
### MC启动器选择
|
### MC 启动器选择
|
||||||
|
|
||||||
(正版玩家略过,现在貌似正版购买的只支持官方启动器)
|
(正版玩家略过,现在貌似正版购买的只支持官方启动器)
|
||||||
|
|
||||||
对于服务器选择,MCBBS有一篇讲的挺详细,可以到这里挑选:
|
对于服务器选择,MCBBS 有一篇讲的挺详细,可以到这里挑选:
|
||||||
|
|
||||||
> 我的世界Minecraft Java版 下载指南|文件结构说明|推荐启动器 - 软件资源 - Minecraft(我的世界)中文论坛 -
|
> 我的世界 Minecraft Java 版 下载指南 | 文件结构说明 | 推荐启动器 - 软件资源 - Minecraft(我的世界) 中文论坛 -
|
||||||
> https://www.mcbbs.net/forum.php?mod=viewthread&tid=38297&page=1#pid547821
|
> https://www.mcbbs.net/forum.php?mod=viewthread&tid=38297&page=1#pid547821
|
||||||
|
|
||||||
我推荐的启动器:
|
我推荐的启动器:
|
||||||
|
|
||||||
* **HMCL**(力荐!跨平台、颜值高、功能完备,不过需要先装Java)
|
* **HMCL**(力荐!跨平台、颜值高、功能完备,不过需要先装 Java)
|
||||||
* **BMCL**(次推荐,颜值略低,基于.Net,功能完备)
|
* **BMCL**(次推荐,颜值略低,基于.Net,功能完备)
|
||||||
|
|
||||||
我不推荐的启动器:
|
我不推荐的启动器:
|
||||||
|
|
||||||
* **Nsiso** (页面倒是做的漂亮,但是我装完mod启动竟然启动不了,兼容性或者说功能完备性欠缺,不知道后续版本如何。当时出问题之后我换HMCL就可以完美启动)
|
* **Nsiso** (页面倒是做的漂亮,但是我装完 mod 启动竟然启动不了,兼容性或者说功能完备性欠缺,不知道后续版本如何。当时出问题之后我换 HMCL 就可以完美启动)
|
||||||
|
|
||||||
上一张HMCL的主页的图:
|
上一张 HMCL 的主页的图:
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
其他没有使用过的启动器暂时不予评价。
|
其他没有使用过的启动器暂时不予评价。
|
||||||
|
|
||||||
### MC本体安装
|
### MC 本体安装
|
||||||
|
|
||||||
(正版玩家略过、整合包玩家略过)
|
(正版玩家略过、整合包玩家略过)
|
||||||
|
|
||||||
推荐方式为启动器内安装,还可以顺带把Forge和OptiFine也安装了。
|
推荐方式为启动器内安装,还可以顺带把 Forge 和 OptiFine 也安装了。
|
||||||
|
|
||||||
* Forge:安装第三方Mod需要
|
* Forge:安装第三方 Mod 需要
|
||||||
* OptiFine:游戏显示调优,有些光影会需要。
|
* OptiFine:游戏显示调优,有些光影会需要。
|
||||||
|
|
||||||
版本选择的话,我的选择是1.12.2。目前Mod支持比较完备,生态也很丰富。很多Mod最高只支持1.12.2,目测是后面官方更新了API啥的。当然倾向于原版的同学可以选择更新的1.16,后面的版本有很多有意思的更新。
|
版本选择的话,我的选择是 1.12.2。目前 Mod 支持比较完备,生态也很丰富。很多 Mod 最高只支持 1.12.2,目测是后面官方更新了 API 啥的。当然倾向于原版的同学可以选择更新的 1.16,后面的版本有很多有意思的更新。
|
||||||
|
|
||||||
> **踩坑笔记**:
|
> **踩坑笔记**:
|
||||||
>
|
>
|
||||||
> 1. 这些启动器大多带有三个下载源:官方服务器、MCBBS镜像和BMCL镜像。不过我当时安装的时候BMCL的镜像抽风了,下载一直没进度。建议选择MCBBS的源(虽然可能部分内容更新没有很勤)
|
> 1. 这些启动器大多带有三个下载源:官方服务器、MCBBS 镜像和 BMCL 镜像。不过我当时安装的时候 BMCL 的镜像抽风了,下载一直没进度。建议选择 MCBBS 的源(虽然可能部分内容更新没有很勤)
|
||||||
> 2. 通过启动器自动安装OptiFine的时候一直报错,换版本也是一样。后来的解决方案是选择窗口上方的【从本地文件安装/升级】
|
> 2. 通过启动器自动安装 OptiFine 的时候一直报错,换版本也是一样。后来的解决方案是选择窗口上方的【从本地文件安装/升级】
|
||||||
>
|
>
|
||||||
>
|
>
|
||||||
|
|
||||||
## Mod推荐
|
## Mod 推荐
|
||||||
|
|
||||||
针对我实际使用和测试的情况做一些推荐。下文所有Mod均在1.12.2下测试并实际使用过,兼容性良好。
|
针对我实际使用和测试的情况做一些推荐。下文所有 Mod 均在 1.12.2 下测试并实际使用过,兼容性良好。
|
||||||
|
|
||||||
### 功能增强型Mod(客户端必装)
|
### 功能增强型 Mod(客户端必装)
|
||||||
|
|
||||||
这部分Mod主要是部分音效和部分不涉及多人游戏的功能的增强,可以随意安装,装不装都不影响好友联机与进服务器。
|
这部分 Mod 主要是部分音效和部分不涉及多人游戏的功能的增强,可以随意安装,装不装都不影响好友联机与进服务器。
|
||||||
|
|
||||||
| Mod名称 | 说明 |
|
| Mod 名称 | 说明 |
|
||||||
| -------------------- | ------------------------------------------------------------ |
|
| -------------------- | ------------------------------------------------------------ |
|
||||||
| DynamicSurroundings | 动态环境音效,比如草地有蟋蟀的声音,夜晚有狼的声音,使游戏很有沉浸感 |
|
| DynamicSurroundings | 动态环境音效,比如草地有蟋蟀的声音,夜晚有狼的声音,使游戏很有沉浸感 |
|
||||||
| SoundFilters | 环绕音效,使得MC里所有的声音更真实,比如矿洞里的脚步声会有回音,房子里面听外面的声音会更小等等 |
|
| SoundFilters | 环绕音效,使得 MC 里所有的声音更真实,比如矿洞里的脚步声会有回音,房子里面听外面的声音会更小等等 |
|
||||||
| BetterHUD | 加强版的HUD信息显示,比如方位信息、坐标信息、时间信息、人物护甲、健康状态信息等等很多功能,而且可自定义程度也很高。 |
|
| BetterHUD | 加强版的 HUD 信息显示,比如方位信息、坐标信息、时间信息、人物护甲、健康状态信息等等很多功能,而且可自定义程度也很高。 |
|
||||||
| JEI | 可以方便地查看物品的合成表,一般整合包必备的插件 |
|
| JEI | 可以方便地查看物品的合成表,一般整合包必备的插件 |
|
||||||
| JustEnoughCharacters | JEI的扩展,支持按拼音、简拼搜索物品 |
|
| JustEnoughCharacters | JEI 的扩展,支持按拼音、简拼搜索物品 |
|
||||||
| Journeymap | 旅行地图,貌似已经停更,但是功能上没有什么欠缺。支持小地图显示、快速传送等。也是一般整合包必备的插件 |
|
| Journeymap | 旅行地图,貌似已经停更,但是功能上没有什么欠缺。支持小地图显示、快速传送等。也是一般整合包必备的插件 |
|
||||||
| InventoryTweaks | 按R键整理背包 |
|
| InventoryTweaks | 按 R 键整理背包 |
|
||||||
|
|
||||||
### 功能增强型Mod(服务端&客户端都必装)
|
### 功能增强型 Mod(服务端&客户端都必装)
|
||||||
|
|
||||||
| Mod名称 | 说明 |
|
| Mod 名称 | 说明 |
|
||||||
| ---------------- | ------------------------------------------------------------ |
|
| ---------------- | ------------------------------------------------------------ |
|
||||||
| FTB-Ultimine | 超级挖掘,挖矿、清理场地好帮手 |
|
| FTB-Ultimine | 超级挖掘,挖矿、清理场地好帮手 |
|
||||||
| Doubledoors | 双开门可以一键开关,不用挨个点击开关啦 |
|
| Doubledoors | 双开门可以一键开关,不用挨个点击开关啦 |
|
||||||
| OpenGlider | 滑翔翼,经济实用的交通工具 |
|
| OpenGlider | 滑翔翼,经济实用的交通工具 |
|
||||||
| Quark | 对原版MC的很多地方进行了一些加强,我最喜欢的是他增加了纸墙和纸灯笼这类物品,可以建造一些日系的建筑(文末有图) |
|
| Quark | 对原版 MC 的很多地方进行了一些加强,我最喜欢的是他增加了纸墙和纸灯笼这类物品,可以建造一些日系的建筑(文末有图) |
|
||||||
| KeepingInventory | 死亡不掉落,不解释,小白福音 |
|
| KeepingInventory | 死亡不掉落,不解释,小白福音 |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### 内容增强型Mod(服务端&客户端都必装)
|
### 内容增强型 Mod(服务端&客户端都必装)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
| Mod名称 | 说明 |
|
| Mod 名称 | 说明 |
|
||||||
| ------------------------ | ------------------------------------------------------------ |
|
| ------------------------ | ------------------------------------------------------------ |
|
||||||
| Natura | 添加了很多有意思的植物,整个世界变得生机勃勃,可以种樱花树,初期没食物还可以野外采蓝莓吃 |
|
| Natura | 添加了很多有意思的植物,整个世界变得生机勃勃,可以种樱花树,初期没食物还可以野外采蓝莓吃 |
|
||||||
| MrCrayfish`s Vehicle Mod | 载具Mod,可以在MC开车哦 |
|
| MrCrayfish`s Vehicle Mod | 载具 Mod,可以在 MC 开车哦 |
|
||||||
| Animania | 动物谷,更多的小动物、更加真实的动物喂养与繁殖 |
|
| Animania | 动物谷,更多的小动物、更加真实的动物喂养与繁殖 |
|
||||||
| Twilightforest | 鼎鼎有名的暮色森林,不解释 |
|
| Twilightforest | 鼎鼎有名的暮色森林,不解释 |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### 谨慎选用的Mod
|
### 谨慎选用的 Mod
|
||||||
|
|
||||||
| Mod名称 | 说明 |
|
| Mod 名称 | 说明 |
|
||||||
| -------- | ------------------------------------------------------------ |
|
| -------- | ------------------------------------------------------------ |
|
||||||
| LootBags | 击杀怪物得到战利品带,随机开出各种物品。不过你的箱子很快就会被一堆奇奇怪怪的东西堆满(比如我有一大箱无用的钻石马铠) |
|
| LootBags | 击杀怪物得到战利品带,随机开出各种物品。不过你的箱子很快就会被一堆奇奇怪怪的东西堆满(比如我有一大箱无用的钻石马铠) |
|
||||||
| Cuisine | 中文名烹饪工艺,默认开发的Mod,挺有趣,很好地还原了做菜的过程,做完之后的菜会获得药水一样的效果。不过目测已经停更,而且没有很好的教程 |
|
| Cuisine | 中文名烹饪工艺,默认开发的 Mod,挺有趣,很好地还原了做菜的过程,做完之后的菜会获得药水一样的效果。不过目测已经停更,而且没有很好的教程 |
|
||||||
|
|
||||||
**注意**:上面列举的所有Mod都是Mod本体,有些Mod的功能还依赖于其他Mod,在安装时必须同时安装Mod本体和他依赖的Mod。具体的依赖关系可以参考mcmod.cn上对Mod介绍页的Mod关系选项卡,CurseForge的Mod介绍页的Relation选项卡。
|
**注意**:上面列举的所有 Mod 都是 Mod 本体,有些 Mod 的功能还依赖于其他 Mod,在安装时必须同时安装 Mod 本体和他依赖的 Mod。具体的依赖关系可以参考 mcmod.cn 上对 Mod 介绍页的 Mod 关系选项卡,CurseForge 的 Mod 介绍页的 Relation 选项卡。
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
> **踩坑笔记**
|
> **踩坑笔记**
|
||||||
>
|
>
|
||||||
> 1. R键整理的快捷键与JEI的部分功能冲突,可自行修改快捷键
|
> 1. R 键整理的快捷键与 JEI 的部分功能冲突,可自行修改快捷键
|
||||||
> 2. R键整理对烹饪工艺中生产出来的菜品没辙
|
> 2. R 键整理对烹饪工艺中生产出来的菜品没辙
|
||||||
> 3. 推荐仅将FTB-Ultimine用于挖泥巴和挖沙,实际使用时可能会出现挖了矿不掉东西的情况┭┮﹏┭┮
|
> 3. 推荐仅将 FTB-Ultimine 用于挖泥巴和挖沙,实际使用时可能会出现挖了矿不掉东西的情况┭┮﹏┭┮
|
||||||
> 4. 不要用铁镐、钻石镐开FTB-Ultimine挖东西!耐久掉的飞快
|
> 4. 不要用铁镐、钻石镐开 FTB-Ultimine 挖东西!耐久掉的飞快
|
||||||
> 5. DynamicSurroundings可以在设置里按需屏蔽特定的声音,比如装上后发现我家所在的地形会有乌鸦叫,就很烦。屏蔽之后整个世界都好起来了
|
> 5. DynamicSurroundings 可以在设置里按需屏蔽特定的声音,比如装上后发现我家所在的地形会有乌鸦叫,就很烦。屏蔽之后整个世界都好起来了
|
||||||
> 6. DynamicSurroundings与Animania有bug,对Animania的某些特有生物进行交互时会触发找不到特定媒体资源的bug,导致游戏崩溃,重新进入又会触发这个bug,只有在进去的一瞬间用指令将玩家杀死才能勉强逃离这个无尽的循环(血泪的教训)(最新版本已修复)
|
> 6. DynamicSurroundings 与 Animania 有 bug,对 Animania 的某些特有生物进行交互时会触发找不到特定媒体资源的 bug,导致游戏崩溃,重新进入又会触发这个 bug,只有在进去的一瞬间用指令将玩家杀死才能勉强逃离这个无尽的循环(血泪的教训)(最新版本已修复)
|
||||||
> 7. Animania会对每个维度的世界进行注入,比较耗费资源。在同时安装虚无世界AoA的情况下,每次服务器启动Animania需要对其包含的二十多的世界维度进行注入,严重拖慢启动速度
|
> 7. Animania 会对每个维度的世界进行注入,比较耗费资源。在同时安装虚无世界 AoA 的情况下,每次服务器启动 Animania 需要对其包含的二十多的世界维度进行注入,严重拖慢启动速度
|
||||||
> 8. Quark模组对1.12的MC只有1.6版本而没有后续版本的内容更新和bug修复。实际使用中有点吃性能
|
> 8. Quark 模组对 1.12 的 MC 只有 1.6 版本而没有后续版本的内容更新和 bug 修复。实际使用中有点吃性能
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## MC服务器优化
|
## MC 服务器优化
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
> 我使用的是SpongeForge,因此只对一些通用的优化手段和原版服务器的一些参数做介绍。使用Spigot等的可以参考MCBBS的帖子进行更加深入的调优:
|
> 我使用的是 SpongeForge,因此只对一些通用的优化手段和原版服务器的一些参数做介绍。使用 Spigot 等的可以参考 MCBBS 的帖子进行更加深入的调优:
|
||||||
>
|
>
|
||||||
> Minecraft服务器优化教程 —— 让多带50%的玩家不再是梦 - 联机教程 - Minecraft(我的世界)中文论坛
|
> Minecraft 服务器优化教程 —— 让多带 50% 的玩家不再是梦 - 联机教程 - Minecraft(我的世界) 中文论坛
|
||||||
> https://www.mcbbs.net/forum.php?mod=viewthread&tid=478126
|
> https://www.mcbbs.net/forum.php?mod=viewthread&tid=478126
|
||||||
|
|
||||||
对于一台长期运行的MC服务器,我们需要关注的主要是下面几点
|
对于一台长期运行的 MC 服务器,我们需要关注的主要是下面几点
|
||||||
|
|
||||||
### 1. 稳定性
|
### 1. 稳定性
|
||||||
|
|
||||||
@@ -252,13 +252,13 @@ volumes:
|
|||||||
|
|
||||||
**防止服务端程序自己崩溃**的方法有:
|
**防止服务端程序自己崩溃**的方法有:
|
||||||
|
|
||||||
* 尽量使用稳定版的MC和稳定版的Forge
|
* 尽量使用稳定版的 MC 和稳定版的 Forge
|
||||||
* 避免使用评分较低的Mod
|
* 避免使用评分较低的 Mod
|
||||||
* 加载大量Mod前先在本地做好测试,避免冲突,同时保障所有依赖项已安装好
|
* 加载大量 Mod 前先在本地做好测试,避免冲突,同时保障所有依赖项已安装好
|
||||||
|
|
||||||
**避免外在影响致MC服务器崩溃**的方法有:
|
**避免外在影响致 MC 服务器崩溃**的方法有:
|
||||||
|
|
||||||
* 为JVM设置合适的内存限制,避免因`OutOfMemory`导致MC服务端进程被系统杀掉
|
* 为 JVM 设置合适的内存限制,避免因`OutOfMemory`导致 MC 服务端进程被系统杀掉
|
||||||
* 开放的服务器最好限制下权限并封堵一些游戏内的漏洞,避免熊孩子炸服
|
* 开放的服务器最好限制下权限并封堵一些游戏内的漏洞,避免熊孩子炸服
|
||||||
|
|
||||||
### 2. 可维护性
|
### 2. 可维护性
|
||||||
@@ -267,62 +267,62 @@ volumes:
|
|||||||
|
|
||||||
我的建议有以下几点:
|
我的建议有以下几点:
|
||||||
|
|
||||||
* **使用Docker**。这样可以方便地进行服务的停启与迁移、升级。
|
* **使用 Docker**。这样可以方便地进行服务的停启与迁移、升级。
|
||||||
* **使用Docker-Compose**并保存`docker-coompose.yml`文件,这样你可以方便地更改一些参数而不用每次都输入一串长长的`docker run`指令。
|
* **使用 Docker-Compose**并保存`docker-coompose.yml`文件,这样你可以方便地更改一些参数而不用每次都输入一串长长的`docker run`指令。
|
||||||
* **经常备份**。数据无价。
|
* **经常备份**。数据无价。
|
||||||
* **尽量避免使用已经停止维护的Mod**。到时候要是出了奇怪的Bug,你就只能含泪把这个Mod所有相关的内容从你的世界剥离。
|
* **尽量避免使用已经停止维护的 Mod**。到时候要是出了奇怪的 Bug,你就只能含泪把这个 Mod 所有相关的内容从你的世界剥离。
|
||||||
|
|
||||||
### 3. 响应及时性
|
### 3. 响应及时性
|
||||||
|
|
||||||
响应及时性也体现在几个方面:
|
响应及时性也体现在几个方面:
|
||||||
|
|
||||||
* CPU运算能力够强,复杂的时间(战斗、爆炸)等能很快地处理过来
|
* CPU 运算能力够强,复杂的时间(战斗、爆炸)等能很快地处理过来
|
||||||
* 存储设备IO速度快,服务启动、区块加载可以非常迅速
|
* 存储设备 IO 速度快,服务启动、区块加载可以非常迅速
|
||||||
* 网络连接稳定、延迟低,波动小
|
* 网络连接稳定、延迟低,波动小
|
||||||
|
|
||||||
上面三点可以通过堆硬件来实现。不过有没有不辛苦钱包又能提高游戏体验的方法呢?
|
上面三点可以通过堆硬件来实现。不过有没有不辛苦钱包又能提高游戏体验的方法呢?
|
||||||
|
|
||||||
自然是有的。我们可以通过修改服务端程序的部分配置来实现。不过本质上是牺牲一小部分游戏体验换取一大部分游戏体验,就看你能忍受的牺牲的部分能有多少咯。
|
自然是有的。我们可以通过修改服务端程序的部分配置来实现。不过本质上是牺牲一小部分游戏体验换取一大部分游戏体验,就看你能忍受的牺牲的部分能有多少咯。
|
||||||
|
|
||||||
MC服务器的优化主要聚焦在两个地方
|
MC 服务器的优化主要聚焦在两个地方
|
||||||
|
|
||||||
1. MC服务端程序的参数优化
|
1. MC 服务端程序的参数优化
|
||||||
2. JVM参数调优
|
2. JVM 参数调优
|
||||||
|
|
||||||
#### MC服务端优化
|
#### MC 服务端优化
|
||||||
|
|
||||||
**VIEW_DISTANCE: 8**
|
**VIEW_DISTANCE: 8**
|
||||||
|
|
||||||
这一项可以更改加载的**区块**的数量。这个数值越大,就会加载更多的区块,占用的内存和CPU就会更多。这个数值过小可能会导致你家的作物不长以及怪物刷不出来,会显著影响游戏体验。减小这一项的数值可以显著减少内存和CPU占用。
|
这一项可以更改加载的**区块**的数量。这个数值越大,就会加载更多的区块,占用的内存和 CPU 就会更多。这个数值过小可能会导致你家的作物不长以及怪物刷不出来,会显著影响游戏体验。减小这一项的数值可以显著减少内存和 CPU 占用。
|
||||||
|
|
||||||
默认值10,建议值4~8。
|
默认值 10,建议值 4~8。
|
||||||
|
|
||||||
> **注意**:1个***区块***并不是指一个方块,而是指一个`16*16`的区域。这个数值对可视区域的影响并不会很大,你可以放心地减小这个数值。这一项的值每减小1,你的服务器每次就可以少计算`16*16*256`个方块
|
> **注意**:1 个***区块***并不是指一个方块,而是指一个`16*16`的区域。这个数值对可视区域的影响并不会很大,你可以放心地减小这个数值。这一项的值每减小 1,你的服务器每次就可以少计算`16*16*256`个方块
|
||||||
|
|
||||||
**NETWORK_COMPRESSION_THRESHOLD: 512**
|
**NETWORK_COMPRESSION_THRESHOLD: 512**
|
||||||
|
|
||||||
这一项的含义是对大于特定大小的数据包进行压缩。压缩会消耗一定量的CPU资源,不过可以减缓网络的压力。如果你的网络条件较差,可以减小这一项的数值。
|
这一项的含义是对大于特定大小的数据包进行压缩。压缩会消耗一定量的 CPU 资源,不过可以减缓网络的压力。如果你的网络条件较差,可以减小这一项的数值。
|
||||||
|
|
||||||
默认值:256
|
默认值:256
|
||||||
|
|
||||||
#### JVM调优
|
#### JVM 调优
|
||||||
|
|
||||||
> 首先需要声明的是,我不是JVM调参专业户,下文的数据也并不是严格的评测。结论并不严谨,仅仅从一个技术人员的视角出发,结合我实际的使用体验,给出的一些建议,供大家参考。
|
> 首先需要声明的是,我不是 JVM 调参专业户,下文的数据也并不是严格的评测。结论并不严谨,仅仅从一个技术人员的视角出发,结合我实际的使用体验,给出的一些建议,供大家参考。
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
##### 当我们在讨论JVM调优时,我们在谈论什么?
|
##### 当我们在讨论 JVM 调优时,我们在谈论什么?
|
||||||
|
|
||||||
**垃圾回收**(**G**arbage **C**ollection)一直以来都是众多JVM调优教程的核心所在。Java运行于VM上,运行过程中不可避免的垃圾回收是最影响应用整体性能的存在。
|
**垃圾回收**(**G**arbage **C**ollection)一直以来都是众多 JVM 调优教程的核心所在。Java 运行于 VM 上,运行过程中不可避免的垃圾回收是最影响应用整体性能的存在。
|
||||||
|
|
||||||
这里我们不去纠结那些新生代、老年代的划分、各种比率、各种单元的大小,我们只需要明白几点:
|
这里我们不去纠结那些新生代、老年代的划分、各种比率、各种单元的大小,我们只需要明白几点:
|
||||||
|
|
||||||
1. 不要觉得你比JVM的开发人员牛X
|
1. 不要觉得你比 JVM 的开发人员牛 X
|
||||||
2. 不要觉得网上各路JVM调参大神的方法就适用于你
|
2. 不要觉得网上各路 JVM 调参大神的方法就适用于你
|
||||||
|
|
||||||
众多顶级公司都在使用Java,其母公司Oracle自然会招聘全球最优秀的一批开发人员去开发,所以**JVM的大部分设置都是开箱即用的,默认最佳的。**在你不了解某一项参数的含义、不知道更改某一项配置的目的时,最好是不要做改动。
|
众多顶级公司都在使用 Java,其母公司 Oracle 自然会招聘全球最优秀的一批开发人员去开发,所以**JVM 的大部分设置都是开箱即用的,默认最佳的。**在你不了解某一项参数的含义、不知道更改某一项配置的目的时,最好是不要做改动。
|
||||||
|
|
||||||
其次,网络上大部分JVM的调优教程都是应对“面试造火箭”的,即便是以实际应用为主的JVM优化教程,人家那都是几十核几百G内存的机器,一秒钟要承担几百万的访问量,他们做优化的出发点、目标都**不一定适用于你。**
|
其次,网络上大部分 JVM 的调优教程都是应对“面试造火箭”的,即便是以实际应用为主的 JVM 优化教程,人家那都是几十核几百 G 内存的机器,一秒钟要承担几百万的访问量,他们做优化的出发点、目标都**不一定适用于你。**
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -330,17 +330,17 @@ MC服务器的优化主要聚焦在两个地方
|
|||||||
|
|
||||||
明确了上面两点我们可以开始着手进行优化了。
|
明确了上面两点我们可以开始着手进行优化了。
|
||||||
|
|
||||||
首先需要明确你开MC服务器的机器是什么配置。以我的为例,我使用的是腾讯云的**1核2G的云服务器**,**带宽2M**,即峰值速度为256k/s。
|
首先需要明确你开 MC 服务器的机器是什么配置。以我的为例,我使用的是腾讯云的**1 核 2G 的云服务器**,**带宽 2M**,即峰值速度为 256k/s。
|
||||||
|
|
||||||
其次需要知道你的优化目标。网络上大多数JVM的优化教程都是追求更低的响应时间,以便能够承载更多的并发访问。
|
其次需要知道你的优化目标。网络上大多数 JVM 的优化教程都是追求更低的响应时间,以便能够承载更多的并发访问。
|
||||||
|
|
||||||
以我的情况为例:我开这个MC服务器的目的,只是希望能够与**不超过5个好友**联机,玩带一些暮色森林这样的**Mod**的MC。
|
以我的情况为例:我开这个 MC 服务器的目的,只是希望能够与**不超过 5 个好友**联机,玩带一些暮色森林这样的**Mod**的 MC。
|
||||||
|
|
||||||
搭建完服务器后,观察了了一段时间后发现,
|
搭建完服务器后,观察了了一段时间后发现,
|
||||||
|
|
||||||
* 只有在MC服务器刚启动的时候CPU占用率会达到100%,空载(没有玩家在线,后台没有高负荷任务)只有2%左右,两人联机时CPU平均负载在30%左右。
|
* 只有在 MC 服务器刚启动的时候 CPU 占用率会达到 100%,空载(没有玩家在线,后台没有高负荷任务)只有 2% 左右,两人联机时 CPU 平均负载在 30% 左右。
|
||||||
* 加装了十几个Mod的情况下,空载占用CPU资源在1G左右,两人联机1.4G左右。
|
* 加装了十几个 Mod 的情况下,空载占用 CPU 资源在 1G 左右,两人联机 1.4G 左右。
|
||||||
* 只有在客户端刚进入的时候会跑满带宽,之后正常游戏时,每台客户端需要占用10K/s左右的带宽。
|
* 只有在客户端刚进入的时候会跑满带宽,之后正常游戏时,每台客户端需要占用 10K/s 左右的带宽。
|
||||||
* 联机游戏间或卡顿,但很快恢复
|
* 联机游戏间或卡顿,但很快恢复
|
||||||
* 查看日志发现空载时时竟然仍会`can't keep up`
|
* 查看日志发现空载时时竟然仍会`can't keep up`
|
||||||
|
|
||||||
@@ -350,38 +350,38 @@ MC服务器的优化主要聚焦在两个地方
|
|||||||
|
|
||||||
那么以我的情况来看
|
那么以我的情况来看
|
||||||
|
|
||||||
* CPU性能富余
|
* CPU 性能富余
|
||||||
* 内存吃紧
|
* 内存吃紧
|
||||||
* 带宽够用
|
* 带宽够用
|
||||||
|
|
||||||
那么**我的优化目标**就是:利用好CPU资源,尽力减少内存占用,以便为其他程序让路,并且为未来可能要添加的新Mod留出空间。
|
那么**我的优化目标**就是:利用好 CPU 资源,尽力减少内存占用,以便为其他程序让路,并且为未来可能要添加的新 Mod 留出空间。
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
##### 优化
|
##### 优化
|
||||||
|
|
||||||
JVM优化的大头是GC。网上吹的漫天飞的G1GC的确有他的可取之处,一些腐竹的测试数据也表明其实际效果优秀。但是在我的案例中,使用G1GC是有问题的:
|
JVM 优化的大头是 GC。网上吹的漫天飞的 G1GC 的确有他的可取之处,一些腐竹的测试数据也表明其实际效果优秀。但是在我的案例中,使用 G1GC 是有问题的:
|
||||||
|
|
||||||
* **G1GC天生是为了现代互联网应用环境而设计的**,需要开很多个线程协同来完成垃圾回收工作。他适用于多核处理器+大内存机器上的高负荷运算。而我的服务器是单核,内存也并不富裕。
|
* **G1GC 天生是为了现代互联网应用环境而设计的**,需要开很多个线程协同来完成垃圾回收工作。他适用于多核处理器 + 大内存机器上的高负荷运算。而我的服务器是单核,内存也并不富裕。
|
||||||
* **多线程的GC模式跑在单核机器上**时出现的问题就是:单核机器无法并行处理多个任务,其本质上只是在多个任务之间快速切换,来实现各个任务基本“实时”“并行”运行。但是线程之间的切换是有代价的,**性能损耗积少成多**。
|
* **多线程的 GC 模式跑在单核机器上**时出现的问题就是:单核机器无法并行处理多个任务,其本质上只是在多个任务之间快速切换,来实现各个任务基本“实时”“并行”运行。但是线程之间的切换是有代价的,**性能损耗积少成多**。
|
||||||
* **G1GC追求在延迟可控的情况下达到更高的吞吐量**。但他的**代价是[更多的内存占用](https://segmentfault.com/q/1010000021658061)。**小内存机器并不适合使用G1GC。
|
* **G1GC 追求在延迟可控的情况下达到更高的吞吐量**。但他的**代价是[更多的内存占用](https://segmentfault.com/q/1010000021658061)。**小内存机器并不适合使用 G1GC。
|
||||||
|
|
||||||
物色了一番,我最终选择换用Serial GC代替原本的G1GC。
|
物色了一番,我最终选择换用 Serial GC 代替原本的 G1GC。
|
||||||
|
|
||||||
> **Serial(-XX:+UseSerialGC)**
|
> **Serial(-XX:+UseSerialGC)**
|
||||||
>
|
>
|
||||||
> 从名字我们可以看出,这是一个串行收集器。
|
> 从名字我们可以看出,这是一个串行收集器。
|
||||||
>
|
>
|
||||||
> Serial 收集器是 Java 虚拟机中最基本、历史最悠久的收集器。在 JDK1.3 之前是 Java 虚拟机新生代收集器的唯一选择。目前也是 ClientVM 、 ServerVM 4 核 4GB 以下机器默认垃圾回收器。Serial 收集器并不是只能使用一个 CPU 进行收集,而是当 JVM 需要进行垃圾回收的时候,需暂停所有的用户线程,直到回收结束。
|
> Serial 收集器是 Java 虚拟机中最基本、历史最悠久的收集器。在 JDK1.3 之前是 Java 虚拟机新生代收集器的唯一选择。目前也是 ClientVM、ServerVM 4 核 4GB 以下机器默认垃圾回收器。Serial 收集器并不是只能使用一个 CPU 进行收集,而是当 JVM 需要进行垃圾回收的时候,需暂停所有的用户线程,直到回收结束。
|
||||||
>
|
>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
##### 优化前后对比
|
##### 优化前后对比
|
||||||
|
|
||||||
1. 优化前MC服务器的资源占用情况
|
1. 优化前 MC 服务器的资源占用情况
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -391,7 +391,7 @@ JVM优化的大头是GC。网上吹的漫天飞的G1GC的确有他的可取之
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
3. 进一步对mod优化后,2 online
|
3. 进一步对 mod 优化后,2 online
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
@@ -399,7 +399,7 @@ JVM优化的大头是GC。网上吹的漫天飞的G1GC的确有他的可取之
|
|||||||
|
|
||||||
##### 其他优化方法
|
##### 其他优化方法
|
||||||
|
|
||||||
更换GC只是众多优化方法中的一种,其他的诸如换用OpenJ9虚拟机也可以有不错的效果,可惜的是Forge对其的支持并不友好,只得作罢。还有启用指针压缩也可以获得不错的性能提升,不过JDK6_u23之后 `UseCompressedOops` 就已经被默认启用了,使用新版本Java基本不用关注这方面的优化了。
|
更换 GC 只是众多优化方法中的一种,其他的诸如换用 OpenJ9 虚拟机也可以有不错的效果,可惜的是 Forge 对其的支持并不友好,只得作罢。还有启用指针压缩也可以获得不错的性能提升,不过 JDK6_u23 之后 `UseCompressedOops` 就已经被默认启用了,使用新版本 Java 基本不用关注这方面的优化了。
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -411,11 +411,11 @@ JVM优化的大头是GC。网上吹的漫天飞的G1GC的确有他的可取之
|
|||||||
|
|
||||||
我家:
|
我家:
|
||||||
|
|
||||||

|

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

|

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

|

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

|

|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -441,7 +441,7 @@ Better HUD + 旅行地图效果图
|
|||||||
https://www.zhihu.com/question/54048310
|
https://www.zhihu.com/question/54048310
|
||||||
* View Distance: optimize your Minecraft server
|
* View Distance: optimize your Minecraft server
|
||||||
https://mtxserv.com/article/12535/view_distance_optimize_your_minecraft_server
|
https://mtxserv.com/article/12535/view_distance_optimize_your_minecraft_server
|
||||||
* Minecraft服务器优化教程 —— 让多带50%的玩家不再是梦 - 联机教程 - Minecraft(我的世界)中文论坛
|
* Minecraft 服务器优化教程 —— 让多带 50% 的玩家不再是梦 - 联机教程 - Minecraft(我的世界) 中文论坛
|
||||||
https://www.mcbbs.net/forum.php?mod=viewthread&tid=478126
|
https://www.mcbbs.net/forum.php?mod=viewthread&tid=478126
|
||||||
* itzg/docker-minecraft-server: Docker image that provides a Minecraft Server that will automatically download selected version at startup
|
* itzg/docker-minecraft-server: Docker image that provides a Minecraft Server that will automatically download selected version at startup
|
||||||
https://github.com/itzg/docker-minecraft-server
|
https://github.com/itzg/docker-minecraft-server
|
||||||
|
|||||||
@@ -1,15 +1,15 @@
|
|||||||
---
|
---
|
||||||
title: Minecraft上云笔记 - MC自定义皮肤并支持联机
|
title: Minecraft 上云笔记 - MC 自定义皮肤并支持联机
|
||||||
date: 2021-02-22
|
date: 2021-02-22
|
||||||
lastmod: 2021-02-22
|
lastmod: 2021-02-22
|
||||||
description: Minecraft上云笔记 - MC自定义皮肤并支持联机
|
description: Minecraft 上云笔记 - MC 自定义皮肤并支持联机
|
||||||
categories:
|
categories:
|
||||||
- 技术
|
- 技术
|
||||||
- 指南
|
- 指南
|
||||||
tags:
|
tags:
|
||||||
- Java
|
- Java
|
||||||
- MC
|
- MC
|
||||||
- MC服务器
|
- MC 服务器
|
||||||
- Minecraft
|
- Minecraft
|
||||||
- 我的世界
|
- 我的世界
|
||||||
- 游戏
|
- 游戏
|
||||||
@@ -17,7 +17,7 @@ tags:
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
<!-- # Minecraft上云笔记 - MC自定义皮肤并支持联机 -->
|
<!-- # Minecraft 上云笔记 - MC 自定义皮肤并支持联机 -->
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -27,7 +27,7 @@ tags:
|
|||||||
https://mcskin.cn/user
|
https://mcskin.cn/user
|
||||||
* [CSL] 万用皮肤补丁 (CustomSkinLoader) - MC 百科 | 最大的 Minecraft 中文 MOD 百科
|
* [CSL] 万用皮肤补丁 (CustomSkinLoader) - MC 百科 | 最大的 Minecraft 中文 MOD 百科
|
||||||
https://www.mcmod.cn/class/883.html
|
https://www.mcmod.cn/class/883.html
|
||||||
* 全员安装皮肤mod,即可保证所有人都可以看见对方的皮肤
|
* 全员安装皮肤 mod,即可保证所有人都可以看见对方的皮肤
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -35,11 +35,11 @@ tags:
|
|||||||
|
|
||||||
使用:
|
使用:
|
||||||
|
|
||||||
1. 安装好forge
|
1. 安装好 forge
|
||||||
|
|
||||||
2. 安装好皮肤补丁的mod
|
2. 安装好皮肤补丁的 mod
|
||||||
|
|
||||||
3. 启动一次MC,让他自动生成配置文件
|
3. 启动一次 MC,让他自动生成配置文件
|
||||||
|
|
||||||
4. 在皮肤站注册,并建立与游戏中角色名字相同的角色并设定皮肤
|
4. 在皮肤站注册,并建立与游戏中角色名字相同的角色并设定皮肤
|
||||||
|
|
||||||
@@ -63,7 +63,7 @@ tags:
|
|||||||
|
|
||||||
> **注意**:
|
> **注意**:
|
||||||
>
|
>
|
||||||
> 自定义皮肤站最好排在Mojang API的前面,不然的话如果有正版用户起的角色名字和你的一样,就会默认载入他的皮肤(巨坑+1)
|
> 自定义皮肤站最好排在 Mojang API 的前面,不然的话如果有正版用户起的角色名字和你的一样,就会默认载入他的皮肤(巨坑 +1)
|
||||||
>
|
>
|
||||||
>
|
>
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
---
|
---
|
||||||
title: RSSManX - 一套RSS综合解决方案
|
title: RSSManX - 一套 RSS 综合解决方案
|
||||||
date: 2021-05-08
|
date: 2021-05-08
|
||||||
lastmod: 2021-05-08
|
lastmod: 2021-05-08
|
||||||
description: 网站没有源,海外站的源看不了?这也许是第一个自带海外加速的RSS解决方案
|
description: 网站没有源,海外站的源看不了?这也许是第一个自带海外加速的 RSS 解决方案
|
||||||
categories:
|
categories:
|
||||||
- 技术
|
- 技术
|
||||||
- 指南
|
- 指南
|
||||||
@@ -23,7 +23,7 @@ tags:
|
|||||||
|
|
||||||
[RSSman X](https://github.com/Colin-XKL/RSSmanX) 基于 docker-compsoe 提供容器化 TTRSS 与 RSSHUB 等组件的一键部署,整合实用组件为你带来最佳 RSS 体验
|
[RSSman X](https://github.com/Colin-XKL/RSSmanX) 基于 docker-compsoe 提供容器化 TTRSS 与 RSSHUB 等组件的一键部署,整合实用组件为你带来最佳 RSS 体验
|
||||||
|
|
||||||
**Feature: 简单一键部署,常用组件支持,自动更新支持,服务健康自检支持,海外站点 RSS 解锁**
|
**Feature:简单一键部署,常用组件支持,自动更新支持,服务健康自检支持,海外站点 RSS 解锁**
|
||||||
|
|
||||||
### 快速开始
|
### 快速开始
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
title: RSSManX安装部署指南
|
title: RSSManX 安装部署指南
|
||||||
date: 2022-05-07
|
date: 2022-05-07
|
||||||
description: RSS Man X是我两年前入坑RSS后,为了方便更多人更方便地使用RSS所发起的一个项目,主要是用docker-compose整合了一些常用的服务如TTRSS、RSSHub、Huginn、OpenCC等并进行了一些优化调整,如自动更新,反反爬虫等。这篇文章会尽可能详尽地讲解安装部署的步骤以及安装过程中可能会遇到的一些问题。
|
description: RSS Man X 是我两年前入坑 RSS 后,为了方便更多人更方便地使用 RSS 所发起的一个项目,主要是用 docker-compose 整合了一些常用的服务如 TTRSS、RSSHub、Huginn、OpenCC 等并进行了一些优化调整,如自动更新,反反爬虫等。这篇文章会尽可能详尽地讲解安装部署的步骤以及安装过程中可能会遇到的一些问题。
|
||||||
categories:
|
categories:
|
||||||
- 技术
|
- 技术
|
||||||
- 指南
|
- 指南
|
||||||
@@ -13,17 +13,17 @@ tags:
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
<!-- # RSSManX安装部署指南 -->
|
<!-- # RSSManX 安装部署指南 -->
|
||||||
|
|
||||||
RSS Man X是我两年前入坑RSS后,为了方便更多人更方便地使用RSS所发起的一个项目,主要是用docker-compose整合了一些常用的服务如TTRSS、RSSHub、Huginn、OpenCC等并进行了一些优化调整,如自动更新,反反爬虫等。这篇文章会尽可能详尽地讲解安装部署的步骤以及安装过程中可能会遇到的一些问题。
|
RSS Man X 是我两年前入坑 RSS 后,为了方便更多人更方便地使用 RSS 所发起的一个项目,主要是用 docker-compose 整合了一些常用的服务如 TTRSS、RSSHub、Huginn、OpenCC 等并进行了一些优化调整,如自动更新,反反爬虫等。这篇文章会尽可能详尽地讲解安装部署的步骤以及安装过程中可能会遇到的一些问题。
|
||||||
|
|
||||||
RSS Man X会利用到docker和docker-compose,首先需要确保你的服务器正确安装了这些软件
|
RSS Man X 会利用到 docker 和 docker-compose,首先需要确保你的服务器正确安装了这些软件
|
||||||
|
|
||||||
## 1. Docker环境准备
|
## 1. Docker 环境准备
|
||||||
|
|
||||||
检查服务器中是否已经安装了docker和docker-compose,并检查他们的版本是否太老。比如输入`docker --version`来检查docker的版本
|
检查服务器中是否已经安装了 docker 和 docker-compose,并检查他们的版本是否太老。比如输入`docker --version`来检查 docker 的版本
|
||||||
|
|
||||||
docker的版本建议不要低于19,docker-compose的版本建议不要低于1.20
|
docker 的版本建议不要低于 19,docker-compose 的版本建议不要低于 1.20
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
~ » docker --version
|
~ » docker --version
|
||||||
@@ -35,11 +35,11 @@ Docker version 20.10.12, build 20.10.12-0ubuntu2~20.04.1
|
|||||||
docker-compose version 1.25.0, build unknown
|
docker-compose version 1.25.0, build unknown
|
||||||
```
|
```
|
||||||
|
|
||||||
如果上面命令执行后提示`command not found`,那么说明并没有安装对应的软件包(或是安装的路径并不在当前用户的PATH变量中,尝试切换到root操作,详细的原因和解决方法见后文)
|
如果上面命令执行后提示`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`
|
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`
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
# 首先移除老旧的软件包
|
# 首先移除老旧的软件包
|
||||||
@@ -54,7 +54,7 @@ sudo apt-get install \
|
|||||||
lsb-release
|
lsb-release
|
||||||
```
|
```
|
||||||
|
|
||||||
如果你的服务器在墙外,可以直接使用docker官方的软件源
|
如果你的服务器在墙外,可以直接使用 docker 官方的软件源
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
|
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
|
||||||
@@ -74,7 +74,7 @@ echo \
|
|||||||
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
|
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
|
||||||
```
|
```
|
||||||
|
|
||||||
导入docker软件源后即可开始安装docker,安装完成后可以输入`docker --version`来检查docker的版本
|
导入 docker 软件源后即可开始安装 docker,安装完成后可以输入`docker --version`来检查 docker 的版本
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
sudo apt-get update
|
sudo apt-get update
|
||||||
@@ -83,7 +83,7 @@ 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/)
|
CentOS 和 Fedora 使用 yum 安装和管理软件包,新版本则是使用 dnf,不过两者功能一致且高度兼容。下面以 CentOS 为例,Fedora 可参见[官方文档](https://docs.docker.com/engine/install/fedora/)或[清华镜像源](https://mirrors.tuna.tsinghua.edu.cn/help/docker-ce/)
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
# 1. 首先移除老旧的软件包
|
# 1. 首先移除老旧的软件包
|
||||||
@@ -116,18 +116,18 @@ sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
### 1.3 安装或更新docker-compose
|
### 1.3 安装或更新 docker-compose
|
||||||
|
|
||||||
docker-compose目前有两个主要版本V1和V2,都是可用的。V1使用Python编写,使用时类似`sudo docker-compose up -d`,V2则是Golang编写,与前者高度兼容,但是是作为docker的插件安装的,使用时类似`sudo docker compose up -d`,中间的短杠不需要了。
|
docker-compose 目前有两个主要版本 V1 和 V2,都是可用的。V1 使用 Python 编写,使用时类似`sudo docker-compose up -d`,V2 则是 Golang 编写,与前者高度兼容,但是是作为 docker 的插件安装的,使用时类似`sudo docker compose up -d`,中间的短杠不需要了。
|
||||||
|
|
||||||
如果是按照上文的步骤安装的docker,那么默认已经安装了docker compose v2,可以通过`docker compose version`查看版本
|
如果是按照上文的步骤安装的 docker,那么默认已经安装了 docker compose v2,可以通过`docker compose version`查看版本
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
~ » docker compose version
|
~ » docker compose version
|
||||||
Docker Compose version v2.3.3
|
Docker Compose version v2.3.3
|
||||||
```
|
```
|
||||||
|
|
||||||
如果需要是安装的比较老的v1版本的docker-compose,想要单纯更新docker-compose而又不想动其他东西的话,可以更新安装v1版本的docker-compose。
|
如果需要是安装的比较老的 v1 版本的 docker-compose,想要单纯更新 docker-compose 而又不想动其他东西的话,可以更新安装 v1 版本的 docker-compose。
|
||||||
|
|
||||||
首先删除老旧版本(如果有的话)
|
首先删除老旧版本(如果有的话)
|
||||||
|
|
||||||
@@ -137,7 +137,7 @@ sudo rm /usr/local/lib/docker/cli-plugins/docker-compose
|
|||||||
pip uninstall docker-compose
|
pip uninstall docker-compose
|
||||||
```
|
```
|
||||||
|
|
||||||
然后使用pip来安装
|
然后使用 pip 来安装
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
pip3 install docker-compose
|
pip3 install docker-compose
|
||||||
@@ -149,7 +149,7 @@ pip3 install docker-compose
|
|||||||
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple
|
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple
|
||||||
```
|
```
|
||||||
|
|
||||||
如果提示pip命令不存在需要先安装一下
|
如果提示 pip 命令不存在需要先安装一下
|
||||||
```shell
|
```shell
|
||||||
# Ubuntu/Debian
|
# Ubuntu/Debian
|
||||||
sudo apt install python3-pip
|
sudo apt install python3-pip
|
||||||
@@ -158,7 +158,7 @@ sudo apt install python3-pip
|
|||||||
sudo yum install python3-pip
|
sudo yum install python3-pip
|
||||||
```
|
```
|
||||||
|
|
||||||
如果pip报错试着升级一下pip的版本
|
如果 pip 报错试着升级一下 pip 的版本
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
python3 -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade pip
|
python3 -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade pip
|
||||||
@@ -166,14 +166,14 @@ python3 -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade pip
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
### 1.4 为Docker配置镜像源
|
### 1.4 为 Docker 配置镜像源
|
||||||
|
|
||||||
如果Docker下载镜像非常慢,你可能需要单独配置一下Docker的镜像源。==**注意:Docker安装软件源的镜像和Docker镜像或者说映像的国内源并不是同一个,英文表述可能更准确一些:**==
|
如果 Docker 下载镜像非常慢,你可能需要单独配置一下 Docker 的镜像源。==**注意:Docker 安装软件源的镜像和 Docker 镜像或者说映像的国内源并不是同一个,英文表述可能更准确一些:**==
|
||||||
|
|
||||||
* 上文安装docker时配置的是docker的repo,repo里含有docker的软件包,[国内的镜像](https://mirrors.ustc.edu.cn/help/docker-ce.html)为Docker CE安装软件包的镜像
|
* 上文安装 docker 时配置的是 docker 的 repo,repo 里含有 docker 的软件包,[国内的镜像](https://mirrors.ustc.edu.cn/help/docker-ce.html)为 Docker CE 安装软件包的镜像
|
||||||
* 现在我们要配置的是Docker Hub的Mirror,Docker里拉取Image默认会访问[Docker Hub](https://hub.docker.com),国内有多个Docker Hub镜像或是Docker镜像加速器,如[中科大的源](https://mirrors.ustc.edu.cn/help/dockerhub.html)
|
* 现在我们要配置的是 Docker Hub 的 Mirror,Docker 里拉取 Image 默认会访问[Docker Hub](https://hub.docker.com),国内有多个 Docker Hub 镜像或是 Docker 镜像加速器,如[中科大的源](https://mirrors.ustc.edu.cn/help/dockerhub.html)
|
||||||
|
|
||||||
在`/etc/docker/daemon.json`文件中写入以下内容,如不存在可先行创建,注意json中列表的最后一项末尾是没有逗号的
|
在`/etc/docker/daemon.json`文件中写入以下内容,如不存在可先行创建,注意 json 中列表的最后一项末尾是没有逗号的
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
@@ -184,13 +184,13 @@ python3 -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade pip
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
配置完成后`sudo systemctl restart docker`重启docker服务,然后输入`sudo docker info`,在输出结果的末尾可以看到`Registry Mirrors`里会出现我们刚刚配置的Docker Hub镜像
|
配置完成后`sudo systemctl restart docker`重启 docker 服务,然后输入`sudo docker info`,在输出结果的末尾可以看到`Registry Mirrors`里会出现我们刚刚配置的 Docker Hub 镜像
|
||||||
|
|
||||||
群辉等NAS的系统并不是标准版Linux,安装的也是魔改版docker,上面的配置文件地址并不适用,建议自行搜索对应的文档或教程。
|
群辉等 NAS 的系统并不是标准版 Linux,安装的也是魔改版 docker,上面的配置文件地址并不适用,建议自行搜索对应的文档或教程。
|
||||||
|
|
||||||
## 2. 安装RSS Man X
|
## 2. 安装 RSS Man X
|
||||||
|
|
||||||
[RSS MAN X项目](https://github.com/Colin-XKL/RSSmanX)旨在为 RSS 的同好提供一个方便地搭建自己的 RSS 服务的捷径,毕竟不是所有 RSS 爱好者都懂代码 😂。RSS Man X能够有 RSS 订阅管理、RSS 在线阅读界面,进阶功能包括服务健康自检、海外站点 RSS 解锁等,提供不同的版本供选择,三个版本的 `docker-compose` 文件对应不同的需求,包含的组件和服务有差异。
|
[RSS MAN X 项目](https://github.com/Colin-XKL/RSSmanX)旨在为 RSS 的同好提供一个方便地搭建自己的 RSS 服务的捷径,毕竟不是所有 RSS 爱好者都懂代码 😂。RSS Man X 能够有 RSS 订阅管理、RSS 在线阅读界面,进阶功能包括服务健康自检、海外站点 RSS 解锁等,提供不同的版本供选择,三个版本的 `docker-compose` 文件对应不同的需求,包含的组件和服务有差异。
|
||||||
|
|
||||||
| 组件 / 服务 / 功能名称 | 标准版 | Lite 版 | Ultimate 版 ✨ |
|
| 组件 / 服务 / 功能名称 | 标准版 | Lite 版 | Ultimate 版 ✨ |
|
||||||
| ---------------------- | ------ | ------- | ------------- |
|
| ---------------------- | ------ | ------- | ------------- |
|
||||||
@@ -210,9 +210,9 @@ python3 -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade pip
|
|||||||
|
|
||||||
### 2.1 安装流程
|
### 2.1 安装流程
|
||||||
|
|
||||||
安装好了 `docker` 和 `docker-compose` 后,可以使用`git clone https://github.com/Colin-XKL/RSSmanX --depth=1`快速克隆本仓库,也可以通过[这个镜像地址](https://archive.fastgit.org/Colin-XKL/RSSmanX/archive/refs/heads/master.zip)下载仓库zip文件,[Gitee上也有镜像](https://gitee.com/colin-xkl/RSSmanX)不过不经常更新。
|
安装好了 `docker` 和 `docker-compose` 后,可以使用`git clone https://github.com/Colin-XKL/RSSmanX --depth=1`快速克隆本仓库,也可以通过[这个镜像地址](https://archive.fastgit.org/Colin-XKL/RSSmanX/archive/refs/heads/master.zip)下载仓库 zip 文件,[Gitee 上也有镜像](https://gitee.com/colin-xkl/RSSmanX)不过不经常更新。
|
||||||
|
|
||||||
1. cd 进入文件夹,修改`.env`中的值,如密码和TTRSS入口URL等
|
1. cd 进入文件夹,修改`.env`中的值,如密码和 TTRSS 入口 URL 等
|
||||||
2. 运行 `sudo docker-compose up -d`
|
2. 运行 `sudo docker-compose up -d`
|
||||||
3. 等待程序跑完
|
3. 等待程序跑完
|
||||||
4. 安装完成 ✅
|
4. 安装完成 ✅
|
||||||
@@ -223,23 +223,23 @@ python3 -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade pip
|
|||||||
|
|
||||||
2. 如开启海外站点解锁支持,第一次冷启动需要等待 3-5 分钟才能完全启动所有组件。
|
2. 如开启海外站点解锁支持,第一次冷启动需要等待 3-5 分钟才能完全启动所有组件。
|
||||||
|
|
||||||
3. 数据默认保存位置`~/.docker/Database`(注意以执行docker命令的用户为准,如使用root账户执行,则文件位于root用户home目录)
|
3. 数据默认保存位置`~/.docker/Database`(注意以执行 docker 命令的用户为准,如使用 root 账户执行,则文件位于 root 用户 home 目录)
|
||||||
|
|
||||||
4. 默认情况下只有 TTRSS 和 Huginn 可以从外部访问,其他组件互相可以访问但不能直接从外部访问以提高安全性。组件间互相访问可以使用`容器名+指定端口`,端口默认为 80,如`http://rsshub/xxxxx`即可访问到 RSS Man X 内的监听 80 端口的 rsshub 实例。
|
4. 默认情况下只有 TTRSS 和 Huginn 可以从外部访问,其他组件互相可以访问但不能直接从外部访问以提高安全性。组件间互相访问可以使用`容器名+指定端口`,端口默认为 80,如`http://rsshub/xxxxx`即可访问到 RSS Man X 内的监听 80 端口的 rsshub 实例。
|
||||||
|
|
||||||
5. 在 TTRSS 中将原来订阅的 `https://rsshub.app/*` 更改为 `http://rsshub/*` 即可使用 RSS Man X内的自建 RSSHub 实例,并激活反反爬虫和海外源加速等功能
|
5. 在 TTRSS 中将原来订阅的 `https://rsshub.app/*` 更改为 `http://rsshub/*` 即可使用 RSS Man X 内的自建 RSSHub 实例,并激活反反爬虫和海外源加速等功能
|
||||||
|
|
||||||
6. 如无法访问rsshub的官方文档站点,可以使用我维护的反代站点[https://rsshub-doc.azure.colinx.one/](https://rsshub-doc.azure.colinx.one/)
|
6. 如无法访问 rsshub 的官方文档站点,可以使用我维护的反代站点[https://rsshub-doc.azure.colinx.one/](https://rsshub-doc.azure.colinx.one/)
|
||||||
|
|
||||||
7. 关于 ARM 平台的支持可查阅[置顶的 issue](https://github.com/Colin-XKL/RSSmanX/issues/5),替换部分不支持arm架构的docker镜像为支持arm的镜像即可。
|
7. 关于 ARM 平台的支持可查阅[置顶的 issue](https://github.com/Colin-XKL/RSSmanX/issues/5),替换部分不支持 arm 架构的 docker 镜像为支持 arm 的镜像即可。
|
||||||
|
|
||||||
8. RSS Man X的除 lite 以外的版本默认包含了自托管的 mercury 实例,你只需要在插件配置页面设置 mercury 实例地址为 `service.mercury:3000` 即可,同理,OpenCC实例地址为`service.opencc:3000`
|
8. RSS Man X 的除 lite 以外的版本默认包含了自托管的 mercury 实例,你只需要在插件配置页面设置 mercury 实例地址为 `service.mercury:3000` 即可,同理,OpenCC 实例地址为`service.opencc:3000`
|
||||||
|
|
||||||
9. 如果部分RSS源不能订阅,检查是否使用了非常规端口。在`.env`文件中设置`RSS_ALLOEW_PORTS`
|
9. 如果部分 RSS 源不能订阅,检查是否使用了非常规端口。在`.env`文件中设置`RSS_ALLOEW_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/)
|
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`查看到
|
11. `ls`没有显示`.env`文件是因为以点开头的文件在 Linux 中都是默认隐藏的,可以使用`ls -a`查看到
|
||||||
|
|
||||||
12. vi/vim编辑文本太麻烦可以尝试使用nano
|
12. vi/vim编辑文本太麻烦可以尝试使用nano
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
---
|
---
|
||||||
title: Win 10配置C语言环境的正确姿势
|
title: Win 10 配置 C 语言环境的正确姿势
|
||||||
date: 2020-12-27
|
date: 2020-12-27
|
||||||
lastmod: 2020-12-27
|
lastmod: 2020-12-27
|
||||||
description: VC6.0太古老,Dev C++没补全不友好,MinGW安装太烦恼?你用着最新的电脑,最新的系统,却在用着上个世纪的软件开始你人生第一门编程课?你需要这篇指南:在现代化的硬件和平台上使用现代化工具学习C语言
|
description: VC6.0 太古老,Dev C++没补全不友好,MinGW 安装太烦恼?你用着最新的电脑,最新的系统,却在用着上个世纪的软件开始你人生第一门编程课?你需要这篇指南:在现代化的硬件和平台上使用现代化工具学习 C 语言
|
||||||
categories:
|
categories:
|
||||||
- 技术
|
- 技术
|
||||||
- 指南
|
- 指南
|
||||||
@@ -12,52 +12,52 @@ tags:
|
|||||||
- 环境配置
|
- 环境配置
|
||||||
---
|
---
|
||||||
|
|
||||||
<!-- # Win 10配置C语言环境的正确姿势 -->
|
<!-- # Win 10 配置 C 语言环境的正确姿势 -->
|
||||||
|
|
||||||
> 本系列教程旨在为刚入门的编程语言学习者做好指南工作,开始编码,本应很简单
|
> 本系列教程旨在为刚入门的编程语言学习者做好指南工作,开始编码,本应很简单
|
||||||
>
|
>
|
||||||
> The PAINLESS way to start coding!
|
> The PAINLESS way to start coding!
|
||||||
|
|
||||||
VC6.0太古老,Dev C++没补全不友好,MinGW安装太烦恼?
|
VC6.0 太古老,Dev C++没补全不友好,MinGW 安装太烦恼?
|
||||||
|
|
||||||
你用着最新的电脑,最新的系统,却在用着上个世纪的软件开始你人生第一门编程课?
|
你用着最新的电脑,最新的系统,却在用着上个世纪的软件开始你人生第一门编程课?
|
||||||
|
|
||||||
你需要这篇指南:**在现代化的硬件和平台上使用现代化工具学习C语言**
|
你需要这篇指南:**在现代化的硬件和平台上使用现代化工具学习 C 语言**
|
||||||
|
|
||||||
*aka*:**Win10配置C语言环境的正确姿势**
|
*aka*:**Win10 配置 C 语言环境的正确姿势**
|
||||||
|
|
||||||
>截止2020年末,Win10配置C语言环境的常见方案有:
|
>截止 2020 年末,Win10 配置 C 语言环境的常见方案有:
|
||||||
>
|
>
|
||||||
>* 使用scoop来便捷地安装所需的环境
|
>* 使用 scoop 来便捷地安装所需的环境
|
||||||
>* 使用Winget来安装所需的环境 *[不成熟]*
|
>* 使用 Winget 来安装所需的环境 *[不成熟]*
|
||||||
>* 使用国内镜像Cygwin+VSCode配置C语言环境 【快速】
|
>* 使用国内镜像 Cygwin+VSCode 配置 C 语言环境【快速】
|
||||||
>* 使用WSL+VSCode
|
>* 使用 WSL+VSCode
|
||||||
>* 使用WSL+Clion
|
>* 使用 WSL+Clion
|
||||||
|
|
||||||
综合考虑可行性与小白友好性,我们推荐的方案是:
|
综合考虑可行性与小白友好性,我们推荐的方案是:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## 使用国内镜像Cygwin+VSCode快速配置C语言环境
|
## 使用国内镜像 Cygwin+VSCode 快速配置 C 语言环境
|
||||||
|
|
||||||
C语言编写的`.c`源代码文件需要通过编译器编译生成可执行文件`.exe`后才能运行。Windows系统默认没有自带C语言的编译器,这里我们需要手动下载配置才行。
|
C 语言编写的`.c`源代码文件需要通过编译器编译生成可执行文件`.exe`后才能运行。Windows 系统默认没有自带 C 语言的编译器,这里我们需要手动下载配置才行。
|
||||||
|
|
||||||
C语言编译器在Win平台下的选择多种多样,但要么配置麻烦,使用门槛高;要么就是下载源在国外,国内下载慢如龟,甚至直接下不成。这里给出基于国内镜像Cygwin+VSCode配置C语言环境的方案,**实测可用,步骤清晰易懂,国内网络也可在几分钟内配置好!**
|
C 语言编译器在 Win 平台下的选择多种多样,但要么配置麻烦,使用门槛高;要么就是下载源在国外,国内下载慢如龟,甚至直接下不成。这里给出基于国内镜像 Cygwin+VSCode 配置 C 语言环境的方案,**实测可用,步骤清晰易懂,国内网络也可在几分钟内配置好!**
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### 编译器的下载与配置
|
### 编译器的下载与配置
|
||||||
|
|
||||||
Cygwin的下载安装分为两个部分:
|
Cygwin 的下载安装分为两个部分:
|
||||||
|
|
||||||
1. Cygwin安装程序的下载(~1MB)
|
1. Cygwin 安装程序的下载(~1MB)
|
||||||
2. 安装器来完整后续的编译器核心部分的安装(~100MB)
|
2. 安装器来完整后续的编译器核心部分的安装(~100MB)
|
||||||
|
|
||||||
#### Cygwin的下载安装
|
#### Cygwin 的下载安装
|
||||||
|
|
||||||
Cygwin的安装程序可以[从其官方站点下载](https://cygwin.com/install.html)。不过站点为全英文且国内访问速度堪忧,这里给出快速下载链接
|
Cygwin 的安装程序可以[从其官方站点下载](https://cygwin.com/install.html)。不过站点为全英文且国内访问速度堪忧,这里给出快速下载链接
|
||||||
|
|
||||||
> Cygwin安装程序**快速下载**(不限速,免登陆)
|
> Cygwin 安装程序**快速下载**(不限速,免登陆)
|
||||||
>
|
>
|
||||||
> https://wws.lanzous.com/iUpUKjojq5i
|
> https://wws.lanzous.com/iUpUKjojq5i
|
||||||
|
|
||||||
@@ -77,7 +77,7 @@ Cygwin的安装程序可以[从其官方站点下载](https://cygwin.com/install
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
如果让你选择安装路径的话,可以不用改,不过默认在C盘。自己改的话,一个尽量避免使用中文路径,还有一个就是要记住你自己自定义的路径,后面会用到。
|
如果让你选择安装路径的话,可以不用改,不过默认在 C 盘。自己改的话,一个尽量避免使用中文路径,还有一个就是要记住你自己自定义的路径,后面会用到。
|
||||||
|
|
||||||
网络好的话,点击下一步会出来一个可用的国内镜像列表,那样的话随便选一个都可以直接进行后面的步骤。
|
网络好的话,点击下一步会出来一个可用的国内镜像列表,那样的话随便选一个都可以直接进行后面的步骤。
|
||||||
|
|
||||||
@@ -85,7 +85,7 @@ Cygwin的安装程序可以[从其官方站点下载](https://cygwin.com/install
|
|||||||
|
|
||||||
<img src="https://blog-1301127393.file.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添加。之后点击下一步继续。
|
在 User URL 的输入框输入`https://mirrors.tuna.tsinghua.edu.cn/cygwin/`并点击 Add 添加。之后点击下一步继续。
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -95,7 +95,7 @@ Cygwin的安装程序可以[从其官方站点下载](https://cygwin.com/install
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
之后会进入一个选择界面。这里选择要安装的组件。我们只需要C语言的编译器,这里在搜索框内输入`gcc`,然后在下方找到`gcc-core` 和 `gcc-g++`,点击右侧的三角形打开下拉菜单,选择9开头的版本。如下图所示。
|
之后会进入一个选择界面。这里选择要安装的组件。我们只需要 C 语言的编译器,这里在搜索框内输入`gcc`,然后在下方找到`gcc-core` 和 `gcc-g++`,点击右侧的三角形打开下拉菜单,选择 9 开头的版本。如下图所示。
|
||||||
|
|
||||||
<img src="https://blog-1301127393.file.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%;" />
|
||||||
|
|
||||||
@@ -109,7 +109,7 @@ Cygwin的安装程序可以[从其官方站点下载](https://cygwin.com/install
|
|||||||
|
|
||||||
一般一到两分钟之内就可以下载完毕。如果过了很久还没有装完,要么是网络太垃圾,要么就是不小心勾了其他的软件,一直在安装。。。
|
一般一到两分钟之内就可以下载完毕。如果过了很久还没有装完,要么是网络太垃圾,要么就是不小心勾了其他的软件,一直在安装。。。
|
||||||
|
|
||||||
#### 配置Cygwin
|
#### 配置 Cygwin
|
||||||
|
|
||||||
下面要更改环境变量。如果你之前没有自定义安装目录的话,默认路径`C:\cygwin64\bin`。否则下文对应的地方使用你自定义的目录。
|
下面要更改环境变量。如果你之前没有自定义安装目录的话,默认路径`C:\cygwin64\bin`。否则下文对应的地方使用你自定义的目录。
|
||||||
|
|
||||||
@@ -137,7 +137,7 @@ Cygwin的安装程序可以[从其官方站点下载](https://cygwin.com/install
|
|||||||
|
|
||||||
<img src="https://blog-1301127393.file.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目录。如果你之前没有自定义安装路径,直接设置如图即可。否则设置为你自定义的路径。
|
输入 Cygwin 安装路径下的 bin 目录。如果你之前没有自定义安装路径,直接设置如图即可。否则设置为你自定义的路径。
|
||||||
|
|
||||||
**注意:这一步只要添加这一个就好**,不要看我截图里面的很干净,就把其他的都删了
|
**注意:这一步只要添加这一个就好**,不要看我截图里面的很干净,就把其他的都删了
|
||||||
|
|
||||||
@@ -145,41 +145,41 @@ Cygwin的安装程序可以[从其官方站点下载](https://cygwin.com/install
|
|||||||
|
|
||||||
一路点击确定。修改完之后重启下电脑确保改动生效。
|
一路点击确定。修改完之后重启下电脑确保改动生效。
|
||||||
|
|
||||||
在PowerShell中或者命令提示符中输入gcc并回车。如果显示no input files则表示安装成功。
|
在 PowerShell 中或者命令提示符中输入 gcc 并回车。如果显示 no input files 则表示安装成功。
|
||||||
|
|
||||||
<img src="https://blog-1301127393.file.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了
|
安装完了编译器,可以先来 Hello world 了
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
按住Shift键,右键点击文件夹空白处,会出现在此处打开Powershell窗口的选项。
|
按住 Shift 键,右键点击文件夹空白处,会出现在此处打开 Powershell 窗口的选项。
|
||||||
|
|
||||||
<img src="https://blog-1301127393.file.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%;" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
`gcc hello.c` 命令就会在当前目录下生成一个exe可执行文件。如果要指定文件名,可以`gcc hello.c -o hello.exe`
|
`gcc hello.c` 命令就会在当前目录下生成一个 exe 可执行文件。如果要指定文件名,可以`gcc hello.c -o hello.exe`
|
||||||
|
|
||||||
输入`./hello.exe`即可执行该exe文件。
|
输入`./hello.exe`即可执行该 exe 文件。
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
如果直接双击exe也可以,不过运行窗口会一闪而过,解决方案是在main函数末尾,return语句前,加一句getchar()。
|
如果直接双击 exe 也可以,不过运行窗口会一闪而过,解决方案是在 main 函数末尾,return 语句前,加一句 getchar()。
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
配置VSCode的作为C语言学习环境
|
配置 VSCode 的作为 C 语言学习环境
|
||||||
|
|
||||||
<span id="vscode">VSCode</span>是由微软主导开发的一款开源免费、轻巧简单、功能强大的代码编辑器。配合各式各样的插件可以方便地实现各种你想得到和你想不到的功能。
|
<span id="vscode">VSCode</span>是由微软主导开发的一款开源免费、轻巧简单、功能强大的代码编辑器。配合各式各样的插件可以方便地实现各种你想得到和你想不到的功能。
|
||||||
|
|
||||||
前往[VSCode官网](https://code.visualstudio.com/)下载Windows 版VScode。并按照安装程序的指引进行安装。
|
前往[VSCode 官网](https://code.visualstudio.com/)下载 Windows 版 VScode。并按照安装程序的指引进行安装。
|
||||||
|
|
||||||
直接下载链接
|
直接下载链接
|
||||||
|
|
||||||
@@ -191,7 +191,7 @@ https://code.visualstudio.com/sha/download?build=stable&os=win32-x64-user
|
|||||||
>
|
>
|
||||||
> https://az764295.vo.msecnd.net/stable/ea3859d4ba2f3e577a159bc91e3074c5d85c0523/VSCodeUserSetup-x64-1.52.1.exe
|
> https://az764295.vo.msecnd.net/stable/ea3859d4ba2f3e577a159bc91e3074c5d85c0523/VSCodeUserSetup-x64-1.52.1.exe
|
||||||
>
|
>
|
||||||
> 将开头的az764295.vo.msecnd.net替换掉,如下。
|
> 将开头的 az764295.vo.msecnd.net 替换掉,如下。
|
||||||
>
|
>
|
||||||
> https://vscode.cdn.azure.cn/stable/ea3859d4ba2f3e577a159bc91e3074c5d85c0523/VSCodeUserSetup-x64-1.52.1.exe
|
> https://vscode.cdn.azure.cn/stable/ea3859d4ba2f3e577a159bc91e3074c5d85c0523/VSCodeUserSetup-x64-1.52.1.exe
|
||||||
>
|
>
|
||||||
@@ -239,7 +239,7 @@ https://code.visualstudio.com/sha/download?build=stable&os=win32-x64-user
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
完成了上述的设置,我们就可以来编写C语言的程序了。
|
完成了上述的设置,我们就可以来编写 C 语言的程序了。
|
||||||
|
|
||||||
### Hello,C!
|
### Hello,C!
|
||||||
|
|
||||||
@@ -255,7 +255,7 @@ https://code.visualstudio.com/sha/download?build=stable&os=win32-x64-user
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
点击右上角的三角形按钮即可自动编译运行你的C语言代码。在窗口下方的终端即可看到输出的`Hello,C!`字样。
|
点击右上角的三角形按钮即可自动编译运行你的 C 语言代码。在窗口下方的终端即可看到输出的`Hello,C!`字样。
|
||||||
|
|
||||||
|
|
||||||
<img src="https://blog-1301127393.file.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%;" />
|
||||||
@@ -264,4 +264,4 @@ https://code.visualstudio.com/sha/download?build=stable&os=win32-x64-user
|
|||||||
|
|
||||||
### 完成✅
|
### 完成✅
|
||||||
|
|
||||||
现在,开始你的C语言学习之旅吧!
|
现在,开始你的 C 语言学习之旅吧!
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
title: docker compose的错误使用姿势
|
title: docker compose 的错误使用姿势
|
||||||
date: 2022-05-11
|
date: 2022-05-11
|
||||||
description: 这篇文章记录几个docker compose使用过程中几个难以察觉的错误使用姿势。1. 变量值使用`@`符号开头 2. 使用6000或6666端口
|
description: 这篇文章记录几个 docker compose 使用过程中几个难以察觉的错误使用姿势。1. 变量值使用`@`符号开头 2. 使用 6000 或 6666 端口
|
||||||
categories:
|
categories:
|
||||||
- 技术
|
- 技术
|
||||||
- 指南
|
- 指南
|
||||||
@@ -16,11 +16,11 @@ tags:
|
|||||||
|
|
||||||
<!-- # docker compose 的错误使用姿势 -->
|
<!-- # docker compose 的错误使用姿势 -->
|
||||||
|
|
||||||
这篇文章记录几个docker compose使用过程中几个难以察觉的错误使用姿势
|
这篇文章记录几个 docker compose 使用过程中几个难以察觉的错误使用姿势
|
||||||
|
|
||||||
## 1. 变量值使用`@`符号开头
|
## 1. 变量值使用`@`符号开头
|
||||||
|
|
||||||
我在RSS MAN X的docker-compose配置文件中,huignn的环境变量出来时是这样写的
|
我在 RSS MAN X 的 docker-compose 配置文件中,huignn 的环境变量出来时是这样写的
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
environment:
|
environment:
|
||||||
@@ -35,7 +35,7 @@ environment:
|
|||||||
|
|
||||||
自己使用的时候没发现什么问题,别人从零创建容器的时候报错了。刚开始排查了很久,后面发现我默认密码这样写其实是有问题的。
|
自己使用的时候没发现什么问题,别人从零创建容器的时候报错了。刚开始排查了很久,后面发现我默认密码这样写其实是有问题的。
|
||||||
|
|
||||||
上面的使用列表来描述环境变量在docker-compose解析的时候没有任何报错信息。但是使用下面这种key-value的map的形式时,`docker-compose up`命令报错了,说YAML解析时出现问题
|
上面的使用列表来描述环境变量在 docker-compose 解析的时候没有任何报错信息。但是使用下面这种 key-value 的 map 的形式时,`docker-compose up`命令报错了,说 YAML 解析时出现问题
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
environment:
|
environment:
|
||||||
@@ -92,7 +92,7 @@ DATABASE_PASSWORD: ${DB_Password:-'@pass_for_DB'}
|
|||||||
DB_Password=A@www_123
|
DB_Password=A@www_123
|
||||||
```
|
```
|
||||||
|
|
||||||
最终发现无论是否使用docker-compose变量替换,只要最终设定值的时候,包含前导@符号,最终一定会失败。Huginn的这边的报错为解析容器内的一个YAML文件时失败
|
最终发现无论是否使用 docker-compose 变量替换,只要最终设定值的时候,包含前导@符号,最终一定会失败。Huginn 的这边的报错为解析容器内的一个 YAML 文件时失败
|
||||||
|
|
||||||
```
|
```
|
||||||
huginn1 | foreman stderr |
|
huginn1 | foreman stderr |
|
||||||
@@ -123,25 +123,25 @@ default@42e19e692b24:~$ echo $DATABASE_PASSWORD
|
|||||||
'@pass_for_DB'
|
'@pass_for_DB'
|
||||||
```
|
```
|
||||||
|
|
||||||
可以看到,如果以`@`符号开头,最终的环境变量会加上引号,这对于某些应用来说会产生预期之外的结果,如此处测试的Huginn。
|
可以看到,如果以`@`符号开头,最终的环境变量会加上引号,这对于某些应用来说会产生预期之外的结果,如此处测试的 Huginn。
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## 2. 使用6000或6666端口
|
## 2. 使用 6000 或 6666 端口
|
||||||
|
|
||||||
这也是一定挺特殊的场景,虽然与docker compose关系不大,但是难免会遇到。在映射端口的时候有一个很坑的地方,如果你要部署一个web服务,然后映射的时候填写的是`6000`端口或者是`6666`端口,你会发现无论怎么重启容器、更改容器设置、更换Edge/Chrome,浏览器就是访问不了页面。
|
这也是一定挺特殊的场景,虽然与 docker compose 关系不大,但是难免会遇到。在映射端口的时候有一个很坑的地方,如果你要部署一个 web 服务,然后映射的时候填写的是`6000`端口或者是`6666`端口,你会发现无论怎么重启容器、更改容器设置、更换 Edge/Chrome,浏览器就是访问不了页面。
|
||||||
|
|
||||||
实在折腾地快疯了,点开Chrome的错误详情,才发现这么一句
|
实在折腾地快疯了,点开 Chrome 的错误详情,才发现这么一句
|
||||||
|
|
||||||
***ERR_UNSAFE_PORT***
|
***ERR_UNSAFE_PORT***
|
||||||
|
|
||||||
一查才发现,Chrome等浏览器会限制部分特殊端口的网页访问,这些端口一般都已经有特殊的作用。
|
一查才发现,Chrome 等浏览器会限制部分特殊端口的网页访问,这些端口一般都已经有特殊的作用。
|
||||||
|
|
||||||
https://www.jianshu.com/p/40f79f584eae
|
https://www.jianshu.com/p/40f79f584eae
|
||||||
|
|
||||||
这里列出1000以上的部分会有相关问题的端口,别的不说,感觉`6000`和`6666`还是很容易一不小心就会设置的端口。。。。
|
这里列出 1000 以上的部分会有相关问题的端口,别的不说,感觉`6000`和`6666`还是很容易一不小心就会设置的端口。。。。
|
||||||
|
|
||||||
```c
|
```c
|
||||||
2049, // nfs
|
2049, // nfs
|
||||||
@@ -155,7 +155,7 @@ https://www.jianshu.com/p/40f79f584eae
|
|||||||
6669, // Alternate IRC
|
6669, // Alternate IRC
|
||||||
```
|
```
|
||||||
|
|
||||||
Chrome、FireFox等都会有类似的行为,换多少浏览器、换多少版本可能也都不行。。。
|
Chrome、FireFox 等都会有类似的行为,换多少浏览器、换多少版本可能也都不行。。。
|
||||||
|
|
||||||
根据网友描述,部分特殊情况下,其他可能会被拦截的端口也包括`8080`,`8443`,`10080`。
|
根据网友描述,部分特殊情况下,其他可能会被拦截的端口也包括`8080`,`8443`,`10080`。
|
||||||
|
|
||||||
|
|||||||
@@ -13,15 +13,15 @@ tags:
|
|||||||
---
|
---
|
||||||
|
|
||||||
|
|
||||||
一份 Linux 初始化清单, 避免每次拿到新的服务器都要一个个去各种地方搜集指令, 以做备忘 & 供有需要的朋友参考.
|
一份 Linux 初始化清单,避免每次拿到新的服务器都要一个个去各种地方搜集指令,以做备忘 & 供有需要的朋友参考。
|
||||||
|
|
||||||
服务器发行版我个人推荐 Debian 系列, CentOS 系现在已经开始分裂而且说实话对新手其实并不友好. Debian 是在兼容性, 易用性和稳定性之间都取得不错平衡的发行版. 新手推荐 Ubuntu, 不过最近商业化有点过度, 夹带了越来越多的私活, 我个人所有新安装的 Linux 已经全线转向 Debian. 下文以目前最新的 Debian 11 Bullseye 为例
|
服务器发行版我个人推荐 Debian 系列,CentOS 系现在已经开始分裂而且说实话对新手其实并不友好。Debian 是在兼容性,易用性和稳定性之间都取得不错平衡的发行版。新手推荐 Ubuntu, 不过最近商业化有点过度,夹带了越来越多的私活,我个人所有新安装的 Linux 已经全线转向 Debian. 下文以目前最新的 Debian 11 Bullseye 为例
|
||||||
|
|
||||||
> azure 干净的 debian 11 镜像, 资源使用情况供参考
|
> azure 干净的 debian 11 镜像,资源使用情况供参考
|
||||||
>
|
>
|
||||||
> ~1G Disk, ~100M RAM, ~300 packages
|
> ~1G Disk, ~100M RAM, ~300 packages
|
||||||
|
|
||||||
本文仅列举主要事项和操作, 新手可先行阅读这篇文章熟悉概念. [云服务器入门指南](https://blog.colinx.one/posts/%E4%BA%91%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%85%A5%E9%97%A8%E6%8C%87%E5%8D%97/)
|
本文仅列举主要事项和操作,新手可先行阅读这篇文章熟悉概念。[云服务器入门指南](https://blog.colinx.one/posts/%E4%BA%91%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%85%A5%E9%97%A8%E6%8C%87%E5%8D%97/)
|
||||||
|
|
||||||
正文开始
|
正文开始
|
||||||
|
|
||||||
@@ -29,7 +29,7 @@ tags:
|
|||||||
|
|
||||||
### 1.1 防火墙
|
### 1.1 防火墙
|
||||||
|
|
||||||
检查服务商防火墙和系统自带防火墙(debian 系一般为 `ufw`, cent os 系一般为 `firewall-cmd`).放行 SSH(22), 新的 SSH(自定义), HTTP, HTTPS, 以及其他常用开发端口
|
检查服务商防火墙和系统自带防火墙 (debian 系一般为 `ufw`, cent os 系一般为 `firewall-cmd`).放行 SSH(22), 新的 SSH(自定义), HTTP, HTTPS, 以及其他常用开发端口
|
||||||
|
|
||||||
### 1.2 新建用户与检查 sudoer
|
### 1.2 新建用户与检查 sudoer
|
||||||
|
|
||||||
@@ -41,7 +41,7 @@ useradd -m --groups wheel colin
|
|||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
也可直接编辑`/etc/sudoers` 文件为新用户添加 sudo 权限, 使用 `visudo` 指令可以自动帮你校验, 避免配置写错把系统搞崩
|
也可直接编辑`/etc/sudoers` 文件为新用户添加 sudo 权限,使用 `visudo` 指令可以自动帮你校验,避免配置写错把系统搞崩
|
||||||
|
|
||||||
### 1.3 镜像源与基础软件
|
### 1.3 镜像源与基础软件
|
||||||
|
|
||||||
@@ -61,7 +61,7 @@ sudo sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
|
|||||||
sudo sed -i 's@//.*archive.ubuntu.com@//mirrors.ustc.edu.cn@g' /etc/apt/sources.list
|
sudo sed -i 's@//.*archive.ubuntu.com@//mirrors.ustc.edu.cn@g' /etc/apt/sources.list
|
||||||
```
|
```
|
||||||
|
|
||||||
CentOS 系建议启用 EPEL, PowerTools 等 repo 以更方便地安装常用软件和工具. 此处不再赘述
|
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,20 +75,20 @@ sudo apt install zsh tmux htop duf htop tldr screenfetch tree
|
|||||||
|
|
||||||
### 1.4 SSH 安全
|
### 1.4 SSH 安全
|
||||||
|
|
||||||
修改端口, 配置文件`/etc/ssh/sshd_config`. 重启机器或 sshd 服务后生效
|
修改端口,配置文件`/etc/ssh/sshd_config`. 重启机器或 sshd 服务后生效
|
||||||
|
|
||||||
在本机检查`~/.ssh/`有无 id_rsa 等已生成的 key. 如没有再使用 `ssh-keygen` 生成私钥
|
在本机检查`~/.ssh/`有无 id_rsa 等已生成的 key. 如没有再使用 `ssh-keygen` 生成私钥
|
||||||
将本机的公钥上传到远端, 再写入远端的 `authorized_keys` 中
|
将本机的公钥上传到远端,再写入远端的 `authorized_keys` 中
|
||||||
|
|
||||||
`cat ~/id_rsa.pub >> ~/.ssh/authorized_keys`
|
`cat ~/id_rsa.pub >> ~/.ssh/authorized_keys`
|
||||||
|
|
||||||
注意修改权限, `~/.ssh/authorized_keys` 权限为 600. `~/.ssh/`为 400
|
注意修改权限,`~/.ssh/authorized_keys` 权限为 600. `~/.ssh/`为 400
|
||||||
|
|
||||||
如失败可参考这篇文章 debug. [https://superuser.com/questions/1137438/ssh-key-authentication-fails](https://superuser.com/questions/1137438/ssh-key-authentication-fails)
|
如失败可参考这篇文章 debug. [https://superuser.com/questions/1137438/ssh-key-authentication-fails](https://superuser.com/questions/1137438/ssh-key-authentication-fails)
|
||||||
|
|
||||||
### 1.5 设置 hostname
|
### 1.5 设置 hostname
|
||||||
|
|
||||||
可选, 为了便于识别和后续配置 oh-my-zsh 更美观
|
可选,为了便于识别和后续配置 oh-my-zsh 更美观
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
sudo hostnamectl set-hostname my-new-server
|
sudo hostnamectl set-hostname my-new-server
|
||||||
@@ -101,7 +101,7 @@ sudo hostnamectl status
|
|||||||
|
|
||||||
### 1.6 SWAP
|
### 1.6 SWAP
|
||||||
|
|
||||||
可选, 建议内存<2G 配置 swap, 大小至少为 2 倍物理内存
|
可选,建议内存<2G 配置 swap, 大小至少为 2 倍物理内存
|
||||||
|
|
||||||
推荐用 `fallocate` , 因为这个是最简单、最快速的创建交换空间的方法。 `fallocate` 命令用于为文件预分配块 / 大小。
|
推荐用 `fallocate` , 因为这个是最简单、最快速的创建交换空间的方法。 `fallocate` 命令用于为文件预分配块 / 大小。
|
||||||
|
|
||||||
@@ -141,7 +141,7 @@ sudo swapon -s
|
|||||||
|
|
||||||
### 1.7 绑定域名
|
### 1.7 绑定域名
|
||||||
|
|
||||||
可选, 绑定一个域名或者改下本地 host 便于后续访问
|
可选,绑定一个域名或者改下本地 host 便于后续访问
|
||||||
|
|
||||||
### 1.8 添加本地 SSH 别名
|
### 1.8 添加本地 SSH 别名
|
||||||
|
|
||||||
@@ -160,7 +160,7 @@ Host serverA
|
|||||||
|
|
||||||
#### Docker 安装
|
#### Docker 安装
|
||||||
|
|
||||||
可参考官网文档, 注意是 docker engine 的安装. [Docker 官方安装文档](https://docs.docker.com/engine/install/debian/)
|
可参考官网文档,注意是 docker engine 的安装。[Docker 官方安装文档](https://docs.docker.com/engine/install/debian/)
|
||||||
|
|
||||||
或者我之前写的 RSS MAN 部署文档中 docker 安装的部分
|
或者我之前写的 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)
|
[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)
|
||||||
@@ -180,11 +180,11 @@ Host serverA
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
修改完保存重启 docker 服务即可生效. 可使用 `docker info` 命令检查是否生效
|
修改完保存重启 docker 服务即可生效。可使用 `docker info` 命令检查是否生效
|
||||||
|
|
||||||
### 2.2 OH-MY-ZSH
|
### 2.2 OH-MY-ZSH
|
||||||
|
|
||||||
安装OH-MY-ZSH, 在此之前确保已安装 `git` 和 `zsh`
|
安装 OH-MY-ZSH, 在此之前确保已安装 `git` 和 `zsh`
|
||||||
|
|
||||||
```shell
|
```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](https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh))"
|
||||||
@@ -199,7 +199,7 @@ 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://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting --depth=1
|
||||||
```
|
```
|
||||||
|
|
||||||
按需修改配置. 文件位置`~/.zshrc`, 下面为个人常用配置供参考. 注意去源文件修改对应项, 没有再到末尾加
|
按需修改配置。文件位置`~/.zshrc`, 下面为个人常用配置供参考。注意去源文件修改对应项,没有再到末尾加
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
# custom conf override
|
# custom conf override
|
||||||
@@ -210,7 +210,7 @@ plugins=(git z zsh-autosuggestions zsh-syntax-highlighting sudo)
|
|||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
自定义配置, 添加到末尾
|
自定义配置,添加到末尾
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
export ZSH_AUTOSUGGEST_BUFFER_MAX_SIZE=20
|
export ZSH_AUTOSUGGEST_BUFFER_MAX_SIZE=20
|
||||||
@@ -224,7 +224,7 @@ source ~/.zshrc
|
|||||||
|
|
||||||
### 2.3 nano 代码文件规则
|
### 2.3 nano 代码文件规则
|
||||||
|
|
||||||
日常常用文本编辑器为 nano, 轻量级编辑需求完全满足.
|
日常常用文本编辑器为 nano, 轻量级编辑需求完全满足。
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
curl https://cdn.jsdelivr.net/gh/scopatz/nanorc/install.sh | sh
|
curl https://cdn.jsdelivr.net/gh/scopatz/nanorc/install.sh | sh
|
||||||
@@ -232,9 +232,9 @@ curl https://cdn.jsdelivr.net/gh/scopatz/nanorc/install.sh | sh
|
|||||||
|
|
||||||
### 2.4 时区调整
|
### 2.4 时区调整
|
||||||
|
|
||||||
一般安装完都是 UTC+0, 看日志什么的不方便. 服务器初始化的时候配置好后面可以免去很多麻烦
|
一般安装完都是 UTC+0, 看日志什么的不方便。服务器初始化的时候配置好后面可以免去很多麻烦
|
||||||
|
|
||||||
debian 系可用过 `timedatectl` 命令调整时区. 东八区可以用这个命令
|
debian 系可用过 `timedatectl` 命令调整时区。东八区可以用这个命令
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
sudo timedatectl set-timezone Asia/Shanghai
|
sudo timedatectl set-timezone Asia/Shanghai
|
||||||
@@ -242,13 +242,13 @@ sudo timedatectl set-timezone Asia/Shanghai
|
|||||||
|
|
||||||
### 2.5 厂商监控/SDK 卸载
|
### 2.5 厂商监控/SDK 卸载
|
||||||
|
|
||||||
懂得都懂, 自己搜
|
懂得都懂,自己搜
|
||||||
|
|
||||||
## 3 - 进阶内容
|
## 3 - 进阶内容
|
||||||
|
|
||||||
### 3.1 内核参数调优
|
### 3.1 内核参数调优
|
||||||
|
|
||||||
一些内核参数调整, 交换内存阈值和 bbr, tcp fast open 等, 按需启用. 启用前务必确认自己了解对应字段的含义, 否则不如保留系统初始值.
|
一些内核参数调整,交换内存阈值和 bbr, tcp fast open 等,按需启用。启用前务必确认自己了解对应字段的含义,否则不如保留系统初始值。
|
||||||
|
|
||||||
配置文件位置 `/etc/sysctl.conf`
|
配置文件位置 `/etc/sysctl.conf`
|
||||||
|
|
||||||
@@ -271,18 +271,18 @@ sudo sysctl -p
|
|||||||
|
|
||||||
### 3.2 其他进阶配置
|
### 3.2 其他进阶配置
|
||||||
|
|
||||||
一些其他的系统维护技巧与策略,如
|
一些其他的系统维护技巧与策略,如
|
||||||
|
|
||||||
**配置文件管理**
|
**配置文件管理**
|
||||||
所有应用 docker 化,通过 `docker compose` 文件管理
|
所有应用 docker 化,通过 `docker compose` 文件管理
|
||||||
配置共享存储, `rclone` 挂载 webdav, 同步 docker compose 等配置文件;
|
配置共享存储,`rclone` 挂载 webdav, 同步 docker compose 等配置文件;
|
||||||
traefik 网关作为统一出口, 负责服务发现和自动维护 HTTPS 证书, 自定义配置通过 headless CMS 如 directus 管理, traefik 设定为通过 http 方式获取远端配置即可.
|
traefik 网关作为统一出口,负责服务发现和自动维护 HTTPS 证书,自定义配置通过 headless CMS 如 directus 管理,traefik 设定为通过 http 方式获取远端配置即可。
|
||||||
|
|
||||||
**数据库备份**
|
**数据库备份**
|
||||||
所有数据相关的统一挂载到`/data/database/xxx`, 配置定时任务进行备份
|
所有数据相关的统一挂载到`/data/database/xxx`, 配置定时任务进行备份
|
||||||
以及配置 s3 等, 上传到其他存储介质和其他地域.
|
以及配置 s3 等,上传到其他存储介质和其他地域。
|
||||||
|
|
||||||
这些内容此处不再赘述, 有机会再单独写篇文章分享吧
|
这些内容此处不再赘述,有机会再单独写篇文章分享吧
|
||||||
|
|
||||||
END
|
END
|
||||||
|
|
||||||
|
|||||||
@@ -20,41 +20,41 @@ tags:
|
|||||||
## 云服务器相关的几个概念
|
## 云服务器相关的几个概念
|
||||||
|
|
||||||
### 服务器的操作系统
|
### 服务器的操作系统
|
||||||
主要分为两大阵营:Windows Server和Linux Server。前者一般自带可视化界面,基本兼容平时使用的exe程序,某种程度上也可以作为“云电脑”使用。后者一般不自带图形化界面,操作都通过特定命令完成,上手难度较高,但配置各种开发环境、安装各类高级工具比win平台更容易。没有Linux基础的用户建议先在本地建立虚拟机练习。
|
主要分为两大阵营:Windows Server 和 Linux Server。前者一般自带可视化界面,基本兼容平时使用的 exe 程序,某种程度上也可以作为“云电脑”使用。后者一般不自带图形化界面,操作都通过特定命令完成,上手难度较高,但配置各种开发环境、安装各类高级工具比 win 平台更容易。没有 Linux 基础的用户建议先在本地建立虚拟机练习。
|
||||||
|
|
||||||
Linux Server主要的两个阵营为Debian系、RedHat系。主要的发行版
|
Linux Server 主要的两个阵营为 Debian 系、RedHat 系。主要的发行版
|
||||||
|
|
||||||
- Debian系:Debian, Ubuntu
|
- Debian 系:Debian, Ubuntu
|
||||||
- RedHat系:RedHat, CentOS, Fedora
|
- RedHat 系:RedHat, CentOS, Fedora
|
||||||
|
|
||||||
对于初学者来说,最明显的区别在于前者使用 `apt install xxx` 来安装软件,而后者是通过 `yum install xxx` 来安装。
|
对于初学者来说,最明显的区别在于前者使用 `apt install xxx` 来安装软件,而后者是通过 `yum install xxx` 来安装。
|
||||||
|
|
||||||
### 公网IP
|
### 公网 IP
|
||||||
IP可以理解为一台设备在互联网世界中的门牌号和地址,相当于知道某个具体的地址就能发快递包裹。IP分为公网IP和内网IP。顾名思义,内网IP一般用于公司或学校内部。一般来说,只知道一台设备的内网IP的情况下并不能准确定位这台设备,就类似于只知道你的朋友的名字,并不能直接给他寄快递,你必须要知道他学校/单位/家的地址才行。
|
IP 可以理解为一台设备在互联网世界中的门牌号和地址,相当于知道某个具体的地址就能发快递包裹。IP 分为公网 IP 和内网 IP。顾名思义,内网 IP 一般用于公司或学校内部。一般来说,只知道一台设备的内网 IP 的情况下并不能准确定位这台设备,就类似于只知道你的朋友的名字,并不能直接给他寄快递,你必须要知道他学校/单位/家的地址才行。
|
||||||
|
|
||||||
服务器拥有公网IP的好处在于,你可以直接通过这个IP定位到你的服务器,相当于你的服务器在互联网世界中拥有了响当当的名号,只要说出这个名号,互联网世界的公民都能知道他,给他发消息。
|
服务器拥有公网 IP 的好处在于,你可以直接通过这个 IP 定位到你的服务器,相当于你的服务器在互联网世界中拥有了响当当的名号,只要说出这个名号,互联网世界的公民都能知道他,给他发消息。
|
||||||
|
|
||||||
_*此处公网内网IP的叙述仅适用于IPv4地址。更多关于IPv4地址和IPv6地址的相关信息参见文末扩展阅读。_
|
_*此处公网内网 IP 的叙述仅适用于 IPv4 地址。更多关于 IPv4 地址和 IPv6 地址的相关信息参见文末扩展阅读。_
|
||||||
|
|
||||||
### 端口
|
### 端口
|
||||||
|
|
||||||
端口的英文为port,有港口的意思。一般来说,一台设备不同的端口运行着不同的服务,我们可以很好的控制特定端口的开放与关闭,从而控制不同的服务是否对外开放,正如开放一个通商口岸。常见的服务端口有 `HTTP 80` `HTTPS 443` `DNS 53` `SSH 22`
|
端口的英文为 port,有港口的意思。一般来说,一台设备不同的端口运行着不同的服务,我们可以很好的控制特定端口的开放与关闭,从而控制不同的服务是否对外开放,正如开放一个通商口岸。常见的服务端口有 `HTTP 80` `HTTPS 443` `DNS 53` `SSH 22`
|
||||||
|
|
||||||
一个服务也可能不是仅仅通过一个端口提供服务,他可能会将一个大的功能拆分为几个子功能,通过不同的端口与外界通讯。如FTP,SMB等。你可以通过关闭指定端口来详细控制特定服务。当然如果你想想外面提供像FTP这样通过多个端口与外界通讯的端口,就要注意要确保他使用的所有端口都要设置为开放才能保证外界的正常访问。
|
一个服务也可能不是仅仅通过一个端口提供服务,他可能会将一个大的功能拆分为几个子功能,通过不同的端口与外界通讯。如 FTP,SMB 等。你可以通过关闭指定端口来详细控制特定服务。当然如果你想想外面提供像 FTP 这样通过多个端口与外界通讯的端口,就要注意要确保他使用的所有端口都要设置为开放才能保证外界的正常访问。
|
||||||
|
|
||||||
|
|
||||||
_*FTP是一种文件传输协议,你可以在某些电影资源的下载链接里看见以 `ftp://` 开头的链接。这说明这个电影资源是存放在某个FTP服务器上。_
|
_*FTP 是一种文件传输协议,你可以在某些电影资源的下载链接里看见以 `ftp://` 开头的链接。这说明这个电影资源是存放在某个 FTP 服务器上。_
|
||||||
_*关于FTP、SMB的端口使用及配置参见文末扩展阅读_
|
_*关于 FTP、SMB 的端口使用及配置参见文末扩展阅读_
|
||||||
|
|
||||||
### 防火墙
|
### 防火墙
|
||||||
|
|
||||||
防火墙(Firewall)某种程度上是控制本机与外界通讯的工具。下面以几个具体的实例来介绍下防火墙:
|
防火墙(Firewall)某种程度上是控制本机与外界通讯的工具。下面以几个具体的实例来介绍下防火墙:
|
||||||
|
|
||||||
- 你的服务器建了个网站,需要向外提供HTTP服务,那么你需要在防火墙中设置开放80端口,允许其他所有IP访问。
|
- 你的服务器建了个网站,需要向外提供 HTTP 服务,那么你需要在防火墙中设置开放 80 端口,允许其他所有 IP 访问。
|
||||||
- 公司有一台服务器搭载了一个仅面向公司员工的网站,希望仅允许公司内的员工访问。而公司内员工的内网IP个格式为192.168.*.*,那么就可以在防火墙中设置,仅允许来自IP为192.168.*.*的设备访问这台服务器的80端口,其他一律禁止
|
- 公司有一台服务器搭载了一个仅面向公司员工的网站,希望仅允许公司内的员工访问。而公司内员工的内网 IP 个格式为 192.168.*.*,那么就可以在防火墙中设置,仅允许来自 IP 为 192.168.*.*的设备访问这台服务器的 80 端口,其他一律禁止
|
||||||
- 近期互联网上流行一种病毒X通过计算机的1234端口感染其他机器。那么为了保护本机不受病毒影响,你可以在防火墙中设置关闭1234端口,禁止任何来源访问1234端口,从而将病毒X阻挡在防火墙外。
|
- 近期互联网上流行一种病毒 X 通过计算机的 1234 端口感染其他机器。那么为了保护本机不受病毒影响,你可以在防火墙中设置关闭 1234 端口,禁止任何来源访问 1234 端口,从而将病毒 X 阻挡在防火墙外。
|
||||||
|
|
||||||
**注意:对于云服务器来说,可能会存在多重防火墙。一般Linux系统自身会有一套防火墙(firewalld/ufw等),云服务商会有一套网络防火墙(一般为网络安全组/网络访问控制等)**
|
**注意:对于云服务器来说,可能会存在多重防火墙。一般 Linux 系统自身会有一套防火墙(firewalld/ufw 等),云服务商会有一套网络防火墙(一般为网络安全组/网络访问控制等)**
|
||||||
|
|
||||||
### 几种远程连接方式对比
|
### 几种远程连接方式对比
|
||||||
|
|
||||||
@@ -66,38 +66,38 @@ _*关于FTP、SMB的端口使用及配置参见文末扩展阅读_
|
|||||||
| **网络要求** | 极低 | 高 | 较高 |
|
| **网络要求** | 极低 | 高 | 较高 |
|
||||||
| **配置难度** | ★ | ★★★ | ★★ |
|
| **配置难度** | ★ | ★★★ | ★★ |
|
||||||
|
|
||||||
- 1 部分Linux发行版自带VNC连接,不过大部分需手动启用
|
- 1 部分 Linux 发行版自带 VNC 连接,不过大部分需手动启用
|
||||||
- 2 RDP连接对于同为Win的机器更为容易,对于平台不一样的情况,配置比较麻烦
|
- 2 RDP 连接对于同为 Win 的机器更为容易,对于平台不一样的情况,配置比较麻烦
|
||||||
|
|
||||||
## 快速入门须知
|
## 快速入门须知
|
||||||
|
|
||||||
当你拥有了一台属于自己的云服务器,你发现面对复杂的控制台手足无措,不知道怎么连接,不知道能拿来干什么。那么你可以参考一下的步骤。**下文仅适用于Linux Server & 有一点点Linux操作经验的选手**。
|
当你拥有了一台属于自己的云服务器,你发现面对复杂的控制台手足无措,不知道怎么连接,不知道能拿来干什么。那么你可以参考一下的步骤。**下文仅适用于 Linux Server & 有一点点 Linux 操作经验的选手**。
|
||||||
|
|
||||||
|
|
||||||
### 开启SSH远程连接
|
### 开启 SSH 远程连接
|
||||||
|
|
||||||
|
|
||||||
#### 服务器端设置
|
#### 服务器端设置
|
||||||
1.首先,登陆你的账户,打开云服务器的控制台,开机(不解释)
|
1.首先,登陆你的账户,打开云服务器的控制台,开机(不解释)
|
||||||
2.定位到你的云服务器,一般新的账户只有一台云服务器实例,点击其菜单,找到远程连接选项
|
2.定位到你的云服务器,一般新的账户只有一台云服务器实例,点击其菜单,找到远程连接选项
|
||||||
3.接下来会打开一个网页端的黑框,根据其提示,设置实例密码等等。这里记录你的系统用户名和密码。
|
3.接下来会打开一个网页端的黑框,根据其提示,设置实例密码等等。这里记录你的系统用户名和密码。
|
||||||
4.一般网页端会有提示,根据具体情况开启SSH服务,设置允许root权限远程登录。具体的操作因平台和操作系统不同而不同,此处不再赘述。
|
4.一般网页端会有提示,根据具体情况开启 SSH 服务,设置允许 root 权限远程登录。具体的操作因平台和操作系统不同而不同,此处不再赘述。
|
||||||
5.现在到服务器菜单里找到网络设置/防火墙设置/网络安全组设置,点击进入,**开启服务器22端口的访问权限**。
|
5.现在到服务器菜单里找到网络设置/防火墙设置/网络安全组设置,点击进入,**开启服务器 22 端口的访问权限**。
|
||||||
|
|
||||||
接下来在你的电脑上配置SSH远程访问。
|
接下来在你的电脑上配置 SSH 远程访问。
|
||||||
|
|
||||||
#### 本地电脑设置
|
#### 本地电脑设置
|
||||||
1.1 Win10用户和Linux用户、Mac OS用户一般系统会预装ssh客户端。打开CMD命令控制符/PowerShell,输入ssh回车看是否有反应。**如果没有提示xxx找不到,可以直接到步骤2.1**。
|
1.1 Win10 用户和 Linux 用户、Mac OS 用户一般系统会预装 ssh 客户端。打开 CMD 命令控制符/PowerShell,输入 ssh 回车看是否有反应。**如果没有提示 xxx 找不到,可以直接到步骤 2.1**。
|
||||||
|
|
||||||
1.2 如果没有反应,你需要到 设置-应用-可选功能 中,安装SSH客户端。
|
1.2 如果没有反应,你需要到 设置 - 应用 - 可选功能 中,安装 SSH 客户端。
|
||||||
|
|
||||||
1.3 Windows其他版本用户需要安装第三方SSH客户端。这里推荐使用Putty。
|
1.3 Windows 其他版本用户需要安装第三方 SSH 客户端。这里推荐使用 Putty。
|
||||||
|
|
||||||
2.1 接下来使用 `ssh 你的用户名@你的服务器IP` 来连接到你的服务器。注意**At符号@前后没有空格 ,输完回车确认**。正常情况下可以成功连接到。
|
2.1 接下来使用 `ssh 你的用户名@你的服务器IP` 来连接到你的服务器。注意**At 符号@前后没有空格,输完回车确认**。正常情况下可以成功连接到。
|
||||||
|
|
||||||
2.2 如果出现Permission denied,可能的原因有`用户名密码错误` / `未开启root账户远程登录`。
|
2.2 如果出现 Permission denied,可能的原因有`用户名密码错误` / `未开启root账户远程登录`。
|
||||||
|
|
||||||
2.3 如果出现Connection time out,则大概率是你`IP地址填写错误`,也有可能是你的`服务器没开机`/ `你的服务器系统没有默认开启ssh服务 `/ `防火墙未放行22端口`。
|
2.3 如果出现 Connection time out,则大概率是你`IP地址填写错误`,也有可能是你的`服务器没开机`/ `你的服务器系统没有默认开启ssh服务 `/ `防火墙未放行22端口`。
|
||||||
|
|
||||||
排查相关问题请带上相关关键字去搜索引擎搜索。
|
排查相关问题请带上相关关键字去搜索引擎搜索。
|
||||||
|
|
||||||
@@ -106,34 +106,34 @@ _*关于FTP、SMB的端口使用及配置参见文末扩展阅读_
|
|||||||
|
|
||||||
#### 安装软件的命令及常见问题
|
#### 安装软件的命令及常见问题
|
||||||
|
|
||||||
参见上文介绍操作系统的部分。不过具体安装的时候,经常会遇到的问题为安装需要root权限。一般来说,日常使用时为了安全期间,我们不会直接用root账户进行操作。通常的做法为创建一个普通的账户,当执行需要高权限的指令时在命令前加上sudo,或是使用 `su root` 来临时切换为root用户*,并输入密码来进行二次确认,以确保安全性。此处涉及到的操作有:
|
参见上文介绍操作系统的部分。不过具体安装的时候,经常会遇到的问题为安装需要 root 权限。一般来说,日常使用时为了安全期间,我们不会直接用 root 账户进行操作。通常的做法为创建一个普通的账户,当执行需要高权限的指令时在命令前加上 sudo,或是使用 `su root` 来临时切换为 root 用户*,并输入密码来进行二次确认,以确保安全性。此处涉及到的操作有:
|
||||||
|
|
||||||
- 添加一个普通用户 ( `useradd NEWUSERNAME` / `adduser NEWUSERNAME` )
|
- 添加一个普通用户 ( `useradd NEWUSERNAME` / `adduser NEWUSERNAME` )
|
||||||
- 设置新用户的密码 ( `passwd USERNAME` )
|
- 设置新用户的密码 ( `passwd USERNAME` )
|
||||||
- 将新用户添加到sudoers的列表中 ( 修改 `/etc/sudoers` )
|
- 将新用户添加到 sudoers 的列表中 ( 修改 `/etc/sudoers` )
|
||||||
|
|
||||||
具体操作可以以 `操作系统名称+操作关键字` 为关键字在搜索引擎中自行搜索详细教程。
|
具体操作可以以 `操作系统名称+操作关键字` 为关键字在搜索引擎中自行搜索详细教程。
|
||||||
|
|
||||||
_*临时切换为root用户,执行完命令后,记得用exit命令退出root账户_
|
_*临时切换为 root 用户,执行完命令后,记得用 exit 命令退出 root 账户_
|
||||||
|
|
||||||
#### 镜像源的设置
|
#### 镜像源的设置
|
||||||
|
|
||||||
执行完上述命令,当你尝试安装一个软件时,如果你云服务器提供商没有为你的系统进行“优化”的话,你会发现安装软件的速度非常慢。这是因为这些Linux系统基本都是由国外的厂商/组织进行开发,安装软件时需要到位于国外的服务器获取数据,你的网络请求可能会跨越大半个地球,网络速度也随着传输距离的增加不断减小*。国内有很多组织建立了公益性质的镜像站点,我们可以将安装程序的软件源设置为位于国内的镜像站点以大大提高软件安装下载的速度。
|
执行完上述命令,当你尝试安装一个软件时,如果你云服务器提供商没有为你的系统进行“优化”的话,你会发现安装软件的速度非常慢。这是因为这些 Linux 系统基本都是由国外的厂商/组织进行开发,安装软件时需要到位于国外的服务器获取数据,你的网络请求可能会跨越大半个地球,网络速度也随着传输距离的增加不断减小*。国内有很多组织建立了公益性质的镜像站点,我们可以将安装程序的软件源设置为位于国内的镜像站点以大大提高软件安装下载的速度。
|
||||||
国内的镜像站点有**阿里云镜像站**、**清华大学tuna镜像站**、**中国科学技术大学开源镜像站**等。这些站点提供多种主流Linux发行版的软件安装源的镜像。不同操作系统更换软件源的操作有所不同,可以到以上镜像站点中查找特定系统更换软件源的详细步骤。
|
国内的镜像站点有**阿里云镜像站**、**清华大学 tuna 镜像站**、**中国科学技术大学开源镜像站**等。这些站点提供多种主流 Linux 发行版的软件安装源的镜像。不同操作系统更换软件源的操作有所不同,可以到以上镜像站点中查找特定系统更换软件源的详细步骤。
|
||||||
|
|
||||||
_*请注意此处叙述并不准确,与一个站点通信的速度取决于很多因素。_
|
_*请注意此处叙述并不准确,与一个站点通信的速度取决于很多因素。_
|
||||||
|
|
||||||
#### 常用工具的安装
|
#### 常用工具的安装
|
||||||
更换好了软件源后,我们就可以愉快的安装软件了。你可以尝试安装一下 `screenfetch` 的软件包进行测试,安装完成后输入 `screenfetch` 命令,他会在你的屏幕上输出字符画形式的系统图标和系统配置信息。
|
更换好了软件源后,我们就可以愉快的安装软件了。你可以尝试安装一下 `screenfetch` 的软件包进行测试,安装完成后输入 `screenfetch` 命令,他会在你的屏幕上输出字符画形式的系统图标和系统配置信息。
|
||||||
|
|
||||||
部分Linux发行版可能并没有预置很多的软件包,你可以根据自己的需要进行安装,如文本编辑工具 `nano` `vim` 等*。C编译工具 `gcc` ,C++编译工具 `g++` ,Java开发组件 `openjdk` 等。
|
部分 Linux 发行版可能并没有预置很多的软件包,你可以根据自己的需要进行安装,如文本编辑工具 `nano` `vim` 等*。C 编译工具 `gcc` ,C++编译工具 `g++` ,Java 开发组件 `openjdk` 等。
|
||||||
|
|
||||||
_*推荐初学者使用易于上手的 `nano` 文本编辑器。大部分Linux发行版都有预置。_
|
_*推荐初学者使用易于上手的 `nano` 文本编辑器。大部分 Linux 发行版都有预置。_
|
||||||
|
|
||||||
## 初级玩法
|
## 初级玩法
|
||||||
|
|
||||||
- **搭建Wordpress网站**:为服务器安装好基础设施,部署wordpress服务。参见 [服务器LAMP部署](https://help.aliyun.com/document_detail/50774.html?spm=a2c4g.11186623.6.1134.26fc7ed9zbIv5a),[Wordpress搭建](https://segmentfault.com/a/1190000013035065)
|
- **搭建 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)
|
- **作为远程开发环境**: [VSCode 进行远程开发](https://www.jianshu.com/p/0f2fb935a9a1)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -146,7 +146,7 @@ _*推荐初学者使用易于上手的 `nano` 文本编辑器。大部分Linux
|
|||||||
## 扩展阅读
|
## 扩展阅读
|
||||||
|
|
||||||
|
|
||||||
- [IPv6是什么?](https://zhuanlan.zhihu.com/p/36542469)
|
- [IPv6 是什么?](https://zhuanlan.zhihu.com/p/36542469)
|
||||||
- [CentOS7 firewall 开放服务 / 端口](https://www.jianshu.com/p/016ee3b7ff97)
|
- [CentOS7 firewall 开放服务 / 端口](https://www.jianshu.com/p/016ee3b7ff97)
|
||||||
- [在 Ubuntu 中用 UFW 配置防火墙](https://linux.cn/article-8087-1.html)
|
- [在 Ubuntu 中用 UFW 配置防火墙](https://linux.cn/article-8087-1.html)
|
||||||
- [让你的 WordPress 网站更快的 16 条建议](https://www.wpdaxue.com/make-your-wordpress-site-faster.html)
|
- [让你的 WordPress 网站更快的 16 条建议](https://www.wpdaxue.com/make-your-wordpress-site-faster.html)
|
||||||
|
|||||||
@@ -54,4 +54,4 @@ sudo ufw default deny incoming
|
|||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
这样设置可以保证我们能够正常访问互联网上的绝大多数服务,且阻挡大部分外部的攻击。不过这种情况下,如果你的系统被植入了后门,那么这台机器依然可以向外发送请求。如之前爆发的 “永恒之蓝”,如果你的机器被感染了,那么他依然可以经由特定的端口,向外传送数据,从而感染局域网中的其他设备。防火墙的规则就要根据实际的情况来进行设置了。
|
这样设置可以保证我们能够正常访问互联网上的绝大多数服务,且阻挡大部分外部的攻击。不过这种情况下,如果你的系统被植入了后门,那么这台机器依然可以向外发送请求。如之前爆发的“永恒之蓝”,如果你的机器被感染了,那么他依然可以经由特定的端口,向外传送数据,从而感染局域网中的其他设备。防火墙的规则就要根据实际的情况来进行设置了。
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
---
|
---
|
||||||
title: 伪·苹果全家桶喜添新成员:小米手环6使用体验
|
title: 伪·苹果全家桶喜添新成员:小米手环 6 使用体验
|
||||||
date: 2021-07-25
|
date: 2021-07-25
|
||||||
lastmod: 2021-07-25
|
lastmod: 2021-07-25
|
||||||
description: 继iPad 2018,iPhone SE2,漫步者无线耳机(伪·AirPods),黑苹果Dell G3 3579(伪·MacBook Pro),千元捡垃圾华强北黑苹果主机+4K显示器(伪·iMac)后,我的伪·苹果全家桶终于迎来了新成员:智能穿戴设备,小米手环6。
|
description: 继 iPad 2018,iPhone SE2,漫步者无线耳机(伪·AirPods),黑苹果 Dell G3 3579(伪·MacBook Pro),千元捡垃圾华强北黑苹果主机 +4K 显示器(伪·iMac)后,我的伪·苹果全家桶终于迎来了新成员:智能穿戴设备,小米手环 6。
|
||||||
categories:
|
categories:
|
||||||
- 分享
|
- 分享
|
||||||
tags:
|
tags:
|
||||||
@@ -13,18 +13,18 @@ tags:
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
<!-- # 伪·苹果全家桶喜添新成员:小米手环6使用体验 -->
|
<!-- # 伪·苹果全家桶喜添新成员:小米手环 6 使用体验 -->
|
||||||
|
|
||||||
继iPad 2018,iPhone Se2,漫步者无线耳机(伪·AirPods),黑苹果Dell G3 3579(伪·MacBook Pro),千元捡垃圾华强北黑苹果主机+4K显示器(伪·iMac)后,我的伪·苹果全家桶终于迎来了新成员:智能穿戴设备,小米手环6。
|
继 iPad 2018,iPhone Se2,漫步者无线耳机(伪·AirPods),黑苹果 Dell G3 3579(伪·MacBook Pro),千元捡垃圾华强北黑苹果主机 +4K 显示器(伪·iMac)后,我的伪·苹果全家桶终于迎来了新成员:智能穿戴设备,小米手环 6。
|
||||||
|
|
||||||
## 选购原因
|
## 选购原因
|
||||||
|
|
||||||
我购买电子产品一向是非常谨慎的,而且来回确认必要性和对比参数、价格通常都要很久,但这一次,吃个午饭的功夫我就下单了小米手环6。严格意义上来说,他对我并不是一个必需品,促使我这么快下单的因素主要有两个:
|
我购买电子产品一向是非常谨慎的,而且来回确认必要性和对比参数、价格通常都要很久,但这一次,吃个午饭的功夫我就下单了小米手环 6。严格意义上来说,他对我并不是一个必需品,促使我这么快下单的因素主要有两个:
|
||||||
|
|
||||||
1. 近期对健康的重视
|
1. 近期对健康的重视
|
||||||
2. 对睡眠质量不满意,对白天的工作学习效率和状态不满意
|
2. 对睡眠质量不满意,对白天的工作学习效率和状态不满意
|
||||||
|
|
||||||
在与公司几个我很钦佩的leader和boss的饭局中,我发觉到那些很厉害的人,他们在学习和生活的时候总是以一种全情投入、高效专注的姿态投入进去,而让他们保持精力旺盛和高效的秘诀,或者说这几位牛人的共同点,就是他们都非常**关注健康,保持运动,注重效率**。
|
在与公司几个我很钦佩的 leader 和 boss 的饭局中,我发觉到那些很厉害的人,他们在学习和生活的时候总是以一种全情投入、高效专注的姿态投入进去,而让他们保持精力旺盛和高效的秘诀,或者说这几位牛人的共同点,就是他们都非常**关注健康,保持运动,注重效率**。
|
||||||
|
|
||||||
同时身边几位朋友各种身体原因,耽误学习、工作的真实案例,也让我愈发感受到健康的重要性,包括但不限于心理健康、口腔健康、心肺能力、睡眠质量等方面。
|
同时身边几位朋友各种身体原因,耽误学习、工作的真实案例,也让我愈发感受到健康的重要性,包括但不限于心理健康、口腔健康、心肺能力、睡眠质量等方面。
|
||||||
|
|
||||||
@@ -32,13 +32,13 @@ tags:
|
|||||||
|
|
||||||
## 我最关注的功能
|
## 我最关注的功能
|
||||||
|
|
||||||
通知提醒、运动统计、心率检测,这些都已经是目前市面上的绝大多智能手环、手表的标配了,小米手环6代还支持的功能包括睡眠监测、遥控拍照、血氧检测、支付宝离线支付、音乐切换、闹钟、番茄钟、倒计时以及多种运动模式的检测与支持,NFC版还额外支持NFC刷卡以及小爱同学,不过没有扬声器小爱同学不能发声😂。我购入的是无NFC的普通版,谈一下我个人认为很实用的以及几个非常鸡肋的功能。
|
通知提醒、运动统计、心率检测,这些都已经是目前市面上的绝大多智能手环、手表的标配了,小米手环 6 代还支持的功能包括睡眠监测、遥控拍照、血氧检测、支付宝离线支付、音乐切换、闹钟、番茄钟、倒计时以及多种运动模式的检测与支持,NFC 版还额外支持 NFC 刷卡以及小爱同学,不过没有扬声器小爱同学不能发声😂。我购入的是无 NFC 的普通版,谈一下我个人认为很实用的以及几个非常鸡肋的功能。
|
||||||
|
|
||||||
1. 🎯**平时使用的核心功能**:运动目标(步数和卡路里),睡眠监测
|
1. 🎯**平时使用的核心功能**:运动目标(步数和卡路里),睡眠监测
|
||||||
2. 😃**经常使用的实用工具**:倒计时,番茄钟,事件提醒
|
2. 😃**经常使用的实用工具**:倒计时,番茄钟,事件提醒
|
||||||
3. 👎🏻**营销效果>实用**:血氧检测,心率检测,压力检测,PAI趋势
|
3. 👎🏻**营销效果>实用**:血氧检测,心率检测,压力检测,PAI 趋势
|
||||||
|
|
||||||
**几天实际体验下来,血氧检测、心率这些东西对于一个正常生活的年轻人没有必要**,测了几次血氧都是98%,晚上也没有呼吸不畅,心率也不会突然变动,压力也没必要全天候检测,自己心里烦躁的时候自己还不知道吗。。。PAI是一个需要全天候检测的东西,1分钟检测1次,续航崩的厉害,而且也没啥必要。。。
|
**几天实际体验下来,血氧检测、心率这些东西对于一个正常生活的年轻人没有必要**,测了几次血氧都是 98%,晚上也没有呼吸不畅,心率也不会突然变动,压力也没必要全天候检测,自己心里烦躁的时候自己还不知道吗。。。PAI 是一个需要全天候检测的东西,1 分钟检测 1 次,续航崩的厉害,而且也没啥必要。。。
|
||||||
|
|
||||||
**最令我惊喜的是倒计时、番茄钟和事件提醒功能**。拿我最近的使用场景举例,近期开始重点关注口腔健康,每次刷牙时可以定个三分钟的倒计时,每次刷牙必须满三分钟;再设定一个每日重复的事件提醒,每天提醒我十一点刷牙,保持口腔清洁。这些事固然用手机都可以办到,只是**用手环进行这些操作出乎意料的方便**。番茄钟也是非常非常好用的一个工具,这个功能是近期更新才添加的,现在在手环上设定番茄钟,接收到时提醒更加轻量、便捷,也减少了手机的干扰,大大滴实用~😄
|
**最令我惊喜的是倒计时、番茄钟和事件提醒功能**。拿我最近的使用场景举例,近期开始重点关注口腔健康,每次刷牙时可以定个三分钟的倒计时,每次刷牙必须满三分钟;再设定一个每日重复的事件提醒,每天提醒我十一点刷牙,保持口腔清洁。这些事固然用手机都可以办到,只是**用手环进行这些操作出乎意料的方便**。番茄钟也是非常非常好用的一个工具,这个功能是近期更新才添加的,现在在手环上设定番茄钟,接收到时提醒更加轻量、便捷,也减少了手机的干扰,大大滴实用~😄
|
||||||
|
|
||||||
@@ -48,7 +48,7 @@ tags:
|
|||||||
|
|
||||||
**重量**:几乎可以忽略,没有坠手感
|
**重量**:几乎可以忽略,没有坠手感
|
||||||
|
|
||||||
**续航**:没有打开PAI等高度崩续航的功能,十分钟检测一次,日常使用一到两次运动模式,一周一充没有压力
|
**续航**:没有打开 PAI 等高度崩续航的功能,十分钟检测一次,日常使用一到两次运动模式,一周一充没有压力
|
||||||
|
|
||||||
**充电**:磁吸充电真的超香
|
**充电**:磁吸充电真的超香
|
||||||
|
|
||||||
@@ -56,22 +56,22 @@ tags:
|
|||||||
|
|
||||||
**腕带佩戴体验**:不是很透气,夏天出汗或是沾了水会有点难受
|
**腕带佩戴体验**:不是很透气,夏天出汗或是沾了水会有点难受
|
||||||
|
|
||||||
**腕表卡扣**:一只手轻松扣上,很久以前佩戴的1代手环真的是两只手都扣不上
|
**腕表卡扣**:一只手轻松扣上,很久以前佩戴的 1 代手环真的是两只手都扣不上
|
||||||
|
|
||||||
**硌手程度**:低,正常佩戴,一天下来皮肤上不会有印记
|
**硌手程度**:低,正常佩戴,一天下来皮肤上不会有印记
|
||||||
|
|
||||||
## 使用体验
|
## 使用体验
|
||||||
|
|
||||||
iOS兼容性:尚可,APP功能完备,部分健康数据可写入苹果健康应用。据说一众国产手环手表中,小米家的是对苹果支持最友好的
|
iOS 兼容性:尚可,APP 功能完备,部分健康数据可写入苹果健康应用。据说一众国产手环手表中,小米家的是对苹果支持最友好的
|
||||||
|
|
||||||
设备联动:无,毕竟只是手环,没法安装三方APP。不过听说NFC版的小爱同学可以控制智能家居,听起来还不错
|
设备联动:无,毕竟只是手环,没法安装三方 APP。不过听说 NFC 版的小爱同学可以控制智能家居,听起来还不错
|
||||||
|
|
||||||
响应速度:尚可,抬腕亮屏的灵敏度和速度都还可以,偶有不灵,正常范围内
|
响应速度:尚可,抬腕亮屏的灵敏度和速度都还可以,偶有不灵,正常范围内
|
||||||
|
|
||||||
## 购买建议
|
## 购买建议
|
||||||
|
|
||||||
Apple生态内用户,Apple Watch少有的平价替代品(两百块要什么自行车)
|
Apple 生态内用户,Apple Watch 少有的平价替代品(两百块要什么自行车)
|
||||||
|
|
||||||
腕上空空选手的智能穿戴尝鲜优选
|
腕上空空选手的智能穿戴尝鲜优选
|
||||||
|
|
||||||
小米手环123代用户无脑升级(磁吸充电真香)
|
小米手环 123 代用户无脑升级(磁吸充电真香)
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ categories:
|
|||||||
|
|
||||||
## 答案
|
## 答案
|
||||||
|
|
||||||
我想要什么?
|
我想要什么?
|
||||||
|
|
||||||
这个问题困扰了我很久。
|
这个问题困扰了我很久。
|
||||||
|
|
||||||
@@ -92,7 +92,7 @@ categories:
|
|||||||
|
|
||||||
从这个误区中走出来后,我感觉做起事来变得更加轻松了,不用再费心费力去计划什么,也不用为事情发展脱离预期而焦躁,坦然的心态也有利于我专注于这个事情本身。
|
从这个误区中走出来后,我感觉做起事来变得更加轻松了,不用再费心费力去计划什么,也不用为事情发展脱离预期而焦躁,坦然的心态也有利于我专注于这个事情本身。
|
||||||
|
|
||||||
最近看的《嫌疑人X的献身》中提到一个有趣的观点:证明一个答案是错误的,比找出一个问题的正确答案可能要更难。
|
最近看的《嫌疑人 X 的献身》中提到一个有趣的观点:证明一个答案是错误的,比找出一个问题的正确答案可能要更难。
|
||||||
|
|
||||||
我已全然忘记我意识到这个误区是什么时间,什么场景,有什么契机。或许我根本就不是在某一个特定的时间点顿悟的,我更倾向于将这一点归于我的积累。毕竟,在你一无所有的时候,你能投资的只有你自己。
|
我已全然忘记我意识到这个误区是什么时间,什么场景,有什么契机。或许我根本就不是在某一个特定的时间点顿悟的,我更倾向于将这一点归于我的积累。毕竟,在你一无所有的时候,你能投资的只有你自己。
|
||||||
|
|
||||||
@@ -102,9 +102,9 @@ You are what you read.
|
|||||||
|
|
||||||
孟母三迁、“近朱者赤近墨者黑”讲的也都是类似的道理。
|
孟母三迁、“近朱者赤近墨者黑”讲的也都是类似的道理。
|
||||||
|
|
||||||
大二的时候我开始接触到RSS,开始有意识地掌控我的信息源。卸载了知乎,关闭了所有算法驱动的信息推送流。我订阅的信息源主要有两大类:编辑精挑细选的文章和优秀作者或优质站点的文章。我认识到自己的时间很值钱,我不希望把时间浪费在没有意义和低质量的信息以及一些琐事上。
|
大二的时候我开始接触到 RSS,开始有意识地掌控我的信息源。卸载了知乎,关闭了所有算法驱动的信息推送流。我订阅的信息源主要有两大类:编辑精挑细选的文章和优秀作者或优质站点的文章。我认识到自己的时间很值钱,我不希望把时间浪费在没有意义和低质量的信息以及一些琐事上。
|
||||||
|
|
||||||
我们生活的时代早已不是那个信息匮乏的年代,现在的人们普遍都面临信息过载的问题。但是问题是,咨询类App给你推荐的xx国新闻,xx地的xx奇葩事件,与你有何干系?浏览这些信息能得到什么?满足人类与生俱来的猎奇心理,让你变得“学富五车”吗?
|
我们生活的时代早已不是那个信息匮乏的年代,现在的人们普遍都面临信息过载的问题。但是问题是,咨询类 App 给你推荐的 xx 国新闻,xx 地的 xx 奇葩事件,与你有何干系?浏览这些信息能得到什么?满足人类与生俱来的猎奇心理,让你变得“学富五车”吗?
|
||||||
|
|
||||||
我发现一个很有趣的现象:有那么一群人,尤其是出租车司机和中年男性,喜欢对近期的事件、政治或是某个特定领域高谈阔论,试图吹嘘自己对这个领域有多么多么了解。典型的无非出租车师傅指点江山,大谈特谈世界局势,以及我教张小龙做微信系列。
|
我发现一个很有趣的现象:有那么一群人,尤其是出租车司机和中年男性,喜欢对近期的事件、政治或是某个特定领域高谈阔论,试图吹嘘自己对这个领域有多么多么了解。典型的无非出租车师傅指点江山,大谈特谈世界局势,以及我教张小龙做微信系列。
|
||||||
|
|
||||||
@@ -112,7 +112,7 @@ You are what you read.
|
|||||||
|
|
||||||
我挺钦佩这个同事,因为他知道自己做了什么,在做什么,想做什么。某种程度上来说,是“活得明白”。
|
我挺钦佩这个同事,因为他知道自己做了什么,在做什么,想做什么。某种程度上来说,是“活得明白”。
|
||||||
|
|
||||||
相较而言,同期一起工作的另外几名同事虽然有更好的学历,更优秀的履历,更强的工作能力,但是他们更像是依仗着自己的硬实力和资本,在随波逐流。C9高校本硕学历,一线城市大厂工作,相当耀眼。但是他们走到这里,可能并没有什么漂亮的逆袭,有什么决定命运的重要转折,人家只是到了顺风顺水的得到了保研资格就读了个研,刚好有用人单位看上了就进了大公司。但是在与他们聊天的过程中,我发觉他们对自己,对世界,对人生并没有什么比较深刻的认知或者想法,对很多问题依然很迷茫,平时也没有什么热爱的事业,给我的感觉就是很干巴巴的,很浅薄的一个灵魂,在一个光鲜亮丽的身体里。
|
相较而言,同期一起工作的另外几名同事虽然有更好的学历,更优秀的履历,更强的工作能力,但是他们更像是依仗着自己的硬实力和资本,在随波逐流。C9 高校本硕学历,一线城市大厂工作,相当耀眼。但是他们走到这里,可能并没有什么漂亮的逆袭,有什么决定命运的重要转折,人家只是到了顺风顺水的得到了保研资格就读了个研,刚好有用人单位看上了就进了大公司。但是在与他们聊天的过程中,我发觉他们对自己,对世界,对人生并没有什么比较深刻的认知或者想法,对很多问题依然很迷茫,平时也没有什么热爱的事业,给我的感觉就是很干巴巴的,很浅薄的一个灵魂,在一个光鲜亮丽的身体里。
|
||||||
|
|
||||||
你可能会说,人家只是一个普通人,只是起点比我们其他人更高罢了。或者你会说,我完全只是嫉妒人家所拥有的,尝试安慰自己罢了。
|
你可能会说,人家只是一个普通人,只是起点比我们其他人更高罢了。或者你会说,我完全只是嫉妒人家所拥有的,尝试安慰自己罢了。
|
||||||
|
|
||||||
@@ -126,9 +126,9 @@ You are what you read.
|
|||||||
|
|
||||||
有一张图很有意思,三个人分别站在不同高度的书上,看到的是截然不同的风景。书最少的那个人看到的都是矮墙地下的花花草草,书稍微多些的人跨国墙头看到了远处阴云密布的天空,眼前一片黑暗。而最右侧的人站在一摞高高垒起的书上,看到了云层之上璀璨的星空。
|
有一张图很有意思,三个人分别站在不同高度的书上,看到的是截然不同的风景。书最少的那个人看到的都是矮墙地下的花花草草,书稍微多些的人跨国墙头看到了远处阴云密布的天空,眼前一片黑暗。而最右侧的人站在一摞高高垒起的书上,看到了云层之上璀璨的星空。
|
||||||
|
|
||||||
这张图显然是在暗指读书多少决定了眼中世界的模样。我曾经也是认为对这个世界的认知越通透的人越厉害,这也是以前我judge别人的主要标准。不过后面我发现生活中有一类人即便并没有深刻的思想,但是仍然能让我感觉很“Wow”。后面发现这类人有一个共同的特征,那就是他们都有各自热爱的人或事,或是生活本身。
|
这张图显然是在暗指读书多少决定了眼中世界的模样。我曾经也是认为对这个世界的认知越通透的人越厉害,这也是以前我 judge 别人的主要标准。不过后面我发现生活中有一类人即便并没有深刻的思想,但是仍然能让我感觉很“Wow”。后面发现这类人有一个共同的特征,那就是他们都有各自热爱的人或事,或是生活本身。
|
||||||
|
|
||||||
这个热爱显然不是简单的“我喜欢xxx”,那只是喜欢,称不上热爱。我不知道应该给热爱下一个什么样的定义,但是有一点是可以确定的,心怀热爱的人,眼里有光。他们愿意去为了自己热爱的事业去付出,去不断尝试,去不断深入学习,不断进步。
|
这个热爱显然不是简单的“我喜欢 xxx”,那只是喜欢,称不上热爱。我不知道应该给热爱下一个什么样的定义,但是有一点是可以确定的,心怀热爱的人,眼里有光。他们愿意去为了自己热爱的事业去付出,去不断尝试,去不断深入学习,不断进步。
|
||||||
|
|
||||||
我敬佩一切心怀热爱的人,他们眼里有光,拥有可以跨越苦难的人生勇气。
|
我敬佩一切心怀热爱的人,他们眼里有光,拥有可以跨越苦难的人生勇气。
|
||||||
|
|
||||||
@@ -138,13 +138,13 @@ You are what you read.
|
|||||||
|
|
||||||
## 关于兴趣
|
## 关于兴趣
|
||||||
|
|
||||||
KnowYourself有[一期文章](https://www.zhihu.com/question/299527411)谈到了人们对于“兴趣”的几个误区
|
KnowYourself 有[一期文章](https://www.zhihu.com/question/299527411)谈到了人们对于“兴趣”的几个误区
|
||||||
|
|
||||||
**误解 1:“不需要做什么,我就可以对某件事物一直感兴趣。”**
|
**误解 1:“不需要做什么,我就可以对某件事物一直感兴趣。”**
|
||||||
|
|
||||||
**误解 2: “兴趣一定可以被‘找到’。”**
|
**误解 2: “兴趣一定可以被‘找到’。”**
|
||||||
|
|
||||||
我曾经也认为兴趣是与生俱来的,一定可以被找到的,记忆中我很小的时候就对科技类的理工类的东西很感兴趣,这些兴趣驱使着我不断学习这些知识和技能,一路走到今天。后面发现这并不是我与生俱来的刻在DNA里面的某种原始本能,也不是某种“一见钟情”,小时候那些高质量的动漫节目、书籍、电影,都对我产生了深远的影响。
|
我曾经也认为兴趣是与生俱来的,一定可以被找到的,记忆中我很小的时候就对科技类的理工类的东西很感兴趣,这些兴趣驱使着我不断学习这些知识和技能,一路走到今天。后面发现这并不是我与生俱来的刻在 DNA 里面的某种原始本能,也不是某种“一见钟情”,小时候那些高质量的动漫节目、书籍、电影,都对我产生了深远的影响。
|
||||||
|
|
||||||
兴趣是需要被培养的,是可以培养的。我觉得兴趣更像是一段友情,或是一团火,需要投入时间和精力,予以恰当的方式,才能让其不断发展。不断尝试,不断突破,取得进展,可以获得正向的反馈,从而不断学习,不断进步。
|
兴趣是需要被培养的,是可以培养的。我觉得兴趣更像是一段友情,或是一团火,需要投入时间和精力,予以恰当的方式,才能让其不断发展。不断尝试,不断突破,取得进展,可以获得正向的反馈,从而不断学习,不断进步。
|
||||||
|
|
||||||
@@ -156,7 +156,7 @@ KnowYourself有[一期文章](https://www.zhihu.com/question/299527411)谈到了
|
|||||||
|
|
||||||
兴趣需要培养,而培养需要长时间持续的投入。
|
兴趣需要培养,而培养需要长时间持续的投入。
|
||||||
|
|
||||||
想要真正觉得一些事情 “很有意思”,产生“反复做这件事都不会厌倦” 的状态,需要我们有 “能力” 足够充分地感受到这件事的美妙之处。用拥有这个能力需要持续投入,而品尝到美妙之处也需要长期的投入。
|
想要真正觉得一些事情“很有意思”,产生“反复做这件事都不会厌倦”的状态,需要我们有“能力”足够充分地感受到这件事的美妙之处。用拥有这个能力需要持续投入,而品尝到美妙之处也需要长期的投入。
|
||||||
|
|
||||||
习惯了高频高刺激的短视频后,是很难投入到这样长期的活动当中的。我认为短视频会消磨一个人对于事物的兴趣。
|
习惯了高频高刺激的短视频后,是很难投入到这样长期的活动当中的。我认为短视频会消磨一个人对于事物的兴趣。
|
||||||
|
|
||||||
@@ -175,7 +175,7 @@ KnowYourself有[一期文章](https://www.zhihu.com/question/299527411)谈到了
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 关于 “人生苦短,及时行乐”
|
## 关于“人生苦短,及时行乐”
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
title: 前端静态资源加载的一些优化
|
title: 前端静态资源加载的一些优化
|
||||||
date: 2022-05-06
|
date: 2022-05-06
|
||||||
description: 最近在折腾优化博客,由于全站都是部署在Netlify、Vercel的CDN上,都是海外节点,国内访问延迟高,在想办法优化下访问速度和体验。这篇文章来探讨下前端CSS和JS资源的加载。优化目标主要就两个:1. 尽可能快,但是不希望我引入的辅助性第三方库影响到页面体验,不要阻塞主要内容渲染. 2. 为了快第三方静态资源肯定是上CDN,但是要有容灾,CDN挂了要能fallback到其他url
|
description: 最近在折腾优化博客,由于全站都是部署在 Netlify、Vercel 的 CDN 上,都是海外节点,国内访问延迟高,在想办法优化下访问速度和体验。这篇文章来探讨下前端 CSS 和 JS 资源的加载。优化目标主要就两个:1. 尽可能快,但是不希望我引入的辅助性第三方库影响到页面体验,不要阻塞主要内容渲染。2. 为了快第三方静态资源肯定是上 CDN,但是要有容灾,CDN 挂了要能 fallback 到其他 url
|
||||||
categories:
|
categories:
|
||||||
- 技术
|
- 技术
|
||||||
tags:
|
tags:
|
||||||
@@ -13,22 +13,22 @@ tags:
|
|||||||
|
|
||||||
<!-- # 前端静态资源加载的一些优化 -->
|
<!-- # 前端静态资源加载的一些优化 -->
|
||||||
|
|
||||||
最近在折腾优化博客,由于全站都是部署在Netlify、Vercel的CDN上,都是海外节点,国内访问延迟高,在想办法优化下访问速度和体验。线路部分的优化可以看另一篇文章[国外静态网站托管服务商国内速度对比及线路优化](https://blog.colinx.one/posts/%E5%9B%BD%E5%A4%96%E9%9D%99%E6%80%81%E7%BD%91%E7%AB%99%E6%89%98%E7%AE%A1%E5%9C%A8%E5%9B%BD%E5%86%85%E9%80%9F%E5%BA%A6%E5%AF%B9%E6%AF%94%E5%8F%8A%E7%BA%BF%E8%B7%AF%E4%BC%98%E5%8C%96/)。这篇文章来探讨下前端CSS和JS资源的加载。
|
最近在折腾优化博客,由于全站都是部署在 Netlify、Vercel 的 CDN 上,都是海外节点,国内访问延迟高,在想办法优化下访问速度和体验。线路部分的优化可以看另一篇文章[国外静态网站托管服务商国内速度对比及线路优化](https://blog.colinx.one/posts/%E5%9B%BD%E5%A4%96%E9%9D%99%E6%80%81%E7%BD%91%E7%AB%99%E6%89%98%E7%AE%A1%E5%9C%A8%E5%9B%BD%E5%86%85%E9%80%9F%E5%BA%A6%E5%AF%B9%E6%AF%94%E5%8F%8A%E7%BA%BF%E8%B7%AF%E4%BC%98%E5%8C%96/)。这篇文章来探讨下前端 CSS 和 JS 资源的加载。
|
||||||
|
|
||||||
优化目标主要就两个:
|
优化目标主要就两个:
|
||||||
|
|
||||||
* 尽可能快,但是不希望我引入的辅助性第三方库影响到页面体验,不要阻塞主要内容渲染
|
* 尽可能快,但是不希望我引入的辅助性第三方库影响到页面体验,不要阻塞主要内容渲染
|
||||||
* 为了快第三方静态资源肯定是上CDN,但是要有容灾,CDN挂了要能fallback到其他url
|
* 为了快第三方静态资源肯定是上 CDN,但是要有容灾,CDN 挂了要能 fallback 到其他 url
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## 静态资源异步加载
|
## 静态资源异步加载
|
||||||
|
|
||||||
`prefetch`、`preload`这些预加载技术暂且不谈,博客站点没那么多资源。这里主要是用`async`和`defer`来控制脚本异步加载,以避免阻塞DOM解析和页面渲染。
|
`prefetch`、`preload`这些预加载技术暂且不谈,博客站点没那么多资源。这里主要是用`async`和`defer`来控制脚本异步加载,以避免阻塞 DOM 解析和页面渲染。
|
||||||
|
|
||||||
使用`async`异步加载,对于[pangu](https://github.com/vinta/pangu.js/)这种会影响到内容呈现的使用`async`,对于统计类第三方库使用`defer`延迟加载,到DOM加载完再执行
|
使用`async`异步加载,对于[pangu](https://github.com/vinta/pangu.js/)这种会影响到内容呈现的使用`async`,对于统计类第三方库使用`defer`延迟加载,到 DOM 加载完再执行
|
||||||
|
|
||||||
有些第三方库需要手动init,这样就不能使用`defer`、`async`关键字加载资源了,**`defer`和`async`关键字只适用于远程资源**,本以为把远程资源的`<script>`和内嵌在HTML里用来init的`<script>`都加上`defer`就可以利用它顺序加载的特性解决这个问题,结果发现不是这样的。。。。异步打乱脚本执行顺序,init脚本不等待资源下载完毕会先执行。利用好`onload`事件可以解决这个问题。
|
有些第三方库需要手动 init,这样就不能使用`defer`、`async`关键字加载资源了,**`defer`和`async`关键字只适用于远程资源**,本以为把远程资源的`<script>`和内嵌在 HTML 里用来 init 的`<script>`都加上`defer`就可以利用它顺序加载的特性解决这个问题,结果发现不是这样的。。。。异步打乱脚本执行顺序,init 脚本不等待资源下载完毕会先执行。利用好`onload`事件可以解决这个问题。
|
||||||
|
|
||||||
before
|
before
|
||||||
|
|
||||||
@@ -65,7 +65,7 @@ after
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
除了`onload`还有`onerror`,还可以利用`onerror`事件在资源加载失败时fallback到其他CDN,详见下文
|
除了`onload`还有`onerror`,还可以利用`onerror`事件在资源加载失败时 fallback 到其他 CDN,详见下文
|
||||||
|
|
||||||
这里跑了个测试看下优化前后的差距
|
这里跑了个测试看下优化前后的差距
|
||||||
|
|
||||||
@@ -75,26 +75,26 @@ after
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
First Contentful Pain Time在1.5s,整个页面到1.5s才能可见,DOM加载总时间达到了2.5s
|
First Contentful Pain Time 在 1.5s,整个页面到 1.5s 才能可见,DOM 加载总时间达到了 2.5s
|
||||||
|
|
||||||
本来我都已经把首页不需要加载的三方库都拿走了,但是还剩下一个,这个用于前端性能监控的js阻塞了渲染,挂的是腾讯云的CDN,国内快到飞起,国外就卡到不行(作为对比上图里从jsdelivr加载的js也是快到飞起,墙内就慢得一批)
|
本来我都已经把首页不需要加载的三方库都拿走了,但是还剩下一个,这个用于前端性能监控的 js 阻塞了渲染,挂的是腾讯云的 CDN,国内快到飞起,国外就卡到不行(作为对比上图里从 jsdelivr 加载的 js 也是快到飞起,墙内就慢得一批)
|
||||||
|
|
||||||
**优化后**
|
**优化后**
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
优化后页面没有再阻塞,0.8s页面就可用了,总DOM加载时间只有1.5s,相较之前简直直接起飞。
|
优化后页面没有再阻塞,0.8s 页面就可用了,总 DOM 加载时间只有 1.5s,相较之前简直直接起飞。
|
||||||
|
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
国内某检测平台的结果也显示优化效果明显
|
国内某检测平台的结果也显示优化效果明显
|
||||||
|
|
||||||
## 静态资源Fallback加载
|
## 静态资源 Fallback 加载
|
||||||
|
|
||||||
国内好用的静态资源CDN还真没有,新浪那种只提供那么几个热门的库完全不符合需求,BootCDN炸了不是一次两次,字节CDN的资源URL有够ugly,URL里面还带节点信息多半后面会出问题。360奇舞CDN之前也换过域名、备案出问题,感觉每一个能省心用。七牛的目前看上去还行,也不知道后面会不会出什么幺蛾子。。。为了稳妥起见+照顾全球的访客,还是优先使用的cloudflare和jsdelivr的CDN
|
国内好用的静态资源 CDN 还真没有,新浪那种只提供那么几个热门的库完全不符合需求,BootCDN 炸了不是一次两次,字节 CDN 的资源 URL 有够 ugly,URL 里面还带节点信息多半后面会出问题。360 奇舞 CDN 之前也换过域名、备案出问题,感觉每一个能省心用。七牛的目前看上去还行,也不知道后面会不会出什么幺蛾子。。。为了稳妥起见 + 照顾全球的访客,还是优先使用的 cloudflare 和 jsdelivr 的 CDN
|
||||||
|
|
||||||
网站主要三方库都是通过jsdelivr和cloudflare引入的,但是毕竟是海外的节点不知道哪一天就被墙了,所以还要为墙内的访客准备一个fallback方案。这里利用到`script`标签的`onerror`事件
|
网站主要三方库都是通过 jsdelivr 和 cloudflare 引入的,但是毕竟是海外的节点不知道哪一天就被墙了,所以还要为墙内的访客准备一个 fallback 方案。这里利用到`script`标签的`onerror`事件
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -104,7 +104,7 @@ First Contentful Pain Time在1.5s,整个页面到1.5s才能可见,DOM加载
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
关于`onerror`,中文互联网上有好几篇文章说他会捕获`script`标签里的代码的执行错误。。。简直离谱。稍微查下MDN之类的文档就可以发现这玩意本来就是只捕获资源加载错误的
|
关于`onerror`,中文互联网上有好几篇文章说他会捕获`script`标签里的代码的执行错误。。。简直离谱。稍微查下 MDN 之类的文档就可以发现这玩意本来就是只捕获资源加载错误的
|
||||||
|
|
||||||
> The onerror event is triggered if an error occurs while loading an external file (e.g. a document or an image).
|
> The onerror event is triggered if an error occurs while loading an external file (e.g. a document or an image).
|
||||||
>
|
>
|
||||||
@@ -112,7 +112,7 @@ First Contentful Pain Time在1.5s,整个页面到1.5s才能可见,DOM加载
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
利用好这个特性,就可以实现在资源加载失败时fallback从另一个url加载资源。
|
利用好这个特性,就可以实现在资源加载失败时 fallback 从另一个 url 加载资源。
|
||||||
|
|
||||||
```html
|
```html
|
||||||
<script>
|
<script>
|
||||||
@@ -135,9 +135,9 @@ onerror="fallbackJSloader('https://cdn.staticfile.org/gitalk/1.7.2/gitalk.min.js
|
|||||||
src="https://cdn.jsdelivr.net/npm/gitalk@1/dist/gitalk.min.js">
|
src="https://cdn.jsdelivr.net/npm/gitalk@1/dist/gitalk.min.js">
|
||||||
```
|
```
|
||||||
|
|
||||||
CSS的fallback加载同理,此处不再赘述
|
CSS 的 fallback 加载同理,此处不再赘述
|
||||||
|
|
||||||
优化后如图,在开发者工具中手动block资源网站,可以自动fallback从另一个url加载资源,这下网站的可用性又提升了一点点🤏哈哈哈
|
优化后如图,在开发者工具中手动 block 资源网站,可以自动 fallback 从另一个 url 加载资源,这下网站的可用性又提升了一点点🤏哈哈哈
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
@@ -149,6 +149,6 @@ CSS的fallback加载同理,此处不再赘述
|
|||||||
* [defer 和 async 的区别](https://segmentfault.com/q/1010000000640869)
|
* [defer 和 async 的区别](https://segmentfault.com/q/1010000000640869)
|
||||||
* [动态加载 css](http://lengyun.github.io/js/3-2-2dynamicAddCSS.html#%E4%B8%8E%E5%8A%A8%E6%80%81%E5%8A%A0%E8%BD%BDjs%E7%9A%84%E5%8C%BA%E5%88%AB)
|
* [动态加载 css](http://lengyun.github.io/js/3-2-2dynamicAddCSS.html#%E4%B8%8E%E5%8A%A8%E6%80%81%E5%8A%A0%E8%BD%BDjs%E7%9A%84%E5%8C%BA%E5%88%AB)
|
||||||
|
|
||||||
**网站profile**工具
|
**网站 profile**工具
|
||||||
|
|
||||||
* [https://www.webpagetest.org](https://www.webpagetest.org)
|
* [https://www.webpagetest.org](https://www.webpagetest.org)
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
title: 国外静态网站托管服务商国内速度对比及线路优化
|
title: 国外静态网站托管服务商国内速度对比及线路优化
|
||||||
date: 2022-05-05
|
date: 2022-05-05
|
||||||
description: 主要探讨Netlify、Vercel、Cloudflare Pages、Azure Web Hosting在国内的速度对比及线路优化
|
description: 主要探讨 Netlify、Vercel、Cloudflare Pages、Azure Web Hosting 在国内的速度对比及线路优化
|
||||||
categories:
|
categories:
|
||||||
- 技术
|
- 技术
|
||||||
tags:
|
tags:
|
||||||
@@ -15,11 +15,11 @@ tags:
|
|||||||
# 国外静态网站托管服务商国内速度对比及线路优化
|
# 国外静态网站托管服务商国内速度对比及线路优化
|
||||||
|
|
||||||
|
|
||||||
本文主要探讨Netlify、Vercel、Cloudflare Pages、Azure Web Hosting在国内的速度对比及线路优化
|
本文主要探讨 Netlify、Vercel、Cloudflare Pages、Azure Web Hosting 在国内的速度对比及线路优化
|
||||||
|
|
||||||
以我的博客站点blog.colinx.one为例,使用hugo构建,选用的模板也很轻量没有太多奇奇怪怪的第三方组件,使用这些静态服务托管主要图个方便,不用备案而且基本流量不限。
|
以我的博客站点 blog.colinx.one 为例,使用 hugo 构建,选用的模板也很轻量没有太多奇奇怪怪的第三方组件,使用这些静态服务托管主要图个方便,不用备案而且基本流量不限。
|
||||||
|
|
||||||
分别挂了四个服务商的CI, 每次更新Git仓库都会自动触发构建。分别对四个默认分配的域名进行检测。
|
分别挂了四个服务商的 CI, 每次更新 Git 仓库都会自动触发构建。分别对四个默认分配的域名进行检测。
|
||||||
|
|
||||||
## 四家服务商默认设置国内速度测试对比
|
## 四家服务商默认设置国内速度测试对比
|
||||||
|
|
||||||
@@ -27,7 +27,7 @@ tags:
|
|||||||
|
|
||||||
[colins-blog.netlify.app](https://colins-blog.netlify.app)
|
[colins-blog.netlify.app](https://colins-blog.netlify.app)
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -35,7 +35,7 @@ tags:
|
|||||||
|
|
||||||
[colinx-blog.vercel.app](https://colinx-blog.vercel.app)
|
[colinx-blog.vercel.app](https://colinx-blog.vercel.app)
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -43,7 +43,7 @@ tags:
|
|||||||
|
|
||||||
[nice-glacier-095b09e00.1.azurestaticapps.net](https://nice-glacier-095b09e00.1.azurestaticapps.net)
|
[nice-glacier-095b09e00.1.azurestaticapps.net](https://nice-glacier-095b09e00.1.azurestaticapps.net)
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -51,19 +51,19 @@ tags:
|
|||||||
|
|
||||||
[colinx-blog.pages.dev](https://colinx-blog.pages.dev)
|
[colinx-blog.pages.dev](https://colinx-blog.pages.dev)
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
emmm Cloudflare这在国内的速度可太拉胯了,虽说可以通过自选节点的方式曲线救国,但想了想还是算了。利用好其他三家的节点应该足够国内大部分用户访问。
|
emmm Cloudflare 这在国内的速度可太拉胯了,虽说可以通过自选节点的方式曲线救国,但想了想还是算了。利用好其他三家的节点应该足够国内大部分用户访问。
|
||||||
|
|
||||||
---Update on 2022-05-22---
|
---Update on 2022-05-22---
|
||||||
|
|
||||||
又重新测了一下cloudflare的速度,这次倒是一片绿,看来还是要运气,不太稳定。电信和联通都嗖嗖的,移动基本上全挂了。。。
|
又重新测了一下 cloudflare 的速度,这次倒是一片绿,看来还是要运气,不太稳定。电信和联通都嗖嗖的,移动基本上全挂了。。。
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
这次能连接的节点主要就两个172.66.45.34和172.66.46.222。
|
这次能连接的节点主要就两个 172.66.45.34 和 172.66.46.222。
|
||||||
|
|
||||||
---end---
|
---end---
|
||||||
|
|
||||||
@@ -99,7 +99,7 @@ Azure
|
|||||||
|
|
||||||
## 优化前
|
## 优化前
|
||||||
|
|
||||||
优化前使用了dnspod的解析服务做4个A记录的负载均衡,免费版套餐单记录单线路只能设置最多两个负载均衡记录,我这个是之前开通专业版套餐设置的,套餐到期了原有记录依旧保留,所以能设置四条同线路A记录负载均衡。
|
优化前使用了 dnspod 的解析服务做 4 个 A 记录的负载均衡,免费版套餐单记录单线路只能设置最多两个负载均衡记录,我这个是之前开通专业版套餐设置的,套餐到期了原有记录依旧保留,所以能设置四条同线路 A 记录负载均衡。
|
||||||
|
|
||||||
```
|
```
|
||||||
before
|
before
|
||||||
@@ -120,13 +120,13 @@ before
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
这圈子兜的也太大了些。。。哦原来是Digital Ocean的节点啊,那没事了。
|
这圈子兜的也太大了些。。。哦原来是 Digital Ocean 的节点啊,那没事了。
|
||||||
|
|
||||||
亚马逊的节点稍微好些,没有绕道日本这么离谱的行为
|
亚马逊的节点稍微好些,没有绕道日本这么离谱的行为
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
再来看看vercel节点的表现
|
再来看看 vercel 节点的表现
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
@@ -134,7 +134,7 @@ before
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
但是默认的AnyCast节点这个路由就稍微绕路了,看来大中华区还是得自己动手调整下线路
|
但是默认的 AnyCast 节点这个路由就稍微绕路了,看来大中华区还是得自己动手调整下线路
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -148,24 +148,24 @@ after
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
1. Vercel的Anycast基本上都是路由到日本,但是同一个地方可能会被路由到不同的路线,比如有些IP从上海出口转日本东京,有些是从广东出口转日本
|
1. Vercel 的 Anycast 基本上都是路由到日本,但是同一个地方可能会被路由到不同的路线,比如有些 IP 从上海出口转日本东京,有些是从广东出口转日本
|
||||||
2. Netlify的节点主要是在新加坡,提供商有AWS和Digital Ocean,实测后者的节点经常性抽风,国内流量过去会绕个大圈子,还是AWS的靠谱些
|
2. Netlify 的节点主要是在新加坡,提供商有 AWS 和 Digital Ocean,实测后者的节点经常性抽风,国内流量过去会绕个大圈子,还是 AWS 的靠谱些
|
||||||
3. Azure的静态网页托管服务现在是免费的,带宽和流量啥的妥妥够用,不过开账户有门槛,我是用Github Education Pack在Azure开了个Azure for Students订阅,每年100刀额度,到期可续
|
3. Azure 的静态网页托管服务现在是免费的,带宽和流量啥的妥妥够用,不过开账户有门槛,我是用 Github Education Pack 在 Azure 开了个 Azure for Students 订阅,每年 100 刀额度,到期可续
|
||||||
4. Azure能用的就香港节点,其他都是去往北美和欧洲的,直接pass。对电信友好,移动和联通很不友好,饶了一大圈
|
4. Azure 能用的就香港节点,其他都是去往北美和欧洲的,直接 pass。对电信友好,移动和联通很不友好,饶了一大圈
|
||||||
5. AWS的节点对移动和联通挺友好,对电信支持略差
|
5. AWS 的节点对移动和联通挺友好,对电信支持略差
|
||||||
6. Vercel节点也是对移动和联通友好些
|
6. Vercel 节点也是对移动和联通友好些
|
||||||
|
|
||||||
其他附加信息
|
其他附加信息
|
||||||
|
|
||||||
1. Netlify可自定义证书,Vercel不可以。所以要保证vercel的服务器可以把域名解析到自家服务器,不然没法续签SSL证书
|
1. Netlify 可自定义证书,Vercel 不可以。所以要保证 vercel 的服务器可以把域名解析到自家服务器,不然没法续签 SSL 证书
|
||||||
2. Cloudflare的CI啥的做的挺垃圾,起步晚,很多东西不完善
|
2. Cloudflare 的 CI 啥的做的挺垃圾,起步晚,很多东西不完善
|
||||||
3. Netlify可以安装插件,推送sitemap和网站安全性检测这些我感觉挺好使
|
3. Netlify 可以安装插件,推送 sitemap 和网站安全性检测这些我感觉挺好使
|
||||||
|
|
||||||
最终线路设置
|
最终线路设置
|
||||||
|
|
||||||
* 电信和其他走Azure与Vercel
|
* 电信和其他走 Azure 与 Vercel
|
||||||
* 移动联通走Netlify的AWS节点,以及Vercel在JP的节点
|
* 移动联通走 Netlify 的 AWS 节点,以及 Vercel 在 JP 的节点
|
||||||
* 海外走Vercel的Anycast IP
|
* 海外走 Vercel 的 Anycast IP
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
---
|
---
|
||||||
title: 我的RSS方案与心得
|
title: 我的 RSS 方案与心得
|
||||||
date: 2021-05-10
|
date: 2021-05-10
|
||||||
lastmod: 2021-12-03
|
lastmod: 2021-12-03
|
||||||
cover: https://www.gethow.org/wp-content/uploads/2013/07/feed-297x140.jpg
|
cover: https://www.gethow.org/wp-content/uploads/2013/07/feed-297x140.jpg
|
||||||
description: 使用RSS已经一年有余,这种对信息的主动掌握让我获取信息的质量和密度都上升了一个台阶。最早是使用TTRSS做服务端,安卓手机使用FeedMe订阅,主要订阅的是有源的商业内容站点、个人博客以及其他人分享的使用Feed43或Feedburner压制的源。随着我逐渐加大RSS阅读在我闲暇、琐碎时间内的比重,我对RSS有了更高的期望和要求,便开始了对如何构建更高效、更易用的RSS方案的探索。
|
description: 使用 RSS 已经一年有余,这种对信息的主动掌握让我获取信息的质量和密度都上升了一个台阶。最早是使用 TTRSS 做服务端,安卓手机使用 FeedMe 订阅,主要订阅的是有源的商业内容站点、个人博客以及其他人分享的使用 Feed43 或 Feedburner 压制的源。随着我逐渐加大 RSS 阅读在我闲暇、琐碎时间内的比重,我对 RSS 有了更高的期望和要求,便开始了对如何构建更高效、更易用的 RSS 方案的探索。
|
||||||
draft: false
|
draft: false
|
||||||
tags:
|
tags:
|
||||||
- RSS
|
- RSS
|
||||||
@@ -49,17 +49,17 @@ RSSHub 除了提供众多现成的各类站点的 RSS 规则之外,也提供
|
|||||||
|
|
||||||
使用门槛比 RSSHub 略低,可视化界面还是比较友好的,不过新手上手还是会有点困难,了解了 Huginn 的工作原理和基本的 Liquid 语法之后就手到擒来了。
|
使用门槛比 RSSHub 略低,可视化界面还是比较友好的,不过新手上手还是会有点困难,了解了 Huginn 的工作原理和基本的 Liquid 语法之后就手到擒来了。
|
||||||
|
|
||||||
### 3. 使用feed43和rss-proxy这类可视化工具自助生成RSS链接
|
### 3. 使用 feed43 和 rss-proxy 这类可视化工具自助生成 RSS 链接
|
||||||
|
|
||||||
手写解析规则还是太麻烦,很多网页结构很简单根本没必要单独花时间写一堆解析规则,而且有些时候只是想临时订阅一段时间或是订阅个很小的网站,不想大费周章,选择feed43这类工具不失为一个轻量又便捷的选择。不过[feed43](https://feed43.com/)对免费账户创建的RSS并不保证稳定,时常无法连接甚至直接失效。在Github上发现一个不错的替代品[rss-proxy](https://github.com/damoeb/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 链接。生成的 RSS 链接包括的信息有目标网址、要订阅的目标列表的节点信息和输出格式(RSS/ATOM)等,也就是说,rss-proxy 并不像 feed43 会把解析的规则存储在服务端,它是直接编码在 url 里面的!rss-proxy 开源支持自部署,不想用它提供的公用实例也可以自建,迁移零门槛。rss-proxy 也支持调用无头浏览器渲染异步获取数据的网页,可玩性很高。
|
||||||
|
|
||||||
->>>> [rss-proxy公用实例](https://rssproxy-v1.migor.org/),可以点击体验下,还是很方便的
|
->>>> [rss-proxy 公用实例](https://rssproxy-v1.migor.org/),可以点击体验下,还是很方便的
|
||||||
|
|
||||||
使用了一段时间体验挺不错,有个小问题就是对UTF-8以外的编码不太友好。
|
使用了一段时间体验挺不错,有个小问题就是对 UTF-8 以外的编码不太友好。
|
||||||
|
|
||||||
## 0x05 解锁海外 RSS 源
|
## 0x05 解锁海外 RSS 源
|
||||||
|
|
||||||
@@ -83,7 +83,7 @@ google 了一番,没人写过我这个问题。。。人家都是爬虫绕过
|
|||||||
|
|
||||||
> [RSSman X](https://github.com/Colin-XKL/RSSmanX) 基于 docker-compsoe 提供容器化 TTRSS 与 RSSHUB 等组件的一键部署,整合实用组件为你带来最佳 RSS 体验
|
> [RSSman X](https://github.com/Colin-XKL/RSSmanX) 基于 docker-compsoe 提供容器化 TTRSS 与 RSSHUB 等组件的一键部署,整合实用组件为你带来最佳 RSS 体验
|
||||||
>
|
>
|
||||||
> **Feature: 简单一键部署,常用组件整合,自动更新支持,服务健康自检支持,海外站点 RSS 解锁**
|
> **Feature:简单一键部署,常用组件整合,自动更新支持,服务健康自检支持,海外站点 RSS 解锁**
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
title: 打造沉浸式互联网体验 「广告篇 - 上」
|
title: 打造沉浸式互联网体验「广告篇 - 上」
|
||||||
date: 2020-02-18
|
date: 2020-02-18
|
||||||
lastmod: 2020-04-29
|
lastmod: 2020-04-29
|
||||||
description: 继机械化、电气化、自动化的三次工业革命后,人类正迎来以互联网为载体的智能化时代。互联网与我们的生活结合得越来越紧密。除了装修房子,购置服装,优化家庭互联网体验也是提升生活质量的一个良好途径。本篇中我们将聚焦网页浏览来优化我们的互联网体验。
|
description: 继机械化、电气化、自动化的三次工业革命后,人类正迎来以互联网为载体的智能化时代。互联网与我们的生活结合得越来越紧密。除了装修房子,购置服装,优化家庭互联网体验也是提升生活质量的一个良好途径。本篇中我们将聚焦网页浏览来优化我们的互联网体验。
|
||||||
@@ -18,7 +18,7 @@ tags:
|
|||||||
前言
|
前言
|
||||||
--
|
--
|
||||||
|
|
||||||
“上网冲浪” 这样的词已经淡出公众的视野,身边的 10 后甚至 00 后都鲜有人熟悉这个词了。也许我们现在与互联网的交互并不局限于网页交互了,但我想,你也肯定不希望被自己偶然上某度查资料的时候被漫天的广告破坏了一天的心情。
|
“上网冲浪”这样的词已经淡出公众的视野,身边的 10 后甚至 00 后都鲜有人熟悉这个词了。也许我们现在与互联网的交互并不局限于网页交互了,但我想,你也肯定不希望被自己偶然上某度查资料的时候被漫天的广告破坏了一天的心情。
|
||||||
|
|
||||||
本系列将从以下几点从易到难,逐步优化日常的网页体验。无需任何代码基础,使用文中推荐的工具,小白亦可轻松上手!
|
本系列将从以下几点从易到难,逐步优化日常的网页体验。无需任何代码基础,使用文中推荐的工具,小白亦可轻松上手!
|
||||||
|
|
||||||
@@ -54,7 +54,7 @@ tags:
|
|||||||
安装好油猴插件后,你可以在 [Greasyfork.org](https://greasyfork.org/zh-CN/) 上下载各种黑科技般的脚本。安装成功后,油猴会在你进入符合条件的网页时自动启用对应的脚本。比如,你安装了 AC 的这个脚本,而这个网页是适配了某度的,那么当你进入某度的网页时,油猴就会自动启用这个脚本。快来领取属于你的纯净版度度吧。
|
安装好油猴插件后,你可以在 [Greasyfork.org](https://greasyfork.org/zh-CN/) 上下载各种黑科技般的脚本。安装成功后,油猴会在你进入符合条件的网页时自动启用对应的脚本。比如,你安装了 AC 的这个脚本,而这个网页是适配了某度的,那么当你进入某度的网页时,油猴就会自动启用这个脚本。快来领取属于你的纯净版度度吧。
|
||||||

|

|
||||||
|
|
||||||
前面介绍的几个,都只是借助第三方工具来屏蔽网页上特定的碍眼的元素。如果我们要阅读来自不同网站的新闻,为了获得机制纯净的阅读体验,难道要用 AdBlock 一个一个选中页面中除文章主体文字以外其他所有元素? 对于这种页面结构非常固定的一类网站,我们是否可以通过某种方式,来只提取页面主体的文字,以优化我们的阅读体验呢?
|
前面介绍的几个,都只是借助第三方工具来屏蔽网页上特定的碍眼的元素。如果我们要阅读来自不同网站的新闻,为了获得机制纯净的阅读体验,难道要用 AdBlock 一个一个选中页面中除文章主体文字以外其他所有元素?对于这种页面结构非常固定的一类网站,我们是否可以通过某种方式,来只提取页面主体的文字,以优化我们的阅读体验呢?
|
||||||
|
|
||||||
### 使用浏览器自带的阅读工具
|
### 使用浏览器自带的阅读工具
|
||||||
|
|
||||||
@@ -67,7 +67,7 @@ _[注:区别与 2020 年新的基于 Chromium 内核的新 Edge 浏览器,
|
|||||||
### 使用第三方阅读工具 - [简阅 SimpRead](http://ksria.com/simpread/)
|
### 使用第三方阅读工具 - [简阅 SimpRead](http://ksria.com/simpread/)
|
||||||
|
|
||||||

|

|
||||||
也许你买不起苹果,受不了 Win10,你依然可以通过安装第三方工具的方式享受纯净的阅读体验。简阅,正如他的名字,旨在为你提供简约的阅读视图。作者为了实现 “简单阅读” 这个小目标, 主动适配了数百个常见的文字为主体的网站,并设计为可以自动检测网页结构,对于漫天飞舞的各类热门冷门的小说网站、新闻网站,都可以自动识别并优化为适合阅读的页面。
|
也许你买不起苹果,受不了 Win10,你依然可以通过安装第三方工具的方式享受纯净的阅读体验。简阅,正如他的名字,旨在为你提供简约的阅读视图。作者为了实现“简单阅读”这个小目标,主动适配了数百个常见的文字为主体的网站,并设计为可以自动检测网页结构,对于漫天飞舞的各类热门冷门的小说网站、新闻网站,都可以自动识别并优化为适合阅读的页面。
|
||||||
|
|
||||||
恭喜你!利用上面介绍的几个工具,你已经可以在国内互联网环境中求的一份净土了。如果你感兴趣或是强迫症患者,欢迎前往 **打造沉浸式互联网体验 【广告篇 - 下】**
|
恭喜你!利用上面介绍的几个工具,你已经可以在国内互联网环境中求的一份净土了。如果你感兴趣或是强迫症患者,欢迎前往 **打造沉浸式互联网体验【广告篇 - 下】**
|
||||||
温馨提示:下篇介绍的内容的内容将略有一点偏硬核,需要一点点的动手能力哦~
|
温馨提示:下篇介绍的内容的内容将略有一点偏硬核,需要一点点的动手能力哦~
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
title: 论如何下载任意网站视频
|
title: 论如何下载任意网站视频
|
||||||
date: 2022-05-09
|
date: 2022-05-09
|
||||||
lastmod: 2022-10-25T04:26:12.121Z
|
lastmod: 2022-10-25T04:26:12.121Z
|
||||||
description: 视频已然成为当今互联网上信息传播的一个重要载体,有时会需要下载一些网上某个站点的视频插入PPT,或用作视频素材,无论是自己用或是给朋友帮忙,掌握一些使用的下载视频的小技巧总是不会错的,这里分享一些自用的小技巧,包括热门站点下载工具,以及应对冷门网站视频下载的技巧,应该可以覆盖99.9%的视频下载场景
|
description: 视频已然成为当今互联网上信息传播的一个重要载体,有时会需要下载一些网上某个站点的视频插入 PPT,或用作视频素材,无论是自己用或是给朋友帮忙,掌握一些使用的下载视频的小技巧总是不会错的,这里分享一些自用的小技巧,包括热门站点下载工具,以及应对冷门网站视频下载的技巧,应该可以覆盖 99.9% 的视频下载场景
|
||||||
draft: false
|
draft: false
|
||||||
categories:
|
categories:
|
||||||
- 技术
|
- 技术
|
||||||
@@ -15,11 +15,11 @@ tags:
|
|||||||
---
|
---
|
||||||
<!-- # 论如何下载任意网站视频 -->
|
<!-- # 论如何下载任意网站视频 -->
|
||||||
|
|
||||||
视频已然成为当今互联网上信息传播的一个重要载体,有时会需要下载一些网上某个站点的视频插入PPT,或者视频素材,无论是自己用抑或单纯是给朋友帮个忙,掌握一些使用的下载视频的小技巧总是不会错的,这里分享一些自用的小技巧,包括热门站点下载工具,以及应对冷门网站视频下载的技巧,应该可以覆盖99.9%的视频下载场景
|
视频已然成为当今互联网上信息传播的一个重要载体,有时会需要下载一些网上某个站点的视频插入 PPT,或者视频素材,无论是自己用抑或单纯是给朋友帮个忙,掌握一些使用的下载视频的小技巧总是不会错的,这里分享一些自用的小技巧,包括热门站点下载工具,以及应对冷门网站视频下载的技巧,应该可以覆盖 99.9% 的视频下载场景
|
||||||
|
|
||||||
## 热门网站电影/电视剧下载
|
## 热门网站电影/电视剧下载
|
||||||
|
|
||||||
这种其实建议直接找对应资源而不是从源站点下载,百度云,阿里云盘等找资源的方式我就不再赘述了,网上教程多的是。如果是电影资源或者是欧美、日韩的剧,可以搜索BT资源自行下载。
|
这种其实建议直接找对应资源而不是从源站点下载,百度云,阿里云盘等找资源的方式我就不再赘述了,网上教程多的是。如果是电影资源或者是欧美、日韩的剧,可以搜索 BT 资源自行下载。
|
||||||
|
|
||||||
这里安利一个油猴脚本:[豆瓣资源下载大师](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),可以在豆瓣的影视详情页右侧显示有资源的站点,非常方便
|
这里安利一个油猴脚本:[豆瓣资源下载大师](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),可以在豆瓣的影视详情页右侧显示有资源的站点,非常方便
|
||||||
|
|
||||||
@@ -34,61 +34,61 @@ tags:
|
|||||||
|
|
||||||
个人推荐的下载工具:
|
个人推荐的下载工具:
|
||||||
|
|
||||||
* [qBittorrent](https://www.qbittorrent.org):强推,老牌专业BT工具,有图形化界面,[支持Docker部署](https://hub.docker.com/r/linuxserver/qbittorrent)且带Web界面
|
* [qBittorrent](https://www.qbittorrent.org):强推,老牌专业 BT 工具,有图形化界面,[支持 Docker 部署](https://hub.docker.com/r/linuxserver/qbittorrent)且带 Web 界面
|
||||||
* [aria2](http://aria2.github.io):强大的命令行下载工具,灵活但上手成本略高,可[自行部署Web GUI界面](https://ariang.mayswind.net/zh_Hans/),也可使用[公开版本demo](http://ariang.mayswind.net/latest)
|
* [aria2](http://aria2.github.io):强大的命令行下载工具,灵活但上手成本略高,可[自行部署 Web GUI 界面](https://ariang.mayswind.net/zh_Hans/),也可使用[公开版本 demo](http://ariang.mayswind.net/latest)
|
||||||
* [Motrix](https://motrix.app):高颜值跨平台的下载工具,有漂亮的GUI界面,底层基于aria2
|
* [Motrix](https://motrix.app):高颜值跨平台的下载工具,有漂亮的 GUI 界面,底层基于 aria2
|
||||||
|
|
||||||
Tracker列表:
|
Tracker 列表:
|
||||||
|
|
||||||
* 一个独立的收集trackerlist的页面:<https://trackerslist.com/#/zh>
|
* 一个独立的收集 trackerlist 的页面:<https://trackerslist.com/#/zh>
|
||||||
* 通用tracker list:[ngosang/trackerslist](https://github.com/ngosang/trackerslist)
|
* 通用 tracker list:[ngosang/trackerslist](https://github.com/ngosang/trackerslist)
|
||||||
* 动漫资源tracker list:[animeTrackerList](https://github.com/DeSireFire/animeTrackerList) (๑•̀ㅂ•́)و✧
|
* 动漫资源 tracker list:[animeTrackerList](https://github.com/DeSireFire/animeTrackerList) (๑•̀ㅂ•́)و✧
|
||||||
|
|
||||||
## 热门站点普通视频资源下载
|
## 热门站点普通视频资源下载
|
||||||
|
|
||||||
如果是UGC内容,比如B站用户上传的视频,那么BT通常是没有资源的,需要单独从源网站下载。不过既然是热门站点,都有很多人造过轮子了,这里推荐几个
|
如果是 UGC 内容,比如 B 站用户上传的视频,那么 BT 通常是没有资源的,需要单独从源网站下载。不过既然是热门站点,都有很多人造过轮子了,这里推荐几个
|
||||||
|
|
||||||
**[YouTube-DL](https://github.com/ytdl-org/youtube-dl)**
|
**[YouTube-DL](https://github.com/ytdl-org/youtube-dl)**
|
||||||
|
|
||||||
一款强大的命令行视频下载工具,别看人家名字只写了youtube,但其实国内爱优腾都是支持的。命令行调用也非常简洁,[知乎也有教程](https://github.com/ytdl-org/youtube-dl)需要的话可以瞅瞅。
|
一款强大的命令行视频下载工具,别看人家名字只写了 youtube,但其实国内爱优腾都是支持的。命令行调用也非常简洁,[知乎也有教程](https://github.com/ytdl-org/youtube-dl)需要的话可以瞅瞅。
|
||||||
|
|
||||||
**[YT-DLP(YouTube DownLoader Plus)](https://github.com/yt-dlp/yt-dlp)**
|
**[YT-DLP(YouTube DownLoader Plus)](https://github.com/yt-dlp/yt-dlp)**
|
||||||
|
|
||||||
YouTube-DL的一个分支,包括一些bug修复和增强的特性
|
YouTube-DL 的一个分支,包括一些 bug 修复和增强的特性
|
||||||
|
|
||||||
**[Lux(原名Annie)](https://github.com/iawia002/lux)**
|
**[Lux(原名 Annie)](https://github.com/iawia002/lux)**
|
||||||
|
|
||||||
Golang编写的一个视频下载工具,同样支持国内站点
|
Golang 编写的一个视频下载工具,同样支持国内站点
|
||||||
|
|
||||||
**[硕鼠](https://www.flvcd.com/index.htm)**
|
**[硕鼠](https://www.flvcd.com/index.htm)**
|
||||||
|
|
||||||
很早之前就出的一款免费视频下载合并工具,主要针对国内视频网站,但是像腾讯视频这种之前发过律师函,人家就迫不得已取消了支持。Windows版,有界面,对于不是那么热门但是稍微又有点名气的网站支持较好
|
很早之前就出的一款免费视频下载合并工具,主要针对国内视频网站,但是像腾讯视频这种之前发过律师函,人家就迫不得已取消了支持。Windows 版,有界面,对于不是那么热门但是稍微又有点名气的网站支持较好
|
||||||
|
|
||||||
## 冷门站点普通视频资源下载
|
## 冷门站点普通视频资源下载
|
||||||
|
|
||||||
冷门站点的资源得我们自己动手了,不过利用浏览器的开发人员工具还是很容易获取的资源的。右键找到开发人员选项打开开发人员工具,可以点击左上角的按钮选择网页元素,找到`<video>`标签,里面一般会有一个链接地址,复制地址打开即可。
|
冷门站点的资源得我们自己动手了,不过利用浏览器的开发人员工具还是很容易获取的资源的。右键找到开发人员选项打开开发人员工具,可以点击左上角的按钮选择网页元素,找到`<video>`标签,里面一般会有一个链接地址,复制地址打开即可。
|
||||||
|
|
||||||
这种简单的视频嵌入很容易下载,浏览器工具也很容易嗅探到。比如可以使用`专业视频下载工具`插件,你可以[访问360插件中心下载](https://ext.chrome.360.cn/webstore/detail/noaehhegaeigebicejggjdecdkfphced)。这种工具很多,这里不再赘述
|
这种简单的视频嵌入很容易下载,浏览器工具也很容易嗅探到。比如可以使用`专业视频下载工具`插件,你可以[访问 360 插件中心下载](https://ext.chrome.360.cn/webstore/detail/noaehhegaeigebicejggjdecdkfphced)。这种工具很多,这里不再赘述
|
||||||
|
|
||||||
链接后缀为`mp4`的一般来说都是说明该网页上面的视频只是从那一个文件加载的,没有经过分片和其他处理。如果没有后缀名,或者是`flv`、`ts`或者链接含有`m3u8`字样的,说明该网页的资源是经过分片的,需要我们动点手段。
|
链接后缀为`mp4`的一般来说都是说明该网页上面的视频只是从那一个文件加载的,没有经过分片和其他处理。如果没有后缀名,或者是`flv`、`ts`或者链接含有`m3u8`字样的,说明该网页的资源是经过分片的,需要我们动点手段。
|
||||||
|
|
||||||
## 冷门站点m3u8动态分片视频资源下载
|
## 冷门站点 m3u8 动态分片视频资源下载
|
||||||
|
|
||||||
以中国庭审网的庭审录像视频为例,打开开发者工具定位到视频的部分发现video标签里面的url很奇怪,访问该链接也并不能访问到有效的视频。这种网页一般都是通过m3u8来下发分片文件的信息
|
以中国庭审网的庭审录像视频为例,打开开发者工具定位到视频的部分发现 video 标签里面的 url 很奇怪,访问该链接也并不能访问到有效的视频。这种网页一般都是通过 m3u8 来下发分片文件的信息
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
打开开发者工具的网络选项卡,监听网络活动,点击播放视频,会多出来很多条目分别代表每一个网络请求。在搜索框输入m3u8来进行过滤。定位到该请求后可以在新标签页打开,保存这个m3u8文件。
|
打开开发者工具的网络选项卡,监听网络活动,点击播放视频,会多出来很多条目分别代表每一个网络请求。在搜索框输入 m3u8 来进行过滤。定位到该请求后可以在新标签页打开,保存这个 m3u8 文件。
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
之后我们可以利用ffmpeg载入这个m3u8文件并进行合并,如有需要可一并进行转码操作
|
之后我们可以利用 ffmpeg 载入这个 m3u8 文件并进行合并,如有需要可一并进行转码操作
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
ffmpeg -i xxxx.m3u8 -c xxxx.mp4
|
ffmpeg -i xxxx.m3u8 -c xxxx.mp4
|
||||||
```
|
```
|
||||||
|
|
||||||
如果报错提示不支持的protocol,那么需要再加个参数让ffmpeg使用http下载
|
如果报错提示不支持的 protocol,那么需要再加个参数让 ffmpeg 使用 http 下载
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
ffmpeg -protocol_whitelist concat,file,http,https,tcp,tls,crypto -i xxxx.m3u8 -c copy xxxx.mp4
|
ffmpeg -protocol_whitelist concat,file,http,https,tcp,tls,crypto -i xxxx.m3u8 -c copy xxxx.mp4
|
||||||
@@ -104,7 +104,7 @@ ffmpeg -protocol_whitelist concat,file,http,https,tcp,tls,crypto -i xxxx.m3u8 -c
|
|||||||
ffmpeg -i xxxx.mp4
|
ffmpeg -i xxxx.mp4
|
||||||
```
|
```
|
||||||
|
|
||||||
使用ffmepg提取视频中的音频部分,方便后续处理。比如要生成字幕或是转写为文本,省的上传几百兆的视频文件。[网易见外工作台](https://jianwai.youdao.com/)做这些很方便,而且免费额度也很足,安利一波
|
使用 ffmepg 提取视频中的音频部分,方便后续处理。比如要生成字幕或是转写为文本,省的上传几百兆的视频文件。[网易见外工作台](https://jianwai.youdao.com/)做这些很方便,而且免费额度也很足,安利一波
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
ffmpeg -i xxxx.mp4 -vn -codec copy xxxx.aac
|
ffmpeg -i xxxx.mp4 -vn -codec copy xxxx.aac
|
||||||
@@ -112,10 +112,10 @@ ffmpeg -i xxxx.mp4 -vn -codec copy xxxx.aac
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
解析并下载m3u8视频的其他方案
|
解析并下载 m3u8 视频的其他方案
|
||||||
|
|
||||||
* 使用硕鼠解析:https://www.flvcd.com/index.htm
|
* 使用硕鼠解析:https://www.flvcd.com/index.htm
|
||||||
* 使用Chrome插件:[CoCoCut](https://chrome.google.com/webstore/detail/video-downloader-cococut/gddbgllpilhpnjpkdbopahnpealaklle),[猫抓 (cat-catch)](https://github.com/xifangczy/cat-catch)
|
* 使用 Chrome 插件:[CoCoCut](https://chrome.google.com/webstore/detail/video-downloader-cococut/gddbgllpilhpnjpkdbopahnpealaklle),[猫抓 (cat-catch)](https://github.com/xifangczy/cat-catch)
|
||||||
* 使用油猴脚本:[m3u8-downloader](https://greasyfork.org/zh-CN/scripts/440577-m3u8-%E8%A7%86%E9%A2%91%E4%B8%8B%E8%BD%BD-vip%E8%A7%A3%E6%9E%90%E8%A7%86%E9%A2%91%E4%B8%8B%E8%BD%BD-%E7%BD%91%E7%AB%99%E8%A7%86%E9%A2%91%E4%B8%8B%E8%BD%BD),配套工具[地址](https://github.com/Momo707577045/m3u8-downloader)
|
* 使用油猴脚本:[m3u8-downloader](https://greasyfork.org/zh-CN/scripts/440577-m3u8-%E8%A7%86%E9%A2%91%E4%B8%8B%E8%BD%BD-vip%E8%A7%A3%E6%9E%90%E8%A7%86%E9%A2%91%E4%B8%8B%E8%BD%BD-%E7%BD%91%E7%AB%99%E8%A7%86%E9%A2%91%E4%B8%8B%E8%BD%BD),配套工具[地址](https://github.com/Momo707577045/m3u8-downloader)
|
||||||
* 使用软件:[NeatDownloadManager](http://www.neatdownloadmanager.com/index.php/en/)
|
* 使用软件:[NeatDownloadManager](http://www.neatdownloadmanager.com/index.php/en/)
|
||||||
|
|
||||||
|
|||||||
@@ -82,7 +82,7 @@ V2.2 @2019.3.15 USB 端口修补
|
|||||||
V2.3 @2019.3.15 修补声卡
|
V2.3 @2019.3.15 修补声卡
|
||||||
--------------------
|
--------------------
|
||||||
|
|
||||||
用了一段时间发现之前弄好的声卡驱动只能外放,插上耳机就没声音了。经过一番探索,大致了解到 Layout-id 是布局文件,记录了不同的端口之间的映射关系。我这种情况是属于端口映射不当,耳机孔的输入与输出没能够正确映射。改了下声卡注入的 Platform-ID ,解决了问题。当晚就用黑苹果看了个电影。Mac 的音效比较 清亮,也没有什么破音的现象,声卡驱动的很好。接下来可以放心的耍 Logic Pro X 了哈哈(当初想装黑苹果就是冲着 Logic Pro X 和 XCode 来的)
|
用了一段时间发现之前弄好的声卡驱动只能外放,插上耳机就没声音了。经过一番探索,大致了解到 Layout-id 是布局文件,记录了不同的端口之间的映射关系。我这种情况是属于端口映射不当,耳机孔的输入与输出没能够正确映射。改了下声卡注入的 Platform-ID,解决了问题。当晚就用黑苹果看了个电影。Mac 的音效比较 清亮,也没有什么破音的现象,声卡驱动的很好。接下来可以放心的耍 Logic Pro X 了哈哈(当初想装黑苹果就是冲着 Logic Pro X 和 XCode 来的)
|
||||||
|
|
||||||
> 声卡 platform-id 修改为 15,外放 OK 麦克风 OK 耳机 OK
|
> 声卡 platform-id 修改为 15,外放 OK 麦克风 OK 耳机 OK
|
||||||
> 耳机麦克风 Failed
|
> 耳机麦克风 Failed
|
||||||
@@ -90,7 +90,7 @@ V2.3 @2019.3.15 修补声卡
|
|||||||
暂告一段落
|
暂告一段落
|
||||||
-----
|
-----
|
||||||
|
|
||||||
黑苹果的显示 + 声音 + 网络等基本问题已经解决,虽然还 不是很完美,但是用 Logic 和 Xcode 已经没问题了 ,后续有时间 有需要 再继续折腾。
|
黑苹果的显示 + 声音 + 网络等基本问题已经解决,虽然还 不是很完美,但是用 Logic 和 Xcode 已经没问题了,后续有时间 有需要 再继续折腾。
|
||||||
|
|
||||||
Logic Pro X +USB 连接 iPad 上 Logic Remote 爽到飞起!看来不需要买 MIDI 键盘了,准备把资金换个大点的、更快的固态,把黑苹果装上去~
|
Logic Pro X +USB 连接 iPad 上 Logic Remote 爽到飞起!看来不需要买 MIDI 键盘了,准备把资金换个大点的、更快的固态,把黑苹果装上去~
|
||||||
|
|
||||||
|
|||||||
@@ -4,9 +4,9 @@ date: 2022-08-07
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 通过RSS订阅文章更新
|
## 通过 RSS 订阅文章更新
|
||||||
|
|
||||||
将RSS资源地址加入到你的RSS阅读器中即可订阅
|
将 RSS 资源地址加入到你的 RSS 阅读器中即可订阅
|
||||||
|
|
||||||
你可以添加这个地址来订阅所有文章
|
你可以添加这个地址来订阅所有文章
|
||||||
https://blog.colinx.one/index.xml
|
https://blog.colinx.one/index.xml
|
||||||
@@ -16,14 +16,14 @@ https://blog.colinx.one/categories/%E6%8A%80%E6%9C%AF/index.xml
|
|||||||
|
|
||||||
|
|
||||||
## 订阅评论
|
## 订阅评论
|
||||||
博客评论是基于Github Issue的,你在某篇文章下使用Github账户登录进行评论后,后续所有的新评论和回复会自动发到你的邮箱,不用担心错过评论回复。
|
博客评论是基于 Github Issue 的,你在某篇文章下使用 Github 账户登录进行评论后,后续所有的新评论和回复会自动发到你的邮箱,不用担心错过评论回复。
|
||||||
|
|
||||||
## 通过邮箱订阅文章更新
|
## 通过邮箱订阅文章更新
|
||||||
暂未开放,有足够多的需求时再考虑开放
|
暂未开放,有足够多的需求时再考虑开放
|
||||||
|
|
||||||
|
|
||||||
## 通过浏览器消息订阅文章更新
|
## 通过浏览器消息订阅文章更新
|
||||||
使用Push API + Service Worker实现
|
使用 Push API + Service Worker 实现
|
||||||
|
|
||||||
|
|
||||||
暂未开放,有足够多的需求时再考虑开放
|
暂未开放,有足够多的需求时再考虑开放
|
||||||
|
|||||||
Reference in New Issue
Block a user