Tuesday, May 3, 2022

V2EX - 技术

V2EX - 技术


重装系统和更换机器时,各种软件和设置的迁移成本太大了,装软件、更驱动、调设置、配环境总要折腾好几天,有解吗?

Posted: 03 May 2022 11:07 AM PDT

现在 Java 转 go 是不是个好时机?

Posted: 03 May 2022 11:06 AM PDT

目前一年 Java 开发经验,初中的时候入坑了 pascal 、python ,后来一直主学 c ,之前也一直瞧不上 Java ,认为是烂大街语言,会的人太多,什么杂七杂八的培训班机构都在教,但迫于就业压力,大四关在宿舍自学了一学期 Java ,从实习到现在都在做 Java 开发,但感觉还是变扭,看 Java 始终不太顺眼,不是我的"本命"语言,但如今再转嵌入式或者 c++也不现实,去年年底一些契机接触了 go (入坑的主要原因也是听说 ken Thompson 参与了 go 的设计)用起来感觉很对胃口,陆续读完了 go 圣经,平常摸鱼的时候也会看看 github 上的开源项目,平时会用 go 写写小工具来写协助开发(文本文件批处理、并发 http 请求之类的),主要现在 java 越来越卷,实在是不想背那些八股文

阿里云国际 HK 轻量新开服务上 SS 立马被阻断端口

Posted: 03 May 2022 10:58 AM PDT

一直用腾讯云的轻量 HK 区的,线路比之前差了,后来发现阿里云的轻量现在恢复 30M 的带宽了,又准备换回阿里云国际轻量去,今天去开了 2 次 HK 的轻量,ip 都是 47 开头的,结果发现一部署好 SS 后,一打开 Google YouTube 的,立马被阻断端口,本地无法链接过去,不过我在 ping.pe 里测试了一下,国内国外又是正常,搞不懂这是怎么回事了,有没大佬帮忙分析一下?

pdf.js 开发问题

Posted: 03 May 2022 10:55 AM PDT

各位前端大佬,最近在做 pdf.js 的二次开发,怎么实现 https://pdfjs.express/的文本选中效果?看着是在 canvas 上直接实现的 avatar

macos12(Monterey)目前可以升级吗? bug 什么的修复的怎么样了?我还停留在 bigsur

Posted: 03 May 2022 10:54 AM PDT

我关心的是 bug 和软件兼容性方面,我用的是 intel 平台的黑苹果,但是我看了一下黑苹果升级问题挺多的,苹果好像改了显卡的一些东西

请教各位 C++的老哥,发布程序的时候,需要打成 rpm、deb 包吗?

Posted: 03 May 2022 10:36 AM PDT

自己平时在工作中,发布或者更新 C++程序时,直接发布一个文件夹,里面包含了可执行程序和相关的依赖库。用户下载下来,替换更新。

请问各位老哥:

  1. 你们发布程序的时候会打包成 rpm 、deb 格式的包吗?如果打包的话用的是什么工具?如何检测 CentOS 、Ubuntu 等不同平台的?
  2. 打包发布程序的时候,如何和 systemd 配合,使用 systemctl 来管理?
  3. 行业里面,比较规范的做法是什么?

考研为什么不建议去双非呢?

Posted: 03 May 2022 10:35 AM PDT

如题,有人说去双非浪费时间,也有人说去双非没事,大多岗位对研究生来自什么学校的不敏感

大家怎么看的

aiohttp 发送大量请求时,有些请求丢失

Posted: 03 May 2022 10:32 AM PDT

用 async 去异步执行函数 a 和函数 b,函数 a 用的 aiohttp 发送请求,发多一个,函数 b 用的 asyncio.to_thread 开多线程去执行同步操作(requests),发送请求很多个,同时运行 a 和 b,b 正常运行,但是 a 的请求丢失了,不返回内容,也捕获不到异常.但是单独运行 a,a 就正常运行,各位大佬们,这是怎么回事?

物色一台支持通话录音超长续航的小手机

