Skip to main content
Link
Menu
Expand
(external link)
Document
Search
Copy
Copied
今天我学了什么
Home
Android
ADB
Android Root
Termux
boot.img
C
在 MacOS 中找不到 C 程序的标准头文件
Docker
ContainerD OverlayFS
Containerd
Docker OverlayFS
Docker Run With Namespace
Docker Tag/Id/Digest
Docker for Mac 中磁盘文件占用过大
Docker 安全
Docker 容器与 Cgroup
Docker 的坑
Dockerfile
Podman
Podman netns
device or resource busy
docker desktop
docker for mac
docker macvlan
docker security_opt
docker 代理
docker 多阶段构建 (Multi-Stage Build)
docker 小技巧
docker-compose 启动容器顺序
host.docker.internal
nerdctl
nerdctl 容器
nerdctl 网络
ping: Operation not permitted
rootless containerd
rootless docker 网络
rootless 问题
volume
volume 单个文件到容器
修正 Docker for mac 时区问题
修正 alpine 镜像的时区问题
在 rootless podman 获取不到真实远端 ip
在 rootless 容器中,用非 root 用户无法操作 volume 里的文件
在后台运行 docker 容器且不会自动退出
学习 Docker
客户端连接多个 docker daemon
容器里的 CPU 信息
容器里的 Core Dump
查找 Overlay ID 与哪个容器相关
苹果芯片的 Mac 电脑构建 x86 镜像
进入 docker for mac 的虚拟机
Elixir
tuple 与 list 的选择
尾递归优化
Git
Connection closed by UNKNOWN port 65535
Git Diff
Git sign-off
Git 学习资料
git credentials
git http clone
git proxy
git shallow clone
git ssh 代理
git 小技巧
gitignore 与 gitkeep
grafted commit
–ours vs –theirs
忽略 Git submodule
指定分支与另一个远端仓库绑定
用 shell 脚本查询 git commit hash
Github
Github Markdown 中的锚点引用
Github Template (模板)
Github 下载最新 release 文件
github 中 markdown 折叠文本
在 Github Markdown 中如何填写图片的链接
如何在 github 项目里搜索代码
构建 github page
Go
//go:linkname
GO 汇编
Go Module
Go 语言的几大坑
Golang GC
Golang 学习
Gorutine
go build
go doc
go generate
go tool
go 交叉编译安卓程序
gopls
interface 与 nil
在 MacOS 上使用 gvm install
Java
Java GC
Javascript
JS 保留字
JS 的 fiber 技术
JS 编程技巧
JavaScript 中的相等性判断
Javascript Proxy
Promise 的坑
babel 小技巧
lodash 陷阱
为什么 eval(‘{}’) 返回 undefined ?
使用 Promise 的技巧
尾递归优化
K8S
Cilium
Helm
K8S CSI 开发
K8S Dashboard
K8S Resource Spec
K8S 垃圾回收 (GC)
K8S 学习
K8S 资源规划
K8S 部署踩坑记
Kubespray
OCI、CNI
Pod containerStatuses 的镜像版本与 Pod 指定版本不同
configmap 和 secret 的滚动更新
kubectl 学习
kustomize
多个 Pod 不重复部署在同一个节点上
容器里装 K3S
调试 CrashLoopBackOff 状态的 Pod
重启 Pod 中的容器
Language Server Protocol (LSP)
YAML Language Server
Linux
/usr/bin/env
ABI
Alfred 找不到文件
Alpine Linux
Armbian
Armbian 关闭 swap
BIOS
Block Layer
BootLoader
Busybox
CFS (Completely Fair Scheduler)
CPU
CentOS 与 Debian 文件上的差异
Debian
升级 debian 系统
Device Mapper
ELF 文件
ExtFS (Extended File System)
GNU GRUB
GPG 与 Keybase
Here Strings 与 Here Documents
Hostname in Linux
IO、select、epoll
LVM (Logical Volume Manager)
Linux Thermal 框架
Linux 内核
Linux 内核模块
Linux 文件系统
Linux 日志文件
Linux 系统日志
Linux 系统调用
NTP 时间同步
Netfilter
OverlayFS
PAM
PostmarketOS
SATA 热拔插
SSH
Systemd
networking.service
systemd
systemd-mount
systemd-network
systemd-path
systemd-resolved
systemd-timesyncd
Terminfo
UFW
UNIX Domain Socket
Welcome Message Banner
XDG 基础目录标准
XDP
ZFS
Zsh 的坑
ab 与 wrk 比较
adduser 与 useradd
ag 和 rg
alpine 的 /sbin/init
anon_inode
ansible 部署到 centos7 时,不能找到 service
apt
arch linux
btrfs
clamav
compgen
configfs
conntrack
diff 与 patch
dmesg
dnsmasq
dpkg
du
eBPF 与 XDP
exfat
fakeroot
file 命令
find -print0 的坑
ftrace
gpg
gpg-agent
grep
hash 命令
iconv
iproute2 与 ifconfig 命令
iptables 与 nftables
kconfig
kswapd0
libc
linux 命令被 hash 缓存
lsof 与 fuser
man 命令
mdadm
mkisofs
mount
musl libc
netns
netstat 与 ss
nsenter
perf 命令
rm 命令
rsync 与 scp
rsyslog
scp: Connection closed
sed
shebang
shutdown, poweroff, halt 的不同
sshd -R 参数
strace
sudo and su
sudo 找不到可执行文件
sudoer
sysctl
syslinux
tailf
tar
time 命令
unlink 是删除任何文件
unshare 命令
上下文切换
不需要 root 权限执行 ping
中断
为什么创建 Daemon 进程要 Fork 两次?
修改 Linux 系统语言 (locale)
共享内存
内存的 buffer 和 cache
创建临时文件的命令
判断文件编码
制作 deb 包
命令格式标准
命令行中提示用户 Yes/No
命令行中的乱码
在 alpine 中找不到 setup-apkcache 等 setup-* 命令
在 arch linux 中升级 curl 碰到的问题
在容器中构建 Package
基于内存的虚拟文件系统 tmpfs/ramfs/RamDisk
奇怪的 ESC
安装 Linux 系统
快速创建大文件
快速删文件
快速删除文件
打印环境变量
拆分与合并文件
文件名大小写问题
文件描述符,open file table 与 inode
文件路径
旋转终端屏幕
更改默认 shell
查找 USB 串口设备对应的是哪个 /dev tty 文件
查看进程的环境变量
用别的用户运行命令
用户增加用户组
用户登录与 passwd
用户线程,内核线程,CPU 超线程技术
用环境变量替换文本内容 envsubst
监听 0.0.0.0 与 127.0.0.1 的区别
硬盘分区
硬盘电源管理
硬盘空间占满问题
程序的退出码 (Exit Code)
管道重定向
线程与进程
终端开启真彩色 (true color)
编辑二进制文件
网络接口名称的 @
网络接口配置 (ifcfg)
网络配置工具
虚拟内存
虚拟文件系统 (VFS, Virtual File System)
调用原生 shell 命令
进程中断
进程亲和性 (Processor Affinity)
进程内存
连接 tty
隐藏进程
Lua
lua 正则
lua 没有 continue 关键字
lua 错误处理
Mac
Finder 显示隐藏文件
Homebrew
Mac 下按住键盘不能输出重复的字符
Mac 删除允许在后台运行的设置
Mac 微信备份显示不在同一网络
Mac 快捷键
Mac 的 DNS 问题
Mac 自启动配置 plist
MacOS log
MacOS 通过命令行修改 IP 地址
Tab 键不能切换弹出框的选中焦点
xcode 重新安装
关闭 Mac 的 Gatekeeper
多网卡在 Mac 系统的问题
用命令触发系统通知
Nix
nix flake
nixos installer
nixpkgs
学习 Nix
Nodejs
EJS 渲染引擎的空白问题
Error.captureStackTrace 的 stack 缺少 message 问题
EventEmitter 需要注意的三个地方
Jest
MaxListenersExceededWarning
NodeJS GC
Warning 缺少堆栈信息
Yarn 用法
fs 函数抛出的异常没有堆栈信息
node 中发 ICMP 包
npm publish 不会包含 .gitignore 文件
npm run scripts
npm 发包
npm 命令
nvm 不是一个可执行文件,而是一个函数
report 文件
require 路径名大小写问题
winston 日志库
不要对函数参数重新赋值
命令行的工具和类库
流 (stream)
调整 rejectUnauthorized 选项来容许 https 证书无效
配置 node 开发环境
Python
Python Dockerfile
Python Virtualenv
pycache
python 环境配置
Racket
学习 Racket
Redis
Redis Cluster
拷贝一个 Sorted Set 到新的 key
Ruby
Ruby 代理镜像
使用 scientist 科学重构代码
Shell
Bash 小技巧
Bash 的坑
Bash 镜像有 bug
Readline
Shell 操作文件描述符
bash completion
bash error exit
bash history
bash 开启 vi 模式
printf 打印多行
set 命令
shell 中改变光标样式
修改 console 环境的字体大小
刷新命令的路径缓存
在 console 里滚屏翻页
学习 Bash
学习 Shell
当存在与命令同名的别名,如何调用原命令
终端输入的文字不可见怎么办?
给命令的每一行输出加前缀的方法
Startup
商标注册
Typescript
Typescript 与 Rollup
export default 的类型注明
typescript 的缺点
Vim
<C-I> 在 nvim 里等同于 <Tab>
VIM filetype
VIM 搜索和替换技巧
sudo :write
vim 插件教程
vim-go 出现问题
在 vim 中执行 shell 命令,同时将结果输出到 buffer
在 vim 中运行终端,以及如何退出终端模式
学习 Neovim
学习 Vim
用于调试的最小 neovim 配置
Web
DNS
URI 转义
URL QueryString 传数组参数
Websocket
socket
下划线在 HTTP Header 里是非法字符串
国际化 SEO
看懂 V8 项目代码
Windows
PE 系统
Windows WSL
legend bios 无损转 uefi
winget
在虚拟机里安装 Windows 10
在虚拟机里安装 Windows 11
其他
0.30000000000000004
ASCII 与 ANSI
Alfred Workflow debug 技巧
Chrome 小技巧
Dockerfile 里使用 tini
Duplicati
Hyper.js 中文问题
Jekyll
Jinja2
KB 与 KiB 的不同
Language Server Protocol
Mac 文件系统的剪切快捷键
MacOS 彻底删除搜狗输入法
Makefile
Markdown 里写反引号
NFS
Protocol Buffers
SSL 证书
SSL 证书校验失败
Semver
Today I learned (TIL) 资源列表
UTF-8 vs UTF-16
Ubnt EdgeRouter X (er-x) 刷 OpenWRT
Vagrant DNS
Virtualbox VBoxManage
YAML 中的 Date 类型陷阱
adguard home
aliyun cli
aria2
cloudflare proxy
curl 快速失败
dropbear
editorconfig
fonts.googleapis.com 不可访问
fzf
gRPC
httrack
jellyfin 中文字体
mac 里的 tmux 内无法用 sublime 打开文件
nextcloud
rsync
svn 设置代理加速
teleport
tmux 环境变量
umami.is 网站被反广告规则屏蔽
usbipd 与 Windows WSL
vagrant-vbguest
vim textwidth=78 的约定
vsftpd
wget 爬站
zookeeper 健康检查
一个复杂的小 bug: cd 补全问题
不用 lsblk 查看块设备
为什么 Unicode U+F8FF 是苹果 Logo?
为何 Protobuf 3 移除了 required 和 optional
乱码问题
从微信公众号提取原图
使用 acme.sh 生成证书
修改进程的内存数据
停止词 (Stop Words)
元语法 (Metasyntax)
原码, 反码, 补码
图床
在 Alpine docker 容器里启动 aria2
在梅林固件路由器里安装 AdGuard Home
在浏览器里启动 DoH
在美区 app store 充值
堆外内存
复制粘贴好过手写
如何学习一门编程语言
如何审核代码
如何打开超大文件
如何阅读标准
数据恢复工具
文件命名,下划线还是中划线?
无法在 Tmux 显示图片
时间回跳问题
查看 Chrome 通知历史列表
梅林固件 asuswrt-merlin
正则表达式的小技巧
水快速加热
永久链接
箴言
终端邮件客户端 Mutt
脱字符 (caret)
通过 Hash 密码到 url 来验证密码
零宽字符加密
函数式编程
Cache-Control
chrome 开发者工具观察响应 Failed to load response data
什么是 Monad
重定向 window.location 是异步的
前端
<script async> 与 <script defer>
307 Internal Redirect 与浏览器的 HSTS 功能
CORS
CSS Selector list invalidation
Chrome 浏览器 DNS 解析
Functional CSS
HTTP 缓存机制
Input Method Editor (IME)
Mac 浏览器中显示滚动条
React
Compound Components
ref callback 何时触发?
不要在 render 里直接定义 ref callback
使用 jquery 改变 React 的 input DOM
组件生命周期
Rollup Dynamic Import
SSR (Server Side Render)
Safari 浏览器的类继承 Bug
Webkit 浏览器渲染效率
Webpack Dynamic Import
XMLHttpRequest 的继承者:Fetch
contentEditable
css-modules vs css-in-js
redux 入门
script 和 link 标签的事件属性
wasm
webpack 配置
webpack 配置为数组
z-index
代码分离
使用 [browserify] 和 [uglifyjs]
关于 webpack 2
前端工程的模块控制反转
前端类库打包的注意点
圆角的玩法
奇怪的 parse html
媒体查询的断点设置
学习 Chrome DevTools
富文本编辑器选型
开发一个油猴 (Tampermonkey) 脚本
弹性滚动
浮动侧边栏
状态机与状态图
编译前端 JS 库
颜色对比度
哲学
Toulmin Model
存储
Etcd
ETCD 报错 request ignored (cluster ID mismatch)
ETCD 报错 request ignored (cluster ID mismatch)
etcdctl
etcdctl
Mongo
MongoDB 的丢数据问题
MongoDB 的丢数据问题
Mysql
Date/Datetime/Timestamp 比较
Date/Datetime/Timestamp 比较
Transaction 与 autocommit
Transaction 与 autocommit
mysqldump
mysqldump
连接 MYSQL 显示中文
连接 MYSQL 显示中文
Postgres
permission denied for schema public
RAID
flyway 用法
flyway 用法
∞
物理删除与逻辑删除
物理删除与逻辑删除
安全攻防
Kali Linux
Reverse Shell
不要在生产环境绑定 0.0.0.0
嵌入式
zephyr与 esp32
思考
CLD 图
不完整的函数
声明式配置 vs 编程式配置
如何编程
提问的智慧
讲故事
项目代码如何组织
数学
空间填充曲线 (Space-Filling Curve)
豪斯多夫维数
进制表示法
机器学习
Stable Diffusion
硬件
EMMC
ET X08 鼠标
Home Assistant
Over The Air (OTA)
RFID
USB
固件 (Firmware)
微处理器 MCU
无线电波 (Radio Waves)
红外测温仪
网件 R6900 刷梅林固件
网络交换机
算法
Raft 算法
箴言录
箴言录 - 人生
箴言录 - 哲学
箴言录 - 学习
箴言录 - 编程
网络
ARP
DHCP
DNS
DNS SRV
DoH 与 DoT
Envoy
HTTP Request/Response 网络包
MQTT
NAT
SDN
Samba
TCP Buffer 大小
TUN/TAP
Wake On Lan (WOL)
link
pfctl
vlan
vxlan
zigbee
私有网段
组播地址
网关 gateway
网桥 (Bridge)
网络风暴 (Network Storm)
自治系统 (Autonomous System)
虚拟 IP
虚拟网络设备
虚拟网络设备
虚拟机
KVM (Kernel-based Virtual Machine)
Libvirt
Libvirt 网络
Virtualbox
virsh shutdown 命令无效
virt-install Couldn’t find kernel for install tree
虚拟 CPU
计算机
CPU
CPU 伪共享 (CPU Cache Line False Sharing)
CPU 缓存
RDMA
TLB
内存屏障
内存管理单元 MMU
单指令流多数据流 (SIMD)
我的硬盘分区规划
随机存取存储器 (RAM)
风扇
设计
8 点栅格
CIE 色彩空间
Illuminant D65
OpenType
Sketch 的文本样式与颜色
UI 的加载状态
使用 sketchtool 操作 sketch 文档:diff 以及其他功能
排版
色域
色彩模式
色彩理论
色彩空间
语言设计
Actor 并发模型
CFLAGS
CSP 并发模型
Debuger
协程 (Coroutine)
垃圾回收 Garbage Collection (GC)
栈帧
编译器
运维
Ansible
Ansible Role
Ansible 变量
Ansible 技巧
DNF
IPMI 与 BMC
PCI
RPM 创建仓库
RPM 制作和安装离线包
YUM
dig 命令
以太网
运维小技巧
运维小技巧 - 硬件
运维小技巧 - 网络
Give Me a Github Star
Linux
Systemd
Table of contents
networking.service
systemd
systemd-mount
systemd-network
systemd-path
systemd-resolved
systemd-timesyncd