免费发布

x

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

Sunday, March 29, 2020 1:30 PM ~ Sunday, March 29, 2020 5:00 PM
不限制人数
线上活动
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 在互联网、企业应用等各领域的研发和应用。

微信扫一扫

分享此活动到朋友圈

活动日历   04月
30 31 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 1 2 3