2022-05-08

12 篇热帖

1. 我这一生最大的愿望就是每天都能睡个好觉

自从上了上学之后,感觉以前那种一觉醒来精神倍棒的睡眠越来越少了。不是被别人吵得睡不着,就是因为工作压力睡不着。

最近挺迷茫的,我的目标是什么?直到昨天晚上,又被吵得睡不着,突然脑海灵光一闪,我找到了我这一生中奋斗的目标:每天都能睡个好觉。

初看好像挺简单,甚至都不能算是个目标,但仔细分析,你会发现这很难很难。

要睡个好觉,首先是要有一个安静的环境。在广州等一线城市,像城中村这种握手楼,想要睡个好觉可不容易。近些年回老家发现,老家也是越来越吵了。未来买房,你会发现,房子的隔音质量也是令人担忧,网上震楼器卖得火爆就是个最好的证明。所以你想要有一个安静的环境,要么选择买最顶层的楼,要么就买别墅。你说,这算不算是一个小目标?

接着是工作压力,现在都流行 on call ,时不时来个 message ,真是让人精神紧张,但是你又不能关机,否则分分钟裁了你。解决的办法也能简单,那就是找一个钱多事少离家近的工作。你说,这算不算是一个小目标?

我以前忙于工作,没有按时吃饭,最后得了胃炎,每天半夜三点准时被肚子痛醒。所以,想要睡一个好觉,还得有一个好身体。要想有一个好身体,除了每天的身体锻炼,过大的压力也是要极力避免的。最有效的方法就是储存足够的现金,干的不爽立马走人。你说,这算不算是一个小目标?

其实一开始我是写了一千多字,回顾了一下这些年自己的种种不幸遭遇,最后发现太过于悲观了,就删了。

2. 第一辆车的顾虑,希望 v 友给给意见。
人在杭州,第一辆车,有蓝牌指标,老爸给的落地预算 120 万以内。

品牌偏向:M Power 粉丝,奔驰保时捷特斯拉还行,奥迪完全无感。

心路历程:去年 11 月底摇到的车牌,但一直没买车的需求,家里有 3 辆油车。今年桐庐(离杭州 1 小时车程)的别墅装好了,住的很舒服,萌生了买一辆车的念头,这样周五下班就可以开车去桐庐度假休息,周一早上开回来上班。

目前犹豫的车型:X4M Competition 和 Model 3/Y Performance 。早上试驾了 X4M ,高架上开到 160KM/H ,作为一辆 SUV 完全没有失控感,给人的信心很强,完全可以掌控住,油门也没踩到底,动力还是源源不断的。本以为这就是想要的车了,晚上去来福士试驾了 Model 3P ,好家伙,完全不输 X4M 的加速和驾驶感受,让我这个 Bimmer 产生了动摇 hhh ,因为车价可以省一半,而且一年还能剩 4 万的保养费+油费。很纠结,所以来问问 V 友,有没有前人的经验。
3. 被封了快两个月了,心态炸裂,每天什么事情都不想做,怎么破?
被封了快两个月了,心态炸裂,每天什么事情都不想做,
躺床上看电视几分钟就想睡觉,我感觉我现在是不是病了?
到现在技术方案一行字都没写
4. 福建泉州地区的白名单域名阻断

坐标泉州主城区,测试如下:

三网运营商 家宽 5G4G 流量均被干扰

只有域名白名单 无 IP 白名单

除白名单域名外,所有解析到境外 ip 的域名都无法打开(测试过我手上没有被 GFW 墙也没有任何污染的域名,以及新买的.xyz 域均被 reset ,Telegram 网友测试只有.xyz 及.icu 域会被阻断,部分小众的.org 域不会被阻断,此情况我还未测试)

无 DNS 污染 只有 sni 阻断

http 访问不会跳转到反诈页面,只会阻断 https 会 reset

国内中转及 IPLC 可以正常翻墙

Github CloudFlare 主域名 Spotify Hostloc Steam 等可以正常打开

除 http https 外的协议正常 包括 SSH

