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


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](https://github.com/beordle/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](https://github.com/wailsapp/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 而苦恼的人。

- 最后说明一下,以上其实省略了大量的优化过程,那是用很多很多的周末堆起来的……


相關推薦

2023-08-30

开源社区!我们诚挚地邀请您成为我们社区的一员,一同分享、学习和贡献。 TestHub 是为了解决在软件开发旅程中测试流程管理和执行的复杂挑战而诞生的。传统测试工具可能局限于接口级自动化,无法满足多样化的需求,而

2023-06-29

以很方便地进行项目文档的权限管理和团队协作,也可以分享文档出去给朋友查看。ShowDoc 还支持多平台客户端,有 win 客户端、mac 客户端、ios 、android 等,更方便跨平台使用。目前超过 100000+的互联网团队正在使用 showdoc ,包

2023-07-13

户在过去几年中所取得的成就,对于所有参与者来说都是一个重要的里程碑。 KubeVirt 项目于 2016 年底在红帽启动,提出的问题是:虚拟机 (VM) 可以在容器中运行并由 Kubernetes 部署吗?后来事实证明它不仅是可行的,而且很快就

2023-02-08

GET、POST、PUT接口时遇到了一些问题,把个人的摸索经验分享一下,希望作者能梳理下文档,方便我们更好的接入” 华为 minshiwu: “demo工程,默认使用apijson-framework,可以做到无任何配置即可体验apijson的各种能力。” 字节

2023-08-25

要的是,所有 Furion 的用户都可以在其中进行技术交流和分享。此外,工具库还提供了一个"探索"模块,其中包含了更多帮助开发者工作和开发的工具。 以下是 Furion 框架和 Kit 工具库已完成的一些功能截图: 底层模块状态

2023-03-10

于你和团队的 API 开发平台 团队协作,既能实现API 分享也能可以创建云空间共同协作 突出亮点: 免登录即可测试,省去繁琐的验证登录的操作 界面简洁,没有冗余的功能与复杂选项 开源,免费,适合

2023-10-27

佳实践; 与政策制定者、学术界、民间社会和其他方面分享知识,推动负责任的人工智能发展; 以及大力支持开发有助于应对社会挑战的 AI 应用程序。 公告指出,AI 安全基金将支持来自世界各地附属于学术机构、研究

2023-05-25

缺失参数及字段 [重构] 抽取 Spring Authorization Server 通用工具代码,以支持更多认证模式。 [重构] 使用 Thymeleaf 模版统一内置页面布局,统一设备认证页面,提升页面代码易维护性。 [重构] 重新配置并统一 maven repositories 和 pl

2023-08-23

年还包括一些重点领域: Swift 原生 Memcached 客户端 一个通用的连接池库,可以轻松采用连接池 用于 Smoke、Hummingbird 和 Vapor 等 Web 框架的共享中间件实现 鼓励采用分布式跟踪,使 observability story 更加完善 更好地展示

2023-06-16

的绿色铃铛仅在有真正的新信息时才会点亮。 此外还有一个“查看全部”页面,显示历史通知。 还添加了新的通知细节设定,可以控制看到哪些通知,以及在哪里看到通知。 重新设计了游戏内界面 彻底重造了游戏内

2022-10-12

更新通知的频率、显示应用的内容评级,且有一个新的“分享”按钮,可以轻松分享 KDE Plasma 的软件。 最后,KDE Plasma 5.26 优化了对 Wayland 支持,Plasma Wayland 会话现在能够处理图形输入板配置、中键单击粘贴首选项,以

2023-12-07

Spring-boot-holiday-starter v1.0.0 一个轻量级节假日判断的小工具!      前言 由于项目原因,在一些场景下需要判断是否是节假日,所以写了一个工具类,方便使用。 开源不易,点个 star 鼓励一下吧! 介绍

2023-04-26

认的 Windows 采样率不匹配时) 将配置文件搜索按钮添加到首选项(以便更轻松地过滤和搜索默认配置文件) 修复重复的配置文件名称错误(在导出和重新打开具有某些重复配置文件名称的项目时导致问题) 保护时间轴 (webv

2023-11-09

一个反馈,本文试着将 deepin-IDE 内部的一些实现方法进行分享,希望能够解答友友们的疑惑并得到积极的反馈。 本篇挑了大家关心的“调试”部分进行分享。需要说明的是,deepin-IDE 的调试功能是选用 DAP(Debug Adapter Protocol )