V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
chuangbo
V2EX  ›  分享创造

「Happy Hacker Weekend!」Dictionary on DNS

  •  
  •   chuangbo · 2012-05-05 23:24:49 +08:00 · 10268 次点击
    这是一个创建于 4583 天前的主题,其中的信息可能已经有所发展或是发生改变。
    Happy Hacker Weekend~

    这个周末帮 @frannk 的「滚去背单词 http://jianbing.org 」做了一个查字典的工具,在 shell 下使用,通过网络查询,方便喜欢英文的 Linux/Mac Hackers 使用。

    使用 DNS 查单词优点是速度快,并且无须客户端,随时可以查哦~

    使用方法

    1. 在 ~/.bashrc 的末尾添加下面两行
    # jianbing.org on DNS
    function j() { dig $1.jianbing.org txt +short | perl -pe's/\\(\d{1,3})/chr $1/eg; s/"//g' }

    2. 重新打开你的 shell 或者 $ . ~/.bashrc

    3. Enjoy jianbing on DNS
    $ j apple
    ['æpl] n. 苹果, 似苹果的果实
    45 条回复    1970-01-01 08:00:00 +08:00
    Frannk
        1
    Frannk  
       2012-05-05 23:27:33 +08:00   ❤️ 1
    哈哈 谢谢 太帅了
    chuangbo
        2
    chuangbo  
    OP
       2012-05-05 23:50:16 +08:00
    修正一下,function 那里漏了一个分号,因为我是 zsh,这样写也是对的,在 bash 下就出错了……


    1. 在 ~/.bashrc 的末尾添加下面两行
    # jianbing.org on DNS
    function j() { dig $1.jianbing.org txt +short | perl -pe's/\\(\d{1,3})/chr $1/eg; s/"//g'; }
    zewenzhang
        3
    zewenzhang  
       2012-05-05 23:52:54 +08:00
    帅,以后linux查单词方便了许多!
    notsobad
        4
    notsobad  
       2012-05-06 00:00:00 +08:00
    wangxh@mac : ~$ j pear
    [pєә] n. 梨子, 梨树
    wangxh@mac : ~$ j apple
    \\[\\e[01\;32\;41m\\]6656
    wynemo
        5
    wynemo  
       2012-05-06 00:11:02 +08:00
    不错

    dig leverage.jianbing.org txt +short|perl -pe's/\\(\d{1,3})/chr $1/eg; s/"//g';
    ['li:vәridʒ] n. 杠杆作用

    dig denominator.jianbing.org txt +short|perl -pe's/\\(\d{1,3})/chr $1/eg; s/"//g';
    [di'nɔmineitә] n. [数] 分母, 命名者

    不过查稍微生僻的词好像有些不给力阿
    Frannk
        6
    Frannk  
       2012-05-06 00:15:21 +08:00
    单词词条 会在后期加强的
    imsihaizi
        7
    imsihaizi  
       2012-05-06 00:25:21 +08:00
    @frank的教导,哈哈。

    j fat
    [fæt] n. 脂肪, 肥肉 adj. 肥大的, 丰满的, 肥的, 胖的, 油腻的 n. 文件分配表 vt. 养肥, 在...中加入脂肪 vi. 长肥
    chuangbo
        8
    chuangbo  
    OP
       2012-05-06 02:11:38 +08:00
    修复了几个文本转义的 Bug,并再次更新了 perl 脚本

    1.在 ~/.bashrc 的末尾添加下面几行

    # jianbing.org on DNS
    function j {
    dig $1.jianbing.org +short txt | perl -pe's/\\(\d{1,3})/chr $1/eg; s/(^"|"$)//g'
    }
    Livid
        9
    Livid  
    MOD
       2012-05-06 02:16:40 +08:00
    现在 j apple 依然在返回乱码?
    loddit
        10
    loddit  
       2012-05-06 02:23:03 +08:00
    安装了autojump(https://github.com/joelthelion/autojump)
    所以'j'命令被占了,我改成用'd'喽
    0cean
        11
    0cean  
       2012-05-06 04:48:38 +08:00   ❤️ 1
    ; <<>> DiG 9.9.0 <<>> ocean.jianbing.org txt +short
    ;; global options: +cmd
    ;; connection timed out; no servers could be reached

    服务器解析出问题了。
    chuangbo
        12
    chuangbo  
    OP
       2012-05-06 09:26:50 +08:00
    @Livid 很奇怪,如果是从 apple.wuliaotu.net 查询就是 OK 的。

    @Ocean 是一直不行吗?你本机用的 DNS 是什么?可以从 http://ip.dnspod.cn 查询到
    Frannk
        13
    Frannk  
       2012-05-06 10:08:43 +08:00
    @notsobad @chuangbo @Livid sorry,我得汗一个。是当时我测试DNSPOD是否支持中文TXT记录的时候,加了一个apple的记录。
    Frannk
        14
    Frannk  
       2012-05-06 10:09:18 +08:00
    修复了
    chuangbo
        15
    chuangbo  
    OP
       2012-05-06 12:20:14 +08:00
    又更新了一下脚本,目前支持 词组、大小写区分,比如
    $ j frank
    [fræŋk]
    adj.
    坦白的, 率直的, 老实的
    vt.
    免费邮寄
    n.
    免费邮寄特权

    $ j Frank
    [fræŋk]
    n.
    弗兰克(男子名)

    $ j a little
    少量, 少许

    function j {
    dig "$*.jianbing.org" +short txt | perl -pe's/\\(\d{1,3})/chr $1/eg; s/(^"|"$)//g'
    }

    理论上还支持 中文->英文 或者任何语言到任何语言,只要有词库。
    zieglar
        16
    zieglar  
       2012-05-06 14:12:15 +08:00
    新脚本搜Frank和frank都只能搜到人名,无法搜到My
    Frannk
        17
    Frannk  
       2012-05-06 14:22:52 +08:00
    我靠 真是墨菲定律啊 我也发现apple和my 有错误 结果都在评论里出现了
    Frannk
        18
    Frannk  
       2012-05-06 14:26:42 +08:00
    @chuangbo @zieglar 是递归给缓存了,递归不识别大小写;
    0cean
        19
    0cean  
       2012-05-06 16:23:33 +08:00
    @chuangbo 一直都不能查询,我本机的DNS用的是ISP商提供的 202.101.224.70 电信 中国 江西 上饶
    fly2never
        20
    fly2never  
       2012-05-06 16:42:57 +08:00
    micro也搜不到,期待词库更新
    chuangbo
        21
    chuangbo  
    OP
       2012-05-06 20:15:54 +08:00
    @Frannk @zieglar 应该是你本机所用 DNS 不支持区分大小写。我们目前设置的 TTL 缓存是 600 秒,我马上改为 10 秒,就可以解决这个问题了。
    chuangbo
        22
    chuangbo  
    OP
       2012-05-06 20:18:57 +08:00
    @fly2never 目前用的是星际译王的懒人简明词典,想找一个解释简短并且词库很全的词典。
    有没有人有多语言互译的需求?如果有人用得到的话,我可以加上任何词典。
    Frannk
        23
    Frannk  
       2012-05-06 20:37:38 +08:00
    我@8.8.8.8也是没有大小写,递归的域名应该是不区分大小写吧。
    zieglar
        24
    zieglar  
       2012-05-06 23:15:25 +08:00
    @chuangbo 我在Mac下flushdns缓存以后还是无法搜索到My和my
    eric_q
        25
    eric_q  
       2012-05-06 23:22:35 +08:00
    卧槽,这东西确实不错,很实用,够geek,关键是速度快~
    wong2
        26
    wong2  
       2012-05-06 23:53:11 +08:00
    赞!以前也写过命令行下的翻译,用的Google翻译的api
    jqian
        27
    jqian  
       2012-05-07 00:16:41 +08:00
    赞,这个有意思噢⋯⋯一直在命令行下用sdcv,现在有新的选择了
    cluries
        28
    cluries  
       2012-05-07 00:19:50 +08:00
    这个很有意思,赞一个楼主.
    Frannk
        29
    Frannk  
       2012-05-07 08:47:17 +08:00
    大小写的问题,我觉得应该查 frank 能得到Frank和frank两种解释;解决递归的问题,同时也避免用户忽略大小写。
    onlytiancai
        30
    onlytiancai  
       2012-05-07 09:40:48 +08:00
    很NB,期待Windows cmd客户端。。。
    skydark
        31
    skydark  
       2012-05-07 09:54:19 +08:00
    赞,教育网不用开网关也能查了!
    iveney
        32
    iveney  
       2012-05-07 10:08:08 +08:00
    j的話已經被 autojump 搶用了 :)
    Frannk
        33
    Frannk  
       2012-05-09 19:31:59 +08:00
    顶一下
    infinte
        34
    infinte  
       2012-05-09 20:03:32 +08:00
    \> nslookup -type=TXT (word).jianbing.org

    但是输出似乎有乱码……
    infinte
        35
    infinte  
       2012-05-09 20:04:54 +08:00
    chcp 到 65001 后不乱了
    leecade
        36
    leecade  
       2012-09-20 00:55:26 +08:00
    @chuangbo 哈哈 原来早已经有了

    我用的是 youdao 的 api,可能更准确,不知道楼主用的那个词典支持 时态、复数什么的不

    function t(){ wget -qO- "http://fanyi.youdao.com/openapi.do?keyfrom=leecade&key=54015339&type=data&doctype=json&version=1.1&q=$1" | grep -oP '(?<="explains":\[")[^"]*'; }
    chuangbo
        37
    chuangbo  
    OP
       2012-09-20 01:48:50 +08:00
    @leecade UDP 比 HTTP 快多啦。词典随便换,支持星际译王的词典。
    hpyhacking
        38
    hpyhacking  
       2012-09-20 10:18:25 +08:00
    真心不错,学习下做Alfred的插件,把这个集成到插件里。
    lqs
        39
    lqs  
       2012-09-20 15:18:32 +08:00   ❤️ 1
    其实这个东西有个最大的好处是连上某些需要网页验证的wifi之后没密码也能查词典。
    chuangbo
        40
    chuangbo  
    OP
       2012-09-20 16:18:56 +08:00
    @hpyhacking Good idea!
    skydiver
        41
    skydiver  
       2012-09-20 17:16:11 +08:00
    locale是gbk的,出现乱码,怎么破?
    chuangbo
        42
    chuangbo  
    OP
       2012-09-20 17:53:53 +08:00
    @skydiver
    function j() { dig $1.jianbing.org txt +short | perl -pe's/\\(\d{1,3})/chr $1/eg; s/"//g'; | iconv -f utf8 -t gbk }
    skydiver
        43
    skydiver  
       2012-09-20 23:12:16 +08:00
    @chuangbo 之前就试过了,还是不行。貌似是因为用到一些音标符号,gbk里面没有
    chuangbo
        44
    chuangbo  
    OP
       2012-09-21 01:59:04 +08:00
    @skydiver
    加一个参数 -c 就可以了,功能是 discard unconvertible characters

    function j() { dig $1.jianbing.org txt +short | perl -pe's/\\(\d{1,3})/chr $1/eg; s/"//g'; | iconv -c -f utf8 -t gbk }
    JaHIY
        45
    JaHIY  
       2013-02-06 23:59:51 +08:00
    自己用其他方法实现了一下(没用 Perl,其实也不会……),把格式美化了一下,支持同时查多个单词
    https://github.com/JaHIY/jianbing-dict
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2844 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 11:23 · PVG 19:23 · LAX 03:23 · JFK 06:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.