美文网首页编程笔记Amazing Arch
程序员省钱大法 - 写脚本画图

程序员省钱大法 - 写脚本画图

作者: 老瓦在霸都 | 来源:发表于2020-04-19 23:01 被阅读0次

在程序员的世界里,虽然别号码农,可是相当多的时间并不是在写代码,而是画图,谁叫人是视觉动物呢。

在日常工作会经常绘制或阅读 UML中的那些类图,时序图,状态图,以及常用的框图,流程图, 和思维导图等,可用的工具也很多,比如 Visio, Gliffy, StarUml, XMind 等等,各有善长,有功能有限的免费产品,也有功能强大的收费产品。当然,我用的比较趁手的基本上都是要收费的。

其实,在程序员的世界里,更喜欢写代码来生成图表,比较我最常用的

这两个站点很好用,但是只有基本功能是免费的,高级功能是要另外收费的。其实自己基于两个很有用的工具库 Graphviz 和 PlantUML,自己写一款画图工具,通过写脚本来生成各种图形是很容易的事。

这不,我用 Python Flask 框架简单包装了一下,搭建一个本地站点,可以很轻松的绘制各种程序员常用的图形。

先写一个简单的例子,用这个站点来绘制一个思维导图:

NIO -> Channel
NIO -> Buffer
NIO -> Selector
Buffer -> ByteBuffer
Buffer -> CharBuffer
Buffer -> MappedByteBuffer
Channel -> FileChannel
Channel -> DatagramChannel
Channel -> SocketChannel
Channel -> ServerSocketChannel

如上图,用 python flask 框架写一个 web 应用,再通过调用 Graphviz 支持的各种流程图,线框图和思维导图,通过调用 plantuml 绘制各种 UML 图形。

再举几例:

流程图 - 网站登录

  • 先写几行如下的脚本
start -> IsExceedMaxAttempts
IsExceedMaxAttempts -> Login[cond=no]
IsExceedMaxAttempts -> LockAccount[cond=yes]
LockAccount -> DisplayAlert
Login -> IsAuthorized
IsAuthorized -> GrantAccess[cond="yes"]
IsAuthorized -> IsExceedMaxAttempts[cond="no"]
GrantAccess -> end
DisplayAlert -> end

可以通过上面的 web 界面,也可以通过如下的命令行来生成图形:

fab draw:./examples/login-flowchart.txt,./examples/login-flowchart.png

时序图 - TCP 握手和挥手

  • 先写一个如下的脚本
title TCP handshake

autonumber "<b>[00]"

== open ==

client -> server: SYN
server --> client: ACK/SYN
server -> client: ACK
note right of client: connection established

== close ==

client -> server: FIN
server --> client: ACK
server -> client: FIN
client --> server: ACK
note left of server #FFAAAA: connection disconnected


即可生成如下的图形

类图 Netty 的 Event Loop 相关类

interface EventExecutorGroup
interface ScheduledExecutorService
interface Iterable
interface EventExecutor
interface EventLoop
abstract class SingleThreadEventLoop
class EpollEventLoop
abstract class Selector
class SelectedSelectionKeySetSelector 

EventExecutorGroup --|> ScheduledExecutorService
EventExecutorGroup --|> Iterable
EventExecutor --|> EventExecutorGroup
EventLoopGroup --|> EventExecutorGroup
EventLoop --|> EventLoopGroup
SingleThreadEventLoop --|>  EventLoop
EpollEventLoop --|> SingleThreadEventLoop
NioEventLoop --|> SingleThreadEventLoop
SelectedSelectionKeySetSelector --|> Selector
NioEventLoop o-- Selector

interface EventExecutorGroup {
    EventExecutor next();
    Iterator<EventExecutor> iterator();
    Future<?> submit(Runnable task);
   <V> ScheduledFuture<V> schedule(Callable<V> callable, long delay, TimeUnit unit);
    Future<?> shutdownGracefully(long quietPeriod, long timeout, TimeUnit unit);
    size();
}

interface EventLoopGroup  {
    next();
    ChannelFuture register(Channel channel);
    ChannelFuture register(ChannelPromise promise);
}

interface EventExecutor {
    EventExecutor next();
    EventExecutorGroup parent();
    boolean inEventLoop();
    boolean inEventLoop(Thread thread);
    <V> Promise<V> newPromise();
    <V> ProgressivePromise<V> newProgressivePromise();
    <V> Future<V> newSucceededFuture(V result);
    <V> Future<V> newFailedFuture(Throwable cause);
}

interface EventLoop {
    EventLoopGroup parent();
}

class NioEventLoop {
    private Selector selector;
    private Selector unwrappedSelector;
    private SelectedSelectionKeySet selectedKeys;
    private final SelectorProvider provider;
}

还可以举出许多例子,详细的搭建步骤和相关代码请参见 https://github.com/walterfan/webdiagram

相关文章

  • 程序员省钱大法 - 写脚本画图

    在程序员的世界里,虽然别号码农,可是相当多的时间并不是在写代码,而是画图,谁叫人是视觉动物呢。 在日常工作会经常绘...

  • 省钱大法

    完全可以规避的省钱法,医疗省钱。学习了健康管理课后。发现百分之90的疾病都是生活习惯引起的。养成良好的生活...

  • 省钱大法

    今年冬天,美滋滋地买了一双新靴子,家里的鞋柜早已挤爆了,又乱又拥挤,再也放不下新鞋子也找不到旧鞋子,只好找一天一鼓...

  • 省钱大法

    1.书籍极简。以前买书,一个月可以花到上千。后来改成图书馆借+iPad上用微信读书看电子书+多抓鱼买二手书。后来意...

  • Script-代码分析--GO,KEGG

    参数设置 参数 脚本主体 GO 画图 KEGG作图 脚本函数/方法 bitr(geneID, fromType, ...

  • 生活tips|不想买书,怎么看书?

    |本文摘要| 几个省钱大法:电子书,找作者,找参考,周边资源,善用打印,脑补大法。 |正文| 本文针对和我有一样苦...

  • 【MATLAB】使用MATLAB绘制心理学中的交互作用图

    分享一下画图的脚本,主要是留个备份,以后自己画图时方便查找~ 该脚本主要使用了MATLAB绘图的一些基础知识,比较...

  • 美国生活省钱大法

    学术和工作只是生活的一部分。在家当了四个多月“全职太太”,学着持家是我目前为止的“学生生涯”中很大的一个挑战。眼看...

  • 我的省钱大法

    吃土女孩的省钱大法 Hello 大家好,这里是吃土女孩的省钱宝地,作为一名刚毕业的小白,每月交完房祖加上吃吃喝喝真...

  • shell脚本编程 - 技巧篇

    本篇并不讲述shell脚本编程的方法和规则,而是讲述如何更优雅的使用shell脚本。 调试方法 echo调试大法,...

网友评论

    本文标题:程序员省钱大法 - 写脚本画图

    本文链接:https://www.haomeiwen.com/subject/jynmthtx.html