Java Api für den Karotz

Natürlich kann der Karotz auch per Java angesteuert werden.

Mit dieser Karotz Java API kann leicht, innerhalb von ca. 1 Stunde per Java auf den Karotz zugeriffen werden.

Anleitung:

Nach dem download, einen Maven import nach Eclipse machen. Es werden 3 Projekte erstellt.

In der KarotzCLI Klasse den API_DEFAULT und den SECRET_KEY_DEFAULT anpassen.

Die Install ID, Api Key und Secret Key bekommt man im Dashboard angezeigt, nachdem die eigene Anwendung erstellt wurde. Dazu ist es auch notwendig die descriptor.xml Datei entsprechend anzupassen und aus dem karotz/app Verzeichnis in ein ZIP Archive zu packen und hochzuladen. Nur dann erhält man die Anwendungs bzw. die Install ID.

Dann im Karotz Projekt die POM auswählen, und ein install ausführen.
Dies erzeugt im karotz-cli/target Verzeichnis das nötige jar.

In dies Verz. wechseln und auf der Kommandozeile folgendes eingeben:

java -jar karotz-cli-0.1-SNAPSHOT.jar -i Install id

Das Programm startet und der Client Prompt erscheint. Mit dem Kommando: led off „geht“ die Lampe des Karotz aus.

Hier das Log: „Java Api für den Karotz“ weiterlesen

Karotz

Neues Spielzeug aus Frankreich eingetroffen. Ich nenne ihn mal Karotzi.

Hier gibt es nun auf diesen Blog eine neue Kategorie „Karotz“.

Da es auch Apps. für Entwickler gibt wie z.b. Jenkins, aber dazu später mehr, für heute muss ein Foto reichen und ein paar interna: Kamera, Sprachausgabe, Micro, Spracheingabe, RFID Leser, 2 Motoren, LED, Wifi…

20120506-110347.jpg

Welche Java Version gibt es für Mac OS X?

Eine gute Liste der Java Versionen gibt es hier. Oder das Orginal von Apple mit Java Code zur ermittlung der Version.

Die Java Version kann man im Terminal wie folgt ermitteln:


java -version

Es wird dann z.B. geliefert:

java version "1.6.0_29" Java(TM) SE Runtime Environment (build 1.6.0_29-b11-402-11D50)
Java HotSpot(TM) 64-Bit Server VM (build 20.4-b02-402, mixed mode)

Umlaute in Java Programmen

Damit die Umlaute nicht nur auf Windows sondern auch auf dem Mac OS X richtig dargestellt werden, müssen sie als Unicode angegeben werden.


Zeichen Unicode
------------------------------
Ä, ä \u00c4, \u00e4
Ö, ö \u00d6, \u00f6
Ü, ü \u00dc, \u00fc
ß \u00df

Wie wird ein Bildschirmfoto mit dem Mac OS X erstellt?

Die folgenden Tastaturbefehle erzeugen auf dem Desktop bzw. in der Zwischenablage eine png Datei:

Shift + CMD + 3 der ganze Bildschrirm
Shift + CMD + CTRL + 3 der ganze Bildschirm aber in die Zwischenablage
Shift + CMD + 4 dann mit Fadenkreuz einen Bereich auswählen
Shift + CMD + 4 + Leertaste + dann klick auf das offene Fenster

Bei dem letzten Befehl wird jeweils ein Schatten mitgespeichert. Dies kann abgeschaltet werden durch einmalige eingabe in der Konsole mit:

Ausschalten geht dann wieder mit:

Wie deaktiviere ich im Mac OS X das Dashboard?

Wer das Dashboard nicht benötigt, kann es auch deaktivieren. Das spart Ressourcen.

Im Terminal folgenden Befehl eingeben:

defaults write com.apple.dashboard mcx-disabled -boolean YES

und restart des Docks:

killall Dock

Wer es wieder aktivieren will:

defaults write com.apple.dashboard mcx-disabled -boolean NO

und

killall Dock

Jenkins auf iMac Lion installieren

