PlantUML 图形种类多样,属性字段繁多。从零开画图让人挠脑袋,同时最后获得的作品也不一定尽善尽美。不能做到立刻原创,其实可以选择模仿上道,所以好的 PlantUML 作品就成了初学者的老师,凸显了获取 PlantUML 信息流的重要性。
每次思(想)念(抄) PlantUML,怀着崇高的敬意打开 Real World PlantUML ( RWP )这个网站,我都会想起 B 站满屏「非静止画面」弹幕的场景。然鹅很不幸,经过长期观察,最后发现这网页的 PlantUML 示例们真的是静止的,首页的右下角永远是一张我很喜欢的蓝绿背景色相间的时序图。尽管拥有庞大数量的 PlantUML 素材库,但是 99% 都长久淹没在了不知名的页码里,多少有些遗憾。
RWP 项目本身的架构比较宏大,其中甚至还包括了对 PlantUML 源文件语法正确性检查的模块(如下图):
之所以在我看来功能上有些缺陷,追其根源,是因为 scraping 模块是离线的。该项目是在本地完成对 Github PlantUML 文件的爬取和保存后,用于项目中,不会在网站运行过程中和 Github 有交互。这样的设定,让 RWP 本身的逻辑形成了闭环,不会因为 Github 的升级迭代对其运行造成影响,但是也就不会再有新的 PlantUML 文件加入,给人的感觉就永远是那老三样。趁着国庆,让我动起了另起炉灶,获取最新最时尚的 PlantUML 信息流的念头。
One Shot PlantUML(简称 OSP )由此应运而生,并采取了和 RWP 完全不同的策略。每次网站被打开,都会从 Github 实时获取最新提交并被索引的 1000 份 PlantUML 文件中随机获取一个,呈现到访问者面前(所以访问速度比较慢,各位看官老爷手下留情):
只要不断有新的 PlantUML 文件被提交到 Github 并被索引收录,那么 OSP 就有源源不断的新鲜资源可以呈现到用户面前。仔细思考一下,甚至感觉可以吸引部分抖音和快手玩家,从刷短视频转到刷 UML 图,没有逻辑推荐、套路 AI,岂不爽哉。
RWP 是 17 年左右上线的,想到其老哥每年都要操作 GCD 续费等事情我就头皮发麻,我是想极力避免这个情况的,所以转向了免费的 Heroku 。Heroku 提供每月 1000 小时的免费对外提供服务时长,如果只有一个应用,每天 24 小时对外提供服务都还绰绰有余。
当然涉及到存储什么的就需要单独购买收费服务了,基于上面的(不花钱的)原则,OSP 就没有做任何的存储,每次访问都是直连 Github 获取数据并渲染展示。
Github 本身是提供对外公开访问的 API 的,但是经过鄙人 10 分钟的研究发现,可能出于数据量以及性能方面的考虑,其在 2013 年下线了根据文件后缀对文件层次结果进行搜索的功能,与此同时界面上却有相关功能,所以 OSP 项目转向使用模拟浏览器访问的形式发起搜索,获取数据。更加贴近我本心的同时,也带来了响应比较缓慢,偶尔会出现获取文件失败的问题,给予了这个疾速年代的普罗众生一个放缓脚步的机会,希望大家在使用过程中且行且珍惜。
服务部署和网页数据获取中遇到的更多问题可以参考 OSO Readme.md 获取更多资讯。
如果你喜欢这篇文章,可以看看我的半亩三分地。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.