Visual Studio Code – interessanter Editor

vscodeWer kennt das nicht. Man möchte etwas programmieren und benötigt dazu einen guten Editor für Syntax Highlighting und im Idealfall sogar Autocompletion. Leute die unter Windows auf .NET entwickeln greifen dazu oft zu Visual Studio (Express oder andere Editionen). Für normale Dinge reicht oft auch Notepad++, er leistet einen guten Beitrag zum Syntax Highlighting.

Visual Studio Code will aber noch viel einfacher sein. Mit einer Ordnerliste, Git Support, Syntax Highlighting und die gewohnte IntelliSense (Autocompletion) Technologie. Ich muss sagen: Es sieht schon sehr nett aus, aber die Version 0.9.2 ist noch nicht komplett bugfrei. Mir ist der Editor beim Öffnen eines ganzen Ordner (xtcommerce Installation) auch schon mal abgestürzt.
Ansonsten ist es aber schon ganz gut brauchbar und auf jeden Fall einen Versuch wert.

//Update: 20.11.2015 Um Visual Studio Code unter Linux zum Laufen zu bekommen, hilft es folgende Anleitung zu benutzen. Der Link zur ZIP Datei für Linux ändert sich scheinbar immer mal wieder. Daher am besten hier nachschauen.

Arduino: Keypad Tasten zuordnen

Wer einmal mit einem Keypad gearbeitet hat, kennt die Situation vielleicht: Man hat einige Pins, aber weiß nicht, wo man welche Pins einstecken soll. Dabei gibt es eine relativ einfach Lösung um die Zuordnung der Tasten im Code anzupassen. Man lädt sich folgenden Code in Arduino rein. Öffnet später dann den Serial Monitor und drückt eine Taste. Nun sieht man welche Taste man angezeigt bekommt. Stimmt diese nicht mit der gedrückten Taste überein, muss die Taste an der entsprechenden Stelle im „keys[ROWS][COLS]“ Array angepasst werden.
Ist man mit allen Tasten durch, lädt man den aktualisierten Code nochmal auf den Arduino und prüft erneut die Angabe.

Die Keypad Lib ist die Standardlib von Arduino. Wenn ihr irgendwann mal etwas mit dem offiziellen GSM Modul von Arduino und einem Keypad machen wollt, sei dieser Thread empfohlen. Dann sind nämlich Anpassungen an der Keypad Lib notwendig.

#include 
#include 
#include 

//Keypad Deklaration
const byte ROWS = 4; 
const byte COLS = 4; 
char keys[ROWS][COLS] = {
  {'D','C','B','A'},
  {'#','9','6','3'},
  {'0','8','5','2'},
  {'*','7','4','1'}
};

//Keypad PINS.
byte rowPins[ROWS] = {2,3,4,5}; //connect to row pinouts 
byte colPins[COLS] = {6,7,8,9}; //connect to column pinouts
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

void Keyeingabe()
{
    char key = keypad.waitForKey();    
    Serial.println(key);
}

void setup() 
{
    Serial.begin(9600); //Für Debugging notwendig.
    
}

void loop() 
{   
    Keyeingabe();
}

//Hinweis: Wegen HTML muss die letzte Zeile und die #include Zeilen beim Kopieren angepasst werden. Der Code zeigt aber schon mal schön, wie es funktioniert. :)

Java ist kacke!

Dieser Beitrag ist sicherlich etwas überspitzt und rein subjektiv! :D

Ich bin auch kein Profi Entwickler, sondern hauptsächlich Administrator. Aber ich habe im Laufe der Jahre doch einiges an Code in .NET (früher VB.NET jetzt C#) geschrieben um beispielsweise ein paar Synchronisierungen im Geschäft zu realisieren und aktuell ein paar kleinere Arduino Projekte in C (oder wie auch immer dieser Dialekt heißt).

1. Die Runtimes für Java haben öfters Sicherheitslücken und musste bis vor kurzem unter Windows explizit mit angemeldetem Admin Benutzer upgedatet werden. Seid Version 1.8 hat Oracle es immerhin geschafft, dass man auch mithilfe der UAC das Java Update installieren kann.
Zur Verteidigung: .NET hat auch oft Lücken und muss aktualisiert werden. Das geschieht aber automatisch über Windows Update und muss daher nicht explizit angestoßen werden.

2. In .NET kann ich relativ einfach eine DateTime Variable erstellen und hinterher mit .addDays(7) beispielsweise 7 Tage zum Datum hinzufügen. In Java geht das auch irgendwie, aber relativ kompliziert und die Funktion heißt nicht besonders einleuchtend.

3. In .NET importiere ich System und habe damit relativ alle Funktionen, die man so braucht. In Java muss ich für jeden Furz eine eigene Klasse importieren oder die Funktion komplett ausschreiben.

Console.WriteLine(); vs. System.out.println();

4. Auch sonst sind viele Befehle nicht unbedingt einleuchtend. Beispielsweise im Bereich H2 Datenbank und resultSet().

Und warum schreibst du gerade Code in Java?

Ganz einfach: Ich muss gerade eine Synchronisierung zwischen unserer Warenwirtschaft und dem Logistikprogramm eines großen Logistikdienstleisters schreiben. Gezwungenermaßen soll ich eben auch sicherstellen, dass automatisch nach einer bestimmten Zeit bestimmte Aufträge im Logistikprogramm gelöscht werden. Da die Datenbank auf H2 basiert und die Klassen für H2 und C# scheinbar alle nicht wirklich bei mir funktionieren, bin ich eben doch zu Java gegangen und hab mir kurzerhand ein Beispiel zurechtgestutzt, damit die SQL Abfrage gemacht werden kann. Mittlerweile funktioniert es auch einfach, aber als dauerhafte Sprache mag ich das einfach nicht!
.NET mag ja auch viele Nachteile haben, aber bisher sind mir diese noch nicht so gravierend aufgefallen.

Leider hat mein nächstes Synchronisierungsprojekt auch hauptsächlich eine Java ähnliche Sprache um dort die Anpassung der Cloud Oberfläche zu machen. Aber dort scheinen sie wenigstens die gröbsten Schnitzer aus Java weggelassen zu haben. Dafür ist dort testgetriebene Entwicklung vorgeschrieben. Wenn man sich aber dran gewöhnt hat, ist es wirklich angenehm und tatsächlich sehr sinnvoll!
Die eigentliche Synchronisierung kann ich dann aber wenigstens wieder in .NET schreiben, nachdem ich dort nach langem Suchen ein schönes Framework gefunden habe.

Der einzig wirklich nette Vorteil von Java: Es ist tatsächlich recht plattformunabhängig. Mit Minecraft hat man da zum Beispiel ein recht nettes Spiel. ;)

