<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6654159292497062393</id><updated>2025-12-10T16:10:17.905+01:00</updated><category term="spring boot"/><category term="java"/><category term="unit testing"/><category term="tools"/><category term="spring mvc"/><category term="spring"/><category term="spring 4"/><category term="thymeleaf"/><category term="junit 5"/><category term="java 8"/><category term="testing"/><category term="productivity"/><category term="macOS"/><category term="intellij"/><category term="javascript"/><category term="practices"/><category term="selenium"/><category term="spring security"/><category term="angular2"/><category term="assertj"/><category term="docker"/><category term="openshift"/><category term="java 9 and beyond"/><category term="jee"/><category term="jersey"/><category term="jest"/><category term="maven"/><category term="quarkus"/><category term="typescript"/><category term="aws"/><category term="eclipse"/><category term="gradle"/><category term="kanban"/><category term="lombok"/><category term="nodejs"/><category term="playwright"/><category term="quartz"/><category term="spring 5"/><category term="spring data"/><category term="vite"/><category term="vite-node"/><category term="vitest"/><title type='text'>blog.codeleak.pl</title><subtitle type='html'>by Rafał Borowiec</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='https://blog.codeleak.pl/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/6654159292497062393/posts/default'/><link rel='alternate' type='text/html' href='https://blog.codeleak.pl/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='https://www.blogger.com/feeds/6654159292497062393/posts/default?start-index=26&amp;max-results=25'/><author><name>Codeleak.pl</name><uri>http://www.blogger.com/profile/10625443256252405904</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgA9e-NU7ZYhAW5FDXNldcrR0SGsKws2bKhvrpZuJRj9_7jYJgNYhoQwCruHD3rkbNV-h_AVHo-oYgffUSjpjWaE5_RBykjOgBO6p3reVUYgd2Iedli_ADI8Y-1m868kA/s220/2009-07-25_Rafal_Natalia_IMG_4790.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>143</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6654159292497062393.post-350527900573734140</id><published>2023-02-22T21:56:00.002+01:00</published><updated>2023-02-22T22:06:01.465+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="junit 5"/><category scheme="http://www.blogger.com/atom/ns#" term="playwright"/><title type='text'>Playwright meets JUnit 5</title><content type='html'>&lt;p&gt;&lt;code&gt;Playwright&lt;/code&gt; is a &lt;code&gt;Node.js&lt;/code&gt;-based tool for automating browsers. It supports all modern rendering engines including &lt;code&gt;Chromium&lt;/code&gt;, &lt;code&gt;WebKit&lt;/code&gt; and &lt;code&gt;Firefox&lt;/code&gt;. &lt;code&gt;Playwright&lt;/code&gt;  can be used with &lt;code&gt;JavaScript&lt;/code&gt;, &lt;code&gt;TypeScript&lt;/code&gt;, &lt;code&gt;Python&lt;/code&gt;, &lt;code&gt;.NET&lt;/code&gt; and &lt;code&gt;Java&lt;/code&gt;. In this tutorial, we will explore the setup of a test automation project using &lt;code&gt;Playwright&lt;/code&gt; for &lt;code&gt;Java&lt;/code&gt;, &lt;code&gt;JUnit 5&lt;/code&gt; and &lt;code&gt;Gradle&lt;/code&gt;. You will also learn some basics of &lt;code&gt;Playwright&lt;/code&gt; tools like &lt;code&gt;codegen&lt;/code&gt;, &lt;code&gt;Playwright Inspector&lt;/code&gt; and trace viewer. I will also provide some basic setup for &lt;code&gt;Docker&lt;/code&gt; as well as &lt;code&gt;GitHub Actions&lt;/code&gt;. Let&amp;#39;s get started!&lt;/p&gt;
&lt;a href=&quot;https://blog.codeleak.pl/2023/02/playwright-meets-junit-5_01997896446.html#more&quot;&gt;&lt;/a&gt;</content><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6654159292497062393/posts/default/350527900573734140'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/6654159292497062393/posts/default/350527900573734140'/><link rel='alternate' type='text/html' href='https://blog.codeleak.pl/2023/02/playwright-meets-junit-5_01997896446.html' title='Playwright meets JUnit 5'/><author><name>Rafał Borowiec</name><uri>http://www.blogger.com/profile/12244604623936682779</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6654159292497062393.post-2939566479400697801</id><published>2023-02-08T23:27:00.004+01:00</published><updated>2023-02-09T14:45:27.066+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="nodejs"/><category scheme="http://www.blogger.com/atom/ns#" term="typescript"/><category scheme="http://www.blogger.com/atom/ns#" term="vite"/><category scheme="http://www.blogger.com/atom/ns#" term="vite-node"/><category scheme="http://www.blogger.com/atom/ns#" term="vitest"/><title type='text'>Starter template for prototyping and building CLI tools with Node.js and TypeScript</title><content type='html'>&lt;a href=&quot;https://blog.codeleak.pl/2023/02/starter-template-for-prototyping-and_8.html#more&quot;&gt;&lt;/a&gt;</content><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6654159292497062393/posts/default/2939566479400697801'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/6654159292497062393/posts/default/2939566479400697801'/><link rel='alternate' type='text/html' href='https://blog.codeleak.pl/2023/02/starter-template-for-prototyping-and_8.html' title='Starter template for prototyping and building CLI tools with Node.js and TypeScript'/><author><name>Rafał Borowiec</name><uri>http://www.blogger.com/profile/12244604623936682779</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6654159292497062393.post-9077252217507464304</id><published>2023-02-02T01:36:00.007+01:00</published><updated>2023-02-03T01:07:07.200+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="macOS"/><category scheme="http://www.blogger.com/atom/ns#" term="productivity"/><title type='text'>macOS: Insert current date shortcut with `Shortcuts.app`</title><content type='html'>&lt;!-- macOS: Insert current date shortcut with `Shortcuts.app` --&gt;

