从分享一个小工具到首个 GitHub 1K Star 小成就 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
请不要在回答技术问题时复制粘贴 AI 生成的内容
LonnyWong

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

  •  6
     
  •   LonnyWong Jan 15, 2024 7089 views
    This topic created in 833 days ago, the information mentioned maybe changed or developed.

    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 replies    2024-02-28 15:17:58 +08:00
    LonnyWong
        1
    LonnyWong  
    OP
       Jan 15, 2024
    前面有个链接多了个冒号导致 404 ,这里修正一下:

    https://github.com/trzsz

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

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

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

    可以直接点击 <https://www.jetbrains.com/shop/eform/opensource> 去申请,不需要像上面说的手动发邮件
    icyalala
        18
    icyalala  
       Jan 15, 2024
    Copilot 是每月一审,似乎有足够 Star 就可以
    JetBrains 每年一审,不看 Star ,看纯代码的提交频率
    LonnyWong
        19
    LonnyWong  
    OP
       Jan 15, 2024   1
    @crazyTanuki #16 产品逻辑都差不多,实现会有差异的。有些语言提供了好用的基础库,实现起来就简单清晰,有些语言就要自己实现一些库,或者换一种写法。
    BeUself
        20
    BeUself  
       Jan 15, 2024   1
    我也用 go 写了个类似你那个 ssh 的功能,后面没维护了。只做了选服务器和连接功能,比较简单
    LonnyWong
        21
    LonnyWong  
    OP
       Jan 15, 2024
    @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  
       Jan 15, 2024
    早已经 star ,非常香
    gouguoyin
        23
    gouguoyin  
       Jan 15, 2024
    Hopetree
        24
    Hopetree  
       Jan 15, 2024
    @lisongeee 我有单个项目 1K 多 star ,我点击你这个地址过去看到的是$10/month ,或 $100/year ,没有免费啊
    LonnyWong
        25
    LonnyWong  
    OP
       Jan 15, 2024
    @gouguoyin #23 强
    admpubcom
        26
    admpubcom  
       Jan 15, 2024 via iPhone
    @Hopetree 俺也一样,点进去看到的是首次免费 30 天,以后就是$10/month ,没看到一直免费的条款和说明
    gouguoyin
        27
    gouguoyin  
       Jan 15, 2024   1
    @LonnyWong 已 star 你的,加油!
    LHRUN
        28
    LHRUN  
       Jan 15, 2024
    @lisongeee 我也有个项目马上 1K 了,但是进去好像还是付费的 麻了啊
    AmoxiDu
        29
    AmoxiDu  
       Jan 15, 2024   1
    果断 star 。
    用了下 tssh ,优雅,太优雅了
    abersheeran
        30
    abersheeran  
       Jan 15, 2024   1
    @LHRUN 看了一下你的主页,我猜测是没有参与过那种超多 Star 的项目贡献,所以没给。你看我的主页,没有一个超过 300 Star 的项目,但是我有免费使用权,可能因为我参与了不少那种大项目。
    LonnyWong
        31
    LonnyWong  
    OP
       Jan 15, 2024
    @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
       Jan 15, 2024
    我想到了,github coploit 的免费名额可能跟贡献的排名有关。可能 1K 的 repo 只取第一名,2K 的 repo 只取前两名,依赖类推……( 猜的,具体也不一定是这个比例 )。
    Zzzz77
        33
    Zzzz77  
       Jan 15, 2024
    github coploit 的免费与否不仅仅看 star 数量、贡献排名、贡献代码量这些,因为我有一个 5k+star 的个人项目,照样不免费。但我也见过 100 多 star 就能免费用的,官方也没有给出一个评判标准,总之很迷
    cnbatch
        34
    cnbatch  
       Jan 15, 2024
    既然这是 tmux 的问题,有没有考虑过告诉 tmux 开发者让他们修 bug ,彻底消除根源问题?
    LonnyWong
        35
    LonnyWong  
    OP
       Jan 15, 2024
    @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  
       Jan 15, 2024
    我的: https://github.com/go-eagle/eagle 马上 1.5k 了
    mawen0726
        37
    mawen0726  
       Jan 15, 2024
    弱弱的问一下,tssh 和 windterm 的区别是什么,目前在用 windterm ,tssh 刚刚试用了一下挺好使,但又不太习惯,感觉和 windterm 有点相似
    https://github.com/kingToolbox/WindTerm
    LonnyWong
        38
    LonnyWong  
    OP
       Jan 15, 2024
    @mawen0726 #37 tssh 不是一个终端,是和 ssh 一样的命令行程序,一般要在某个终端里面运行。特别是在一些没有太多配置的精简终端,或原生终端里,非常适用。你可以认为 tssh 就是 ssh ,它额外提供了一些扩展的功能,例如选机器登录,记住密码,和文件传输等。
    LonnyWong
        39
    LonnyWong  
    OP
       Jan 15, 2024
    @qloog #36 强,加油。
    Bamed
        40
    Bamed  
       Jan 16, 2024
    感谢楼主
    mawen0726
        41
    mawen0726  
       Jan 17, 2024
    @LonnyWong 感谢楼主,划分清楚了
    yudoo
        42
    yudoo  
       Feb 27, 2024
    @LonnyWong 这个写 springboot 微服务相关的方便吗
    LonnyWong
        43
    LonnyWong  
    OP
       Feb 27, 2024
    @yudoo ssh 登录到服务器上,然后用 vim 来写?
    yudoo
        44
    yudoo  
       Feb 27, 2024
    @LonnyWong 就是本地开发, 用这个方便么,vscode 写 java 不怎么方便,idea 又太占内存了
    LonnyWong
        45
    LonnyWong  
    OP
       Feb 27, 2024
    @yudoo 这个不是 IDE , 是用来登录服务器,上传或下载文件的。
    yudoo
        46
    yudoo  
       Feb 28, 2024
    @LonnyWong #21 我说的是 AstroNvim
    LonnyWong
        47
    LonnyWong  
    OP
       Feb 28, 2024
    @yudoo 可以的,我就用它来写,不过最近写 JAVA 很少。
    yudoo
        48
    yudoo  
       Feb 28, 2024
    @LonnyWong 好的谢谢 我试下
    About     Help     Advertise     Blog     API     FAQ     Solana     3167 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 86ms UTC 14:31 PVG 22:31 LAX 07:31 JFK 10:31
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86