• 33K Star?这才是程序员需要的神器。。。


    程序员宝藏库https://gitee.com/sharetech_lee/CS-Books-Store

    你想要的,这里都有!

    作为程序员用的比较多的工具是什么?

    我觉得搜索引擎绝对能名列前茅。

    在开发过程中,总会遇到这样或者那样的问题超出我们自身的知识范围。这些问题可能是编程语言方面的,可能是Linux操作系统方面的,可能是服务部署方面的等等。

    当遇到这种问题时,很多同学会选择求助于搜索引擎,懂得懂得,搜索引擎搜出的很多结果要么和问题无关、要么是个大坑。

    所以,从事开发工作这么多年,我深刻意识一个道理,能够快速解决问题真的是一项非常突出的本领,哪怕是在借助于互联网的情况下。

    话说回来,正是因为寻求问题的道路非常曲折繁琐,因此,网上出现了各种各样的速查表「CheatSheet」,估计有不少同学过去都看到过很多了。

    但是,我认为这并没有从效率上彻底解决问题。

    今天我在浏览Github时发现一款非常不错的开源工具,真的让我眼前一亮。

    img

    这款开源工具的名字叫做cheat.sh,目前已经33K+ Star了。

    这款工具的简洁是「你唯一需要的速查表」,简单概括,这款工具把知名、权威社区的答案、资料进行了统一汇总,我们只需要这一款工具就可以快速得到最准确、最可靠的答案。

    img

    它背后的知识来源于tldr、StackOverflow、cheat.sheets等社区或者开源项目。

    为了更加清晰的理解它的用处,下面先来看一个示例:

    $ curl cht.sh/lua/table+keys
        -- lua: retrieve list of keys in a table
    
        local keyset={}
        local n=0
    
        for k,v in pairs(tab) do
          n=n+1
          keyset[n]=k
        end
    
        --[[
           [ Note that you cannot guarantee any order in keyset. If you want the
           [ keys in sorted order, then sort keyset with table.sort(keyset).
           [ 
           [ [lhf] [so/q/12674345] [cc by-sa 3.0]
           ]]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    上面执行的curl命令包含下面几个信息:

    • cht.sh:工具名称
    • lua:编程语言
    • table+keys:要查询的问题,多个关键词用加好链接

    img

    通过这样,它就可以快速在终端下给出问题的答案。

    如果你不想要文字描述,只想要「纯净」的答案,还可以通过参数来处理:

     $ curl cht.sh/lua/table+keys\?Q
        local keyset={}
        local n=0
    
        for k,v in pairs(tab) do
          n=n+1
          keyset[n]=k
        end
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    想必到这里,很多同学都已经知道它的用法了,概括一下这款工具的价值,主要有以下几点:

    • 简洁——它应该只包含你需要的东西,没有杂乱的信息
    • 快速——能够快速得到问题的答案,「所见即所得」
    • 全面——编程语言、操作系统等等,覆盖面非常全
    • 通用——随时随地可用,

    可能很多同学还有一丝疑虑,感觉用curl每次都要输入很长的命令,太麻烦。

    img

    没事,前面只是一个小示例,下面系统的介绍一下如何安装并使用客户端。

    安装

    方式1

    PATH_DIR="$HOME/bin"  # or another directory on your $PATH
    mkdir -p "$PATH_DIR"
    curl https://cht.sh/:cht.sh > "$PATH_DIR/cht.sh"
    chmod +x "$PATH_DIR/cht.sh"
    
    • 1
    • 2
    • 3
    • 4

    方式二

    curl -s https://cht.sh/:cht.sh | sudo tee /usr/local/bin/cht.sh && sudo chmod +x /usr/local/bin/cht.sh
    
    • 1

    安装后就可以在终端下使用了。

    如果想用交互式命令模式,还需要通过命令sudo apt install rlwrap安装rlwrap。

    用法

    通过上述命令安装客户端之后,就不用再像前面curl命令那样每次输入很长的命令,可以用更加贴近人为描述的方式查询问题答案。

    举几个例子:

    $ cht.sh go reverse a list
    $ cht.sh python random list elements
    $ cht.sh js parse json
    
    • 1
    • 2
    • 3

    这样看,估计很多开发同学都能够懂得它的用法了,「命令+语言+问题」。

    可以看看效果:

    $ cht.sh python random number
    #  Try:
    
     from random import randrange
     print(randrange(10))
    
    #  **Docs:**
    #  https://docs.python.org/3/library/random.htmlrandom.randrange
    #  
    #  [kovshenin] [so/q/3996904] [cc by-sa 3.0]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    再尝试一个:

    $ cht.sh python matplotlib plot line
    #  You can directly plot the lines you want by feeding the `plot` command
    #  with the corresponding data (boundaries of the segments):
    #  
    #  `plot([x1, x2], [y1, y2], color='k', linestyle='-', linewidth=2)`
    #  
    #  (of course you can choose the color, line width, line style, etc.)
    #  
    #  From your example:
    
     import numpy as np
     import matplotlib.pyplot as plt
    
     np.random.seed(5)
     x = np.arange(1, 101)
     y = 20 + 3 * x + np.random.normal(0, 60, 100)
     plt.plot(x, y, "o")
    
     # draw vertical line from (70,100) to (70, 250)
     plt.plot([70, 70], [100, 250], 'k-', lw=2)
    
     # draw diagonal line from (70, 90) to (90, 200)
     plt.plot([70, 90], [90, 200], 'k-')
    
     plt.show()
    
    #  ![new chart](https://i.imgur.com/76drc.png)
    #  
    #  [gcalmettes] [so/q/12864294] [cc by-sa 3.0]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29

    可以看得出来,它不仅支持编程语言的基本语法,还支持查询语言基础之外的工具包的用法。

    IDE+编辑器

    前面介绍了它在命令行下的用法,其实,cht.sh更强大的是它不仅支持命令行,它还可以在常用的IDE、编辑器下用。

    例如:

    • Vim
    • Emacs
    • Sublime
    • IDEA
    • VS Code
    • IDEA

    除此之外,它还是跨平台的,在Windows、Linux、macOS下都可以用。

    另外,这款工具在编辑器、IDE下功能更加丰富,甚至可以自动生成代码片段,直接补全答案。

    下面看一下效果!

    Sublime:

    img

    IDEA:

    img

    VS Code:

    img

    最后再补充一点,在知识方面,它覆盖也非常全,Python、JavaScript、Go、C++、Linux、php,我们在开发中遇到的很多问题通过cht.sh都可以快速得到答案!

    传送门

    建议大家有空可以多浏览Github,有很多好用的开源免费工具。但是,目前Github上项目多如牛毛,而且刷榜现在也非常严重,想要找到优质的项目变得越来越难。这里,给大家推荐Github上一个非常不错的项目《DevWeekly》,这个项目每周都会精挑细选一些优质的开源项目,涵盖C++、JAVA、JavaScript、Python、Go等不同编程语言。此外,还有一些开源工具、优秀的技术文章:

    https://github.com/Jackpopc/DevWeekly

  • 相关阅读:
    Qt窗体边框阴影的绘制
    JavaWeb——IDEA相关配置(Maven配置以及创建自己的第一个Maven项目)
    Python吴恩达深度学习作业15 -- YOLO原理及应用(自动驾驶——汽车检测)
    三极管:潜伏3个月的彩蛋是来自火星的么
    NLP:生成熟悉NLP开源工具,如NLTK、 HanLP等,并搜寻、下载和熟悉PKU、 CoreNLP, LTP MSR, AS CITYI 等语料库。
    解决QT编译Android程序不支持openssl问题
    「滚雪球学Java」教程导航帖(更新中)
    长尾关键词挖掘软件-免费的百度搜索关键词挖掘
    【C语言】程序环境和预处理
    Java配置24-gitlab分支管理
  • 原文地址:https://blog.csdn.net/jakpopc/article/details/128155357