「Happy Hacker Weekend!」Dictionary on DNS - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
chuangbo
V2EX    分享创造

「Happy Hacker Weekend!」Dictionary on DNS

  •  
  • &nbs; chuangbo 2012-05-05 23:24:49 +08:00 10720 次点击
    这是一个创建于 4912 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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:vrid] n. 杠杆作用

    dig denominator.jianbing.org txt +short|perl -pe's/\\(\d{1,3})/chr $1/eg; s/"//g';
    [di'nmineit] 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
    [ft] 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
    PRO
       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
    [frk]
    adj.
    坦白的, 率直的, 老实的
    vt.
    免费邮寄
    n.
    免费邮寄特权

    $ j Frank
    [frk]
    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  
       
    \> 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     Solana     5513 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 06:04 PVG 14:04 LAX 23:04 JFK 02:04
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86