Dienstag, 26. Januar 2016

Mein neuste Java-Buch ist erschienen

Mein neues Buch zu Java ist beim Verlag Markt+Technik erschienen.
Das ist für mich ein "Back-to-the-roots" in reinster Form. Mein aller erstes Buch habe ich zwar 1996 beim Data Becker Verlag veröffentlicht (zu HTML), aber bereits 1997 war ich dann bei Markt+Technik gelandet. Dort (und beim Schwesterverlag Addison-Wesley) habe ich über die Jahre dann zig Bücher veröffentlicht. Ich muss mal an mein Regal mit den Belegexemplaren gehen, aber es sollten um die 40 Bücher sein, wenn am alle Auflagen und Übersetzungen einzeln zählt. Auf jeden Fall eine Menge Holz (auch im eigentlichen Sinn), was mit Markt+Technik und Addions Wesley bedruckt wurde.
Der Mutterkonzern Pearson hatte nun vor wenigen Jahren den Vertrieb von EDV-Büchern und samt der beiden Buchverlage weitgehend eingestellt. Allerdings wurde Markt+Technik unter neuer Führung recht bald wieder belebt. Die Marke hat sich ja die über Jahre etabliert und von daher habe ich gerne zugegriffen, als ich das Angebot bekam, mein altes Java-Buch für Markt+Technik zu überarbeiten. Da ich dieses Thema aktuell nicht bei anderen Verlagen beackere, mache ich mir damit selbst keine (verbotene) Konkurrenz .
Wie gesagt - es geht zurück zu den Ursprüngen. Interessanter Weise auch bei diversen anderen Aufträgen (nicht nur beim Schreiben von Büchern). Es kommt immer alles wieder ....

Freitag, 22. Januar 2016

Java-Schulung im verschneiten Taunus

Ich war mal wieder für 3 Tage bei einem Stammkunden im Hochtaunus, für den ich deutlich über 12 Jahre schon Schulungen halte. Und rechtzeitig zum Job im Hochtaunus hat sich auch der diesjährige Winter angemeldet.
Wobei die Straßen frei waren und insbesondere heute der Winter sich von der schönsten Seite gezeigt hat.
Der Spaziergang in der sonnendurchfluteten Winterlandschaft in der Mittagspause hatte fast was von Urlaub.

Freitag, 15. Januar 2016

Domain-Umzug sollte fertig sein

Das war doch noch einige Arbeit, aber mein Fliegerblog ist jetzt neu wieder online und meine Domain rjs.de sowie der Blog sollten bereinigt und vollständig sein. Ich bitte um Rückmeldungen, wenn noch Fehler auf den neu eingerichteten Seiten gefunden werden oder was fehlt.

Dreimal umgezogen ist wie einmal abgebrannt

Meine Domain rjs.de samt den beiden Blogs, die ich unter den Subdomain fliegerblog.rjs.de und blog.rjs.de betreibe, sind die letzten zwei Tage umgezogen. Ich habe die Seiten auf meinen V-Server verlagert, auf dem ich bereits Autoren-net.de sowie ein paar Subdomains wie rb.autoren-net.de betreibe. Die Seiten, die ich bisher auf dem V-Server hoste, machen den Betrieb eines eigenen V-Servers nicht notwendig. Mit der Verlagerung nutze ich die Kapazitäten und Möglichkeiten besser. Aber das war gar nicht der Grund für den Umzug - für meine Domain rjs.de hatte ich noch ein uraltes (wirklich uralt - von 1996, wenn ich das recht entsinne) und gesponsertes Hosting (vom Provider für Multiplikatoren im IT-Bereich eingerichtet) beim gleichen Provider meines V-Servers, das der Provider die letzten Monate mit indirektem Druck zum Auslaufen gebracht hatte. Die Zugänge zu gewissen Features wie Zugang zum Kundenbereich, FTP, Web-Mail, direkter Datenbankzugriff, Systemaktualisierungen etc. waren irgendwann nicht mehr offen und vor ein paar Tagen ist dann auch noch meine erste Subdomain nicht mehr erreichbar gewesen. Dem Provider mache ich keinen Vorwurf, denn ich habe lange genug von dem Angebot profitiert und die paar EUR für eine Domain sind nicht der Rede wert (wäre nur netter und vor allen Dingen einfacher gewesen, wenn ich vom Provider irgendwann die direkte Aufforderung zum Umzug bekommen hätte). Auf jeden Fall war eine Reaktion von mir jetzt unabdingbar und musste schnell erfolgen. Denn wenn meine Hauptdomain rjs.de nicht mehr zugänglich gewesen wäre, wäre auch meine Haupt-E-Mail nicht mehr nutzbar. Und das wäre sehr, sehr schlecht gewesen.

