惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V2EX - 技术
V2EX - 技术
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
T
Threat Research - Cisco Blogs
T
The Exploit Database - CXSecurity.com
S
Schneier on Security
S
Securelist
P
Privacy & Cybersecurity Law Blog
Scott Helme
Scott Helme
T
Threatpost
C
Cybersecurity and Infrastructure Security Agency CISA
L
LINUX DO - 热门话题
Cyberwarzone
Cyberwarzone
Cisco Talos Blog
Cisco Talos Blog
量子位
博客园 - Franky
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Latest news
Latest news
T
Troy Hunt's Blog
N
News | PayPal Newsroom
Google Online Security Blog
Google Online Security Blog
Apple Machine Learning Research
Apple Machine Learning Research
N
Netflix TechBlog - Medium
小众软件
小众软件
P
Palo Alto Networks Blog
Spread Privacy
Spread Privacy
C
Cyber Attacks, Cyber Crime and Cyber Security
C
Check Point Blog
aimingoo的专栏
aimingoo的专栏
WordPress大学
WordPress大学
L
Lohrmann on Cybersecurity
L
LINUX DO - 最新话题
D
Darknet – Hacking Tools, Hacker News & Cyber Security
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
The Last Watchdog
The Last Watchdog
S
Security @ Cisco Blogs
P
Privacy International News Feed
Last Week in AI
Last Week in AI
Microsoft Security Blog
Microsoft Security Blog
T
Tailwind CSS Blog
博客园_首页
云风的 BLOG
云风的 BLOG
V
Vulnerabilities – Threatpost
D
DataBreaches.Net
Recent Announcements
Recent Announcements
酷 壳 – CoolShell
酷 壳 – CoolShell
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
罗磊的独立博客
Engineering at Meta
Engineering at Meta
Forbes - Security
Forbes - Security
T
Tenable Blog

极客兔兔