干扰发生在各种端口上,不仅仅是 80 和 443

Cloudflare 的 ip 在套上域名后打开同样受阻断,workers.dev 无阻断

梯子解决方案:

使用 SS libev 的 AEAD 加密( ip 连接)

V2ray Websocket 无 tls 连接

国内中转( IPLC )

5. 程序员应该怎么写博客?

最近因为上海疫情在家里封闭了五十天,因而有了较为充裕的时间,于是又开始打点博客站点,把原来的评论系统改成了 giscus。另外也认认真真写了些博客。

这五十天写的博客有:

我写的博客里,读书笔记比较多,好像也只有这个能写些有价值的东西。V 友里估计写博客的高手不在少数,因此在这里也想跟各位探讨下:怎么写高质量的博客?大家是如何坚持写博客的。

居家封闭的日子特别无聊,也就是看书和写博客来打发工作以外的时间,以此来对抗这「荒诞世界」(参见「存在主义」那篇文章)的虚无和孤独。最后,还是引用我博客友链开头的话:

写博客的人越来越少了,中文独立博客更少,因此有网友做了份 「中文独立博客列表」 的清单,来记录坚持独立博客的中文网友。独立博主就像是“互联网上的异乡者”(这个词借用先锋书店的 slogan: 大地上的异乡者),虽身处各地,彼此未必谋面,但大家都有共同的坚持和爱好。

