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

[随想] 花了一周时间做了一个开源项目,并记录其中的过程及随想,感慨哪怕是做好一个小小的开源项目也是很难很难的。

  •  
  •   pengtdyd · 2022-12-02 08:54:52 +08:00 · 1668 次点击
    这是一个创建于 704 天前的主题,其中的信息可能已经有所发展或是发生改变。

      先说说 鲁班工具箱 (Luban Kit) 这个项目的由来,上周在思考怎么做 Lime 记账 的时候,想的太多了,很烦,在技术选型上纠结在 Bloc 和 getX 上犹豫不决,索性先不弄了,反正也鸽了很久,哈哈哈。于是想着先把文档的选型给弄了,这样以后文档也好写一些。在网上搜索资料的时候发现了 docsify 这个文档项目,简单看了一下官方文档,感觉基本满足了我的需求,而且还支持 Github Page 直接 Git 提交就可以用了,有点所见既所得的味道,所以就自己就跟着文档搭建了一下,先试用看看,结果在看封面配置的时候,感觉渐变色不是很好看,想着能不能使用模糊图片作为背景图片,类似毛玻璃的那种效果,别说还真支持,然后就又去找了壁纸相关的 API 。就这样做一个工具箱方面的开源项目的想法慢慢萌芽了。

      网上搜了一圈壁纸 Api ,基本上都是必应壁纸的 Api ,而且还是各种个人项目霸榜,简直多如牛毛!其中有几个做的还不错,例如:imgRunioliutodaybing 这三个算是我能找到的比较好的还能用的 Api 了,有不少已经不能用了。仔细对比研究了一下这三个接口,第一个是 PHP 写的,源码非常简单,但是源码里面没有提供 UHD 的源码,接口文档里倒是提供了,感觉挺奇怪的,也不支持模糊,有点遗憾。第二个貌似已经很多年了,也支持模糊,就是文档写的一般,基本可用。第三个挺好看的,尤其是网站做的非常好,设计的不错,不过离奇的是有些超高清壁纸需要付费下载,本人表示理解,毕竟服务器也需要花钱维持但是心里有点膈应。研究了一圈,感觉信心来了,这也太简单了,不就调个接口嘛,我上我也行,而且我还有 Deta 这个免费云平台,服务器域名都不用花钱,不用白不用。

      之前其实也没有用过 Deta ,也是偶然间发现的。它支持 python 和 nodejs 刚好我都会,思考了一下,选择了 python 技术栈,必应接口用爬虫的方式处理感觉比较好。框架本来选的是 Flask 的,然后看到 Deta 官方里面有 FastApi 的教程,看它官网介绍的很厉害,速度很快,然后就入坑了,搞了几天,发现在处理图片文件输出的时候和 Pillow 有点不知道怎么写了,都已经是临门一脚了,然后又切回到了 Flask ,浪费了几天时间。这里不得不说,Flask 经过这么多年的发展,平台兼容性和资料确实是目前最好的了。又花了几天时间把项目结构和之前写的代码弄好了,也增加了 Json 接口和模糊配置,算是基本能用了。还画了 流程图,算是习惯吧,有利于整理思路。

      在使用 docsify 的时候发现这个看上去简单的文档工具,也不是那么简单的,首先就是文档结构问题,我原本是想按照 Typora 里面文档树的结构来做的,但是看文档感觉有点不知所措,刚开始的时候我创建了一个 zh-cn 的文件夹,目标是把所有的文档全部装到这个文件夹里面,然后再按照文档树的结构来排版,但是好像不太对,因为我并没有多语言的需求,官方文档里面有不少示例都是多语言的示例,前期的时候有点“误导”,但我很快转变了思路,直接看官方文档的 Github 这样更直接,源码里面有更直观的信息,更容易看懂。

      然后是插件,在官方文档里面的所有插件,感觉都想用一下,有些使用的很顺利,直接跟着文档走就行了,但有些却不行。比如我想在文档里面添加评论系统,docsify 给出了 2 个选择,Disqus 和 Gitalk 。刚开始的时候我选择的是 Disqus ,之前我也听说过它,也曾在国外的网站上使用过,算是有个印象了。注册了 Disqus 的账号,结合文档看了看,感觉并不是很符合我的要求,而且 Basic 版本有广告,里面的功能也不太符合国内软件的使用习惯,所以就放弃了它。转而去用了 Gitalk ,这也是现在项目文档使用的评论系统,总体感觉还是很不错的,优点是不用注册账号,这点很赞,不用维护账号了。直接使用 Github 登录,基本上会使用鲁班工具箱的人也都会有 Github 账号,所以也贴合目前的使用场景。在使用 Gitalk 这个插件的时候发现其文档写的比较一般,没有示例,有些能看懂,有些不太能,有点歧义,这导致配置出错在页面上总有一行 404 的提示,其实这点也因人而异,每个人的理解不同,我的直观感受也不能代表大多数。能写出一份好的文档也不是一件容易的事情。把 Gitalk 源码和文档结合着看花了一些时间,也算顺利吧。

      最坑的是谷歌统计,官方文档里的示例已经过时了,现在谷歌统计是用 G-xxxxx 这样的 id 本来我还以为是每个账号的 id 不同,结果测试了很久都没有收到数据,谷歌统计的测试也正常,因为这是我最想添加的功能,所以花了不少时间研究,如果谷歌统计能用,就可以直接看到文档的访问情况,随时调整,结果最后发现不能使用,也找到了 issues 里面的关于这个插件的讨论,不过还在测试中,目前看来是用不了。

      写在最后通过这个非常简单的小项目,发现要把一个开源项目做好,还是一件挺难的事情,一个人做的话要面面俱到,缺一不可。语言、框架、文档、第三方库、插件、CI/CD 、部署、UI 、甚至是小小的徽章都要仔细弄好,做好一个开源项目实属不易。其实 python 我也学了好久,算是老江湖了,flask 、django 、分布式爬虫、深度学习、自动化运维或多或少都有涉猎,不过最近两年基本没怎么去用,真的是生疏了不少。总得来说算是合格的做出了一个小小的开源项目出来,至于有没有人用,这点其实已经不是做这个项目的初衷了,初衷还是给自己带来方便,如果在自己用的同时能给其他人带来方便或者其他人能学到东西,也是算是一件乐事吧。

    总结:

    • 不足

      • 本来打算做一个在线工具平台的,但目前只有一个必应壁纸接口,很单薄
      • 文档还是有待提高
      • Git 提交说明没有规范,这个需要改进
      • 接口没有 cdn ,域名服务器都在国外,访问有点慢
    • 未来计划

      • Json 格式化这个会加上,目前 Json 格式化广告很多,做一个好看的速度快的在线格式化工具
      • 图片占位符,这个其实已经写好了,能用但需要优化一下
      • 其他的暂时没想好

    2022 年 12 月 02 日

    3 条回复    2022-12-13 22:32:33 +08:00
    msg7086
        1
    msg7086  
       2022-12-02 09:18:11 +08:00
    看你第一段让我想起了 /t/205291
    pengtdyd
        2
    pengtdyd  
    OP
       2022-12-02 09:23:22 +08:00
    @msg7086 关键是我最终还是拐个弯回来了,哈哈哈
    needpp
        3
    needpp  
       2022-12-13 22:32:33 +08:00
    @msg7086 真实
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1011 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 21:06 · PVG 05:06 · LAX 13:06 · JFK 16:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.