&lt;p&gt;&lt;code&gt;Shortcuts.app&lt;/code&gt; in macOS is a tool for automating repetitive tasks. It has a user-friendly drag-and-drop interface and
supports tasks such as opening apps, copying/pasting text, and sending messages. In this article, I&amp;#39;ll demonstrate how
to create a shortcut that inserts the current date into any app, which I use to quickly add dates to my notes, emails or Slack messages.&lt;/p&gt;
&lt;a href=&quot;https://blog.codeleak.pl/2023/02/macos-insert-current-date-shortcut-with.html#more&quot;&gt;&lt;/a&gt;</content><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6654159292497062393/posts/default/9077252217507464304'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/6654159292497062393/posts/default/9077252217507464304'/><link rel='alternate' type='text/html' href='https://blog.codeleak.pl/2023/02/macos-insert-current-date-shortcut-with.html' title='macOS: Insert current date shortcut with `Shortcuts.app`'/><author><name>Rafał Borowiec</name><uri>http://www.blogger.com/profile/12244604623936682779</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6654159292497062393.post-2206664453978465276</id><published>2023-01-09T19:49:00.008+01:00</published><updated>2023-09-21T21:43:29.715+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="javascript"/><category scheme="http://www.blogger.com/atom/ns#" term="tools"/><category scheme="http://www.blogger.com/atom/ns#" term="typescript"/><title type='text'>Frontend code analysis with SonarQube</title><content type='html'>&lt;p&gt;&lt;code&gt;SonarQube&lt;/code&gt; is an open-source tool for continuous code quality inspection that analyzes code for defects, vulnerabilities, and code smells. It helps developers and teams to improve the quality of their code by identifying problems early in the development process and providing actionable feedback to fix them.&lt;/p&gt;
&lt;a href=&quot;https://blog.codeleak.pl/2023/01/frontend-code-analysis-with-sonarqube.html#more&quot;&gt;&lt;/a&gt;</content><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6654159292497062393/posts/default/2206664453978465276'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/6654159292497062393/posts/default/2206664453978465276'/><link rel='alternate' type='text/html' href='https://blog.codeleak.pl/2023/01/frontend-code-analysis-with-sonarqube.html' title='Frontend code analysis with SonarQube'/><author><name>Rafał Borowiec</name><uri>http://www.blogger.com/profile/12244604623936682779</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6654159292497062393.post-7025303423611427847</id><published>2023-01-01T23:58:00.004+01:00</published><updated>2023-09-21T21:42:27.097+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="javascript"/><category scheme="http://www.blogger.com/atom/ns#" term="tools"/><category scheme="http://www.blogger.com/atom/ns#" term="typescript"/><title type='text'>Manage multiple Java SDKs with asdf with ease</title><content type='html'>&lt;p&gt;&lt;code&gt;asdf&lt;/code&gt; is a helpful command-line tool that allows you to manage and switch between different versions of programming language runtimes including &lt;code&gt;Java&lt;/code&gt;, &lt;code&gt;Kotlin&lt;/code&gt;, &lt;code&gt;Node.js&lt;/code&gt;, &lt;code&gt;Python&lt;/code&gt; and their associated packages and libraries including &lt;code&gt;Gradle&lt;/code&gt;, &lt;code&gt;Maven&lt;/code&gt;, &lt;code&gt;Yarn&lt;/code&gt;, &lt;code&gt;Spring Boot CLI&lt;/code&gt;. &lt;/p&gt;
&lt;a href=&quot;https://blog.codeleak.pl/2023/01/manage-multiple-java-sdks-with-asdf.html#more&quot;&gt;&lt;/a&gt;</content><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6654159292497062393/posts/default/7025303423611427847'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/6654159292497062393/posts/default/7025303423611427847'/><link rel='alternate' type='text/html' href='https://blog.codeleak.pl/2023/01/manage-multiple-java-sdks-with-asdf.html' title='Manage multiple Java SDKs with asdf with ease'/><author><name>Rafał Borowiec</name><uri>http://www.blogger.com/profile/12244604623936682779</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6654159292497062393.post-3877243579898944721</id><published>2021-12-05T14:01:00.006+01:00</published><updated>2021-12-06T08:54:08.261+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="javascript"/><category scheme="http://www.blogger.com/atom/ns#" term="jest"/><category scheme="http://www.blogger.com/atom/ns#" term="unit testing"/><title type='text'>Parameterized tests in JavaScript with Jest</title><content type='html'>&lt;p&gt;&lt;em&gt;Parameterized&lt;/em&gt; tests are used to test the same code under different conditions. One can set up a test method that retrieves data from a data source. This data source can be a collection of objects, external file or maybe even a database. The general idea is to make it easy to test different conditions with the same test method to avoid duplication and make the code easier to read and maintain.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Jest&lt;/code&gt; has a built-in support for tests parameterized with data table that can be provided either by an &lt;em&gt;array of arrays&lt;/em&gt; or as &lt;em&gt;tagged template literal&lt;/em&gt;.&lt;/p&gt;
&lt;a href=&quot;https://blog.codeleak.pl/2021/12/parameterized-tests-with-jest.html#more&quot;&gt;&lt;/a&gt;</content><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6654159292497062393/posts/default/3877243579898944721'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/6654159292497062393/posts/default/3877243579898944721'/><link rel='alternate' type='text/html' href='https://blog.codeleak.pl/2021/12/parameterized-tests-with-jest.html' title='Parameterized tests in JavaScript with Jest'/><author><name>Rafał Borowiec</name><uri>http://www.blogger.com/profile/12244604623936682779</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6654159292497062393.post-6233730557276716766</id><published>2021-11-19T20:42:00.004+01:00</published><updated>2021-11-19T20:47:33.636+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="javascript"/><category scheme="http://www.blogger.com/atom/ns#" term="jest"/><category scheme="http://www.blogger.com/atom/ns#" term="testing"/><category scheme="http://www.blogger.com/atom/ns#" term="unit testing"/><title type='text'>Testing promise rejection in JavaScript with Jest</title><content type='html'>&lt;a href=&quot;https://blog.codeleak.pl/2021/11/testing-promise-rejection-with-jest.html#more&quot;&gt;&lt;/a&gt;</content><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6654159292497062393/posts/default/6233730557276716766'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/6654159292497062393/posts/default/6233730557276716766'/><link rel='alternate' type='text/html' href='https://blog.codeleak.pl/2021/11/testing-promise-rejection-with-jest.html' title='Testing promise rejection in JavaScript with Jest'/><author><name>Rafał Borowiec</name><uri>http://www.blogger.com/profile/12244604623936682779</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6654159292497062393.post-111952055731093923</id><published>2021-11-19T10:55:00.019+01:00</published><updated>2021-11-19T20:48:01.635+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="javascript"/><category scheme="http://www.blogger.com/atom/ns#" term="jest"/><category scheme="http://www.blogger.com/atom/ns#" term="testing"/><category scheme="http://www.blogger.com/atom/ns#" term="unit testing"/><title type='text'>Testing exceptions in JavaScript with Jest</title><content type='html'>&lt;a href=&quot;https://blog.codeleak.pl/2021/11/testing-exceptions-in-javascript.html#more&quot;&gt;&lt;/a&gt;</content><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6654159292497062393/posts/default/111952055731093923'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/6654159292497062393/posts/default/111952055731093923'/><link rel='alternate' type='text/html' href='https://blog.codeleak.pl/2021/11/testing-exceptions-in-javascript.html' title='Testing exceptions in JavaScript with Jest'/><author><name>Rafał Borowiec</name><uri>http://www.blogger.com/profile/12244604623936682779</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6654159292497062393.post-5154531688826253266</id><published>2020-06-17T12:34:00.003+02:00</published><updated>2020-06-17T12:35:28.104+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="java"/><category scheme="http://www.blogger.com/atom/ns#" term="junit 5"/><category scheme="http://www.blogger.com/atom/ns#" term="maven"/><category scheme="http://www.blogger.com/atom/ns#" term="testing"/><category scheme="http://www.blogger.com/atom/ns#" term="tools"/><title type='text'>Getting started with Github Actions: Run JUnit 5 tests in a Java project with Maven</title><content type='html'>&lt;!-- Getting started with Github Actions: Run JUnit 5 tests in a Java project with Maven --&gt;
&lt;p&gt;Github Actions is a CI/CD service provided by Github and it is free for public repositories. For private repositories, each GitHub account receives a certain amount of free minutes and storage, depending on the product used with the account.&lt;/p&gt;
&lt;p&gt;In this blog post, you will learn how to create a simple workflow for running JUnit 5 tests in a Maven based Java project and how to add a build status badge to a README.md file.&lt;/p&gt;
&lt;a href=&quot;https://blog.codeleak.pl/2020/06/gh-actions-maven-junit5.html#more&quot;&gt;&lt;/a&gt;</content><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6654159292497062393/posts/default/5154531688826253266'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/6654159292497062393/posts/default/5154531688826253266'/><link rel='alternate' type='text/html' href='https://blog.codeleak.pl/2020/06/gh-actions-maven-junit5.html' title='Getting started with Github Actions: Run JUnit 5 tests in a Java project with Maven'/><author><name>Rafał Borowiec</name><uri>http://www.blogger.com/profile/12244604623936682779</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6654159292497062393.post-6400534973658592477</id><published>2020-05-19T21:55:00.002+02:00</published><updated>2023-02-09T23:11:29.007+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="macOS"/><title type='text'>macOS - Notes app tips that may improve your daily workflow</title><content type='html'>&lt;p&gt;After switching from Windows to macOS in 2019 I also changed my default note taking app from OneNote to macOS built-in Notes.app. I wasn&amp;#39;t sure this is the right move, so I switched gradually with carefully selected topics only. But after several weeks of using both OneNote and Notes app I switched fully and after using Notes for several months now I would like to share some of my tips I find useful in my daily workflow.&lt;/p&gt;
&lt;p&gt;Note: This blog post is focused on macOS version of the app as I use it most of the time.&lt;/p&gt;
&lt;a href=&quot;https://blog.codeleak.pl/2020/05/macos-notes-app-tips-that-may-improve.html#more&quot;&gt;&lt;/a&gt;</content><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6654159292497062393/posts/default/6400534973658592477'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/6654159292497062393/posts/default/6400534973658592477'/><link rel='alternate' type='text/html' href='https://blog.codeleak.pl/2020/05/macos-notes-app-tips-that-may-improve.html' title='macOS - Notes app tips that may improve your daily workflow'/><author><name>Rafał Borowiec</name><uri>http://www.blogger.com/profile/12244604623936682779</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6654159292497062393.post-2130462951025289500</id><published>2020-05-16T17:30:00.000+02:00</published><updated>2020-05-16T17:30:30.444+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="java"/><category scheme="http://www.blogger.com/atom/ns#" term="java 9 and beyond"/><title type='text'>Convert time unit to duration in Java</title><content type='html'>&lt;p&gt;&lt;code&gt;java.util.concurrent.TimeUnit&lt;/code&gt; represents time durations in Java at a given unit of granularity and provides utility methods to convert across units. &lt;code&gt;java.util.concurrent.TimeUnit&lt;/code&gt; was introduced back in the old Java days (1.5) but since then it has been extended several times already. In this blog post you will learn how to use &lt;code&gt;java.util.concurrent.TimeUnit&lt;/code&gt; to convert a given &lt;em&gt;time unit&lt;/em&gt; to a &lt;em&gt;duration&lt;/em&gt; .&lt;/p&gt;
&lt;a href=&quot;https://blog.codeleak.pl/2020/05/convert-time-unit-to-duration-in-java.html#more&quot;&gt;&lt;/a&gt;</content><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6654159292497062393/posts/default/2130462951025289500'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/6654159292497062393/posts/default/2130462951025289500'/><link rel='alternate' type='text/html' href='https://blog.codeleak.pl/2020/05/convert-time-unit-to-duration-in-java.html' title='Convert time unit to duration in Java'/><author><name>Rafał Borowiec</name><uri>http://www.blogger.com/profile/12244604623936682779</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6654159292497062393.post-6457912640458631332</id><published>2020-05-14T21:28:00.000+02:00</published><updated>2020-05-16T17:26:08.040+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="java"/><category scheme="http://www.blogger.com/atom/ns#" term="java 9 and beyond"/><title type='text'>Switch as an expression in Java with Lambda-like syntax</title><content type='html'>&lt;!-- Switch as an expression in Java with Lambda-like syntax --&gt;
&lt;p&gt;As of Java 14, the &lt;code&gt;switch&lt;/code&gt; expression has an additional &lt;em&gt;Lambda-like&lt;/em&gt; (&lt;code&gt;case ... -&amp;gt; labels&lt;/code&gt;) syntax and it can be used not only as a statement, but also as an expression that evaluates to a single value.&lt;/p&gt;
&lt;a href=&quot;https://blog.codeleak.pl/2020/05/switch-as-an-expression-in-java.html#more&quot;&gt;&lt;/a&gt;</content><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6654159292497062393/posts/default/6457912640458631332'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/6654159292497062393/posts/default/6457912640458631332'/><link rel='alternate' type='text/html' href='https://blog.codeleak.pl/2020/05/switch-as-an-expression-in-java.html' title='Switch as an expression in Java with Lambda-like syntax'/><author><name>Rafał Borowiec</name><uri>http://www.blogger.com/profile/12244604623936682779</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6654159292497062393.post-8786387563787586436</id><published>2020-05-13T22:21:00.001+02:00</published><updated>2020-05-16T17:26:15.226+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="java"/><category scheme="http://www.blogger.com/atom/ns#" term="java 9 and beyond"/><title type='text'>Record type in Java</title><content type='html'>&lt;!-- Java record types --&gt;
&lt;p&gt;JDK 14, released in March 2020, introduced &lt;em&gt;records&lt;/em&gt; (preview language feature) which provide a compact syntax for declaring classes whose main purpose is to hold data. In &lt;em&gt;records&lt;/em&gt;, all low-level, repetitive and error-prone code is like constructors, accessor and utlity methods such as &lt;code&gt;equals()&lt;/code&gt;, &lt;code&gt;hashCode()&lt;/code&gt;, &lt;code&gt;toString()&lt;/code&gt; are automatically derived based on the &lt;em&gt;record’s&lt;/em&gt; state description.&lt;/p&gt;
&lt;a href=&quot;https://blog.codeleak.pl/2020/05/record-type-in-java.html#more&quot;&gt;&lt;/a&gt;</content><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6654159292497062393/posts/default/8786387563787586436'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/6654159292497062393/posts/default/8786387563787586436'/><link rel='alternate' type='text/html' href='https://blog.codeleak.pl/2020/05/record-type-in-java.html' title='Record type in Java'/><author><name>Rafał Borowiec</name><uri>http://www.blogger.com/profile/12244604623936682779</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6654159292497062393.post-6356822697890441388</id><published>2020-05-06T23:54:00.002+02:00</published><updated>2020-05-07T07:43:56.002+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="macOS"/><category scheme="http://www.blogger.com/atom/ns#" term="tools"/><title type='text'>macOS: sync files between two volumes using launchd and rsync</title><content type='html'>&lt;!DOCTYPE html&gt;
&lt;html&gt;

&lt;head&gt;
  &lt;link rel=&quot;stylesheet&quot; href=&quot;https://stackedit.io/style.css&quot;&gt;
&lt;/head&gt;

&lt;body class=&quot;stackedit&quot;&gt;
  &lt;div class=&quot;stackedit__html&quot;&gt;&lt;!-- macOS: sync files between two volumes using launchd and rsync --&gt;
&lt;p&gt;Backing up and syncing files and directories between drives is pretty common use case for many users. In this quick tutorial you will learn how to use &lt;em&gt;launchd&lt;/em&gt; and &lt;em&gt;rsync&lt;/em&gt; to synchronize files between different volumnes in macOS.&lt;/p&gt;
&lt;/div&gt;&lt;/body&gt;&lt;/html&gt;&lt;/!DOCTYPE&gt;&lt;a href=&quot;https://blog.codeleak.pl/2020/05/macos-sync-files-between-two-volumes.html#more&quot;&gt;&lt;/a&gt;</content><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6654159292497062393/posts/default/6356822697890441388'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/6654159292497062393/posts/default/6356822697890441388'/><link rel='alternate' type='text/html' href='https://blog.codeleak.pl/2020/05/macos-sync-files-between-two-volumes.html' title='macOS: sync files between two volumes using launchd and rsync'/><author><name>Rafał Borowiec</name><uri>http://www.blogger.com/profile/12244604623936682779</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6654159292497062393.post-6489788682181741492</id><published>2020-03-30T23:40:00.000+02:00</published><updated>2020-03-30T23:40:18.296+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="docker"/><category scheme="http://www.blogger.com/atom/ns#" term="spring boot"/><title type='text'>Spring Boot tests with Testcontainers and PostgreSQL, MySQL or MariaDB</title><content type='html'>
&lt;head&gt;
  &lt;link rel=&quot;stylesheet&quot; href=&quot;https://stackedit.io/style.css&quot;&gt;
&lt;/head&gt;

&lt;body class=&quot;stackedit&quot;&gt;
  &lt;div class=&quot;stackedit__html&quot;&gt;&lt;!-- Spring Boot tests with Testcontainers and PostgreSQL, MySQL or MariaDB --&gt;
&lt;p&gt;&lt;a href=&quot;https://www.testcontainers.org&quot; target=&quot;_blank&quot;&gt;Testcontainers&lt;/a&gt; is a Java library that allows integrating Docker containers in JUnit tests with ease. In a &lt;em&gt;Containerized World&lt;/em&gt;, there is little sense to complicate the tests configuration with embedded databases and services. Instead, use run your services in Docker and let the Testcontainers manage this for you.&lt;/p&gt;
&lt;p&gt;In this blog post you will learn how to configure &lt;a href=&quot;https://www.testcontainers.org&quot; target=&quot;_blank&quot;&gt;Testcontainers&lt;/a&gt; to run PostgreSQL, MySQL and MariaDB in Spring Boot 2 integration tests.&lt;/p&gt;
&lt;p&gt;This blog post covers:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Testcontainers configuration (via &lt;strong&gt;JDBC URL Scheme&lt;/strong&gt;) for Spring Boot 2 tests with &lt;em&gt;PostgreSQL&lt;/em&gt;, &lt;em&gt;MySQL&lt;/em&gt; and &lt;em&gt;MariaDB&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Testcontainers in &lt;code&gt;@DataJpaTest&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;&lt;/body&gt;&lt;a href=&quot;https://blog.codeleak.pl/2020/03/spring-boot-tests-with-testcontainers.html#more&quot;&gt;&lt;/a&gt;</content><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6654159292497062393/posts/default/6489788682181741492'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/6654159292497062393/posts/default/6489788682181741492'/><link rel='alternate' type='text/html' href='https://blog.codeleak.pl/2020/03/spring-boot-tests-with-testcontainers.html' title='Spring Boot tests with Testcontainers and PostgreSQL, MySQL or MariaDB'/><author><name>Rafał Borowiec</name><uri>http://www.blogger.com/profile/12244604623936682779</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6654159292497062393.post-2406396920853512054</id><published>2020-03-23T20:38:00.000+01:00</published><updated>2020-03-30T23:42:31.732+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="docker"/><category scheme="http://www.blogger.com/atom/ns#" term="spring boot"/><title type='text'>Docker Compose for Spring Boot application with PostgreSQL</title><content type='html'>&lt;!-- Docker Compose for Spring Boot application with PostgreSQL --&gt;
&lt;p&gt;In this blog post you will learn how to configure Spring Boot application with PostgreSQL for running with Docker Compose.&lt;/p&gt;
&lt;p&gt;This blog post covers:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Spring Boot application &lt;code&gt;Dockerfile&lt;/code&gt; configuration with clean separation between dependencies and resources&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Docker Compose&lt;/code&gt; configuration for running the application with PostgreSQL&lt;/li&gt;
&lt;/ul&gt;
&lt;a href=&quot;https://blog.codeleak.pl/2020/03/spring-boot-docker-compose.html#more&quot;&gt;&lt;/a&gt;</content><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6654159292497062393/posts/default/2406396920853512054'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/6654159292497062393/posts/default/2406396920853512054'/><link rel='alternate' type='text/html' href='https://blog.codeleak.pl/2020/03/spring-boot-docker-compose.html' title='Docker Compose for Spring Boot application with PostgreSQL'/><author><name>Rafał Borowiec</name><uri>http://www.blogger.com/profile/12244604623936682779</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6654159292497062393.post-1181974967583967166</id><published>2020-03-15T21:45:00.000+01:00</published><updated>2020-03-15T22:09:46.350+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="aws"/><category scheme="http://www.blogger.com/atom/ns#" term="quarkus"/><title type='text'>Deploy Quarkus application to AWS Elastic Beanstalk</title><content type='html'>&lt;!DOCTYPE html&gt;
&lt;html&gt;

&lt;head&gt;
  &lt;link rel=&quot;stylesheet&quot; href=&quot;https://stackedit.io/style.css&quot;&gt;
&lt;/head&gt;

&lt;body class=&quot;stackedit&quot;&gt;
  &lt;div class=&quot;stackedit__html&quot;&gt;&lt;!-- Deploy Quarkus application to AWS Elastic Beanstalk --&gt;
&lt;p&gt;Elastic Beanstalk allows deploying and managing applications in the AWS Cloud without having to learn about the infrastructure that runs those applications.&lt;/p&gt;
&lt;p&gt;With Elastic Beanstalk you can run a website, web application, or web API that serves HTTP requests but you can also run a worker applications for running long tasks. The Elastic Beanstalk supports several preconfigured platforms including &lt;code&gt;Go&lt;/code&gt;, &lt;code&gt;.NET&lt;/code&gt; or &lt;code&gt;Java&lt;/code&gt; (Java 8 only) but also generic &lt;code&gt;Docker&lt;/code&gt; platform.&lt;/p&gt;
&lt;p&gt;You simply upload your application with &lt;code&gt;AWS CLI&lt;/code&gt;, &lt;code&gt;AWS EB CLI&lt;/code&gt; or with the &lt;code&gt;Elastic Beanstack console&lt;/code&gt;, and Elastic Beanstalk automatically handles the rest.&lt;/p&gt;
&lt;p&gt;In this blog post you will learn how to launch single container &lt;code&gt;Docker&lt;/code&gt; environment with Quarkus based application on Elastic Beanstalk.&lt;/p&gt;
&lt;/div&gt;&lt;/body&gt;&lt;/html&gt;&lt;/!DOCTYPE&gt;&lt;a href=&quot;https://blog.codeleak.pl/2020/03/deploy-quarkus-application-to-elastic-beanstalk.html#more&quot;&gt;&lt;/a&gt;</content><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6654159292497062393/posts/default/1181974967583967166'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/6654159292497062393/posts/default/1181974967583967166'/><link rel='alternate' type='text/html' href='https://blog.codeleak.pl/2020/03/deploy-quarkus-application-to-elastic-beanstalk.html' title='Deploy Quarkus application to AWS Elastic Beanstalk'/><author><name>Rafał Borowiec</name><uri>http://www.blogger.com/profile/12244604623936682779</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6654159292497062393.post-3137041858151777699</id><published>2020-02-27T22:10:00.001+01:00</published><updated>2020-03-15T22:09:25.992+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="docker"/><category scheme="http://www.blogger.com/atom/ns#" term="quarkus"/><category scheme="http://www.blogger.com/atom/ns#" term="testing"/><title type='text'>Quarkus tests with Testcontainers and PostgreSQL</title><content type='html'>&lt;!DOCTYPE html&gt;
&lt;html&gt;

