Comparator – eigene Sortierung, wenn immer ein bestimmter Wert am Anfang stehen soll

Man möchte eine Liste (in dem Beispiel mit Path-Objekten) sortieren. Allerdings soll ein bestimmter Eintrag ganz vorne in der Liste stehen, unabhängig von der Standardsortierung.
Dazu kann man den Comparator implementieren, der die entsprechende Prüfung vornimmt und sonst die Standard compareTo Methode aufruft.

protected Comparator<Path> pathComparator = new Comparator<Path>() {
  @Override
  public int compare(final Path path1, final Path path2) {
    if (path1.toString().endsWith("base.properties")) {
      return -1;
    }
    if (path2.toString().endsWith("base.properties")) {
      return 1;
    }

    return path1.toString().compareTo(path2.toString());
  }
};

Messergebnis senden

Nachdem im letzten Schritt die Temperatur ausgelesen wurde, soll nun die Temperatur von einem Arduino zum anderen gesendet werden. Damit dies alles recht günstig passieren kann, habe ich hier wieder preislich entsprechende Teile gewählt. Die Kommunikation soll erstmal via 433MHz erfolgen (wie bei den billigen schaltbaren Steckdosen).

Hardware-Sendeeinheit

Identisch zum letzten Aufbau, zusätzlich wird noch ein RF Sender (3,49 €) benötigt.

Der Schaltplan wird jetzt um den RF Sender erweitert. Dieser braucht wie bereits der Temperatursensor, nur eine Leitung, neben der Stromversorgung.
Messergebnis senden weiterlesen

Temperatursensor mittels Arduino auslesen

Ziel des Projektes ist es nun, mittels eines einfachen Aufbaus die aktuelle Temperatur zu erfassen und seriell am Rechner auszugeben. Dafür verwenden wir einen Arduino UNO, für den alle benötigten Bibliotheken vorhanden sind, und einen einfachen Sensor.

Hardware

Benötigte Hardware (die Preise dahinter sind von Watterott):

  • Arduino UNO – 23,80 €
  • DS18B20 (OneWire-Temperature Sensor von Dallas) – 2,- €
  • 4,7k Ohm Widerstand
  • 4 Steckkabel
  • Breadboard

Temperatursensor mittels Arduino auslesen weiterlesen

DB2 in der Terminal Session – wechseln der Instanz

Man verbindet sich mit einer Terminal Session zu seinem Datenbank Server und führt das bekannte db2profile aus.
Im nächsten Schritt will man ein einfaches db2 connect to blabla, doch man erhält die Fehlermeldung, dass diese Datenbank unbekannt ist – aber es gibt sie wirklich. Denn leider ist man mit der falschen Instanz verbunden, denn der Server besitzt mehrere Instanzen von DB2 (nennen wir sie mal db2inst1 und db2inst2).

Man erkennt den Fehler, was nun.
DB2 in der Terminal Session – wechseln der Instanz weiterlesen

Gradle einsetzen um Eclipse Projekte zu erstellen

Warum soll man ein Build Tool verwenden, um ein Eclipse Projekt zu erstellen, welches nur einmal erstellt wird? Arbeitet man mit mehreren Entwicklern, die vielleicht auch noch auf mehreren Plattformen (Linux, Windows, Mac OS X) unterwegs sind, möchte man vielleicht nicht die Eclipse Projekt Dateien in seiner Versionskontrolle hinterlegen. Aber man möchte sicherlich, dass jeder, bei der Erstellung des eigenen Eclipse Projektes, die identischen Rahmenbedingungen schafft. Es sollen die gleichen Quell und Ziel Verzeichnisse verwendet werden, die externen Library Versionen sollten auch zueinander passen.

Dies könnte also durchaus einen Sinn ergeben, warum man das Eclipse Projekt nicht nur einmal, sondern eben mehrmals erstellt und vielleicht aktualisiert, wenn neue Bibliotheken in das Projekt eingebunden werden.

Was muss man also machen, um mit Hilfe von Gradle solch eine Unterstützung zu erreichen.
Gradle einsetzen um Eclipse Projekte zu erstellen weiterlesen

Mit DataStage Excel Dateien lesen – Teil 1

Mit DataStage vor Version 9.1, war es nicht möglich, Excel Dateien direkt als Input zu verwenden. Leider verwenden Business Leute recht gerne Excel zur Datenerfassung (Excel ist ein tooles Programm, aber zur Erfassung von Daten, die dann automatisiert verarbeitet werden sollen, naja), weshalb in Daten Migrationsprojekten, oft der Punkt kommt, an dem man eben diese verarbeiten muss.