Sublime Text 2 mit Stino und Arduino 1.0.5 für Arduino Entwicklung

Anfang diesen Jahres hab ich mit der Arduino Programmierung bzw. Experimentieren angefangen. Was mich immer gestört hat, war diese hässliche Standard Arduino IDE. Man bekommt sie zwar kostenlos und kann damit auch schon alle Standard Boards und weitere Boards ansteuern und den Code dafür kompilieren. Aber sie hat nen weißen Hintergrund, keine Autoformatierung und vor allem keine Autocompletion. Wer unter Windows mit Visual Studio entwickelt weiß diese Autocompletion einfach zu schätzen. Das ist goldwert.

Damals hat ich auch schon probiert meine alte Sublime Text Lizenz (die mit 70$ nicht günstig ist) wieder auf meinem Laptop zum Laufen zu bekommen. Das hat auch wunderbar geklappt. Aber das tolle Stino Plugin konnte ich leider nicht zum Kompilieren überreden.
Deshalb bin ich damals doch auf ArduIDE hängen geblieben, nachdem ich vieles ausprobiert habe und irgendwie nichts wirklich funktioniert hat. Damit hab ich dann in letzter Zeit meinen ganzen Code für die Türöffnung geschrieben. Das hat gut funktioniert, das Syntax Highlighting ist schon besser. Aber das Plugin wird eben auch nicht weiter entwickelt und mir selbst fehlt die Muse und das Know How.

Dann hat Herr monkel neulich erwähnt, dass er gerade auch Sublime Text verwendet. Da morgen die GPN beginnt und ich dort ein bisschen coden möchte, hab ich eben mal wieder eine neue SIM Karte und das GSM Modem ausprobieren wollen.
Und ich hab nochmal Stino ausprobiert. Es kam immer der beknackte Error 127 und die Google Ergebnisse haben sich immer auf Mac OS bezogen. Da kann ich mit Xubuntu 14.04 einpacken. :(

Aber nun hab ich die Lösung gefunden:

1. Sublime Text 2 installieren. Da gibt es hier diesen Blogpost dazu.

sudo add-apt-repository ppa:webupd8team/sublime-text-2
sudo apt-get update
sudo apt-get install sublime-text

Natürlich sollte man sich klarmachen, dass Fremdquellen auch potenziell gefährlich sein können. Als alter Windows User klickt man aber ja auch immer überall drauf. Und ich halte diese Quelle für Vertrauenswürdig, schließlich stellt er den besten Texteditor der Welt ™ als Paket zur Verfügung.

2. Befolgt diese Anleitung:
Das nachfolgende ist nur eine grobe Zusammenfassung!
– Installiert in Sublime Text 2 „Package Control“
– Dann Package Control aufrufen (Preferences – Package Control)
– „Install“ eingeben.
– „Arduino-like IDE“ eingeben (sollte von Robert Will und sein Stino sein!)
– Dann im neuen Arduino Menu, die Preferences einstellen. Wenn man möchte auch die Sprache und vor allem den Pfad zur Arduino Version (wegen GSM brauch ich die 1.0.5).
– Sketch Ordner hinzufügen.
– Board einstellen.
– Ersten Sketch kompilieren und freuen!

Stino und Sublime Text 2 ist einfach genial.
Es gibt endlich eine Autocompletion für Arduino! Das ist soooo geil!

Oder wisst ihr alle Befehle auswendig?
Ich nicht, daher freu ich mich darüber.

Darüber freut sich jeder. Gut bei Richard Stallman würde ich vielleicht eine Ausnahme machen!