爱意满满的作品展示区。
chuangbo

「Happy Hacker Weekend!」Dictionary on DNS

  •  
  •   chuangbo · May 5, 2012 · 11692 views
    This topic created in 5299 days ago, the information mentioned may be changed or developed.
    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 replies  •  1970-01-01 08:00:00 +08:00
    Frannk
    Frannk
    May 5, 2012❤️1
    1
    哈哈 谢谢 太帅了
    chuangbo
    chuangbo
    OP
    May 5, 2012
    2
    修正一下,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
    zewenzhang
    May 5, 2012
    3
    帅,以后linux查单词方便了许多!
    notsobad
    notsobad
    May 6, 2012
    4
    wangxh@mac : ~$ j pear
    [pєә] n. 梨子, 梨树
    wangxh@mac : ~$ j apple
    \\[\\e[01\;32\;41m\\]6656
    wynemo
    wynemo
    May 6, 2012
    5
    不错

    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
    Frannk
    May 6, 2012
    6
    单词词条 会在后期加强的
    imsihaizi
    imsihaizi
    May 6, 2012
    7
    @frank的教导,哈哈。

    j fat
    [fæt] n. 脂肪, 肥肉 adj. 肥大的, 丰满的, 肥的, 胖的, 油腻的 n. 文件分配表 vt. 养肥, 在...中加入脂肪 vi. 长肥
    chuangbo
    chuangbo
    OP
    May 6, 2012
    8
    修复了几个文本转义的 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
    Livid
    MOD
    PRO
    May 6, 2012
    9
    现在 j apple 依然在返回乱码?
    loddit
    loddit
    May 6, 2012
    10
    安装了autojump(https://github.com/joelthelion/autojump)
    所以'j'命令被占了,我改成用'd'喽
    0cean
    0cean
    May 6, 2012❤️1
    11
    ; <<>> DiG 9.9.0 <<>> ocean.jianbing.org txt +short
    ;; global options: +cmd
    ;; connection timed out; no servers could be reached

    服务器解析出问题了。
    chuangbo
    chuangbo
    OP
    May 6, 2012
    12
    @Livid 很奇怪,如果是从 apple.wuliaotu.net 查询就是 OK 的。

    @Ocean 是一直不行吗?你本机用的 DNS 是什么?可以从 http://ip.dnspod.cn 查询到
    Frannk
    Frannk
    May 6, 2012
    13
    @notsobad @chuangbo @Livid sorry,我得汗一个。是当时我测试DNSPOD是否支持中文TXT记录的时候,加了一个apple的记录。
    Frannk
    Frannk
    May 6, 2012
    14
    修复了
    chuangbo
    chuangbo
    OP
    May 6, 2012
    15
    又更新了一下脚本,目前支持 词组、大小写区分,比如
    $ 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
    zieglar
    May 6, 2012
    16
    新脚本搜Frank和frank都只能搜到人名,无法搜到My
    Frannk
    Frannk
    May 6, 2012
    17
    我靠 真是墨菲定律啊 我也发现apple和my 有错误 结果都在评论里出现了
    Frannk
    Frannk
    May 6, 2012
    18
    @chuangbo @zieglar 是递归给缓存了,递归不识别大小写;
    0cean
    0cean
    May 6, 2012
    19
    @chuangbo 一直都不能查询,我本机的DNS用的是ISP商提供的 202.101.224.70 电信 中国 江西 上饶
    fly2never
    fly2never
    May 6, 2012
    20
    micro也搜不到,期待词库更新
    chuangbo
    chuangbo
    OP
    May 6, 2012
    21
    @Frannk @zieglar 应该是你本机所用 DNS 不支持区分大小写。我们目前设置的 TTL 缓存是 600 秒,我马上改为 10 秒,就可以解决这个问题了。
    chuangbo
    chuangbo
    OP
    May 6, 2012
    22
    @fly2never 目前用的是星际译王的懒人简明词典,想找一个解释简短并且词库很全的词典。
    有没有人有多语言互译的需求?如果有人用得到的话,我可以加上任何词典。
    Frannk
    Frannk
    May 6, 2012
    23
    我@8.8.8.8也是没有大小写,递归的域名应该是不区分大小写吧。
    zieglar
    zieglar
    May 6, 2012
    24
    @chuangbo 我在Mac下flushdns缓存以后还是无法搜索到My和my
    eric_q
    eric_q
    May 6, 2012
    25
    卧槽,这东西确实不错,很实用,够geek,关键是速度快~
    wong2
    wong2
    May 6, 2012
    26
    赞!以前也写过命令行下的翻译,用的Google翻译的api
    jqian
    jqian
    May 7, 2012
    27
    赞,这个有意思噢⋯⋯一直在命令行下用sdcv,现在有新的选择了
    cluries
    cluries
    May 7, 2012
    28
    这个很有意思,赞一个楼主.
    Frannk
    Frannk
    May 7, 2012
    29
    大小写的问题,我觉得应该查 frank 能得到Frank和frank两种解释;解决递归的问题,同时也避免用户忽略大小写。
    onlytiancai
    onlytiancai
    May 7, 2012
    30
    很NB,期待Windows cmd客户端。。。
    skydark
    skydark
    May 7, 2012
    31
    赞,教育网不用开网关也能查了!
    iveney
    iveney
    May 7, 2012
    32
    j的話已經被 autojump 搶用了 :)
    Frannk
    Frannk
    May 9, 2012
    33
    顶一下
    infinte
    infinte
    May 9, 2012
    34
    \> nslookup -type=TXT (word).jianbing.org

    但是输出似乎有乱码……
    infinte
    infinte
    May 9, 2012
    35
    chcp 到 65001 后不乱了
    leecade
    leecade
    Sep 20, 2012
    36
    @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
    chuangbo
    OP
    Sep 20, 2012
    37
    @leecade UDP 比 HTTP 快多啦。词典随便换,支持星际译王的词典。
    hpyhacking
    hpyhacking
    Sep 20, 2012
    38
    真心不错,学习下做Alfred的插件,把这个集成到插件里。
    lqs
    lqs
    Sep 20, 2012❤️1
    39
    其实这个东西有个最大的好处是连上某些需要网页验证的wifi之后没密码也能查词典。
    chuangbo
    chuangbo
    OP
    Sep 20, 2012
    40
    @hpyhacking Good idea!
    skydiver
    skydiver
    Sep 20, 2012
    41
    locale是gbk的,出现乱码,怎么破?
    chuangbo
    chuangbo
    OP
    Sep 20, 2012
    42
    @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
    skydiver
    Sep 20, 2012
    43
    @chuangbo 之前就试过了,还是不行。貌似是因为用到一些音标符号,gbk里面没有
    chuangbo
    chuangbo
    OP
    Sep 21, 2012
    44
    @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
    JaHIY
    Feb 6, 2013
    45
    自己用其他方法实现了一下(没用 Perl,其实也不会……),把格式美化了一下,支持同时查多个单词
    https://github.com/JaHIY/jianbing-dict
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1453 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 67ms · UTC 05:25 · PVG 13:25 · LAX 21:25 · JFK 00:25
    ♥ Do have faith in what you're doing.