V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
LangInteger
V2EX  ›  分享创造

手摸手 PlantUML 信息流教程

  •  1
     
  •   LangInteger · 2021-10-03 01:51:22 +08:00 · 2209 次点击
    这是一个创建于 928 天前的主题,其中的信息可能已经有所发展或是发生改变。

    手摸手 PlantUML 信息流教程

    PlantUML 图形种类多样,属性字段繁多。从零开画图让人挠脑袋,同时最后获得的作品也不一定尽善尽美。不能做到立刻原创,其实可以选择模仿上道,所以好的 PlantUML 作品就成了初学者的老师,凸显了获取 PlantUML 信息流的重要性。

    1 RWP 的遗憾

    每次思(想)念(抄) PlantUML,怀着崇高的敬意打开 Real World PlantUML ( RWP )这个网站,我都会想起 B 站满屏「非静止画面」弹幕的场景。然鹅很不幸,经过长期观察,最后发现这网页的 PlantUML 示例们真的是静止的,首页的右下角永远是一张我很喜欢的蓝绿背景色相间的时序图。尽管拥有庞大数量的 PlantUML 素材库,但是 99% 都长久淹没在了不知名的页码里,多少有些遗憾。

    RWP 项目本身的架构比较宏大,其中甚至还包括了对 PlantUML 源文件语法正确性检查的模块(如下图):

    之所以在我看来功能上有些缺陷,追其根源,是因为 scraping 模块是离线的。该项目是在本地完成对 Github PlantUML 文件的爬取和保存后,用于项目中,不会在网站运行过程中和 Github 有交互。这样的设定,让 RWP 本身的逻辑形成了闭环,不会因为 Github 的升级迭代对其运行造成影响,但是也就不会再有新的 PlantUML 文件加入,给人的感觉就永远是那老三样。趁着国庆,让我动起了另起炉灶,获取最新最时尚的 PlantUML 信息流的念头。

    2 OSP 的新风

    One Shot PlantUML(简称 OSP )由此应运而生,并采取了和 RWP 完全不同的策略。每次网站被打开,都会从 Github 实时获取最新提交并被索引的 1000 份 PlantUML 文件中随机获取一个,呈现到访问者面前(所以访问速度比较慢,各位看官老爷手下留情):

    只要不断有新的 PlantUML 文件被提交到 Github 并被索引收录,那么 OSP 就有源源不断的新鲜资源可以呈现到用户面前。仔细思考一下,甚至感觉可以吸引部分抖音和快手玩家,从刷短视频转到刷 UML 图,没有逻辑推荐、套路 AI,岂不爽哉。

    2.1 云上平台选择

    RWP 是 17 年左右上线的,想到其老哥每年都要操作 GCD 续费等事情我就头皮发麻,我是想极力避免这个情况的,所以转向了免费的 Heroku 。Heroku 提供每月 1000 小时的免费对外提供服务时长,如果只有一个应用,每天 24 小时对外提供服务都还绰绰有余。

    当然涉及到存储什么的就需要单独购买收费服务了,基于上面的(不花钱的)原则,OSP 就没有做任何的存储,每次访问都是直连 Github 获取数据并渲染展示。

    2.2 网页爬取问题

    Github 本身是提供对外公开访问的 API 的,但是经过鄙人 10 分钟的研究发现,可能出于数据量以及性能方面的考虑,其在 2013 年下线了根据文件后缀对文件层次结果进行搜索的功能,与此同时界面上却有相关功能,所以 OSP 项目转向使用模拟浏览器访问的形式发起搜索,获取数据。更加贴近我本心的同时,也带来了响应比较缓慢,偶尔会出现获取文件失败的问题,给予了这个疾速年代的普罗众生一个放缓脚步的机会,希望大家在使用过程中且行且珍惜。

    服务部署和网页数据获取中遇到的更多问题可以参考 OSO Readme.md 获取更多资讯。

    3 上手实例


    4 写在最后

    如果你喜欢这篇文章,可以看看我的半亩三分地

    2 条回复    2021-10-03 08:10:12 +08:00
    cweijan
        1
    cweijan  
       2021-10-03 02:34:36 +08:00   ❤️ 2
    网站挺酷的, 但你这文章真的又臭又长, 我看了半天没懂, 打开网站后才知道是什么功能.
    LangInteger
        2
    LangInteger  
    OP
       2021-10-03 08:10:12 +08:00 via Android
    @cweijan 所谓百闻不如一见~
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3644 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 00:48 · PVG 08:48 · LAX 17:48 · JFK 20:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.