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
[Fin-JAWS 第38回 ~re:Invent 2024 金融re:Cap~]FaultInjectionServiceアップデート@pre:Invent2024
shintaro_fukatsu
0
400
Grafana Cloudとソラカメ
devoc
0
140
Domain-Driven Transformation
hschwentner
2
1.9k
CNCF Project の作者が考えている OSS の運営
utam0k
5
690
なぜイベント駆動が必要なのか - CQRS/ESで解く複雑系システムの課題 -
j5ik2o
7
2.5k
Software Architecture
hschwentner
6
2.1k
Kubernetes History Inspector(KHI)を触ってみた
bells17
0
200
GAEログのコスト削減
mot_techtalk
0
110
Immutable ActiveRecord
megane42
0
130
プログラミング言語学習のススメ / why-do-i-learn-programming-language
yashi8484
0
120
『品質』という言葉が嫌いな理由
korimu
0
160
社内フレームワークとその依存性解決 / in-house framework and its dependency management
vvakame
1
550
Featured
See All Featured
BBQ
matthewcrist
86
9.5k
The Language of Interfaces
destraynor
156
24k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
175
51k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.7k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
366
25k
Music & Morning Musume
bryan
46
6.3k
Building Better People: How to give real-time feedback that sticks.
wjessup
366
19k
GraphQLとの向き合い方2022年版
quramy
44
13k
Thoughts on Productivity
jonyablonski
69
4.5k
Building an army of robots
kneath
302
45k
Side Projects
sachag
452
42k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
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?