title: Weekly 2021-02-0x01description: [hackettyu’weekly]
1.1. Articles
1.1.1. 一个人的年终总结
1.1.2. Chaos 工程 dns 数据
data:dns: https://chaos.projectdiscovery.io/#/
We actively collect and maintain internet-wide assets’ data, this project is meant to enhance research and analyse changes around DNS for better insights.
1.1.3. 四行 Python 代码实现管道
1.1.4. 混沌工程原则
1.1.5. Github Aciton 的十个技巧
https://www.chenshaowen.com/blog/10-tips-of-github-action.html
1.2. Note
1.2.1. MDN
MDN(可选链操作符): https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/可选链
MDN(管道操作符): https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/管道操作符
MDN(Nullish_coalescing_operator?空值合并操作符): https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Nullish_coalescing_operator
1.2.2. npm ci
尝试用 npm clean install 代替 npm install
1.2.3. Github Action
GA: https://docs.github.com/cn/actions/learn-github-actions/introduction-to-github-actions
Github Action 官方介绍
使用 Github Action cache
GA: https://docs.github.com/cn/actions/guides/storing-workflow-data-as-artifacts
Github Action 之间传递数据
1.2.4. 过滤器模式备忘清单
您可以在路径、分支和标记过滤器中使用特殊字符。
: 匹配零个或多个字符,但不匹配 / 字符。 例如,Octo 匹配 Octocat。
**: 匹配零个或多个任何字符。
?:匹配零个或一个字符。 例如 Octoc?t 匹配 Octocat。
+: 匹配一个或多个前置字符。
[] 匹配列在括号中或包含在范围内的一个字符。 范围只能包含 a-z、A-Z 和 0-9。 For example, the range[0-9a-z] matches any digit or lowercase letter. 例如,[CB]at 匹配 Cat 或 Bat,[1-2]00 匹配 100 和 200。
!:在模式开始时,它将否定以前的正模式。 如果不是第一个字符,它就没有特殊的意义。
字符 、[ 和 ! 是 YAML 中的特殊字符。 如果模式以 、[ 或 ! 开头,必须用引号括住模式
1.2.5. GraphQL
GraphQL schema
1.2.6. Chrome feature: Real search box
- 可以在
Chrome://flag中开启 Real search box
Real search box in New Tab Page
Enables a search box in the middle of the NTP that will accept input directly (i.e. not be a “fake” box). Search results will show below the non-fake input (“realbox”). – Mac, Windows, Linux, Chrome OS
1.2.7. gRPC
RESTfull HTTP JSON
RESTfull 是一种资源状态转换的架构风格,也可以用来实现 RPC, 互联网对 HTTP 超广泛的支持,使得这相当简单,也是大多数情况下的首选。
通过 HTTP 协议来进行内容传输,Header 用来约定编码、body 大小等,彼此以\r\n来分割,Header 和 body 之间通过两个连续的\r\n来间隔,能很容易地区分不同的请求。
通过 Url 和对应参数来标示要调用的方法和参数。在 body 中用 JSON 对内容进行编码,极易跨语言,不需要约定特定的复杂编码格式和 Stub 文件。在版本兼容性上非常友好,扩展也很容易。
众多的优点使得这种方案广受欢迎。不过也有其无法避开的弱点:
HTTP 的 header 和 Json 的数据冗余和低压缩率使得传输性能差
JSON 难以表达复杂的参数类型,如结构体等
1.2.8. /missing-semester-cn
移动
多数时候你会在正常模式下,使用移动命令在缓存中导航。在 Vim 里面移动也被成为 “名词”, 因为它们指向文字块。
基本移动: hjkl (左, 下, 上, 右)
词: w (下一个词), b (词初), e (词尾)
行: 0 (行初), ^ (第一个非空格字符), $ (行尾)
屏幕: H (屏幕首行), M (屏幕中间), L (屏幕底部)
翻页: Ctrl-u (上翻), Ctrl-d (下翻)
文件: gg (文件头), G (文件尾)
行数: :{行数} 或者 {行数}G ({行数}为行数)
杂项: % (找到配对,比如括号或者 / / 之类的注释对)
查找: f{字符}, t{字符}, F{字符}, T{字符}
查找/到 向前/向后 在本行的{字符}
, / ; 用于导航匹配
搜索: /{正则表达式}, n / N 用于导航匹配
编辑
所有你需要用鼠标做的事, 你现在都可以用键盘:采用编辑命令和移动命令的组合来完成。 这就是 Vim 的界面开始看起来像一个程序语言的时候。Vim 的编辑命令也被称为 “动词”, 因为动词可以施动于名词。
i 进入插入模式
但是对于操纵/编辑文本,不单想用退格键完成
O / o 在之上/之下插入行
d{移动命令} 删除 {移动命令}
例如, dw 删除词, d$ 删除到行尾, d0 删除到行头。
c{移动命令} 改变 {移动命令}
例如, cw 改变词
比如 d{移动命令} 再 i
x 删除字符 (等同于 dl)
s 替换字符 (等同于 xi)
可视化模式 + 操作
选中文字, d 删除 或者 c 改变
u 撤销, 重做
y 复制 / “yank” (其他一些命令比如 d 也会复制)
p 粘贴
更多值得学习的: 比如 ~ 改变字符的大小写
计数
你可以用一个计数来结合“名词” 和 “动词”, 这会执行指定操作若干次。
3w 向前移动三个词
5j 向下移动5行
7dw 删除7个词
修饰语
你可以用修饰语改变 “名词” 的意义。修饰语有 i, 表示 “内部” 或者 “在内“, 和 a, 表示 ”周围“。
VIM
多窗口
用 :sp / :vsp 来分割窗口
同一个缓存可以在多个窗口中显示。
1.3. Share
1.3.1. Javascript 2020 年度调查问卷
Javascript 2020 年度调查问卷,介绍 Javascript 社区中各种框架及技术的使用情况,我们还可以了解到 Javascript 的发展趋势
1.3.2. React 官方介绍的 testing 实践
1.3.3. Gentoo linux 的安装介绍
https://wiki.gentoo.org/wiki/Handbook:AMD64/Full/Installation/zh-cn
1.3.4. WTF Javascript
Github: https://github.com/denysdovhan/wtfjs/blob/master/README-zh-cn.md
箭头函数不能作为构造器
考虑下面的例子:
let f = function() {
this.a = 1;
};
new f(); // -> { ‘a’: 1 }
现在,试着用箭头函数做同样的事情:
let f = () => {
this.a = 1;
};
new f(); //
1.3.5. Javascript 关于时间处理的库:momentjs
library: https://momentjs.com/
