Skip to content

Commit 1b456eb

Browse files
junjie.xun521xueweihan
junjie.xun
authored andcommitted
update hg-tui doc
1 parent 4d0d6be commit 1b456eb

File tree

2 files changed

+59
-12
lines changed

2 files changed

+59
-12
lines changed

contents/Rust/hg-tui/content.md

Lines changed: 59 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,34 @@
1-
# 摸鱼神器 —— 在终端浏览 HelloGitHub
1+
# 解锁!浏览 HelloGitHub.com 的新姿势
22

33
> 本文不会涉及太多技术细节和源码,请放心食用
44
55
<img src="./images/cover.jpg" style="zoom:80%;" />
66

7-
自从对 [tui-rs](https://github.com/fdehau/tui-rs) 产生兴趣后,就一直在琢磨如何能基于她写出一个终端应用呢?写一个什么应用呢?
7+
大家好,我是 HelloGitHub 老荀,好久不见!
88

9-
[hellogithub.com](https://hellogithub.com/) 本就是我平时没事喜欢闲逛的网站,一个想法很自然的就产生了,我能不能在终端浏览呢?
9+
在完成 [HZK](https://github.com/HelloGitHub-Team/HelloZooKeeper) 系列之后,我就很少“露面了”,但是我对开源和 HelloGitHub 的热情并没有丝毫的减少,逮着机会就来输出一波,防止被大家遗忘。
1010

11-
## 一、初步构思
11+
这次带来的是我写的一款在终端浏览 HelloGitHub 的工具:hg-tui,让你双手不离开键盘就能畅游在 HG 的开源世界。功能如下:
12+
13+
- 色彩丰富、平铺展示
14+
- 通过关键字搜索月刊往期的项目
15+
- 类 Vim 的快捷键操作方式
16+
- 一键直达开源项目首页
17+
- 支持 Linux、macOS、Windows
18+
19+
> 地址:https://github.com/kaixinbaba/hg-tui
20+
21+
下面我将分享 hg-tui 开源项目的缘起、构思、开发的全部流程,最后还会分享我通过这个项目对开源的一些感悟。
22+
23+
## 一、起因
24+
25+
我前端时间一直在学 Rust,前段时间看到 HG 讲解 tui-rs 的文章。
26+
27+
看完后手痒的厉害,就写了一篇 tui-rs 入门文章,但感觉还不过瘾就像写一个项目练手。
28+
29+
因为我平时经常上 hellogithub.com 划水、找开源项目,所以就决定用 tui-rs 做一个终端浏览 hellogithub.com 的工具。
30+
31+
## 二、构思
1232

1333
首先我希望这个应用能有以下功能:
1434

@@ -39,7 +59,9 @@
3959

4060
上面展示的这些差不多已经是这个项目的全部了
4161

42-
## 二、技术选型
62+
## 三、开发
63+
64+
### 3.1 技术选型
4365

4466
要实现上述的那些功能,就要从 Rust 的生态中选择合适的库了
4567

@@ -55,6 +77,8 @@
5577

5678
Rust 虽然还是编程界的小学生(2011 年启动),但是经过了这些年的发展,生态已经逐渐完善(和几位大哥还是差很多),加上 Rust 是系统级的语言,所以我相信未来 Rust 一定能成为多面手。
5779

80+
### 3.2 项目结构
81+
5882
项目目录规划(非全部)
5983

6084
```rust
@@ -75,7 +99,7 @@ src
7599

76100
当然这些文件也不是在项目之初就已经一股脑的建立好的,都是在完善功能的路上一点点添加进来的~
77101

78-
## 三、实现代码片段
102+
### 3.3 代码片段
79103

80104
因为是基于 `tui-rs` 开发的应用,所以主流程肯定是遵循该库的设计的,首先需要定义一个 `App` 用来保存整个项目的状态信息
81105

@@ -205,17 +229,40 @@ pub fn handle_key_event(event_app: Arc<Mutex<App>>) {
205229

206230
其他剩下的就是本应用的业务逻辑,具体的代码可以直接看仓库 [https://github.com/kaixinbaba/hg-tui](https://github.com/kaixinbaba/hg-tui)
207231

208-
## 四、开发心路
232+
## 四、感悟
233+
234+
我一开始启动项目的时候,初衷很简单,仅仅是为了做个实际的项目把玩一下 `tui-rs`
235+
236+
- 作为项目的第一个用户
237+
- 自己既是产品也是开发,能让自己站在用户的角色考虑
238+
- 开源就是以开放的态度接受别人的建议
239+
- 没有与生俱来的完美,不断迭代让它越来越好(1 个月 100+ commit)
240+
- GitHub Action 真的是一个强大的功能(其实这次是我第一次认真研究 GitHub Action 功能)
241+
- homebrew 对项目 star 还有要求(吐槽),希望大家看到这里的话能给个 star✨
242+
243+
---
209244

210245
仔细想想这可能是我写的第一个拥有完整功能的 Rust TUI 项目,从有想法到完成开发前后差不多用了三周不到的时间,期间碰到了各种各样的问题,我整理了一下:
211246

212247
- tui-rs 如何使用,为了看懂她的模板流程,我基本看完了 tui-rs 本身的所有源码(源码很少说实话,并不是一件难事)
213-
- 查看其他使用的 tui-rs 的项目,学习她们是如何使用 tui-rs 的(看了不下数十个项目,如果你有兴趣的话,这里是[地址](https://github.com/fdehau/tui-rs#apps-using-tui)
214-
- 在生态中寻找合适的 Rust crate 来处理我当前的场景并学会使用她
215-
- 和 Rust 编译器斗智斗勇(Rust 新手的第一座大山,Orz)
216-
- 尽量编写符合 Rust 的代码风格项目
248+
- 查看其他使用的 tui-rs 的项目,学习她们是如何使用 tui-rs 的(源码真的是宝藏,没什么问题是看源码解决不了的,看了不下数十个项目,如果你有兴趣的话,这里是[地址](https://github.com/fdehau/tui-rs#apps-using-tui)
249+
- 在生态中寻找合适的 Rust crate 来处理我当前的场景并学会使用她(Rust 的文档功能实在是太强了)
250+
- 和 Rust 编译器斗智斗勇(Rust 编译器是我见过最强大的,一定要灵活运用搜索引擎,最后实在不行可以去 Rust 社区提问一把,Rust 的社区真的是很热情)
251+
- 尽量编写符合 Rust 的代码风格项目(我写每一种编程语言都会去寻找她的最佳工程实践学习并遵守她,古话说得好,没有规矩不成方圆)
252+
253+
---
254+
255+
...
256+
257+
她从出生那一刻起,身体里流淌的就是开源的血。
258+
259+
软件世界里的开源,就像金庸世界中的侠客。每一个开源贡献者都是我心目中行走江湖的英雄,我心中那一点点的英雄主义和理想主义,羡慕着他们的同时也希望能像他们一样,为开源的世界贡献出自己的一点点微不足道的热情。
260+
261+
每一个开源项目可能都只是起源于作者的一个小小的灵光乍现,也可能只是为了解决自己实际工作生活中的小小痛点,但是随着功能的逐步完善,每一个小小的项目最终都可能成长成璀璨夺目的明星项目,然后为其他人甚至整个行业带来了生产力效率的提升,这可能也是每一个开源作者最终所期待的吧~
262+
263+
我的这个项目说实话很小,无论是代码量还是功能上,所以导致我一开始并不想写这样一篇文章去介绍她,[蛋蛋](https://github.com/521xueweihan)却用了一段话打动了我,其中印象最深的一句话是:**任何一个开源项目都是从小项目开始的。完成一个开源项目并不难,十年如一日的维护才是最难的**
217264

218-
其实一开始我也只是打算把这个项目完成基本功能,然后开源就完事了,但在[蛋蛋](https://github.com/521xueweihan)的建议下我又完成一些小功能,但我还是觉得我这个项目太小,没什么可说的,但他说了一句话我印象很深刻:**任何一个开源项目都是从小项目开始的,完成一个开源项目并不难,十年如一日的维护才是最难的**
265+
我最近也看了一个开源斗士的故事,故事不短很打动我,链接在[这里](https://gitstats.chenjiandongx.me/#/),我想可能若干年后,我在工作中已经不写代码了,但是我相信我也会在生活之余写写自己的小玩意~
219266

220267
---
221268

contents/Rust/hg-tui/images/4.png

8.36 KB
Loading

0 commit comments

Comments
 (0)