V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
LonnyWong
V2EX  ›  程序员

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

  •  6
     
  •   LonnyWong · 103 天前 · 5522 次点击
    这是一个创建于 103 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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 而苦恼的人。
    • 最后说明一下,以上其实省略了大量的优化过程,那是用很多很多的周末堆起来的……
    48 条回复    2024-02-28 15:17:58 +08:00
    LonnyWong
        1
    LonnyWong  
    OP
       103 天前
    前面有个链接多了个冒号导致 404 ,这里修正一下:

    https://github.com/trzsz

    上面说到的几个开源项目都 pin 在这里的首页中。
    mumbler
        2
    mumbler  
       103 天前
    这写到简历里,比啥博士硕士学历都好用啊
    qloog
        3
    qloog  
       103 天前
    OP 高产啊 👍🏻
    crazyTanuki
        4
    crazyTanuki  
       103 天前
    全能选手?!
    lstz
        5
    lstz  
       103 天前 via iPhone   ❤️ 1
    感谢分享

    如果 1k star 是对单个 repo ,则恭喜 po 主可以免费用 coploit 了
    LonnyWong
        6
    LonnyWong  
    OP
       103 天前
    @mumbler #2 过了找工作的年纪啦。如果哪天被裁了,也不一定会写这几个到简历里。
    LonnyWong
        7
    LonnyWong  
    OP
       103 天前
    @crazyTanuki #4 刚毕业时写 C# 和 JAVA ,现在的工作写 C/C++,你猜我会多少门语言?
    LonnyWong
        8
    LonnyWong  
    OP
       103 天前
    @lstz #5 还有这好事?我去了解下。
    lstz
        9
    lstz  
       103 天前 via iPhone   ❤️ 1
    是滴,另外 JetBrains 全家桶楼主也是具有资格的,发个邮件过去,所有 ultimate edition 都能免费用
    lslhz
        10
    lslhz  
       103 天前
    c# yyds 。。。
    lisongeee
        11
    lisongeee  
       103 天前   ❤️ 1
    点击此处可以直接查看是否有资格免费使用 copilot

    <https://github.com/github-copilot/free_signup>
    lisongeee
        12
    lisongeee  
       103 天前   ❤️ 1
    此外其实这个并不要求你有 1k repo ,内部判断逻辑未知,我看有人只有 200 star 也有资格
    LonnyWong
        13
    LonnyWong  
    OP
       103 天前
    @lstz #9 Wow ,原来 1k star 能解锁这么多东西呀。
    LonnyWong
        14
    LonnyWong  
    OP
       103 天前
    @lisongeee #11 现在看还是 $10/month ,或 $100/year 。
    lstz
        15
    lstz  
       103 天前 via iPhone
    @LonnyWong yep :P
    crazyTanuki
        16
    crazyTanuki  
       103 天前
    @LonnyWong 是不是除了语法差异,基本上思路逻辑都差不多?
    lisongeee
        17
    lisongeee  
       103 天前
    JetBrains 全家桶有一个叫开源免费许可证,只需要维护满 3 个月开源仓库就行

    可以直接点击 <https://www.jetbrains.com/shop/eform/opensource> 去申请,不需要像上面说的手动发邮件
    icyalala
        18
    icyalala  
       103 天前
    Copilot 是每月一审,似乎有足够 Star 就可以
    JetBrains 每年一审,不看 Star ,看纯代码的提交频率
    LonnyWong
        19
    LonnyWong  
    OP
       103 天前   ❤️ 1
    @crazyTanuki #16 产品逻辑都差不多,实现会有差异的。有些语言提供了好用的基础库,实现起来就简单清晰,有些语言就要自己实现一些库,或者换一种写法。
    xhatt510
        20
    xhatt510  
       103 天前   ❤️ 1
    我也用 go 写了个类似你那个 ssh 的功能,后面没维护了。只做了选服务器和连接功能,比较简单
    LonnyWong
        21
    LonnyWong  
    OP
       103 天前
    @lstz
    @lisongeee
    @icyalala
    感谢分享,可能是我建了一个 trzsz 组织 https://github.com/trzsz ,个人项目中并没有高 star 的,所以 copilot 的免费资格没有。不过也无所谓,首先公司不允许用,其次我家里也还没试过,对 copilot 没什么依赖。以前写代码依赖 Google ,现在依赖 ChatGPT 和 Google 。写的语言太多了,不可能全都记住,所幸其本质原理都一样,反复捡起来很快。

    JetBrains 我也几乎没用过,很久以前用 eclipse 写 JAVA ,后来用 vim 写 C/C++ ,现在用 nvim 写所有了,AstroNvim
    https://astronvim.com/ 长的很像 vscode 。
    bequt
        22
    bequt  
       103 天前
    早已经 star ,非常香
    gouguoyin
        23
    gouguoyin  
       103 天前
    Hopetree
        24
    Hopetree  
       103 天前
    @lisongeee 我有单个项目 1K 多 star ,我点击你这个地址过去看到的是$10/month ,或 $100/year ,没有免费啊
    LonnyWong
        25
    LonnyWong  
    OP
       103 天前
    @gouguoyin #23 强
    admpubcom
        26
    admpubcom  
       103 天前 via iPhone
    @Hopetree 俺也一样,点进去看到的是首次免费 30 天,以后就是$10/month ,没看到一直免费的条款和说明
    gouguoyin
        27
    gouguoyin  
       103 天前   ❤️ 1
    @LonnyWong 已 star 你的,加油!
    LHRUN
        28
    LHRUN  
       103 天前
    @lisongeee 我也有个项目马上 1K 了,但是进去好像还是付费的 麻了啊
    AmoxiDu
        29
    AmoxiDu  
       103 天前   ❤️ 1
    果断 star 。
    用了下 tssh ,优雅,太优雅了
    abersheeran
        30
    abersheeran  
       103 天前   ❤️ 1
    @LHRUN 看了一下你的主页,我猜测是没有参与过那种超多 Star 的项目贡献,所以没给。你看我的主页,没有一个超过 300 Star 的项目,但是我有免费使用权,可能因为我参与了不少那种大项目。
    LonnyWong
        31
    LonnyWong  
    OP
       103 天前
    @abersheeran #30 我也给超多 Star 的项目贡献过,是不是还与提交的 commit 数和代码行数有关?
    我列举一些(代码行数不多):
    https://github.com/gnachman/iTerm2
    https://github.com/pwndbg/pwndbg
    https://github.com/microsoft/terminal
    https://github.com/electerm/electerm
    https://github.com/tsl0922/ttyd
    https://github.com/warmcat/libwebsockets

    在 GitHub 中搜索 "is:pr author:用户名" 能列出某个人的所有 PR 。

    PS:我暂不需要 coploit ,我只是好奇它的规则。
    LonnyWong
        32
    LonnyWong  
    OP
       103 天前
    我想到了,github coploit 的免费名额可能跟贡献的排名有关。可能 1K 的 repo 只取第一名,2K 的 repo 只取前两名,依赖类推……( 猜的,具体也不一定是这个比例 )。
    Zzzz77
        33
    Zzzz77  
       103 天前
    github coploit 的免费与否不仅仅看 star 数量、贡献排名、贡献代码量这些,因为我有一个 5k+star 的个人项目,照样不免费。但我也见过 100 多 star 就能免费用的,官方也没有给出一个评判标准,总之很迷
    cnbatch
        34
    cnbatch  
       103 天前
    既然这是 tmux 的问题,有没有考虑过告诉 tmux 开发者让他们修 bug ,彻底消除根源问题?
    LonnyWong
        35
    LonnyWong  
    OP
       103 天前
    @cnbatch #34 一开始是去 tmux 的 github 找解决办法的,tmux 没有意向支持 rz / sz ,并且锁 issue 了:

    https://github.com/tmux/tmux/issues/906

    https://github.com/tmux/tmux/issues/1439
    qloog
        36
    qloog  
       103 天前
    我的: https://github.com/go-eagle/eagle 马上 1.5k 了
    mawen0726
        37
    mawen0726  
       103 天前
    弱弱的问一下,tssh 和 windterm 的区别是什么,目前在用 windterm ,tssh 刚刚试用了一下挺好使,但又不太习惯,感觉和 windterm 有点相似
    https://github.com/kingToolbox/WindTerm
    LonnyWong
        38
    LonnyWong  
    OP
       103 天前
    @mawen0726 #37 tssh 不是一个终端,是和 ssh 一样的命令行程序,一般要在某个终端里面运行。特别是在一些没有太多配置的精简终端,或原生终端里,非常适用。你可以认为 tssh 就是 ssh ,它额外提供了一些扩展的功能,例如选机器登录,记住密码,和文件传输等。
    LonnyWong
        39
    LonnyWong  
    OP
       103 天前
    @qloog #36 强,加油。
    Bamed
        40
    Bamed  
       102 天前
    感谢楼主
    mawen0726
        41
    mawen0726  
       101 天前
    @LonnyWong 感谢楼主,划分清楚了
    yudoo
        42
    yudoo  
       60 天前
    @LonnyWong 这个写 springboot 微服务相关的方便吗
    LonnyWong
        43
    LonnyWong  
    OP
       60 天前
    @yudoo ssh 登录到服务器上,然后用 vim 来写?
    yudoo
        44
    yudoo  
       60 天前
    @LonnyWong 就是本地开发, 用这个方便么,vscode 写 java 不怎么方便,idea 又太占内存了
    LonnyWong
        45
    LonnyWong  
    OP
       59 天前
    @yudoo 这个不是 IDE , 是用来登录服务器,上传或下载文件的。
    yudoo
        46
    yudoo  
       59 天前
    @LonnyWong #21 我说的是 AstroNvim😏
    LonnyWong
        47
    LonnyWong  
    OP
       59 天前
    @yudoo 可以的,我就用它来写,不过最近写 JAVA 很少。
    yudoo
        48
    yudoo  
       59 天前
    @LonnyWong 好的谢谢 我试下
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2871 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 14:50 · PVG 22:50 · LAX 07:50 · JFK 10:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.