&lt;head&gt;
  &lt;link rel=&quot;stylesheet&quot; href=&quot;https://stackedit.io/style.css&quot;&gt;
&lt;/head&gt;

&lt;body class=&quot;stackedit&quot;&gt;
  &lt;div class=&quot;stackedit__html&quot;&gt;&lt;!-- Testcontainers with Quarkus tests --&gt;
&lt;p&gt;&lt;a href=&quot;https://www.testcontainers.org&quot; target=&quot;_blank&quot;&gt;Testcontainers&lt;/a&gt; is a Java library that allows integrating Docker containers in JUnit tests with ease. In a &lt;em&gt;Containerized World&lt;/em&gt;, there is little sense to complicate the tests configuration with embedded databases and services. Instead, use run your services in Docker and let the Testcontainers manage this for you. So if you are need Redis, MongoDB or PostgreSQL in your tests - Testcontainers may become your good friend.&lt;/p&gt;
&lt;p&gt;In this blog post you will learn how to configure Testcontainers to manage PostgreSQL instance in Quarkus integration tests.&lt;/p&gt;
&lt;/div&gt;&lt;/body&gt;&lt;/html&gt;&lt;/!DOCTYPE&gt;&lt;a href=&quot;https://blog.codeleak.pl/2020/02/testcontainers-with-quarkus-tests.html#more&quot;&gt;&lt;/a&gt;</content><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6654159292497062393/posts/default/3137041858151777699'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/6654159292497062393/posts/default/3137041858151777699'/><link rel='alternate' type='text/html' href='https://blog.codeleak.pl/2020/02/testcontainers-with-quarkus-tests.html' title='Quarkus tests with Testcontainers and PostgreSQL'/><author><name>Rafał Borowiec</name><uri>http://www.blogger.com/profile/12244604623936682779</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6654159292497062393.post-6285064299680942555</id><published>2020-02-24T23:30:00.000+01:00</published><updated>2020-03-15T22:10:28.724+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="docker"/><category scheme="http://www.blogger.com/atom/ns#" term="jee"/><category scheme="http://www.blogger.com/atom/ns#" term="quarkus"/><title type='text'>Getting started with Quarkus - build PetClinic REST API</title><content type='html'>&lt;!DOCTYPE html&gt;
&lt;html&gt;

&lt;head&gt;
  &lt;link rel=&quot;stylesheet&quot; href=&quot;https://stackedit.io/style.css&quot;&gt;
&lt;/head&gt;

&lt;body class=&quot;stackedit&quot;&gt;
  &lt;div class=&quot;stackedit__html&quot;&gt;&lt;!-- Getting started with Quarkus to build REST API --&gt;
