外网 IP 查询服务——这应该是我写过最简单、但又有实际用处的 TCP 服务了。
流程
- 服务启动,监听本地 6666 端口
- 接受连接,返回客户端 IP
- 断开连接
用 Go 语言实现,加上空行还不到 30 行代码,请自行前往 GitHub 获取。
部署
通过 go build
命令编译,在 macOS 上编译 Linux 版本需要指定 GOOS
参数:
GOOS=linux go build main.go
生成的 main
可以直接运行了:
./main
或者更高级点,通过 supervisor
配置成服务,使用 supervisorctl
控制。
使用
用 telnet
连接部署机器的 6666 端口即可,如 migege.com:6666:
telnet migege.com 6666
Trying 120.27.122.8...
Connected to migege.com.
Escape character is '^]'.
1xx.2xx.2xx.1xxConnection closed by foreign host.
再也不用担心 ns1.dnspod.net 没有响应了。
今天刚入手树莓派 3,有种相见恨晚的感觉,接下来又有得折腾了。
ZHETENG #1: 动态 DNS
我相信虽然树莓派足够轻便,但你也不会愿意总把它带在身边,应该还是需要固定在某个地方提供服务的,比如藏在家里的电视柜里——你要拿它做一个机器人或者无人机之类,当我没说,而且这篇文也没必要往下看了,这里仅针对拿树莓派当 Linux 远程主机使用的场景 ;-)
如果家里的宽带没有固定公网 IP,不在家的时候怎么访问就很成问题。过去我在西数 MyBookLive 上的做法是,每天中午 12 点,crontab 执行脚本获取外网 IP,email 给我。low 是 low 了点,但基本上能满足需求,主要考虑 MyBookLive 频繁唤醒几 T 的大硬盘会缩短寿命,所以把脚本执行的周期设得比较长。
现在有了树莓派,没有挂硬盘,只插了个 32G 的 TF 卡,可以随便搞了,最优的方案当然是动态域名解析。于是在 DNSPod 注册了账号,把域名的 nameserver 设置到 DNSPod,再用 python 写了个脚本专门干这个事,代码放在 github 上了,把文档贴一下:
dnspod.py
@author migege
@version 0.0.2
dnspod.py 是基于 DNSPod 服务的动态 DNS 脚本,用于检测 IP 变化并更新至 DNSPod,支持多域名解析。支持 Linux 设备,包括树莓派(Raspberry Pi)。
Prerequisites
- python
- pyyaml
- requests
python 的模块可通过 pip install
命令安装。如果未安装 pip,请先安装 pip。
Installation
安装 git 客户端,通过本命令获取 dnspod.py
git clone https://github.com/migege/dnspod.git dnspod
然后到 dnspod 目录下新建 conf.yaml
文件,根据您的 DNSPod 设置,填入以下内容:
token: <your_api_token>
sub_domains:
<your_first_sub_domain_name>:
domain_id: <your_domain_id>
record_id: <your_record_id>
<your_second_sub_domain_name>:
domain_id: <your_domain_id>
record_id: <your_record_id>
最后设置 crontab 定时任务
*/10 * * * * cd <path_to_dnspod>; /usr/bin/python dnspod.py conf.yaml > /dev/null 2>&1 &
Tips
- */10 表示每 10 分钟执行一次 dnspod.py
- 如果 python 可执行路径不是 /usr/bin/python,请自行替换
Mac OS X 系统自带的 grep
命令即便加上 --color
参数也是无法输出彩色文件名和行号的,在当前最新的 El Capitan 10.11.6 中仍然如此,因为 grep
版本太低了,GNU grep 2.5.3 以上版本才支持 Multiple colors 特性。
先上一个新旧命令对比效果图:

如果安装了 homebrew
,在终端中输入以下命令安装 GNU grep:
brew tap homebrew/dupes/
brew install homebrew/dupes/grep
默认会安装为 /usr/local/bin/ggrep
,在 bash|zsh|各种sh
做一个 alias
替换掉 grep
好了:
alias grep='ggrep -Hn --color=always'
参考
http://superuser.com/questions/419467/grep-in-mac-os-xs-terminal-only-displaying-one-color
刚从前同事那儿听到这个消息,晴天霹雳啊!让我这重度铁粉情何以堪,只能买迅雷会员了?
F***!!!
小马哥这几年变成纯粹的商人了,把他眼里「不重要的」或者觉得「做不好的」业务干掉一个又一个,太令人伤心了
QQ 旋风在 TX 内部是不是快被抛弃了,客户端更新迟缓、服务稳定性越来越糟……时不时地要么刷不出下载列表,要么需要多次重复操作才能添加成功……但仍然改变不了我这名重度铁粉对它的依赖。因为在 userscript 的帮助下,网页版旋风可以导出、RPC 到 aria2 下载,这几乎是我迄今为止用过最爽的下载方式,没有之一。
可是最近一阵子没怎么下载,忽然发现旧版本的 userscript 不太好使了,在 console 上可以看到旋风服务返回「未登录」的响应。一直想抽空瞧瞧这个问题,但总是被各种事情打扰,晚上索性搜了下,发现原作者在 0.8.0 版本中已经解决了这个问题,那还是直接拿来用好了。俺正在全速下载「权力的游戏」第 6 季 1-8 集。顺便鸣谢下联通,带宽貌似已经免费升级到了 50M。
最后奉上「QQ 旋风离线下载网页增强」的 userscript,猛击 https://github.com/rhyzx/xuanfeng-userscript。
谢谢作者 rhyzx。
作为 Mac OS X 上无可替代的终端模拟器,iTerm2 3.0.0 新版有何优点呢?其实我也不知道 QAQ

我只想说这个新版在 El Caption 10.11.5 上,不管是自动升级还是全新解压都无法打开,甚至还提示文件已损坏。资深码农几经折腾无果,觉得智商深深地遭到了鄙视,后来无意中发现解决方法倒也简单粗暴,那就是:
<重启电脑>
这 tm 就尴尬了,更尴尬的是,自小学五笔到现在整 20 年,可能今天才第一次真正用五笔打出「尴尬」二字,原因是这两个字一直以来自以为是的写法就是错的……好记性不如烂笔头,何况记性更烂,就把「尴尬」的五笔编码记在下面吧:
字 |
编码 |
尴尬 |
dndn |
尴 |
dnjl |
尬 |
dnwj |
MiLog 已经支持在侧边栏上显示 Tag 云,具体效果参见本站右侧的 Tag Cloud。