This is an automated email from the ASF dual-hosted git repository. git-site-role pushed a commit to branch asf-site in repository https://gitbox.apache.org/repos/asf/groovy-dev-site.git
The following commit(s) were added to refs/heads/asf-site by this push: new a60d9b0 2024/03/14 12:19:01: Generated dev website from groovy-website@e40d512 a60d9b0 is described below commit a60d9b05adaf7c9ee9ba2afd0d0c3f5cf720511f Author: jenkins <bui...@apache.org> AuthorDate: Thu Mar 14 12:19:01 2024 +0000 2024/03/14 12:19:01: Generated dev website from groovy-website@e40d512 --- blog/adventures-with-groovyfx.html | 2 +- blog/classifying-iris-flowers-with-deep.html | 2 +- blog/comparators-and-sorting-in-groovy.html | 2 +- blog/deck-of-cards-with-groovy.html | 2 +- blog/deep-learning-and-eclipse-collections.html | 2 +- blog/detecting-objects-with-groovy-the.html | 2 +- blog/feed.atom | 12 +- blog/fruity-eclipse-collections.html | 2 +- blog/gmavenplus-1-6-2-released.html | 2 +- blog/groovy-2-4-16-released.html | 2 +- blog/groovy-2-4-16-windows.html | 2 +- blog/groovy-2-4-17-released.html | 2 +- blog/groovy-2-5-0-released.html | 2 +- blog/groovy-2-5-1-released.html | 2 +- blog/groovy-2-5-2-released.html | 2 +- blog/groovy-2-5-2-windows.html | 2 +- blog/groovy-2-5-3-released.html | 2 +- blog/groovy-2-5-3-windows.html | 2 +- blog/groovy-2-5-4-released.html | 2 +- blog/groovy-2-5-4-windows.html | 2 +- blog/groovy-2-5-5-released.html | 2 +- blog/groovy-2-5-5-windows.html | 2 +- blog/groovy-2-5-6-released.html | 2 +- blog/groovy-2-5-7-and.html | 2 +- blog/groovy-2-5-7-released.html | 2 +- blog/groovy-2-5-clibuilder-renewal.html | 2 +- blog/groovy-3-0-0-alpha.html | 2 +- blog/groovy-3-0-0-alpha1.html | 2 +- blog/groovy-3-0-0-beta.html | 2 +- blog/groovy-3-0-0-beta1.html | 2 +- blog/groovy-3-0-0-beta2.html | 2 +- blog/groovy-4-0-3-released.html | 2 +- blog/groovy-dauphine.html | 2 +- blog/groovy-haiku-processing.html | 2 +- blog/groovy-list-processing-cheat-sheet.html | 2 +- blog/groovy-null-processing.html | 2 +- blog/groovy-record-performance.html | 2 +- blog/groovy-records.html | 2 +- blog/groovy-release-train-4-0.html | 2 +- blog/groovy-sequenced-collections.html | 2 +- blog/helloworldemoji.html | 2 +- blog/index.html | 4 +- blog/lego-bricks-with-groovy.html | 2 +- blog/matrix-calculations-with-groovy-apache.html | 2 +- blog/parsing-json-with-groovy.html | 2 +- blog/reading-and-writing-csv-files.html | 2 +- blog/seasons-greetings-emoji.html | 2 +- blog/set-operations-with-groovy.html | 2 +- ...g-simple-optimization-problems-with-groovy.html | 142 +++++++++++++++++---- blog/using-groovy-with-apache-wayang.html | 2 +- blog/whiskey-clustering-with-groovy-and.html | 2 +- blog/wordle-checker.html | 2 +- blog/zipping-collections-with-groovy.html | 2 +- 53 files changed, 172 insertions(+), 86 deletions(-) diff --git a/blog/adventures-with-groovyfx.html b/blog/adventures-with-groovyfx.html index baceda3..a599efe 100644 --- a/blog/adventures-with-groovyfx.html +++ b/blog/adventures-with-groovyfx.html @@ -53,7 +53,7 @@ </ul> </div> </div> - </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Adventures with GroovyFX</a></li><li><a href='#_further_information' class='anchor-link'>Further information</a></li></ul><br/><ul class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color: #eee'><span>Related posts</span></li><li><a href='./set-operations-w [...] + </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Adventures with GroovyFX</a></li><li><a href='#_further_information' class='anchor-link'>Further information</a></li></ul><br/><ul class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color: #eee'><span>Related posts</span></li><li><a href='./deep-learning-an [...] <div class="sectionbody"> <div class="paragraph"> <p>This blog looks at a <a href="http://groovyfx.org/">GroovyFX</a> version of a <a href="https://donraab.medium.com/my-weird-and-wonderful-first-adventures-with-javafx-6efe3b1923c8">ToDo application originally written in JavaFX</a>. diff --git a/blog/classifying-iris-flowers-with-deep.html b/blog/classifying-iris-flowers-with-deep.html index ef9a752..0dc8bf8 100644 --- a/blog/classifying-iris-flowers-with-deep.html +++ b/blog/classifying-iris-flowers-with-deep.html @@ -53,7 +53,7 @@ </ul> </div> </div> - </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Classifying Iris Flowers with Deep Learning, Groovy and GraalVM</a></li><li><a href='#_deep_learning' class='anchor-link'>Deep Learning</a></li><li><a href='#_encog' class='anchor-link'>Encog</a></li><li><a href='#_eclipse_deeplearning4j' class='anchor-link'>Eclipse DeepLe [...] + </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Classifying Iris Flowers with Deep Learning, Groovy and GraalVM</a></li><li><a href='#_deep_learning' class='anchor-link'>Deep Learning</a></li><li><a href='#_encog' class='anchor-link'>Encog</a></li><li><a href='#_eclipse_deeplearning4j' class='anchor-link'>Eclipse DeepLe [...] <div class="sectionbody"> <div class="paragraph"> <p><span class="image right"><img src="img/iris_flowers.png" alt="iris flowers" width="200"></span> diff --git a/blog/comparators-and-sorting-in-groovy.html b/blog/comparators-and-sorting-in-groovy.html index 7450ca9..eef0d55 100644 --- a/blog/comparators-and-sorting-in-groovy.html +++ b/blog/comparators-and-sorting-in-groovy.html @@ -53,7 +53,7 @@ </ul> </div> </div> - </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Comparators and Sorting in Groovy</a></li><li><a href='#_the_java_comparator_story_recap' class='anchor-link'>The Java comparator story recap</a></li><li><a href='#_the_groovy_comparator_story' class='anchor-link'>The Groovy comparator story</a></li><li><a href='#_mixing_i [...] + </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Comparators and Sorting in Groovy</a></li><li><a href='#_the_java_comparator_story_recap' class='anchor-link'>The Java comparator story recap</a></li><li><a href='#_the_groovy_comparator_story' class='anchor-link'>The Groovy comparator story</a></li><li><a href='#_mixing_i [...] <div class="sectionbody"> <div class="paragraph"> <p><span class="image right"><img src="img/cher_record.png" alt="Cher" width="179" height="179"></span> diff --git a/blog/deck-of-cards-with-groovy.html b/blog/deck-of-cards-with-groovy.html index 4fb5bc3..b4fba7b 100644 --- a/blog/deck-of-cards-with-groovy.html +++ b/blog/deck-of-cards-with-groovy.html @@ -53,7 +53,7 @@ </ul> </div> </div> - </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Deck of cards with Groovy, JDK collections and Eclipse Collections</a></li></ul><br/><ul class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color: #eee'><span>Related posts</span></li><li><a href='./deep-learning-and-eclipse-collections'>Deep Learning and E [...] + </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Deck of cards with Groovy, JDK collections and Eclipse Collections</a></li></ul><br/><ul class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color: #eee'><span>Related posts</span></li><li><a href='./deep-learning-and-eclipse-collections'>Deep Learning and E [...] <p>Once again, <a href="https://twitter.com/TheDonRaab">Donald Raab</a> has produced an interesting <a href="https://donraab.medium.com/how-to-create-a-deck-of-cards-using-eclipse-collections-d9838ac430b7">blog post</a> on <a href="https://github.com/eclipse/eclipse-collections">Eclipse Collections</a> this one shows some code for modelling and manipulating cards with Java 17 and Eclipse Collections. His related katas are highly recommended. diff --git a/blog/deep-learning-and-eclipse-collections.html b/blog/deep-learning-and-eclipse-collections.html index ce1f676..34a242c 100644 --- a/blog/deep-learning-and-eclipse-collections.html +++ b/blog/deep-learning-and-eclipse-collections.html @@ -53,7 +53,7 @@ </ul> </div> </div> - </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Deep Learning and Eclipse Collections</a></li><li><a href='#_setting_up_our_model_and_data' class='anchor-link'>Setting up our model and data</a></li><li><a href='#_applying_deep_learning' class='anchor-link'>Applying deep learning</a></li></ul><br/><ul class='nav-sidebar' [...] + </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Deep Learning and Eclipse Collections</a></li><li><a href='#_setting_up_our_model_and_data' class='anchor-link'>Setting up our model and data</a></li><li><a href='#_applying_deep_learning' class='anchor-link'>Applying deep learning</a></li></ul><br/><ul class='nav-sidebar' [...] <div class="sectionbody"> <div class="paragraph"> <p>In previous blogs, we’ve covered diff --git a/blog/detecting-objects-with-groovy-the.html b/blog/detecting-objects-with-groovy-the.html index f98efe0..24623ff 100644 --- a/blog/detecting-objects-with-groovy-the.html +++ b/blog/detecting-objects-with-groovy-the.html @@ -53,7 +53,7 @@ </ul> </div> </div> - </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Detecting objects with Groovy, the Deep Java Library (DJL), and Apache MXNet</a></li><li><a href='#_deep_learning' class='anchor-link'>Deep Learning</a></li><li><a href='#_deep_java_library_djl_apache_mxnet' class='anchor-link'>Deep Java Library (DJL) & Apache MXNet</a [...] + </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Detecting objects with Groovy, the Deep Java Library (DJL), and Apache MXNet</a></li><li><a href='#_deep_learning' class='anchor-link'>Deep Learning</a></li><li><a href='#_deep_java_library_djl_apache_mxnet' class='anchor-link'>Deep Java Library (DJL) & Apache MXNet</a [...] <div class="sectionbody"> <div class="paragraph"> <p>This blog posts looks at using <a href="https://groovy-lang.org/">Apache Groovy</a> with the diff --git a/blog/feed.atom b/blog/feed.atom index 8393de4..0f68ba2 100644 --- a/blog/feed.atom +++ b/blog/feed.atom @@ -8,21 +8,21 @@ <author> <name>Remko Popma</name> </author> - <title>Groovy 2.5.0 released</title> - <link href="http://groovy.apache.org/blog/groovy-2-5-0-released"/> + <title>Apache Groovy 2.5 CliBuilder Renewal</title> + <link href="http://groovy.apache.org/blog/groovy-2-5-clibuilder-renewal"/> <updated>2018-05-30T11:28:31+00:00</updated> <published>2018-05-30T11:28:31+00:00</published> - <summary>Groovy 2.5.0 Release Announcement.</summary> + <summary>This post looks at new CliBuilder features from Groovy 2.5 in particular the Picocli-based implementation.</summary> </entry> <entry> <author> <name>Remko Popma</name> </author> - <title>Apache Groovy 2.5 CliBuilder Renewal</title> - <link href="http://groovy.apache.org/blog/groovy-2-5-clibuilder-renewal"/> + <title>Groovy 2.5.0 released</title> + <link href="http://groovy.apache.org/blog/groovy-2-5-0-released"/> <updated>2018-05-30T11:28:31+00:00</updated> <published>2018-05-30T11:28:31+00:00</published> - <summary>This post looks at new CliBuilder features from Groovy 2.5 in particular the Picocli-based implementation.</summary> + <summary>Groovy 2.5.0 Release Announcement.</summary> </entry> <entry> <author> diff --git a/blog/fruity-eclipse-collections.html b/blog/fruity-eclipse-collections.html index aa24d4d..e385cfe 100644 --- a/blog/fruity-eclipse-collections.html +++ b/blog/fruity-eclipse-collections.html @@ -53,7 +53,7 @@ </ul> </div> </div> - </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Fruity Eclipse Collections</a></li><li><a href='#_eclipse_collections_fruit_salad' class='anchor-link'>Eclipse Collections Fruit Salad</a></li><li><a href='#_exploring_emoji_colors' class='anchor-link'>Exploring emoji colors</a></li><li><a href='#_putting_it_all_together' [...] + </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Fruity Eclipse Collections</a></li><li><a href='#_eclipse_collections_fruit_salad' class='anchor-link'>Eclipse Collections Fruit Salad</a></li><li><a href='#_exploring_emoji_colors' class='anchor-link'>Exploring emoji colors</a></li><li><a href='#_putting_it_all_together' [...] <div class="sectionbody"> <div class="paragraph"> <p>This blog post continues on the theme of using fruit emoji from the diff --git a/blog/gmavenplus-1-6-2-released.html b/blog/gmavenplus-1-6-2-released.html index 733d6b8..1d88936 100644 --- a/blog/gmavenplus-1-6-2-released.html +++ b/blog/gmavenplus-1-6-2-released.html @@ -53,7 +53,7 @@ </ul> </div> </div> - </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>GMavenPlus 1.6.2 Released (Community Artifact)</a></li><li><a href='#_gmavenplus_1_6_2_has_been_released' class='anchor-link'>GMavenPlus 1.6.2 has been released.</a></li></ul><br/><ul class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color: #eee'><span>Rel [...] + </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>GMavenPlus 1.6.2 Released (Community Artifact)</a></li><li><a href='#_gmavenplus_1_6_2_has_been_released' class='anchor-link'>GMavenPlus 1.6.2 has been released.</a></li></ul><br/><ul class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color: #eee'><span>Rel [...] <h2 id="_gmavenplus_1_6_2_has_been_released">GMavenPlus 1.6.2 has been released.</h2> <div class="sectionbody"> <div class="paragraph"> diff --git a/blog/groovy-2-4-16-released.html b/blog/groovy-2-4-16-released.html index e73238e..074c8fe 100644 --- a/blog/groovy-2-4-16-released.html +++ b/blog/groovy-2-4-16-released.html @@ -53,7 +53,7 @@ </ul> </div> </div> - </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Groovy 2.4.16 Released</a></li></ul><br/><ul class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color: #eee'><span>Related posts</span></li><li><a href='./groovy-2-4-16-windows'>Groovy 2.4.16 Windows Installer Released (Community Artifact)</a></li><li><a hr [...] + </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Groovy 2.4.16 Released</a></li></ul><br/><ul class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color: #eee'><span>Related posts</span></li><li><a href='./groovy-2-4-16-windows'>Groovy 2.4.16 Windows Installer Released (Community Artifact)</a></li><li><a hr [...] <p>Dear community,</p> </div> <div class="paragraph"> diff --git a/blog/groovy-2-4-16-windows.html b/blog/groovy-2-4-16-windows.html index 203d2b3..ee74ce6 100644 --- a/blog/groovy-2-4-16-windows.html +++ b/blog/groovy-2-4-16-windows.html @@ -53,7 +53,7 @@ </ul> </div> </div> - </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Groovy 2.4.16 Windows Installer Released (Community Artifact)</a></li></ul><br/><ul class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color: #eee'><span>Related posts</span></li><li><a href='./groovy-2-4-16-released'>Groovy 2.4.16 Released</a></li><li><a h [...] + </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Groovy 2.4.16 Windows Installer Released (Community Artifact)</a></li></ul><br/><ul class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color: #eee'><span>Related posts</span></li><li><a href='./groovy-2-4-16-released'>Groovy 2.4.16 Released</a></li><li><a h [...] <p>The Windows installer for Groovy 2.4.16 (community artifact) is available from: <a href="https://bintray.com/groovy/Distributions/Windows-Installer/groovy-2.4.16-installer" class="bare">https://bintray.com/groovy/Distributions/Windows-Installer/groovy-2.4.16-installer</a>.</p> </div></div></div></div></div><footer id='footer'> <div class='row'> diff --git a/blog/groovy-2-4-17-released.html b/blog/groovy-2-4-17-released.html index 3714861..2237565 100644 --- a/blog/groovy-2-4-17-released.html +++ b/blog/groovy-2-4-17-released.html @@ -53,7 +53,7 @@ </ul> </div> </div> - </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Groovy 2.4.17 Released</a></li></ul><br/><ul class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color: #eee'><span>Related posts</span></li><li><a href='./groovy-2-4-16-released'>Groovy 2.4.16 Released</a></li><li><a href='./groovy-2-4-16-windows'>Groovy 2. [...] + </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Groovy 2.4.17 Released</a></li></ul><br/><ul class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color: #eee'><span>Related posts</span></li><li><a href='./groovy-2-4-16-windows'>Groovy 2.4.16 Windows Installer Released (Community Artifact)</a></li><li><a hr [...] <p>Dear community,</p> </div> <div class="paragraph"> diff --git a/blog/groovy-2-5-0-released.html b/blog/groovy-2-5-0-released.html index d99c5ba..f66e953 100644 --- a/blog/groovy-2-5-0-released.html +++ b/blog/groovy-2-5-0-released.html @@ -53,7 +53,7 @@ </ul> </div> </div> - </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Groovy 2.5.0 released</a></li></ul><br/><ul class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color: #eee'><span>Related posts</span></li><li><a href='./groovy-2-5-7-released'>Groovy 2.5.7 Released</a></li><li><a href='./groovy-2-5-5-windows'>Groovy 2.5.5 [...] + </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Groovy 2.5.0 released</a></li></ul><br/><ul class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color: #eee'><span>Related posts</span></li><li><a href='./groovy-2-5-2-windows'>Groovy 2.5.2 Windows Installer Released (Community Artifact)</a></li><li><a href= [...] <p>Dear community,</p> </div> <div class="paragraph"> diff --git a/blog/groovy-2-5-1-released.html b/blog/groovy-2-5-1-released.html index 0d14fed..8122ca7 100644 --- a/blog/groovy-2-5-1-released.html +++ b/blog/groovy-2-5-1-released.html @@ -53,7 +53,7 @@ </ul> </div> </div> - </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Groovy 2.5.1 released</a></li></ul><br/><ul class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color: #eee'><span>Related posts</span></li><li><a href='./groovy-2-5-7-released'>Groovy 2.5.7 Released</a></li><li><a href='./groovy-2-5-5-windows'>Groovy 2.5.5 [...] + </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Groovy 2.5.1 released</a></li></ul><br/><ul class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color: #eee'><span>Related posts</span></li><li><a href='./groovy-2-5-2-windows'>Groovy 2.5.2 Windows Installer Released (Community Artifact)</a></li><li><a href= [...] <p>Dear community,</p> </div> <div class="paragraph"> diff --git a/blog/groovy-2-5-2-released.html b/blog/groovy-2-5-2-released.html index 5d8b75c..41acf3b 100644 --- a/blog/groovy-2-5-2-released.html +++ b/blog/groovy-2-5-2-released.html @@ -53,7 +53,7 @@ </ul> </div> </div> - </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Groovy 2.5.2 released</a></li></ul><br/><ul class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color: #eee'><span>Related posts</span></li><li><a href='./groovy-2-5-2-windows'>Groovy 2.5.2 Windows Installer Released (Community Artifact)</a></li><li><a href= [...] + </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Groovy 2.5.2 released</a></li></ul><br/><ul class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color: #eee'><span>Related posts</span></li><li><a href='./groovy-2-5-2-windows'>Groovy 2.5.2 Windows Installer Released (Community Artifact)</a></li><li><a href= [...] <p>Dear community,</p> </div> <div class="paragraph"> diff --git a/blog/groovy-2-5-2-windows.html b/blog/groovy-2-5-2-windows.html index f275cd9..1dbacf0 100644 --- a/blog/groovy-2-5-2-windows.html +++ b/blog/groovy-2-5-2-windows.html @@ -53,7 +53,7 @@ </ul> </div> </div> - </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Groovy 2.5.2 Windows Installer Released (Community Artifact)</a></li></ul><br/><ul class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color: #eee'><span>Related posts</span></li><li><a href='./groovy-2-5-5-windows'>Groovy 2.5.5 Windows Installer Released (C [...] + </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Groovy 2.5.2 Windows Installer Released (Community Artifact)</a></li></ul><br/><ul class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color: #eee'><span>Related posts</span></li><li><a href='./groovy-2-5-7-and'>Groovy 2.5.7 and 3.0.0-beta-1 Windows Installe [...] <p>The Windows installer for Groovy 2.5.2 (community artifact) is available from: <a href="https://dl.bintray.com/groovy/Distributions/groovy-2.5.2-installer.exe" class="bare">https://dl.bintray.com/groovy/Distributions/groovy-2.5.2-installer.exe</a></p> </div></div></div></div></div><footer id='footer'> diff --git a/blog/groovy-2-5-3-released.html b/blog/groovy-2-5-3-released.html index d5d3b7b..f560719 100644 --- a/blog/groovy-2-5-3-released.html +++ b/blog/groovy-2-5-3-released.html @@ -53,7 +53,7 @@ </ul> </div> </div> - </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Groovy 2.5.3 Released</a></li></ul><br/><ul class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color: #eee'><span>Related posts</span></li><li><a href='./groovy-2-5-3-windows'>Groovy 2.5.3 Windows Installer Released (Community Artifact)</a></li><li><a href= [...] + </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Groovy 2.5.3 Released</a></li></ul><br/><ul class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color: #eee'><span>Related posts</span></li><li><a href='./groovy-2-5-3-windows'>Groovy 2.5.3 Windows Installer Released (Community Artifact)</a></li><li><a href= [...] <p>Dear community,</p> </div> <div class="paragraph"> diff --git a/blog/groovy-2-5-3-windows.html b/blog/groovy-2-5-3-windows.html index 30a5964..b854685 100644 --- a/blog/groovy-2-5-3-windows.html +++ b/blog/groovy-2-5-3-windows.html @@ -53,7 +53,7 @@ </ul> </div> </div> - </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Groovy 2.5.3 Windows Installer Released (Community Artifact)</a></li></ul><br/><ul class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color: #eee'><span>Related posts</span></li><li><a href='./groovy-2-5-5-windows'>Groovy 2.5.5 Windows Installer Released (C [...] + </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Groovy 2.5.3 Windows Installer Released (Community Artifact)</a></li></ul><br/><ul class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color: #eee'><span>Related posts</span></li><li><a href='./groovy-2-5-2-windows'>Groovy 2.5.2 Windows Installer Released (C [...] <p>The Windows installer for Groovy 2.5.3 (community artifact) is available from: <a href="https://bintray.com/groovy/Distributions/Windows-Installer/groovy-2.5.3-installer" class="bare">https://bintray.com/groovy/Distributions/Windows-Installer/groovy-2.5.3-installer</a></p> </div></div></div></div></div><footer id='footer'> diff --git a/blog/groovy-2-5-4-released.html b/blog/groovy-2-5-4-released.html index 64de0cd..03587b6 100644 --- a/blog/groovy-2-5-4-released.html +++ b/blog/groovy-2-5-4-released.html @@ -53,7 +53,7 @@ </ul> </div> </div> - </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Groovy 2.5.4 Released</a></li></ul><br/><ul class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color: #eee'><span>Related posts</span></li><li><a href='./groovy-2-5-4-windows'>Groovy 2.5.4 Windows Installer Released (Community Artifact)</a></li><li><a href= [...] + </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Groovy 2.5.4 Released</a></li></ul><br/><ul class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color: #eee'><span>Related posts</span></li><li><a href='./groovy-2-5-4-windows'>Groovy 2.5.4 Windows Installer Released (Community Artifact)</a></li><li><a href= [...] <p>Dear community,</p> </div> <div class="paragraph"> diff --git a/blog/groovy-2-5-4-windows.html b/blog/groovy-2-5-4-windows.html index 6cc9a18..9272222 100644 --- a/blog/groovy-2-5-4-windows.html +++ b/blog/groovy-2-5-4-windows.html @@ -53,7 +53,7 @@ </ul> </div> </div> - </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Groovy 2.5.4 Windows Installer Released (Community Artifact)</a></li></ul><br/><ul class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color: #eee'><span>Related posts</span></li><li><a href='./groovy-2-5-5-windows'>Groovy 2.5.5 Windows Installer Released (C [...] + </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Groovy 2.5.4 Windows Installer Released (Community Artifact)</a></li></ul><br/><ul class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color: #eee'><span>Related posts</span></li><li><a href='./groovy-2-5-2-windows'>Groovy 2.5.2 Windows Installer Released (C [...] <p>The Windows installer for Groovy 2.5.4 (community artifact) is available from: <a href="https://bintray.com/groovy/Distributions/Windows-Installer/groovy-2.5.4-installer" class="bare">https://bintray.com/groovy/Distributions/Windows-Installer/groovy-2.5.4-installer</a></p> </div></div></div></div></div><footer id='footer'> diff --git a/blog/groovy-2-5-5-released.html b/blog/groovy-2-5-5-released.html index c445f73..4514930 100644 --- a/blog/groovy-2-5-5-released.html +++ b/blog/groovy-2-5-5-released.html @@ -53,7 +53,7 @@ </ul> </div> </div> - </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Groovy 2.5.5 released</a></li></ul><br/><ul class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color: #eee'><span>Related posts</span></li><li><a href='./groovy-2-5-5-windows'>Groovy 2.5.5 Windows Installer Released (Community Artifact)</a></li><li><a href= [...] + </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Groovy 2.5.5 released</a></li></ul><br/><ul class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color: #eee'><span>Related posts</span></li><li><a href='./groovy-2-5-5-windows'>Groovy 2.5.5 Windows Installer Released (Community Artifact)</a></li><li><a href= [...] <p>Dear community,</p> </div> <div class="paragraph"> diff --git a/blog/groovy-2-5-5-windows.html b/blog/groovy-2-5-5-windows.html index 5824ed1..be9543b 100644 --- a/blog/groovy-2-5-5-windows.html +++ b/blog/groovy-2-5-5-windows.html @@ -53,7 +53,7 @@ </ul> </div> </div> - </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Groovy 2.5.5 Windows Installer Released (Community Artifact)</a></li></ul><br/><ul class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color: #eee'><span>Related posts</span></li><li><a href='./groovy-2-5-5-released'>Groovy 2.5.5 released</a></li><li><a href [...] + </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Groovy 2.5.5 Windows Installer Released (Community Artifact)</a></li></ul><br/><ul class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color: #eee'><span>Related posts</span></li><li><a href='./groovy-2-5-2-windows'>Groovy 2.5.2 Windows Installer Released (C [...] <p>The Windows installer for Groovy 2.5.5 (community artifact) is available at: <a href="https://bintray.com/groovy/Distributions/Windows-Installer/groovy-2.5.5-installer" class="bare">https://bintray.com/groovy/Distributions/Windows-Installer/groovy-2.5.5-installer</a></p> </div></div></div></div></div><footer id='footer'> diff --git a/blog/groovy-2-5-6-released.html b/blog/groovy-2-5-6-released.html index 709d6db..0e9b39c 100644 --- a/blog/groovy-2-5-6-released.html +++ b/blog/groovy-2-5-6-released.html @@ -53,7 +53,7 @@ </ul> </div> </div> - </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Groovy 2.5.6 Released</a></li></ul><br/><ul class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color: #eee'><span>Related posts</span></li><li><a href='./groovy-2-5-7-released'>Groovy 2.5.7 Released</a></li><li><a href='./groovy-2-5-5-windows'>Groovy 2.5.5 [...] + </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Groovy 2.5.6 Released</a></li></ul><br/><ul class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color: #eee'><span>Related posts</span></li><li><a href='./groovy-2-5-2-windows'>Groovy 2.5.2 Windows Installer Released (Community Artifact)</a></li><li><a href= [...] <p>Dear community,</p> </div> <div class="paragraph"> diff --git a/blog/groovy-2-5-7-and.html b/blog/groovy-2-5-7-and.html index 5f06e4f..b09d90b 100644 --- a/blog/groovy-2-5-7-and.html +++ b/blog/groovy-2-5-7-and.html @@ -53,7 +53,7 @@ </ul> </div> </div> - </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Groovy 2.5.7 and 3.0.0-beta-1 Windows Installers Released (Community Artifacts)</a></li></ul><br/><ul class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color: #eee'><span>Related posts</span></li><li><a href='./groovy-2-5-7-released'>Groovy 2.5.7 Released< [...] + </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Groovy 2.5.7 and 3.0.0-beta-1 Windows Installers Released (Community Artifacts)</a></li></ul><br/><ul class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color: #eee'><span>Related posts</span></li><li><a href='./groovy-2-5-2-windows'>Groovy 2.5.2 Windows In [...] <p>The Windows installer for Groovy 2.5.7 (Community Artifact) is now available from Bintray: <a href="https://bintray.com/groovy/Distributions/Windows-Installer/groovy-2.5.7-installer" class="bare">https://bintray.com/groovy/Distributions/Windows-Installer/groovy-2.5.7-installer</a>.</p> </div> diff --git a/blog/groovy-2-5-7-released.html b/blog/groovy-2-5-7-released.html index be82fd6..57857b8 100644 --- a/blog/groovy-2-5-7-released.html +++ b/blog/groovy-2-5-7-released.html @@ -53,7 +53,7 @@ </ul> </div> </div> - </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Groovy 2.5.7 Released</a></li></ul><br/><ul class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color: #eee'><span>Related posts</span></li><li><a href='./groovy-2-5-7-and'>Groovy 2.5.7 and 3.0.0-beta-1 Windows Installers Released (Community Artifacts)</a></ [...] + </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Groovy 2.5.7 Released</a></li></ul><br/><ul class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color: #eee'><span>Related posts</span></li><li><a href='./groovy-2-5-7-and'>Groovy 2.5.7 and 3.0.0-beta-1 Windows Installers Released (Community Artifacts)</a></ [...] <p>Dear community,</p> </div> <div class="paragraph"> diff --git a/blog/groovy-2-5-clibuilder-renewal.html b/blog/groovy-2-5-clibuilder-renewal.html index 8ab7dd1..158f7a7 100644 --- a/blog/groovy-2-5-clibuilder-renewal.html +++ b/blog/groovy-2-5-clibuilder-renewal.html @@ -53,7 +53,7 @@ </ul> </div> </div> - </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Apache Groovy 2.5 CliBuilder Renewal</a></li><li><a href='#_the_code_groovy_util_clibuilder_code_class_is_deprecated' class='anchor-link'>The <code>groovy.util.CliBuilder</code> Class is Deprecated</a></li><li><a href='#_typed_options' class='anchor-link'>Typed Options</a> [...] + </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Apache Groovy 2.5 CliBuilder Renewal</a></li><li><a href='#_the_code_groovy_util_clibuilder_code_class_is_deprecated' class='anchor-link'>The <code>groovy.util.CliBuilder</code> Class is Deprecated</a></li><li><a href='#_typed_options' class='anchor-link'>Typed Options</a> [...] <div class="sectionbody"> <div class="paragraph"> <p>The <code>CliBuilder</code> class for quickly and concisely building diff --git a/blog/groovy-3-0-0-alpha.html b/blog/groovy-3-0-0-alpha.html index 708ee85..ea7bcf0 100644 --- a/blog/groovy-3-0-0-alpha.html +++ b/blog/groovy-3-0-0-alpha.html @@ -53,7 +53,7 @@ </ul> </div> </div> - </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Groovy 3.0.0-alpha-4 Released</a></li></ul><br/><ul class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color: #eee'><span>Related posts</span></li><li><a href='./groovy-3-0-0-alpha1'>Groovy 3.0.0-alpha-4 Windows Installer Released (Community Artifact)</a></ [...] + </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Groovy 3.0.0-alpha-4 Released</a></li></ul><br/><ul class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color: #eee'><span>Related posts</span></li><li><a href='./groovy-3-0-0-alpha1'>Groovy 3.0.0-alpha-4 Windows Installer Released (Community Artifact)</a></ [...] <p>Dear community,</p> </div> <div class="paragraph"> diff --git a/blog/groovy-3-0-0-alpha1.html b/blog/groovy-3-0-0-alpha1.html index a91f96d..60f06d9 100644 --- a/blog/groovy-3-0-0-alpha1.html +++ b/blog/groovy-3-0-0-alpha1.html @@ -53,7 +53,7 @@ </ul> </div> </div> - </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Groovy 3.0.0-alpha-4 Windows Installer Released (Community Artifact)</a></li></ul><br/><ul class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color: #eee'><span>Related posts</span></li><li><a href='./groovy-3-0-0-alpha'>Groovy 3.0.0-alpha-4 Released</a></l [...] + </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Groovy 3.0.0-alpha-4 Windows Installer Released (Community Artifact)</a></li></ul><br/><ul class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color: #eee'><span>Related posts</span></li><li><a href='./groovy-3-0-0-alpha'>Groovy 3.0.0-alpha-4 Released</a></l [...] <p>The Windows installer for Groovy 3.0.0-alpha-4 (Community Artifact) is available from the usual place: <a href="https://bintray.com/groovy/Distributions/download_file?file_path=groovy-3.0.0-alpha-4-installer.exe" class="bare">https://bintray.com/groovy/Distributions/download_file?file_path=groovy-3.0.0-alpha-4-installer.exe</a></p> </div> diff --git a/blog/groovy-3-0-0-beta.html b/blog/groovy-3-0-0-beta.html index 3acd736..1cc8c59 100644 --- a/blog/groovy-3-0-0-beta.html +++ b/blog/groovy-3-0-0-beta.html @@ -53,7 +53,7 @@ </ul> </div> </div> - </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Groovy 3.0.0-beta-1 Released</a></li></ul><br/><ul class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color: #eee'><span>Related posts</span></li><li><a href='./groovy-3-0-0-alpha'>Groovy 3.0.0-alpha-4 Released</a></li><li><a href='./groovy-3-0-0-beta2'>Gro [...] + </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Groovy 3.0.0-beta-1 Released</a></li></ul><br/><ul class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color: #eee'><span>Related posts</span></li><li><a href='./groovy-3-0-0-alpha'>Groovy 3.0.0-alpha-4 Released</a></li><li><a href='./groovy-3-0-0-beta1'>Gro [...] <p>Dear community,</p> </div> <div class="paragraph"> diff --git a/blog/groovy-3-0-0-beta1.html b/blog/groovy-3-0-0-beta1.html index dd543a9..4a766e0 100644 --- a/blog/groovy-3-0-0-beta1.html +++ b/blog/groovy-3-0-0-beta1.html @@ -53,7 +53,7 @@ </ul> </div> </div> - </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Groovy 3.0.0-beta-2 Released</a></li></ul><br/><ul class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color: #eee'><span>Related posts</span></li><li><a href='./groovy-3-0-0-beta2'>Groovy 3.0.0-beta-2 Windows Installer Released (Community Release)</a></li>< [...] + </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Groovy 3.0.0-beta-2 Released</a></li></ul><br/><ul class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color: #eee'><span>Related posts</span></li><li><a href='./groovy-3-0-0-beta2'>Groovy 3.0.0-beta-2 Windows Installer Released (Community Release)</a></li>< [...] <p>Dear community,</p> </div> <div class="paragraph"> diff --git a/blog/groovy-3-0-0-beta2.html b/blog/groovy-3-0-0-beta2.html index 22e42b6..bae023b 100644 --- a/blog/groovy-3-0-0-beta2.html +++ b/blog/groovy-3-0-0-beta2.html @@ -53,7 +53,7 @@ </ul> </div> </div> - </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Groovy 3.0.0-beta-2 Windows Installer Released (Community Release)</a></li></ul><br/><ul class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color: #eee'><span>Related posts</span></li><li><a href='./groovy-3-0-0-alpha1'>Groovy 3.0.0-alpha-4 Windows Installe [...] + </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Groovy 3.0.0-beta-2 Windows Installer Released (Community Release)</a></li></ul><br/><ul class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color: #eee'><span>Related posts</span></li><li><a href='./groovy-3-0-0-beta1'>Groovy 3.0.0-beta-2 Released</a></li>< [...] <p>The Windows installer for Groovy 3.0.0-beta-2 is now available from Bintray: <a href="https://bintray.com/groovy/Distributions/download_file?file_path=groovy-3.0.0-beta-2-installer.exe" class="bare">https://bintray.com/groovy/Distributions/download_file?file_path=groovy-3.0.0-beta-2-installer.exe</a></p> </div> diff --git a/blog/groovy-4-0-3-released.html b/blog/groovy-4-0-3-released.html index 043f2cf..dc7f68f 100644 --- a/blog/groovy-4-0-3-released.html +++ b/blog/groovy-4-0-3-released.html @@ -53,7 +53,7 @@ </ul> </div> </div> - </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Groovy 4.0.3 Released</a></li></ul><br/><ul class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color: #eee'><span>Related posts</span></li><li><a href='./groovy-2-5-7-released'>Groovy 2.5.7 Released</a></li><li><a href='./groovy-2-5-5-windows'>Groovy 2.5.5 [...] + </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Groovy 4.0.3 Released</a></li></ul><br/><ul class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color: #eee'><span>Related posts</span></li><li><a href='./groovy-2-5-2-windows'>Groovy 2.5.2 Windows Installer Released (Community Artifact)</a></li><li><a href= [...] <p>Dear community,</p> </div> <div class="paragraph"> diff --git a/blog/groovy-dauphine.html b/blog/groovy-dauphine.html index 196f1b5..45ac4d6 100644 --- a/blog/groovy-dauphine.html +++ b/blog/groovy-dauphine.html @@ -53,7 +53,7 @@ </ul> </div> </div> - </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Processing Results for the Critérium du Dauphiné</a></li><li><a href='#_results_file' class='anchor-link'>Results file</a></li></ul><br/><ul class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color: #eee'><span>Related posts</span></li><li><a href='./parsin [...] + </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Processing Results for the Critérium du Dauphiné</a></li><li><a href='#_results_file' class='anchor-link'>Results file</a></li></ul><br/><ul class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color: #eee'><span>Related posts</span></li><li><a href='./readin [...] <div class="sectionbody"> <div class="paragraph"> <p>The 2023 <a href="https://www.criterium-du-dauphine.fr/en/">Critérium du Dauphiné</a> diff --git a/blog/groovy-haiku-processing.html b/blog/groovy-haiku-processing.html index 3322da4..7afe6c8 100644 --- a/blog/groovy-haiku-processing.html +++ b/blog/groovy-haiku-processing.html @@ -53,7 +53,7 @@ </ul> </div> </div> - </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Groovy Haiku processing</a></li><li><a href='#_example_1_finding_the_distinct_letters' class='anchor-link'>Example 1: Finding the distinct letters</a></li><li><a href='#_example_2_splitting_letters_into_unique_and_duplicate_partitions' class='anchor-link'>Example 2: Splitt [...] + </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Groovy Haiku processing</a></li><li><a href='#_example_1_finding_the_distinct_letters' class='anchor-link'>Example 1: Finding the distinct letters</a></li><li><a href='#_example_2_splitting_letters_into_unique_and_duplicate_partitions' class='anchor-link'>Example 2: Splitt [...] <div class="sectionbody"> <div class="paragraph"> <p>This blog looks at some Groovy solutions for the examples in the diff --git a/blog/groovy-list-processing-cheat-sheet.html b/blog/groovy-list-processing-cheat-sheet.html index a9271ed..6fe998c 100644 --- a/blog/groovy-list-processing-cheat-sheet.html +++ b/blog/groovy-list-processing-cheat-sheet.html @@ -53,7 +53,7 @@ </ul> </div> </div> - </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Groovy List Processing Cheat Sheet</a></li><li><a href='#_declaring_lists' class='anchor-link'>Declaring lists</a></li><li><a href='#_list_elements_and_properties' class='anchor-link'>List elements and properties</a></li><li><a href='#_modifying_mutable_lists' class='ancho [...] + </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Groovy List Processing Cheat Sheet</a></li><li><a href='#_declaring_lists' class='anchor-link'>Declaring lists</a></li><li><a href='#_list_elements_and_properties' class='anchor-link'>List elements and properties</a></li><li><a href='#_modifying_mutable_lists' class='ancho [...] <h2 id="_declaring_lists">Declaring lists</h2> <div class="sectionbody"> <div class="paragraph"> diff --git a/blog/groovy-null-processing.html b/blog/groovy-null-processing.html index 1507688..dfc36a7 100644 --- a/blog/groovy-null-processing.html +++ b/blog/groovy-null-processing.html @@ -53,7 +53,7 @@ </ul> </div> </div> - </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Groovy Processing Nulls In Lists</a></li><li><a href='#_libraries_covered' class='anchor-link'>Libraries covered</a></li><li><a href='#_mutating_a_list_to_remove_its_nulls' class='anchor-link'>Mutating a list to remove its nulls</a></li><li><a href='#_producing_a_new_list_ [...] + </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Groovy Processing Nulls In Lists</a></li><li><a href='#_libraries_covered' class='anchor-link'>Libraries covered</a></li><li><a href='#_mutating_a_list_to_remove_its_nulls' class='anchor-link'>Mutating a list to remove its nulls</a></li><li><a href='#_producing_a_new_list_ [...] <div class="sectionbody"> <div class="paragraph"> <p>This <a href="https://www.programmergirl.com/java-remove-nulls-from-list/">article</a> by <a href="https://www.programmergirl.com/about-me/">Shubhra Srivastava</a> diff --git a/blog/groovy-record-performance.html b/blog/groovy-record-performance.html index 96f0b11..b8aae57 100644 --- a/blog/groovy-record-performance.html +++ b/blog/groovy-record-performance.html @@ -53,7 +53,7 @@ </ul> </div> </div> - </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Groovy Record Performance</a></li><li><a href='#_our_domain' class='anchor-link'>Our domain</a></li><li><a href='#_performance_of_hashcode' class='anchor-link'>Performance of <code>hashCode</code></a></li><li><a href='#_performance_of_equals' class='anchor-link'>Performanc [...] + </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Groovy Record Performance</a></li><li><a href='#_our_domain' class='anchor-link'>Our domain</a></li><li><a href='#_performance_of_hashcode' class='anchor-link'>Performance of <code>hashCode</code></a></li><li><a href='#_performance_of_equals' class='anchor-link'>Performanc [...] <div class="sectionbody"> <div class="paragraph"> <p>We highly recommend the excellent diff --git a/blog/groovy-records.html b/blog/groovy-records.html index 429cfaf..1b3fa46 100644 --- a/blog/groovy-records.html +++ b/blog/groovy-records.html @@ -53,7 +53,7 @@ </ul> </div> </div> - </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Groovy Records</a></li><li><a href='#_introduction' class='anchor-link'>Introduction</a></li><li><a href='#_optional_enhancements' class='anchor-link'>Optional enhancements</a></li><li><a href='#_internal_details' class='anchor-link'>Internal details</a></li><li><a href='# [...] + </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Groovy Records</a></li><li><a href='#_introduction' class='anchor-link'>Introduction</a></li><li><a href='#_optional_enhancements' class='anchor-link'>Optional enhancements</a></li><li><a href='#_internal_details' class='anchor-link'>Internal details</a></li><li><a href='# [...] <div class="sectionbody"> <div class="paragraph"> <p>A common scenario when programming is the need to group together a bunch diff --git a/blog/groovy-release-train-4-0.html b/blog/groovy-release-train-4-0.html index 6344ff6..22ccff3 100644 --- a/blog/groovy-release-train-4-0.html +++ b/blog/groovy-release-train-4-0.html @@ -53,7 +53,7 @@ </ul> </div> </div> - </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Groovy release train: 4.0.4, 3.0.12, 2.5.18</a></li></ul><br/><ul class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color: #eee'><span>Related posts</span></li><li><a href='./groovy-2-5-7-released'>Groovy 2.5.7 Released</a></li><li><a href='./groovy-2-5-5- [...] + </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Groovy release train: 4.0.4, 3.0.12, 2.5.18</a></li></ul><br/><ul class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color: #eee'><span>Related posts</span></li><li><a href='./groovy-2-5-2-windows'>Groovy 2.5.2 Windows Installer Released (Community Artifact [...] <p>It’s been a productive time for the Apache Groovy project recently. We recently released versions 4.0.4, 3.0.12 and 2.5.18 with 42, 21 and 15 fixes and improvements respectively. Two quick highlights for the 4.0.4 release before getting into more details about the release.</p> </div> <div class="paragraph"> diff --git a/blog/groovy-sequenced-collections.html b/blog/groovy-sequenced-collections.html index 5aee316..717b83f 100644 --- a/blog/groovy-sequenced-collections.html +++ b/blog/groovy-sequenced-collections.html @@ -53,7 +53,7 @@ </ul> </div> </div> - </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Groovy and Sequenced Collections (JEP-431)</a></li><li><a href='#_sequenced_collections_summary' class='anchor-link'>Sequenced Collections Summary</a></li><li><a href='#_accessing_the_first_and_last_element' class='anchor-link'>Accessing the first and last element</a></li> [...] + </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Groovy and Sequenced Collections (JEP-431)</a></li><li><a href='#_sequenced_collections_summary' class='anchor-link'>Sequenced Collections Summary</a></li><li><a href='#_accessing_the_first_and_last_element' class='anchor-link'>Accessing the first and last element</a></li> [...] <div class="sectionbody"> <div class="paragraph"> <p>An exciting feature coming in JDK21 is diff --git a/blog/helloworldemoji.html b/blog/helloworldemoji.html index 67f07ee..e056676 100644 --- a/blog/helloworldemoji.html +++ b/blog/helloworldemoji.html @@ -53,7 +53,7 @@ </ul> </div> </div> - </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Hello World with Emojis</a></li></ul><br/><ul class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color: #eee'><span>Related posts</span></li><li><a href='./set-operations-with-groovy'>Set Operators with Groovy</a></li><li><a href='./deep-learning-and-eclips [...] + </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Hello World with Emojis</a></li></ul><br/><ul class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color: #eee'><span>Related posts</span></li><li><a href='./deep-learning-and-eclipse-collections'>Deep Learning and Eclipse Collections</a></li><li><a href='./z [...] <p>In a <a href="https://groovy.apache.org/blog/jvm-hello-world-with-groovy">previous blog post</a> we took an in-depth look at how to write a "hello world" class at the bytecode level using various libraries.</p> diff --git a/blog/index.html b/blog/index.html index 996905e..b249bed 100644 --- a/blog/index.html +++ b/blog/index.html @@ -53,7 +53,7 @@ </ul> </div> </div> - </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3' id='blog-index'><ul class='nav-sidebar list'><li class='active'><a href='/blog/'>Blogs</a></li><li><a href='groovy-knapsack'>Solving the Knapsack Problem with Groovy</a></li><li><a href='groovy-delegation'>Using the Delegation Pattern with Groovy</a></li><li><a href='groovy-typecheckers'>Groovy Type Checkers</a></li><li><a href='seasons-greetings-emoji'>Season̵ [...] + </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3' id='blog-index'><ul class='nav-sidebar list'><li class='active'><a href='/blog/'>Blogs</a></li><li><a href='groovy-knapsack'>Solving the Knapsack Problem with Groovy</a></li><li><a href='groovy-delegation'>Using the Delegation Pattern with Groovy</a></li><li><a href='groovy-typecheckers'>Groovy Type Checkers</a></li><li><a href='seasons-greetings-emoji'>Season̵ [...] <div class='row'> <div class='colset-3-footer'> <div class='col-1'> @@ -97,7 +97,7 @@ colors: am5.ColorSet.new(root, {}) })); wc.data.setAll([ - { category: "concurrency", value: 2 }, { category: "groovy", value: 75 }, { category: "actors", value: 2 }, { category: "pekko", value: 1 }, { category: "gpars", value: 2 }, { category: "calendar", value: 1 }, { category: "date", value: 3 }, { category: "jsr310", value: 1 }, { category: "time", value: 1 }, { category: "data science", value: 7 }, { category: "eclipse collections", value: 9 }, { category: "kmeans", value: 3 }, { category: "emoji", value: 7 }, { category: "v [...] + { category: "centroids", value: 1 }, { category: "data science", value: 7 }, { category: "groovy", value: 75 }, { category: "kmeans", value: 3 }, { category: "records", value: 7 }, { category: "apache spark", value: 1 }, { category: "apache wayang", value: 1 }, { category: "release", value: 25 }, { category: "clibuilder", value: 1 }, { category: "picocli", value: 1 }, { category: "commons cli", value: 1 }, { category: "asf", value: 1 }, { category: "apachecon", value: 2 } [...] ]); wc.labels.template.setAll({ paddingTop: 5, diff --git a/blog/lego-bricks-with-groovy.html b/blog/lego-bricks-with-groovy.html index 3702cd9..842cce7 100644 --- a/blog/lego-bricks-with-groovy.html +++ b/blog/lego-bricks-with-groovy.html @@ -53,7 +53,7 @@ </ul> </div> </div> - </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Lego Bricks with Groovy</a></li><li><a href='#_basic_collection_processing' class='anchor-link'>Basic Collection Processing</a></li><li><a href='#_our_example_domain' class='anchor-link'>Our example domain</a></li><li><a href='#_some_bricks_to_play_with' class='anchor-link [...] + </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Lego Bricks with Groovy</a></li><li><a href='#_basic_collection_processing' class='anchor-link'>Basic Collection Processing</a></li><li><a href='#_our_example_domain' class='anchor-link'>Our example domain</a></li><li><a href='#_some_bricks_to_play_with' class='anchor-link [...] <div class="sectionbody"> <div class="paragraph"> <p><a href="https://twitter.com/TheDonRaab">Donald Raab</a> has continued has interesting diff --git a/blog/matrix-calculations-with-groovy-apache.html b/blog/matrix-calculations-with-groovy-apache.html index 08a9acb..eb316f5 100644 --- a/blog/matrix-calculations-with-groovy-apache.html +++ b/blog/matrix-calculations-with-groovy-apache.html @@ -53,7 +53,7 @@ </ul> </div> </div> - </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Matrix calculations with Groovy, Apache Commons Math, ojAlgo, Nd4j and EJML</a></li><li><a href='#_fibonacci' class='anchor-link'>Fibonacci</a></li><li><a href='#_leslie_matrices' class='anchor-link'>Leslie Matrices</a></li><li><a href='#_encryption_with_matrices' class='a [...] + </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Matrix calculations with Groovy, Apache Commons Math, ojAlgo, Nd4j and EJML</a></li><li><a href='#_fibonacci' class='anchor-link'>Fibonacci</a></li><li><a href='#_leslie_matrices' class='anchor-link'>Leslie Matrices</a></li><li><a href='#_encryption_with_matrices' class='a [...] <div class="sectionbody"> <div class="paragraph"> <p>This blogs looks at performing matrix calculations with Groovy diff --git a/blog/parsing-json-with-groovy.html b/blog/parsing-json-with-groovy.html index 10a023d..cf53092 100644 --- a/blog/parsing-json-with-groovy.html +++ b/blog/parsing-json-with-groovy.html @@ -53,7 +53,7 @@ </ul> </div> </div> - </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Parsing JSON with Groovy</a></li><li><a href='#_batteries_included_experience' class='anchor-link'>Batteries included experience</a></li><li><a href='#_gradle' class='anchor-link'>Gradle</a></li><li><a href='#_maven' class='anchor-link'>Maven</a></li><li><a href='#_advance [...] + </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Parsing JSON with Groovy</a></li><li><a href='#_batteries_included_experience' class='anchor-link'>Batteries included experience</a></li><li><a href='#_gradle' class='anchor-link'>Gradle</a></li><li><a href='#_maven' class='anchor-link'>Maven</a></li><li><a href='#_advance [...] <div class="sectionbody"> <div class="paragraph"> <p><span class="image right"><img src="img/json_logo.gif" alt="json logo" width="120"></span> diff --git a/blog/reading-and-writing-csv-files.html b/blog/reading-and-writing-csv-files.html index ae32642..a29af20 100644 --- a/blog/reading-and-writing-csv-files.html +++ b/blog/reading-and-writing-csv-files.html @@ -53,7 +53,7 @@ </ul> </div> </div> - </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Reading and Writing CSV files with Groovy</a></li><li><a href='#_introduction' class='anchor-link'>Introduction</a></li><li><a href='#_commons_csv' class='anchor-link'>Commons CSV</a></li><li><a href='#_opencsv' class='anchor-link'>OpenCSV</a></li><li><a href='#_jackson_da [...] + </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Reading and Writing CSV files with Groovy</a></li><li><a href='#_introduction' class='anchor-link'>Introduction</a></li><li><a href='#_commons_csv' class='anchor-link'>Commons CSV</a></li><li><a href='#_opencsv' class='anchor-link'>OpenCSV</a></li><li><a href='#_jackson_da [...] <h2 id="_introduction">Introduction</h2> <div class="sectionbody"> <div class="paragraph"> diff --git a/blog/seasons-greetings-emoji.html b/blog/seasons-greetings-emoji.html index dd475f3..5fe7085 100644 --- a/blog/seasons-greetings-emoji.html +++ b/blog/seasons-greetings-emoji.html @@ -53,7 +53,7 @@ </ul> </div> </div> - </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Season’s Greetings with Emojis</a></li><li><a href='#_jdk_21_new_features' class='anchor-link'>JDK 21 New Features</a></li><li><a href='#_playing_with_emojis_with_groovy' class='anchor-link'>Playing with Emojis with Groovy</a></li><li><a href='#_more_information' cla [...] + </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Season’s Greetings with Emojis</a></li><li><a href='#_jdk_21_new_features' class='anchor-link'>JDK 21 New Features</a></li><li><a href='#_playing_with_emojis_with_groovy' class='anchor-link'>Playing with Emojis with Groovy</a></li><li><a href='#_more_information' cla [...] <div class="sectionbody"> <div class="paragraph"> <p>In a <a href="https://groovy.apache.org/blog/helloworldemoji">previous blog post</a> diff --git a/blog/set-operations-with-groovy.html b/blog/set-operations-with-groovy.html index 1295ea4..7a0113a 100644 --- a/blog/set-operations-with-groovy.html +++ b/blog/set-operations-with-groovy.html @@ -53,7 +53,7 @@ </ul> </div> </div> - </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Set Operators with Groovy</a></li></ul><br/><ul class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color: #eee'><span>Related posts</span></li><li><a href='./deep-learning-and-eclipse-collections'>Deep Learning and Eclipse Collections</a></li><li><a href='. [...] + </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Set Operators with Groovy</a></li></ul><br/><ul class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color: #eee'><span>Related posts</span></li><li><a href='./deep-learning-and-eclipse-collections'>Deep Learning and Eclipse Collections</a></li><li><a href='. [...] <p><a href="https://twitter.com/TheDonRaab">Donald Raab</a> posted <a href="https://donraab.medium.com/comparing-set-operations-between-java-and-eclipse-collections-92cf1df28d3b">an article</a> about set operators using Java collections and <a href="https://github.com/eclipse/eclipse-collections">Eclipse Collections</a>. <a href="https://donraab.medium.com/comparing-set-operations-between-java-and-eclipse-collections-92cf1df28d3b">That post</a> focuses on the <em>union</em>, <em>intersection</em> and <em>difference</em> operators. We’ll add in <em>symmetric difference</em> since Groovy supports operator overloading for that diff --git a/blog/solving-simple-optimization-problems-with-groovy.html b/blog/solving-simple-optimization-problems-with-groovy.html index 20f31d8..fbab927 100644 --- a/blog/solving-simple-optimization-problems-with-groovy.html +++ b/blog/solving-simple-optimization-problems-with-groovy.html @@ -362,6 +362,22 @@ with Groovy solutions in the same repo as the above examples:</p> </li> </ul> </div> +<div class="paragraph"> +<p>For simple optimization problems, like our case study, +which can be solved using a simplex solver, you generally +need look no further. It is a very efficient approach +to solving such problems. For an additional class of slightly +more complex problems, they can be mapped to linear programming +problems with a little ingenuity.</p> +</div> +<div class="paragraph"> +<p>For more complex problems, +there are generally no super efficient solution approaches. +You need to bring to bear a range of techniques for managing +the potentially huge search space which is inherent in +such problems. That is where optimization libraries like +OptaPlanner (and Timefold) come into play.</p> +</div> </div> </div> <div class="sect1"> @@ -372,10 +388,12 @@ with Groovy solutions in the same repo as the above examples:</p> For most of the last 10 years the library was developed under Red Hat’s guidance. In the last 12 months, the project and other related projects were donated to the <a href="https://www.apache.org/">ASF</a> as part of <a href="https://kie.apache.org/">Apache KIE</a>. -More recently, the library was forked as [Timefold].</p> +More recently, the library was forked as +<a href="https://timefold.ai/">Timefold</a>.</p> </div> <div class="paragraph"> -<p>We’ll use Timefold, but the code in the examples remains the same for both libraries. +<p>In this blog, we’ll use Timefold, but the code in the examples remains the same for both libraries as you can see in the +referenced repositories. Just the Maven coordinate of the library changes along with the associated class imports. At this stage, it isn’t clear how the two projects will evolve over time.</p> </div> @@ -384,18 +402,50 @@ At this stage, it isn’t clear how the two projects will evolve over time.< This can be confirmed by running the <code>printRuntimeClasspath</code> task in the associated builds. Timefold has 20 dependant jars compared with OptaPlanner’s 55 jars.</p> </div> +<div class="paragraph"> +<p>While Timefold’s power isn’t needed for our simple problem, +let’s examine how you would use it for the same case study.</p> +</div> +<div class="paragraph"> +<p>First, we’ll create a planning entity. +This is a class which the solver knows will change +over time and will contain one or more planning +variables.</p> +</div> +<div class="paragraph"> +<p>In our case, we have just one planning variable, +the <code>amount</code> property, which the solver will adjust while trying +to find an optimal solution.</p> +</div> <div class="listingblock"> <div class="content"> <pre class="prettyprint highlight"><code data-lang="groovy">@PlanningEntity -@ToString(includePackage = false) +@TupleConstructor(includeFields = true) class Food { - String name + final String name, emoji + final double cost, protein, fat, carbs, calories @PlanningVariable(valueRangeProviderRefs = "amount") Integer amount // times 100 - double cost, protein, fat, carbs, calories }</code></pre> </div> </div> +<div class="paragraph"> +<p>We are using an Integer as the type for <code>amount</code>, since +Integers are much easier for a solver to work with. +We’ll actually store the amount (as seen in the earlier example) +multiplied by 100, but we’ll divide by 100 when displaying the result.</p> +</div> +<div class="paragraph"> +<p>The other fields of our class are constants once defined +during instance construction.</p> +</div> +<div class="paragraph"> +<p>Next, we define a planning solution class. This has all the +information needed about any given solution including a <code>score</code>. +The score lets us determine whether one solution is more optimal +than another, and also whether a given solution meets all hard +and soft constraints (explained shortly).</p> +</div> <div class="listingblock"> <div class="content"> <pre class="prettyprint highlight"><code data-lang="groovy">@PlanningSolution @@ -411,20 +461,27 @@ class DietSolution { @PlanningScore HardSoftScore score - void display() { + String toString() { + var sb = new StringBuilder() foods.eachWithIndex { f, idx -> - var emoji = ['🍞', '🥛', '🧀', '🥔', '🐟', '🍶'] - println "${emoji[idx]} $f.name: ${f.amount / 100}" + sb << "$f.emoji $f.name: ${f.amount / 100}\n" } for (name in ['fat', 'carbs', 'protein', 'calories', 'cost']) { var total = foods.sum{ f -> f."$name" * f.amount / 100 } - printf "Total %s: %.2f%n", name, total + sb << sprintf("Total %s: %.2f%n", name, total) } - println "Score: $score" + sb << "Score: $score" + sb } }</code></pre> </div> </div> +<div class="paragraph"> +<p>Next we want to define some constraints. In general, we have hard +constraints which must be met and soft constraints which should +be met if possible. In our case, we’ll have constraints like minimum +and maximum values for various foods and various nutritional measures.</p> +</div> <div class="listingblock"> <div class="content"> <pre class="prettyprint highlight"><code data-lang="groovy">class DietConstraintProvider implements ConstraintProvider { @@ -489,35 +546,29 @@ class DietSolution { }</code></pre> </div> </div> +<div class="paragraph"> +<p>With these helper classes in place, we are now ready to</p> +</div> <div class="listingblock"> <div class="content"> <pre class="prettyprint highlight"><code data-lang="groovy">def unsolved = new DietSolution(foods: [ - new Food(name: 'Bread', cost: 2.0, protein: 4.0, fat: 1.0, carbs: 15.0, calories: 90), - new Food(name: 'Milk', cost: 3.5, protein: 8.0, fat: 5.0, carbs: 11.7, calories: 120), - new Food(name: 'Cheese', cost: 8.0, protein: 7.0, fat: 9.0, carbs: 0.4, calories: 106), - new Food(name: 'Potato', cost: 1.5, protein: 1.3, fat: 0.1, carbs: 22.6, calories: 97), - new Food(name: 'Fish', cost: 11.0, protein: 8.0, fat: 7.0, carbs: 0.0, calories: 130), - new Food(name: 'Yogurt', cost: 1.0, protein: 9.2, fat: 1.0, carbs: 17.0, calories: 180) + new Food('Bread' , '🍞', 2.0, 4.0, 1.0, 15.0, 90), + new Food('Milk' , '🥛', 3.5, 8.0, 5.0, 11.7, 120), + new Food('Cheese', '🧀', 8.0, 7.0, 9.0, 0.4, 106), + new Food('Potato', '🥔', 1.5, 1.3, 0.1, 22.6, 97), + new Food('Fish' , '🐟', 11.0, 8.0, 7.0, 0.0, 130), + new Food('Yogurt', '🍶', 1.0, 9.2, 1.0, 17.0, 180) ]) -def construction = new ConstructionHeuristicPhaseConfig(constructionHeuristicType: FIRST_FIT) -def moveSelector = new UnionMoveSelectorConfig([ - new ChangeMoveSelectorConfig(), - new SwapMoveSelectorConfig() -]) -def localSearch = new LocalSearchPhaseConfig(localSearchType: VARIABLE_NEIGHBORHOOD_DESCENT, - moveSelectorConfig: moveSelector) def config = new SolverConfig() .withSolutionClass(DietSolution) .withEntityClasses(Food) .withConstraintProviderClass(DietConstraintProvider) - .withPhases(construction, localSearch) .withTerminationSpentLimit(Duration.ofSeconds(10)) def factory = SolverFactory.create(config) def solver = factory.buildSolver() -def solved = solver.solve(unsolved) -solved.display()</code></pre> +println solver.solve(unsolved)</code></pre> </div> </div> <div class="paragraph"> @@ -544,7 +595,36 @@ Score: -1hard/-261soft</pre> </div> </div> <div class="paragraph"> -<p>It has this output when run:</p> +<p>Given the amount of time we gave the solver, and using the +default search algorithms, we couldn’t even meet all hard constraints. +The search space was so vast, that we never reached an area in the +search space where all constraints were met.</p> +</div> +<div class="paragraph"> +<p>The good news is that we can provide additional guidance, so that +the solver heads in better directions during its searching. +Here is one possible additional configuration that we could supply, +along with the updated <code>config</code> definition:</p> +</div> +<div class="listingblock"> +<div class="content"> +<pre class="prettyprint highlight"><code data-lang="groovy">def construction = new ConstructionHeuristicPhaseConfig(constructionHeuristicType: FIRST_FIT) +def moveSelector = new UnionMoveSelectorConfig([ + new ChangeMoveSelectorConfig(), + new SwapMoveSelectorConfig() +]) +def localSearch = new LocalSearchPhaseConfig(localSearchType: VARIABLE_NEIGHBORHOOD_DESCENT, + moveSelectorConfig: moveSelector) +def config = new SolverConfig() + .withSolutionClass(DietSolution) + .withEntityClasses(Food) + .withConstraintProviderClass(DietConstraintProvider) + .withPhases(construction, localSearch) // additional solution guidance + .withTerminationSpentLimit(Duration.ofSeconds(10))</code></pre> +</div> +</div> +<div class="paragraph"> +<p>It now has this output when run:</p> </div> <div class="listingblock"> <div class="content"> @@ -562,6 +642,9 @@ Total cost: 12.35 Score: 0hard/-308soft</pre> </div> </div> +<div class="paragraph"> +<p>We can see here that it is now close to what linear programming would give us.</p> +</div> </div> </div> <div class="sect1"> @@ -590,7 +673,10 @@ Score: 0hard/-308soft</pre> <div class="sectionbody"> <div class="paragraph"> <p>We have looked at using Groovy and a few linear optimization -libraries to solve a diet case study.</p> +libraries to solve a diet case study. Our main focus was the +Apache Commons Math and Hipparchus libraries. +We also explored using the more powerful Timeflow and OptaPlanner +libraries.</p> </div> </div> </div></div></div></div></div><footer id='footer'> diff --git a/blog/using-groovy-with-apache-wayang.html b/blog/using-groovy-with-apache-wayang.html index f03437d..71b4f98 100644 --- a/blog/using-groovy-with-apache-wayang.html +++ b/blog/using-groovy-with-apache-wayang.html @@ -53,7 +53,7 @@ </ul> </div> </div> - </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Using Groovy with Apache Wayang and Apache Spark</a></li><li><a href='#_whiskey_clustering' class='anchor-link'>Whiskey Clustering</a></li><li><a href='#_implementation_details' class='anchor-link'>Implementation Details</a></li><li><a href='#_running_with_the_java_streams [...] + </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Using Groovy with Apache Wayang and Apache Spark</a></li><li><a href='#_whiskey_clustering' class='anchor-link'>Whiskey Clustering</a></li><li><a href='#_implementation_details' class='anchor-link'>Implementation Details</a></li><li><a href='#_running_with_the_java_streams [...] <div class="sectionbody"> <div class="paragraph"> <p><span class="image right"><img src="https://www.apache.org/logos/res/wayang/default.png" alt="wayang logo" width="100"></span> diff --git a/blog/whiskey-clustering-with-groovy-and.html b/blog/whiskey-clustering-with-groovy-and.html index 3e3cbf1..3e63b30 100644 --- a/blog/whiskey-clustering-with-groovy-and.html +++ b/blog/whiskey-clustering-with-groovy-and.html @@ -53,7 +53,7 @@ </ul> </div> </div> - </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Whiskey Clustering with Groovy and Apache Ignite</a></li><li><a href='#_whiskey_clustering' class='anchor-link'>Whiskey Clustering</a></li><li><a href='#_apache_ignite' class='anchor-link'>Apache Ignite</a></li><li><a href='#_implementation_details' class='anchor-link'>Imp [...] + </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Whiskey Clustering with Groovy and Apache Ignite</a></li><li><a href='#_whiskey_clustering' class='anchor-link'>Whiskey Clustering</a></li><li><a href='#_apache_ignite' class='anchor-link'>Apache Ignite</a></li><li><a href='#_implementation_details' class='anchor-link'>Imp [...] <div class="sectionbody"> <div class="paragraph"> <p>In a previous <a href="https://groovy.apache.org/blog/using-groovy-with-apache-wayang">blog post</a>, diff --git a/blog/wordle-checker.html b/blog/wordle-checker.html index 85bb151..c44e550 100644 --- a/blog/wordle-checker.html +++ b/blog/wordle-checker.html @@ -53,7 +53,7 @@ </ul> </div> </div> - </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Checking Wordle with Groovy</a></li></ul><br/><ul class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color: #eee'><span>Related posts</span></li><li><a href='./groovy-null-processing'>Groovy Processing Nulls In Lists</a></li><li><a href='./groovy-list-proce [...] + </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Checking Wordle with Groovy</a></li></ul><br/><ul class='nav-sidebar'><li style='padding: 0.35em 0.625em; background-color: #eee'><span>Related posts</span></li><li><a href='./groovy-null-processing'>Groovy Processing Nulls In Lists</a></li><li><a href='./zipping-collectio [...] <p>This <a href="https://donraab.medium.com/comparing-my-smalltalk-and-eclipse-collections-wordle-kata-solutions-4058ac7d8ca0">article</a> by <a href="https://twitter.com/TheDonRaab">Donald Raab</a> looks at writing a Wordle checker in Smalltalk and Java using <a href="https://github.com/eclipse/eclipse-collections">Eclipse Collections</a>. Let’s look at doing the same in Groovy. We could easily use Eclipse Collections with Groovy diff --git a/blog/zipping-collections-with-groovy.html b/blog/zipping-collections-with-groovy.html index 59194cb..8caa7e9 100644 --- a/blog/zipping-collections-with-groovy.html +++ b/blog/zipping-collections-with-groovy.html @@ -53,7 +53,7 @@ </ul> </div> </div> - </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Zipping Collections with Groovy</a></li><li><a href='#_what_is_zipping' class='anchor-link'>What is zipping?</a></li><li><a href='#_groovy' class='anchor-link'>Groovy</a></li><li><a href='#_eclipse_collections' class='anchor-link'>Eclipse Collections</a></li><li><a href='# [...] + </div><div id='content' class='page-1'><div class='row'><div class='row-fluid'><div class='col-lg-3'><ul class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a href='#doc'>Zipping Collections with Groovy</a></li><li><a href='#_what_is_zipping' class='anchor-link'>What is zipping?</a></li><li><a href='#_groovy' class='anchor-link'>Groovy</a></li><li><a href='#_eclipse_collections' class='anchor-link'>Eclipse Collections</a></li><li><a href='# [...] <h2 id="_what_is_zipping">What is zipping?</h2> <div class="sectionbody"> <div class="paragraph">