Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
diagramize it
Search
Taras Kalapun
February 07, 2014
Programming
1
1.5k
diagramize it
Presentation about free & open source tools to produce diagrams from textural description
Taras Kalapun
February 07, 2014
Tweet
Share
Other Decks in Programming
See All in Programming
Quine, Polyglot, 良いコード
qnighy
4
640
RubyLSPのマルチバイト文字対応
notfounds
0
120
NSOutlineView何もわからん:( 前編 / I Don't Understand About NSOutlineView :( Pt. 1
usagimaru
0
340
Macとオーディオ再生 2024/11/02
yusukeito
0
370
Jakarta EE meets AI
ivargrimstad
0
190
Remix on Hono on Cloudflare Workers
yusukebe
1
290
3rd party scriptでもReactを使いたい! Preact + Reactのハイブリッド開発
righttouch
PRO
1
600
イベント駆動で成長して委員会
happymana
1
320
Click-free releases & the making of a CLI app
oheyadam
2
120
[Do iOS '24] Ship your app on a Friday...and enjoy your weekend!
polpielladev
0
110
A Journey of Contribution and Collaboration in Open Source
ivargrimstad
0
950
色々なIaCツールを実際に触って比較してみる
iriikeita
0
330
Featured
See All Featured
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
8
890
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
38
1.8k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
6.8k
Raft: Consensus for Rubyists
vanstee
136
6.6k
BBQ
matthewcrist
85
9.3k
Building Flexible Design Systems
yeseniaperezcruz
327
38k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
47
2.1k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
191
16k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
28
8.2k
Designing for Performance
lara
604
68k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
250
21k
Producing Creativity
orderedlist
PRO
341
39k
Transcript
DIAGRAMIZE IT TARAS KALAPUN
BLOCK DIAGRAMS
YUML.ME [Customer]<>-orders*>[Order]! [Order]++-0..*>[LineItem]! [Order]-[note:Aggregate root.]
BLOCKDIAG blockdiag {! A -> B -> C -> D;!
A -> E -> F -> G;! }
BLOCKDIAG blockdiag {! WeatherApi [shape = ellipse];! AdMob [shape =
ellipse];! Cloud [shape = cloud];! User [shape = actor];! ! WeatherApi -> Cloud! AdMob -> Cloud! Cloud -> App! App -> User! }
GRAPHVIZ
digraph G {! ranksep = 1! rankdir = TD! node
[! shape = "record"! height = 0.50! fontsize = 10! margin = 0.20,0.05! ]! A2 [! label = "Customer]"! style = "filled"! fillcolor = ""! ]! node [! shape = "record"! height = 0.50! GRAPHVIZ
USE CASE DIAGRAMS
YUML.ME [Customer]-(Make Cup of Tea)! (Make Cup of Tea)<(Add Milk)!
(Make Cup of Tea)>(Add Tea Bag)
GRAPHVIZ digraph G {! rankdir=LR;! ! subgraph clusterUser {label="User"; labelloc="b";
peripheries=0; user};! user [shapefile="stick.png", peripheries=0, style=invis];! login [label="Log In", shape=ellipse];! ! user->login [arrowhead=none];! }
GRAPHVIZ http://martin.elwin.com/blog/2008/05/uml-use-case-diagrams-graphviz/
ACTIVITY DIAGRAMS
YUML.ME (start)->|a|! |a|->(Make Coffee)->|b|! |a|->(Make Breakfast)->|b|! |b|-><c>[want more coffee]->(Make Coffee)!
<c>[satisfied]->(end)
GNU PIC .PS! ellipse "document";! arrow;! box "\fIgpic\fP(1)"! arrow;! box
width 1.2 "\fIgtbl\/\fP(1) or \fIgeqn\/\fP(1)" "(optional)" dashed;! arrow;! box "\fIgtroff\/\fP(1)";! arrow;! ellipse "PostScript"! .PE http://floppsie.comp.glam.ac.uk/Glamorgan/gaius/web/pic.html
GRAPHVIZ
digraph untitled {! rankdir=TD! size="4,4"! edge[fontsize="11" arrowhead=open]! start[shape=circle, label="", style=filled]!
end[shape=doublecircle, label="", style=filled]! action1[shape=box,style=rounded, label="action"]! action2[shape=box,style=rounded, label="action"]! action3[shape=box,style=rounded, label="action"]! if1[shape=diamond, label="decision"]! if2[shape=diamond, label="decision"]! ! start -> action1! action1 -> if1[headport=n]! if1 -> action2[label="condition" tailport=w]! if1 -> action3[taillabel="condition" labeldistance=2.5 tailport=e]! action2 -> if2[headport=w]
ACTDIAG actdiag {! write -> convert -> image! ! lane
user {! label = "User"! write [label = "Writing reST"];! image [label = "Get diagram IMAGE"];! }! lane actdiag {! convert [label = "Convert reST to Image"];! }! }
SEQUENCE DIAGRAMS
WEBSEQUENCEDIAGRAMS A->+B: text! B-->-A: text! A->B: text2
SEQDIAG seqdiag {! browser -> webserver [label = "GET /index.html"];!
browser <-- webserver;! browser -> webserver [label = "POST /blog/comment"];! webserver -> database [label = "INSERT comment"];! webserver <-- database;! browser <-- webserver;! }
PIC2PLOT brew install plotutils! https://github.com/dspinellis/UMLGraph/blob/master/sequence.pic! ! http://projetos.edugraf.ufsc.br/2011/1/convidado/jgzeni/ ProjetoFinal/JogoDeCartas/002/bin/src/UMLGraph-5.4/doc/uml- appa.html!
.PS! ! copy "sequence.pic";! ! boxwid = 1.1;! movewid =
0.5;! ! # Define the objects! object(C,"c:Client");! pobject(T);! object(P,"p:ODBCProxy");! ! # Message sequences! step();! active(C);! cmessage(C,T,":Transaction");! oconstraint("{Transient}");
OTHER COOL DIAGRAMS
NWDIAG
nwdiag {! network dmz {! address = "210.x.x.x/24"! ! //
set multiple addresses (using comma)! web01 [address = "210.x.x.1, 210.x.x.20"];! web02 [address = "210.x.x.2"];! }! network internal {! address = "172.x.x.x/24";! ! web01 [address = "172.x.x.1"];! web02 [address = "172.x.x.2"];! db01;! db02;! }! }
RACKDIAG rackdiag {! // define height of rack! 16U;! !
// define rack items! 1: UPS [2U];! 3: DB Server! 4: Web Server 1 // put 2 units to r 4: Web Server 2! 5: Web Server 3! 5: Web Server 4! 7: Load Balancer! 8: L3 Switch! }
ASCII DITAA +--------+ +-------+ +-------+! | | --+ ditaa +-->
| |! | Text | +-------+ |diagram|! |Document| |!magic!| | |! | {d}| | | | |! +---+----+ +-------+ +-------+! : ^! | Lots of work |! +-------------------------+ http://ditaa.sourceforge.net
GRAPHVIZ IC
digraph G {! graph [rankdir = LR];! ! node[shape=record];! Bar[label="{
\"Bar\"|{<p1>pin 1|<p2> 2|<p3> 3|<p4> 4| <p5> 5} }"];! Foo[label="{ {<data0>data0|<data1>data1|<data2>data2|<data3>data3| <data4>data4}|\"Foo\" |{<out0>out0|<out1>out1|<out2>out2|<GND>gnd| <ex0>ex0|<hi>hi|<lo>lo} }"];! ! Bew[label="{ {<clk>clk|<syn>syn|<mux0>mux0|<mux1>mux1| <signal>signal}|\"Bew\" |{<out0>out0|<out1>out1|<out2>out2} }"];! Bar:p1 -> Foo:data0;! Bar:p2 -> Foo:data1;! Bar:p3 -> Foo:data2;! Bar:p4 -> Foo:data3;! Bar:p5 -> Foo:data4;
THX! Q?