Homebrew 国内下载慢的解决之法及下载过程剖析


对懂点技术的人来说, HomeBrew 几乎成为了 MacOS 上的必装软件,主打一个安装方便,在终端一个命令即可安装配置好。MacOS 下使用的软件大致分为两类: 一类是如 fdneovim 在终端下使用的软件,另一类是如 Google Chrome 的 GUI 软件,通常可在 Apple Store 下载。 终端安软件安装方式: brew install <formula>,GUI 软件安装方式: brew install --cask <cask>,其中的 <formula><cask> 均为你想安装的软件名称, 如果不确定具体名称,可通过: brew search <keyword>搜索。 在国内网络环境下,在 MacOS 上安装软件时,通常会卡在如下所示的流程:

等了好久也没见动静,这是因为默认下载源是从 GitHub 数据中心下载,国内对 GitHub 有限制。

解决办法:配置国内镜像源

目前国内主流的 Homebrew 镜像有:清华大学、阿里云、中科大、腾讯云等。以清华源和阿里云为例,介绍配置方法。

1. 配置清华源

替换 Homebrew 源

#替换 brew.git
cd "$(brew --repo)"
git remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git

# 替换 homebrew-core.git
cd "$(brew --repo homebrew/core)"
git remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-core.git

# 替换 homebrew-cask.git
cd "$(brew --repo homebrew/cask)"
git remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-cask.git

# 配置 bottle 镜像(formula 二进制)
# 推荐写入 ~/.zshrc 或 ~/.bash_profile
export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles

# 立即生效
source ~/.zshrc  # 或 source ~/.bash_profile

# 更新 brew
brew update

2. 配置阿里云源

# 替换 brew.git
cd "$(brew --repo)"
git remote set-url origin https://mirrors.aliyun.com/homebrew/brew.git

# 替换 homebrew-core.git
cd "$(brew --repo homebrew/core)"
git remote set-url origin https://mirrors.aliyun.com/homebrew/homebrew-core.git

# 替换 homebrew-cask.git
cd "$(brew --repo homebrew/cask)"
git remote set-url origin https://mirrors.aliyun.com/homebrew/homebrew-cask.git

# 配置 bottle 镜像
export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.aliyun.com/homebrew/homebrew-bottles
source ~/.zprofile  # 或 source ~/.bash_profile
brew update

其他镜像如中科大、腾讯云等配置方法类似,详见各镜像站帮助文档。

Read more ⟶

0-3 岁孩子应该培养的关键能力


家里有一个快两岁的孩子,我一直在思考,该如何科学地养育他,需要培养哪些核心能力,使他成为一个身心健康、积极上进的人,而不是一味关注他参加多少辅导班、课外兴趣班,或计较他吃得胖瘦。带着这些思考,我咨询了多个“名导”——OpenAI 4o-mini、Kimi、DeepSeek R1等,整合了他们的回答,整体很满意,在自己受用的同时也分享给大家,希望能给有孩子的家长带来一些启发,下面是我整理的内容:

0-3 岁是儿童发展的关键期。此时大脑突触连接数量达到高峰,感官、认知、社交与情感等多方面发展迅速。皮亚杰的感知运动阶段理论、埃里克森的心理社会发展理论,以及哈佛大学、UNESCO 和 WHO 等权威研究,都强调了这一阶段丰富感官刺激、稳定亲子互动与系统性早教的重要性。基于这些理论与实证,个人认为 0-3 岁阶段最应着重培养以下五大关键能力:

  1. 运动能力(Gross & Fine Motor)
  2. 语言能力(Language)
  3. 感官能力(Sensory Integration)
  4. 认知能力(Cognition)
  5. 社交能力(Social-Emotional)

1. 运动能力(Gross & Fine Motor)

运动能力可分为大运动与精细运动:

  • 0-12 个月:重点练习俯卧抬头、翻身、坐稳、爬行等大运动;在 6-12 个月间加入摇铃抓握、拇指对捏、撕纸等精细动作。
  • 12-24 个月:培养独立行走、蹲起、爬梯等大运动,同时进行搭积木、倒水、串珠子等精细练习。
  • 24-36 个月:鼓励跑、跳、单脚站立、平衡木行走等,以提升身体协调与平衡;通过涂鸦、剪纸等活动丰富精细运动体验。