Posted: 03 May 2022 09:52 AM PDT

又想买 iPhone 了,但是 iPhone 始终是不支持通话录音。看过几个 iPhone 通话录音的方案,感觉都不太好。

  • app 转接。有一种自己的通话都被暴露给别人的感觉
  • 多卡宝。同上。而且没有网的时候就 sb 了
  • 支持录音的 TWS 。比如讯飞的 flybuds
  • 能打电话的 eSIM 智能手表。用手表接电话很怪,而且 Apple Watch 肯定是不行的。

需求:

  • 比 iPhone 13 mini 小。这样平时带两个手机出门也不觉得累赘。
  • 续航长。起码两天一冲吧,告别充电焦虑。必要的时候还可以打电话挺好。
  • 支持通话录音和通话录音导出
  • 最好支持微信支付宝。现在手机没有微信支付宝出门跟没带手机一样。

目前看了一圈,也就多亲手机能满足需求了?其他的飞利浦诺基亚好像都没有通话录音的功能。

其实大厂小厂都不是问题

Posted: 03 May 2022 09:47 AM PDT

前提待遇差不太多,最重要的还是看自己做的东西有没有 ownership 。屎山固然可恶,但是如果是自己创造出来的屎山,自然就感观良好了。最重要的是,自己完成了一个大项目,至于之后的事情,让别人去操心吧!

看 Bank Python 相关文章和讲座有感。当初堆屎山的人功成名就,去一个又一个投行创造新的屎山,享受了造轮子的乐趣,又享受了到处演讲的成就感,至于之后进来吐槽屎山的人。。。不好意思没人关心你。

关于刚接触 react 后的感想

Posted: 03 May 2022 09:41 AM PDT

  • 最近刚接触 react, 就一个使用者而言, 感觉不是很舒服
  1. 感觉 react 的上下兼容性很差
  2. 网上关于 react 问题的记录太少吧, 搜个问题, 基本上都搜不到

求个 Arch Linux 的详细安装教程

Posted: 03 May 2022 09:38 AM PDT

网上有很多教程,文本教程也有,视频教程也有,但都不太适合新手,也有一些内容太过于老旧了,不适合最新的系统版本。

所以特来此求个适合新手,有图文配对,也适合最新( 2022.05.01 )版本的操作系统安装。

图文最好,视频也好。感谢。

今天在 csdn 注册了一个账号

Posted: 03 May 2022 09:26 AM PDT

测试一下,离上一次用 csdn 有 10 多年了,客观说,它产品进步还是很明显,markdown 编辑器达到了业内一流水平。

大家批评最多的是 csdn 和阿里云腾讯云等网站开启了一股内容农场玩弄 SEO 的逆流,这种手法是十几年前李想他们做中关村在线,汽车之家就开始的,当时获利甚丰,还总结了一套方法论到处传播

没想到了 2020 年代又开始了,复古?

MDN 上线了新的服务, MDN Plus

Posted: 03 May 2022 08:29 AM PDT

MDN Plus (页面还没有翻译)

大概看了一下,目前有三个功能

  • 可以关注某个页面,内容更新会有提醒
  • 内建的收藏夹,以及当前账号的最近浏览记录
  • 支持 PWA 模式中的离线浏览

