JDriven Blog
Java Joy: Turn Stream Into An Array
The Java Stream
API has many useful methods. If we want to transform a Stream
to a Java array we can use the toArray
method. Without an argument the result is an object array (Object[]
), but we can also use an argument to return an array of another type. The easiest way is to use the contructor of the array type we want as method reference. Then the result is an array of the given type with the elements of the stream.
Detect & delete unreferenced code with ArchUnit
When you maintain a large Java project for a longer period, the moments where you’re finally able to remove unused code can be very satisfying. No more upkeep, library version migrations or dark corners to maintain, for code that’s no longer being used. But finding out which parts of the code base can be removed can be a challenge, and tooling in this space seems not to have kept pace with recent development practices in Java. In this post we’ll outline an approach to find unreferenced code with ArchUnit, which allows you to iteratively detect & delete unused code from your Java projects.
Java Joy: Optional orElse orElseGet That Is The Question
The Optional
class has the orElse
and orElseGet
methods to return a value when the Optional
object is empty. This is useful to return a default value for example. But there is a small difference between the two methods. The orElseGet
method needs a Supplier
argument that returns a value of the type of the Optional
value. The Supplier
is only invoked when the Optional
value is empty. The statement passed as argument to the orElse
method is always executed, even when the Optional
value is not empty. Preferrably we should use orElseGet
as it will only invoke statements if needed.
iTerm2
Since I’ve been working on a Mac, I replaced the default terminal with iTerm2. It provides some nice features like searching, autocomplete, or allowing to see images in the terminal. But this one is my favorite one, the undo close tab / session.
Formatting in pre-commit hook
Many projects force their code to be formatted. We use spotless for this purpose. It can check for propper formatting, and also format the code for you. Then build pipeline checks if the code is properly formatted. Failing pipelines due to formatting errors are annoying and cost a lot of time and money. This blog proposes a solution.
How to hack a box - Privilege Escalation
Welcome back to the final blog in de series "How to hack a box"! In this blog we’ll cover the basics of Privilege Escalation and see it in practice on the Blocky box from Hack The Box.
How to hack a box - Enumeration
Welcome back to the blog series about how to hack a box! In the past few blogs we’ve gone through a few steps which gives you an idea of how you can hack a box. We went from the Introduction, to Exploration, to Gaining Access. In this blog, we’ll cover the basics of Enumeration.
Deprecation with Replace hits
When code evolves we usually deprecate old code. Sometimes we come across deprecations without any hints with what to replace it with. Kotlin has a solution for this by allowing you to specify a replace instruction.
Async Retrofit with coroutines and Spring Boot
Spring boot supports a non-blocking programming model with the spring-webflux module. Webflux supports a Reactive API using the Reactor library Flux and Mono API types. This model forces you to write your code in a different style than most people are used to. It generally is much harder to follow and debug.