Der Umzug an und für sich

Der Umzug an sich ging mittelprächtig. Einerseits bin ich ja bei meinem Provider geblieben und die Übertragung musste nur von einem Vertrag zu einem anderen Vertrag erfolgen. Dazu die Anpassung des DNS-Namens an die IP des V-Servers. Da ich aber nicht mehr an meinen alten Kundenbereich herankam, konnte ich die Bestätigung für den Auftrag des internens Umzug nicht liefern. Es gibt verschiedene Wege, die der Provider anbietet. Aber bei allen war halt dieser Zugang zum alten Kundenbereich Voraussetzung. Das Zusenden des Auth-Codes per E-Mail hat auch nicht funktioniert, denn die alte E-Mail-Adresse hat nicht mehr existiert (das habe ich erst nach vielen Kontakten rausbekommen - es wurde im neuen Kundenbereich nirgends angezeigt, wohin die zu bestätigende Mail geschickt wurde) und eine Umstellung war aus besagtem Grund nicht machbar. Daher habe ich die letzten 2 - 3 Monate mit halben Dampf versucht den Umzug anzustoßen. Aber noch nicht mit Nachdruck, weil die wichtigsten Dinge der Seiten samt E-Mail noch gingen. Nach dem Abschalten der Subdomain ist mir dann aber die Muffe gegangen und ich habe schriftlich den Umzug beauftragt. Als Antwort kam wieder der Hinweis auf die Sache mit E-Mail etc. Wir haben uns im Kreis gedreht. Ich wurde dann aber etwas deutlicher und habe das Problem genau geschildert. Im Folgeschritt ging dann der Umzug doch. Innerhalb von einem Tag war der DNS-Name meiner IP des V-Servers zugeordnet. War also alles in Allem etwas blöd gelaufen, weil bei mir eine ziemlich außergewöhnliche Sondersituation vorlag. Aber der Provider hat mit sich reden lassen und dann ging die Geschichte doch durch.

Probleme und Chancen

