Ich kann es nicht mehr sehen: Try-Catch-Throw, Try-Catch-Throw. Gecheckte Exceptions sind so gut wie tot, helfen wir bei der schnellen Beerdigung. Java bietet von Haus aus ein kleines aber feines Portfolio an Runtime-Exceptions. Diese decken fast alle Fälle des täglichen Bedarfs ab und belästigen den Aufrufer nicht mit möglichen Fehlern, die er ohnehin nicht ordentlich… Alles schon da: Vielseitige Runtime-Exceptions in Java weiterlesen
Kategorie: Software-Entwicklung
Unvergessen: Nassi-Shneiderman-Diagramm
Entwicklerlegende Robert „Uncle Bob“ Martin nennt in seinem Buch The Clean Coder diverse Grundkonzepte, die ein professioneller Entwickler kennen sollte. Eines aus der Liste fiel mir besonders auf, da ich genau wusste, dass es Teil des Studium war und ich dennoch keine Idee hatte, was es denn ist: Das Nassi-Shneiderman-Diagramm. Es handelt sich dabei um… Unvergessen: Nassi-Shneiderman-Diagramm weiterlesen
Mikro-Webframework Spark
Für Node und Co. sieht man sie überall, aber auch für Java gibt nette Minimal-Frameworks, wenn es um eine kleine Webanwendung geht. Spark ist einer der Vertreter, über den ich gerade gestolpert bin. Nicht ewig mit Umherkonfigurieren, keine neue Template-Sprache lernen, kein stundenlanges API-Lesen. Wenn der Großteil der Webapp ohnehin aus Javascript besteht, ist so… Mikro-Webframework Spark weiterlesen
Googles hauseigener Chuck Norris
Ein netter Artikel auf Businessinsider.com erzählt die Geschichte Jeff Deans, einem Mitarbeiter Googles, der zur Legende (gemacht) wurde und es zu einer eigenen firmeninternen Seite im Stile der Chuck-Norris-Facts brachte. Hier einige frei übersetzte Auszüge: „Jeff kompiliert seinen Code vor dem Comitten, aber nur um Compiler und Linker auf Fehler zu überprüfen.“ „Als er hörte,… Googles hauseigener Chuck Norris weiterlesen
Dateien relativ zur aktuellen Klasse adressieren
Eine der Sachen, die ich mir nie merken kann: Wie adressiere ich eine Datei (z.B. Properties), die neben der zugehörigen Klasse im Paket liegt? Die Meta-Klasse der Klasse enthält den gesuchten Pfad: final File file = new File( MyClass.class.getResource( „myfile“ ).getPath() ); Textdatei in String lesen Will man eine solche Datei lesen und in einen… Dateien relativ zur aktuellen Klasse adressieren weiterlesen
Heterogene Webserver-Umgebung mit Nginx zusammenfassen
Nginx ist ein recht schmaler Webserver, der dank seiner Forward-Proxy-Eigenschaften sehr gut dazu geeignet ist, verschiedene Webserver unter einem Host zusammenzufassen. „Für jeden Job das passende Werkzeug“ führt gern zu folgenden Strukturen auf Server und Entwicklungsumgebung: http://localhost:8080/tomcat-project http://localhost:8081/node-project http://localhost:8082/php-project Ein Albtraum für jeden Ajax-Entwickler. Mit Nginx lassen sich verschiedene Hosts und Ports zusammenfassen.
Probleme mit falschen Liquibase-Checksummen beheben
Liquibase ist eine nette Sache, um die Evolution von Datenbankschemata zu verwalten. Nervig wird es, wenn man während der Entwicklung ein bereits ausgeführtes Changeset noch einmal ändern muss und infolge dessen die Checksummen nicht mehr stimmen: liquibase.exception.ValidationFailedException: Validation Failed: 1 change sets check sum changelog.xml::changeSetId::author is now: 3:eeeedcadbc71ae018f46bd682e9132c7 Die Lösung ist recht einfach: Der betroffene… Probleme mit falschen Liquibase-Checksummen beheben weiterlesen
Nutzereingaben mit dem HTML-Element kbd
Eines der weniger verbreiteten HTML-Elemente ist <kbd>. Laut W3C dient es dazu, den Text anzuzeigen, den der Nutzer eingeben soll: „KBD: Indicates text to be entered by the user.“ Das klingt natürlich wunderbar schwammig, viele Websites nutzen es aber einfach für die Darstellung von einzelnen Tasten, um so Shortcuts darzustellen. Da auch das W3C-Wiki diese Verwendung… Nutzereingaben mit dem HTML-Element kbd weiterlesen
Binding mit Google Guice
Die Projektseite von Google Guice und ihr Wiki empfinde ich als selten hilfreich. Besser macht sich da das zugehörige Javadoc, dass meine Fragen meist direkter zu beantworten wusste. Beispiel Binding-Möglichkeiten Implementierung an Interface binden Üblicherweise bindet man ein Interface an seine Implementierung: bind(Map.class).to(ArrayMap.class);
Java: Nicht-Null- oder Default-Wert
Ein typisch-nerviges Java-Szenario ist das ewige Nullgeprüfe. Oft will man den Wert aus einem Parameter oder aber eine Alternative nutzen, wenn der Parameter null ist. Klassisches Beispiel: Ist ein String null, gib einen leeren String aus, wenn nicht, gib den String selbst aus. Eine einfache Lösung dafür bietet beispielsweise Apache Commons in der Funktionssammlung ObjectUtils.