8

从分享一个小工具到首个 GitHub 1K Star 小成就

 8 months ago
source link: https://www.v2ex.com/t/1008644
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

2021 年 11 月,Python 版 trzsz 工具

  • 背景:在 iTerm2 中使用 rz sz 又卡死了,才想起当前是 tmux 环境,然后 kill 并重登录,真的很浪费时间。
  • 原因:rz sz 在传输时会有一些特殊字符,tmux 的存在导致传不过去。
  • 解法:如果先将文件 Base64 编码再传输,就可以顺利穿过 tmux 了。
  • 结果:写了个小工具 trzsz ( trz / tsz ) 自用,接着在 GitHub 上开源分享出来: https://github.com/trzsz/trzsz

2022 年 2 月,TypeScript 版 trzsz.js 库

  • 背景:trzsz 开始只支持 iTerm2 ,网友提出想要支持其他终端,例如 electerm 和 tabby 等。
  • 结果:用 TypeScript 写了个 trzsz.js 的库,顺便支持在浏览器 webshell 中使用。这个库主要是面向终端或 webshell 开发者的,用来接入并支持 trzsz ( trz / tsz ): https://github.com/trzsz/trzsz.js

2022 年 3 月,Go 版 trzsz 工具

  • 背景 1: trzsz 还有很多其他终端未支持,有网友特别想支持 Linux 的原生终端,但是提 PR 过去大概率会被拒绝。
  • 背景 2: 有网友在 V2 分享了 termtunnel,让我突然想到,可以写个工具作为 ssh 进程的父进程,就可以完全控制 ssh 的输入和输出了,从而实现对 trzsz ( trz / tsz ) 的支持。
  • 结果:为了支持所有平台,为了便于分发(独立的程序,无任何依赖),选择了用 Go 来开发,于是便有了 Go 版的 trzsz ( trz / tsz ): https://github.com/trzsz/trzsz-go

2023 年 5 月,实现 ssh 客户端

  • 背景 1: Windows 中的 ConPTY 和 ConHost 存在性能问题,导致 Go 版 trzsz 只有几十 K 的速度。
  • 背景 2: 有网友来咨询 trzsz.js 的问题,他用的是 Go wails,才知道 Go 有强大的 ssh 库,可以把 Go 版 trzsz 改造成一个库让他接入。
  • 背景 3: 在 ssh 登录不常用的服务器时,总是不能准确地记住别名是什么,然后就是 cat ~/.ssh/config ,很不丝滑。
  • 结果:把 Go 版 trzsz 改造成一个库,自己写一个 ssh 客户端,完全兼容原生 ssh 的,然后定制自己想要的功能,顺便解决 trzsz 在 Windows 慢的问题,叫 trzsz-ssh ( tssh ): https://github.com/trzsz/trzsz-ssh

2024 年 1 月,tssh 率先突破 1k star

  • trzsz-ssh ( tssh ) 是以上几个最后开源的,却是最先达到 1k star 的,为期不到一年。
  • trzsz-ssh ( tssh ) 也支持原生 zmodem ( rz / sz ),只要有本地 shell 的终端就能使用。凡是没有原生支持 rz / sz 的终端,配合 tssh 使用大概率会有惊喜。
  • 截止到现在,star 和 fork 数量的汇总 https://github.com/trzsz:
    • Python 版 958 star 48 fork
    • TypeScript 版 177 star 14 fork
    • Go 版 752 star 46 fork
    • tssh 1000 star 62 fork

总结与感想

  • 在日常工作中会遇到很多的小痛点,当重复遇到的次数多了,那怕只是几秒的浪费,我就会去思考有没有优化的空间,会去网上看看别人是如何做的,实在找不到就只好自己动手丰衣足食了。
  • 开始并没有想着要投身开源,因为找不到 tmux 中使用 rz sz 的解决方案,而自己写了个小工具,只是想简单分享给同样为 tmux 不支持 rz sz 而苦恼的人。
  • 最后说明一下,以上其实省略了大量的优化过程,那是用很多很多的周末堆起来的……

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK