{"id":147370,"date":"2019-07-02T15:50:33","date_gmt":"2019-07-02T07:50:33","guid":{"rendered":"https:\/\/www.baeldung.com\/?p=55595"},"modified":"2019-07-02T15:50:33","modified_gmt":"2019-07-02T07:50:33","slug":"java-weekly-issue-288","status":"publish","type":"post","link":"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/2019\/07\/02\/java-weekly-issue-288\/","title":{"rendered":"Java Weekly, Issue 288"},"content":{"rendered":"<p><strong>Here we go\u2026<\/strong><\/p>\n<h2><strong>1. Spring and Java<\/strong><\/h2>\n<h4><strong><a href=\"https:\/\/spring.io\/blog\/2019\/07\/01\/hiding-services-runtime-discovery-with-spring-cloud-gateway\"  rel=\"noopener noreferrer\">&gt;&gt; Hiding Services &amp; Runtime Discovery with Spring Cloud Gateway<\/a><\/strong> [<span style=\"color: #993300;\">spring.io<\/span>]<\/h4>\n<p>A solid, ready-to-run example using Spring Cloud&#8217;s gateway and registry services. Good stuff.<\/p>\n<h4><strong><a href=\"https:\/\/blog.frankel.ch\/exercises-programming-style\/8\/\"  rel=\"noopener noreferrer\">&gt;&gt; Exercises in Programming Style: maps are objects too<\/a><\/strong> [<span style=\"color: #993300;\">blog.frankel.ch<\/span>]<\/h4>\n<p>A functional solution to the word extraction problem seen previously in the series, this time using an immutable map in Kotlin.<\/p>\n<h4><strong><a href=\"http:\/\/andresalmiray.com\/running-gradle-inside-maven\/\"  rel=\"noopener noreferrer\">&gt;&gt; Running Gradle inside Maven<\/a><\/strong> [<span style=\"color: #993300;\">andresalmiray.com<\/span>]<\/h4>\n<p>And although Gradle builds don&#8217;t participate directly in the Maven reactor, you can execute a Gradle build within a multi-module Maven project <strong>with the right combination of plugins<\/strong>.<\/p>\n<h4><strong>Also worth reading:<\/strong><\/h4>\n<ul>\n<li>\n<h4><strong><a href=\"https:\/\/reflectoring.io\/spring-boot-gradle-multi-module\/\"  rel=\"noopener noreferrer\">&gt;&gt; Building a Multi-Module Spring Boot Application with Gradle<\/a><\/strong> [<span style=\"color: #993300;\">reflectoring.io<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><strong><a href=\"https:\/\/paluch.biz\/blog\/180-data-classes-considered-harmful.html\"  rel=\"noopener noreferrer\">&gt;&gt; Data Classes Considered Harmful<\/a><\/strong> [<span style=\"color: #993300;\">paluch.biz<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><strong><a href=\"https:\/\/dev.to\/sierisimo\/tdd-with-urm-and-kotlin-1dj7\"  rel=\"noopener noreferrer\">&gt;&gt; TDD With URM and Kotlin<\/a><\/strong> [<span style=\"color: #993300;\">dev.to<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><strong><a href=\"https:\/\/www.forbes.com\/sites\/oracle\/2019\/07\/01\/venkat-subramaniam-kotlin-and-python-are-fun-but-java-developers-are-semantically-aligned--with-the-future\/#5aed10365d04\"  rel=\"noopener noreferrer\">&gt;&gt; Venkat Subramaniam: Kotlin And Python Are Fun, But Java Developers Are Semantically Aligned With The Future<\/a><\/strong> [<span style=\"color: #993300;\">forbes.com<\/span>]<\/h4>\n<\/li>\n<\/ul>\n<h4><strong>Webinars and presentations:<\/strong><\/h4>\n<ul>\n<li>\n<h4><strong><a href=\"https:\/\/spring.io\/blog\/2019\/06\/27\/a-bootiful-podcast-datadog-s-jason-yee-on-observability-operations-metrics-kubernetes-language-and-more\"  rel=\"noopener noreferrer\">&gt;&gt; A Bootiful Podcast: Datadog&#8217;s Jason Yee on observability, operations, metrics, Kubernetes, language and more<\/a><\/strong> [<span style=\"color: #993300;\">spring.io<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><strong><a href=\"https:\/\/spring.io\/blog\/2019\/06\/26\/spring-tips-season-6-recap\"  rel=\"noopener noreferrer\">&gt;&gt; Spring Tips &#8211; Season 6 Recap<\/a><\/strong> [<span style=\"color: #993300;\">spring.io<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><strong><a href=\"https:\/\/www.tomitribe.com\/blog\/jakartaee-39-project-and-where-they-are-at\/\"  rel=\"noopener noreferrer\">&gt;&gt; Jakarta EE: 39 Projects and Where they are at?<\/a><\/strong> [<span style=\"color: #993300;\">tomitribe.com<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><strong><a href=\"https:\/\/www.tomitribe.com\/blog\/top-5-tomcat-vulnerabilities-demonstrated\/\"  rel=\"noopener noreferrer\">&gt;&gt; Top 5 Tomcat Vulnerabilities Demonstrated<\/a><\/strong> [<span style=\"color: #993300;\">tomitribe.com<\/span>]<\/h4>\n<\/li>\n<\/ul>\n<h4><strong>Time to upgrade:<\/strong><\/h4>\n<ul>\n<li>\n<h4><strong><a href=\"https:\/\/spring.io\/blog\/2019\/06\/27\/spring-cloud-greenwich-sr2-is-available\"  rel=\"noopener noreferrer\">&gt;&gt; Spring Cloud Greenwich.SR2 is available.<\/a><\/strong> [<span style=\"color: #993300;\">spring.io<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><strong><a href=\"https:\/\/spring.io\/blog\/2019\/06\/26\/spring-cloud-data-flow-2-1-2-ga-and-2-0-3-ga-released\"  rel=\"noopener noreferrer\">&gt;&gt; Spring Cloud Data Flow 2.1.2 GA and 2.0.3 GA Released<\/a><\/strong> [<span style=\"color: #993300;\">spring.io<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><strong><a href=\"https:\/\/spring.io\/blog\/2019\/07\/01\/spring-cloud-open-service-broker-3-0-3-released\"  rel=\"noopener noreferrer\">&gt;&gt; Spring Cloud Open Service Broker 3.0.3 Released<\/a><\/strong> [<span style=\"color: #993300;\">spring.io<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/spring.io\/blog\/2019\/07\/01\/spring-vault-2-1-3-release-available\"  rel=\"noopener noreferrer\"><strong>&gt;&gt; Spring Vault 2.1.3.RELEASE available<\/strong><\/a> [<span style=\"color: #993300;\">spring.io<\/span>]<\/h4>\n<\/li>\n<\/ul>\n<h2><strong>2. Technical and Musing<\/strong><\/h2>\n<h4><a href=\"https:\/\/advancedweb.hu\/2019\/07\/02\/post_signed_urls\/\"  rel=\"noopener noreferrer\"><strong>&gt;&gt; How to use S3 POST signed URLs<\/strong><\/a> [<span style=\"color: #993300;\">advancedweb.hu<\/span>]<\/h4>\n<p>An overview of how to use POST URLs to <strong>get around the shortcomings of their PUT counterparts<\/strong>.<\/p>\n<h4><strong><a href=\"https:\/\/www.mnot.net\/blog\/2019\/06\/11\/endpoint_control\"  rel=\"noopener noreferrer\">&gt;&gt; Moving Control to the Endpoints<\/a><\/strong> [<span style=\"color: #993300;\">mnot.net<\/span>]<\/h4>\n<p>And a look at the <strong>obstacles standing in the way of\u00a0wider adoption of encrypted DNS solutions<\/strong>.<\/p>\n<h4><strong>Also worth reading:<\/strong><\/h4>\n<ul>\n<li>\n<h4><strong><a href=\"https:\/\/www.tomitribe.com\/blog\/tomee-microprofile-on-heroku\/\"  rel=\"noopener noreferrer\">&gt;&gt; TomEE MicroProfile on Heroku<\/a><\/strong> [<span style=\"color: #993300;\">tomitribe.com<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><strong><a href=\"https:\/\/blog.softwaremill.com\/stateful-tests-in-wiremock-fca68f855264\"  rel=\"noopener noreferrer\">&gt;&gt; Stateful tests in Wiremock<\/a><\/strong> [<span style=\"color: #993300;\">blog.softwaremill.com<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><strong><a href=\"https:\/\/blog.scottlogic.com\/2019\/07\/03\/Demystifying-test-automation.html\"  rel=\"noopener noreferrer\">&gt;&gt; Demystifying test automation<\/a><\/strong> [<span style=\"color: #993300;\">blog.scottlogic.com<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><strong><a href=\"https:\/\/blog.codecentric.de\/en\/2019\/07\/solution-factory\/\"  rel=\"noopener noreferrer\">&gt;&gt; Solution Factory \u2013 How to get from idea to product in 9 weeks<\/a><\/strong> [<span style=\"color: #993300;\">blog.codecentric.de<\/span>]<\/h4>\n<\/li>\n<\/ul>\n<h2><strong>3. Comics<\/strong><\/h2>\n<h4><strong><a href=\"https:\/\/dilbert.com\/strip\/2019-07-03\"  rel=\"noopener noreferrer\">&gt;&gt; Measuring Excellence<\/a><\/strong> [<span style=\"color: #993300;\">dilbert.com<\/span>]<\/h4>\n<h4><strong><a href=\"https:\/\/dilbert.com\/strip\/2019-07-01\"  rel=\"noopener noreferrer\">&gt;&gt; When Wally Is Busy<\/a><\/strong> [<span style=\"color: #993300;\">dilbert.com<\/span>]<\/h4>\n<h4><strong><a href=\"https:\/\/dilbert.com\/strip\/2019-06-28\"  rel=\"noopener noreferrer\">&gt;&gt; Zombie Projects<\/a><\/strong> [<span style=\"color: #993300;\">dilbert.com<\/span>]<\/h4>\n<h2><strong>4. Pick of the Week<\/strong><\/h2>\n<p>A cool writeup from Datadog focused on how to how to actually get your log data processed:<\/p>\n<h4><strong><a href=\"https:\/\/www.baeldung.com\/datadog-article-logs\">&gt;&gt; How to collect, customize, and standardize Java logs<\/a> <\/strong>[<span style=\"color: #993300;\">www.datadoghq.com<\/span>]<\/h4>\n<p>&nbsp;<\/p>\n<p>If you&#8217;ve ever worked on any sufficiently large application, you know all too well that&#8217;s not a trivial task.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A quick implementation of an API gateway and service discovery using Spring Cloud Gateway and Spring Cloud Netflix Eureka Server.&nbsp;<a href=\"https:\/\/www.baeldung.com\/java-weekly-288\" title=\"Java Weekly, Issue 288\">&gt;&gt;&gt;<\/a> <a href=\"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/2019\/07\/02\/java-weekly-issue-288\/\">\u95b1\u8b80\u5168\u6587 <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":142,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"slim_seo":[],"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false}}},"categories":[2,315,5969,3665,2149,7],"tags":[398,402,397,414,413,410,409,407,408,11,406,399,400,394,318,375,558,560,555,561,553,554,562,524,10,401,396,381,403,412,411,395,405,404,457,454,316],"jetpack_publicize_connections":[],"aioseo_notices":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p7prtj-CkW","jetpack-related-posts":[],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/wp-json\/wp\/v2\/posts\/147370"}],"collection":[{"href":"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/wp-json\/wp\/v2\/users\/142"}],"replies":[{"embeddable":true,"href":"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/wp-json\/wp\/v2\/comments?post=147370"}],"version-history":[{"count":4,"href":"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/wp-json\/wp\/v2\/posts\/147370\/revisions"}],"predecessor-version":[{"id":158839,"href":"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/wp-json\/wp\/v2\/posts\/147370\/revisions\/158839"}],"wp:attachment":[{"href":"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/wp-json\/wp\/v2\/media?parent=147370"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/wp-json\/wp\/v2\/categories?post=147370"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/wp-json\/wp\/v2\/tags?post=147370"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}