Nach der Installation des binären Package läuft Jenkins nicht unter der URL http://localhost:8080/ und es kommt zu einer 404 Fehlermeldung. Was tun?

1. Einen eigenen jenkins User anlegen mit:

2. Die Datei /Library/LaunchDaemons/org.jenkins-ci.plist
wie folgt in den User ändern:

3. Das Home Verzeichnis /Users/Shared/Jenkins/Home einen neuen Besitzer geben mit:

4. Restarte des Services mit:

5. Im Browser testen ob die Jenkins Gui angezeigt wird mit URL http://localhost:8080/

Anzeigen aller benutzten und ungenutzen Abhängigkeiten mit Maven.

mvn dependency:analyze

Erzeugt z.B.:
...
[INFO] --- maven-dependency-plugin:2.0:analyze (default-cli) @ twsendsms ---
[WARNING] Used undeclared dependencies found:
[WARNING] com.google.gdata:gdata-core-1.0:jar:1.41.5:compile
[WARNING] com.google.gdata:gdata-contacts-3.0:jar:1.41.5:compile
[WARNING] com.google.gdata:gdata-client-1.0:jar:1.41.5:compile
[WARNING] Unused declared dependencies found:
[WARNING] junit:junit:jar:sources:4.7:compile
[WARNING] junit:junit:jar:4.7:test
[WARNING] google-data:google-data:jar:0.0.1:compile
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS

Wie können alle transitiven Abhängigkeiten eines Projektes mit Maven angezeigt werden?

mvn dependency:tree

Ausgabe z.B.:

[INFO] Building twsendsms 0.1.0
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-dependency-plugin:2.0:tree (default-cli) @ twsendsms ---
[INFO] de.wenzlaff.twsendsms:twsendsms:jar:0.1.0
[INFO] +- junit:junit:jar:4.7:test
[INFO] +- commons-codec:commons-codec:jar:1.4:compile
[INFO] +- telekom-sdk-java:java-sdk:jar:3.1.10:compile
[INFO] +- junit:junit:jar:sources:4.7:compile
[INFO] +- log4j:log4j:jar:1.2.4:compile
[INFO] \- google-data:google-data:jar:0.0.1:compile
[INFO] +- com.google.gdata:gdata-contacts-3.0:jar:1.41.5:compile
[INFO] | \- com.google.gdata:gdata-client-1.0:jar:1.41.5:compile
[INFO] \- com.google.gdata:gdata-core-1.0:jar:1.41.5:compile
[INFO] +- com.google.collections:google-collections:jar:1.0-rc1:compile
[INFO] \- com.google.code.findbugs:jsr305:jar:1.3.9:compile
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS

Wie kann Maven 3 auf Mac OS X 10.7.2 Lion installiert werden?

Erst Macports installieren und dann mit

sudo port install maven3

die Installation starten. Dann wie im Installationsfenster beschrieben, maven 3 als default setzen.

Wichtig ist noch, das im ~/.m2/settings.xml das Lokale Repository angegeben wird. Dabei darf das Lokale Verzeichnist nicht
mit ~ gesetzt werden, sondern es muss der komplette Pfad angegeben werden, sonst laufen die Eclipse Plugins nicht richtig.

In

~/.bash_profile

noch:

export M2_HOME=/opt/local/share/java/maven3
export PATH=${M2_HOME}/bin:${PATH}

setzen.

Wie setzt man die JAVA_HOME Variable in Mac OS X Lion 10.7.2

Die Terminal App starten und mit einem Editor die

~/.bash_profile (evl. kontrollieren .profile, .bashrc, /etc/profile )

Datei um den folgenden Eintrag ergänzen:

export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home

Nach dem restart der Terminal App kann es mit:

echo $JAVA_HOME

getestet werden ob der Eintrag richtig gesetzt wurde.

Auch muss jetzt in jedem Verzeichnis mit:

java -version

die Java Version ausgegeben werden.

WPtouch installiert für die opt. fürs IPhone ua.

