{"id":1154,"date":"2014-10-27T08:00:44","date_gmt":"2014-10-27T08:00:44","guid":{"rendered":"http:\/\/www.diogonunes.com\/blog\/?p=1154"},"modified":"2023-07-16T12:30:41","modified_gmt":"2023-07-16T11:30:41","slug":"jcolor-java-color-messages-terminal","status":"publish","type":"post","link":"https:\/\/www.diogonunes.com\/blog\/jcolor-java-color-messages-terminal\/","title":{"rendered":"Colored messages on a terminal using Java"},"content":{"rendered":"<p><a href=\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/10\/JColor-logo.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/10\/JColor-logo.png?resize=400%2C400&#038;ssl=1\" alt=\"JColor-logo\" width=\"400\" height=\"400\" class=\"aligncenter size-medium wp-image-3916\" srcset=\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/10\/JColor-logo.png?resize=400%2C400&amp;ssl=1 400w, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/10\/JColor-logo.png?resize=150%2C150&amp;ssl=1 150w, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/10\/JColor-logo.png?resize=50%2C50&amp;ssl=1 50w, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/10\/JColor-logo.png?w=512&amp;ssl=1 512w\" sizes=\"auto, (max-width: 400px) 100vw, 400px\" \/><\/a><\/p>\n<h3>JColor is a Java library that offers an easy way to print colored messages on a terminal<\/h3>\n<p><!--more--><\/p>\n<p>It all started when I needed to create an application with multiple levels of debug. The solution was an object (a Printer) with a maximum level of debug. Every debug message delivered to it had a level. If the Printer had an equal or greater level, the debug message would be printed. This allows you to place debug messages with different levels along the code. Then, when initiating the app, you choose a maximum level of debug and only the debug messages with an equal or lower level will be displayed. Even better you can change that maximum level dynamically.<\/p>\n<p>To enhance the usefulness of this library I decided to add colored messages, which turned out to be pretty tricky. By abstracting the Ansi Escape Codes, printing a colored message became as easy as <code>print(\"message\", Attribute.BOLD, FColor.BLUE, BColor.YELLOW);<\/code><\/p>\n<p><a href=\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/10\/example-mac-iterm-fancy.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/10\/example-mac-iterm-fancy.png?resize=580%2C542&#038;ssl=1\" alt=\"mac example output\" width=\"580\" height=\"542\" class=\"aligncenter size-full wp-image-3919\" srcset=\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/10\/example-mac-iterm-fancy.png?w=1908&amp;ssl=1 1908w, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/10\/example-mac-iterm-fancy.png?resize=400%2C374&amp;ssl=1 400w, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/10\/example-mac-iterm-fancy.png?resize=1024%2C957&amp;ssl=1 1024w, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/10\/example-mac-iterm-fancy.png?resize=768%2C718&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/10\/example-mac-iterm-fancy.png?resize=1536%2C1436&amp;ssl=1 1536w, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/10\/example-mac-iterm-fancy.png?resize=1200%2C1122&amp;ssl=1 1200w, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/10\/example-mac-iterm-fancy.png?w=1740&amp;ssl=1 1740w\" sizes=\"auto, (max-width: 580px) 100vw, 580px\" \/><\/a><\/p>\n<h3>Main features<\/h3>\n<ul>\n<li>Print colored messages on a terminal using Java.<\/li>\n<li><strong>Cross-platform<\/strong>. Works on Unix, Windows 10 and macOS.<\/li>\n<li><strong>Open-source<\/strong>. <a href=\"https:\/\/github.com\/dialex\/JColor\">Repo on GitHub<\/a>, you will find documentation and examples there.<\/li>\n<li><strong>Legacy friendly<\/strong>. The latest version requires Java 8, but it supports Java 6 too.<\/li>\n<li><strong>Rainbows!<\/strong> You can use any RGB color combination (TrueColor).<\/li>\n<li><strong>Easy to use<\/strong>. Format your messages using a simple API, and print them with <code>System.out.print<\/code>.<\/li>\n<\/ul>\n<h3>License<\/h3>\n<p>This program is free software under the terms of the <strong>MIT LICENSE<\/strong>. If this software was useful to you, consider <a href=\"https:\/\/www.diogonunes.com\/donate.html\">donating<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>JColor is a Java library that offers an easy way to print colored messages on a terminal<\/p>\n","protected":false},"author":1,"featured_media":3916,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[2],"tags":[20,33],"class_list":["post-1154","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tech","tag-free-and-open","tag-utilities"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Colored messages on a terminal using Java - The Geeky Gecko<\/title>\n<meta name=\"description\" content=\"JCDP allows you to print colored output on your console\/terminal. It&#039;s API is easy to use and extend. Also has some neat debug logging features.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.diogonunes.com\/blog\/jcolor-java-color-messages-terminal\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Colored messages on a terminal using Java - The Geeky Gecko\" \/>\n<meta property=\"og:description\" content=\"JCDP allows you to print colored output on your console\/terminal. It&#039;s API is easy to use and extend. Also has some neat debug logging features.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.diogonunes.com\/blog\/jcolor-java-color-messages-terminal\/\" \/>\n<meta property=\"og:site_name\" content=\"The Geeky Gecko\" \/>\n<meta property=\"article:published_time\" content=\"2014-10-27T08:00:44+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-07-16T11:30:41+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/10\/JColor-logo.png\" \/>\n\t<meta property=\"og:image:width\" content=\"512\" \/>\n\t<meta property=\"og:image:height\" content=\"512\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Diogo Nunes\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@dialexnunes\" \/>\n<meta name=\"twitter:site\" content=\"@dialexnunes\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Diogo Nunes\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.diogonunes.com\/blog\/jcolor-java-color-messages-terminal\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.diogonunes.com\/blog\/jcolor-java-color-messages-terminal\/\"},\"author\":{\"name\":\"Diogo Nunes\",\"@id\":\"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/a6fa79b293f22912664654fcfbd2da0c\"},\"headline\":\"Colored messages on a terminal using Java\",\"datePublished\":\"2014-10-27T08:00:44+00:00\",\"dateModified\":\"2023-07-16T11:30:41+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.diogonunes.com\/blog\/jcolor-java-color-messages-terminal\/\"},\"wordCount\":243,\"publisher\":{\"@id\":\"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/a6fa79b293f22912664654fcfbd2da0c\"},\"image\":{\"@id\":\"https:\/\/www.diogonunes.com\/blog\/jcolor-java-color-messages-terminal\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/10\/JColor-logo.png?fit=512%2C512&ssl=1\",\"keywords\":[\"free and open\",\"utilities\"],\"articleSection\":[\"Technology\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.diogonunes.com\/blog\/jcolor-java-color-messages-terminal\/\",\"url\":\"https:\/\/www.diogonunes.com\/blog\/jcolor-java-color-messages-terminal\/\",\"name\":\"Colored messages on a terminal using Java - The Geeky Gecko\",\"isPartOf\":{\"@id\":\"https:\/\/www.diogonunes.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.diogonunes.com\/blog\/jcolor-java-color-messages-terminal\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.diogonunes.com\/blog\/jcolor-java-color-messages-terminal\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/10\/JColor-logo.png?fit=512%2C512&ssl=1\",\"datePublished\":\"2014-10-27T08:00:44+00:00\",\"dateModified\":\"2023-07-16T11:30:41+00:00\",\"description\":\"JCDP allows you to print colored output on your console\/terminal. It's API is easy to use and extend. Also has some neat debug logging features.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.diogonunes.com\/blog\/jcolor-java-color-messages-terminal\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.diogonunes.com\/blog\/jcolor-java-color-messages-terminal\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.diogonunes.com\/blog\/jcolor-java-color-messages-terminal\/#primaryimage\",\"url\":\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/10\/JColor-logo.png?fit=512%2C512&ssl=1\",\"contentUrl\":\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/10\/JColor-logo.png?fit=512%2C512&ssl=1\",\"width\":512,\"height\":512,\"caption\":\"JColor-logo\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.diogonunes.com\/blog\/jcolor-java-color-messages-terminal\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.diogonunes.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Colored messages on a terminal using Java\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.diogonunes.com\/blog\/#website\",\"url\":\"https:\/\/www.diogonunes.com\/blog\/\",\"name\":\"The Geeky Gecko\",\"description\":\"The Geeky Gecko\",\"publisher\":{\"@id\":\"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/a6fa79b293f22912664654fcfbd2da0c\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.diogonunes.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/a6fa79b293f22912664654fcfbd2da0c\",\"name\":\"Diogo Nunes\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2026\/04\/Geeky-Gecko-2026-v2.png?fit=799%2C799&ssl=1\",\"contentUrl\":\"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2026\/04\/Geeky-Gecko-2026-v2.png?fit=799%2C799&ssl=1\",\"width\":799,\"height\":799,\"caption\":\"Diogo Nunes\"},\"logo\":{\"@id\":\"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/image\/\"},\"sameAs\":[\"http:\/\/www.diogonunes.com\",\"https:\/\/x.com\/dialexnunes\"],\"url\":\"https:\/\/www.diogonunes.com\/blog\/author\/diogo-nunes\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Colored messages on a terminal using Java - The Geeky Gecko","description":"JCDP allows you to print colored output on your console\/terminal. It's API is easy to use and extend. Also has some neat debug logging features.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.diogonunes.com\/blog\/jcolor-java-color-messages-terminal\/","og_locale":"en_US","og_type":"article","og_title":"Colored messages on a terminal using Java - The Geeky Gecko","og_description":"JCDP allows you to print colored output on your console\/terminal. It's API is easy to use and extend. Also has some neat debug logging features.","og_url":"https:\/\/www.diogonunes.com\/blog\/jcolor-java-color-messages-terminal\/","og_site_name":"The Geeky Gecko","article_published_time":"2014-10-27T08:00:44+00:00","article_modified_time":"2023-07-16T11:30:41+00:00","og_image":[{"width":512,"height":512,"url":"https:\/\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/10\/JColor-logo.png","type":"image\/png"}],"author":"Diogo Nunes","twitter_card":"summary_large_image","twitter_creator":"@dialexnunes","twitter_site":"@dialexnunes","twitter_misc":{"Written by":"Diogo Nunes","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.diogonunes.com\/blog\/jcolor-java-color-messages-terminal\/#article","isPartOf":{"@id":"https:\/\/www.diogonunes.com\/blog\/jcolor-java-color-messages-terminal\/"},"author":{"name":"Diogo Nunes","@id":"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/a6fa79b293f22912664654fcfbd2da0c"},"headline":"Colored messages on a terminal using Java","datePublished":"2014-10-27T08:00:44+00:00","dateModified":"2023-07-16T11:30:41+00:00","mainEntityOfPage":{"@id":"https:\/\/www.diogonunes.com\/blog\/jcolor-java-color-messages-terminal\/"},"wordCount":243,"publisher":{"@id":"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/a6fa79b293f22912664654fcfbd2da0c"},"image":{"@id":"https:\/\/www.diogonunes.com\/blog\/jcolor-java-color-messages-terminal\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/10\/JColor-logo.png?fit=512%2C512&ssl=1","keywords":["free and open","utilities"],"articleSection":["Technology"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.diogonunes.com\/blog\/jcolor-java-color-messages-terminal\/","url":"https:\/\/www.diogonunes.com\/blog\/jcolor-java-color-messages-terminal\/","name":"Colored messages on a terminal using Java - The Geeky Gecko","isPartOf":{"@id":"https:\/\/www.diogonunes.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.diogonunes.com\/blog\/jcolor-java-color-messages-terminal\/#primaryimage"},"image":{"@id":"https:\/\/www.diogonunes.com\/blog\/jcolor-java-color-messages-terminal\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/10\/JColor-logo.png?fit=512%2C512&ssl=1","datePublished":"2014-10-27T08:00:44+00:00","dateModified":"2023-07-16T11:30:41+00:00","description":"JCDP allows you to print colored output on your console\/terminal. It's API is easy to use and extend. Also has some neat debug logging features.","breadcrumb":{"@id":"https:\/\/www.diogonunes.com\/blog\/jcolor-java-color-messages-terminal\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.diogonunes.com\/blog\/jcolor-java-color-messages-terminal\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.diogonunes.com\/blog\/jcolor-java-color-messages-terminal\/#primaryimage","url":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/10\/JColor-logo.png?fit=512%2C512&ssl=1","contentUrl":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/10\/JColor-logo.png?fit=512%2C512&ssl=1","width":512,"height":512,"caption":"JColor-logo"},{"@type":"BreadcrumbList","@id":"https:\/\/www.diogonunes.com\/blog\/jcolor-java-color-messages-terminal\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.diogonunes.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Colored messages on a terminal using Java"}]},{"@type":"WebSite","@id":"https:\/\/www.diogonunes.com\/blog\/#website","url":"https:\/\/www.diogonunes.com\/blog\/","name":"The Geeky Gecko","description":"The Geeky Gecko","publisher":{"@id":"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/a6fa79b293f22912664654fcfbd2da0c"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.diogonunes.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/a6fa79b293f22912664654fcfbd2da0c","name":"Diogo Nunes","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2026\/04\/Geeky-Gecko-2026-v2.png?fit=799%2C799&ssl=1","contentUrl":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2026\/04\/Geeky-Gecko-2026-v2.png?fit=799%2C799&ssl=1","width":799,"height":799,"caption":"Diogo Nunes"},"logo":{"@id":"https:\/\/www.diogonunes.com\/blog\/#\/schema\/person\/image\/"},"sameAs":["http:\/\/www.diogonunes.com","https:\/\/x.com\/dialexnunes"],"url":"https:\/\/www.diogonunes.com\/blog\/author\/diogo-nunes\/"}]}},"jetpack_featured_media_url":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/10\/JColor-logo.png?fit=512%2C512&ssl=1","jetpack-related-posts":[{"id":441,"url":"https:\/\/www.diogonunes.com\/blog\/running-and-debugging-your-play-app\/","url_meta":{"origin":1154,"position":0},"title":"Running and debugging your Play app","author":"Diogo Nunes","date":"31 March, 2014","format":false,"excerpt":"Running locally play run will start the local (Netty) server and your app will be available at localhost:9000. play ~run will start the local server and reload it automatically every time you change a file of you app, that way you don't need to hit refresh (F5) on your browser.\u2026","rel":"","context":"In &quot;Technology&quot;","block_context":{"text":"Technology","link":"https:\/\/www.diogonunes.com\/blog\/category\/tech\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/03\/lets-play-3.png?fit=1143%2C431&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/03\/lets-play-3.png?fit=1143%2C431&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/03\/lets-play-3.png?fit=1143%2C431&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/03\/lets-play-3.png?fit=1143%2C431&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2014\/03\/lets-play-3.png?fit=1143%2C431&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":2379,"url":"https:\/\/www.diogonunes.com\/blog\/custom-build-configurations-visualstudio\/","url_meta":{"origin":1154,"position":1},"title":"Custom build configurations on VisualStudio","author":"Diogo Nunes","date":"6 July, 2015","format":false,"excerpt":"Sometimes you might need your application to behave differently according to different clients, or different operating systems, or any other criterion. You could create global variables, initialize them on your application's startup, and scatter if statements over your code. What you should do is use the \"State\" design pattern instead,\u2026","rel":"","context":"In &quot;Technology&quot;","block_context":{"text":"Technology","link":"https:\/\/www.diogonunes.com\/blog\/category\/tech\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2015\/07\/conditional-build.png?fit=1103%2C418&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2015\/07\/conditional-build.png?fit=1103%2C418&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2015\/07\/conditional-build.png?fit=1103%2C418&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2015\/07\/conditional-build.png?fit=1103%2C418&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2015\/07\/conditional-build.png?fit=1103%2C418&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":4204,"url":"https:\/\/www.diogonunes.com\/blog\/framework-review-playwright\/","url_meta":{"origin":1154,"position":2},"title":"Framework review: Playwright","author":"Diogo Nunes","date":"29 March, 2021","format":false,"excerpt":"Playwright enables end-to-end testing. Test modern single page apps, across all modern browsers, using in your preferred language (JS, TS, Java, C#, Python). \u2014 Official website Code Example of automation at GitHub. Use cases \ud83e\udd48 Automate end-to-end (E2E) tests using the UI. It also supports mocks. Learning curve \ud83e\udd48 Most\u2026","rel":"","context":"In &quot;Technology&quot;","block_context":{"text":"Technology","link":"https:\/\/www.diogonunes.com\/blog\/category\/tech\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2021\/03\/fatih-kilic-m1dM7ZXvdMs-unsplash.jpg?fit=1200%2C773&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2021\/03\/fatih-kilic-m1dM7ZXvdMs-unsplash.jpg?fit=1200%2C773&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2021\/03\/fatih-kilic-m1dM7ZXvdMs-unsplash.jpg?fit=1200%2C773&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2021\/03\/fatih-kilic-m1dM7ZXvdMs-unsplash.jpg?fit=1200%2C773&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2021\/03\/fatih-kilic-m1dM7ZXvdMs-unsplash.jpg?fit=1200%2C773&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":4059,"url":"https:\/\/www.diogonunes.com\/blog\/framework-review-robot\/","url_meta":{"origin":1154,"position":3},"title":"Framework review: Robot","author":"Diogo Nunes","date":"12 April, 2021","format":false,"excerpt":"Robot Framework is a test automation framework for acceptance testing (\u2026) it utilises the keyword-driven testing approach. Its testing capabilities can be extended by Python test libraries. \u2014 Official website Code Example of automation at GitHub. Use cases \ud83e\udd48 Automate end-to-end tests using the UI. You can also use it\u2026","rel":"","context":"In &quot;Technology&quot;","block_context":{"text":"Technology","link":"https:\/\/www.diogonunes.com\/blog\/category\/tech\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2020\/12\/phillip-glickman-2umO15jsZKM-unsplash.jpg?fit=1200%2C799&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2020\/12\/phillip-glickman-2umO15jsZKM-unsplash.jpg?fit=1200%2C799&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2020\/12\/phillip-glickman-2umO15jsZKM-unsplash.jpg?fit=1200%2C799&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2020\/12\/phillip-glickman-2umO15jsZKM-unsplash.jpg?fit=1200%2C799&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2020\/12\/phillip-glickman-2umO15jsZKM-unsplash.jpg?fit=1200%2C799&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":3756,"url":"https:\/\/www.diogonunes.com\/blog\/infrastructure-testing-inspec-azure-bash-ruby\/","url_meta":{"origin":1154,"position":4},"title":"Infrastructure testing (Ruby): InSpec + Azure","author":"Diogo Nunes","date":"7 September, 2020","format":false,"excerpt":"Infra testing is mostly uncharted territory I once worked in a project that was all about DevOps, pipelines and bash scripts. At the time we didn't find many guides, so we developed our own test strategy. Context The project's goal was to create a collection of bash scripts that would\u2026","rel":"","context":"In &quot;Technology&quot;","block_context":{"text":"Technology","link":"https:\/\/www.diogonunes.com\/blog\/category\/tech\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2020\/04\/jakub-kriz-arOyDPUAJzc-unsplash-scaled.jpg?fit=1200%2C800&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2020\/04\/jakub-kriz-arOyDPUAJzc-unsplash-scaled.jpg?fit=1200%2C800&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2020\/04\/jakub-kriz-arOyDPUAJzc-unsplash-scaled.jpg?fit=1200%2C800&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2020\/04\/jakub-kriz-arOyDPUAJzc-unsplash-scaled.jpg?fit=1200%2C800&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2020\/04\/jakub-kriz-arOyDPUAJzc-unsplash-scaled.jpg?fit=1200%2C800&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":3955,"url":"https:\/\/www.diogonunes.com\/blog\/framework-review-karate\/","url_meta":{"origin":1154,"position":5},"title":"Framework review: Karate","author":"Diogo Nunes","date":"2 November, 2020","format":false,"excerpt":"Karate is the only open-source tool to combine API test-automation, mocks, performance-testing and even UI automation into a single, unified framework. You don't have to compile (Java) code. Just write tests in a readable syntax. \u2014 Official website Code Example of automation at GitHub. Use cases \ud83e\udd47 Automate API tests.\u2026","rel":"","context":"In &quot;Technology&quot;","block_context":{"text":"Technology","link":"https:\/\/www.diogonunes.com\/blog\/category\/tech\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2020\/08\/thao-le-hoang-igLzPKOvZNw-unsplash-scaled.jpg?fit=1200%2C798&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2020\/08\/thao-le-hoang-igLzPKOvZNw-unsplash-scaled.jpg?fit=1200%2C798&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2020\/08\/thao-le-hoang-igLzPKOvZNw-unsplash-scaled.jpg?fit=1200%2C798&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2020\/08\/thao-le-hoang-igLzPKOvZNw-unsplash-scaled.jpg?fit=1200%2C798&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/www.diogonunes.com\/blog\/wp-content\/uploads\/2020\/08\/thao-le-hoang-igLzPKOvZNw-unsplash-scaled.jpg?fit=1200%2C798&ssl=1&resize=1050%2C600 3x"},"classes":[]}],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.diogonunes.com\/blog\/wp-json\/wp\/v2\/posts\/1154","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.diogonunes.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.diogonunes.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.diogonunes.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.diogonunes.com\/blog\/wp-json\/wp\/v2\/comments?post=1154"}],"version-history":[{"count":3,"href":"https:\/\/www.diogonunes.com\/blog\/wp-json\/wp\/v2\/posts\/1154\/revisions"}],"predecessor-version":[{"id":4751,"href":"https:\/\/www.diogonunes.com\/blog\/wp-json\/wp\/v2\/posts\/1154\/revisions\/4751"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.diogonunes.com\/blog\/wp-json\/wp\/v2\/media\/3916"}],"wp:attachment":[{"href":"https:\/\/www.diogonunes.com\/blog\/wp-json\/wp\/v2\/media?parent=1154"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.diogonunes.com\/blog\/wp-json\/wp\/v2\/categories?post=1154"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.diogonunes.com\/blog\/wp-json\/wp\/v2\/tags?post=1154"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}