不知道理解有没有偏差(逃

官方的说明页面
以及挂在 Mozilla 里的帮助页面

vscode SSL 自动登录死活设置不上

Posted: 03 May 2022 08:19 AM PDT

检查了一遍,自己已经把.ssh/id_rsa.pub 的文件内容导入到服务器的 authorized_keys 里,为此我还重走了一遍教程流程,仍旧连接后提示要密码,搜了下网上的教程说是 /etc/ssh/sshd_config 有部分设置要改,但是 sshd_config 里设置好

RSAAuthentication yes PubkeyAuthentication yes  AuthorizedKeysFile      .ssh/authorized_keys .ssh/authorized_keys2  

然后重启 sshd 服务以后还是要密码,已经不知道怎么办了。

服务器系统是 Ubuntu 20.04, 我用的客户机是 Windows 系统。

[arthas] 你们的生产环境会放 arthas 嘛

Posted: 03 May 2022 07:38 AM PDT

请个问题,你们的生产环境会放 arthas 嘛。

线上我们分析问题,从来不用这个。

都是看 log 链路日志

steam++和 steam302 这类工具是靠什么来绕过限制的呢

Posted: 03 May 2022 07:09 AM PDT

目前我知道的限制有以下三种,这类工具应该没有三方服务器做代理,是本地去除了 2 、3 点的特征吗
- ip 黑名单
- sni 阻断
- dns 污染

服务器磁盘突然写入巨慢问题

Posted: 03 May 2022 06:48 AM PDT

问题现象

生产环境有个 mysql 从库服务器,只装了 mysql ,出现了 2 次磁盘写入巨慢的情况

先看图,磁盘正常写入速度 OkgRgA.png

磁盘写不动 OkgvD0.png

从凌晨 3 点开始,磁盘突然写不动,并且 IO 耗时巨高,每秒只能写入 1 、2 MB

与之带来的问题是 MySQL 主从延迟越来越高

出问题的 2 次都是在夜间自动执行了 MySQL 表优化,就是这个语句

optimize table `table_name`; 

表引擎是 MyISAM ,并且都是大表,一张表 索引长度+数据长度 超过 50G

解决过程

第一次出问题搞了一整天,因为这台服务器只装了 MySQL 服务,也没有其他进程。

/var/log/messages 也没有发现异常

MySQL 错误日志也没发现异常

服务器系统环境是 centos6.5 , 4 块物理盘做的 raid5 阵列

首先是重启 MySQL ,磁盘写入依然慢

重启系统,没用

各种 百度 Google 都没发现有效线索

一度认为是物理磁盘坏了,但是磁盘是在线状态

最后关机,进入 bios 查看硬盘状态,没有做任何操作,开机后磁盘写入速度恢复正常了

这时候我怀疑是关机了一段时间后在开机,磁盘写入才恢复,但是不确定

第二次出问题后,先关机了 10 分钟,10 分钟后开机磁盘写入速度恢复正常

这时候可以确定要先关机一段时间,磁盘才能恢复正常,重启无效

疑问

虽然磁盘写入速度恢复了,但是问题点还是没找到,为什么磁盘会突然写不动?

如果是因为 optimize table table_name; 这个语句操作了大表,但是另外 2 个从库服务器没这种情况

最诡异的是重启无效,要关机一段时间再开机才能恢复

这种情况 Google 也不知道用什么关键词?

有大佬遇到过这种情况,或者知道是什么原因么?

求推荐手机与电脑(windows)无线文件快速互传软件或方案

Posted: 03 May 2022 04:32 AM PDT

1 、无损互传
2 、支持大文件
3 、尽量不走服务器
4 、尽量不要安装客户端或只需其中一个设备安装客户端

大家都在用什么方法进行文件互传?

--------
QQ 、微信、网盘这些方法忽略...要的是那种速度快,尽量不需要登录等繁琐的操作的方法。

苦于这种 bug 没见过不知道怎么处理, 特上来求助..

Posted: 03 May 2022 03:40 AM PDT

微信开发群里突然谁 @了我一下, 然后就说有人说钉钉浏览器中图片上传不上去, 然后说我想联系一下这个人不让我联系, 后面让我联系对方又说好了. 我转发回复我的回复用来回复 @我的消息说好了, 不乐意. 说有问题. 刚开始没有测试机, 用自己的手机做开发测试的, 是可用的. 后面有了测试机用测试机测试又是好的. 你说是好的, 可有人说看到过是坏的, 看代码有看不出问题, 都用的是原先他们定的上传图片的 SDK, 最后说是 SDK 用的姿势不对, 换了个姿势, 测试过了说是好的, 然后就上到了线上. 第二天听会, 又让测试提问题, 突然又提到说是坏的..我还能说什么呢? 好的也是你在说, 坏的也是你在说. 你都复现不了, 让我也复现不了, 这修复啥, 万一把好的修复坏了怎么办? 说是坏的又不能提供必要的信息, 在什么情形下是坏的, 坏了多久, 也不帮忙解决问题, 想让我一个人在那儿摸瞎. 最后说, 另一个上传的地方是好的, 那一个地方刚好没有用到 SDK, 而是用的 http 接口, 好吧, 这是让我把他们早定好的 SDK 给改了, 改了之后上线说好了. 难道又是我的锅? 又不提供帮助, 让我在这里瞎改, 好的坏的反正都是闹着玩的.

大周末的. 又见 线上突然出 bug 怎么找?有感.

VSCode 又酷又实用的多光标编辑

Posted: 03 May 2022 03:09 AM PDT

如果要说 VSCode 哪个特性极大的提高了编码效率,多光标编辑绝对是其中之一。多光标编辑让我们避免重复进行相同的文本操作,VSCode 内建的和第三方扩展提供的文本处理命令更是能极大的增强多光标编辑的灵活性。希望通过阅读这篇文章,能够教会读者如何在日常编辑中灵活运用多光标编辑。

内容大纲:

  • 如何添加多光标
  • 移动光标
  • 选中文本
  • 删除文本
  • 文本处理命令
  • 多光标实战示例
  • 多光标编辑外更好的选择

如何添加多光标

通用的方法

按住 ⌥ 键不放,再将光标移动到任何你想添加光标的地方直接点击就会增加一个光标。

通用的方法

添加光标的快捷键

VSCode 中和光标相关的快捷键中都有 ⌥ 键

我们可以通过 ⌘+K, ⌘+S 快捷键组合打开 VSCode 快捷键表,搜索 cursor 会列出所有和光标有关的快捷键,搜索 add cursor 就可以查看和 添加光标 相关的快捷键:

VSCode 添加多光标快捷键.png

同一列添加光标:

  • ⌘+⌥+↓: 在下一行同一列添加光标
  • ⌘+⌥+↑: 在上一行同一列添加光标

同一列添加光标演示

添加选区

VSCode 编辑器中可以同时存在多个光标,也可以同时存在多个选区。在 VSCode 中大多数添加选区的命令,添加选区的同时也会添加一个光标。因此我们可以利用添加选区的快捷键来添加多光标。

常用的有:

  • ⌘+D:添加选区到下一个查找到的匹配,如果匹配到多个,每触发一次就多添加一个
  • ⌘+⇧+L: 添加选区到所有查找到的匹配

添加选区

上面两个快捷键虽然是说查到到的匹配,实际上使用的时候并不会展开搜索框。

VSCode 提供的命令很多时候是满足对称性的,例如 ⌘+D 是添加选区到下一个查找到匹配,那么大概率就会有一个命令用于添加选区到前一个查到到的匹配。

添加选区快捷键

如过要查找的文本比较复杂,我们可以直接先打开搜索,利用搜索框提供的 大小写忽略匹配整个单词正则 功能来查找复杂的文本,再使用 ⌘+⇧+L 来选中所有。

通过搜索来添加选区

如果已经有一个选区,我们可以使用快捷键 ⌥+⇧+I 来在选区的所有行尾添加光标。如果这个时候你想将光标移动到行首,直接输入 Home 键即可。

下面的例子就是先选中多行,再将光标添加到所有行的行尾,将 TypeScript 的 interface 改成使用逗号来分隔属性:

添加光标到选区行尾

光标移动

多光标编辑的时候显然是不能使用鼠标定位的,这就要求我们使用按键去移动。最基本的上下左右四个箭头,Home, End 键就不用多说了。除此之外,常用的还有每次移动一个单词,或者单词的一部分。

通过搜索 cursor rightcursor end 之类的可以查看和移动光标相关的快捷键:

cursor right

单词级别的移动是非常常用的:

  • ⌥+→:向右移动光标到下一个词尾
  • ^+⌥+→:向右移动光标到单词的下一部分,驼峰,词首和词尾都是停留点

移动一个单词

之前说过 VSCode 命令的对称式设计,⌥+→ 是向右移动到下一个词尾,那么 ⌥ + ← 就是向左移动上一个词首。

而且这里也验证了之前我们说的,和光标相关的快捷键都有 ⌥。所以我们自定义快捷键时,和光标相关的快捷键最好也带上 ⌥。例如可以定义 ⌥+J 为移动到上一个 git change 处,再对称式设计 ⌥+K 移动到下一个 git change 处。方便记忆,也方便搜索。

有些 Mac 用户可能会觉得光标移动太慢,这个可以在 设置 -> 键盘中调节,让光标移动的更丝滑:

按键重复

  • 拖移 重复前延迟 滑块以设置字符开始重复前的等待时间。
  • 拖移 按键重复 滑块以设置字符重复的速率。

建议把 按键重复 速度调快,这样光标移动就会更快更丝滑。

选中文本

在多光标编辑时,最常见操作便是移动,选中,删除,插入等。

移动光标的快捷键加上 ⇧ 就是选中移动区域的快捷键

稍微列举几个例子验证这个规律:

  • → 是向右移动一个字符,⇧+→ 可以向右选中下一个字符
  • ↑ 是向上移动一行,⇧+↑ 就是向上选中一行
  • ⌥+→ 是向右移动到词尾, ⇧+⌥+→ 就是选中光标当前位置到下一个词尾
  • ^+⌥+→ 是向右移动到单词的下一部分, ⇧+^+⌥+→ 就是向右选中单词的一部分

向右选中一个单词

有个需要单独介绍的选中命令是 smart select。我们知道快捷键 cmd + D 可以选中一个单词,但如果想选中一个字符串它就不行了,这个时候可以就可以用智能选中来实现。

  • ^+⇧+→:扩大选中范围
  • ^+⇧+←:减小选中范围

smart select

最近 antfu 有写一个用双击来智能选中文本的扩展,虽然和多光标编辑没啥关系,不过感兴趣的读者可以体验一下:**vscode-smart-clicks**。

删除文本

移动光标的快捷键加上 ⌫ 键就是向左删除光标移动区域的快捷键,加上 fn + ⌫ 就是向右删除光标移动区域的快捷键

Mac 上 ⌘+→ 表示 End 键,⌘+← 表示 Home 键,fn + ⌫ 表示 Delete 键这个规则应该是所有应用都通用的。

  • ⌥+⌫: 向左删除到词首
  • ^ + ⌥+⌫: 向左删除词的一部分

因为 Backspace 本身就带有方向性,因此快捷键里面不需要搭配方向键。

文本处理命令

在多光标编辑时我们可以借助 VSCode 自带的或者第三方扩展提供的命令来快捷插入特定文本或者将选中文本转换成特定文本。

VSCode 内置的有下面几个,以单词 letterCase 举例,转换结果分别为:

  • Transform to Uppercase:LETTERCASE
  • Transform to Lowercase:lettercase
  • Transform to Title Case:LetterCase
  • Transform to Snake Case:letter_case

搜索 transform to 就可以找到所有文本转换命令了

VSCode 内置文本命令

举个实际的使用例子,例如我们要把一堆原本是小驼峰的常量改成全大写:

转换常量为全大写

除了 VSCode 内置的文本处理命令,还可以借助第三方插件,这里推荐:Text Power Tools。推荐理由:维护积极,功能丰富。

功能非常多,读者可以查看扩展主页自行了解。我觉得如果你没有探索精神和折腾的能力估计也看不到文章这里了。我这里只演示一下插入数字的功能:

插入数字

有能力的读者也可以自己编写 VSCode 扩展去实现更多的插入,转换,甚至删除等文本处理命令。需要注意的是实现的时候要处理所有选中,例如笔者的 VSCode 扩展 VSCode FE Helper 实现的将选中单词变复数的扩展是下面这样实现的。代码很简单。可以注意到里面遍历了所有选区,所以在多光标编辑时调用这个命令时能够处理所有选中:

import { TextEditor } from 'vscode';  export default async function plur(editor: TextEditor): Promise<void> {   const { default: pluralize } = await import('pluralize');   editor.edit((editorBuilder) => {     const { document, selections } = editor;     for (const selection of selections) {       const word = document.getText(selection);       const pluralizedWord = pluralize(word);       editorBuilder.replace(selection, pluralizedWord);     }   }); } 

pluralize

多光标实战示例

接下来我会演示几个我平时用到多光标的几个例子。对于不熟悉多光标编辑的朋友可能看着会有点复杂,不过自己实操一遍多练练应该就没问题。我平时开发的时候经常会用到多光标编辑,但没有文中演示的那么丝滑,可能步骤也不是最少的,但还是比重复编辑效率高多了。也会经常输错,但是没关系反正可以撤回嘛。

替换 var

众所周知,当你学会了 ctrl + c, ctrl + v ,你已经是个初级程序员了。当你不但能够抄代码还能够改别人的代码,那么你已经是个成熟的程序员了。学会了多光标编辑,可以大大提高那我们修改代码的效率。

当我们从 stackoverflow 抄了一段 JS 代码下来,可能里面有很多 var ,我们可以利用多光标编辑来将所有 var 替换成 let 。

Steps:

  1. 将光标定到 var 上
  2. ⌘+⇧+L ,来选中所有 var
  3. 输入 let

替换 var

安装多个 node package

有时新开了一个项目,我会需要安装很多 eslint 插件。最开始我的做法是是到之前项目的 package.json 中把包名一个一个抄过来,那太麻烦了。有人说,你咋不直接把包名和版本号一块复制到新项目的 package.json 就好了,不那样做主要是之前项目的包版本号不一定是最新的,新项目需要安装最新的版本。

Steps:

  1. 打开 package.json ,把光标定到第一个包名
  2. ⌘+Alt+↓ 添加多个光标到多个包名
  3. ^+⇧+→,利用 smart select 选中包名并 ⌘+C 复制
  4. ⌘+N ,新建一个临时文件,⌘+V 粘贴过去
  5. 把光标定到第二行的行首,⌘+Alt+↓ 往下面同一列添加多光标
  6. 先 ⌫,再敲一个空格就可以把整个文本复制到 terminal 了

安装多个 node package

重构 react router path 为枚举

原代码:

function App() {   return (     <HashRouter>       <Routes>         <Route index element={<Home />} />         <Route path="/settings" element={<Settings />} />         <Route path="/collection" element={<Collection />} />         <Route path="/notFound" element={<NotFound />} />       </Routes>     </HashRouter>   ); } 

将原本字符串形式的路由重构为枚举类型:

export function App() {   return (     <HashRouter>       <Routes>         <Route index element={<Home />} />         <Route path={RoutePath.Settings} element={<Settings />} />         <Route path={RoutePath.Collection} element={<Collection />} />         <Route path={RoutePath.NotFound} element={<NotFound />} />       </Routes>     </HashRouter>   ); }  enum RoutePath {   Settings = '/settings',   Collection = '/collection',   NotFound = '/notFound', } 

挑选这个例子主要是因为操作过程中用到了文本处理命令来处理大小写问题,由于步骤太多,大家就直接看动图演示吧:

重构 react route path

实现 LetterMapper 类型

在我 TypeScript 类型体操实例解析 这篇文章中有实现过一个将字符串字面量类型中所有字符转换成大写的类型:

type LetterMapper = {   a: 'A';   b: 'B';   c: 'C';   d: 'D';   e: 'E';   f: 'F';   g: 'G';   h: 'H';   i: 'I';   j: 'J';   k: 'K';   l: 'L';   m: 'M';   n: 'N';   o: 'O';   p: 'P';   q: 'Q';   r: 'R';   s: 'S';   t: 'T';   u: 'U';   v: 'V';   w: 'W';   x: 'X';   y: 'Y';   z: 'Z'; };  type CapitalFirstLetter<S extends string> = S extends `${infer First}${infer Rest}`   ? First extends keyof LetterMapper     ? `${LetterMapper[First]}${Rest}`     : S   : S; 

这个 LetterMapper 类型手敲会觉得很浪费光阴,让我们用多光标编辑酷炫的实现它:

Letter Mapper

多光标编辑之外的选择

VSCode 作为编辑器界的新生代王者,集百家之众长,除了多光标编辑还有很多可以提高编码和重构效率的特性。例如:

  • F2 重命名符号,批量替换变量名可以的话就不要用多光标编辑
  • Snippets ,曾经在 twitter 看到有人发帖说写了一下午的 react 组件,结果人家一个 snippet 就整完了
  • Code Actions On Save ,在保存文件的时候自动添加缺失的 imports ,格式化,lint 的 auto fix 等
  • Auto fix 和 fix all ,如果你用了自动保存就不能用 Code Actions On Save 了,不过你可以手动调用自动修复和修复所有
  • 各种格式化扩展,例如使用 prettier 格式化代码风格,JS/TS Import/Export Sorter 格式化 imports

等等。作为一个 VSCode 老玩家,我都觉得 VSCode 还有很多使用的功能特性地方我没探索到。众所周知,折腾编辑器,折腾 shell ,折腾系统,是程序员的三大乐趣。充满未知才会有趣,才能让我们热此不疲,让我们每一次发现新大陆的时候感叹自己以前的无知。

总结

多光标编辑是 VSCode 一个非常实用的特性,熟练掌握光标的移动,选中,删除和一些常用的文本处理命令可以让我们使用多光标编辑时更加得心应手。VSCode 的快捷键设计有它的一套自己的设计哲学,理解它不但有助于我们记忆快捷键,也便于在快捷键表中搜索。在我们自定义快捷键或者编写扩展的提供默认快捷键的时候也应该要参考这套哲学。当你觉得对下前编码重构的效率不满意时,不妨折腾下编辑器,也许能够带给你意外的惊喜。

本文完。

首发于我的 blog 仓库,未经本人允许,禁止转载。

哈希函数的设计

Posted: 03 May 2022 02:37 AM PDT

记得上次看到有哈希表的设计,我觉得那个比较困难。 这里分享一个别人的哈希函数 hash function 的设计文章,读起来大概十五分钟:

https://nullprogram.com/blog/2018/07/31/ https://github.com/skeeto/hash-prospector

Takeaway:

  • 几个现成的哈希函数

  • 如果哈希函数是 1:1 (reversible) 那么是没有哈希冲突的

My focus is on integer hash functions: a function that accepts an n-bit integer and returns an n-bit integer. One of the important properties of an integer hash function is that it maps its inputs to outputs 1:1. In other words, there are no collisions

  • 两个设计和评价哈希函数的角度: 公平和偏离

There are two key properties I'm looking for in randomly generated hash functions. 1. High avalanche effect. When I flip one input bit, the output bits should each flip with a 50% chance. 2. Low bias. Ideally there is no correlation between which output bits flip for a particular flipped input bit.

(我个人觉得这两点都是在说 bias)

用 Dart 开发大前端跨平台的业务和数据层是否可行?

Posted: 03 May 2022 02:30 AM PDT

我是做 iOS 的,但是公司安卓有点拉胯,而且我们产品特性也需要提供 SDK 给其他厂家使用 所以我就在想是否可以开发一个大前端跨平台的业务和数据层,表示层由原生实现将来也可以直接使用 Flutter 跨平台,其他厂家也可以直接调用 API 或者使用原生封装的组件,这样业务和数据就能统一了也好维护 但不太确定是否可行,有大佬给点建议吗?

看着 Ubuntu 22.04 新内核眼馋,目前 Debian 11 stable, 是 backports 安装新内核 还是直接升级到 testing?

Posted: 02 May 2022 06:31 PM PDT

backports 安装新内核 与 直接升级到 testing 两者有啥区别?

以上两种方式得到的 debian 和 ubuntu 22.04 lts 相比,稳定性如何?

backports 会引入兼容性问题么?

主要是想使用下 5.15 内核的 ntfs 驱动。

Linux 下 cpu 信息查看工具

Posted: 02 May 2022 03:20 PM PDT




更新了下开源的 kms 实现代码

Posted: 02 May 2022 02:28 PM PDT

kube kms

魔方 kms ,使用 go 开源的 kms 系统,由于没有 HSM ,因此使用服务器上的证书私钥做密钥派生拿到数据库的 rootkey ,服务器的安全性依靠这张证书私钥来保证。 代码的 github 为 https://github.com/hxndg/qkms ,欢迎提出修改意见

目前支持的功能

  • 用户管理:使用 grpc 的 tls 双向认证做权限控制,每张 CA 签发出来的证书对应一个用户,每个用户证书里面的 subject 需要有不同的 appkey 内容。初始化时如果没有创建 root 用户,会要求输入 root user 的 name ,然后生成 root user 的证书和私钥。后续对第三方用户签发证书私钥可以由 root user 进行管理。root user 拥有一切权限,root user 可以创建其他角色;查看 ak ;吊销用户证书等功能。
  • 角色管理:可以将 namespace 的 read/wirte 权限赋予给某个 role ,再将某个 role 赋予给相对应的用户(用户使用 appkey 区分),从而用户可以作为某个 namespace 下面的 mainter 。
  • 密钥管理:密钥三层拆封,rootkey ===> key encryption key ===> access key.用户需要先申请创建 key encryption key ,即创建 namespace 。之后即可在该 namespace 下创建对应的 accesskey 。对用户而言,kek 是透明的,
  • 密钥可见性:用户可见的为 Access key ,按照 namespace, name 索引。创建密钥后默认只有用户可读可写,如果用户授权给其他用户相应的读 /写权限,其他用户可以执行相应的操作。

待完成功能

  • kek 轮转,定期更新所管理的 access key

依赖

  • 使用 postgresql 做数据持久化
  • 使用 grpc 的双向 tls 做认证
  • 依赖 casbin 做 rbac 的管理

中间件技术你们都用哪些?

Posted: 02 May 2022 02:26 PM PDT

感觉技术越来越卷,招聘要求中 mongodb,mysql ,redis ,es,mq,zookeeper,Dubbo,spring cloud 几乎是把热门的技术基本都罗列了,不知道实际工作中你们用哪些,反正我是一门语言+mysql+redis ,其他一概没用到,也许是我们项目小吧,不过有那么多大项目?还是中小项目多吧

idea 内存设置失败

Posted: 02 May 2022 01:12 PM PDT

有大佬知道为什么 idea 内存设置总是不生效吗,内存大小一直都是初始的 1024m ,在C:\Users\Kami\AppData\Roaming\JetBrains\IntelliJIdea2022.1 用户文件夹里配置了 -Xms2048m -Xmx2048m 然后重启电脑,重启 idea 还是不生效

Goland 的 Code Completion 反应太慢,需要大概 2s,大家有遇到吗

Posted: 02 May 2022 12:00 PM PDT

GoLand 2022.1 Build #GO-221.5080.224, built on April 14, 2022

内存 4096M

有靠谱的开箱即用的用户认证授权云服务推荐吗?

Posted: 02 May 2022 08:01 AM PDT

本人前端开发,不怎么熟悉后端技术,想要做一个简单的 APP,但是总是卡在注册登陆模块这里,阿里云和腾讯云好像都没有直接可用的服务. 腾讯的 cloudbase 只支持 js,有没有那种支持 js,也支持 Android/ios 的云服务可供推荐的?

请各位大神不吝赐教

求购《代码整洁之道》2020 版本的 pdf

Posted: 02 May 2022 04:01 AM PDT

如题,网上找的 pdf 都是 2010 版本的

No comments:

Post a Comment