{"id":24608,"date":"2015-08-20T10:07:25","date_gmt":"2015-08-20T08:07:25","guid":{"rendered":"https:\/\/mamchenkov.net\/wordpress\/?p=24608"},"modified":"2015-08-20T10:07:25","modified_gmt":"2015-08-20T08:07:25","slug":"graphviz-dot-erds-network-diagrams","status":"publish","type":"post","link":"https:\/\/mamchenkov.net\/wordpress\/2015\/08\/20\/graphviz-dot-erds-network-diagrams\/","title":{"rendered":"Using Graphviz dot for ERDs, network diagrams and more"},"content":{"rendered":"<!-- google_ad_section_start -->\n<p>I&#8217;ve mentioned <a href=\"http:\/\/www.graphviz.org\/\">Graphviz<\/a> many a time on this blog. \u00a0It&#8217;s simple to use, yet very powerful. \u00a0The <a href=\"http:\/\/www.graphviz.org\/content\/dot-language\">dot language<\/a> is something that can be jotted down by hand in the simplest of all text editors, or generated programmatically.<\/p>\n<p>The official website features a <a href=\"http:\/\/www.graphviz.org\/Gallery.php\">gallery<\/a>, which demonstrates a wide range of graphs. \u00a0But I still wanted to blog a few examples from my recent use.<\/p>\n<p><!--more--><\/p>\n<p>First of all, for those of you who are not familiar with the simplicity of dot, here is the shortest possible example. \u00a0Create a simple.dot file with the following content:<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\ndigraph G { \r\n    Hello-&gt;World;\r\n}\r\n<\/pre>\n<p>Now you can generate a PNG image with the graph like so:<\/p>\n<pre class=\"brush: plain; light: true; title: ; notranslate\" title=\"\">\r\n$ dot -Tpng &lt; simple.dot &gt; simple.png\r\n<\/pre>\n<p>And here is how it looks:<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2015\/08\/simple.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"24609\" data-permalink=\"https:\/\/mamchenkov.net\/wordpress\/2015\/08\/20\/graphviz-dot-erds-network-diagrams\/simple\/\" data-orig-file=\"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2015\/08\/simple.png?fit=101%2C155&amp;ssl=1\" data-orig-size=\"101,155\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"Simple graph\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2015\/08\/simple.png?fit=101%2C155&amp;ssl=1\" class=\"aligncenter size-full wp-image-24609\" src=\"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2015\/08\/simple.png?resize=101%2C155&#038;ssl=1\" alt=\"Simple graph\" width=\"101\" height=\"155\" \/><\/a><\/p>\n<p>Beautiful, isn&#8217;t it?<\/p>\n<p>Well, now that you have an idea, let me show you a couple of things that I&#8217;ve been doing with it recently.<\/p>\n<p>First, the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Entity%E2%80%93relationship_model\">Entity Relationship Diagrams<\/a> (ERDs). \u00a0There are, of course, specialized tools for drawing those, but I find it handy to sketch something quick, to discuss an idea with the team. \u00a0Both the dot file and an image can be part of the project source, managed with version control software, build scripts, etc.<\/p>\n<p>Here is a simple example. \u00a0First, the code:<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\n\/\/ Generate and preview PNG image with:\r\n\/\/ dot -Tpng erd.dot &gt; erd.png &amp;&amp; eom erd.png\r\n\/\/ \r\n\/\/ You'll need Graphviz installed\r\ndigraph G { \r\n    \/\/  \r\n    \/\/ Defaults\r\n    \/\/  \r\n\r\n    \/\/ Box for entities\r\n    node &#x5B;shape=none, margin=0]\r\n\r\n    \/\/ One-to-many relation (from one, to many)\r\n    edge &#x5B;arrowhead=crow, arrowtail=none, dir=both]\r\n\r\n    \/\/  \r\n    \/\/ Entities\r\n    \/\/  \r\n    Article &#x5B;label=&lt;\r\n        &lt;table border=&quot;0&quot; cellborder=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;4&quot;&gt;\r\n            &lt;tr&gt;&lt;td bgcolor=&quot;lightblue&quot;&gt;Article&lt;\/td&gt;&lt;\/tr&gt;\r\n            &lt;tr&gt;&lt;td align=&quot;left&quot;&gt;id: int(11)&lt;\/td&gt;&lt;\/tr&gt;\r\n            &lt;tr&gt;&lt;td align=&quot;left&quot;&gt;author: int(11)&lt;\/td&gt;&lt;\/tr&gt;\r\n            &lt;tr&gt;&lt;td align=&quot;left&quot;&gt;title: varchar(255)&lt;\/td&gt;&lt;\/tr&gt;\r\n            &lt;tr&gt;&lt;td align=&quot;left&quot;&gt;content: longtext&lt;\/td&gt;&lt;\/tr&gt;\r\n            &lt;tr&gt;&lt;td align=&quot;left&quot;&gt;created: datetime&lt;\/td&gt;&lt;\/tr&gt;\r\n            &lt;tr&gt;&lt;td align=&quot;left&quot;&gt;modified: datetime&lt;\/td&gt;&lt;\/tr&gt;\r\n        &lt;\/table&gt;\r\n    &gt;]\r\n\r\n    Comment &#x5B;label=&lt;\r\n        &lt;table border=&quot;0&quot; cellborder=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;4&quot;&gt;\r\n            &lt;tr&gt;&lt;td bgcolor=&quot;lightblue&quot;&gt;Comment&lt;\/td&gt;&lt;\/tr&gt;\r\n            &lt;tr&gt;&lt;td align=&quot;left&quot;&gt;id: int(11)&lt;\/td&gt;&lt;\/tr&gt;\r\n            &lt;tr&gt;&lt;td align=&quot;left&quot;&gt;author: int(11)&lt;\/td&gt;&lt;\/tr&gt;\r\n            &lt;tr&gt;&lt;td align=&quot;left&quot;&gt;content: longtext&lt;\/td&gt;&lt;\/tr&gt;\r\n            &lt;tr&gt;&lt;td align=&quot;left&quot;&gt;created: datetime&lt;\/td&gt;&lt;\/tr&gt;\r\n            &lt;tr&gt;&lt;td align=&quot;left&quot;&gt;modified: datetime&lt;\/td&gt;&lt;\/tr&gt;\r\n        &lt;\/table&gt;\r\n    &gt;]  \r\n\r\n    \/\/  \r\n    \/\/ Relationships\r\n    \/\/  \r\n    Article-&gt;Comment;\r\n}\r\n<\/pre>\n<p>And now how it comes out in the PNG format:<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2015\/08\/erd.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"24610\" data-permalink=\"https:\/\/mamchenkov.net\/wordpress\/2015\/08\/20\/graphviz-dot-erds-network-diagrams\/erd\/\" data-orig-file=\"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2015\/08\/erd.png?fit=164%2C492&amp;ssl=1\" data-orig-size=\"164,492\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"ERD\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2015\/08\/erd.png?fit=164%2C492&amp;ssl=1\" class=\"aligncenter size-full wp-image-24610\" src=\"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2015\/08\/erd.png?resize=164%2C492&#038;ssl=1\" alt=\"ERD\" width=\"164\" height=\"492\" \/><\/a><\/p>\n<p>Secondly, infrastructure documentation. Very similar to the above, but now with clusters, that allow grouping of things. Here&#8217;s the example.com network setup:<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\ndigraph G { \r\n    label = &quot;Example.com Network&quot;\r\n    labelloc = top;\r\n\r\n    node &#x5B;shape=record];\r\n    edge &#x5B;dir=both];\r\n\r\n    subgraph cluster_0 {\r\n        label = &quot;gw.example.com&quot;;\r\n\r\n        eth0 &#x5B;label=&lt;\r\n            &lt;table border=&quot;0&quot; cellborder=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;4&quot;&gt;\r\n                &lt;tr&gt;&lt;td bgcolor=&quot;lightblue&quot;&gt;&lt;b&gt;eth0&lt;\/b&gt;&lt;\/td&gt;&lt;\/tr&gt;\r\n                &lt;tr&gt;&lt;td align=&quot;left&quot;&gt;IP: 172.16.0.1&lt;\/td&gt;&lt;\/tr&gt;\r\n                &lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Mask: 255.255.255.0&lt;\/td&gt;&lt;\/tr&gt;\r\n            &lt;\/table&gt;\r\n        &gt;];\r\n        eth1 &#x5B;label=&lt;\r\n            &lt;table border=&quot;0&quot; cellborder=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;4&quot;&gt;\r\n                &lt;tr&gt;&lt;td bgcolor=&quot;lightblue&quot;&gt;&lt;b&gt;eth1&lt;\/b&gt;&lt;\/td&gt;&lt;\/tr&gt;\r\n                &lt;tr&gt;&lt;td align=&quot;left&quot;&gt;IP: 10.0.0.1&lt;\/td&gt;&lt;\/tr&gt;\r\n                &lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Mask: 255.255.255.0&lt;\/td&gt;&lt;\/tr&gt;\r\n            &lt;\/table&gt;\r\n        &gt;];\r\n        eth2 &#x5B;label=&lt;\r\n            &lt;table border=&quot;0&quot; cellborder=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;4&quot;&gt;\r\n                &lt;tr&gt;&lt;td bgcolor=&quot;lightblue&quot;&gt;&lt;b&gt;eth2&lt;\/b&gt;&lt;\/td&gt;&lt;\/tr&gt;\r\n                &lt;tr&gt;&lt;td align=&quot;left&quot;&gt;IP: 192.168.0.1&lt;\/td&gt;&lt;\/tr&gt;\r\n                &lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Mask: 255.255.255.0&lt;\/td&gt;&lt;\/tr&gt;\r\n            &lt;\/table&gt;\r\n        &gt;];\r\n    }   \r\n\r\n    subgraph cluster_1 {\r\n        label = Internet;\r\n        labelloc = bottom;\r\n        InternetGW &#x5B;label=&lt;\r\n            &lt;table border=&quot;0&quot; cellborder=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;4&quot;&gt;\r\n                &lt;tr&gt;&lt;td bgcolor=&quot;lightblue&quot;&gt;&lt;b&gt;ISP&lt;\/b&gt;&lt;\/td&gt;&lt;\/tr&gt;\r\n                &lt;tr&gt;&lt;td align=&quot;left&quot;&gt;IP: 10.0.0.254&lt;\/td&gt;&lt;\/tr&gt;\r\n            &lt;\/table&gt;\r\n        &gt;];\r\n\r\n    }\r\n\r\n    subgraph cluster_2 {\r\n        label = Telephony;\r\n        labelloc = bottom;\r\n        TelephonyGW &#x5B;label=&lt;\r\n            &lt;table border=&quot;0&quot; cellborder=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;4&quot;&gt;\r\n                &lt;tr&gt;&lt;td bgcolor=&quot;lightblue&quot;&gt;&lt;b&gt;Telecom&lt;\/b&gt;&lt;\/td&gt;&lt;\/tr&gt;\r\n                &lt;tr&gt;&lt;td align=&quot;left&quot;&gt;IP: 192.168.0.254&lt;\/td&gt;&lt;\/tr&gt;\r\n            &lt;\/table&gt;\r\n        &gt;];\r\n    }\r\n\r\n    subgraph cluster_3 {\r\n        label = LAN;\r\n        labelloc = bottom;\r\n\r\n        sw1 &#x5B;label=&lt;\r\n            &lt;table border=&quot;0&quot; cellborder=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;4&quot;&gt;\r\n                &lt;tr&gt;&lt;td bgcolor=&quot;lightblue&quot;&gt;&lt;b&gt;switch1.example.com&lt;\/b&gt;&lt;\/td&gt;&lt;\/tr&gt;\r\n                &lt;tr&gt;&lt;td align=&quot;left&quot;&gt;IP: 172.16.0.2&lt;\/td&gt;&lt;\/tr&gt;\r\n            &lt;\/table&gt;\r\n        &gt;];\r\n\r\n        sw2 &#x5B;label=&lt;\r\n            &lt;table border=&quot;0&quot; cellborder=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;4&quot;&gt;\r\n                &lt;tr&gt;&lt;td bgcolor=&quot;lightblue&quot;&gt;&lt;b&gt;switch2.example.com&lt;\/b&gt;&lt;\/td&gt;&lt;\/tr&gt;\r\n                &lt;tr&gt;&lt;td align=&quot;left&quot;&gt;IP: 172.16.0.3&lt;\/td&gt;&lt;\/tr&gt;\r\n            &lt;\/table&gt;\r\n        &gt;];\r\n\r\n        ap1 &#x5B;label=&lt;\r\n            &lt;table border=&quot;0&quot; cellborder=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;4&quot;&gt;\r\n                &lt;tr&gt;&lt;td bgcolor=&quot;lightblue&quot;&gt;&lt;b&gt;wifi1.example.com&lt;\/b&gt;&lt;\/td&gt;&lt;\/tr&gt;\r\n                &lt;tr&gt;&lt;td align=&quot;left&quot;&gt;IP: 172.16.0.4&lt;\/td&gt;&lt;\/tr&gt;\r\n            &lt;\/table&gt;\r\n        &gt;];\r\n\r\n        ap2 &#x5B;label=&lt;\r\n            &lt;table border=&quot;0&quot; cellborder=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;4&quot;&gt;\r\n                &lt;tr&gt;&lt;td bgcolor=&quot;lightblue&quot;&gt;&lt;b&gt;wifi2.example.com&lt;\/b&gt;&lt;\/td&gt;&lt;\/tr&gt;\r\n                &lt;tr&gt;&lt;td align=&quot;left&quot;&gt;IP: 172.16.0.5&lt;\/td&gt;&lt;\/tr&gt;\r\n            &lt;\/table&gt;\r\n        &gt;];\r\n\r\n        sw1 -&gt; sw2;\r\n        sw2 -&gt; ap1;\r\n        sw2 -&gt; ap2;\r\n    }\r\n\r\n\r\n    eth0 -&gt; sw1;\r\n    eth1 -&gt; InternetGW;\r\n    eth2 -&gt; TelephonyGW;\r\n\r\n}\r\n<\/pre>\n<p>And here is the result:<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2015\/08\/network.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"24611\" data-permalink=\"https:\/\/mamchenkov.net\/wordpress\/2015\/08\/20\/graphviz-dot-erds-network-diagrams\/network\/\" data-orig-file=\"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2015\/08\/network.png?fit=860%2C641&amp;ssl=1\" data-orig-size=\"860,641\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"network\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2015\/08\/network.png?fit=660%2C492&amp;ssl=1\" class=\"aligncenter size-medium wp-image-24611\" src=\"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2015\/08\/network-500x373.png?resize=500%2C373&#038;ssl=1\" alt=\"network\" width=\"500\" height=\"373\" srcset=\"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2015\/08\/network.png?resize=500%2C373&amp;ssl=1 500w, https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2015\/08\/network.png?w=860&amp;ssl=1 860w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/><\/a><\/p>\n<p>And as I said, you can automatically generate the dot files either completely or partially. In fact, I&#8217;ve done it a while back, when I was trying to make sense of a large CakePHP project. Have a look at <a href=\"https:\/\/mamchenkov.net\/wordpress\/2010\/03\/20\/cakephp-graphviz-making-sense-of-a-numerous-models\/\">this post<\/a> (rather outdated now).<\/p>\n<!-- google_ad_section_end -->\n","protected":false},"excerpt":{"rendered":"<!-- google_ad_section_start -->\n<p>I&#8217;ve mentioned Graphviz many a time on this blog. \u00a0It&#8217;s simple to use, yet very powerful. \u00a0The dot language is something that can be jotted down by hand in the simplest of all text editors, or generated programmatically. The official website features a gallery, which demonstrates a wide range of graphs. \u00a0But I still wanted &hellip; <a href=\"https:\/\/mamchenkov.net\/wordpress\/2015\/08\/20\/graphviz-dot-erds-network-diagrams\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Using Graphviz dot for ERDs, network diagrams and more<\/span><\/a><\/p>\n<!-- google_ad_section_end -->\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"Using Graphviz dot for ERDs, network diagrams and more #webdev #sysadmin #documentation #tools #graphs","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false,"_links_to":"","_links_to_target":""},"categories":[1,18,133,62,1334],"tags":[78,1312,2276,1330],"keyring_services":[],"class_list":["post-24608","post","type-post","status-publish","format-standard","hentry","category-general","category-programming","category-sysadmin","category-technology","category-web-work","tag-documentation","tag-graphs","tag-graphviz","tag-web-development"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.8 - aioseo.com -->\n\t<meta name=\"description\" content=\"I&#039;ve mentioned Graphviz many a time on this blog. It&#039;s simple to use, yet very powerful. The dot language is something that can be jotted down by hand in the simplest of all text editors, or generated programmatically. The official website features a gallery, which demonstrates a wide range of graphs. But I still wanted\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Leonid Mamchenkov\"\/>\n\t<meta name=\"google-site-verification\" content=\"VHvdD0_usx1_4DzKy_QCVcICVgX2EgA2ybELT-wl7kQ\" \/>\n\t<link rel=\"canonical\" href=\"https:\/\/mamchenkov.net\/wordpress\/2015\/08\/20\/graphviz-dot-erds-network-diagrams\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.8\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Leonid Mamchenkov - Life, universe, and everything else\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Using Graphviz dot for ERDs, network diagrams and more - Leonid Mamchenkov\" \/>\n\t\t<meta property=\"og:description\" content=\"I&#039;ve mentioned Graphviz many a time on this blog. It&#039;s simple to use, yet very powerful. The dot language is something that can be jotted down by hand in the simplest of all text editors, or generated programmatically. The official website features a gallery, which demonstrates a wide range of graphs. But I still wanted\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/mamchenkov.net\/wordpress\/2015\/08\/20\/graphviz-dot-erds-network-diagrams\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2026\/03\/leonid-sailing-beer.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2026\/03\/leonid-sailing-beer.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t\t<meta property=\"og:image:height\" content=\"1024\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2015-08-20T08:07:25+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2015-08-20T08:07:25+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/MamchenkovBlog\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:site\" content=\"@mamchenkov\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Using Graphviz dot for ERDs, network diagrams and more - Leonid Mamchenkov\" \/>\n\t\t<meta name=\"twitter:description\" content=\"I&#039;ve mentioned Graphviz many a time on this blog. It&#039;s simple to use, yet very powerful. The dot language is something that can be jotted down by hand in the simplest of all text editors, or generated programmatically. The official website features a gallery, which demonstrates a wide range of graphs. But I still wanted\" \/>\n\t\t<meta name=\"twitter:creator\" content=\"@mamchenkov\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2026\/03\/leonid-sailing-beer.jpg\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BlogPosting\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2015\\\/08\\\/20\\\/graphviz-dot-erds-network-diagrams\\\/#blogposting\",\"name\":\"Using Graphviz dot for ERDs, network diagrams and more - Leonid Mamchenkov\",\"headline\":\"Using Graphviz dot for ERDs, network diagrams and more\",\"author\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/author\\\/leonid\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/#person\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/mamchenkov.net\\\/wordpress\\\/wp-content\\\/uploads\\\/2015\\\/08\\\/simple.png?fit=101%2C155&ssl=1\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2015\\\/08\\\/20\\\/graphviz-dot-erds-network-diagrams\\\/#articleImage\",\"width\":101,\"height\":155},\"datePublished\":\"2015-08-20T10:07:25+02:00\",\"dateModified\":\"2015-08-20T10:07:25+02:00\",\"inLanguage\":\"en-US\",\"commentCount\":3,\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2015\\\/08\\\/20\\\/graphviz-dot-erds-network-diagrams\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2015\\\/08\\\/20\\\/graphviz-dot-erds-network-diagrams\\\/#webpage\"},\"articleSection\":\"All, Programming, Sysadmin, Technology, Web work, documentation, graphs, Graphviz, web development\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2015\\\/08\\\/20\\\/graphviz-dot-erds-network-diagrams\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/#listItem\",\"name\":\"Technology\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/#listItem\",\"position\":2,\"name\":\"Technology\",\"item\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/programming\\\/#listItem\",\"name\":\"Programming\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/programming\\\/#listItem\",\"position\":3,\"name\":\"Programming\",\"item\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/programming\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2015\\\/08\\\/20\\\/graphviz-dot-erds-network-diagrams\\\/#listItem\",\"name\":\"Using Graphviz dot for ERDs, network diagrams and more\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/#listItem\",\"name\":\"Technology\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2015\\\/08\\\/20\\\/graphviz-dot-erds-network-diagrams\\\/#listItem\",\"position\":4,\"name\":\"Using Graphviz dot for ERDs, network diagrams and more\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/programming\\\/#listItem\",\"name\":\"Programming\"}}]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/#person\",\"name\":\"Leonid Mamchenkov\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2015\\\/08\\\/20\\\/graphviz-dot-erds-network-diagrams\\\/#personImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3cf6df002a284d78fb6e9d8222ca4d102e0832035ed6bc8447008bd234e131a4?s=96&d=identicon&r=g\",\"width\":96,\"height\":96,\"caption\":\"Leonid Mamchenkov\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/author\\\/leonid\\\/#author\",\"url\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/author\\\/leonid\\\/\",\"name\":\"Leonid Mamchenkov\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2015\\\/08\\\/20\\\/graphviz-dot-erds-network-diagrams\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3cf6df002a284d78fb6e9d8222ca4d102e0832035ed6bc8447008bd234e131a4?s=96&d=identicon&r=g\",\"width\":96,\"height\":96,\"caption\":\"Leonid Mamchenkov\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2015\\\/08\\\/20\\\/graphviz-dot-erds-network-diagrams\\\/#webpage\",\"url\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2015\\\/08\\\/20\\\/graphviz-dot-erds-network-diagrams\\\/\",\"name\":\"Using Graphviz dot for ERDs, network diagrams and more - Leonid Mamchenkov\",\"description\":\"I've mentioned Graphviz many a time on this blog. It's simple to use, yet very powerful. The dot language is something that can be jotted down by hand in the simplest of all text editors, or generated programmatically. The official website features a gallery, which demonstrates a wide range of graphs. But I still wanted\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2015\\\/08\\\/20\\\/graphviz-dot-erds-network-diagrams\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/author\\\/leonid\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/author\\\/leonid\\\/#author\"},\"datePublished\":\"2015-08-20T10:07:25+02:00\",\"dateModified\":\"2015-08-20T10:07:25+02:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/#website\",\"url\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/\",\"name\":\"Blog of Leonid Mamchenkov\",\"description\":\"Life, universe, and everything else\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/#person\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Using Graphviz dot for ERDs, network diagrams and more - Leonid Mamchenkov","description":"I've mentioned Graphviz many a time on this blog. It's simple to use, yet very powerful. The dot language is something that can be jotted down by hand in the simplest of all text editors, or generated programmatically. The official website features a gallery, which demonstrates a wide range of graphs. But I still wanted","canonical_url":"https:\/\/mamchenkov.net\/wordpress\/2015\/08\/20\/graphviz-dot-erds-network-diagrams\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"google-site-verification":"VHvdD0_usx1_4DzKy_QCVcICVgX2EgA2ybELT-wl7kQ","miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BlogPosting","@id":"https:\/\/mamchenkov.net\/wordpress\/2015\/08\/20\/graphviz-dot-erds-network-diagrams\/#blogposting","name":"Using Graphviz dot for ERDs, network diagrams and more - Leonid Mamchenkov","headline":"Using Graphviz dot for ERDs, network diagrams and more","author":{"@id":"https:\/\/mamchenkov.net\/wordpress\/author\/leonid\/#author"},"publisher":{"@id":"https:\/\/mamchenkov.net\/wordpress\/#person"},"image":{"@type":"ImageObject","url":"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2015\/08\/simple.png?fit=101%2C155&ssl=1","@id":"https:\/\/mamchenkov.net\/wordpress\/2015\/08\/20\/graphviz-dot-erds-network-diagrams\/#articleImage","width":101,"height":155},"datePublished":"2015-08-20T10:07:25+02:00","dateModified":"2015-08-20T10:07:25+02:00","inLanguage":"en-US","commentCount":3,"mainEntityOfPage":{"@id":"https:\/\/mamchenkov.net\/wordpress\/2015\/08\/20\/graphviz-dot-erds-network-diagrams\/#webpage"},"isPartOf":{"@id":"https:\/\/mamchenkov.net\/wordpress\/2015\/08\/20\/graphviz-dot-erds-network-diagrams\/#webpage"},"articleSection":"All, Programming, Sysadmin, Technology, Web work, documentation, graphs, Graphviz, web development"},{"@type":"BreadcrumbList","@id":"https:\/\/mamchenkov.net\/wordpress\/2015\/08\/20\/graphviz-dot-erds-network-diagrams\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress#listItem","position":1,"name":"Home","item":"https:\/\/mamchenkov.net\/wordpress","nextItem":{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/#listItem","name":"Technology"}},{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/#listItem","position":2,"name":"Technology","item":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/","nextItem":{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/programming\/#listItem","name":"Programming"},"previousItem":{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/programming\/#listItem","position":3,"name":"Programming","item":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/programming\/","nextItem":{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/2015\/08\/20\/graphviz-dot-erds-network-diagrams\/#listItem","name":"Using Graphviz dot for ERDs, network diagrams and more"},"previousItem":{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/#listItem","name":"Technology"}},{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/2015\/08\/20\/graphviz-dot-erds-network-diagrams\/#listItem","position":4,"name":"Using Graphviz dot for ERDs, network diagrams and more","previousItem":{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/programming\/#listItem","name":"Programming"}}]},{"@type":"Person","@id":"https:\/\/mamchenkov.net\/wordpress\/#person","name":"Leonid Mamchenkov","image":{"@type":"ImageObject","@id":"https:\/\/mamchenkov.net\/wordpress\/2015\/08\/20\/graphviz-dot-erds-network-diagrams\/#personImage","url":"https:\/\/secure.gravatar.com\/avatar\/3cf6df002a284d78fb6e9d8222ca4d102e0832035ed6bc8447008bd234e131a4?s=96&d=identicon&r=g","width":96,"height":96,"caption":"Leonid Mamchenkov"}},{"@type":"Person","@id":"https:\/\/mamchenkov.net\/wordpress\/author\/leonid\/#author","url":"https:\/\/mamchenkov.net\/wordpress\/author\/leonid\/","name":"Leonid Mamchenkov","image":{"@type":"ImageObject","@id":"https:\/\/mamchenkov.net\/wordpress\/2015\/08\/20\/graphviz-dot-erds-network-diagrams\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/3cf6df002a284d78fb6e9d8222ca4d102e0832035ed6bc8447008bd234e131a4?s=96&d=identicon&r=g","width":96,"height":96,"caption":"Leonid Mamchenkov"}},{"@type":"WebPage","@id":"https:\/\/mamchenkov.net\/wordpress\/2015\/08\/20\/graphviz-dot-erds-network-diagrams\/#webpage","url":"https:\/\/mamchenkov.net\/wordpress\/2015\/08\/20\/graphviz-dot-erds-network-diagrams\/","name":"Using Graphviz dot for ERDs, network diagrams and more - Leonid Mamchenkov","description":"I've mentioned Graphviz many a time on this blog. It's simple to use, yet very powerful. The dot language is something that can be jotted down by hand in the simplest of all text editors, or generated programmatically. The official website features a gallery, which demonstrates a wide range of graphs. But I still wanted","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/mamchenkov.net\/wordpress\/#website"},"breadcrumb":{"@id":"https:\/\/mamchenkov.net\/wordpress\/2015\/08\/20\/graphviz-dot-erds-network-diagrams\/#breadcrumblist"},"author":{"@id":"https:\/\/mamchenkov.net\/wordpress\/author\/leonid\/#author"},"creator":{"@id":"https:\/\/mamchenkov.net\/wordpress\/author\/leonid\/#author"},"datePublished":"2015-08-20T10:07:25+02:00","dateModified":"2015-08-20T10:07:25+02:00"},{"@type":"WebSite","@id":"https:\/\/mamchenkov.net\/wordpress\/#website","url":"https:\/\/mamchenkov.net\/wordpress\/","name":"Blog of Leonid Mamchenkov","description":"Life, universe, and everything else","inLanguage":"en-US","publisher":{"@id":"https:\/\/mamchenkov.net\/wordpress\/#person"}}]},"og:locale":"en_US","og:site_name":"Leonid Mamchenkov - Life, universe, and everything else","og:type":"article","og:title":"Using Graphviz dot for ERDs, network diagrams and more - Leonid Mamchenkov","og:description":"I've mentioned Graphviz many a time on this blog. It's simple to use, yet very powerful. The dot language is something that can be jotted down by hand in the simplest of all text editors, or generated programmatically. The official website features a gallery, which demonstrates a wide range of graphs. But I still wanted","og:url":"https:\/\/mamchenkov.net\/wordpress\/2015\/08\/20\/graphviz-dot-erds-network-diagrams\/","og:image":"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2026\/03\/leonid-sailing-beer.jpg","og:image:secure_url":"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2026\/03\/leonid-sailing-beer.jpg","og:image:width":1024,"og:image:height":1024,"article:published_time":"2015-08-20T08:07:25+00:00","article:modified_time":"2015-08-20T08:07:25+00:00","article:publisher":"https:\/\/www.facebook.com\/MamchenkovBlog","twitter:card":"summary_large_image","twitter:site":"@mamchenkov","twitter:title":"Using Graphviz dot for ERDs, network diagrams and more - Leonid Mamchenkov","twitter:description":"I've mentioned Graphviz many a time on this blog. It's simple to use, yet very powerful. The dot language is something that can be jotted down by hand in the simplest of all text editors, or generated programmatically. The official website features a gallery, which demonstrates a wide range of graphs. But I still wanted","twitter:creator":"@mamchenkov","twitter:image":"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2026\/03\/leonid-sailing-beer.jpg"},"aioseo_meta_data":{"post_id":"24608","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"BlogPosting","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":null,"created":"2023-07-19 10:08:28","updated":"2026-01-15 11:36:44","seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/mamchenkov.net\/wordpress\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/\" title=\"Technology\">Technology<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/programming\/\" title=\"Programming\">Programming<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tUsing Graphviz dot for ERDs, network diagrams and more\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/mamchenkov.net\/wordpress"},{"label":"Technology","link":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/"},{"label":"Programming","link":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/programming\/"},{"label":"Using Graphviz dot for ERDs, network diagrams and more","link":"https:\/\/mamchenkov.net\/wordpress\/2015\/08\/20\/graphviz-dot-erds-network-diagrams\/"}],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack-related-posts":[{"id":14838,"url":"https:\/\/mamchenkov.net\/wordpress\/2011\/05\/08\/cakephp-graphviz-models\/","url_meta":{"origin":24608,"position":0},"title":"CakePHP GraphViz Models","author":"Leonid Mamchenkov","date":"May 8, 2011","format":false,"excerpt":"I have completely and totally rewritten my old script that generates a graph of CakePHP models and their relationships. \u00a0Instead of pasting the code in here, I pushed all of its development to GitHub where it now enjoys a new repository. \u00a0Please have a look, try it out, and let\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":29225,"url":"https:\/\/mamchenkov.net\/wordpress\/2019\/01\/15\/graphviz-dot-format-png-not-recognized\/","url_meta":{"origin":24608,"position":1},"title":"GraphViz dot: Format: &#8220;png&#8221; not recognized.","author":"Leonid Mamchenkov","date":"January 15, 2019","format":false,"excerpt":"As I've mentioned many times, I'm a huge fan of GraphViz software suite in general, and the dot tool in particular. It's super handy for generating graphs and diagrams out of plain text files. Today though I came across a problem that I haven't seen before. While trying to generate\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":23081,"url":"https:\/\/mamchenkov.net\/wordpress\/2014\/12\/03\/mermaid-markdown-like-generation-of-flowcharts-and-diagrams\/","url_meta":{"origin":24608,"position":2},"title":"mermaid &#8211; markdown-like generation of flowcharts and diagrams","author":"Leonid Mamchenkov","date":"December 3, 2014","format":"link","excerpt":"mermaid - markdown-like generation of flowcharts and diagrams. \u00a0This is like a web-oriented, d3-based implementation of the dot tool from the GraphViz package. \u00a0","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"graph","src":"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2014\/12\/graph-500x123.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":27276,"url":"https:\/\/mamchenkov.net\/wordpress\/2017\/01\/30\/generate-php-class-inheritance-diagrams-with-graphviz\/","url_meta":{"origin":24608,"position":3},"title":"Generate PHP Class Inheritance Diagrams with Graphviz","author":"Leonid Mamchenkov","date":"January 30, 2017","format":false,"excerpt":"It's not a secret that I'm a big fan of GraphViz\u00a0- powerful, yet easy to use graph visualization software. \u00a0And I've blog about it quite a few times. \u00a0Well, guess what - today is a perfect day for one more post. Over the weekend I was working on refactoring some\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2017\/01\/class-hierarchy-500x269.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":28342,"url":"https:\/\/mamchenkov.net\/wordpress\/2018\/01\/22\/webgraphviz-graphviz-in-a-browser\/","url_meta":{"origin":24608,"position":4},"title":"WebGraphviz &#8211; Graphviz in a browser","author":"Leonid Mamchenkov","date":"January 22, 2018","format":false,"excerpt":"WebGraphviz is yet another link for any Graphviz fan!\u00a0 Pretty cool. By the way, if it's been a while since you checked Graphviz website, have a look - they've updated it recently and it doesn't cause unexpected 90's nostalgia outbreaks anymore.","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2018\/01\/webgraphviz.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":42589,"url":"https:\/\/mamchenkov.net\/wordpress\/2019\/05\/05\/ansible-aws-graphviz-aws-securitygroup-grapher\/","url_meta":{"origin":24608,"position":5},"title":"Ansible + AWS + GraphViz = aws-securitygroup-grapher","author":"Leonid Mamchenkov","date":"May 5, 2019","format":false,"excerpt":"aws-securitygroup-grapher is a handy tool that can generate a variety of graphs visualizing Amazon Security Groups. It is implemented as an Ansible role and uses GraphViz to produce the results. This is particularly useful when you need to get familiar with a complex VPC setup by someone else, or when\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2019\/05\/Instances.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2019\/05\/Instances.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2019\/05\/Instances.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2019\/05\/Instances.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2019\/05\/Instances.png?resize=1050%2C600&ssl=1 3x"},"classes":[]}],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/posts\/24608","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/comments?post=24608"}],"version-history":[{"count":0,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/posts\/24608\/revisions"}],"wp:attachment":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/media?parent=24608"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/categories?post=24608"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/tags?post=24608"},{"taxonomy":"keyring_services","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/keyring_services?post=24608"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}