git忽略文件的集中途径

  • 配置core.excludesfile,该文件中记录了需要忽略的文件列表
  • ~/.config/git/ignore
  • repo库中的info/exclude
  • commit树中的.gitignore

更多详情可参考官方文档:
https://git-scm.com/docs/gitignore

git远程追踪分支的建立方法

本地分支不存在,创建追踪分支

git branch <localbranch> [--track] <remote>/<branch>

起点为远程分支时--track可省略。

本地分支不存在,创建追踪分支,同时切换到该分支

git checkout <branch> # 只有一个remote时,自动追踪remote同名分支

git checkout --track <remote>/<branch> # 使用远程分支名称作为本地分支名

git checkout -b <localbranch> [--track] <remote>/<branch> # 指定本地分支名称,起点为远程分支时--track可省略

本地分支已存在,建立或更新上游追踪

git branch -u <remote>/<branch> [<localbranch>]

省略localbranch时使用当前branch。

本地分支已存在,在推送的同时建立或更新追踪关系

git push -u <remote> <localbranch>:<remotebranch>

git push -u <remote> <branch>    #本地branch名称与远程相同

参考资料

https://segmentfault.com/a/1190000002783245

《深入理解ES6》中文翻译及编排bug

第3章 函数

元属性(Metaproperty)new.target (55页)
通常是新创建对象实例,也就是函数体内this的构造函数
应为
通常是构造函数,它用于创建对象实例,作为函数体内的this
原文
https://github.com/nzakas/understandinges6/blob/master/manuscript/03-Functions.md#the-newtarget-metaproperty
oshotokill翻译版本
https://github.com/OshotOkill/understandinges6-simplified-chinese/blob/master/chapter_3.md#元属性-newtargetthe-newtarget-metaproperty

箭头函数语法 第二小节(60页)
即使没有显式的返回语句
根据原文,应保留return关键字
即使没有显式的return语句
原文
https://github.com/nzakas/understandinges6/blob/master/manuscript/03-Functions.md#arrow-function-syntax
oshotokill翻译版本
https://github.com/OshotOkill/understandinges6-simplified-chinese/blob/master/chapter_3.md#箭头函数语法arrow-function-syntax

第5章 解构

引言
解构是一种打破数据解构
应为
解构是一种打破数据结构

对象解构 第二小节(90页)
也是用来从options对象读取相应值的属性名称
应为
也是用来从node对象读取相应值的属性名称
原文
https://github.com/nzakas/understandinges6/blob/master/manuscript/05-Destructuring.md#object-destructuring

默认值 最后一小节 (93页)
此处没有node.value属性,因为value使用了预设的默认值
应为
此处没有node.value属性,因此value使用了预设的默认值

第6章 Symbol

Symbol.match, Symbol.replace, Symbol.search 和 Symbol.split Symbols 属性
示例代码 [Symbol.split] 函数
return value.length === 10 ? [, ] : [value];
应为
return value.length === 10 ? [””, “”] : [value];
原文
https://github.com/nzakas/understandinges6/blob/master/manuscript/06-Symbols.md#the-symbolmatch-symbolreplace-symbolsearch-and-symbolsplit-symbols

Symbol.match, Symbol.replace, Symbol.search 和 Symbol.split Symbols 属性
示例代码

let replace1 = message1.replace(hasLengthOf10),
    replace2 = message2.replace(hasLengthOf10);

console.log(replace1);          // "Hello world"
console.log(replace2);          // "Hello John"

应为

let replace1 = message1.replace(hasLengthOf10, "Howdy!"),
    replace2 = message2.replace(hasLengthOf10, "Howdy!");

console.log(replace1);          // "Hello world"
console.log(replace2);          // "Howdy!"

原文
https://github.com/nzakas/understandinges6/blob/master/manuscript/06-Symbols.md#the-symbolmatch-symbolreplace-symbolsearch-and-symbolsplit-symbols

第7章 Set集合与Map集合

Set集合的forEach()方法
forEach的第一个参数(134页)
Set集合中下一次索引的位置
应为
Set集合中下一个位置的
原文
https://github.com/nzakas/understandinges6/blob/master/manuscript/07-Sets-And-Maps.md#the-foreach-method-for-sets
142页Map集合的forEach()方法也存在同样的问题。

第8章 迭代器(Iterator)和生成器(Generator)