Read more ⟶

Japanese Word Series - Countries


Countries

Hiragana漢字English
にほん日本Japan
ちゅうごく中国China
かんこく韓国Korea
アメリカAmerica
イギリスUnited Kingdom
インドIndia
インドネシアIndonesia
タイTailand
ドイツGermany
フランスFrance
ブラジルBrazil
Read more ⟶

Japanese Word Series - Vegetables & Meat


Vegetables

単語中文
トマト西红柿
ししとう青椒
唐辛子(とうがらし)辣椒
きゆうに黄瓜
かぼちゃ南瓜
冬瓜(とうがん)冬瓜
ゴーヤ苦瓜
オクラ秋葵
なす茄子
ジャガイモ土豆
山芋(やまいも)山药
蓮根(レンコン)莲藕
人参(にんじん)胡萝卜
大根(だいこん)白萝卜
サマネギ洋葱
さつまいも红薯
レタス生菜
ほうれん草菠菜
ネギ大葱
ニラ韭菜
ブロッコリー西兰花

Meat(にく)

単語中文
牛肉(ぎゅうにく)牛肉
豚肉(ぶたにく)猪肉
鶏肉(とりにく)鸡肉
魚(さかな)

References

Read more ⟶

Janpanese Word Series - Fruits


Fruits

単語中文
バナナ香蕉
ぃんご苹果
梨(なし)
桃(もも)
オレンジ橙子
金柑金桔
ぶどう葡萄
いちご草莓
ライチ荔枝
レモン柠檬
ラズベリー树莓
ヤマモモ杨梅
ゆず柚子
マンゴスチン山竹
マンゴ芒果
マルーベリー蓝莓
桑の実(くわのじつ)桑葚
キウイ猕猴桃
柘榴(ざくろ)石榴
スイカ西瓜
Read more ⟶

技术图谱


以下是我根据个人经验整理的技术图谱,主要是为了做技术梳理,同时希望能够给予别人一点帮助,后续会不定期更新。

/images/tech-map.png

Read more ⟶

MacOS 环境批量安装软件


最近工作使用的电脑新换到 MacBook Pro M1 13寸,平时工作使用的各种工具 & 软件都需要重新安装 & 配置,耗时耗力而且没有太多成就感,所以一直在思索如何将其自动化掉,避免每次换电脑都要做重复的劳动。自己平时安装各种软件比较依赖 HomeBrew,印象中它有提供 Brewfile 可以批量安装软件,只是自己一直没有使用起来。刚好趁这次机会拿来练练手,一来总结经验以备下次复用,二来分享出来希望可以帮助到他人。下面分享下我是如何使用 Brewfile 批量安装工作必备软件的。

1. 前提

使用 Brewfile 进行批量安装前,需要安装:

另外若在 Brewfile 中指定 mas 从 AppleStore 安装软件,请保证 AppleID 已登录。

2. 列出所需软件清单,形成 Brewfile

在批量安装前,列出自己平时工作所需的软件,在任意目录下创建名为 Brewfile 的文件,文件内容及格式可以参考我目前使用的 Brewfile 来声明:

# taps
tap "homebrew/bundle"
tap "homebrew/cask"
tap "homebrew/core"

# packages
brew 'vim'
brew 'git'

brew 'zsh'
brew 'tmux'
brew 'ripgrep'
brew 'bat'
brew 'helix'
brew 'jq'
brew 'mas'

# tools
cask 'emacs'
cask 'google-chrome'
cask 'notion'
cask 'alfred'
cask 'warp'
cask 'intellij-idea-ce'
cask 'sequel-pro'
cask 'clashx'
cask 'tunnelblick'

# language
# cask 'java'
brew 'go'
brew 'cmake'
brew 'maven'
brew 'yarn'

# install apps from apple store: 1. mas search <keyword>, find id 2. add one line below 
mas "MindNode", id: 1289197285
mas "CopyClip", id: 595191960
mas "QQ音乐", id: 595615424

文件内容主要分为四部分:

Read more ⟶

域名是如何解析的?


基本概念

