0%

今天在知乎上看到一个短篇,非常震撼。
假设外星文明将他们的科技全部传授给人类,以人类的智力能够理解吗? - 怅望云水遥的回答 - 知乎
https://www.zhihu.com/question/53292891/answer/134941112

为了防止突然消失,现在备份如下,侵删。

赵应生还依稀记得高中物理老师在面前跳脚的样子。
“不就是一个带电粒子在磁场中的运动吗?我都讲了无数遍了,为什么你就是理解不了呢?”
这怒吼当然不是冲着赵应生来的。赵应生作为物理竞赛生,这种问题根本就不用听。老师是在和他的同桌生气。
同桌是一个个子娇小的女生,面对老师的怒吼,没有丝毫畏惧,只是平淡又礼貌地重复:“张老师,实在抱歉,这个粒子在磁场中的速度变化我还没有理解,请您再讲一遍。”
张老师深深吸了一口气,压住不耐烦的情绪:“这样吧,我们先不要耽误其他同学的课堂时间,等下下课你来我办公室,我单独给你讲这个问题。”
同桌脸上古井不波,淡淡地回应:“好的,谢谢老师。”
赵应生的同桌绝非什么不认真的学生,相反她十分优秀,语文英语生物,可以轻松甩开第二名很多分。但是她的物理,在这个实验班里只能排到中下游。但是教物理的张老师虽然在讲无数遍题之后有不耐烦的情绪,也不能真正对她发火,因为她的态度,绝对是最端正的那个,甚至于她的物理笔记,都曾被班主任拿去当过笔记的范本。
在大课间的最后几分钟,赵应生去办公室交物理作业,还没有进门,就听见物理老师略带哭腔的声音:“我真的不知道怎么讲你才能明白了。”
赵应生在门口愣了一下,就听见一个平静的声音响起:“好的,谢谢老师,我明天这个时间继续来找您。”然后办公室的门开了。
同桌冲赵应生点点头,面无表情地离去,身后的赵应生看着生无可恋的物理老师,一时间不知道怎么安慰老师。
想着想着,赵应生嘴角浮现出一丝笑意,高中时代明快亮丽的学生生活,仿佛又浮现在眼前。
直到身后沉重的巨门合上时发出的轻响,才把他拉回了现实。
那已经是六十年前的事了。
现在的他,已经是年逾古稀的老人,但也同时是整个地球,最有资格站在这里的人。
他的身旁,一名五十岁的中年人轻轻搀扶着他,这是他带的第一届研究生,同样也是这个领域享誉全球的大家。
所有人都没有发出声音,沉默地望着面前一望无际的黑暗。
在黑暗中,突然亮起了一道光芒。
一瞬间光芒炸响,整个空间中都是刺目的蓝芒。无法具体描述那种亮度,仿佛只有一千个太阳,才能与之争辉。
没有人能解释为什么在这样的明亮之下,所有人的眼睛都没有收到任何伤害,甚至那些站在这里的垂暮老人,连一滴应激的泪水都没有流下。
就在这铺天盖地的光芒中,一个声音响起。轻柔又温和,听上去悦耳动听,一瞬间就掳掠了在场所有人的好感。
“你们好,人类中的智者,很高兴见到你们。”
“非常抱歉,我的文明在宇宙中,只是处于中等地位,以我们的科技水平,还没有能力在不改造你们大脑之前,直接向你们的大脑输送信息,所以只能采取这种震动空气的方式,向你们传递信息,希望这个沙哑的声音,没有令你们感到厌烦。”
大家善意地微笑起来。
“虽然我无法向你们大脑输送,但是读取你们神经元里的电流是可以做到的。也就是说,”这个声音继续优雅地说着话,“你们如果想和我交流,直接想象自己要说的话就好,我能听到。这样,可以节约很多时间。”
“那么,开始吧。”
在下一个瞬间,声音又响了起来:“来自法国的巴蒂斯塔博士,您的思想在在场所有人中最先形成电流,我将先为您讲解可控核聚变装置的理论基础和构建。哦,不需要您亲自拿出纸笔,讲义将会发给在场所有人。”
赵应生手中一沉,他惊讶的发现一个文件夹已经出现在手中。声音已经变成了字正腔圆的法语,元音如同汤圆一样在这声音中滑动,虽然在场一多半人都听不懂法语,但是那优雅的声调,让大家都眯起了眼睛。每个人口袋中的录音设备都在运转,要记载下这人类历史上,最巨大的一次机遇。
“来自日本的日向天羽博士,接下来是您,我将为您讲解强人工智能的理论基础以及原理,讲义同样会发给在场所有人。”
中年的日本博士深吸了一口气,说道:“我的团队中有各位外籍成员,请您用英语来讲解。”
“好的,如您所愿。”有了日向天羽开头,之后的每一位专家无一例外,都要求以英语来讲解,声音都温和地答应了。
声音悦耳地在这片蓝色的空间中震荡。除此之外,寂静无声。而在同步直播的外界,世界上每一个研究室,几乎都陷入了疯狂。
赵应生又开始恍惚了,眼前又仿佛出现了物理老师无奈的脸庞。他摇摇头,心里嘲笑自己在这样的场合,居然只能反复想起这个景象。
终于,声音又一次响起,这一次,终于轮到他了。
“请在心里想出您的问题,我会帮您解答。”声音轻轻地道。赵应生定了定神,默然想象着自己的问题。地球上,无数理论物理学家期待地看着屏幕,如同朝圣。 “对不起,请您换一个问题,这个问题,我无法为您解答。”“为何?”赵应生忍不出出声,打破了寂静。
“我的文明只是宇宙间一个中等文明,还没有能够掌握这个问题,所以我不知道,无法为您解答,非常抱歉。”
“好吧,那么请告诉我大一统模型是怎么样的。”这次声音沉默了许久。
“对不起,现在我依然无法为您,以及您的种族解答,请换个问题。”
“什么意思?”赵应生的声音有一丝急促,“你们没有掌握大一统模型吗?”
“不,三十亿年前我的文明就已经掌握大一统模型。”
“那为什么不能告诉我们,难道你们文明中对于基础物理的传播有什么限制吗?”
“和其他技术一样,没有限制。”声音饱含歉意,“我没有任何冒犯的意思,但是您的种族暂时没有理解它的智慧,实在很对不起。”
“怎么可能有不能理解的知识?”赵应生开始有一些愤怒了,“您的意思是,我们人类的寿命来不及掌握这样的知识就会结束吗?”
“您的种族寿命确实不足以掌握,但是问题并不在这里。”声音依然小心翼翼,就像怕伤害面前的种族的自尊一样,“就算是您种族最智慧的那些个体,给他们无尽的寿命,直到宇宙终结,也理解不了。”
“你的意思就是好比,我们无论教一个猴子多久,它也无法解答大学的微积分吗?”一直沉默的美国博士终于忍不住出声。
“那怎么能一样呢?”日向天羽也忍不住说话了,“我们和猴子又无法沟通,猴子也根本不知道什么是学习,但是我们和这个文明能够交流,也能…”
声音轻轻地打断了他:“不,以你们的文明程度,再过不到一千年,就能发明和哺乳纲灵长目猴科交流的机器,那个时候,你们就会发现,如果不改造猴子的大脑,教到宇宙末日,它也不会解微积分。”
“再重申一遍,我真的没有冒犯您们种族的意思,”声音叹道,“我的文明在原子时代的时候,智慧平均值还略低于您的种族,但是,那已经是三十亿年前的事情了。我们抛开科技实力不谈,仅仅谈个体的生物智慧性质,我的种族个体智慧,和您的智慧差距,就等同于您和贵星球三十亿前的生物智慧差距。”
在场的人都是博学多才的人士,所有人都没有说话,只是被这个时间的长度所震惊。那个时候的地球,还处在隐生宙太古代,那时只有一望无际的远古海洋,和漂浮在洋流里的单细胞生物,就连大众所熟悉的寒武纪,也还需要足足二十五个亿年才能到来。
而就在地球还是这样的太古洪荒时代的时候,面前的这个种族,已经在星空深处写下了E=mc²的质能公式。“
而且有科技的助力,生物的智慧其实是加速进化的。而就算不考虑到生物的加速进化,我们之间的智力差距也远大于您的大脑和三十亿年前的细胞拟核的差距,我没有夸大其词,真的对不起。或许有文明能教会您大一统模型,但我的文明做到能和您们交流,已经是目前科技的极限了。当然,您愿意改造大脑的话,我还是可以勉强教会您的。”
赵应生如同被抽离了灵魂一样说不出话来:“那,也就是说,我的种族永远不会达到您那样的高度了?”
“不,”声音笑了起来,“当然不是。我说过了,我的种族在原子时代的时候,个体的平均智力还低于您的种族,您的种族当然可以达到我们的高度,只是需要时间,尽管要以亿年来计算。我只是说,您的种族,【目前】的智慧永远无法理解这个模型。或许我百万年之后再来时,您的种族已经自己破解了这个模型,毕竟,破解大一统模型需要的科技,离原子时代也不算太远。”
“好的,谢谢您。”接受了事实的赵应生平静了下来,但还有着哀伤,那是一个理论物理学家知道自己此生已经无法理解大一统模型的哀伤。也许百万年后的子孙会理解这个模型,但是又如何呢?这么久的时间,生殖隔离都会出现,那时的人和如今的人,在生物学上,已经是两个物种了。
“请告诉我,相对论和量子力学统一的正确理论。”他哀伤的声音终于响起。
“好的,如您所愿。”声音依然饱含歉意。
最后,告别的时间来临了。
在场的每个人都知道,这一次见面,人类的科技跳跃了几个千年,还需要时间去消化这些知识。而下一次这个声音再次降临时,在场所有人的墓碑都早就风化成砂砾。
“能最后问您一个问题吗?”出门前,赵应生站住了脚步。往出走的众人,也都站住了脚步。
“可以,只要无关科技。”声音温和道。
“您的种族,在宇宙中算中等的文明,那么我们人类目前呢?”
声音微笑道:
“也是中等的文明。”

