Buch Review: Clean Architecture von Robert C. Martin

Der neue Klassiker von Uncle Bob beschäftigt sich mit Software Architektur: Was ist eine gute Softeware Arcjtektur und wozu braucht man Sie überhaupt.

Die wichtigsten Aussagen habe ich zusammengefasst im folgenden:

Wozu benötugt man eine gute Architektur? Es ist einfach ein Programm zu schreiben, das etwas bestimmtes tut, selbst Schulkinder schreiben Programme. Aber schwierig ist es ein Programm zu schreiben, was auch in Zukunft erweiterbar und felxibel ist, ohne große Kosten und Aufwand zu verursachen. Deswegen bracht es von Anfang an gute Architektur.

Die Evolution der Programmiersprachen besteht darin, dem Programmierer weniger Möglichkeiten zu geben, schlechten Code zu schreiben.

Man sollte nicht in die Falle tappen: Wir programmieren schnell das Projekt zu Ende um schnell am Markt zu sein und später räumen wir den Code auf. Das wird nie passieren.

Das User Interface (UI), die Datenbank und die Business Rules sollten unabhängig von einander über Interfaces mit einander verbunden und austauschbar sein (Plugin Architektur). Dies ermöglicht ein

  • unabhängiges Deployment der 3 Komponenten und
  • unabhängige Entwicklung in verschiedenen Teams

Funktionale Programmierung löst das Problem von Deadlocks und Multi-Threading Problematiken, da keine richtigen Variablen vorhanden sind. weiterlesen…

Yii für Profis: Buch Rezension von Yii Project Blueprints

Das September 2014 erschienene Buch “Yii Project Blueprints” aus dem Packt Publishing Verlag stammt aus einer Reihge guter englischsprachiger Bücher über das PHP-Framework Yii. Am Anfang war ich sehr skeptisch, ob ich das 43te HowTo über die Erstellung eines CMS oder PM-Ticket Tools in meinen Händen halten würde, aber ich wurde sehr positiv überrascht: Dieses Buch richtet sich an gestandene Yii-Programmierer, die in die Tiefen des Frameworks eintauchen wollen.

Die ersten zwei Kapitel sind eher für den Einstieg gedacht, aber danach lernt man erstaunlich interessante Kniffe mit dem Framwork kennen. Ein paar Beispiele:

  • Einbindung von Composer
  • viele sicherheitsrelevante Tipps: Erzeugung von wirklichen Zufallszahlen, Markdown-Parser etc.
  • Cronjobs mit Yiic
  • Fokus auf Wiederverwendbarkeit und Unabhängigkeit der Komponenten, z.B. wird genau erklärt, wie man Module benutzt und wie man diese am besten wiederverwendet
  • Flash Messages
  • die Verwendung eines E-Mail -Sende und -Empfang Dienstes am Bsp. von SendGrid
  • Authentifizierung von Usern mit HybridAuth: Google+, Twitter, Facebook etc. Accounts
  • SEO: Slug-Urls und Sitemap/RSS Feeds Implementierung
  • Implementierung einer RESTful API

Der einzige Wermutstropfen sind die raren Screenshots, die sehr zum Verständnis der öfter sehr langen Code-Beispiele hätten beitragen können.

Adobe InDesign Scripten mit Javascript Tutorial

Adobe Indesign sowie Photoshop lassen sich mit Javascript plattformübergreifend auf MAC und PC skripten mit der Javascript Erweiterung ExtendScript von Adobe.

Über das Menü Fenster->Hilfsprogramme->Skripte werden die bereits mit gelieferten Skripte angezeigt. Eigene Skripte gehören in den Ordner Benutzer und haben die Endung .jsx. Um im Dateibrowser in das Verzeichnis zu gelangen, wo die Skripte zu finden sind, muss man einfach mit der rechten Maustaste auf das Skript und dann auf “Im Finder öffnen” klicken, so gelangt man am einfachsten zu den sehr tief verstecktem Ordner. Dort kann man dann neue eigene Skripte anlegen.

Zum testen kann die Datei “changeLanguage.jsx” im selben Ordner (bei mir /…/Library/Preferences/Adobe InDesign/Version 7.0/en_GB/Scripts/Scripts Panel) angelegt werden. Diese erscheint dann autotmatisch auch in InDesign.

Um die Dati zu bearbeiten, muss man einfach in InDesign rechter Maustaste auf die Datei und Skript bearbeiten auswählen und es öffnet sich der Editor/Light IDE von Adobe: ExtendScript Toolkit.

Wichtig ist, als erstes einzustellen, für welches Programm das Skript laufen soll, in unserem Fall: Adobe InDesign CS5 auswählen im Dropdown oben rechts.

Außerdem sollte die Autovervollständigung aktiviert werden: ExtendScript Toolkit->Voreinstellungen->Hilfe->Autom. Vervollständigung aktivieren.

Beispiel 1: Hallo Welt

Das Hallo Welt ist schnell geschrieben und beinhaltet vorher noch eine Direktive auf InDesign, damit klar ist, für welches Programm das Skript laufen soll:

#target InDesign
alert("Hallo Welt");

Das ganze kann mit F5 oder Apfel+R ausgeführt werden.

Debuggen lässt sehr gut mit der Funktion writln für Strings, die im Fenster Javascript-Konsole ausgegeben wird:

#target InDesign
//alert("Hallo Welt");
$.writeln ("Konsole log");

Ich hatte das Problem, dass Kommentare ausgeblendet wurde, das lag daran, dass die Schriftart für Kommentare nicht installiert war. Einfach Schriftart ändern: ExtendScript Toolkit->Voreinstellungen->Schriften und Farben:

  • alle Anzeigeelemente entkreuzen
  • Comment /**/ ->Schrift: Verdana auswählen
  • Comment // ->Schrift: Verdana auswählen

Eine Referenz/Übersicht über das Objekt Model von InDesign findet man hier.

Microsofts technische Entwicklungsgeschichte der Kinect

Die die Arbeit an der Kinect startete bei Microsoft nachdem Nintendo 2005 ihr Wii-Konsole mit der Wii Remote Steuerung herausgebracht hatte. An der eigentlichen Steuerung wurde aber schon seit 2003 gearbeitet: siehe  Geschichte der NUI/Kinect.

Die Entwicklung der Hardware

Zu Beginn wurden 2 Teams gegründet, die auf Basis von 2 unterschiedlichen Technologien die Kinect bauen sollten. Die Technologien kamen von den Firmen 3DV (gekauft für 35mio$) und PrimeSense (ein unabhängiges israelisches Forschungsunternehmen). Am Ende schaffte nur die PrimeSense Technologie die hohen Anforderungen an die Technik zu bewerkstelligen und einen Prototypen zu bauen, der RGB Kamera, Infrarotsensor und einen Infrarotlichtsensor enthielt und Tiefendaten mit 30fps rendern konnte. Die Geschwindigkeit wurde dadurch ermöglicht, dass die Tiefendaten mit Hilfe der Infrarotdaten auf eine neue Art und Weise bestimmt wurden:

Vorher wurde die Zeit gemessen, die die Daten benötigen, um vom Sensor auf einen Gegenstand und wieder zurück zum Sensor flogen. Die neue Technik projeziert ein Muster von rote Punkte auf den Raum und misst die Größe und den Abstand um die Tiefendaten zu bestimmen.

In die Kinect wurde ein 4-faches Mikrofon Array eingebaut, um in großen Räumen effektiv Spracherkennung durchführen zu können. Microsoft konnte dabei auf die Erfahrung von Windows zurückgreifen, in dem Spracherkennung seit Windows XP enthalten ist.

Die Entwicklung der Software

Auf Basis der Hardware wurde als erstes das Problem des Motion-Trackings gelöst. Das Kinect Entwicklungsteam (Project Natal) beauftragte Jamie Shotton den Microsoft Research in Cambridge mit der Verbesserung des ersten Motion-Trackings Algorithmuses, der folgende Nachteile hatte:

  • der Spieler musste zu Beginn die bekannte T-Pose einnehmen zur Kalibrierung
  • die Kamera verlor den User gelegentlich und das System musste wieder neu kalibriert werden incl T-Pose
  • es funktionierte nur mit bestimmten Körpertypen, nämlich mit denen der leitenden Microsoft Entwickler :)
  • aus der Silhouette des Users mussten die Körperteile und daraus die Gelenke extrahiert werden. Aus den Gelenken kann dann das Skelett erzeugt werden, welches die Kinect für die Bewegungen benutzt

Die Lösung: Es wurde Computer Learning verwendet und eine Bewegungssoftware mit Tonnen von Daten gefüttert, u.a. aus Hollywoods Motion Capture Studios. Daraus resultierte ein Entscheidungsbaum, der die Gelenke erkennen konnte.

Eine weiteres Highlight ist die amerikanische Spracherkennung, die mit verschiedenen amerikanischen Akzenten umgehen kann und auch mit Hilfe von Computer Learning erstellt wurde.

Die Kinect wurde schließlich am 26.9.2010 veröffentlicht, 3 Jahre nach dem eigentliche Veröffentlichungstermin zur E3 2007. In den ersten 60 Tagen wurden durchschnittlich 133.000 Einheiten verkauft pro Tag wodurch die Kinect vor dem iPhone und iPad im Guiness Buch der Rekorde steht.

Weiterlesen: Die technische Geschichte der Xbox Kinect und NUI oder Kinect SDK Tutorial Installation unter Windows 7