In the last few years we used Vert.x to prototype and develop several IoT related projects. Most of the projects use MQTT for lightweight messaging between the connected devices (or things ;)) and the applications. The messaging is handled by an external broker liker Mosquitto.
Instead of using an external broker it’s now possible to connect MQTT enabled devices directly to Vert.x using the Vert.x MQTT server project. Although the project is still in Tech Preview we’ll show you how use it to create a MQTT server within Vert.x. Continue reading
Groovy adds a lot of useful methods to the Java JDK classes. One of them is the
sleep method that is added to all objects. With the
sleep method we can add a pause to our code. The
sleep method accepts a sleep time in milli seconds. The implementation of the method will always wait for he given amount of milli seconds even if interrupted. But we can add a closure as extra argument, which is invoked when the
sleep method is interrupted. We should return
true for the closure to really interrupt, otherwise we use
Grails normally will run any
*Bootstrap classes at startup. A
Bootstrap class has a
destroy closure. The
init closure is invoked during startup and
destroy when the application stops. The class name must end with
Bootstrap and be placed in the
grails-app/init folder. Since Grails 3.2 we can skip the execution of
Bootstrap classes by setting the Java system property
grails.bootstrap.skip with the value
When we use the property syntax of Groovy to get the value for a property, Groovy will actually try to invoke a
get method for that property if it is available. So for example if we have the statement
user.getName() is invoked. If we want to reference a property field directly, so bypassing the
get method, we must place an
@ in front of the property field name. In the previous example we would write
user.@name to get the field value directly. The same rules apply for setting a value for a property with the Groovy syntax. If we write
user.name = 'mrhaki' then actually
user.setName('mrhaki') is invoked. We can use the
@ prefix also to set a value without invoking the
set method for that property. So in our example it would be
user.@name = 'mrhaki' and the
setName method is not used.
In Asciidoctor we can add an anchor with an ID to a section or title and then reference it in a link. The title of the section is used as link text. We can alter that when we define the link, but if we rely on the default behaviour we create a title for our section including the caption label and number. This way the created link points to the correct section and the text contains the caption text and number for that section.
Het is zaterdagochtend: terwijl de meeste developers uitslapen en genieten van hun vrije dag zijn een aantal JDriven collega’s al vroeg in de veren. Op naar Arnhem om kinderen in de leeftijd van 10 tot 14 jaar kennis te laten maken met programmeren. Een groep van 45 kinderen volgen drie verschillende lessen: programmeren in Scratch, python programmeren met Minecraft, zelf je mBot besturen.
De blog Nicole Wedler is een schittenderen samenvatting van hoe deze succesvolle dag is verlopen.
Asciidoctor has some built-in attributes to work with captions for certain content blocks. For example the
table-section attribute defines the caption label (by default Table) that is prefixed to a counter for all tables in the document. When we transform our markup Asciidoctor will insert the text Table followed by the table number. By default the caption for listing blocks is disabled, but we can easily enable it with the
Interesting links for week 42 2016:
Gradle has the built-in task
wrapper to create a Gradle wrapper. The Gradle wrapper can be part of our project so other people can build our project with Gradle, without the need for them to install Gradle. Also if we specify the Gradle wrapper we can make sure the correct Gradle version is used. To specify the version we must use the option
--gradle-version. This version can be different than the Gradle version we use to create the Gradle wrapper. Since Gradle 3.1 we can also specify the distribution type of the Gradle wrapper. We choose between a binary distribution or the all distribution, which contains documentation and source code. Especially IDEs like to have the all distribution type, so they can provide better help in their editors.
With the following
wrapper command we create a wrapper for Gradle 3.1 and the all distribution type. For a binary distribution we either use the value
bin or we don’t specify the option, so Gradle falls back to the default value
$ gradle wrapper --gradle-version 3.1 --distribution-type all
Total time: 1.012 secs
We can check the file
gradle/wrapper/gradle-wrapper.properties and look for the key
distributionUrl. We see the value points to the correct Gradle version and distribution type:
$ more gradle/wrapper/gradle-wrapper.properties
#Mon Sep 19 15:26:27 CEST 2016
Written with Gradle 3.1
Original blog post
In Asciidoctor we can configure syntax highlighting for our source code listings. We can choose from the built-in support for Coderay, Pygments, highlight.js and prettify. The syntax highlighter libraries Coderay and Pygments support extra highlighting of lines, so we can add extra attention to those lines. In this post we see how to use the line highlighting feature in Asciidoctor.