免费发布

Python Meetup(Online)|第一期:Awesome commandline

2020年3月29日 13:30 ~ 2020年3月29日 17:00
不限制人数
线上活动
PyChina

收起

活动票种
    付费活动,请选择票种

    第三方登录:

    展开活动详情

    活动内容收起

     简介:Awesome-commandline


    上大学初学计算机的时候,我们觉得自己只能写出来黑乎乎的命令行,不太酷。一直想做出漂亮的软件,或者优美的网页。然而写程序多年,才发现最喜欢的还是命令行,在命令行中能事半功倍的完成任务,能轻松的结合命令行完成不同的工作。是什么让命令行如此高效,如何利用好命令行?如果你是 ipython 粉,是否想知道如何只通过几行代码,就可以写出具有 ipython 体验的工具?


    本期线上分享 iredis 开发的几位同学和大家分享下开发命令行的经验和难点,以及命令行的乐趣。


     分享者介绍 


    • 赖信涛:iredis 的开发者,dbcli 成员,pgcli core team

    • Wooden-robot:iredis 开发者,splinter 开发者,click 中文文档翻译者

    • rhchen:iredis 开发者


     Timeline 


    13:30-14:00

    开场介绍



    • 分享形式

    • 分享顺序和主题

    • 提问环节


     主要分享  


    14:00- 14:45

    赖信涛:

    awesome commandline



    1. 为什么命令行更加高效(演示demo,vim+tmux+shell命令可以互相配合)

    a. 实例1:如何删掉不用的 git branch,而不用多加思考;

    b. 实例2:如何在命令行处理 json;

    c. 示例3:fpp 配合其他工具的例子;

    d. 示例4:(为何不用GUI 的 vim):vim + tmux 的配合,vim 使用shell操作 buffer,shell 使用 CtrlXE 编辑在 Vim 中编辑命令,Vim 打开新的 Tmux pane 操作等;

    e. 为什么不用GUI呢?

    i. GUI无法和其他的工具交互(复制粘贴?);

    ii. 鼠标操作很慢;

    iii. 占用资源。命令行可以一件工作做一键自己的事情,GUI每个都需要去处理绘图等资源,比较浪费。另外现在很多GUI都是用 Electron 的,也比较费资源;

    iv. 如果遇到问题,难以参与开发(对于我来说);

    v. 跨平台问题,尤其是在服务器处理问题。比如在docker中你可以安装运行命令行,但是无法安装GUI;

    vi. 开发周期短, 迭代速度快, 是业务系统还没跟进之前的一个能力补充;


    2. 大部分时间我们都在和 Vim,终端相处,但是日常的开发工作还离不开另一个角色:REPL

    a. ipython mysql postgres 终端,这些都叫 REPL;

    b. 为什么我们需要 REPL 呢?编辑器我们可以配置成非常顺手的体验,但是 REPL 一般是语言、数据库的开发者提供的比较简易的工具;

    c. 某些数据库有很好用的GUI工具;


    3. 所以我们需要更好的命令行的REPL:mycli/pgcli/iredis

    a. 以iredis为例,展示几个 demo,为什么 iredis 比 redis-cli 更好用;


    4. 如何开发这样的工具?

    a. 介绍 prompt-toolkit,why?100% 类型注解,pure python,处理了各种各样的地狱问题;

    b. 为什么这些优秀的命令行工具都是用 Python 写的?

    c. 几个概念(应该选择不同的库):

    i. TUI(全屏)pingtop;

    ii. 部分更新的 commandline;

    iii. fd/rg/awk 这种命令行工具;

    d. 处理好预定俗称的操作,比如 Emacs 键位,比如Ctrl-X ctrl-E 的功能等;

    e. 开发教学:

    i. 如何处理命令行参数;

    ii. 如何实现补全;

    iii. 如何自定义按键;

    iv. prompt-toolkit 到此一游;


    5.开发理念?

    We prioritize being nice more than being right.

    https://www.dbcli.com/about/

    用户体验优先,有些 feature 实现很复杂,但不应该成为 cli 难用的理由。(客户第一)


    6. What next?

    a. mongo cli?

    b. ES cli?

    c. kafka?

    d. Go REPL?

    e. 参与 dbcli 中来。



    14:45-15:30

    WoodenRobot:

    awesome-pipeline



    • 协助开发 iredis pipeline feature 的始末

    • shell 的 pipeline原理,常用操作

    • python 的 subprocess 接口

    • 如何参与开源项目



    15:30-16:15
    rhchen:

    awesome-BNF



    • 什么是 BNF,为什么要用它,能用它做什么?(编译原理的实践应用)

    • 针对 iRedis 的解析需求, 如何设计 BNF? (处理"未输入完全"的字符串)

    • 使用 SLY 解析输入和 iRedis 当前的解析方式的不同点比较


    References:

    • https://www.dbcli.com

    • https://www.mycli.net/

    • https://www.pgcli.com/

    • https://www.iredis.io/

    • https://github.com/prompt-toolkit/python-prompt-toolkit

    • Github: Lark-Parser

    • Github: Sly-Parser

    • Wikipedia: LALR Parser

    • Github:iRedis#247 (use SLY to tokenize input command stream)

    • 网易云课堂: 编译原理 -- 华保健



    16:15-17:00 

    提问环节



     主办方



    「PyChina」是 PyChina.org 的官方微信公众号(ID:PyChinaOrg),创立于 2014 年,目前由 PyChina 主理。所有和 PyChina、PyCon China 大会相关的动态都会第一时间在这里发布,除此之外,你还可以在这里看到 Python 相关的技术分享和最新资讯,欢迎关注!


    合作请联系:Cynthia 18516094658 (同微信)


    举报活动

    活动标签

    最近参与

    您还可能感兴趣

    您有任何问题,在这里提问!

    为营造良好网络环境,评价信息将在审核通过后显示,请规范用语。

    全部讨论

    还木有人评论,赶快抢个沙发!

    活动主办方更多

    PyChina

    PyChina

    PyChina 是 Python 开发者中国社区,社区致力于为中国的 Python 开发者提供一个知识共享,协同互助的平台,营造愉快的多元化的 Python 氛围,共同推动 Python 在互联网、企业应用等各领域的研发和应用。

    微信扫一扫

    分享此活动到朋友圈

    活动日历   03月
    26 27 28 29 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 30 31