Effizient würfeln

Hin und wieder stolpert der Entwickler bei seiner Suche nach guten Lösungen über interessante Algorithmen, die er eigentlich gerade nicht braucht. In diesem Fall handelt es sich um Voses Algorithmus zum generieren von Zufallswerten anhand einer vorgegebenen Verteilung.

Caffeine – Doping für die Software

Obwohl die Grundregel der Optimierung lautet “Später!”, kann es immer wieder hilfreich sein, einen Cache in die eigene Software einzubauen.

Failsafe – Arbeiten mit unsteten Gesellen

Gerade beim Arbeiten mit entfernten Services ist es ein Ärgernis, wenn diese sich flatterhaft verhalten. Der Programmierer ist ein überschaubares, binäres Verhalten seiner verwendeten Helfer gewohnt, sie liefern das korrekte Ergebnis oder einen Fehler.

Eleganz

Für viele Entwickler und Manager ist das Thema Eleganz und Schönheit in der Software Entwicklung ein untergeordnetes Thema, falls sie sich überhaupt schon einmal Gedanken dazu gemacht haben. Häufig steht man diesen Begriffen mit einem gewissen Misstrauen gegenüber. Nicht umsonst gibt es den fatalen Aufruf “Schöner machen könnt Ihr später!”, dem in der Regel keinerlei Nacharbeiten folgen.

Optional Matchers for Hamcrest

Manchmal benötigt man ein kleines Feature, das so schnell aus den Fingern fließt, dass die Zeit nicht lohnt, nach existierenden Lösungen zu suchen. Wie enttäuscht war ich da, als ich beim Schreiben dieses Beitrags etwas ähnliches auf GitHub fand.

Poking Dead Bodies Anti-Pattern

Zur Entwicklung korrekter Unit Tests gibt es zwei ganz unterschiedliche Motivationen. Die ehrenhafte, der Entwickler möchte seinen Code absichern und die andere, der Programmierer wird zum Schreiben von Tests gezwungen. Im Beitrag Tolle Test habe ich einige Grundsätze für das Schreiben guter Unit Tests und die dabei üblichen Fehler skizziert. In diesem Beitrag möchte ich … Weiterlesen

Enums für die Ewigkeit

EIn schönes Feature der Persistenz unter Java ist das automatische Speichern von Enum-Werten. Wenn nicht weiter spezifiziert, wird der Ordinalwert der Enum Konstante in der Datenbank gespeichert. In unserem Beispiel gäbe es also den Wert 0 für GROUCHO und den Wert 3 für KARL in der Datenbank. Beim Rückmapping wird der Ordinalwert verwendet um wieder … Weiterlesen

Geschmeidige Suche mit Elasticsearch

Vergrößert sich der Datenbestand in der eigenen Anwendung merklich, dann wird es Zeit über eine geeignete Suchlösung nachzudenken. Es gibt eine Menge frei verfügbarer Suchmaschinen, die den Vergleich mit kommerziellen Produkten nicht scheuen müssen. Viele zeigen sich in ihrem Funktionsumfang sogar viel leistungsfähiger. Suchmaschinen liefern sehr schnell Ergebnisse, weil sie nur auf ihrem Index, einem aufbereiteten Extrakt der eigentlichen Daten arbeiten und nicht die gesamte Datenbasis durchsuchen müssen.

Ein alternativer Blick mit Jackson Views

Java Bibliotheken

Liest ein Entwickler seine Source ein zweites Mal, dann findet er mindestens drei Dinge die ihm nicht gefallen. Es gibt immer ein Design-Pattern, das hätte verwendet werden können, eine Bibliothek, die den Code kompakter gestaltet hätte oder ein Algorithmus, der alles vereinfachen würde. Die tatsächliche Implementierung eines Features ergibt sich aus Erfordernissen, Erfahrung und Eingebung des Moments. So kann es immer wieder passieren, dass dem Entwickler die ein oder andere gute Idee nicht in den Sinn kommt.

Catch 304 – Der faule Trick

Beim Experimentieren mit der Spring Boot Rest-Schnittstelle fiel mir wieder einmal auf, dass ich beruflich nur wenige Rest-Services kennengelernt habe, die den HTTP Status Code 304 verwenden. Bei den Projekten, an denen ich teilgenommen habe, gab es tatsächlich nur eine einzige Rest-Schnittstelle, die von diesem Feature gebraucht machte. Der HTTP Status Code 303 NOT Modified … Weiterlesen