Eine Abhilfe kann hier die Verwendung eine Java Stage bringen.

Denn mit Java und der Apache POI API, ist es recht einfach Microsoft Office Excel Dateien mit Java auszulesen.
Mit DataStage Excel Dateien lesen – Teil 1 weiterlesen

Gradle mit Ant, am Beispiel von XMLBeans

Wer heute ein Projekt hat, welches komplett auf Ant Skripten basiert, der kann trotzdem über einen Wechsel nach Gradle nachdenken. Zumindest sieht man dies im Gradle Lager so. Gradle hat nämlich Integrationen für Ant und Maven. Daher bekommt man beispielsweise auch die aktuell verwendete Ant Version angezeigt, wenn man gradle -v ausführt.

------------------------------------------------------------
Gradle 1.4
------------------------------------------------------------

Gradle build time: Montag, 28. Januar 2013 03:42 Uhr UTC
Groovy: 1.8.6
Ant: Apache Ant(TM) version 1.8.4 compiled on May 22 2012
Ivy: 2.2.0
JVM: 1.7.0_17 (Oracle Corporation 23.7-b01)
OS: Mac OS X 10.8.3 x86_64

Im Gradle Skript kann man auf Ant Tasks verweisen, bzw. Ant Befehle ausführen. Hierzu ein Beispiel, wie man ein Ant Taskdef in Gradle verwendet, mit Apache XML Beans. XML Beans ist eine JAXB Implementierung.
Gradle mit Ant, am Beispiel von XMLBeans weiterlesen

Java Projekte bauen mit Gradle

Nach dem Apache Ant bisher meine erste Wahl war, wenn es darum ging ein Java Projekt zu bauen, habe ich mich die letzten Tage mit dem Quasi-Nachfolger Gradle beschäftigt.

Es ist wahrscheinlich geschmacksache, ob man eher ein XML oder ein DSL Dokument bevorzugt. Was ich derzeit bei der XML Variante noch etwas besser finde, ist die Möglichkeit vor dem build zu validieren ob die Struktur und die Elemente korrekt sind. Dies sehe ich bei der Gradle DSL noch nicht so einfach, sondern ich seh die Fehler erst, wenn ich den build starte (zumindest habe ich noch keinen Weg gefunden dies während des Tippen zu validieren).

Gradle ist, wie es in einem Buch dazu gelesen habe, die nächste Evolutionsstufe nach Ant und Maven. Die Begründung hierfür liegt daran, dass Gradle ein paar Dinge anders und „einfacher“ macht, als die gewohnten Java Build Tools. Aber um es einfacher zu machen, gibt es Vorgaben, die es bei Ant so nicht gab. Bei Ant war ich, als ersteller für die Struktur des Projektes zuständig. Ich habe definiert wo meine Quellen liegen und wohin die gebauten Artifakte geschrieben werden. Gradle nimmt einem, out of the box, diese Möglichkeit.
Klarer Vorteil, kenn ich ein Gradle Projekt, kenn ich alle. Ich muss mir keine Gedanken machen, wo die Quellen liegen und wohin die gebauten Elemente geschrieben werden. Java Quellen liegen immer unter src/main/java und die compilierten Klassen liegen unter build/classes/main. Mit dieser Vorgabe gelingt es mir mit einer Zeile ein Java build zu erzeugen.
Java Projekte bauen mit Gradle weiterlesen

Umbenennen von wiederkehrenden Dokumenten

Neben dem Papier, welches man via Scanner erfasst, erhält man heute bereits einige Unterlagen direkt in digitaler Form, z.B. die Telefonrechnung oder die Stromrechnung.

Diese Dokumente würde ich als wiederkehrend bezeichnen, da sie in einem regelmäßigen Abstand auf dem Rechner landen. Leider folgen diese Dokumente meist nicht dem eigenen Format für Dateinamen. Wie bereits in Paperless Office beschrieben, habe ich mich für das Format YYYY-MM-DD – absender – beschreibung entschieden.

Daher ist für mich die erste Aufgabe, die Dateien einfach und wiederholbar umzubenennen (man kann es sicherlich jedes mal manuell machen, aber ich will dies ja alles etwas automatisieren, aber eben langsam Schritt für Schritt).
Umbenennen von wiederkehrenden Dokumenten weiterlesen