Changelogs nutzen

Ein Changelog, im deutschen auch Änderungsprotokoll genannt, ist ein wichtiger Teil der Softwareentwicklung. Dabei ist das Changelog als solches für den Entwickler eher uninteressant – der Nutzer der Software wird es dem Entwickler allerdings danken, wenn die Software ein gut gepflegtes Changelog ihr eigenes nennt. Mit diesem können Änderungen, Bugfixes und Neuerungen vom Nutzer transparent nachvollzogen werden.

keepachangelog.com

keepachangelog.com

Das Problem an Changelogs ist das es keine wirklich gute Dokumentation gibt, wie ein solches Änderungsprotokoll auszusehen hat. Die Webseite keepachangelog.com möchte dies ändern. Dort gibt es eine Beschreibung wie ein Changelog aussehen sollte und welche Informationen es im Idealfall enthalten sollte. Die Webseite liegt dabei in vielen Sprachen vor, damit die Informationen ein möglichst hohe Verbreitung finden.

Created by Header unter Intellij IDEA deaktivieren

Wenn man in der IDE Intellij IDEA von JetBrains eine neue Java-Klasse erzeugt, so wird ein entsprechender Header erzeugt, aus welchem hervorgeht, wer genau diese Klasse angelegt hat. Zum Abschalten des Verhaltens müssen die Einstellungen geöffnet werden.

Die entsprechenden Einstellungen

Die entsprechenden Einstellungen

In den Einstellungen befindet sich der Punkt File and Code Templates. In diesem Punkt gibt es den Tab Includes. Wird dort der Punkt File Header ausgewählt, kann dieser entsprechend der eigenen Wünsche konfiguriert z.B. komplett entfernt werden.

Alle .git Ordner rekursiv entfernen

Vor kurzem stand ich vor dem Problem, das ich eine Menge Git-Repositories auf der Festplatte hatte und diese um den .git Ordner bereinigen wollte. Unter Linux und Mac OS X kann man sich für diese Aufgabe mit der Kommandozeile behelfen. Dazu wechselt man in den entsprechenden Ordner und gibt im Terminal folgendes ein:

find . | grep .git | xargs rm -rf

Damit werden sämtliche .git Ordner rekursiv gesucht und gelöscht. Was übrig bleibt sind die aktuellen Arbeitskopien der jeweiligen Git-Repositores.

Abhängigkeitsbaum unter Maven anzeigen

Nutzt man Maven in einem Projekt, so wird dieses Projekt eine Reihe von Abhängigkeiten in Form von Bibliotheken haben. Manchmal kommt es vor, das eine Bibliothek in mehreren Versionen von unterschiedlichen Bibliotheken eingebunden wird und das dass Hauptprojekt die falsche Version nutzt. Im Terminal kann man mittels des Befehls:

mvn dependency:tree

den Abhängigkeitsbaum des Projektes anzeigen lassen. Bei kleinere Projekten sieht der Baum dabei noch übersichtlich aus:

[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ netty-example ---
[INFO] de.uulm.vs:netty-example:jar:1.0-SNAPSHOT
[INFO] +- junit:junit:jar:3.8.1:test
[INFO] \- org.jboss.netty:netty:jar:3.2.2.Final:compile

Bei größeren Projekten kann man mit Hilfe des Abhängigkeitsbaum ermitteln, welche Abhängigkeiten woher kommen und eventuelle Probleme mit diesen lösen.

JSON mit GSON schreiben

Wenn man unter Java eine JSON-Datei schreiben möchte, so kann man dies natürlich von Hand tun. Einfacher und effizienter ist es allerdings wenn man das ganze mit der Bibliothek GSON erledigt. Dabei handelt sich um eine von Google entwickelte Bibliothek, welche ursprünglich für den internen Gebrauch bei Google gedacht war. Mit dieser ist neben vielen anderen Dingen unter anderem auch die Serialisierung von Java-Objekten in JSON möglich. Möchte man eine JSON-Datei manuell schreiben so nutzt man den von der Bibliothek bereitgestellten JsonWriter:

JsonWriter writer = new JsonWriter(new OutputStreamWriter(new FileOutputStream(new File("test.json")), StandardCharsets.UTF_8));

writer.setIndent("  "); // definiert die Einrückung

writer.beginObject();
writer.name("test");
writer.value("123");
writer.endObject();

writer.close();

Im ersten Beispiel wird ein einfaches Objekt in eine JSON-Datei geschrieben, was in der Datei schlussendlich so aussieht:

{
  "test": "123"
}

Natürlich ist es auch möglich beliebig viele Objekte in eine Datei zu schreiben und Arrays zu nutzen:

JsonWriter writer = new JsonWriter(new OutputStreamWriter(new FileOutputStream(new File("C:\\Temp\\test.json")), StandardCharsets.UTF_8));

writer.setIndent("  "); // definiert die Einrückung

writer.beginObject();
writer.name("persons");

writer.beginArray();

writer.beginObject();
writer.name("firstname");
writer.value("Hans");
writer.name("lastname");
writer.value("Meiser");
writer.endObject();

writer.beginObject();
writer.name("firstname");
writer.value("Luna");
writer.name("lastname");
writer.value("Bottom");
writer.endObject();

writer.endArray();

writer.endObject();

writer.close();

Heraus kommt dabei eine JSON Datei welche so aussieht:

{
  "persons": [
    {
      "firstname": "Hans",
      "lastname": "Meiser"
    },
    {
      "firstname": "Luna",
      "lastname": "Bottom"
    }
  ]
}

Zu finden ist die Bibliothek auf GitHub. Lizenziert ist die GSON-Bibliothek unter der Apache Lizenz und damit freie Software.