我们生活在互联网时代,每天的工作生活几乎都在与互联网打交道,比如使用 Google 查找工作学习所需资料,使用 Youtube、抖音、网易云音乐等进行娱乐活动,通过 Twitter、微博、微信等获取新闻资讯及社交,使用京东、天猫、拼多多等购物,使用微信支付、支付宝支付进行付款等,这些都离不开网络。那么作为构成网络基础设施核心之一的域名(Domain)你知道是如何工作的吗?下面我们简单展开介绍下。

所有的信息都存储在服务器上,可通过 IP 地址访问获取,但通常 IP 地址难以记住,于是乎产生了域名概念。起初网络仅有少数服务器构成,域名到 IP 的映射信息可存储在单个文件(eg: /etc/hosts),随着网络的蓬勃发展,单文件难以容纳所有的域名IP 映射关系,同时映射关系变更时,难以及时同步至各服务器,于是 DNS(Domain Name System) 协议诞生,映射关系通过 DNS 服务器集中存储,用户根据所需向 DNS 服务器查询。那么 DNS 服务器是如何来存储域名映射关系的呢?这个映射关系是谁来负责写入的呢?下面来揭晓。

Read more ⟶

Emacs 常用基本操作


Emacs 作为 Programmer 熟知的两大 Editor 之一流行了很多年了,据说学习曲线陡峭,一直处于劝退状态。但作为喜欢折腾各种工具的自己来说,内心一直有跃跃欲试的想法,终于最近两个月得闲,开始研究学习上了。通过学习官网Tutorials 熟悉其基本操作 & 配置,同时 Google 了解 Emacs 使用频次最高的一些插件,在使用过程中不断优化配置,打造成自己趁手的工具。目前,我主要有三种使用场景: 1. 文本编辑 2. 代码阅读 3. 写业余代码。以下是我在学习过程中整理的常用基本操作,分享出来一方面是当作学习笔记输出,以便后续遗忘时快速查找,另一方面也希望能带给他人一些帮助。

目前的常用操作有:

  • 单文件操作
  • 光标移动
  • 复制(copy) & 粘贴(paste)
  • 插入(insert) & 删除(delete)
  • 撤销(undo) & 重做(redo)
  • 窗口操作
  • 阅读代码常用操作
  • 查看帮助文档

在使用 Emacs 时,有几个关键概念:

  • Buffer
  • Window
  • Frame
  • Mode

请自行查阅文档了解。

注:C-h 表示按住 Ctrl 键的同时按 h 键;M-x 表示按住 Alt/Meta 键的同时按 x 键; S-p f 表示按住 Windows 键,再依次按 p f 键。

Read more ⟶

MySQL 数据库优化


MySQL 数据库优化可从以下方面着手:

  1. SQL 语句优化
  2. 索引优化
  3. 锁优化
  4. 缓存优化
  5. InnoDB 存储引擎优化

1. SQL 语句优化

  • 检查 select 的 where 条件是否走索引,可用 explain 查看。
  • 最小化全表扫描次数。
  • 定期使用 ANALYZE TABLE 以保持表的统计信息是最新的。

更多,请参考: https://dev.mysql.com/doc/refman/8.0/en/select-optimization.html

2. 索引优化

参考: https://dev.mysql.com/doc/refman/8.0/en/optimization-indexes.html

3. 锁优化

参考: https://dev.mysql.com/doc/refman/5.7/en/locking-issues.html

4. 缓存优化

参考: https://dev.mysql.com/doc/refman/5.7/en/buffering-caching.html

5. InnoDB 存储引擎优化

5.1 InnoDB 存储磁盘 I/O 优化

5.1.1 参数 innodb_buffer_pool_size

innodb_buffer_pool_size 一般调为系统内存的 50%~75%。

5.1.2 参数 innodb_flush_method

InnoDB 默认为 fsync,但在一些 GNU/Linux 或 Unix 发行版下,fsync 刷新缓存文件至磁盘非常慢,可将 innodb_flush_method 调整为 O_DSYNC

5.1.3 参数 innodb-fsync-threshold

InnoDB 默认为 0,可调整 innodb 缓存阈值,避免单次大文件缓存刷盘。

Read more ⟶