Soeben WPtouch installiert.

Jetzt ist der Blog optimiert für zugriffe von iPhone, iPod touch, Android, Palm Pre, Samsung touch und BlackBerry Storm/Torch Mobile-Devices.

Also blog.wenzlaff.de ist jetzt optimiert für Mobile-Devices. Man kann auch unten auf der Seite zur orginal Ansicht wechseln. Cool. So sieht die Seite auf meinem IPhone aus:

Der Blog wie er auf dem IPhone aussieht.
IPhone: blog.wenzlaff.de

Was haltet ihr davon?

JDK 7 „Diamanten sind für immer“

In Java 7 gibt es jetzt den „diamond Operator“. Nun müssen bei generics keine Typen doppelt deklariert werden.

Hier ein Beispiel vorher und nachher:

List<Integer> liste = new ArrayList<Integer>(); // vor JRE 7

List<Integer> diamantListe = new ArrayList<>(); // ab JRE 7, ja Diamonds are forever

Java 7 ist DA!

So, jetzt ist Java 7 da. Was braucht man zum ausprobieren?

Eine Eclipse Version die Java 7 unterstützt. Das geht noch nicht mit Helios. Deshalb einen „Nightly Build“ herunterladen.
Dann über Update neue Software über diese URL den JDK 7 patch herunterladen.

Was dann noch fehlt ist das JDK 7 von Oracle.

In den Projekt Einstellungen unter Java Compiler die 1.7 auswählen und nun der erste Test.

In Java 1.7 sind jetzt Unterstriche (_) in Literalen möglich, um besser zu gliedern z.B.

Das Ergebnis:
Telefonnummer 1: 11223344
Telefonnummer 2: 1122.33

Weitere Neuerungen mit Beispielen wie „String in switch“ kommen hier dann demnächst.

Eclipse 3.7 da!

Ab jetzt gibt es eine neue Eclipse 3.7 Version genannt Indigo. Mal sehen was es neues gibt. Download über die Eclipse Seite.

Habe das Java Package geladen, und das erste Projekt ins Git Repo geschoben.
Die Home Variable war nicht gesetzt auf das User Verzeichnis, dann lief es.
Hier die EGit-Anleitung.

Maven, da musste ich in den Settings auch die setting.xml setzen, und im Pom einige Goals auskommentiern, da sie mit der neuen Version nicht zusammen passen.

Das Explorer-Plugin läuft auch unter Indigo, super.

Indigo scheint auch schneller zu laufen 🙂

Bedingungen einkapseln

Da boolesche Logik auf den ersten Blick schwer lesbar und zu verstehen ist,

können (sollten) Funktionen extrahiert werden um eine bessere Lesbarkeit zu erhalten.

Z.B.

if (sollGeloeschtWerden(timer)){…

ist besser als:

if (timer.isGueltige() && !timer.isAktuell() || timer > heute){…

Keine negativen Bedingungen verwenden

In if Abfragen verwendete Bedingungen immer positiv formulieren. Das ist besser zu verstehen.

Z.B.
if ( speicher.isLeer() )

ist besser als
if (!speicher.isNichtLeer() )
da pos. formuliert.

Also müsste die Überschrift „Positive Bedingungen verwenden“ heißen. Das wird dann mal später mal geändert. So heißt es immer, und bleibt für immer 😉

IPhone

Cool, jetzt kann ich auch übers IPhone von überall posten 🙂 Und bearbeiten geht auch 😉 Und noch ein paar Plugins ergänzt ua. den Tweet Button.

Redundanter Kontext in Klassen

Es ist keine Gute Idee, wenn eine Anwendung z.B. „Welt Timer“ heißt,
jede Klasse mit dem Präfix „WT“ zu beginnen.
-In der IDE würde dann, wenn man „W“ und „Completion Key“ eintippt, eine lange Liste aller Namen erscheinen.
-Es währen immer 2 Zeichen redundanter und irrelevanter Code.
-Klassen sollen möglichst kurz sein, solange sie klar sind.