Wie ich in der Überschrift schon angedeutet habe - bei einem Umzug geht viel Zeug verloren oder kaputt. Kann man wohl niemals verhindern. So auch bei meinem Umzug. Ich hatte den Umzug letztendlich etwas überstürzt eingeleitet, aber im Grunde über Monate vorbereitet. Es ist schon faszinierend, was man dann doch alles vergessen kann zu sichern oder aufzuschreiben oder was beim finalen Schritt schief geht, wenn man das durchzieht.
Denn sämtliche Daten auf dem alten Hostingangebot sind weg, wenn die Domain auf die neue Adresse umgeleitet ist! Natürlich war mir das klar und ich hatte vorher mit dem Standard-Plugin alle Daten aus den WordPress-Systemen (es waren drei WordPress-Systeme und sonst nichts) exportiert. Das hatte ich schon vor einigen Wochen gemacht und sogar die Imports in lokalen Systemen simuliert. Also da schien mir alles im grünen Bereich. Leider kam ich an die Datenbanken selbst nicht mehr direkt ran und die Exports der gesamten Datenbanken würden doch Fehlerkorrekturen erheblich erleichter. Dazu habe ich am Wochenende mit HTTrack Website Copier die drei Websites lokal gesichert (mache ich eigentlich immer mal wieder) und damit standen mir auch alle Dateien, wie sie im Browser ankommen, in aktuellen Versionen zur Verfügung. Zu guter Letzt habe ich von den beiden Blogsystemen noch jeweils eine Douplette bei Blogger, die vollkommen synchronisiert sind. Eigentlich alles gut vorbereitet, dachte ich.
Was ging trotzdem schief? Und warum ist das nicht unbedingt eine Katastrophe?
Es ging (natürlich) doch Einiges beim Umzug schief.
  • Erstes Problem: Bei meinem Import des Blogs hat das WordPress-Importer-Plugin abgebrochen. Die Beiträge der letzten Jahre sind nicht importiert worden. Fehler des Plugins (entweder für den Ex- oder Import) würde ich sagen. Aber das hilft mir auch nicht. Der Export der Beiträge des synchronisierten Blogs bei Blogger und Import in das neue WordPress hat aber funktioniert. Also alle Beiträge gerettet.
  • Zweites Problem: Diverse Bildreferenzen haben nicht mehr funktioniert. Sowohl interne (klar, denn die gehen auf Mediendateien, die erst einmal auf WordPress geladen werden müssen und zudem muss man die Referenzen anpassen), aber auch externe - da wurden die Werte von src-Attributen beim Bild-Tag nicht erhalten). Wie und warum kaum nachvollziehbar, aber die Korrekturen waren viel Handarbeit :-(. Seltsamer Weise scheint die Wahl eines Themes zu beeinflussen, ob und wie die Bildreferenzen funktionieren. Zum Teil sind auch die Permalinks wichtig.
  • Drittes Problem und mein Fehler: ich kann die Themes nicht mehr reproduzieren. Ich habe sogar ganz vergessen, wie die hießen. Das zumindest hätte ich mir vorher aufschreiben sollen :-(. Aber da ich diverse Anpassungen in den Themes (Einstellungen bis runter in den Code) vorgenommen hatte, hätte mir das sowieso wenig genutzt. Ich hätte die Dateien sichern müssen und das ging ohne FTP-Zugang ja sowieso nicht. Dazu habe ich ebenso nicht aufgeschrieben, welche Plugins ich installiert hatte :-(. Selbst die Widgets habe ich nicht aufgeschrieben, aber da hatte ich ja den gesicherten Client-Code. Trotzdem ist die Sache keine Katastrophe. Ich hatte sowieso vor die Seiten neu zu machen, zu entmisten und verschlanken und letztendlich auch das Design von Webseite und Blog zu vereinheitlichen, um diese besser zu synchronisieren. Also gilt hier nur "Alles neu, macht der Januar". Halt einige Arbeit, aber das hatte ich schon lange so geplant. Zumal ich ein richtig geiles neues Theme entdeckt habe, das ich für alle drei Seiten einsetzen werde.
  • Viertes Problem: leider sind viele Benutzerdaten und Kommentare verloren gegangen, denn hier sind die Blogs nicht mit den Bloggersystemen synchron :-(. Das ist echt ärgerlich. Aber bisher registrierte Benutzer bitte ich sich neu anzumelden. Die Kommentare sind leider verloren (aber sowieso zu alten Beiträgen), wobei ich einige Inhalte noch habe (HTTrack Website Copier).
Ich muss den Fliegerblog jetzt noch neu einrichten und bitte um Rückmeldungen, wenn noch Fehler auf den neu eingerichteten Seiten gefunden werden.

Freitag, 8. Januar 2016

Mittwoch, 6. Januar 2016

Fortschritte beim Raspberry mit der Einrichtung einer Überwachungskamera

Eine durchaus nützliche Anwendung mit dem Raspberry Pi ist die Einrichtung einer Überwachungskamera. Denn der kleine RasPi braucht kaum Strom und selbst mit einer Webcam und einem WLAN-Adapter und ggfls. einem kleinen Gehäuse (falls man die Sachen noch kaufen muss und nicht sowieso irgendwo noch übrig hat) ist man billiger als bei den meisten Kauflösungen. Zumal man die genialen Programme im Linux-Umfeld nutzen kann. Ich brauche zwar eigentlich keine Überwachungskamera, aber die Neugier und der Spieltrieb (letztendlich aber auch Know How-Aufbau als Investition in meinen Job) haben mich zum Fertigstellen gebracht.

Schritt 1 - WLAN einrichten

Bisher hatte mein RasPi an der Leitung (sprich Ethernet-Kabel) gehangen und erstmal musste der WLAN-Adapter für den Raspberry Pi eingerichtet werden. Zuerst habe ich rein physikalisch den WLAN-Adapter an einen der beiden freien USB-Ports eingesteckt (USB-Port 2 brauche ich für die Cam). Mit lsusb kann man herauszufinden, ob der WLAN-Adapter überhaupt erkannt wurde. Das ging bei meinem RasPi problemlos und die Netzwerk-Schnittstelle mit der Bezeichnung wlan0 war sofort vorhanden. Danach habe ich iw bzw. iwlist als Tool installiert (sudo apt-get install iw). Mit sudo iwlist wlan0 scan kann man dann ganz bequem die WLAN in der Gegend scannen. Um die Verbindung einzurichten muss man die Netzwerk-Konfigurationsdatei bearbeiten. Dazu öffnet man die interfaces-Datei: sudo nano /etc/network/interfaces Hier gibt es vermutlich bereits einen WLAN-Bereich, wenn der Adapter erkannt wurde (war bei mir auf jeden Fall da). Und da trägt man so was wie das ein: # WLAN auto wlan0 allow-hotplug wlan0 iface wlan0 inet manual wpa-ssid "WLAN-Name" wpa-psk "WLAN-Passwort" Da habe ich ein bisschen rumspielen müssen, denn ein paar Einträge bei mir haben wohl kollidiert. Der Adapter wollte einfach keine IP-Nummer vom DHCP-Server beziehen. Aber mit dem Code ist mein WLAN-Zugriff dann gegangen. Natürlich muss man die Netzwerkschnittstelle nach jeder Änderung neu starten: sudo ifconfig down wlan0 sudo ifconfig up wlan0

Schritt 2 - Motion einrichten

Die Open-Source-Software Motion befindet sich in den Repositories der Linux-Distribution Raspbian. Als Kamera verwende ich eine alte USB-Webcam, die mit etwas Mühe auch unter Raspian endlich gelaufen ist. Allgemein sollte jede Kamera gehen, die mit dem V4L-Treiber (Video for Linux) kompatibel ist und als Gerät unter Linux in der Form /dev/videoX auftaucht. Mit dem folgenden Befehl kann man schauen, ob die Cam ordnungsgemäß funktioniert: dmesg | tail Noch besser: ls -ltrh /dev/video* Allerdings hat das bei mir von Anfang an funktioniert, aber der Video-Device ließ sich dennoch nicht öffnen. Erst nach dem komplette Upgrade der Distribution und Bereinigung ging das plötzlich. Motion spricht nun die Cam über eben /dev/video0, /dev/video1, etc. an und beobachtet den Video-Stream. Das Spannende ist nun der Bewegungsmelder. Man kann dazu einfach bei Motion ein Limit für sich ändernde Pixel in einem Bild festlegen. Wird die Grenze dieser Pixelzahl überschritten, wertet Motion das als Bewegung und kann je nach Konfiguration entsprechend reagieren. In der Regel wird dann ein Bild gespeichert. Geniale und einfache Lösung. Man installiert Motion so: sudo apt-get update sudo apt-get install motion Motion lässt sich dann über ein Init-Script starten, das nach der Installation des Programms bei Raspian unter /etc/init.d/motion zu finden ist. Für den automatischen Start zusammen mit dem System bearbeiten man die Datei /etc/default/motion und ersetzt das no hinter start_motion_ daemon durch yes. Ansonsten startet man Motion einfach manuel: sudo motion Nach Aufruf des Befehls erzeugt Motion diverse Bildschirmausgaben. Besonders wichtig ist Started stream webcam server in port 8081. Das sind die Infos, um die Bilder live abzugreifen. Das Bild kann man mit jedem Streaming-Client oder in einem beliebigen Webbrowser betrachten - über http://localhost:8081. Wenn sich jetzt was für der Cam bewegt, sieht man in der Konsole, dass Bilder gespeichert werden. In der Standardkonfiguration legt Motion diese unter /tmp/motion ab.
Konfigurieren
Per Standard ist Motion auf localhost beschränkt. Das kann man in der Standardkonfigurationsdatei /etc/motion/motion.conf anpassen. Die Zeile webcam_ localhost on ( Sektion „Live Webcam Server“) muss geändert werden auf: webcam_ localhost off An anderer Stelle findet man die Bildbreite und Bildhöhe. width 320 height 240 Kann man natürlich anpassen, soweit das die Cam unterstützt und der Platz auf dem Datenträger ausreicht. Sehr spannend - die Anzahl der Bilder/Sekunde framerate 2 Kann man bei Überwachung eher niedriger wählen, damit die Datenmenge nicht zu hoch wird. Bei einem Livestream hingegen sollte man den Wert eher hochsetzen. Muss ich auch noch ausprobieren. Die Sektion „Motion Detection Settings“ ist dazu da festzulegen, wie viele Pixel sich ändern müssen, damit Motion dies als Bewegung erkennt. Der erste Parameter threshold bestimmt, wie viele Pixel sich in einem Bild ändern müssen, um als Bewegung wahrgenommen zu werden. Per Standard steht das auf 1500 und das ist auf die vorgegebene Breite und Höhe des Bildes gemünzt. Setzt man die Bildgröße hoch, wird die Sache viel sensibler, da Motion früher reagiert. Will man das eher unempfindlicher, muss man den Wert erhöhen. Sobald Motion eine Bewegung erkennt, speichert das Programm die Dateien per Standard im JPG-Format. Ganz klasse - zusätzlich wird nach jeder Bewegungssequenz per Standard eine SWF-Datei als kleiner Film erstellt. Wo diese Dateien hinterlegt werden, konfigurieren man über den Parameter target_dir. Per Standard ist das /tmp/motion. Das Verzeichnis wird jedoch bei jedem Neustart des RasPi gelöscht. Sollte man die Dateien erhalten wollen, ändert man das Verzeichnis besser.

Spielchen mit der Raspberry Pi

Da ich die Woche hauptsächlich neue Schulungen und Projekt vorbereite und ansonsten Zeit habe [natürlich ist dann das Wetter schlecht ;-( ], habe ich mal wieder meinen kleinen Raspberry Pi (1. Generation) hochgefahren. Ich habe immer noch keinen wirklichen Nutzen für mich gefunden, was ich lieber mit dem RasPi statt mit einem normalen Linux-Rechner machen sollte. Aber reizt mich wieder mit diesem ultraschwachen Platinenkleinstrechner zu spielen und zu schauen, was da so geht.

Versuch 1 

Eine alte USB-Webcam am RasPi zum Laufen zu bekommen. An meinen Mint Linux-Rechnern geht die einwandfrei. Aber an dem RasPi gab es wohl Treiberprobleme. Zuerst konnte /dev/videoX nicht geöffnet werden.
Gerade mal ein Upgrade der gesamten Raspian-Distri samt Bereinigung durchgeführt. Das hat zumindest dazu geführt, dass VLC als Medieneingabegerät gerade die Webcam öffnen konnte. Nach ein paar Sekunden friert das Bild ein, aber grundsätzlich geht das jetzt schon mal. Ich plane mit Motion eine kleine Überwachungskamera zu simulieren. Da sollte ich voran kommen.

Versuch 2 

Vernünftiger mit der RasPi surfen. Der Standardbrowser Midori ist ziemlich mau. Der Epihany-Browser soll bedeutend besser sein. Nach dem Update von Raspbian steht das Paket epiphany-browser zur Verfügung und den habe ich mit apt-get installiert. Epiphany wird öfter als Midori aktualisiert und enthält deshalb immer eine deutlich aktuellere Version von WebKit mit besserer Unterstützung neuer Webtechniken und einem JIT-Compiler für schnelleres JavaScript. Außerdem nutzt der Browser die schwachbrüstige Hardware auf Grundlage von ARMv6 besser – angeblich sogar Hardware-beschleunigtes Dekodieren von Videos. Meine ersten Surfversuche sind auf jeden Fall deutlich smarter als mit dem alten Midori.

Versuch 3 

Verschleierung des Originalrechners beim Surfen. Ich habe mal eine Kaskade zum Surfen im Internet aufgebaut, an deren Ende zwar mein Router steht (und damit natürlich meine aktuelle IP), aber dahinter wird es ein Versteckspiel mit dem RasPi an der Front. Ich nutze einen Windows-10-PC und starte dort in einer VirtualBox erstmal ein Mint Linux. Von da logge ich mich mit SSH auf dem RasPi ein und dort starte ich dann den Browser für den Zugriff nach draußen. Würde lustig sein, wenn ein Angreifer versucht bis zu meinem tatsächlichen System durchzudringen. Aber das soll keine Aufforderung sein, weil ich die Sache ja nur als Spiel mit ein bisschen Reaktivierung von Linux- und Netzwerkkenntnissen betrachte.

Sonntag, 3. Januar 2016

Jungbrunnen SSD

Ich habe jetzt nach dem Aufrüsten meines Notebooks mit der SSD weitere Erfahrungen gemacht und muss sagen, dass mich der Gewinn an Performance immer mehr erstaunt. Ich ärge mich fast, dass ich nicht schon früher umgerüstet habe. Das hätte manche Wartezeit gespart.
Da ich die nächsten Tage ziemlich viel mit MySQL machen muss und in der Schulung auch Replikationssystem mit einem Master-Client-MySQL-Serversystem aufsetzen will, habe ich gerade unter VirtualBox ein Gastsystem eingerichtet und gestartet. Ich hatte es vollkommen aufgegeben, auf meinem Notebook virtuelle Maschinen zu starten. Das war bislang grausam träge. Mit der SSD als Backbone ist selbst das wieder smart machbar. Trotz nur 4 GB RAM.

Onlinetraining mit Ralph Steyer

Onlinetraining mit Ralph Steyer
Onlinetraining mit Ralph Steyer und anderen Autoren bei Video2Brain