异步任务执行器
示例代码3之后 第一小节(179页)
如果没有错误产生,data被传入task.run()
应为
如果没有错误产生,data被传入task.next()
原文
https://github.com/nzakas/understandinges6/blob/master/manuscript/08-Iterators-And-Generators.md#asynchronous-task-runner

第9章 JavaScript中的类

为何使用类语法(184页)
中修改类名会导致程序报错
应为
类方法中修改类名会导致程序报错
原文
https://github.com/nzakas/understandinges6/blob/master/manuscript/09-Classes.md#why-to-use-the-class-syntax

为何使用类语法 最后一小节(185页)
尽管可以在不使用new语法的前提下实现类的所有功能
应为
尽管可以在不使用新语法的前提下实现类的所有功能

在类的构造函数中使用new.target
第二小节 (208页)
等价于Rectangle的nwe.target
应为
等价于Rectangle的new.target

第12章 代理(Proxy)和反射(Reflection)

原型代理陷阱 末小节(281页)
paroxy
应为
proxy

第13章 用模块封装代码

导出的基本语法 示例代码(317页)
export multiply;
应为
export { multiply };
原文
https://github.com/nzakas/understandinges6/blob/master/manuscript/13-Modules.md#basic-exporting

我的Atom设置

"*":
  core:
    automaticallyUpdate: false
    restorePreviousWindowsOnStart: "no"
    telemetryConsent: "no"
    openEmptyEditorOnStart: false
  editor:
    atomicSoftTabs: false
    fontSize: 14
    showInvisibles: true
    showIndentGuide: true
    softTabs: false
    tabLength: 4
    tabType: "hard"
  "line-ending-selector":
    defaultLineEnding: "LF"
  welcome:
    showOnStartup: false

《JavaScript面向对象精要》中文翻译及编排bug

第1章

引言
开发者选择模仿……
应为
一些开发者选择模仿……

1.4.2节 定义数组的字面形式
用逗号区分的任意数量的值
应为
用逗号分隔的任意数量的值

第2章

2.4节 重载 第一小节
JavaScript语言根据实际传入的参数决定调用函数的哪个版本
应为
该类语言(指上文提到的其他面向对象语言)根据实际传入的参数决定调用函数的哪个版本

第3章

3.8节 总结 末小节
Object.prevent Extensions()
应为
Object.preventExtensions()

第4章

4.1节 第4、第8处示例代码
instanceofPerson
应为
instanceof Person

第6章

6.1.2节 代码示例2 getAge方法
returnage;
应为
return age;

卸载ECS上阿里云盾程序

卸载套路云方法一

wget http://update.aegis.aliyun.com/download/uninstall.sh 
chmod +x uninstall.sh 
./uninstall.sh 

卸载套路云方法二

wget http://update.aegis.aliyun.com/download/quartz_uninstall.sh 
chmod +x quartz_uninstall.sh 
./quartz_uninstall.sh 

卸载残留

pkill aliyun-service 
rm -fr /etc/init.d/agentwatch /usr/sbin/aliyun-service 
rm -rf /usr/local/aegis* 
iptables -I INPUT -s 140.205.201.0/28 -j DROP 
iptables -I INPUT -s 140.205.201.16/29 -j DROP 
iptables -I INPUT -s 140.205.201.32/28 -j DROP 
iptables -I INPUT -s 140.205.225.192/29 -j DROP 
iptables -I INPUT -s 140.205.225.200/30 -j DROP 
iptables -I INPUT -s 140.205.225.184/29 -j DROP 
iptables -I INPUT -s 140.205.225.183/32 -j DROP 
iptables -I INPUT -s 140.205.225.206/32 -j DROP 
iptables -I INPUT -s 140.205.225.205/32 -j DROP 
iptables -I INPUT -s 140.205.225.195/32 -j DROP 
iptables -I INPUT -s 140.205.225.204/32 -j DROP 
屏蔽套路云盾 IP 

内容来源:https://www.v2ex.com/t/388454#r_4718005

我的VScode设置

{
    "editor.renderWhitespace": "selection",
    "editor.insertSpaces": false,
    "editor.tabCompletion": "on",
    "editor.autoIndent": "full",
    "editor.formatOnPaste": true,
    "editor.formatOnType": true,
    "editor.fontFamily": "'Cascadia Mono PL', 'JetBrains Mono', Consolas, 'Courier New', monospace",
    "files.eol": "\n",
    "explorer.autoReveal": false,
    "workbench.tree.indent": 18
}