Go sync.Cond | Go 语言高性能编程 Go 死码消除与调试(debug)模式 | Go 语言高性能编程 Go sync.Once | Go 语言高性能编程 Go 逃逸分析 | Go 语言高性能编程 2020 年终总结 | 极客兔兔 Go struct 内存对齐 | Go 语言高性能编程 Go 空结构体 struct{} 的使用 | Go 语言高性能编程 控制协程(goroutine)的并发数量 | Go 语言高性能编程 | 极客兔兔 如何退出协程 goroutine (其他场景) | Go 语言高性能编程 如何退出协程 goroutine (超时场景) | Go 语言高性能编程 Go 语言陷阱 - 数组和切片 | Go 语言高性能编程 减小 Go 代码编译后的二进制体积 | Go 语言高性能编程 Go Reflect 提高反射性能 | Go 语言高性能编程 读写锁和互斥锁的性能比较 | Go 语言高性能编程 | 极客兔兔 for 和 range 的性能比较 | Go 语言高性能编程 切片(slice)性能及陷阱 | Go 语言高性能编程 | 极客兔兔 字符串拼接性能及原理 | Go 语言高性能编程 | 极客兔兔 pprof 性能分析 | Go 语言高性能编程 benchmark 基准测试 | Go 语言高性能编程 Go 语言高性能编程 | 极客兔兔 Go 接口型函数的使用场景 | 极客兔兔 Python 简明教程 | 快速入门 | 极客兔兔 Go 语言笔试面试题(代码输出) | 极客面试 | 极客兔兔 动手写RPC框架 - GeeRPC第七天 服务发现与注册中心(registry) | 极客兔兔 动手写RPC框架 - GeeRPC第六天 负载均衡(load balance) 动手写RPC框架 - GeeRPC第五天 支持HTTP协议 | 极客兔兔 动手写RPC框架 - GeeRPC第四天 超时处理(timeout) | 极客兔兔 动手写RPC框架 - GeeRPC第三天 服务注册(service register) 动手写RPC框架 - GeeRPC第二天 支持并发与异步的客户端 | 极客兔兔 动手写RPC框架 - GeeRPC第一天 服务端与消息编码 | 极客兔兔 7天用Go从零实现RPC框架GeeRPC | 极客兔兔 Go 语言笔试面试题(并发编程) | 极客面试 | 极客兔兔 Go 语言笔试面试题(基础语法) | 极客面试 | 极客兔兔 Go 语言笔试面试题汇总 | 极客面试 | 极客兔兔 Go Context 并发编程简明教程 | 快速入门 Go Mmap 文件内存映射简明教程 | 快速入门 动手写ORM框架 - GeeORM第七天 数据库迁移(Migrate) | 极客兔兔 动手写ORM框架 - GeeORM第六天 支持事务(Transaction) | 极客兔兔 动手写ORM框架 - GeeORM第五天 实现钩子(Hooks) | 极客兔兔 动手写ORM框架 - GeeORM第四天 链式操作与更新删除 | 极客兔兔 动手写ORM框架 - GeeORM第三天 记录新增和查询 | 极客兔兔 动手写ORM框架 - GeeORM第二天 对象表结构映射 | 极客兔兔 动手写ORM框架 - GeeORM第一天 database/sql 基础 SQLite 常用命令 | 速查表(Cheat Sheet) 7天用Go从零实现ORM框架GeeORM | 极客兔兔 动手写分布式缓存 - GeeCache第七天 使用 Protobuf 通信 动手写分布式缓存 - GeeCache第六天 防止缓存击穿 | 极客兔兔 动手写分布式缓存 - GeeCache第五天 分布式节点 | 极客兔兔 动手写分布式缓存 - GeeCache第四天 一致性哈希(hash) | 极客兔兔 Go Mock (gomock)简明教程 | 快速入门 动手写分布式缓存 - GeeCache第三天 HTTP 服务端 动手写分布式缓存 - GeeCache第二天 单机并发缓存 | 极客兔兔 Go Test 单元测试简明教程 | 快速入门 7天用Go从零实现分布式缓存GeeCache | 极客兔兔 Go WebAssembly (Wasm) 简明教程 | 快速入门 Go RPC & TLS 鉴权简明教程 | 快速入门 Go Protobuf 简明教程 | 快速入门 Go语言动手写Web框架 - Gee第七天 错误恢复(Panic Recover) Rust 简明教程 | 快速入门 | 极客兔兔 Go语言动手写Web框架 - Gee第六天 模板(HTML Template) 百宝箱 - 值得收藏的工具网站 | 极客兔兔 Go语言动手写Web框架 - Gee第五天 中间件Middleware | 极客兔兔 Go语言动手写Web框架 - Gee第四天 分组控制Group | 极客兔兔 Go语言动手写Web框架 - Gee第三天 前缀树路由Router | 极客兔兔 博客折腾记(七) - Gitalk Plus | 极客兔兔 Go语言动手写Web框架 - Gee第二天 上下文Context | 极客兔兔 Go2 新特性简明教程 | 快速入门 | 极客兔兔 博客折腾记(六) - 不要为了流量忘记了初心 | 极客兔兔 Go语言动手写Web框架 - Gee第一天 http.Handler | 极客兔兔 7天用Go从零实现Web框架Gee教程 | 极客兔兔 Go Gin 简明教程 | 快速入门 Go 语言简明教程 | 快速入门 | 极客兔兔 机器学习笔试面试题 11-20 | 极客面试 | 极客兔兔 机器学习笔试面试题 1-10 | 极客面试 | 极客兔兔 机器学习笔试面试题汇总 | 极客面试 | 极客兔兔 TensorFlow 2 中文文档 - RNN LSTM 文本分类 TensorFlow 2 中文文档 - TFHub 迁移学习 TensorFlow 2 中文文档 - 卷积神经网络分类 CIFAR-10 TensorFlow 2 中文文档 - 保存与加载模型 TensorFlow 2 中文文档 - 过拟合与欠拟合 TensorFlow 2 中文文档 - 回归预测燃油效率 TensorFlow 2 中文文档 - 特征工程结构化数据分类 TensorFlow 2 中文文档 - IMDB 文本分类 TensorFlow 2 中文文档 - MNIST 图像分类 TensorFlow 2 / 2.0 中文文档 TensorFlow 2.0 (九) - 强化学习 70行代码实战 Policy Gradient 博客折腾记(五) - 友链这件事,没那么简单 | 极客兔兔 博客折腾记(四) - 原创资格是争取来的 | 极客兔兔 TensorFlow 2.0 (八) - 强化学习 DQN 玩转 gym Mountain Car TensorFlow 2.0 (七) - 强化学习 Q-Learning 玩转 OpenAI gym 博客折腾记(三) - 主题设计、彩蛋与阅读量翻倍 | 极客兔兔 TensorFlow 2.0 (六) - 监督学习玩转 OpenAI gym game 博客折腾记(二) - 对搜索引擎的理解 | 极客兔兔 博客折腾记(一) - 极致性能的尝试 | 极客兔兔 Pandas 数据处理(三) - Cheat Sheet 中文版 TensorFlow 2.0 (五) - mnist手写数字识别(CNN卷积神经网络) TensorFlow入门(四) - mnist手写数字识别(制作h5py训练集) | 极客兔兔 TensorFlow入门(三) - mnist手写数字识别(可视化训练) | 极客兔兔 Pandas 数据处理(二) - 筛选数据 | 极客兔兔 Pandas 数据处理(一) - DataFrame 与 Series
WSL, Git, Mircosoft Terminal 等常用工具配置
2019-12-03 · via 极客兔兔

