「滚去背单词」的查字典的工具,在 shell 下使用,通过网络查询,方便喜欢英文的 Linux/Mac Hackers 使用。
使用 DNS 查单词优点是速度快,并且无须客户端,随时可以查哦~
-
速度快,跟本机一样快~
-
支持词组
$ j a little 少量, 少许
-
支持 任何语言->任何语言(理论上支持,暂缺词库)
$ j 西藏 Tibet
-
区分大小写
$ j frank [fræŋk] adj. 坦白的, 率直的, 老实的 vt. 免费邮寄 n. 免费邮寄特权
大写
$ j Frank [fræŋk] n. 弗兰克(男子名)
-
模糊查找
$ j appe No word 'appe' found, did you mean: 1. nappe [næp] n. 越过水坝落下的水, 叠层结构, 等分半圆锥 2. apple ['æpl] n. 苹果, 似苹果的果实 3. appel [ә'pel] n. 灵快的踏足, 垫步
-
在 ~/.bashrc 的末尾添加下面几行
# jianbing.org on DNS function j { dig "$*.jianbing.org" +short txt | perl -pe's/\\(\d{1,3})/chr $1/eg; s/(^"|"$)//g' }
-
重新打开你的 shell 或者 $ . ~/.bashrc
-
Enjoy jianbing on DNS
$ j cat [kæt] n. 猫
-
安装virtualenv和依赖
$ virtualenv env $ . ./env/bin/activate $ pip install dnslib # easy & fast than dnspython $ pip install gevent # fastest network library $ apt-get install aspell # spelling check. or $ yum install aspell
-
下载星际译王词库
$ #(因为比较难下载到,仓库里提供了一个压缩包 $ # 如果你不是用的这个,需要修改 stardict.py 里的配置 $ tar xvf stardict-lazyworm-ec-2.4.2.tar.bz2 $ cd stardict-lazyworm-ec-2.4.2 $ gunzip -S '.dz' lazyworm-ec.dict.dz
-
运行
$ sudo ./jianbing-dns.py
-
如果需要管理进程,请使用 supervisor
-
本机测试,在 ~/.bashrc 的末尾添加下面几行
# jianbing.org on DNS function j { dig "$*.jianbing.org" +short txt @localhost | perl -pe's/\\(\d{1,3})/chr $1/eg; s/(^"|"$)//g' }
-
部署到外网,修改解析(可选)
- 为
ns1.youdomain.com
添加一个 A 记录,指向你的服务器地址 - 添加一个DNS泛解析,在
*.yourdomain.com
添加 NS 记录指向ns1.yourdomain.com
- 修改上一步的那几行,去掉
@localhost
,将jianbing.org
改为yourdomain.com
- 为
-
验证上一步
$ dig +trace apple.yourdomain.com
-
新增了 Go 版本,没有全面测试,速度应该是比 python 快一些
$ mkdir your-local-go-location $ cd your-local-go-location $ export GOPATH=/path/to/your-local-go-location $ go get github.com/chuangbo/jianbing-dictionary-dns/golang/jianbing-dns $ sudo ./bin/jianbing-dns
使用了 difflib.get_close_matches,以及 https://github.com/miohtama/python-Levenshtein 进行算法加速
换成 aspell,速度提高几十倍。原来是遍历字典,使用最短路径算法匹配最相似单词,现在使用 aspell 检查拼写,应该是用了基于统计模型的拼写检查算法。可能只支持 Linux,我在 Mac 上测试出现了段错误。计划下一步加上 nose / mock 测试,以及 travis-ci。
这里有徐宥老师翻译的文章,很值得一看 http://blog.youxu.info/spell-correct.html
keyword: j
- keyword j
- 选中单词,按 ⌥+⌘+j (需要您自己设置)
- 查询到单词后,↵打开网页查询详细结果,⌘+↵ 添加到生词本(需要修改workflow加入「滚去背单词」帐号信息)