macOS 默认自带的是英文输入法,虽然也有简体中文,不过词库不丰富,不太好用。一般会选择安装一个第三方的输入法,这时就会有两个输入法共存了。
Boo's Blog
Stay foolish, Stay hungry
macOS 默认自带的是英文输入法,虽然也有简体中文,不过词库不丰富,不太好用。一般会选择安装一个第三方的输入法,这时就会有两个输入法共存了。
整理这篇笔记的目的是整理那些不太常用但又十分有用的Google 搜索引擎搜索技巧。
最近使用Mac 时,被告知磁盘空间严重不足了,我心想最近又没有下载什么大文件,怎么会突然满盘了。
最近在使用git 时,需要克隆Bitbucket
的一个仓库,于是像往常一样打开了iTerm
,便放在一边了。
直到一个小时后,我才想起来,想着应该克隆完了,打开才发现百分之一都没下载完。
强大的长城技术对GitHub、Bitbucket 这类源代码托管服务平台网开一面,并没有像Google、FaceBook那样直接一刀切,但是它做了严格的限速,这种折磨简直比无法访问更难受。
上图中git clone
的速度从来没有超过 10k/s
,这也就意味着一个 100M
的项目,需要近三个小时才能下载完,而且由于网络的不稳定性,下载过程中偶尔会出现断开连接的情况,由于git clone
不支持端点续传,这就会导致前几个小时的下载量完全浪费掉了,只能重新开始下载。
这篇文章主要用来介绍几种方式可以快速的克隆远程仓库。
git clone
默认会下载项目的完整历史版本,如果你只关心代码,而不关心历史信息,那么可以使用 git 的浅复制功能:
1 | $ git clone --depth=1 https://github.com/bcit-ci/CodeIgniter.git |
--depth=1
表示只下载最近一次的版本,使用浅复制可以大大减少下载的数据量,例如,CodeIgniter 项目完整下载有近 100MiB ,而使用浅复制只有 5MiB 多,这样即使在恶劣的网络环境下,也可以快速的获得代码。
如果之后又想获取完整历史信息,可以使用下面的命令:
1 | $ git fetch --unshallow |
或者,如果你只想下载最新的代码,你也可以直接从远程仓库下载打包好的zip
文件,这会比浅复制更快,因为它只包含了最新的代码文件,而且zip
是压缩文件。但是很显然,使用浅复制会灵活一些。
如果你有幸正在使用代理,懂得如何科学上网的话,那么访问GitHub
、Bitbucket
对你来说应该不在话下。
从源代码托管服务平台下载项目最简单的方法就是使用一款图形化界面(GUI
)的Git工具。
使用GUI
工具方便之处就在于,可以在设置中直接配置是否使用代理。或者直接将代理配置尾系统代理。
如果你跟我一样,更喜欢使用原生的git
命令,喜欢使用在命令行下操作的那种感觉,那么你也可以在命令行下直接配置代理。
这里也有两种方式,根据实际情况自行选择。
1 | $ git config --global http.proxy http://127.0.0.1:1087 |
或者直接编辑~/.gitconifg
文件
1 | # vim ~/.gitconfig |
1 | $ git config --global http.proxy socks5://127.0.0.1:1086 |
其中,1087
、1086
分别是你本地机器的 http
、socks5
代理的端口号。
另外,如果想取消设置,可以输入以下命令:
1 | $ git config --global --unset http.proxy |
配置完成后,重新 clone
一遍,可以看到速度得到了极大的提升。
注意⚠️
上面这种配置方式仅适用于 https
协议,如果你在clone
时选择ssh
协议,那么速度仍然会很慢。
如果你觉得上面的方式太麻烦了,或者是你没有代理,那么可以试试下面这种方式。
这种方式简单暴力,替换就可以直接使用,使用规则如下:
1 | # 原地址 |
只需要在github.com
后面追加一个.cnpmjs.org
就可以了。
以上就是git clone
太慢时的各种解决办法。
问题描述:今天本来打算使用Homebrew 更新一个工具,但是输入完brew updata
之后,就一直是Updating Homebrew...
这个时候,我产生了几个疑问:
首先先回答一下上面那些问题,因为国内网络环境进一步恶劣,使得从根本上造成了这个问题的产生。因为Shadowshocks
的全局代理虽然对浏览器是有效,但对命令行无效。
所以这一切的问题可以总结成一个问题:如果能让终端命令走代理就好了。
好在Homebrew 是支持全局代理的,所以我们只需要在当前命令行环境中加入代理配置就好了。
1 | export ALL_PROXY=socks5://127.0.0.1:1080 |
如何知道终端命令有没有走代理?
有一个很简单的方法,那就是通过Curl 命令:
1 | curl https://www.google.com |
如果走了本地代理,那么很快终端就会有输出,如果没有走则会提示403 端口请求超时。
需要注意的是,上面的配置仅仅只是临时的,如果重启一下终端,这个配置就失效了,那么有没有办法可以永久生效呢?
当然是有的,只需要将环境变量写入终端中。
1 | # bash |
这样,Homebrew 就能通过 Shadowsocks
来更新了。
每当手上有两台或多台电脑时,如果想传送一个文件,第一个想到的就是微信、QQ等这类工具。
如果碰到了大一点的文件,就得换成网盘或者移动硬盘。
身为一个做开发者,这种做法比较low,所以找了几篇文章学习到了如何在局域网内共享文件。