Git

用户与鉴权

1
2
3
4
5
6
7
8
9
10
11
12

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"


git config --global user.name <username>
git config --global user.email <email@example.com>


git config --global credential.helper store


git config --global submodule.recurse true

alias 提高效率

1
2
3
4
5
git config --global alias.co checkout
git config --global alias.ci commit
git config --global alias.st status
git config --global alias.br branch
git config --global alias.logg "log --graph --decorate --all"

配置了 alias,就可以简化相应的 Git 命令,例如 git status 可以简化为 git st

Git 的 git log 并不能显示其他的分支,以及分支之间的树形关系,所以额外添加很多的参数,因此,适合用 git logg 这么一个别名来代替。

对比一下`git log` 和 `git logg` 的差异。

git log 不能够显示分支之间的树形关系,git logg可以。

1
2
3
4
5
6
7
8
9
10
11
commit 68b7f2f13b73cfdaeadc022eb02181714449186c (HEAD -> master, origin/master, origin/HEAD)
Author: geektutu <geektutu@example.com>
Date: Mon Nov 25 00:08:01 2019 +0800

fix title

commit b65de90b15ef78c12b2ac9346520c873504b361c
Author: geektutu <geektutu@example.com>
Date: Mon Nov 25 00:01:13 2019 +0800

add quick rust
1
2
3
4
5
6
7
8
9
10
$ git logg
* commit 68b7f2f (HEAD -> master, origin/master, origin/HEAD)
| Author: geektutu <geektutu@example.com>
| Date: Mon Nov 25 00:08:01 2019 +0800
|
| fix title
|
| * commit 01dfa04 (origin/dependabot/npm_and_yarn/lodash-4.17.15)
|/ Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
| Date: Sun Nov 24 16:01:47 2019 +000

结合 --oneline 参数很方便地浏览提交记录。

1
2
3
4
5
6
7
8
9
10
11
$ git logg --oneline
* 68b7f2f (HEAD -> master, origin/master, origin/HEAD) fix title
| * 01dfa04 (origin/dependabot/npm_and_yarn/lodash-4.17.15) Bump lodash from 4.17.11 to 4.17.15
|/
| * 387e6da (origin/dependabot/npm_and_yarn/lodash.merge-4.6.2) Bump lodash.merge from 4.6.1 to 4.6.2
|/
| * 32a2929 (origin/dependabot/npm_and_yarn/mixin-deep-1.3.2) Bump mixin-deep from 1.3.1 to 1.3.2
|/
* b65de90 add quick rust
* 228f94a update comments.js
...