如果你也在坚持写博客,欢迎与我友链(可以在这里看关于我和博客的更多介绍: https://hutusi.com/about/ ),以此链接更多的志同道合者。

6. m1 mac ssd 寿命问题解决了吗?
Local Time is:                      Sun May  8 18:41:07 2022 CST
Critical Warning:                   0x00
Temperature:                        36 Celsius
Available Spare:                    100%
Available Spare Threshold:          99%
Percentage Used:                    0%
Data Units Read:                    26,084,436 [13.3 TB]
Data Units Written:                 24,556,559 [12.5 TB]
Host Read Commands:                 129,307,010
Host Write Commands:                86,130,913
Controller Busy Time:               0
Power Cycles:                       189
Power On Hours:                     74
Unsafe Shutdowns:                   7
Media and Data Integrity Errors:    0
Error Information Log Entries:      0
Local Time is:                      Sun May  8 18:10:40 2022 CST
SMART/Health Information (NVMe Log 0x02)
Critical Warning:                   0x00
Temperature:                        35 Celsius
Available Spare:                    100%
Available Spare Threshold:          99%
Percentage Used:                    0%
Data Units Read:                    25,561,645 [13.0 TB]
Data Units Written:                 24,042,807 [12.3 TB]
Host Read Commands:                 127,959,264
Host Write Commands:                84,876,872
Controller Busy Time:               0
Power Cycles:                       189
Power On Hours:                     74
Unsafe Shutdowns:                   7
Media and Data Integrity Errors:    0
Error Information Log Entries:      0

10 天 写入 12T 正常嘛... 刚观察了正常使用半小时 200G

7. Bob 0.9.0 版本发布,独立 OCR 来啦 🎉

Bob 独立 OCR 功能来啦!🎉🎉🎉

虽然也可以用「截图翻译」充当 OCR 的作用,不过「 OCR 功能」专注于图片文本识别,新开一个独立的窗口,在排版和多图识别等方面都会更有优势。😬 据我所知,有不少用户压根就是把 Bob 当 OCR 在用,现在好了,你可以直接用「 OCR 功能」了。

核心功能

截图识别

  • 按下「截图 OCR 」快捷键(默认 ⇧ + ⌥ + S)或者点击菜单栏 Bob 图标菜单中的「截图 OCR 」
  • 选中屏幕上的对应的位置
  • 松手即可开始识别
截图 OCR

访达选图识别

按下「访达选图 OCR 」快捷键(没有设置默认快捷键,可去「 Bob 偏好设置-OCR-OCR 设置」添加)或者点击菜单栏 Bob 图标菜单中的「访达选图 OCR 」。

在弹出的访达窗口中选中对应的图片文件(可以一次性选中多张),点击右下角「开始识别」即可。

访达选图 OCR

离线识别

Bob 支持离线文本识别,不过需要在 macOS 11 以上的系统才可以使用。如果你的 macOS 系统版本较低,也不用担心,可以使用 Bob 内部集成的腾讯、百度、有道和谷歌等在线文本识别服务。

连续识别

如果需要连续识别多个位置的图片,可点击翻译窗口右下角的连续识别按钮(橙色即为开启状态),开启连续识别模式。开启之后,Bob 会将识别结果依次拼接在文本框内。

二维码识别

Bob 可以自动识别图片中的二维码,此功能是默认开启的,可以在 OCR 窗口右上角的菜单里面关闭。

自动复制

Bob 支持自动将 OCR 的识别结果复制到剪切板,此功能是默认开启的,可以在 OCR 窗口右上角的菜单里面关闭。

智能分段

为了更好的体验,Bob 自研了一套段落识别算法,尽最大努力还原段落状态,减少后期的修改成本。

另外部分 OCR 服务商本身也自带段落识别的信息,我也将其保留下来了,大家可以自行选择使用 Bob 的算法还是 OCR 服务商的算法。

更多

更多 OCR 功能细节:

https://ripperhe.gitee.io/bob/#/general/quickstart/ocr

下载安装 Bob:

https://ripperhe.gitee.io/bob/#/general/quickstart/install

8. 我的 Vim 自动补全配置变迁史

原文: https://reorx.com/blog/the-history-of-my-vim-completion-config/


Vim 是我系统学习的第一个终端编辑器,从学生时代至今,我几乎每天都会使用到它(长时间写前端代码时除外)。

自动补全( auto completion )大概是每个 Vim 用户在掌握了基本用法后,第一个想要进阶配置的功能。这篇文章记录了从 2017 年至今,我的 Vim 自动补全配置的每次变更,从中窥见 Vim 生态发展的一角,也纪念这些曾经给我带来过便利,最终在技术发展中被轮替的插件。

Before 2017

2017 年我从 Vim 切换到 Neovim(下文简称 nvim ),除了增加 nvim 特殊的 init.vim,基本沿用了以往的配置和插件。

彼时我使用的语言以 Python 为主,自动补全插件为 jedi-vim

我对 jedi-vim 的了解最早可以追溯到 2012 年,那时还没有 LSP 的概念。开发者们针对自己的需求,编写如语法增强、文档查看、自动补全等各类插件,非常零散。jedi-vim 对这些插件的功能进行了重构和集成,提供了开箱即用的统一解决方案,一经推出便广受好评,成为使用 Vim 进行 Python 开发的标配。在后来的十年里,它的初心始终不变,得到持续的维护并沿用至今。

2017

还是 2017 年,在切换到 nvim 后不久,我发现了 deoplete 插件,经过一番尝试将 jedi-vim 替换成了 deoplete + deoplete-jedi 。

Commit: 0760ba6f7d11526e38e15b36a0d1db8709834825

use deoplete, remove jedi-vim

committed on Jun 28, 2017

-Plug 'davidhalter/jedi-vim', { 'for': 'python' }
+Plug 'Shougo/deoplete.nvim', { 'do': ':UpdateRemotePlugins' }
+Plug 'zchee/deoplete-jedi', { 'for': 'python' }

deoplete 的目标是提供一个通用的异步自动补全框架,这在设计理念上是一个巨大的进步。jedi-vim 虽然开箱即用,但却是一堆粘合在一起的 spaghetti code ,不仅随着项目功能的增加变得越发庞大和迟缓(这是我想要离开 jedi-vim 的主要原因,文件一大各种操作都变得肉眼可见的慢),代码的可读性也非常糟糕,难以维护和参与。而 deoplete 本身并不提供针对任何语言的分析能力,只专注于与 nvim 的整合和 completion source 的调度,并且利用 nvim 的异步功能(后来 vim 8 也推出了自己的 async 接口),大大提升了补全的流畅度。

但 deoplete 也有着自身的局限性。首先配置变得复杂且麻烦,用户得理解其架构和设计,学会如何通过 deoplete 对接编程语言的 completion source 。为了使检查结果的提示贴合自己的使用习惯,还要再去学习 completion source 的配置,每个语言的实现不同,配置也不一样。

当时我却没有料到,配置复杂的问题在 LSP 时代不仅没能得到解决,反而变本加厉,直到本文完成时也依旧是使用者的巨大痛点

deoplete 的第二个问题是,它只专注在 completion ,缺少对于 go to definition 和显示 function siguature 等功能的支持,这对于从 jedi-vim 的 all-in-one 体验切换过来的我,显然是个巨大的落差。好在我找到了其他插件来解决这些问题。

对于 “go to definition”,通过装回 jedi-vim 并打开无补全模式可以解决。这样既可以使用 jedi 提供的 go to definition 等辅助功能,也不会与 deoplete 的补全产生冲突。

Plug 'davidhalter/jedi-vim', { 'for': 'python' }

" jedi (only for go to definition)
let g:jedi#completions_enabled = 0

对于 “function signature”,我找到了 deoplete 作者的另一个插件 echodoc 来实现。它将函数的签名信息显示在 cmd 区域,规避了 deoplete 占用 completeopt 导致编辑界面无法显示补全菜单以外的其他信息的问题。

Plug 'Shougo/echodoc.vim'

" echodoc
set noshowmode
let g:echodoc#enable_at_startup=1

2018

2018 年是里程碑式的一年,Language Server Protocol 的生态逐渐成熟,新的补全工具涌现。我对 LSP 感到相当兴奋和好奇,迫不及待地从 deoplete 更换到了对 LSP 有更好支持的 ncm2

Commit: 7a1442c2334673ac17162c101663e220ef43a3c8

nvim: update completion plugins (a lot!)

  • move and reorg completion plugins definitions and configurations
  • use LSP completion instead of deoplete
  • remove eslint from ale_linters
  • enable virtualenv display for airline
  • still working on passing settings to pyls through LanguageClient-neovim

committed on Dec 7, 2018

-Plug 'Shougo/deoplete.nvim', { 'do': ':UpdateRemotePlugins' }
-Plug 'zchee/deoplete-jedi', { 'for': 'python' }
+Plug 'ervandew/supertab'
+Plug 'ncm2/ncm2'
+Plug 'roxma/nvim-yarp'
+Plug 'autozimu/LanguageClient-neovim', { 'branch': 'next', 'do': 'bash install.sh', }

从设计理念上看,ncm2 与 deoplete 并无差别,都是通用的异步自动补全框架,唯有与静态分析器的集成方式不同,deoplete 是自己的私有协议,ncm2 则拥抱了更加通用的业界标准 LSP 。

我为 deoplete 的作者感到惋惜,他在 LSP 还不够成熟的时期,自己设计了与静态分析器的集成协议,构建了一个完整的补全插件生态[^1]。还写了很多小巧实用的插件,代码也非常优美,让人感到赏心悦目。但因为 LSP 的发展和新一代更加 LSP native 的补全插件的涌现,它已不再是当下的第一选择,势必因为历史包袱而逐渐被淘汰。

说回 ncm2 ,其实它也有许多瑕疵,印象中配置过程比 deoplete 还要痛苦,但当时已经是让 nvim 用上 LSP 的最好插件了。之后我对 JetBrains 和 VSCode 的使用频率变高,疏于对 nvim 插件的持续跟进,ncm2 于是一直服役到 2021 年。

ncm2 出现后没过多久,coc 也诞生了,在 2019 年成为最受人关注的 vim 补全插件,国内也看到很多文章(似乎作者就是国内开发者)。当时我简单了解后因为它是 nodejs 实现的,就放弃了尝试的念头。开玩笑,jedi 这么一大坨 Python 就慢成这样,nodejs 岂不是更糟糕吗。没想到 coc 一直流行到现在,这似乎再次证明了一个论点,即易用和功能全面才是软件流行的第一因素,无论它的实现有多么不优雅、效率有多么低,只要是能用的、可接受的就行,用户在使用体验上得到满足后,对于小问题的容忍度是相当高的。

2021

2021 年的某一天,因为 ncm2 长期存在的一个小问题(现在已经忘了),我一气之下再次打开了 deoplete 的项目页面,惊喜地发现它已经完善了对 LSP 的支持,于是立刻就开始迁移,换回了我更欣赏且代码品质更胜一筹的 deoplete 。

Commit: cd044fcda603ad5b9ee16bd4d7d7873c9ade9a31

nvim: rework on languageserver & python completion

committed on Mar 26, 2021

-Plug 'ervandew/supertab'
-Plug 'ncm2/ncm2'
-Plug 'roxma/nvim-yarp'
-Plug 'autozimu/LanguageClient-neovim', { 'branch': 'next', 'do': 'bash install.sh',
+Plug 'Shougo/deoplete.nvim', { 'do': ':UpdateRemotePlugins' }
+Plug 'prabirshrestha/vim-lsp'
+Plug 'mattn/vim-lsp-settings'
+Plug 'lighttiger2505/deoplete-vim-lsp'

这次变更除了换回 deoplete ,还去掉了陪伴多年的 supertab ,在抄了一段看不懂的配置后,实现了我更为习惯的 tab 键触发补全的方式。

2022

在咖啡馆结束了一天的主要工作后,看着好友 @iwendellsun 流畅的 vim 操作,我问起了它的 nvim 自动补全配置,果然有许多我从未听过的东西。于是趁此机会赶紧向他请教,在他的指导下完成了 2022 年的配置升级。

Commit: 3de43d030ca40b498911c6752a7396af38202fe6

nvim: use nvim-cmp for completion

committed on May 08, 2022

-Plug 'Shougo/deoplete.nvim', { 'do': ':UpdateRemotePlugins' }
-Plug 'prabirshrestha/vim-lsp'
-Plug 'mattn/vim-lsp-settings'
-Plug 'lighttiger2505/deoplete-vim-lsp'
-Plug 'w0rp/ale'
-Plug 'rhysd/vim-lsp-ale'
+Plug 'williamboman/nvim-lsp-installer'
+Plug 'neovim/nvim-lspconfig'
+Plug 'hrsh7th/cmp-nvim-lsp'
+Plug 'hrsh7th/cmp-buffer'
+Plug 'hrsh7th/cmp-path'
+Plug 'hrsh7th/cmp-cmdline'
+Plug 'hrsh7th/nvim-cmp'

这次变更分以下几个方面:

  1. 补全框架从 deoplete 变为 nvim-cmp,我还没细看,不过据说它就是现在的 meta & state of the art.
  2. LSP 集成从 vim-lsp 换成了 nvim-lspconfig 。迟来的官方出品。
  3. 去掉了 ale 和 vim-lsp-ale 。nvim-cmp 可以将 LSP client 返回的错误提示直接在行内显示,不需要再依赖 ALE 这个 linter 框架了。
  4. Last but not least, 这些插件的配置语法几乎都是用 Lua 写的,这让用了 10 年 Vimscript 的我感到极度陌生和恐慌。

相比之前的变更,这是唯一一次生搬硬套而非全部理解的,这次我主要是想快速上车,免得被社区发展抛在了后面,现在实在没有太多精力可以悠闲地慢慢尝试。虽然有人指导免去了初次上手的痛苦,但可以预见的是,想要让这套插件和我的编程习惯完美契合,还有许多坑等着我去折腾呢。

参考链接:

参考配置:

结语

Vim 的 LSP 插件生态还有许多有待优化的空间,开发者们对生产力的追求是永无止境的,下一个 5 年编辑器的体验会有着怎样激动人心的变化,我对此充满期待。

9. 读《枪炮,病菌与钢铁》前两章有感/疑

之前在 V2 上搜集了很多 V 友推荐的书名,然后一顿操作猛如虎,京东上买了 30 多本书。准备今年开始每天晚上不玩手机,而是看书。

还去宜家买了个书柜,买了 LED 灯带,买了装饰灯,营造了温馨的读书氛围。

然后昨天意识到已经五月份了,买的书都还没读过,赶紧开始随机拿一本,定好计划,“明天一定好好读书”。

今天到了。晚上看完勇士队比赛,沐浴更衣,捧起书开始读。

这本书是大部头,但是语言并不晦涩。前沿还是挺吸引我的,”人类为什么会产生分化,不同大洲为什么产生不同的文明,为什么会有征服和被取代“。我回答不了这个问题,所以想读这本书。

  • 第一章:作者大概介绍了人类迁徙的历史(好家伙,几万年从非洲迁徙到亚欧大陆,澳洲和美洲)。
  • 第二章:是不同的环境造就了不同的文明,不同的发展方向。作者用波利尼西亚群岛群岛举的例子。这里我学到了一个地理 /历史常识:即波利尼西亚群岛竟然遍布那么广,整个赤道附近都被覆盖。古人也太能迁徙了。我愿意为波利尼西亚只是夏威夷群岛(在夏威夷的时候参观过“波利尼西亚”遗址,以为是当地文化)。甚至复活节岛,斐济岛这些都算。几乎覆盖了地球一圈。

现在放下书,又觉得好像除了上面两条,也没“收获”其他的“知识”。那么问题来了:

  • 这本书是本历史书吗?
  • 这么厚的书慢慢看,好像收获并不多。我这样读完,也只是“打卡”,即使做笔记,做摘录,最后读完可能还是“打卡式阅读”。那么这种“打卡”有意义吗?
  • V 友们怎么看这本书? 又怎么定位日常的非技术(目的不是为了掌握编程技能),非娱乐(不是莫欺少年穷的爽文)的阅读行为呢?
10. 号外!阿里小号重新放号了

20 分钟前刚刚申请好一个号码,年费 36 元。

11. [虚拟主机]-分享个免费的虚拟主机

各位白嫖党嫖来嫖去, 是日嫖, 周嫖, 月嫖, 年嫖还是永久嫖了

[ Vmhost ]

  • 免费主机永久托管在线

  • ¥ 0.00 / 终身

  • 每月流量: 800G

  • 硬盘容量: 800G

  • 支持: PHP MySQL PhpMyAdmin

  • 免备案, 无广告, 即开即用, 99.9% 稳定保障!

  • 纯粹的免费, 无忧的使用, 不再担心会跑路

  • Vmhost 传送门

img

12. 求一个 12 代 U 的小主机方案建议
15 年组装的主机最近主板故障频频(微星 B85-E45,不知道是不是定位低,品质差),网口坏了,主板时间已经常不对,估计是大限到了,准备随便配个机器。
不玩游戏,不剪视频,显卡需求为 0 。其实感觉 ITX 方案最适合我的需求,无奈现在 ITX 主板太少,普遍比 matx 还贵 1000 多,总感觉不值。需求:服役时间尽可能长( i-12700 ,32g 内存),噪音小,运行稳定可靠性高(主板华硕或者微星,稳定耐用为主,不需要等显卡所以扩展性要求不高,就是希望尽量小;散热风冷,图个稳定),机箱尽可能小,平时就是炒股、office 处理、看奈飞 4k 。

配置单:
cpu:12 代 i7-12700
主板:微星迫击炮 wifi 或者华硕重炮手 /ROG B660I GAMING WIFI D5 ( itx 方案 但是华硕官网找不到这个主板)
内存(ddr5 需求不明确):宇瞻 ddr4 3200 (有必要更高频率吗?) 16gx2
固态(500G):三星 980PRO 500GB
机械(CMR 大容量):西数黑盘 2T
电源(不用给显卡留余量):安钛克 Antec NE550 金牌全模组 550W
散热(风冷):利民
机箱(尽可能小):没想好

各位 V 友提提意见或者开阔思路下也好,谢谢!