上一次更新博客已经是一年多以前了。时光荏苒,很久没更新博客了。由于Wordpress的维护和打理实在过于花费时间,今后采用Hexo来编写博客。
目前Blog还比较简陋,有待装修。日后我也会把以前的一些比较重要的文章搬运过来。
总之,随缘更新,大家就不要太指望了hhh

Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.

Quick Start

Create a new post

1
$ hexo new "My New Post"

More info: Writing

Run server

1
$ hexo server

More info: Server

Generate static files

1
$ hexo generate

More info: Generating

Deploy to remote sites

1
$ hexo deploy

More info: Deployment

[toc] 因为博客是使用Markdown编辑的,此文仅作查询备用之用途。

Markdown介绍

Markdown是一种轻量级标记语言,创始人为John Gruber。它允许人们使用易读易写的纯文本格式编写文档,然后转换成有效的XHTML(或者HTML)文档。[4]这种语言吸收了很多在电子邮件中已有的纯文本标记的特性。 由于Markdown的轻量化、易读易写特性,并且对于图片,图表、数学式都有支持,当前许多网站都广泛使用Markdown来撰写帮助文档或是用于论坛上发表消息。如_GitHub、Reddit、Diaspora、Stack Exchange、OpenStreetMap 、SourceForge、简书_等,甚至还能被使用来撰写电子书。

格式