WSL (Ubuntu)

Windows 10 下内置了微软Linux子系统(Windows Subsystem for Linux, WSL),对于使用 Windows 作为主力开发的童鞋们,生产力可以得到极大的解放。

安装

  • 第一步,在 PowerShell (管理员权限) 中以命令行方式开启 Linux 特性,并重启
1
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
  • 第二步,在微软应用商店(Microsoft Store)搜索 Ubuntu 并安装。

命令行方式或离线安装请参考:WSL Install - Microsoft

配置

  • 权限问题

第一个问题,磁盘挂载到Linux下时,所有的权限都被变为了 777,如果需要保持 Linux 下的习惯(文件夹 755,文件644),则需要额外配置 /etc/wsl.conf

vim /etc/wsl.conf,添加如下配置,这样在 Windows 中新建文件夹和文件,将以 755/644 的权限创建:

1
2
[automount]
options = "metadata,umask=22,fmask=11"

第二个问题,WSL 中创建文件夹和文件,仍旧是 777 的权限,因为 WSL 的 umask 默认值为 0000,需要修改为0022

vim ~/.profile,添加

1
umask 0022

修改完上述两个文件,并不会即时生效,需要执行以下命令关闭 WSL 服务,再重新打开。

cmd 中执行 wsl -t Ubuntu 或在 PowerShell 执行 Restart-Service LxssManager

wsl -t <DistributionName>,中的 DistributionName 可以通过 wsl -l 查询到

1
2
3
C:\Users\admin>wsl -l
适用于 Linux 的 Windows 子系统:
Ubuntu (默认)

附:如果在 Visual Studio Code (VS Code) 中 使用了 Remote - WSL 打开 WSL 中的文件夹,会发现 umask 0022 仍没有生效,在 VS Code 中创建的文件夹权限仍旧是 777,则需要将umask 0022添加到~/.vscode-server/server-env-setup(不存在则新建)中。VS Code 连接 WSL 时会执行该脚本,可以用以下命令快速添加,重新启动 VS Code 即可生效。

1
echo "umask 0022" | tee -a ~/.vscode-server/server-env-setup

参考:WSL Config - Microsoft
参考: Updates to wsl.conf no longer immediate - Github

Mircosoft Terminal

微软新开发的命令行程序,可以算是良心之作了,同样可以在 Microsoft Store 中搜索安装。支持多页签切换,支持选择不同的 Shell,结合 WSL 使用,显示效果也非常棒。

Ctrl + , 可以打开配置文件(json 格式),也可以点击下拉框中的 Settings

  • 第一步,将 defaultProfile 的值修改为 WSL 的 guid,这样默认打开就是 WSL 的 Shell 了。

  • 第二步,为了让 Terminal 的快捷键和 Linux 更接近,还可以设置快捷键。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
"keybindings": [
{
"command": "closeTab",
"keys": ["ctrl+w"]
},
{
"command": "newTab",
"keys": ["ctrl+t"]
},
{
"command": "paste",
"keys": ["shift+insert"]
}
],
"copyOnSelect": true

默认的快捷键:

1
2
3
4
ctrl + tab 
ctrl + shift + c
ctrl + shift + v
ctrl + shift + 1/2/3

新增快捷键:

1
2
3
4
ctrl + w 
ctrl + t
shift + insert
copyOnSelect

参考 Terminal SettingsSchema - Github

待更新


专题: 工具

本文发表于 2019-12-03,最后修改于 2026-02-23。

本站永久域名「 geektutu.com 」,也可搜索「 极客兔兔 」找到我。


上一篇 « Rust 简明教程 下一篇 » Go语言动手写Web框架 - Gee第七天 错误恢复(Panic Recover)