SpringData MongoDB: Beware Of @Id Annotated Fields Of Type BigInteger

Hi recently discovered that a field annotated with @Id behaves differently if it is of type String or BigInteger. Full details here: https://jira.spring.io/browse/DATAMONGO-1445

Edizione Corso Test Driven Development Presso Azienda Settore Finance

Lo Studio Ingegneria Demichelis ha completato l’erogazione di un’altra edizione del corso TDD presso un’importante azienda operante nel settore finance. I numerosi partecipanti hanno dato vita ad un’edizione del corso molto attiva dove con svariati esempi sono stati trasmessi i fondamenti di Test Driven Development con Java.

Corso Test Driven Development Settembre / Ottobre 2015
Corso Test Driven Development Settembre / Ottobre 2015

Logback, encoders instead of patterns.

If you are looking for an example about how to configure logback.xml you may have stumbled upon http://www.mkyong.com/logging/logback-xml-example/ . The post describe a configuration using the “Pattern” tag.

  1. <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
  2.   <layout class="ch.qos.logback.classic.PatternLayout">
  3.     <pattern>
  4.       %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} – %msg%n
  5.     </pattern>
  6.   </layout>
  7. </appender>;

However this configuration has been deprecated in recent logback version, as you can check from the log produced by an application using the latest logback.

10:18:01,156 |-WARN in ch.qos.logback.core.ConsoleAppender[STDOUT] - This appender no longer admits a layout as a sub-component, set an encoder instead.
10:18:01,156 |-WARN in ch.qos.logback.core.ConsoleAppender[STDOUT] - To ensure compatibility, wrapping your layout in LayoutWrappingEncoder.
10:18:01,156 |-WARN in ch.qos.logback.core.ConsoleAppender[STDOUT] - See also http://logback.qos.ch/codes.html#layoutInsteadOfEncoder for details

As the log clearly states, http://logback.qos.ch/codes.html#layoutInsteadOfEncoder gives a quick explanation about how the log should be configured instead.

  1. <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
  2.   <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
  3.     <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} – %msg%n</pattern>
  4.   </encoder>
  5. </appender>

Performance Automated Test as Comparison Test

Lately I was thinking how to teach to use JUnit to execute some performance test. I gave a try to both p-unit and JPerf. Apart the fact they do not seem to be actively maintained any more, they suffered, in my point of view, from a dependency on the system clock. This sounded very strange to me, because measuring performances with the system clock gives results that are hardly generalized to other machines.

So, what could be a solution ? Just use two codes that perform the same task. One is the reference, while the other is the one performances are measured related to the reference.

If you’re interested I would point you to the very detailed Francesco’s post about the matter.

 

Corso Test Driven Development a Milano

Aggiornamento: purtroppo il corso non è stato organizzato a causa dell’insufficiente numero di iscritti.

Mercoledi 16 Maggio terrò un corso sull’utilizzo di Unit Test e sull’adozione di Test Driven Development presso la Fondazione dell’Ordine degli Ingegneri della Provincia di Milano.

La giornata sarà focalizzata su tre argomenti principali:

  • l’analisi di costi e benefici dell’adozione del Test Driven Development basata sullo studio di casi ed esperimenti descritti in letteratura;
  • l’illustrazione delle idee alla base del Test Driven Development e una serie di tutorial che mostrano l’utilizzo di alcuni strumenti standard nello sviluppo di una applicazione;
  • come il Test Driven Development si integri in un contesto aziendale esistente e quali possano essere le criticità nella sua adozione.

La locandina contiene il programma dettagliato e le informazioni sul costo del corso.