[随想] 花了一周时间做了一个开源项目,并记录其中的过程及随想,感慨哪怕是做好一个小小的开源项目也是很难很难的。 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
pengtdyd
V2EX    随想

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

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

    先说说 鲁班工具箱 (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     Solana     2712 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 06:20 PVG 14:20 LAX 22:20 JFK 01:20
    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