Markdown语法主要分为如下几大部分: 标题,段落,区块引用,代码区块,强调,列表,分割线,链接,图片,反斜杠 \,符号’`‘。

标题

1)使用=-标记一级和二级标题。

1
2
3
4
一级标题
========
二级标题
--------

效果:

一级标题

二级标题

2)使用#,可表示1-6级标题(注意#和标题中间有空格)

1
2
3
4
5
6
# 一级标题
## 二级标题
### 三级标题
#### 四级标题
##### 五级标题
###### 六级标题

效果:

一级标题

二级标题

三级标题

四级标题

五级标题
六级标题

段落

段落的前后要有空行,所谓的空行是指没有文字内容。若想在段内强制换行的方式是使用两个以上空格加上回车(引用中换行省略回车)。

区块引用

在段落的每行或者只在第一行使用符号>,还可使用多个嵌套引用,如:

1
2
> 区块引用
>> 嵌套引用

效果:

区块引用

嵌套引用

代码区块

代码区块的建立是在每行加上4个空格或者一个制表符(如同写代码一样)。如 普通段落:

1
2
3
4
void main() %注意前面有4个空格
{
printf("Hello, Markdown.");
}

代码区块:

1
2
3
4
void main()
{
printf("Hello, Markdown.");
}

注意:需要和普通段落之间存在空行。

强调

在强调内容两侧分别加上*或者_,如

1
2
3
*斜体*,_斜体_
**粗体**,__粗体__
***斜粗体***,___斜粗体___

效果: 斜体_,_斜体 粗体粗体 斜粗体斜粗体

列表

使用·+、或-标记无序列表,如:

1
-(+*) 第一项 -(+*) 第二项 - (+*)第三项

注意:标记后面最少有一个_空格_或_制表符_。若不在引用区块中,必须和前方段落之间存在空行。 效果:

  • 第一项
  • 第二项
  • 第三项

有序列表的标记方式是将上述的符号换成数字,并辅以.,如:

1
2
3
1. 第一项
2. 第二项
3. 第三项

效果:

  1. 第一项
  2. 第二项
  3. 第三项

分割线

分割线最常使用就是三个或以上*,还可以使用-和_。

链接

使用 [描述](链接地址) 为文字增加外链接。 举例:

1
[Ekkles的博客](https://www.ekkles.com)

效果: Ekkles的博客

图片

添加图片的形式和链接相似,只需在链接的基础上前方加一个!。 例子:

1
![zybuluo](https://www.zybuluo.com/static/img/my_head.jpg)

效果: zybuluo

反斜杠\

相当于反转义作用。使符号成为普通符号。

删除线

使用 ~~ 表示删除线。 这是一段错误的文本。

参考资料

Markdown-Wikipedia:https://zh.wikipedia.org/wiki/Markdown Markdown 基本语法:https://github.com/younghz/Markdown

2020年啦,现在手机的摄像水平越来越强了,而拍摄的照片也越来越占空间了。而随着电子设备更换的越来越频繁,把照片存到云上自然也成为了重要且方便的选择。在2018年以前,我一直在使用Android手机,所以我一直使用的是Google Photos作为自己的相册管理App,它拥有无限制数量的高质量照片存储和强大的分类识别功能。现在我使用iOS的设备相对多一些,因而迁移到了iCloud。当然在iOS上可以也可以使用Google Photos啦,但是由于在国内Google需要使用科学上网,并不是那么好用。而且考虑到Google Photo存的是细微压缩后的图片,而iCloud存的是原图。再有就是iCloud的50G的套餐只需要0.99USD每月。考虑到我是几乎不会自拍的直男,50G应该够我用一辈子了,而且还可以方便地使用苹果设备的iCloud的备份功能。何乐而不为呢?于是从今年开始我一直在使用0.99USD一月的50GB套餐。

起因

我家里人的iPhone的空间不多了,而他的照片又非常多,这时就可以一起使用家庭共享的iCloud空间。 但是有遇到了一个巨大的问题,由于中国区的iCloud托管在云上贵州,而且我的很多常用App在国区都没有,我从很早以前开始就使用的是美区的Apple账号,而他使用的自然是中国区的Apple账号了。直接开启家庭共享,通过iMessage的方式发送邀请,会提示需要迁移到同一大区才能加入家庭共享。这意味着我们不能跨区进行家庭共享,而只能被迫切换国家吗?显然不是的。 无法切换

解决方案

我在解决的过程中尝试了很多的方案都没能成功,为避免误导,这里就不一一表述了,这里来讲一下我成功的经验。 最重要的办法就是如上面的错误所示,我们需要让iTunes在同一个国家/区域,才能组成同一个家庭共享。重点见下面的注意事项。 具体步骤如苹果官网所述,注意要先添加家庭成员,然后再添加iCloud云存储。 1. 在 iOS 或 iPadOS 设备上:前往“设置”>“[您的名字]”,然后轻点“设置家人共享”。按照屏幕上的说明操作即可。 2. 轻点“添加家庭成员”=>轻点“通过iMessage信息邀请”(可选择“亲自邀请”,这要求对方提供Apple ID和密码)=>填写收件人,并轻点“发送”按钮 3. 轻点“iCloud 储存空间”=>按照相关步骤共享您现有的方案,或在必要时升级至 200 GB 或 2 TB 方案。=>通过“信息”告诉使用现有付费储存空间方案的所有家庭成员,他们现在可以改为使用您的共享储存空间方案。 图文教程可见文后附的SMZDM的文章。 注意事项: 1. iCloud和iTunes/App Store的账号体系是分开的。所以,我们可以使希望加入同一家庭组的两个账号使用同区的Apple ID(即同国家)登陆iTunes/App Store。这样在验证加入家庭组的时候就不会提示在不在同一个国家/地区了。加入家庭成员后iTunes/App store的账号就可以换成你自己想用的了。 2. 虽然网上有很多文章说这个功能需要iOS 13才能完成,但是经过我的测试,即便双方有一方为iOS 12也可以完成迁移的。 3. 如果以上方式都不能成功,建议不要使用iMessage邀请的方法,而使用亲自邀请的方式,手动输入该成员的Apple ID和密码。我就是这样申请成功的。

效果

注册完成之后,我们双方都可以看到iCloud空间变为200GB,且总空间大小共享。而家庭成员相互之间的照片是互相不可见的。 家庭共享 关于家庭组可以共享的内容,iCloud存储空间、位置共享和屏幕使用时间理论上都是可以的。由于跨区的原因,App是没办法共享的,Apple Music由于我并未订购Apple Music的任何套餐,所以并未进行测试。 关于云上贵州的问题,我是美区的ID,因此并未显示任何迁移到云上贵州的提示。实际上,这个家庭共享只是共享200GB/2TB这个数字而已,你的数据还是和你的账号一样存在原来的地方的,担心这个问题的朋友可以放轻松了。

参考资料

支持跨区共享,与家人共享iCloud存储空间方案:https://post.smzdm.com/p/aqnlp392/ 一个美区 AppleID 开通 iCloud,家庭共享 iCloud 空间给另一个中国区的 AppleID:https://www.v2ex.com/t/426495 设置“家人共享”:https://support.apple.com/zh-cn/HT201088 Family Sharing now allows members from different countries:https://www.reddit.com/r/apple/comments/89twxd/family_sharing_now_allows_members_from_different/

这篇文章拖了一周了,鸽子即正义哈哈哈哈。考虑到2019年最后一天了,赶紧整理整理发出来了。 [toc]


起因

家里给爸妈用的电脑已经用了好多年了,硬盘的寿命快到期了,恰逢双十二打折,于是决定配一台新的机器。AMD的Ryzen今年势头很猛,我父母也不打游戏,所以带集显的3400G就成了首选。由于我对于京东的物流和售后印象十分深刻,于是我全套配置都在京东上购买的。

AMD R5 3400G搭配华硕B450M-K主板套装(英强科技专营店) 1269元 铂胜(Ballistix)8GB 3000MHz DDR4*2 498元 西部数据(WD) SN500 250GB NVME SSD 299元 西部数据(WD) 蓝盘 2TB 379元 AOC 23.8寸 AH-IPS硬屏(HDMI版)I2490VXH/BS 699元 先马(SAMA)额定450W金牌电源 249元 追风者(PHANTEKS) P300机箱 199元 共计 3592元

配合双十二的优惠券,最后大概只花了3300元左右。当时当然是觉得美滋滋啊,毕竟纸面数据廉价的同时性能也有保障。几乎所有配件都是从京东自营上购买的,只有板U套餐是从一个叫英强科技的京东第三方购买的,该店还有“京东放心购”的标志,因此我也没有在意。于是乎,果然翻车了。 英强科技专营店

翻车

首先,华硕这主板吧,本来就可以说是丐中丐了,鉴于我是第一次购买AMD的主板CPU,因此我也不确定是AMD的风扇安装过于麻烦还是这个主板的问题(后来我重新购买了微星主板之后发现,是主板的公差问题),由于主板本身安装CPU风扇的孔和风扇并不完全匹配,而且螺丝本身在拧的时候也会发出奇怪的兹拉声。光是安装风扇就装了整整2个小时,我又比较懒,所以直到买回来的第4天我才慢悠悠地把电脑安装好。不安不要紧,安好之后显示器不亮,我傻眼了。第一时间我联系了客服,客服觉得是我内存的问题,让我换一个插槽,我操作后无效。紧接着他们要求我更换别的品牌的内存。次日我更换了从朋友那里借来的内存,然而依旧无法开机。我也听说B450部分主板由于BIOS没更新不支持3代Ryzen——问题链接 ,可是店家却矢口否认,一口咬死是内存品牌问题。后来店家说觉得如果是CPU和主板的问题就发快递回去让他们检测,如果是质量问题可以退(换)货。 直到这个时候,我也没想太多,我就打算给寄回去,寄回去之前我长了个心眼,在搜索引擎上搜索了一下这家店的链接,不搜不要紧,一搜给我恶心坏了。 京东英强哄骗客户发货不退款 京东第三方英强科技专营店哄骗客户发货不退款无理折旧退款 我又打开该店的主板套装的差评页面,Ummmmm,大家自己看看就明白了。 1 2 3 4

售后及退货处理

到这个时候我意识到自己可能遇到奸商了。仔细想想寄回去主板是不是好的岂不是还是他说了算?况且我花钱买个返修主板也不是个事啊。所以我直接发起退货申请。为了防止出现差评区的包装损坏商家直接拒收的情况,我将CPU和主板完整的包装好寄回去了,并且包裹的严严实实的。在这里我犯了一个错误,由于商家只是说要检测的话我只用把CPU和主板寄回去了,CPU赠送的风扇就不用寄了,但事实上如果需要退货的话需要将所有的配件都邮寄回去的。这个失误导致我最后退货的时候亏了一次快递费。 等啊等,等啊等,时间过得好慢啊。寄回杭州大概花了整整两天的时间。这里有个细节,该店家签收快递之后始终用同样的一句话“待商品收到之后技术1-3个工作日就能出检测结果,有结果了售后会第一时间联系您呢。”在拖时间。一开始告诉我当天就能处理完,后来就一直不停的复制套话给我。那天是周五。看评论区有长期没有确认收货并联系的,我比较担心,于是一直在催客服。 可能我的催促起作用了吧。一直到周日中午,他们的售后电话联系了我。果不其然,他们说他们检测运行毫无问题。一切都和网上写的剧本一样。他们说产品没问题,不能7天无理由,只能给我退85%的价格。我是肯定不能接受这个结果的。于是与京东联系进行仲裁。由于我是京东Plus会员,于是我直接打京东客服进行联系,然而京东那边也无能为力。京东表示要证明这个主板有质量问题,必须我本人带着主板去华硕的售后点进行检测,拿到检测报告才行。来回扯皮,最后的结果还是店家只退了我85%的钱,而我的损失京东给补偿了代金券。至此终结。

总结

最后总结一下,主板是不是二手的我不能肯定,但是主板在我手中的时候肯定是有问题的。店家一定会矢口否认他们的问题,然后退货只退85%,在该店的差评区可以看到很多相关的案例。令人匪夷所思的是在京东搜AMD的板U套餐这家店全都在前面。这里提醒大家,京东第三方,看着便宜,实际上一旦翻车带来的就是无尽的折磨。这次我一共折腾了半个多月,可以说是非常恶心了。 珍爱生命,远离京东第三方。自营才是王道啊。

后记

退货之后,我购买了MSI的B450M MORTAR MAX和AMD Ryzen 3400G套餐。20分钟装完机器,一次性点亮。而且从主板做工来看,同样是中低端的丐板,显然微星比华硕厚道很多。 最后的最后,AMD真香。3400G配合双通道内存,核显性能已经非常强大了。

[toc] 最近iOS端知名网络软件Surge的作者Liuyachen在Twitter上吐槽1Password,并且表示正在开发新的密码管理软件。说到这个,作为一个网龄十几年的人,当然注册过不知多少的网站。账号一多就容易出现安全问题,尤其是对于大多数人来说,几乎都在使用弱强度的密码并多账户同时使用。之前看过Spirit的密码管理的文章,正好最近一个朋友向我推荐了Bitwarden这个开源的密码管理工具,我在试用一段时间后感觉不错,顺便也来讲讲我的密码管理历史。

我的密码进化史

阶段一 单一简单密码

其实感觉大家都差不多啦,一开始就是很简单的单一密码,无非是自己的个人信息的排列组合,如自己的姓名、生日、家里电话号码的排列组合,有时再加上一些随机数李额,如123等等。我最开始的时候有自己的账号是QQ号吧,用的就是上面的简单排列组合,而且连大小写的区分都没有。当然和Spirit不一样,我很幸运,并没有被人盗过号,而且这种简单密码的使用时间也很短暂。

阶段二 单一复杂密码

小学的时候有很多同学被盗号,我比较幸运没有被盗过,但是前车之鉴后车之师,为了避免我的账号也重蹈覆辙,我决定设计一个复杂的密码。于是基于一些个人信息加上一些随机字母数字排列的一个长达20位的密码诞生了。这个密码我曾经长期使用超过10年,并且曾经用于很多账号,以至于在大多数时间我只要尝试去登录一个我曾经注册过的网站,我就会去用自己的ID和密码去尝试。当然这也是错误的。因为即便是再复杂的密码一旦重复使用也会有较大泄露的风险,因为你永远也不知道网站资深的安全措施做的究竟如何,是否明文存储你的密码,当你所有的账号均使用同一个密码的时候,就会面临被人撞库导致所有账户都暴露在危险下。网上曾经有很多关于设置密码的指南,如腾讯的QQ安全中心推荐过这样一种方法,使用「基础密码 + 网站名称 + 一套密码变化规则」,但是即便如此做,如果变化过于简单还是有一定的安全风险。

阶段三 多个密码分等级使用,并配合两步认证

前几年,月光博客曾经推荐过这样的设置密码的方案,将网站分为大网站、小网站和重要网站并分级设置不同的密码,并启用重要账户的两步认证(主要是TOTP)从而最大程度的降低密码泄露带来的损失。这样的方案我用了很久很久直到上个月,并且我将大部分密码都保存在了Chrome和Apple的iCloud钥匙串中,方便使用。这样的方案主要有几个问题,第一就是TOTP需要专门的密码客户端每次登录都非常麻烦,有时候因为验证码到期还需要重复操作。第二是安全问题,Chrome存储密码是调用Windows API函数CryptProtectData来加密的,该API只允许用于加密密码的Windows用户账户去解密已加密的数据。这意味着,只有用加密时使用的登陆证书,密码才能被恢复。而这根本不是问题,恶意软件通常就是在用户登陆环境下执行的。你可以轻松的从Chrome导入到Firefox中而无需验证你的管理员密码。(当然将数据库拷贝到另外一台电脑上是无法打开的)。值得一提的是,实际上你存储密码的电脑应该是你可以信任的机器,而不安全的机器上不应当存储你的数据库。而在Chrome密码管理器中需要PIN码查看密码,但是这其实是一种虚假的安全感。毕竟离开时忘记锁定电脑,则别人随手打开你的浏览器就可以查看你网页的密码(F12把Password改成text就会看到你的账户和密码)而不需要再次验证任何密码。至于iCloud钥匙串最大的问题就是跨平台表现不好,只能用在Apple的硬件体系上,而我需要使用Windows电脑,可能日后需要使用Android手机等等,因此并不能保证统一的跨平台体验,导入导出数据库也显得十分麻烦。

阶段四 密码管理软件

由于上述方法都存在种种不足,我需要一款可以保证数据安全的同时可以帮助我们管理TOTP以及检测重复密码的工具。当然你们可以选择1Password,Lastpass或者Keepass。在这里我无意比较他们,因为前面几个我都没有使用过,我在这里推荐一下BitWarden,作为一款开源的软件可以很方便的导入导出数据,同时可以帮助生成随机密码,保存TOTP信息等等。这就是我现在的密码保管方法,即将所有网站的密码都修改为随机密码并对可以启用两步认证的账号启用TOTP。需要注意的是,由于手机的易失性和伪基站攻击的不可预防性(关于伪基站攻击),短信验证码是一个并不够安全的功能,只要可以启用TOTP就不要使用短信验证码功能。

Bitwarden

Bitwarden简介

rss

Bitwarden 是一款全新的开源且免费的密码管理器,现代密码学中有一个很重要的柯克霍夫原则(Kerckhoffs’s principle):即使密码系统的任何细节已为人悉知,只要密钥 Key 未泄漏,它也应是安全的。在这一密码学原则上诞生了透明式安全(security through transparency),即:即使我的全部加密算法是原理上公开的,只要你不知道密钥,你也无法破解我的密码;而公开的算法则更容易让所有人都参与进行漏洞的寻找以及算法的完善。 Bitwarden除了提供网页版外,还有iOS、Android等多平台的客户端,扩展支持主流浏览器,如 Firefox、Chrome、Opera 等,支持一键登录。Bitwarden 使用常见的AES-256进行本地加密,然后再传输到云端方便同步,使用 PBKDF2 加密主密码,支持两步验证登录,安全方面有**第三方白皮书**的认证,可以说十分可靠了。并且作为一款开源工具,如果你不信任他的服务器,也可以自行搭建。 官网:https://bitwarden.com/ Github:https://github.com/bitwarden/ 下文将提到一个第三方实现的Bitwarden服务端,可以免费使用Bitwarden的全部核心功能(包括TOTP等付费功能)。如果你懒得自建,或者没有合适的服务器进行部署,也可以直接使用Bitwarden官方的服务器,免费版也可以使用大部分功能,如果需要使用TOTP或者上传文件则需要付费,但是价格也相较于1Password等便宜许多,一年10美元。 Bitwarden官方价格

Bitwarden_rs

由于Bitwarden官方提供的自建方案对服务器资源消耗过大,考虑到成本问题,我搭建时使用的是Bitwarden_rs。这个项目是有人用 Rust 实现了的Bitwarden 服务器,并且提供了 Docker 镜像。这个实现更进一步降低了对机器配置的要求,并且 Docker 镜像体积很小,部署非常方便。此外,官方服务器中需要付费订阅的一些功能,在这个实现中是免费的。 下面来讲讲怎么部署Bitwarden_rs。

准备工作

因为我们使用Docker进行部署,因此我们需要准备一台具有Dokcer环境的VPS,当然一台实体服务器也可以,比如家中的群晖等等,群晖部署方式见https://zhuanlan.zhihu.com/p/67797569。 关于Docker的部署,我们使用的是Docker CE。Docker官方提供了安装的一键脚本。

1
curl -sSL https://get.docker.com/  sh

跑一个hello world确认一下安装正确

1
sudo docker run hello-world

更多细节可见该指南。 安装Docker-Compose

1
sudo pip install docker-compose

除此之外我们还需要准备一个域名,关于域名如何申请,大家可以到DNSPod,万网或者国外的Godaddy,Namecheap等去申请,具体不再赘述。

Docker部署

我们使用Docker-compose进行部署,Docker-Compose的介绍和详细使用指南可以参考这里. 准备如下的 docker-compose.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
version: "3"

services:
bitwarden:
image: bitwardenrs/server
container_name: bitwardenrs
restart: always
ports:
- "127.0.0.1:3214:80" #将3214端口映射到镜像80端口
- "127.0.0.1:3012:3012"
volumes:
- ./bw-data:/data
environment:
WEBSOCKET_ENABLED: "true" #开启WebSocket
SIGNUPS_ALLOWED: "true" #开启注册,自己注册后改成false
WEB_VAULT_ENABLED: "true" #web客户端

需要注意的项目在注释中均有说明,最近的更新中加入了注册邮箱验证的选项,但是由于我们搭建该平台是为了自用,就不需要使用该选项了。 将该YML文件保存至任意文件夹,通过SSH进入该目录下,并运行

1
docker-compose up -d

同时为了初始化我们的账户,只需要在一开始将SIGHUP权限打开,注册自己的账户后就将注册权限关闭,并重新运行上述命令即可。 即,

1
docker-compose down

关闭Bitwarden,并将yml文件中SIGHUPS_ALLOWED选项改为FALSE,重新运行

1
docker-compose up -d

即可。 同时需要注意的是我们的网站需要配置HTTPS,即准备一个证书。由于我比较懒使用的是Cloudflare提供的证书,而且使用的宝塔面板进行配置的。 操作方法很简单, 1. 在Cloudflare中添加你之前设置好的域名,设置好解析(无论你是用的NS解析还是CNAME解析),打开SSL/TLS选项,将OVERVIEW设置为 Full(strict),然后切换到 Origin Server选项卡,选择 Create Certificate,然后让Cloudflare生成一个private key和CSR,选择你的域名,证书有效期选择15年即可,点击NEXT,Cloudflare就会为你生成一个Key和Certificate,一定要保存好。 cloudflare-SSL 2. 在宝塔面板中添加一个静态网站,并将域名指向前面你准备好的域名。 3. 在SSL设置中导入你在cloudflare上申请的 Origin Certificates 的证书和密钥分别复制到宝塔面板中的指定位置(如图所示),并打开右上角的强制HTTPS。 宝塔面板添加证书 4. 配置反向代理,在静态网站的配置页中找到反向代理,配置如图所示。 反向代理设置 此时基本的设置已经配置好了。如果你没有使用宝塔面板的话,也可以通过NGINX进行配置,具体可见Cloudflare的官网说明。 如果你想使用Let’s Encrypt的证书的话,可以参考官网的wiki给出的YML文件进行操作。 个人推荐使用Cloudflare对你的网站进行保护,这样可以避免源站IP泄露同时降低被人攻击的风险。

基础设置

打开我们之前设置好的域名,首先先初始化账户,点击创建账户,按要求输入你的电子邮箱地址、姓名、主密码以及主密码提示。需要注意的是,这里的邮箱一定要是绝对可靠设置好安全措施的邮箱,同时主密码一定要高强度且唯一用于你的Bitwarden。该主密码是你的所有密码的安全保障,建议足够长且不要与你的个人信息有关以防止被社工。一定要保证该密码的安全!一定要保证该密码的安全!一定要保证该密码的安全! Bitwarden网页版

rss

注册完成后即可登录网页版的账户。如果你之前使用的是浏览器保存密码或者是Lastpass,1Password等软件,可以导出后通过工具-导入数据进行导入,否则就只能将自己的账号密码手动输入到Bitwarden内了。我个人是花了整整两天的时间将所有的账户密码都改成了随机密码,Bitwarden也提供了随机密码生成器,因此也比较方便。 Bitwarden

使用体验

Bitwarden在跨平台的配置上非常好,从官网提供的APP来看支持Mac OS,Windows,Linux等桌面平台和Android,iOS等移动平台,我目前使用的是Windows笔记本和iPhone手机,我也尝试了在iPad上的使用体验,其实和iPhone上的体验是一模一样的。我尝试了Windows的客户端,实际上和网页上的功能相差无几,相比之下在电脑上浏览器的拓展会更加实用,因此这部分只分享网页端、电脑端的Chrome拓展以及iOS平台的使用体验了。

网页端

网页端的登陆方式如 基础设置 中所述即可。登录后可以看到整个主界面,主要分为三部分,密码库、工具和设置。 Bitwarden网页端界面 密码库顾名思义就是存储你的密码的地方,通过图片我们可以发现Bitwarden是可以设置TOTP的。严格来讲不光是密码,还有卡片、身份和安全笔记。卡片可以用来保存你的银行卡信息,身份可以用来保存你的个人信息、住址、护照号码等等。点击 添加 即可按步骤保存自己的信息。

rss

rss

工具中提供了前面所说的导入数据与导出数据功能,需要注意导出数据功能导出的是未加密文件,仅用于软件间迁移时临时使用,切不可用于备份。关于备份的问题我们后面再谈。除了这些基础功能外,Bitwarden在网页端还提供了公开密码报告、重复使用的密码报告、弱密码报告、不安全的网站报告、未激活双重身份验证以及数据泄露报告, 我们可以通过这些工具来确认自己密码的安全性。如前文所述,强烈建议大家不要在不同的网站使用相同的密码。这些工具只在网页端提供,这就是为什么前面不建议关闭网页登录选项的原因。 Bitwarden工具 设置中的内容就不多赘述了,值得一提的是Bitwarden的两步登录功能我并没有开启,因为不想在手机上额外安装一个App。 Bitwarden设置 总体来说网页端更像是一个查询器和安全检查的工具,日常使用是用不到网页端的。

Chrome拓展

Bitwarden官网提供了Chrome拓展的安装程序,安装完成后主界面如图所示,和网页端不同,我们首先要点击左上角的设置按钮设置一下服务器URL为前面咱们自己搭建的地址。然后再使用邮箱和密码登录。

rss

rss

整体功能大同小异,当你打开一个你保存过密码的网站时在标签页选项卡会提供该网页下你曾经保存过的账号。如密码库、生成器等都与网页版大同小异。密码生成器可以根据你设定的密码位数,字母大小写、数字、特殊字符来自动生成密码。 设置选项卡下有几个需要调整的设置,默认设置的锁定选项是重启浏览器时,你可以根据自己的情况选择时长。默认情况下你每次重启浏览器都需要重新输入你的主密码才能使用Bitwarden,这就是它比Chrome相对安全的地方之一,防止他人使用你的电脑时可以随意登录你的账号,当然当他人借用你的电脑时,正确的做法是给他提供一个单独的计算机账户进行使用。现在我们打开网页还需要手动打开Bitwarden的拓展界面再点击,显得过于麻烦了。进入选项中,打开Auto-fill功能,即可实现类似于Chrome的自动填充功能,在解除Bitwarden的锁定状态后,打开网页可以看到用户名和密码会自动填充到输入框内。体验还是非常不错的。

rss

目前体验下来比较不好的体验就是,很多网站(可能因为收录较少的原因)你在注册的时候Bitwarden并不能像Chrome一样弹出自动保存的选项,因此推荐在注册之前先在Bitwarden中创建相关信息,再在该网站上注册/登录使用。其他方面暂时没有遇到什么问题,Bitwarden在网页上右键可以看到如下选项,在生成密码时会十分方便。 Chrome右键菜单 值得称道的是,当你绑定了账户的TOTP功能时,在自动填充用户名和密码后,会自动将TOTP的验证码放置于剪贴板中,你只需要直接粘贴即可,这个真的是非常非常实用的功能,大幅度降低了TOTP登录的繁琐程度。

iOS客户端

基础设置和Chrome拓展大同小异,打开手机的App后先在左上角的设置中设置你的Bitwarden网址,然后登录即可。

rss

rss

iOS端的Bitwarden可以提供如iCloud钥匙串一样的使用体验,只需要在设置中做如下两个设置,就会在相关的App和网页中获得和iCloud钥匙串一样的填充体验,即,打开网页或APP后,键盘上侧会弹出你的账户,点击后验证你的Touch ID/Face ID即可自动填充。其他的功能和电脑端的Chrome拓展大同小异,这里就不再赘述了。

rss

rss

rss

autofill Android端应该也是类似的体验,不过我目前没有Android设备,大家可以参考官网的介绍。

备份

由于是自建服务器,并不需要使用Bitwarden的导出功能,只需要定期备份数据库即可。数据库的地址就在你存放docker-compose.yml的文件夹下的bw-data文件夹内,只需要将整个文件夹定期备份即可,可以使用宝塔自带的备份脚本或者其他备份脚本。如需要迁徙服务器也是一样,将数据库放置于同样的目录下直接重新建立Docker就可继续使用。

总结

Bitwarden实际上并不完美,但是它基本可以满足我的所有需求,最重要的是,自建并不需要付费,1Password虽好,价格实在是不便宜。你甚至可以在家中的电脑实现Bitwarden的部署,然后每天回家的时候再同步密码。毕竟密码数据库还是保存在自己的设备上才是更让人心安的。而关于安全问题,Bitwarden毕竟是开源软件,感觉就是如果有安全漏洞也是实现的问题,而不是作者故意留后门。在这个时代,社工大行其道,大数据分析共享又严重,因此使用更安全的密码方案是迫在眉睫的事情。使用随机密码就需要一款好用的密码管理软件,如果你也在寻找,不妨来试试Bitwarden。

参考资料

Bitwarden官网:https://bitwarden.com/ Bitwarden_rs Github:https://github.com/dani-garcia/bitwarden_rs Bitwarden_rs wiki:https://github.com/dani-garcia/bitwarden_rs/wiki Docker——从入门到实践:https://yeasy.gitbooks.io/docker_practice/ 免费密码管理器 bitwarden 的实际使用体验如何?——知乎:https://www.zhihu.com/question/58299407/answer/405724439 【群晖】用Docker部署Bitwarden密码仓库 – 第三方镜像:https://zhuanlan.zhihu.com/p/67797569

[toc] RSS,RDF Site Summary,资源描述框架站点摘要,用以聚合经常发布更新数据的网站,例如博客文章、新闻、音频或视频的网摘。

rss

2019年也接近尾声了,在这个时间点再提RSS是有点怪异的,因为实际上自从2013年Google关闭Google Reader之后我就没再使用过RSS了。自从智能手机普及,移动互联网的兴起,大量的App都集成了推送功能,每天微博、知乎、微博、微信公众号、抖音等等等,大量的App每天都会给你推送各种各样的信息,RSS这种订阅方式显然已经不再流行了。当然,我的Blog依旧提供了RSS订阅功能,不过由于博客过水估计也没什么人订阅。 尽管看起来RSS已经过时了,我却在今年捡起了RSS功能,并使用聊天软件Telegram来订阅RSS,这是为什么呢?

重拾RSS

不知道你是否注意到,上文中提到的各式各样的App已经占据了我们生活中的大量时间,每天的推送几乎每10分钟就有2,3条,如果你不幸把上述App全部安装的话,那可能你一拿起手机就一两个小时过去了。现在的这些社交媒体软件为了吸引人眼球,获得用户的在线时间已经不择手段了。就以我们常用的知乎为例吧,早在6,7年前,知乎刚刚兴起的时候,那时候还是一个小众社区,App和网站以简洁为美,用户关注用户并获得更新,打开Timeline全是你关注的人按时间排序,推送也只有关注的问题,回答问题的评论等等。但是现在呢,且不说Timeline功能已经变得面目全非,和一个类似朋友圈的功能进行整合,就说热点推送和各种邀请回答吧,你一天当中会接收到无穷无尽的信息,大量的标题党信息涌入你的眼前只为博君一笑。我大概尝试过,平均每10分钟一条推送,简直不胜其扰,更不要说各种基于大数据的推送和热点合辑,简直让人烦不胜烦。而且这类App还有个特点,这种热点看似可以关闭,然而却并不生效,你永远可以看到他想推送给你的信息,这就很烦了朋友们。 因此,我重新启用RSS的一个原因就是因为RSS可以只推送给我我想知道的更新,而不会占用我大量的注意力,我可以选择在我空闲的时候轻松的看完我的订阅。 rss 另外一个原因就是,尽管互联网越来越集中化,逐渐形成相互独立的帝国对立态势,但是还是有很多小而美的博主坚持十几年如一日的写着自己的博客,RSS可以帮助我们订阅他们的更新,从而免去错过交流机会的烦恼。

RSS订阅器——Flowerss

一开始我是想用Feedly的,但是有朋友推荐使用Telegram的RSS订阅机器人来使用。毕竟,奥卡姆剃刀原理“如无必要,勿增实体”。(好啦开个玩笑) 其实主要原因还是因为懒得学习操作逻辑了,而且Telegram的确是一个非常不错的聊天软件,功能很齐全API也很开放,又不会多占用宝贵的手机空间,跨平台体验也相对不错。正好我在Github上找到了一款相当不错的RSS订阅机器人,Flowerss_bot。 FloweRSS 是一款 Go 语言编写的高性能低占用 Telegram RSS 订阅 Bot,支持为群组频道添加订阅,还支持 应用内预览、订阅源导入导出 等功能,安装也十分简单。 关于机器人的搭建我们后面再说。

RSSHUB

光有阅读器是不够的,上文曾经提到的大量新时代的互联网资源都已经不再提供RSS订阅了,我们该怎么办呢,这时候就要用到RSSHUB了。 RSSHUB官网的介绍:

RSSHub 是一个开源、简单易用、易于扩展的 RSS 生成器,可以给任何奇奇怪怪的内容生成 RSS 订阅源。RSSHub 借助于开源社区的力量快速发展中,目前已适配数百家网站的上千项内容。

rss

在这里特别感谢 DIYgod,为我们提供了如此方便的工具。 通过使用Flowerss_bot机器人,配合RSSHUB,我们就可以实现在Telegram订阅RSS了。

搭建教程

首先,你当然可以选择分别搭建Flowerss_bot机器人和RSSHUB,并对外开放进行订阅访问。这里推荐使用Docker的方式进行搭建,安装与移除都十分方便。 Flowerss地址:https://github.com/indes/flowerss-bot/tree/master/bot RSSHUB地址:https://docs.rsshub.app/install/#docker-compose-bu-shu 但是我的服务器资源有限,RSSHUB的端口并不想对外开放。而且使用Docker-compose部署的话,如果container之间有相互依赖,那么可以先后启动,这样容器之间就可以直接通过 容器名:端口 进行访问,方便快捷得多。 比如假设我分别假设Rss机器人和RSSHUB(假设地址是rss.ekkles.com,RSSHUB部署在1200端口),那么当我想通过RSS机器人进行订阅的时候,订阅地址就是https://rss.ekkles.com:1200/123456 (符合RSSHUB订阅链接规则),但是如果通过Docker Compose将他们组合在一个yml文件里,那么订阅时我只需要使用http://rsshub:1200/123456 即可。 所以,那我们正式开始

1. 申请一个Telegram bot

打开你的Telegram,在上面的搜索框中输入Botfather,打开后点击start启动Botfather,然后输入/newbot,即可创建你自己的机器人。创建后按照Botfather的提示输入你想要的机器人用户名,需要注意的是你的命名必须以_bot结尾。 此时Botfather会说Congratulations并为你生成你的RSSbot的专属链接和Token。注意保管好你的Token,它非常重要。你可以通过/help来查看相关的各种命令,包括修改机器人的名字和头像等等,在此不再赘述。 rssrss

2. 安装Docker及相关服务

我们使用的是Docker CE。Docker官方提供了安装的一键脚本。

1
curl -sSL https://get.docker.com/  sh

跑一个hello world确认一下安装正确

1
sudo docker run hello-world

其他具体安装方法可见该指南。 安装Docker-Compose

1
sudo pip install docker-compose

3. 编辑yml文件

具体Docker-Compose的介绍和详细使用指南这里就不作记录了,可以参考这里 这里只需要在docker-compose.yml内将RSSHUB和Flowerss_bot合并记录一下就可以了。需要注意这个yml文件对空格格式严格敏感,注意完整。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
version: '3'

services:
flowerss:
image: indes/flowerss-bot:latest
volumes:
- ./flowerss:/flowerss
working_dir: /flowerss
logging:
options:
max-size: '500k'
restart: always
rsshub:
image: diygod/rsshub
restart: always
ports:
- '1200:1200'
environment:
NODE_ENV: production
CACHE_TYPE: redis
REDIS_URL: 'redis://db.redis:6379/'
PUPPETEER_WS_ENDPOINT: 'ws://service.browserless:3000'
depends_on:
- db.redis
- service.browserless
service.browserless:
image: browserless/chrome
restart: always
db.redis:
image: redis
restart: always
volumes:
- redis-data:/data
volumes:
redis-data:

将docker-compose.yml保存至你服务器内的任意有权限使用的目录内,如/home/rss/。 并在同级目录下保存一个config.yml文件,内容如下:

1
2
3
4
5
6
7
8
bot_token: ##填写你的机器人Token,注意冒号后有空格
telegraph_token: ##填写你的Telegraph Token,获取方法见下。注意冒号后有空格
preview_text: 0
update_interval: 10
error_threshold: 100

sqlite:
path: ./data.db

获取你的Telegraph Token(用于预览你的RSS订阅)

1
curl https://api.telegra.ph/createAccount?short_name=flowerss&author_name=flowerss&author_url=https://github.com/indes/flowerss-bot

返回的 JSON 中 access_token 字段值即为 Telegraph Token。

4. 安装

使用SSH连接服务器,进入刚刚放置配置文件的目录,如/home/rss/。

1
cd /home/rss

输入命令进行安装:

1
docker-compose up -d

即可完成部署。输入docker ps -a即可查看已运行的容器。 如果需要关闭并删除,只需要

1
docker-compose down

即可。

5. 完成部署

此时即可打开Telegram并访问你刚刚创建的机器人,并使用相关的命令进行订阅了。 Flowerss使用命令如下:(也可输入/help进行查看)

1
2
3
4
5
6
7
/sub [url] 订阅(url 为可选)
/unsub [url] 取消订阅(url 为可选)
/list 查看当前订阅
/set 设置订阅
/import 导入 OPML 文件
/export 导出 OPML 文件
/help 帮助

如果遇到没有提供RSS链接的网站,即可使用我们部署好的RSSHUB进行操作,具体使用方法见https://docs.rsshub.app/ 下侧的路由指南。需要注意的是我们不需要为其绑定域名,只需要输入http://rsshub:1200/123456 这样格式即可,这里rsshub即咱们刚刚安装时RSSHUB的container名,1200为RSSHUB默认端口。 如我们要订阅微博,官方给出的示例格式为: https://rsshub.app/weibo/user/1195230310 在我们这里只需要写订阅链接为https://rsshub:1200/weibo/user/1195230310 即可,这样就避免了绑定域名的烦恼。 Example for rss-sub

小结

我已经使用这样的组合大概一个多月了,目前感觉良好,将微博知乎等App的推送功能关掉后世界清净多了,而且还关注了很多不错的博主。欢迎大家都来尝试使用RSS订阅来获取信息流更新,避免大数据将你困在信息舒适区。

参考资料

Docker从入门到实践:https://yeasy.gitbooks.io/docker_practice/ RSSHUB官网:https://docs.rsshub.app/ Flowerss_bot:https://github.com/indes/flowerss-bot Telegram——bot: https://core.telegram.org/bots

[toc] 上个月为了写实验报告,下载了一个SmartDraw用来画流程图和思维导图。软件本身就不多说了,ummmm,界面是上个世纪的,只能试用有限次数(3次还是5次我不记得了),功能还不错但是试用版能力有限。这些都不重要,重要的是当我今天想要卸载他/她/它的时候,发现卸载不掉!?

尝试未果

首先我自然是打开开始菜单,点击他提供的卸载程序,结果发现 然后我又打开Windows自带的应用尝试卸载这个程序,结果发现 我表示绝望。然后从网上下载了geek uninstall,结果发现一样找不到这个程序安装。 头痛。不知道为什么install.log无法打开,难道是安装的时候出错了? 于是我又一次的从官网下载了该程序并重新覆盖安装,但是当我尝试卸载的时候, 我心态崩了。

卸载方法

最后,在经历过无数次尝试之后,我终于发现了如何卸载这个看似工具实际上流氓软件的方法。 1. 打开程序的安装目录,默认为C:\SmartDraw 2019。 2. 在该目录下找到install.log文件,并将其剪切到SmartDraw 2019以外的其他文件夹下,本文中直接粘贴至C盘根目录下(这里注意一定要剪切而不是复制,目的是保证该目录下没有Install.log文件) 3. 运行unwise.exe文件进行卸载,同意UAC对话框后,会弹出对话框让你选择install.log文件,找到刚刚粘贴的install.log,确定,一个亲切的卸载画面终于出现了。 4. 卸载成功,泪流满面。(如果最后提示此程序是否正确安装,忽略即可,最后去C盘将SmartDraw 2019文件夹删除即可)

后记

为了卸载这个玩意我还安装了360软件管家尝试,但是发现徒劳无功的同时还给电脑一下子引入了360全家桶,我的笔记本一下子就嗡嗡作响,温度直接上升了30°C,可怕可怕。朋友们安装软件一定要慎重啊!

说到制作启动U盘,一般大家的第一反应都是UltraISO,打开百度10篇攻略有9篇都是讲的用UltraISO来制作启动U盘。但是一方面UlraISO是付费软件,另外一方面为了制作启动U盘下载并安装这样一个软件未免有点杀鸡用牛刀的感觉。本文来介绍一款轻便而又强大的U盘格式化/刻录工具——Rufus。

Rufus

软件主页:https://rufus.ie/ Github:https://github.com/pbatard/rufus 本站下载(版本3.8):https://file.ekkles.com/Windows/rufus-3.6.exe

软件界面

Rufus界面

重要功能

  • 单文件程序,仅1.1M大小,便于携带和使用
  • 多语言支持,支持中文
  • 支持USB可移动磁盘甚至移动硬盘
  • 自由选择刻录后的文件系统 Rufus文件系统
  • 可以直接使用软件按步骤直接制作Windows启动U盘,无需到处寻找系统镜像(见制作启动U盘
  • 不仅可以刻录普通ISO镜像,还能刻录DD镜像

制作启动U盘

  1. 在软件的设备选项中选择需要制作Windows安装U盘的设备(本例中选择Ekkles磁盘)。 Rufus制作启动U盘1
  2. 引导文件类型选择镜像文件,右侧下拉从选择和下载的选项中选择下载,并下载指定版本的Windows镜像。(默认建议选择Windows 10 Home/Pro,简体中文,X64,发行版选择最新,该软件是从官网直接拉的链接,速度较有保障) Rufus制作启动U盘2
  3. 等待下载完成后,选择下载好的镜像,并按下图设置。镜像选项-标准Windows安装,分区类型-GPT,目标系统类型-UEFI。 Rufus制作启动U盘3
  4. 点击开始按钮,开始制作启动U盘。 注意:制作启动U盘的过程会格式化整个磁盘,请提前将数据备份。
  5. 开始安装Windows,尽情食用吧~

本文基于Rufus 3.6版本(2019.07)进行功能介绍,日后如有更新请注意版本差异。 [toc]