&lt;p&gt;Quarkus - &lt;em&gt;A Kubernetes Native Java stack tailored for OpenJDK HotSpot and GraalVM, crafted from the best of breed Java libraries and standards.&lt;/em&gt; - is a  container-first framework optimized for fast boot times and low memory consumption. The framework is build on top of many popular Java libraries and it provides support for building standard &lt;em&gt;REST&lt;/em&gt; as well as &lt;em&gt;reactive&lt;/em&gt; and &lt;em&gt;message-driven&lt;/em&gt; microservices. Thanks to the fast startup times and low memory usage Quarkus can also be used to implement functions in serverless environment. Quarkus gives a lot of possibilities to develop apps faster thanks to unified configuration, amazing live reloading features and tooling support.&lt;/p&gt;
&lt;p&gt;Learn how to get started with Quarkus and build a PetClinic REST API.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;This blog post covers:&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Requirements for development environment&lt;/li&gt;
&lt;li&gt;Creating new project&lt;/li&gt;
&lt;li&gt;Developing, building and running the application with Java 11&lt;/li&gt;
&lt;li&gt;Datasource configuration with Postgres and Flyway&lt;/li&gt;
&lt;li&gt;CRUD service with pagination&lt;/li&gt;
&lt;li&gt;Creating integration tests&lt;/li&gt;
&lt;li&gt;Live reload and debugging&lt;/li&gt;
&lt;li&gt;Dockerizing the application (both native and non-native)&lt;/li&gt;
&lt;li&gt;Deploying the application to Elastic Beanstalk&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;&lt;/body&gt;&lt;/html&gt;&lt;/!DOCTYPE&gt;&lt;a href=&quot;https://blog.codeleak.pl/2020/02/getting-started-with-quarkus.html#more&quot;&gt;&lt;/a&gt;</content><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6654159292497062393/posts/default/6285064299680942555'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/6654159292497062393/posts/default/6285064299680942555'/><link rel='alternate' type='text/html' href='https://blog.codeleak.pl/2020/02/getting-started-with-quarkus.html' title='Getting started with Quarkus - build PetClinic REST API'/><author><name>Rafał Borowiec</name><uri>http://www.blogger.com/profile/12244604623936682779</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6654159292497062393.post-3604574851786403200</id><published>2020-02-03T21:45:00.001+01:00</published><updated>2020-02-03T21:45:46.001+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="java"/><category scheme="http://www.blogger.com/atom/ns#" term="tools"/><title type='text'>Set Visual Studio Code as default editor in jshell</title><content type='html'>&lt;!-- Set Visual Studio Code as default editor in jshell --&gt;
&lt;p&gt;Java Shell (&lt;em&gt;jshell&lt;/em&gt;) is an interactive tool for learning and prototyping in Java. It was introduced with Java 9 and since then I use it ocassionally either for some quick prototyping, during presentations or simply to verify new features in the Java language. Since &lt;em&gt;jshell&lt;/em&gt; is a command line tool (with basic intellisense) editing files in &lt;em&gt;jshell&lt;/em&gt; is not the best expierience. Fortunatelly, &lt;em&gt;jshell&lt;/em&gt; allows changing the default editor and set it to the one of your choice, including &lt;em&gt;Visual Studio Code&lt;/em&gt;, &lt;em&gt;Atom&lt;/em&gt; or &lt;em&gt;Sublime&lt;/em&gt;.&lt;/p&gt;
&lt;a href=&quot;https://blog.codeleak.pl/2020/02/visual-studio-code-in-jshell.html#more&quot;&gt;&lt;/a&gt;</content><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6654159292497062393/posts/default/3604574851786403200'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/6654159292497062393/posts/default/3604574851786403200'/><link rel='alternate' type='text/html' href='https://blog.codeleak.pl/2020/02/visual-studio-code-in-jshell.html' title='Set Visual Studio Code as default editor in jshell'/><author><name>Rafał Borowiec</name><uri>http://www.blogger.com/profile/12244604623936682779</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6654159292497062393.post-7845816115148546210</id><published>2020-01-05T14:07:00.017+01:00</published><updated>2024-07-02T23:09:33.641+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="macOS"/><category scheme="http://www.blogger.com/atom/ns#" term="tools"/><title type='text'>macOS: essential tools for a developer in 2024</title><content type='html'>&lt;p&gt;Are you considering macOS as your next operating system? Are switching from &lt;strong&gt;Windows&lt;/strong&gt; to &lt;strong&gt;macOS&lt;/strong&gt;? Do you want to develop in &lt;code&gt;Java&lt;/code&gt; on &lt;strong&gt;macOS&lt;/strong&gt;? Or maybe you are looking for tools to help you to be more productive?&lt;/p&gt;
&lt;p&gt;Read about tools that are essential to me (after switching from &lt;strong&gt;Windows&lt;/strong&gt; to &lt;strong&gt;macOS&lt;/strong&gt;).&lt;/p&gt;
&lt;a href=&quot;https://blog.codeleak.pl/2020/01/macos-essential-tools-for-java-developer.html#more&quot;&gt;&lt;/a&gt;</content><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6654159292497062393/posts/default/7845816115148546210'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/6654159292497062393/posts/default/7845816115148546210'/><link rel='alternate' type='text/html' href='https://blog.codeleak.pl/2020/01/macos-essential-tools-for-java-developer.html' title='macOS: essential tools for a developer in 2024'/><author><name>Rafał Borowiec</name><uri>http://www.blogger.com/profile/12244604623936682779</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6654159292497062393.post-6103360167718245141</id><published>2020-01-05T13:57:00.002+01:00</published><updated>2023-02-09T19:40:40.218+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="tools"/><title type='text'>Manage multiple Java SDKs with SDKMAN! with ease</title><content type='html'>&lt;p&gt;&lt;em&gt;SDKMAN!&lt;/em&gt; is a convenient tool for managing parallel versions of multiple &lt;em&gt;Software Development Kits&lt;/em&gt;. The tool is especially useful for Java developers as it supports SDKs for the JVM such as Java, Groovy, Scala, Kotlin and Ceylon. Gradle, Maven, Spring Boot and many others are also supported.&lt;/p&gt;
&lt;a href=&quot;https://blog.codeleak.pl/2020/01/manage-multiple-java-sdks-with-sdkman.html#more&quot;&gt;&lt;/a&gt;</content><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6654159292497062393/posts/default/6103360167718245141'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/6654159292497062393/posts/default/6103360167718245141'/><link rel='alternate' type='text/html' href='https://blog.codeleak.pl/2020/01/manage-multiple-java-sdks-with-sdkman.html' title='Manage multiple Java SDKs with SDKMAN! with ease'/><author><name>Rafał Borowiec</name><uri>http://www.blogger.com/profile/12244604623936682779</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6654159292497062393.post-4603828442004319626</id><published>2019-12-03T22:30:00.001+01:00</published><updated>2023-02-09T22:47:21.301+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="junit 5"/><category scheme="http://www.blogger.com/atom/ns#" term="selenium"/><title type='text'>JUnit 5 and Selenium - improving project configuration</title><content type='html'>&lt;p&gt;Selenium is a set of tools and libraries supporting browser automation and it is mainly used for web applications testing. One of the Selenium&amp;#39;s components is a Selenium WebDriver that provides client library, the JSON wire protocol (protocol to communicate with the browser drivers) and browser drivers. One of the main advantages of Selenium WebDriver is that it supported by all major programming languages and it can run on all major operating systems.&lt;/p&gt;
&lt;p&gt;In this part of the &lt;em&gt;JUnit 5 with Selenium WebDriver - Tutorial&lt;/em&gt; you will learn about additional capabilities of JUnit 5 that will help you in decreasing the execution time of your tests by running tests in parallel, configuring the order of your tests and creating parameterized tests.&lt;/p&gt;
&lt;p&gt;You will also learn how to take advantage of Selenium Jupiter features like tests execution configuration through system properties, single browser session tests to speed up tests execution or  screenshots taking in your tests. Finally, you will learn how to add AssertJ library to your project.&lt;/p&gt;
&lt;a href=&quot;https://blog.codeleak.pl/2019/12/junit-5-and-selenium-improving-project.html#more&quot;&gt;&lt;/a&gt;</content><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6654159292497062393/posts/default/4603828442004319626'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/6654159292497062393/posts/default/4603828442004319626'/><link rel='alternate' type='text/html' href='https://blog.codeleak.pl/2019/12/junit-5-and-selenium-improving-project.html' title='JUnit 5 and Selenium - improving project configuration'/><author><name>Rafał Borowiec</name><uri>http://www.blogger.com/profile/12244604623936682779</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-6654159292497062393.post-8766080852839771164</id><published>2019-10-12T10:44:00.000+02:00</published><updated>2020-01-08T22:27:24.030+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="macOS"/><category scheme="http://www.blogger.com/atom/ns#" term="productivity"/><title type='text'>macOS: Preview source code files in Finder with Quick Look plugins</title><content type='html'>&lt;!--&amp;#10;macOS: Preview source code files in Finder with Quick Look plugins&amp;#10;--&gt;
&lt;p&gt;macOS Finder offers a possibility to preview the files of any type without opening them with &lt;em&gt;Quick Look&lt;/em&gt;. By default &lt;em&gt;Quick Look&lt;/em&gt; &lt;a href=&quot;https://en.wikipedia.org/wiki/Quick_Look#Supported_file_types_by_default&quot;&gt;supports&lt;/a&gt; most commonly used file formats which may not be enough if you are a developer and you want to preview source code files i.e. Java or Python or any other un-common file types.&lt;/p&gt;
&lt;a href=&quot;https://blog.codeleak.pl/2019/10/macos-preview-source-code-files.html#more&quot;&gt;&lt;/a&gt;</content><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6654159292497062393/posts/default/8766080852839771164'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/6654159292497062393/posts/default/8766080852839771164'/><link rel='alternate' type='text/html' href='https://blog.codeleak.pl/2019/10/macos-preview-source-code-files.html' title='macOS: Preview source code files in Finder with Quick Look plugins'/><author><name>Rafał Borowiec</name><uri>http://www.blogger.com/profile/12244604623936682779</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUTDaGP5oGXhpDfifqtu9A_2WJ05038F17mr64ZzXf_wBWadklBzhxjqRsSjGlbDSkrKjYf_YZaOUsWbNTA5wf31cR4Q09OMAHEhDx1VBxPPeGYIrkAXypseFkcvMEYF1woj6Iq7gU6ya0/s72-c/1-ql-open-with.png" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-6654159292497062393.post-3326413278961396993</id><published>2019-10-08T22:19:00.003+02:00</published><updated>2023-02-09T22:44:39.557+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="junit 5"/><category scheme="http://www.blogger.com/atom/ns#" term="selenium"/><title type='text'>JUnit 5 and Selenium - Using Selenium built-in `PageFactory` to implement Page Object Pattern</title><content type='html'>&lt;p&gt;Selenium is a set of tools and libraries supporting browser automation and it is mainly used for web applications testing. One of the Selenium&amp;#39;s components is a Selenium WebDriver that provides client library, the JSON wire protocol (protocol to communicate with the browser drivers) and browser drivers. One of the main advantages of Selenium WebDriver is that it supported by all major programming languages and it can run on all major operating systems.&lt;/p&gt;
&lt;p&gt;In this part of the &lt;em&gt;JUnit 5 with Selenium WebDriver - Tutorial&lt;/em&gt; I will go though the implementation of Page Object pattern with Selenium&amp;#39;s built-in PageFactory support class. &lt;code&gt;PageFactory&lt;/code&gt; provides mechanism to initialize any Page Object that declares &lt;code&gt;WebElement&lt;/code&gt; or &lt;code&gt;List&amp;lt;WebElement&amp;gt;&lt;/code&gt; fields annotated with &lt;code&gt;@FindBy&lt;/code&gt; annotation.&lt;/p&gt;
&lt;a href=&quot;https://blog.codeleak.pl/2019/10/junit-5-and-selenium-using-selenium.html#more&quot;&gt;&lt;/a&gt;</content><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/6654159292497062393/posts/default/3326413278961396993'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/6654159292497062393/posts/default/3326413278961396993'/><link rel='alternate' type='text/html' href='https://blog.codeleak.pl/2019/10/junit-5-and-selenium-using-selenium.html' title='JUnit 5 and Selenium - Using Selenium built-in `PageFactory` to implement Page Object Pattern'/><author><name>Rafał Borowiec</name><uri>http://www.blogger.com/profile/12244604623936682779</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry></feed>