O'Reilly book review

Die LUG Kassel ist registrierte User Group bei O'Reilly. An dieser Stelle wollen wir die reviews der uns von O'Reilly kostenlos zur Verfügung gestellten Bücher veröffentlichen.
Die Jahreszahl hinter dem Titel gibt das Jahr an, in dem wir die review online gestellt haben.

Das DevOps Handbuch

Buchcover von Das DevOps Handbuch, O'Reilly

Review: Gerd Siebert

Autoren: Gene Kim / Jez Humble / Patrick Debois / John Willis / Nicole Forsgren
Publisher: O'Reilly
ISBN: 978-3-96009-199-8
Preis: € 44.90 Print; € 44.90 Digital; € 49.90 Bundle (Print+Digital)
Sprache: Deutsch
Mehr Informationen sowie Leseprobe: Das DevOps-Handbuch - O'Reilly.de

Das DevOps Handbuch aus dem Jahre 2017 wurde komplett überarbeitet und um sehr aktuelle Fallstudien ergänzt. Das Original stammt aus dem Englischen und wurde nun übersetzt. Es richtet sich primär an IT-/Projektmanager sowie Entscheidungsträger in diesem Umfeld. Ich halte es auch für Softwareentwickler und -architekten für empfehlenswert, die die Prozesse mitgestalten wollen und können. Operations und Security Spezialisten gehören natürlich auch dazu. Nach meiner Einschätzung setzen zwar viele bereits einige Methoden und Praktiken ein, die Wirkung lässt sich aber in den meisten Fällen noch deutlich maximieren.

Das Buch wird unter anderem mit einer Vorstellung der Autoren begonnen, welche schon viele Jahre Erfahrungen im Bereich von DevOps haben. Einige von ihnen haben die Konzepte geprägt, noch bevor es den Begriff DevOps gab.
Die Entstehung des Buches begann im Jahre 2011 mit dem Roman „Projekt Phoenix“, diesen habe ich aber leider noch nicht gelesen, was aber nicht weiter schlimm sein sollte. Die Inhalte des DevOps Handbuch wurden über Jahre zusammengetragen und basieren sowohl auf Erfahrungen der Autoren im Arbeitsleben, als auch auf Vorträgen von Konferenzen und werden später durch die Fallstudien untermauert. Im Literaturverzeichnis können viele Berichte, Konzepte, Erfahrungen und vieles mehr über Bücher und Websites weiter vertieft werden.

Der Hauptteil ist in sechs Teile untergliedert, welche jeweils etwa vier Kapitel beinhalten. Der erste Teil: „Die 3 Wege“ beginnt mit dem eigentlichen Problem bei der klassischen Softwareentwicklung, den unterschiedlichen Zielen von Entwicklung, Betrieb, Produktverantwortlichen und Security, was bei der „klassischen Vorgehensweise“ oft zu unlösbaren Konflikten führt. Um diese zu vermeiden werden in Kapitel 1 verschiedene Management- und Technologie-Bewegungen vorgestellt, die ein wichtiger Teil sind damit DevOps funktioniert.

In Kapitel 2 werden Methoden beschrieben, um den Flow zu verbessern und mit weniger paralleler Arbeit und effektiven Übergaben mehr Output zu generieren. Das ist nicht nur in der Softwareentwicklung wichtig, sondern auch genauso in einem Krankenhaus wie die ergänzende Fallstudie verdeutlicht.

Im nächsten Kapitel geht es um Feedback. Wenn ein Arbeitsschritt fertig gestellt wurde, ist es wichtig, diesen von nächsten Person im Prozess ein Feedback einzuholen und gegebenenfalls sofort nachzubessern. Dies erhöht die Qualität, macht Übergaben effizienter und schafft so Sicherheit.

In Kapitel 4 wird das dritte Hauptprinzip erläutert. Die Prinzipen des kontinuierlichen Lernens und Experimentierens. Wie mit allen komplexen Systemen müssen wir uns in der Softwareentwicklung auch im Klaren sein, dass niemand das System vollständig durchblickt. Alle Beteiligen müssen sich funktionsübergreifend austauschen, ihr Wissen durch kleine Experimente erweitern und neue Erkenntnisse unternehmensweit verbreiten. Gleichzeitig macht das Buch aber auch klar, dass Fehler oder Fehlschläge dazugehören und offen angesprochen werden müssen. Nur so kann man diese auch gemeinsam lösen und Fehler vermeiden.

Nachdem der Leser im ersten Teil den Nutzen schon recht gut erkannt haben sollte, wird nun die Einführung oder schrittweise Verbreitung von DevOps im eigenen Unternehmen anhand von verschiedenen Möglichkeiten vorgestellt. Mit vier Fallstudien aus Mode-Branche, Militär, Luftfahrt und Steuerverwaltung werden verschiedene Transformationen und deren Vorteile beschrieben.
Ein wichtiges Instrument zur Verbesserung des Flows sind Value-Stream-Maps, welche im nächsten Kapitel beschrieben werden. Hierdurch lassen sich unnötig lange Durchlaufzeiten erkennen.
In Kapitel 7 geht es um Teamstrukturen. Neben einigen Negativbeispielen, werden hier verschiedene, organisatorische und architektonische Wege aufgezeigt, um die Zusammenarbeit zu vereinfachen.
Das letzte Kapitel beschreibt die Integration der Ops-Techniker in andere Teams, um Entwickler und auch andere Kollegen direkt zu unterstützen sowie Designentscheidungungen mit zu treffen.

Teil III behandelt nun die technischen Konzepte. In Kapitel 9 wird automatischen Deployment per Pipeline beschrieben. Im nachfolgenden Kapitel wird durch schnelles und zuverlässiges Testen die Lauffähigkeit jedes Updates sichergestellt. Aufbauend darauf wird dann in Kapitel 11 das Continuous Integration zwischen mehren Bestandteilen der Anwendung und Parallelentwicklungen beschrieben. Die darauf folgenden Kapitel fand ich besonders spannend, da sie beschreiben, wie man die Deployment-Zyklen auf die Produktiv-Umgebung auf weniger als zwei Wochen oder sogar mehrmals täglich erhöhen kann. Um das zu erreichen, ist ein risikoarmes, weitgehend vollautomatisches Deployment erforderlich. Hierzu sind wiederum weitere Techniken erforderlich wie Feature-Flags, Datenbank-Update-Scripte, Entkopplung von Deployment und Release.

In Teil IV werden Praktiken zum Nutzen von Feedback vorgestellt. Diese können in Form von Telemetriedaten dafür sorgen, Probleme zu erkennen und zu beheben, aber auch durch Analyse diese vorherzusagen und Engpässe rechtzeitig zu erkennen. Die Wichtigkeit von fachübergreifenden Feedback wird hier aufgezeigt. Es folgt dann noch eine mir bekannte Technik, die A/B Tests, welche von Prinzip recht leicht zu realisieren sind, in der Praxis scheitert es aber oft an vielen nötigen Voraussetzungen. Dies sollte aber nicht mehr der Fall sein, wenn der Leser es geschafft hat, die Konzepte der vorherigen Kapitel in die Praxis umzusetzen. Auch die unter Entwicklern eher bekannten Techniken wie Code Review, Pull Requests, Pair Programming werden hier noch genauer erläutert.
Für die Leser die jetzt noch sagen, dass haben wir schon alles umgesetzt oder bereits gehabt, kommen in Teil V noch einige spannende Konzepte und Beispiele, wie man aus Fehlern und Ausfällen lernen kann und die Resilienz des Systems noch weiter verbessern kann. Als Beispiel schafft es Netflix, ihren Dienst auch bei gravierenden Störungen weiter zu betreiben.
Weiter werden Techniken vorgestellt, um die Codebasis auf einem optimalen Stand zu halten. Hierzu zählen Entwicklungsvorgaben im Code beschreiben und durchsetzen, Mono-Repos und gemeinsame Bibliotheken, aber auch das Reduzieren von technischen Schulden oder Blöcke um gezielt Verbesserungen durchzuführen, werden hier genannt.
Im letzten Kapitel geht es mit die Integration von Sicherheit in das tägliche Business, hierdurch bekommt jedes Teammitglied die Möglichkeit, die Sicherheit im Auge zu behalten und leichter zu erhöhen.

Fazit: Ein wirklich sehr interessantes Buch, welches ich für die genannte Zielgruppe uneingeschränkt empfehlen kann. Die Gliederung ist sehr gut gemacht und eignet sich sowohl für Techniker, die eher am Anfang von DevOps stehen als auch fortgeschrittene die ihre Kenntnisse vertiefen wollen. Ich habe das Buch in vielen kleinen Einheiten gelesen und wurde oft an Situationen aus meinem beruflichem Alltag erinnert. Einige davon hätten sich mit Sicherheit besser lösen lassen, wenn die richtige Technik vorhanden gewesen wäre oder das menschliche Gegenüber dichter am eigenen Prozess gewesen wäre.
Das Wissen in diesem Buch erlaubt es einem, neue Lösungsmöglichkeiten abseits von klassischen Prozessen zu finden. Für die Umsetzung ist allerdings teilweise weiteres Fachwissen oder Überzeugungskraft nötig. Mir hat das Lesen sehr geholfen und viele meiner Überlegungen bestätigt oder ergänzt.
Im Nachhinein habe ich die Thematisierung vom Übersetzungsprozess etwas vermisst. Möchte man eine komplett übersetzte Anwendung bereit stellen, wird man doch oft gebremst, den neusten Stand zügig auszuliefern. Hier bleibt einem, denke ich, nur der Weg mit A/B Deployments zu arbeiten.
Zurück zum Seitenanfang

Git – kurz & gut

Buchcover von Git – kurz & gut, O'Reilly

Review: Gerd Siebert

Autorin: Nina Siessegger
Publisher: O'Reilly
ISBN: 978-3-96009-187-5
Preis: € 14.90 Print; € 14.90 Digital; € 19.90 Bundle (Print+Digital)
Sprache: Deutsch
Mehr Informationen sowie Leseprobe: Git – kurz & gut - O'Reilly.de

Der Verlag war so freundlich, mir sowohl Printausgabe als auch E-Book, zur Verfügung zu stellen. Aufgrund des kompakten Formats fand ich das E-Book zum entspannten Lesen auf dem Tablet sogar etwas besser. Auch kann man dieses in digitaler Form immer mit sich führen. Die Printausgabe eignet sich hingegen prima als Nachschlagewerk, welches am Arbeitsplatz steht oder zum Verleihen.

Ich halte mich zwar persönlich für einen erfahrenen Git Benutzer, doch hat mich dieses Buch sehr interessiert, um einige eher selten genutzte Features bzw. Arbeitsweisen kennenzulernen bzw. zu vertiefen. Ich benutzte, im Gegensatz zur Autorin Git, hauptsächlich über die IDE und nur in seltenen Fällen per Kommandozeile. Die Kommandozeile bietet aber die Möglichkeit, Git von Anfang an gut kennenzulernen und später auch gezielt Fehler zu erkennen bzw. zu beheben.

Die ersten Kapitel behandeln die Grundlagen gut verständlich, so dass auch Einsteiger oder Umsteiger gut in den Umgang mit Git hineinfinden. Im Laufe des 3. Kapitels werden dann wichtige Vorgehensweisen für die tägliche Arbeit mit Git erläutert.
Das 4. Kapitel beschreibt Online-Dienste für Git am Beispiel von GitHub. GitHub hat eine sehr hohe Verbreitung, insbesondere im Open-Source-Bereich. Die Autorin geht auch auf den typischen Open-Source-Workflow ein, was mich gleich zur einer praktischen Anwendung motivierte. So konnte ich eine Angular-Bibliothk forken, auf die Version 16 updaten und dem Entwickler das Ergebnis schnell und einfach als Pull-Request zur Verfügung stellen.
Im 5. Kapitel werden typische Workflows beschrieben und auf dessen Vorteile eingegangen. Den Workflow wechselt man wahrscheinlich eher selten. Bei einem Teamwechsel, einem neuen Produkt oder bei viel Reibung bei der täglichen Arbeit macht es aber Sinn, hier noch einmal nachzulesen. Ich persönlich habe die letztem Jahre den Workflow "Gitflow" eingesetzt.
Auch im 6. Kapitel Good Practices sollte man mal hinein schauen, wenn es bei der täglichen Arbeit zu unnötigen Komplikationen kommt. Hier werden viele gute Arbeitsweisen beschrieben, die davor schützen.
Kommt es doch mal zu einem Problem, gibt es in Kapitel 7 einige Vorgehensweisen für die häufigsten Fehler.
Im 8. Kapitel gibt es eine kurze Erläuterung wie man im Reflog nachschaut oder Git-Kürzel und Git-Hooks nutzt. Letzteres eignet sich sehr gut um Coding Standards durchzusetzen.
Das 9. Kapitel gibt eher einen Vorgeschmack auf weiterführende Themen. DevOps, CI/CD und Infrastructure as Code, welche nur mit einer soliden Versionsverwaltung Sinn machen.

Das Buch wird durch eine Befehlsreferenz, ein Glossar und den Index abgerundet und eignet sich somit sehr gut als Nachschlagewerk.
Ich halte das Buch für alle Ein- oder Umsteiger und auch für den ein oder anderen Aufsteiger empfehlenswert. Für das knappe Format wurde eine sehr gute Themenauswahl getroffen.
Zurück zum Seitenanfang

Angular - Das Praxisbuch zu Grundlagen und Best Practices (3. Auflage)

Buchcover von Angular - Das Praxisbuch zu Grundlagen und Best Practices (3. Auflage), O'Reilly

Review: Michael Plate

Autor: Manfred Steyer
Publisher: O'Reilly
ISBN: 978-3-96009-166-0
Preis: € 34.90 Print; € 24.99 eBook
Sprache: Deutsch
Mehr Informationen sowie Leseprobe: Angular - Das Praxisbuch zu Grundlagen und Best Practices - O'Reilly.de

Manfred Steyers Buch liegt in der 3. Auflage vor und bezieht sich auf Version 12 von Angular.
Da die breaking changes bei Angular nicht mehr so groß wie bei älteren Versionen sind, bleiben die Inhalte auch länger aktuell, bei Erstellung dieser Rezension ist Version 13 die aktuelle Angular Version.

Manfred Steyer ist bei Angular kein Unbekannter, von ihm stammt das Paket "angular-oauth2-oidc" für OAUTH / OICD (Authentifizierung).
Das vorliegende Buch wendet sich - wie eigentlich alle Bücher zum Thema Angular – an Entwickler, die HTML, CSS und Javascript kennen. Wer bisher noch mit HTML und z.B. jQuery Webseiten entwickelt hat, hat mit dem Umstieg auf Angular einen harten Brocken vor sich, IMHO lohnt es sich aber - hat man erst mal das Konzept mit den Komponenten verinnerlicht, möchte man eigentlich nicht mehr zurück.

Die Entwicklung im Buch ist unabhängig vom Betriebssystem, und so setzt auch Steyer mit der Einrichtung der Entwicklungsumgebung ein, die Microsofts Visual Studio Code, Node.js und die Angular CLI umfassen (Hinweis des Rezensenten: wer Visual Studio Code ohne die übliche Telemetrie einsetzen möchte, dem sei VSCodium empfohlen: https://vscodium.com/, in einigen Linux-Distros ist das Paket vorhanden). Als Style-Bibliothek wählt Steyer Bootstrap, weist aber auch auf Alternativen hin, die deutlich mehr und vor allem komplexere Komponenten kennen.

Nach der obligatorischen Einführung in TypeScript, die sehr ausführlich ausfällt - hervorzuheben ist hier auch der Teil, der sich mit asynchronen Operationen beschäftigt - kommt dann die Beispielanwendung, die sich durch das ganze Buch zieht.

Dabei geht es recht schnell um die typischen Bestandteile von Angular, wie Komponenten, Bindings, Direktiven, Pipes und bemerkenswert früh - für ein Angular-Buch - um den HTTP-Service.
Den Abschluß der Einführung bildet die Anleitung für eine Debugsession.

Ab dem 4. Kapitel werden die in der Einführung vorgestellten Bestandteile vertieft und teils sehr detailliert, mit Einblicken in die Funktionsweise von Angular angereichert, besprochen. Die Beispielanwendung wir dabei iterativ um die jeweiligen Techniken erweitert.

Zunächst werden Komponenten und ihre Bindungen, also Property-, Event- und Zweiwegebindung besprochen.
Zweiwegebindung ist eines der Merkmale von Angular; dabei werden z.B. Eingaben aus Formularen automatisch im Modell der Komponenten (Klasse) geändert und natürlich auch umgekehrt - eine Änderung im Modell führt zu einer Änderung an _allen_ Stellen im HTML-Template.
Im Gegensatz zu anderen Angular-Büchern geht Steyer hier tiefer in Angular hinein und erklärt ausführlich die Arbeitsweise von Angular am Komponentenbaum im Hintergrund.

Das nächste Kapitel "Services und Dependency Injection", führt in die Welt der Services ein.
Ein Service ist zunächst mal eine Klasse, die allerdings durch den @Injectable Dekorator und einen Provider zu einem speziellen Stück Code wird. Services sind Singletons und lassen sich in andere Komponenten "injizieren", womit sie sich ideal eignen, um Daten zwischen Komponenten auszutauschen. Services lassen sich dabei austauschen, ohne den Code der Komponenten zu ändern, was z.B. bei Mockups zum Tragen kommt.

Nach der Einführung in Pipes, mit denen man Daten transformieren kann, kommt das Kapitel über Module.
Module dienen der Strukturierung des Quellcodes, damit lässt sich zusammengehörender Code bündeln: Shared Modules enthalten Code, der quasi überall in Verwendung ist - Feature Modules bündeln Code (Steyer spricht hier von Building-Blocks), der zu speziellen Teilen der Anwendung gehört.

Das Routing ist mit das wichtigste einer SPA, wird doch hierdurch die Navigation in der Anwendung mittels URLs möglich.
Das Routing für das AppModule, die Child-Routen für die Feature-Module werden ausführlich besprochen, ebenso natürlich Routen mit Parametern - mit klassischen URL-Parametern als auch mit Matrix-Parametern - bis hin zu Auxiliary-Routen (Hilfs-Routen).
Den Abschluss dieses Kapitels bildet noch eine Ausführung zu HTML5- bzw. Hash-Routing.
An dieser Stelle fehlen allerdings die Router-Guards - diese findet man im Kapitel Querschnittsfunktionen wieder.

Die nächsten beiden Kapitel beschäftigen sich mit Formularen, und zwar den beiden unterschiedlichen Typen von Formularen:
Template-getriebene und reaktive Formuale. Erstere sind - vereinfacht ausgedrückt - klassische HTML-Formulare, bei der Angular den Objektgraphen aus dem HTML erzeugt und bedient, wobei natürlich die weiter oben besprochenen Bindings zum Einsatz kommen, und auch Validatoren, die Angular dafür bereitstellt.
Reaktive Formulare dagegen erlauben die komplette Kontrolle über jedes Event, erfordern allerdings auch mehr Code in der Klasse - dafür werden die Templates einfacher. Des weiteren kann man damit auch dynamische Formulare definieren, in denen die Felder am Kontext hängen und nicht von vornherein festgelegt sind.

Danach kommt die reaktive Programmierung dran. Observables sind ein wesentlicher Bestandteil von Angular und werden via RxJS (Reactive Extension for JavaScript) realisiert. Sehr vereinfacht ausgedrückt sind Observables Variablen, die über ihre Veränderung informieren.
Das Buch stellt Observables vor und vergleicht sie kurz mit Promises, bevor den Operatoren (manipulieren den Datenfluss) Raum gewidmet wird. Anhand einer Type-Ahead-Suche verdeutlicht Steyer den reaktiven Ansatz mit Datenquellen und Datensenken. Multicasting (Hot Observables für z.B. einen Message-Bus) führt letztlich zu einem reaktiven Service, der das gezeigte für die Beispielanwendung implementiert.
Das Verständnis der reaktive Programmierung ist ganz entscheidend, weshalb Steyer hier auch das umfangereichste Kapitel des Buches abliefert.

Ein weiteres Problem von SPAs ist der "State of Application": die Konfiguration und Verwaltung komplexer Anwendungen mit all ihren Komponenten führt zu einem unübersichtlichen Netz von Zuständigkeiten - hier setzt das Redux-Muster an.
Steyer führt in den "Store" via NGRX als zentralen Speicher für den Anwendungszustand ein und erklärt die Begriffe wie Actions, Reducer, Selektoren anhand der nächsten Iteration des Beispiels.
Allerdings könnte das Kapitel etwas ausführlicher sein, zumindest wenn die Zielgruppe "Entwickler mit grundlegenden Erfahrungen in JavaScript, HTML und CSS" sein sollen.

Das Buch enthält noch weitere Kapitel zur Internationalisierung (die Angular-eigene I18N und ngx-translate), Unit-Tests (Karma und Jamsine), Direktiven und Authentifizierung - hier stellt Steyer am Beispiel der von ihm entwickelten OAUTH/OIDC-Bibliothek die Authentifizierung / Authorisierung von SPAs vor, was natürlich eine entsprechende Gegenseite - z.B. Google, Microsoft oder eben Keycloak oder OKTA - für eigene Quellen – vorausetzt (das Beispiel von GitHub nutzt AWS).
Das Kapitel "Performance Tuning" bedeutet hier die Datenbindung zu optimieren oder per Lazy Loading Teile der Andwendung nachträglich zu laden.
Ebenfalls wird noch die Erstellung eigener Bibliotheken bzw. Monorepos vorgestellt, die sich auch per npm verwalten lassen.
Die Beispiele sind auf GitHub zu finden und lassen sich mit der aktuellen Version Angular 13 problemlos ausführen.

Fazit: ein sehr gutes Buch, das kompetent in Angular einführt und auch Interna von Angular berücksichtigt, ohne zu detailliert zu werden. Der Satzspiegel ist angenehm und der Rand schmal, da auf Marginalien verzichtet wird - das erleichtert den Lesefluss.
Jedes Kapitel enthält eine kurze Zusammenfassung, die das eben beschriebene in einem kurzen Absatz noch mal komprimiert.
Einzig ein Thema habe ich vermisst: Angular Universal, das Server-Side-Rendering von Angular, wird mit keinen Wort erwähnt.
Zurück zum Seitenanfang

Angular - Grundlagen, fortgeschrittene Themen und Best Practices (2. Auflage)

Buchcover von Angular - Grundlagen, fortgeschrittene Themen und Best Practices (2. Auflage), dpunkt.verlag

Review: Michael Plate

Autoren: Ferdinand Malcher, Johannes Hoppe, Danny Koppenhagen
Publisher: dpunkt.verlag
ISBN: 978-3-86490-646-6
Preis: € 36.90 Print; € 29.99 eBook (ohne DRM)
Sprache: Deutsch
Mehr Informationen sowie Leseprobe: Angular - Grundlagen, fortgeschrittene Themen und Best Practices - dpunkt.verlag

Erfreulicherweise hat sich der dpunkt.verlag für die zweite Auflage vom Paperback verabschiedet und eine gebundene Ausgabe herausgebracht; diese Ausgabe ist um mehr als 100 Seiten umfangreich er als die erste Auflage und bezieht sich auf Angular 7.x bzw. die 8.x Beta.
Das Buch richtet sich klar an erfahrene Webentwickler, Kenntnisse in HTML, CSS und Javascript sind grundlegende Voraussetzungen. Da bei mir einige alte Webanwendungen nach Migration schreien und eine unse rer Hauptanwendungen in der neuen Version mit Angular als Oberfläche kommt (statt Cocoon), lag es nahe mit Angular zu arbeiten.
Das Zauberwort heißt nicht mehr "Webseite" sondern "Webapplikation", und natürlich als SPA (Single Page Application), d.h. es wird das Gerüst einer Seite geladen und alle dynamischen Inhalte kommen i.A. via REST.
Wer von HTML, JQuery und Bootstrap kommt (via CDN eingebunden) muss sich etwas umgewöhnen; man könnte es auch disruptiv nennen. Oder kurz: vergesst es.
Im Prinzip macht Angular etwas sehr logisches: Grob gesprochen wird die "Webseite" hierarchisch in ihre Teile zerlegt (Komponenten), die wiederum aus der Logik in "Typescript", einem Template (View) und u.U. CSS bestehen.
Die Details dazu würden hier den Rahmen sprengen (steht alles im Buch), aber der Datenfluss - vor allem in Formularen - ist sehr viel einfacher als klassisch von Hand, im besten Fall kümmert man sich nicht darum, wie die Daten aus dem Formular in die Klasse kommen und umgekehrt (Stichwort: Zwei-Wege-Bindung).
Alles kann modular in eigene Dateien ausgelagert werden, die später beim "Build" (sic) zusammengeführt werden; die Struktur des fertigen Produkts lässt nur noch eine index.html erkennen, alles andere befindet sich in Bundles, die zur Laufzeit nachgeladen werden.

In fünf Teile gegliedert, kommt im ersten Teil das klassische "Hello World" daher, das der Einfachheit halber in stackblitz.org angelegt wird, und damit rein im Browser abläuft - ohne dass man lokal was installieren muss.
Das ist für den Anfang praktisch - ernsthafte Anwendungen sind dort aber sicher aus datenschutzrechtlichen Gründen weniger gut aufgehoben.
Folglich wird anschließend auch die ganze Toolchain vorgestellt, die man für ein Angular-Projekt benötigt: Da wären zwingend Node.js mit der Paketverwaltung npm (gerne clasht hier die vom Linuxpaketmanager installierte Version mit der gelegentlich benötigten neueren Version), der empfohlene Editor "Visual Studio Code" von Microsoft (gibt es für alle Plattformen kostenfrei) mit einigen Plugins, und Google Chrome als Browser - Firefox geht aber auch (auch Augury gibt es für den FF, ein Plugin speziell zur Analyse von Angular-Applikationen im Browser).
Die Entwicklung von Angular-Applikationen läuft komplett plattformunabhängig, dazu gibt es ein Managementtool namens "ng", das viele Bereiche der Entwicklung unterstützt und erleichtert; es startet den Build, überwacht Änderungen am Quellcode und startet den eigenen Webserver - denn Apache oder nginx kann in der Entwicklungsphase nicht benutzt werden.

Der zweite Teil führt in die bereits erwähnte Sprache "Typescript" ein, eine Erweiterung von Javascript mit Vorteilen wie Klassen (und ja: "this" funktioniert so, wie man das erwartet), Interfaces, Decorators, Lambda-Ausdrücke und vielem mehr; richtig umgewöhnen muss man sich eigentlich nur, wenn man auf reines Javascript zurück muss.

Der dritte und umfänglichste Teil entwickelt dann die Demoanwendung "Book Monkey" (eine Literaturverwaltung) in etlichen Iterationen, wobei die Komplexität nach und nach von den Autoren gesteigert wird, um einen Großteil der Möglichkeiten von Angular vorzustellen und zu implementieren. Die Iterationen behandeln Dependency Injection, Routing (Navigation in der Anwendung mittels URLs), Services (zentrale Datenhaltung, HTTP-Requests) und "reaktive Programmierung" (asynchrone Programmierung mittels Datenströmen). Reaktive Programmierung wird ausführlich erklärt, denn sie ist integraler Bestandteil von Angular (als Library dient RxJS).
Einen weiteren großen Anteil hat die Formularverarbeitung (template-driven und reactive Forms), die mit Angular deutlich vereinfacht werden kann, dank Event- und Property-Binding und der erwähnten "Zwei-Wege-Bindung". Im nächsten Abschnitt geht es mit Pipes und Direktiven darum, die Verarbeitung in den Templates zu vereinfachen (Pipes transformieren Daten für die Ausgabe, Direktiven erweitern die Logik von HTML-Elementen).
Module und Routing mit Routerguards (Überwachung von URLs der Anwendung vor bzw. nach Aufruf, z.B. um Berechtigungen zu prüfen) runden diese Iteration ab; man hätte sich jedoch im Zuge der Routerguards ein Iteration mit einer Loginkomponente gewünscht.
Das Kapitel zur Internationalisierung hinterlässt einen etwas zwiespältigen Eindruck; zwar wird die i18n breit und deutlich erklärt, doch ist das in Angular z.Z. wenig gelungen; der Wechsel zwischen zwei Sprachen zur Laufzeit in der Applikation wird nämlich (noch) nicht unterstützt, bzw. man muss für jede Sprache einen eigenen Build in einem Unterverzeichnis erzeugen - einfach geht anders. Die Autoren verweisen hier auch auf eine sehr gute Ersatzlösung (ngx-translate), die ich auch schon benutzt habe - hier tut es ein Klick auf ein Element, und schon ist alles in einer anderen Sprache.
Am Ende jeder Iteration steht noch mal eine Zusammenfassung, die den Inhalt stichpunktartig zusammenfasst, was als schnelle Referenz dienen kann.
Der letzte Abschnitt in Teil drei befasst sich mit Softwaretests.

Mit Teil vier kommt nun der spannende Teil: "Wie bekomme ich meine Angular-Applikation den nun auf den Server?" Bis dato läuft die Applikation ja nur auf http://localhost:4200 mit dem Angular-Webserver.
Ausgehend von der Möglichkeit, das Angular bereits von sich aus verschiedene Umgebungen unterstützt (z.B. "prod" für Produktivsystem) kann man mittels der Angular-CLI ("ng") verschiedene Builds erzeugen, die jeweils eigene Konfigurationen haben (z.B. für "dev", "prod" und "test").
Was danach im dist-Ordner steht, ist optimiert und via "webpack" zu Bundles gepackt worden; eine Struktur kann man hier nicht mehr erkennen, lediglich die Datei "index.html" kommt bekannt vor und lädt die einzelnen Bundles zur Laufzeit. Den Inhalt dieses Ordners befördert man dann auf den eigentlichen Webserver, wobei es dem eigenen Gusto überlassen ist, wie - Angular bringt Git-Unterstützung mit, aber nur für den Quellcode; wer bisher via Git auf dem Zielserver ausgecheckt hat, muss sich was anderes überlegen.
Gut ist, dass die Autoren für die gängigen Webserver die Konfiguration für das URL-Rewriting aufzeigen: SPAs nutzen die HTML5-History-API, um die URLs der Routen im Browser zu manipulieren - das führt manchmal zu Fehlern, die man gar nicht an dieser Stelle vermuten würde.

Im fünften Teil stellen die Autoren einige Besonderheiten von Angular vor, z.B. Sever-Side Rendering, sowie das State Management einer Anwendung, dem gar 40 Seiten gewidmet sind.
Hierbei entwickeln die Autoren zunächst eigenen Code, um das Gefühl für das Problem zu erhöhen, um dann anhand von NgRX das Redux-Modell zu erläutern (darüber gibt es ganze Bücher).
Die letzte Iteration des "Book Monkey" stellt NativeScript vor, womit man mobile Anwendungen für iOS und Android erstellen kann.
Der Abschnitt "Wissenswertes" enthält noch diverse Infos über Frameworks, die mit Angular zusammenarbeiten - wer komplexe UI-Elemente benötigt, stößt mit der Bootstrap-Implementierung von Angular schnell an die Grenzen - hier werden kurz "Angular Material", PrimeNG und Kendo (um einige zu nennen) vorgestellt.
Man hätte sich hier eine Iteration zumindest mit "Angular Material" wünschen können, auch wenn die Autoren darauf der Einfachheit (der "Book Monkey" nutzt das CSS-Framework Semantic UI) halber verzichtet haben, um sich besser auf den Kern von Angular zu konzentrieren.

Etwas kurz wird das Thema "Update" behandelt - Angular bekommt alle sechs Monate eine neue Hauptversion, viele Bugfixes, und das führt mit der zunehmenden Anzahl an installierten Paketen nicht selten zu einem Alptraum; die Foren sind voll von Entwicklern, die an circular dependencies verzweifeln.

Das Buch selbst verdeutlicht das, denn im Vergleich zur vorigen Version wurden etliche Kapitel umgeschrieben oder hinzugefügt; manche Teile aus Angular < 6.x sind ganz verschwunden.
Angular hat eine steile Lernkurve, denn Typescript, Komponenten, Dekoratoren, Templatesyntax und das anschliessende Transpilieren mittels der Angular-CLI erinnern mehr an das Erstellen eines C - oder Java-Programms (make bzw. maven) denn an eine klassische Webanwendung der "guten alten Zeit".
Natürlich kann man sich Angular mittels etlicher Webseiten aus dem Internet selbst beibringen (und an den verschiedenen, nicht mehr unterstützten Varianten verzweifeln), doch dieses Buch macht das Leben einfacher.
Gefallen hat mir auch der Aufbau der Seiten: am Rand sind immer kurze Sätze oder Stichwörter, die den nebenstehenden Absatz kurz beschreiben.
Einzig - wie bereits beschrieben - wäre der Umgang mit einem GUI-Framework wie "Angular Material" wünschenswert erschienen, denn wer seine Anwendung mit Redux aufpeppt wird sicher keine Tabellen mit "*ngFor" zusammentackern wollen.
Alles in Allem ein gutes, umfangreiches Buch zum Thema Angular, das man sich klar zulegen kann.

Zwei Dinge noch: Man sollte nicht versuchen, alle besprochenen Teile in seiner ersten Anwendung unbedingt implementieren zu wollen.
Angular macht Sinn, wenn man eine Client-Server-Applikation entwickelt; für eine nahezu statische Seite mit einem Kontaktformular sollte man es sich tunlichst verkneifen.
Zurück zum Seitenanfang

Das Buch zum gut gestalteten Fotobuch

Buchcover von Das Buch zum gut gestalteten Fotobuch, O'Reilly Media

Autoren: Eva Ruhland, Michael Schmithäuser
Publisher: O'Reilly Media
ISBN: 978-3-86899-895-5
Preis: € 19.90 Print; € 16.00 eBook
Sprache: Deutsch
Mehr Informationen: Das Buch zum gut gestalteten Fotobuch - O'Reilly.de

Das Buch eignet sich besonders gut für Leser, die zuvor noch nie vorher ein Fotobuch gestaltet haben. In den ersten Kapiteln wird, am Beispiel der CEWE Software, Schritt-für-Schritt die Erstellung eines Fotobuchs erklärt. Dabei werden die einzelnen Schritte durch aussagekräftige Bilder illustriert, so daß hier kaum Fragen offen bleiben dürften. Der technische Teil reicht vom Herunterladen der Software über das Layout des Buches bis hin zur Bestellung. Für mich, die als "alter Hase" schon mehrere Fotobücher erstellt hat, boten die ersten Seiten wenig Neues, aber ein paar Tricks und Kniffe konnte ich mir dennoch abschauen, z.B. die Auswahl eines Passepartouts oder das Einfärben der Bilder. Danach wurde es auch für Fortgeschrittene deutlich interessanter, als es um die Seitengestaltung ging: Die Wahl des richtigen Bildausschnitts, Erzeugen von Spannung in der Bildkomposition, die Wahl der passenden Schriftart und Farbe: Einges davon macht man zwar intuitiv, dennoch denke ich, daß durch die guten Beispiele im Buch mein nächtes Fotobuch sicherlich noch um einiges überzeugender und spannender gestaltet sein wird.
Sehr gut gefallen haben mir zudem die Beispiel-Fotobücher, die von Strandurlaub über Baby- und Tierfotos bis hin zu Party- und Hochzeitsfotobüchern reichen. Hier gab es viele Highlights, wie beispielsweise das Übereinanderlegen von Bildern, die Gestaltung von eigenen Hintergründen oder Fotokollagen. Bei so vielen neuen Anregungen möchte man am liebsten gleich selbst mit dem nächsten Fotobuch loslegen.
Nach einer Menge Lob muss ich nun allerdings noch etwas Kritik üben: Das Kapitel über die Erstellung von Fotobüchern auf dem Smartphone fand ich persönlich überflüssig. Man kann es natürlich der Vollständigkeit halber erwähnen, allerdings frage ich mich, ob es tatsächlich Menschen gibt, die ihr Fotobuch über eine App auf dem Smartphone erstellen! Ich kann es mir zumindest nicht vorstellen.

Insgesamt ist es ein sehr hilfreiches Buch und eigentlich ein Must-Have für alle Fotobuchgestalter, die noch keine Profis sind. Allerdings schlägt es preislich mit fast 20 Euro zu Buche, was einen doch zweimal überlegen lässt, bevor man es sich kauft. Für Fotobuch-Neulinge, die sich nicht ewig lang auf eigene Faust mit einem Fotobuch-Programm herumschlagen möchten, ist es jedoch auch zu diesem Preis uneingeschränkt zu empfehlen.
Zurück zum Seitenanfang

Couch DB - Kurz & gut

Buchcover von Couch DB - Kurz & gut, O'Reilly Media

Autor: Mario Scheliga
Publisher: O'Reilly Media
ISBN: 978-3-89721-559-7
Preis: € 9.90
Sprache: Deutsch
Mehr Informationen: Couch DB - Kurz & gut - O'Reilly.de

Das für die kurz & gut-Reihe von O'Reilly eher dicke Buch beschreibt in elf Kapiteln die Installation, Konfiguration und Nutzung der CouchDB, einer der bekanntesten NoSQL-Datenbanken. Ein kleine Beispielanwendung rundet das Buch ab.

Für die kurz & gut - Reihe von O'Reilly ist das Buch über CouchDB fast schon ein dicker Wälzer. Scheliga geht das Thema knapp an, aber die klassische Frage: "Wozu brauche ich eine CouchDB anstatt einer relationalen Datenbank?" wird in einem Absatz kurz dargestellt.
Die Installation unter Linux, MacOS und Windows sowie vom Source wird erklärt, ebenso die einfache Kommunikation mit der CouchDB via REST und JSON, denn alle Abfragen gehen über HTTP und die JavaScript Object Notation (JSON). Wer die direkte Kommunikation via REST scheut findet aber auch Wrapper-APIs für die meisten Programmiersprachen, darunter PHP, Java, JavaScript, Python und Ruby.
Ein Kapitel widmet sich ganz der Pflege: anlegen, löschen, auflisten, umbennenen und das unvermeidliche Backup, ergänzt um die Besonderheiten von CouchDB wie Replikation und Komprimierung. Letzeres ist nötig, da CouchDB Veränderungen immer anhängt, so dass die DB wächst.
Ein weiteres Kapitel ist den Dokumenten gewidmet, denn in der CouchDB sind Dokumente das zentrale Thema, denn nicht nur die Daten sind Dokumente, auch die Abfragen und Transformationen werden als (Design-)Dokumente angelegt. Damit kein Missverständnis ensteht: es geht hier nicht um Dokumente als Datei, sondern um einen Datensatz.
Wer relationale Datenbanken kennt, muss hier umdenken, denn die Ergebnisse werden nach dem Map-/Reduce-Verfahren ausgegeben. Auf diese als Views organisierten Abfragen wird sehr detailliert eingegangen, denn sie stellen eine zentrale Technik dar; eher am Rande erfolgt die Kenntnis, dass diese Views immer aktuell sind, denn CouchDB aktualisiert diese Views on-the-Fly, wenn Dokumente bearbeitet werden. Mit Transformationen schliesslich kann das Ergebniss so aufbereitet werden, dass es direkt an den Client gesendet werden kann - damit kann man sich dann, sofern gewünscht, die Middleware sparen.
Bevor das Kapitel mit der Beispielanwendung kommt, wird noch auch die Sicherheit der CouchDB eingegangen, sowie der Validierung von Dokumenten.
Das letzte Kapitel bringt die schon angesprochene Beispielanwendung, welche auch im WWW heruntergeladen werden kann. Diese Beispielanwendung stellt eine eine einfache Todo-Applikation dar, die komplett in der der CouchDB gespeichert wird und ohne Middleware auskommt. Als Basis dient dazu das Tool CouchApp, das ein Skelett für eine Anwendung anlegt. Das interessante an der Anwendung ist, dass sie selbst als Dokument in der CouchDB liegt. Die Beispielanwendung deckt die besprochenen Techniken weitestgehend ab, sofern das auf die Schnelle möglich ist.

Das Buch beschreibt kurz & gut die CouchDB, es setzt auf jeden Fall das Verständnis von Webapplikationen sowie REST, JSON und JavaScript voraus.
Für den Nutzer, der schon relationale Datenbanken kennt und das Problem mit variierenden Daten hat (Stichwort EAV) ist die Anschaffung zu empfehlen.
Zurück zum Seitenanfang

The DAM Book, 2nd Edition

Buchcover von The DAM Book, 2nd Edition, O'Reilly Media

Review: Michael Plate

Autor: Peter Krogh
Publisher: O'Reilly Media
ISBN: 978-0-596-52357-2
Preis: € 48.00
Sprache: Englisch
Mehr Informationen: The DAM Book - O'Reilly.com

Um gleich keine falschen Vorstellungen aufkommen zu lassen: Bei diesem Buch geht es nicht um Linux oder Open Source, sondern um Digital-Asset-Management (kurz: DAM). Die im Buch vorgestellten Programme laufen nur unter Windows oder auf dem Mac, dennoch sind 75% des Buches im Prinzip unabhängig vom verwendeten Betriebssystem. Wo möglich ziehe ich als Vergleich z.B. Digikam, Gimp, Krita, LightZone, Pixel oder BibblePro 5 zum Vergleich heran (es gibt eine erstaunliche Anzahl an kommerzieller Fotosoftware für Linux).
Digital Asset Management beschäftigt sich mit der Nutzung, Verwaltung und Archivierung von digitalen Objekten. In diesem Buch geht es um digitale Fotos in einem "digitalen Fotografie Ökosystem".
Das Buch umfasst zwölf Kapitel, die über die Auswahl von Hard- und Software, Strategien zur Benennung der Bilder und Ordner sowie der Metadaten, Archivierung, Migration und immer wieder den Workflow gehen.
Unschwer erkennbar geht es um den "ernsthaften" Umgang mit digitalen Fotos. Krogh berät nicht umsonst die amerikanische Library of Congress. Nicht im Buch genannt, aber sicher für den geneigten Leser interessant ist die ISO 14721, die sicherlich bei vielen Archivierungssystemen Pate steht.
Ernsthaft heißt, dass sich der Fotograf Gedanken um den Umgang mit Bildern macht; es beinhaltet -überspitzt gesagt - nicht die Wahl Gigapixel-Mittelformat-Kamera versus Handyfotografie, sondern die Verwaltung der fotografierten Bilder.
Krogh definiert zunächst mal ein "Digitales Fotografie Ökosystem", in dem alle Komponenten aus Hard- und Software und natürlich das Bild, Dateiformate, Metadaten und der Fotograf ineinander greifen.

Im ersten Kapitel wird zunächst einmal der Sinn von DAM geklärt. Das reicht von Trivialitäten wie "verlieren Sie die Bilder nicht" bis zu knappen Aussagen über Softwareunabhängigkeit, Produktivität, Vermarktung, Lizensierung, Technolgy Watch, Workflow, Lifecycle und Systematisieren (die in den späteren Kapiteln detailliert werden). Die Begriffe werden kurz angeschnitten und erklärt, und wer sich immer schon in einem Berg Pixel verloren sah, bekommt hier einen Grundkurs für die Bildersammlung.

Das zweite Kapitel geht gleich mit dem wichtigsten Grundsatz los: Verändere niemals das Original ! (non-destructive Image Editing).
Sofern man unter Linux mit Raw-Bildern arbeitet, ist das i.A. kein Problem, da Raw-Bilder meistens erst konvertiert werden müssen. Wer jedoch mit JPEGs arbeitet - oder arbeiten muss - sollte aufpassen, wenn er den Speichern-Button drückt: Schnell ist die bearbeitet Version über das Original geschrieben. Bibble und LightZone schreiben grundsätzlich nicht über das Originalbild - hier bemerkt man den professionellen Hintergrund der Programme (bei Digikam ist das Feature angekündigt).
Die nächst höhere Liga heißt PIE (noch ein Akronym: Parametric Image Editing) und beschreibt eine Art Journal über die Änderungen am Bild. Unter Linux tritt einzig Bibble mit dieser Technik an. In der Praxis heißt das, dass Bilder nach der Bearbeitung nicht exportiert werden müssen: Beim Wiederaufruf der Datei zieht Bibble automatisch die gemachten Veränderungen wieder über das Original; das Journal wird dazu in einer eigenen Datei abgelegt.
Das Kapitel führt noch kurz in das Raw-Format, die Bayermatrix und die Anpassung an ein RGB-Modell zur Betrachtung ein. Der Rest handelt vom Problem, PIE mit dem Original zusammen in einer Datei abzulegen, was nicht ohne weiteres möglich ist. Als Ansatz für eine Lösung wird DNG (Digital NeGative) aufgezeigt, ein Format, dass Raw-Bilder herstellerunabhängig speichert mit beliebigen Metadaten.

Das dritte Kapitel beschäftigt sich ausgiebig mit Metadaten. Metadaten sind, einfach ausgedrückt, Daten über Daten. Bilder bringen i.A. eine Menge an Metadaten mit, nämlich solche, die die Kamera abspeichert. Das Kapitel erwähnt noch weitere Typen, die vom Besitzer eingetragen werden und neben Besitz auch Lizenzinformationen (z.B. Creative Commons) enthalten. Am wesentlichsten sind jedoch Metadaten, die vom Fotografen in Form von Schlagworten - selbst erfundene oder solche aus einer Systematik - dem Bild beigegeben werden und das Motiv beschreiben. Erst damit werden die Bilder such- und filterbar. Den Umgang mit Schlagworten unterstützt z.B. auch Digikam. Ebenso wird von Digikam auch die Vergabe von Ratings nach dem bekannten 5-Sterne-Prinzip unterstützt. Es geht weiter mit der Gruppierung von Bildern und einer Einführung in Metadataschemas wie Exif, IPTC und XMP. Zu guter Letzt kommt noch die Ortsbestimmung via GPS dazu (Geotagging). Ein Programm zum Geotaggen ist z.B. die Java-Anwednung "Geotag", die auch Ortsnamen auflösen und in die Bilder schreiben kann.

Das vierte Kapitel beschäftigt sich mit der Organisation der Bilder, vor allem mit der Benennung. Das Erstellen einer Ordnung zur Aufbewahrung der Bilder ist ein wichtiger Punkt. Das wird deutlich, in dem Krogh dieser Thematik 17 Seiten widmet und einen Lifecyle für die Bilder vom Speichermedium der Kamera bis zum Archiv und Backup entwirft - inklusive dem Splitten von Dateien für das Backup auf optische Medien. Wer mit Digikam arbeitet, ist die Albenansicht gewöhnt - das hat mit Kroghs System aber nichts gemein, da er zur Strukturierung Kataloge verwendet. Dies unterstützt unter Linux allerdings nur Bibble. In einem Katalog werden keine Bilder abgelegt, sondern Referenzen auf selbige. Kataloge sind damit wesentlich flexibler als Ordner, da sie an mehreren Stellen Referenzen auf die Bilder enthalten, die in einer Ordnerstruktur kopiert oder zumindest verlinkt werden müssten. Es folgt eine Anleitung, wie man Dateien am besten benannt - konsequenterweise nicht nur für das Originalbild, sondern auch für verschiedene ab geleite Bilder (derivates).

Das fünfte Kapitel geht auf die Hardware ein, auf der man seine Bildersammlung anlegt. Nach der ausführlichen Art und Weise, wie man Bilder ordnet, wird man nicht enttäuscht: Speicher für Arbeitsdateien, Archiv und Backup unter Betrachtung von Geschwindigkeit, Skalierbarkeit, Zuverlässigkeit, Desastersicherheit und Kompatibilität inklusive SPF (Single Point of Failure) auf der logischen Seite. Es folgt die Betrachtung von Medien (Festplatten, SSDs, ATA/IDE, SAS und Fiberchannel (!) und deren Anbindung (USB, Firewire, etc. bei externen Speichern) und deren Kauf (OEM versus Retail) bis hin zu Plattenverbünden via RAID und NAS. Viel Spielraum für Open Source Nutzer, die das alles günstiger auch mit Linux selbst tun können. Um das Kapitel abzurunden kommen noch optische Medien und Bänder zur Untersuchung. Alsdann folgt eine Einführung in den Aufbau eines Netzwerks, was eigentlich zu weit führt. Dafür hätte man sich sicher mehr zum Thema Monitor und Farbkalibrierung gewünscht, was leider etwas kurz gerät (mit Linux aber möglich: Little CMS). Letztlich landen wir bei der USV und einigen Beispielkonfigurationen, deren teuerste Hardwarepreise bis ins Kleinwagensegment reichen dürften.

Konsequenterweise handelt Kapitel sechs vom Backup und von Validierung. Zunächst geht Krogh kurz auf das Problem der korrekten Datei ein: Original, Backup, Dublette? Auch hier gilt: Ordnung ist das halbe Leben (die andere Hälfte türmt sich auf meinem Schreibtisch). Hier hilft die 3-2-1-Regel: 3 Kopien einer Datei auf zwei verschiedenen Medien und eine Kopie davon an einem anderen Ort. Als nächstes folgt eine Übersicht über diverse Desaster vom Virus bis zum Blitzeinschlag, und wie man dem mit diversen Backups beikommt. Wie man bereits im Workflow / Lifecycle - also der Bildübertragung und -erfassung, Bearbeitung und Ablage im System (Ingest) - alle Schritte sichern und validieren kann, kommt danach. Nach einer Reihe von Beispielkonfigurationen für das Backup geht es zum Thema Validierung. Dateisystemfehler kommen einem zunächst in den Kopf, aber auch versehentliches Löschen oder Übertragungsfehler werden behandelt. Die der Validierung von Bildern ist auch vom Format des Bildes abhängig. Krogh geht hier kurz auf DNG und Hashes ein; das vorgestellte Tool gibt es allerdings nicht für Linux. Es folgt noch ein kurzer Abschnitt zum Thema Restore.

Kapitel sieben beschäftigt sich wieder mehr mit den Bildern, und führt detailliert in den Workflow ein. Der erste Schritt ist die Aufnahme des Bildes in den Workflow (nicht die Aufnahme mit der Kamera), neudeutsch Ingest. Krogh beschreibt die Schritte Übertragung, Benennung, Sicherung (des Originals) und greift dabei auf seine Ordnerstruktur zurück. Das Kapitel arbeitet dann detailliert mit dem Ingest unter Ligthroom weiter, es wird auch ImageIngesterPro vorgestellt.

Kapitel acht beschreibt den detaillierten Umgang mit Arbeitsdateien; eigentlich ist das eine Vertiefung aus Kapitel sieben, wieder wird auch mit Lightroom gearbeitet, die Anpassung von Metadaten und das Rating und natürlich die eigentliche Bildbearbeitung bis zum "Proof". Bildbearbeitung ist aber kein Thema in diesem Buch, und wird deshalb auch nur als Arbeitsschritt angerissen. Für Linux bleiben an dieser Stelle vor allem LightZone, Bibble und Krita; Gimp ist für die Bearbeitung von Raw-Bildern trotz Import nicht geeignet, da es nur mit acht Bit Farbtiefe umgehen kann. Moderne Kameras bieten aber 12 - 14 Bit an, so dass Gimp allenfalls für die Nachbearbeitung von JPEGs geeignet ist. Ansonsten empfehle ich Krita aus dem KDE-Projekt, das kein Problem mit dieser Farbtiefe hat. Digikam bietet in seinen Kipi-Plugins zahlreiche Werkzeuge an, die jedoch nicht in allen Bereichen an LightZone oder Bibble heran reichen. Beide lassen sich aber zum Bearbeiten aus Digikam nutzen. Dafür wiederum bietet Digikam z.B. Fotorestaurierung. Kurz wird noch der Batchoutput zu Flickr und Webgallerien erwähnt, was mit Digikam sicher kein Problem darstellt. Dann kommt schon der Weg ins Archiv, bzw. die Erstellung von Derivaten und deren Behandlung. Der Rest des Kapitels geht wieder intensiv auf die Ordnerstruktur und Laufwerke ein, unter Berücksichtigung von Lightroom. Digikam kann aber ebenfalls mit mehreren Laufwerken arbeiten - allerdings nur für Alben. Am Ende steht eine komplette "Pipeline" zur Verarbeitung von Bildern (könnte man auch als Statemachine bezeichnen).

Kapitel neun und zehn beschäftigen sich ausführlich mit dem Workflow von Lightroom und Bridge/ACR, ein Blick lohnt aber definitiv, denn auch Digikam und Bibble bieten Teile der Funktionen.

Kapitel elf geht auf die Katalogisierung ein. Krogh widmet einen großen Teil der richtigen Auswahl der Software. Er geht dabei davon aus, das eine externe Software genutzt wird, und zeigt die Fallstricke im Zusammenspiel mit dem Ingest. Kataloge dürfen nicht mit den Alben von Digikam verwechselt werden, sie sind etwas anderes. Nur Bibble unterstützt unter Linux Kataloge. Kataloge enthalten keine Bilder, sondern Referenzen auf sie - gleichwohl soll es möglich sein, die Metadaten zu bearbeiten. Dementsprechend müssen die Schnittstellen zu Exif, XMP und IPTC vorhanden sein. Krogh baut eine Katalogstrategie auf, die natürlich umfangreich ist - passend zu seinen Beispielen im Buch. Als Software stellt er ExpressionMedia vor. Der Katalog ist für ihn das Tool, das aus der Arbeit erst das Produkt macht - beliebig such- und findbar, nach multiplen Kriterien, und auch exportierbar.

Mit Kapitel zwölf kommen wir zum Ende des Buches - und zu einem enorm wichtigen Thema: der Migration. Migration beschreibt, salopp ausgedrückt, den Wechsel eines Systems unter Beibehaltung möglichst aller Daten. Das betrifft nicht nur den Wechsel von einer Software zur anderen, sondern beinhaltet natürlich auch die Migration der komplexen Backupstrategie, die Krogh vorgestellt hat. Dazu kommen Beispiele für die Überführung und Konvertierung ungeordneter Sammlungen. Ganz zum Schluss kommt noch die Digitalisierung von analogem Film, mit einer normalen Digitalkamera.

Fazit: Das Buch ist eine absolute Bereicherung für jeden, der seine Digitalen Werke ordnen und erhalten will. Zwar geht es im Buch "nur" um Fotos, jedoch lassen sich die vorgestellten Lösungen auch für Musik und Videos verwenden, wenn auch mit anderen Programmen. OpenSource kommt im Buch nicht vor, das schmälert den Wert des Werkes aber nicht.
Zurück zum Seitenanfang

Dein Gehirn - Das fehlende Handbuch

Buchcover von Dein Gehirn - Das fehlende Handbuch, O'Reilly

Review: Joachim Drescher

Autor: Matthew MacDonald
Deutsche Übersetzung: Lars Schulten
ISBN: 978-3-89721-878-9
Preis: € 19.90
Sprache: Deutsch
Mehr Informationen sowie Probekapitel: Your Brain: The Missing Manual - O'Reilly.com

Wer dermaßen heftig auf die Pauke haut mit dem Versprechen, unserem Gehirn auf die Sprünge zu helfen darf erwarten, daß auch der Leser auf den Busch klopft und sich fragt, ob ihm dieses Buch wirklich noch gefehlt hat.

Das Inhaltsverzeichnis mit seinen zehn sofort als folgerichtig aufeinander aufbauend erkennbaren Kapiteln jedenfalls sieht vielversprechend aus; in der "fehlenden Danksagung" (die dann wunderbarerweise doch nicht fehlt) und der Einführung wird jedoch unentwegt weiter getrommelt. Uns wird ein "Selbsthilfebuch" versprochen, "Überdurchschnittlich" soll es sein, da auf den "Erkenntnissen der aktuellen Neurowissenschaften" basierend, und uns ermöglichen, "unsere mentale Hadware zu frisieren und zu polieren". Im vorletzten Satz der Einführung steht die Empfehlung, auf "die Sprache des Buches zu achten". Ok, gerne.

Nach einem guten Dutzend Seiten geht es dann richtig zur Sache: Kleinhirn, Großhirn, Limbisches System, Neuronen, Synapsen, Neurotransmitter, Funktionen des Hormonsystems und so weiter - alles knapp und übersichtlich dargestellt und einleuchtend bebildert. Und witzig ist es zuweiln auch: "... die Informationen reisen gelegentlich mit unterschiedlichen Geschwindigkeiten. ... Das ist der Grund dafür, daß Sie einen kurzen Augenblick Zeit haben, sich den Schmerz schon einmal vorzustellen, den Sie gleich fühlen werden, wenn Sie Ihren Zeh gegen einen Türpfosten gerammelt haben."

Ratschläge zum Gehirntraining, Kapitel über das Essen, den Schlaf sowie den Traum samt aktueller wissenschaftlicher Spekulationen über seine Bedeutung und vor allem über die Wahrnehmung (das Sehen) sind gut zu lesen, ihr Erkenntnisertrag liegt jedoch kaum über dem von nebenbei konsumierten GEO-Heftchen.

Unbedingt empfehlenswert sind die abgedruckten Web-Links zu optischen Täuschungen und Wahrnehmungseffekten. Sie bieten ein enormes Verblüffungspotential und auch eine ganz eigentümliche Schönheit. (z.B.: wikipedia: Optische Täuschung )

Das folgende Kapitel über das (Kurz- und Langzeit-)Gedächtnis und das Lernen halte ich für den nützlichsten Teil des Buches. Es könnte den Anreiz bieten, einmal eigenes Lernverhalten zu prüfen und auf der Grundlage eines funktionalen Verständnisses von Lernprozessen zu optimieren. Hiermit scheint auch die zuweilen doch recht nervige, marktschreierische Diktion des Buches legitimiert zu sein. Sie darf als notwendig gelten, um Informationen über die Schwelle unseres Vergessens ins Langzeitgedächtnis zu hieven.

Die Kapitel 6 bis 10 - um nur die Überschriften zu zitieren - über Emotionen, Rationalität, Persönlichkeit, den Kampf der Geschlechter und die (Individual-)Entwicklung des Gehirns vermitteln einen unübersehbar aufklärerischen Impetus. Wer sich um Erkenntnis bemüht, soll über die Macken seiner zerebralen Hardware Bescheid wissen, um mit diversen Workarounds die Wirklichkeit dennoch angemessen erkennen zu können. Es gibt hier viele erhellende Ausführung z.B. zu Statistik, Kreativität, Mustererkennung usw, sogar ein Persönlichkeitstest ist vorhanden, von allem etwas. Erwähnenswert auch der umfangreiche Index.

Ich halte das Buch insgesamt für lesenswert und die Darstellungen teilweise für ausgezeichnet - kann allerdings die angeführten neurologischen Basics nicht beurteilen. Die graphische Aufbereitung ist abwechslungsreich und augenfreundlich, auch wenn inhaltliche Gründe für Hervorhebungen nicht immer ersichtlich sind.

Wer sich vom "marktschreierischen" Stil nicht abschrecken lässt, wird es mit Gewinn lesen, und ob der Spruch vom "fehlenden Handbuch" mehr als nur ein Gag ist, mag jeder selber entscheiden.

Allerdings frage ich mich, wieso der Autor als Fixpunkt immer wieder die Aussage ansteuert, daß das Gehirn sich "einfach nicht für das Leben des 21. Jahrhunderts entwickelt" habe. Selbstverständlich ist die Herleitung der evolutionären Entwicklung des Gehirns unverzichtbar und die Betonung der Evolution seines Aufbaus in einer Zeit, in der der Unsinn des Kreationismus fröhliche Urstände feiert, besonders verdiensvoll. Die vielseitigen und differenzierten Darlegungen gipfeln jedoch immer wieder in der einen, recht platten Aussage "altes Gehirn, moderne Welt". Sicher, darüber kann man reden - allerdings nicht ausschließlich auf der Basis von sozusagen gehirnimmanenten Zusammenhängen. Gewisse historische Erkenntnisse (außerhalb und zusätzlich zur Gehirn-Evolution) müssten da schon hinzu kommen. Anders gesagt: Wer einen Hammer hat, dem ist alles Nagel, aber wir müssen ihm das nicht unbedingt glauben.
Zurück zum Seitenanfang

The Ultimate CSS Reference

Buchcover von The Ultimate CSS Reference, SitePoint

Review: Michael Plate

Autor: Tommy Olsson & Paul O'Brien
Publisher: SitePoint
ISBN: 978-0-9802-8585-7
Preis: € 43.00
Sprache: Englisch
Mehr Informationen: The Ultimate CSS Reference - SitePoint

Eher ungewöhnlich für ein Computerbuch kommt dieses Buch in einem Hardcover (Leineneinband) mit Schutzumschlag. Auf ca. 420 Seiten beschreiben die beiden Autoren Tommy Olsson und Paul O'Brien Cascading Stylesheets (CSS).

Das Buch ist das, was der Titel - etwas vollmundig "ultimate" - verspricht: eine Referenz, also kein Lehrbuch.

Das Buch ist in 18 Kapitel unterteilt, beginnend mit einer kurzen Einführung in CSS. Das zweite Kapitel zeigt detailliert die Syntax von CSS, führt in den Aufbau und die Begrifflichkeiten wie rule sets, classes, selectors, properties, keywords etc. ein und erklärt die unterschiedlichen Einheiten, die bei den Werten der properties benutzt werden können. Das wird an einem typischen Beispiel erläutert, mit Verweisen auf die erläuternden Seiten.

Kapitel 3 widmet sich ausschliesslich den At-Rules (@media, @import, etc.).

Das vierte Kapitel widmet sich ausführlich der Verwendung von Selektoren, im fünften Kapitel werden die Vererbung und die Kaskade dargelegt.

Kapitel sechs beschäftigt sich sehr ausführlich mit dem Boxmodell und der Positionierung von Elementen - sowie dem immer beliebten Thema Floating vs. Absolute Positioning - während Kapitel sieben sämtliche box-properties im Detail darstellt.

Die weiteren Kapitel beschreiben die Nutzung der entsprechenden properties, aufgeteilt nach Layout, Listen, Tabellen, Farben und der Schriftauszeichnung. Die letzten Kapitel gehen auf herstellereigene properties und die unvermeidlichen CSS-Hacks ein.

Das Layout des Buches ist in verschiedenen Blautönen gehalten.
Die einzelnen Kapitel sind klar und übersichtlich strukturiert. Jede Eigenschaft wird mit einer Kompatibilitätstabelle sowie der Spezifikation (CSS1,2 bzw. Ausblick auf 3) sowie der Vererbung durch das Elternelement und einem Beispiel beschrieben. Die Kompatibiblitätsliste umfasst dabei die Browser IE 5.5, 6.0 und 7.0, drei Versionen des Mozilla Firefox (1.0, 1.5, 2.0), drei Versionen des Safari (1.3, 2.0,3.0) aber nur eine Version des Opera-Browsers (9.2). Fraglich bleibt hier, ob man nicht mehr Opera-Versionen hätte testen sollen - den IE 5.5 hätte man sich sicherlich getrost schenken können, zumal die Versionen für den Apple und Windows Unterschiede haben.

Das Buch beschreibt in einem Kapitel am Ende diverse Hacks, die man - leider - alltäglich braucht, sofern man nicht unbedingt eine Browserweiche bauen will, um verschiedene Stylesheets zu implementieren. Der Klassiker ist der Star-Hack (* html body ...) für den IE6, den es aber auch als Plus-Hack für den IE7 gibt - dieser wird im Buch allerdings nicht erwähnt.

Leider fehlt dem Buch ein Stichwortverzeichnis; zwar gibt es ein Verzeichnis der CSS-properties, eine echtes Stichwortverzeichnis wäre aber ein Mehrwert.

Insgesamt stellt sich natürlich die Frage, wie sinnvoll gedruckte Referenzen zu derart "lebendigen" Technologien eigentlich noch sind, zumal die Onlinereferenz ja auch frei zugänglich ist.

Für alle, die eine kompakte Referenz zum Blättern mögen ist das Buch eine gute Investition; die Online-Version enthält dazu noch eine Liste aller der CSS-Beispiele aus dem Buch, die man dort auch "live" verändern kann.
Zurück zum Seitenanfang

HTML mit CSS und XHTML von Kopf bis Fuß

Buchcover von HTML mit CSS und XHTML von Kopf bis Fuß, O'Reilly

Review: Bodo Bender

Autor: Elisabeth Freeman, Eric Freeman
Deutsche Übersetzung: Lars Schulten, Stefan Fröhlich
ISBN: 978-3-89721-453-8
Preis: € 44.90
Sprache: Englisch / Deutsch
Mehr Informationen sowie Probekapitel: Head First HTML with CSS & XHTML - O'Reilly.com

Wenn man von "dem Internet" spricht, meint man in der Regel von Internetseiten des World Wide Webs (www). Alle diese Seiten haben gemeinsam, dass Sie mit der Seitenbescheibungssprache HTML geschrieben wurden. Mit Hilfe von HTML werden Text und Inhalte wie zum Beispiel Bilder formatiert und mit interaktiven Funktionen wie z.B. Links versehen. Egal ob man auf einer Seite eine fett gedruckte Überschrift sieht oder einen Link bedienen kann. Immer ist es HTML, dass im für den Endbenutzer unsichtbar im Hintergrund die Anweisungen gibt, wie die Texte und anderen Inhalte dargestellt werden sollen. Das Buch beschäftigt sich zum einen mit den Grundlagen von HTML als auch mit den Grundlagen der wichtigsten Weiterentwicklungen und Erweiterungen (Xhtml & CSS). Da sich das Buch wie der Titel schon erahnen lässt an Anfänger wendet geht es sehr ausführlich auf die Grundlagen ein ohne sich in Details zu verlieren, die für Anfänger weniger interessant sind. So beschäftigt sich das Buch weniger mit der Geschichte von HTML und seinen verschiedenen Versionen noch ausführlich mit der Problematik, dass einige im HTML Standard vorgesehene Funktionen nie umgesetzt worden sind oder heute aufgrund neuerer, besserer Techniken (z.B. CSS) verdrängt wurden. Um den Leser nicht zu verwirren werden daher Funktionen von HTML, die in der Regel heute durch CSS ersetzt werden nicht oder nicht ausführlich beschrieben. Das Buch empfiehlt folgerichtig auch explizit nur die neusten Techniken zu verwenden. Dem Anfänger wird so erspart sich in Dinge einzuarbeiten, die dann ein paar Seiten später schon als veraltet bezeichnet werden. Wer das Buch durchgearbeitet hat ist mit allen Grundlagen vertraut um einfache Internetseiten per Hand gestalten zu können.
Aufbau: Das Buch ist als Kursus in 14 Kapiteln aufgebaut. Jedes Kapitel baut auf dem vorherigen auf. Als Nachschlagewerk (HTML-Reffernz) ist es daher weniger geeignet. Hierfür gibt es aus dem O'Reilly passende Alternativen, die allerdings nur für Leser geeignet sind, die bereits Vorkenntnisse haben und nur gezielt etwas nachschlagen wollen.
Konzept: Das Buch gehört zu der neuen "Kopf bis Fuß"- Buchreihe aus dem O'Reilly Verlag. Neu an dieser Buchreihe ist das Konzept. Es basiert auf neueren Erkenntnissen öber das Lernen. Statt einfach ein Thema nach dem anderen darzustellen versucht das Buch den Leser in dem Lernprozess zu begleiten. Alle Themen sind daher ansprechend, motivierend und erläuternd bebildert. Zu jedem Thema gibt es Übungen samt Lösungen. Wo man bei anderen Büchern sich zu einem Thema noch per Hand in das Buch Notizen machen würde, haben das die Autoren gleich für einen übernommen. So ist es der Stil der Reihe, dass ein komplexer Absatz mit "handschriftlichen" Notizen näher erläutert. Die Autoren widmen Ihrem Lernkonzept ein ausführliche Einführung um den Leser zu überzeugen, dass er sich auf dieses Konzept einlassen soll, um einen möglichst großen Erfolg zu erzielen.
Kritik: Mir persönlich fehlt an dem Buch eine Kurzreferenz. Wenn man mal wieder einen Befehl (Tag) vergessen wäre es schon schön, wenn man den schnell nachschlagen könnte.
Zurück zum Seitenanfang

Internet-Telefonie mit Asterisk

Buchcover von Internet-Telefonie mit Asterisk, O'Reilly

Review: Stefan Triller

Autor: Jared Smith, Jim Van Meggelen & Leif Madsen
Deutsche Übersetzung: Peter Klicman, Andreas Bildstein
ISBN: 978-3-89721-445-3
Preis: € 39.90
Sprache: Deutsch
Mehr Informationen sowie Probekapitel: Asterisk: The Future of Telephony - O'Reilly.com

Das Buch "Internet Telefonie mit Asterisk" gibt dem Leser einen sehr guten Überblick über alle Themen der Telefonie. Es erklärt die Grundlagen der analogen und digitalen Telefonie und beschreibt, wie man sie in Asterisk integriert und mit neueren Technologien wie VoIP verknüpft. Einen wichtigen Hinweis gibt es vorweg zu sagen, nämlich das die deutsche Ausgabe des Buches ein extra Kapitel zur Nutzung von Asterisk mit ISDN enthält welches in den USA eher weniger gebräuchlich ist.
Zu Beginn des Buches werden die Vorraussetzungen geschaffen, um Asterisk auf dem eigenen Rechner zu installieren, der Leser bekommt erklärt welche Telefonie-Hardware für welche Einsatzgebiete geeignet sind und welche Stolpersteine man beachten sollte. Hinterher wird man durch die komplette Installation von Asterisk nebst Treiber für die vorher erwähnten Hardwarekomponenten geleitet, obwohl es bei vielen Distributionen heute schon möglich ist dies über die Paketverwaltung zu erledigen. Allerdings kann es sein, dass verschiedene Treiber gepatcht werden müssen, somit ist es gut dass das Buch das kompelieren von Hand beschreibt.
Der Kern eines Asterikssystems besteht aus dem Wählplan, also welches Gespräche wohin geroutet werden soll. Ihm wurden sogar 2 Kapitel gegönnt, um es dem Leser zu verdeutlichen. An Hand von Beispielen wird erklärt was die enthaltenen Befehle bewirken und wie man sie einsetzt. Weiterhin bekommt der Leser Zusatzinformationen über VoIP-Protokolle und Sprachcodecs, um zu verstehen, wie sie funktionieren und welches für den geplanten Einsatzzweck am besten geeignet ist.
Auch versierte Asterisk-Nutzer finden nützliche Tipps, z.B. für das Automatisieren von Ereignissen mit Hilfe des Asterisk Gateway Interface (AGI), das Anbinden von Asterisk an computergenerierte Sprachausgabe (mittels Programm: festival) oder die Nutzung eines externen DUNDi Dienstes (vergleichbar mit ENUM, also Nutzung eines Telefonbuchdienstes).

Alles in allem kann man dieses Buch auf jedenfall empfehlen, da es einen guten Überblick über die Zusammenhänge der zugegebenermassen recht vielen Konfigurationsdateien von Asterisk gibt und darüber hinaus auch für erfahrenere Asterisk-Nutzer etwas zu bieten hat.
Zurück zum Seitenanfang

Einführung in die bash-Shell

Buchcover von Einführung in die bash-Shell, O'Reilly

Review: Joachim Drescher

Autor: Cameron Newham
Deutsche Übersetzung: Dinu C. Gherman
ISBN: 3-89721-424-5
Preis: € 34.00
Sprache: Deutsch
Mehr Informationen sowie Probekapitel: Einführung in die bash-Shell - O'Reilly.com

Wer sich früher vielleicht mal ganz behende in DOS bewegt hat und auch in der Windows-Welt die eine oder andere Nuss zu knacken wusste, wird beim Ein-, Um- oder Zusteigen mit Linux zunächst weniger Schwierigkeiten bekommen als befürchtet. Im Desktop-Bereich sehen viele gängige Programme sehr ähnlich aus, und man kann sie sich noch ähnlicher hinkonfigurieren. Auch auf der Textkonsole steht man nicht gleich ganz hilflos da: Der gute alte dir-Befehl ist freundlicherweise meist mitimplementiert, mit cd kann man sich wie gewohnt durch die umfangreichen Verzeichnisbäume hangeln und an rm statt del oder cp statt copy kann man sich schnell gewöhnen, und daß der dumm zu greifende Backslash \ für die Verzeichnisnahmen durch den netteren "normalen" Schrägstrich / und das Parameter-Zeichen nach einem Befehl durch den viel sinnfälligeren und einfacheren Strich - ersetzt ist, wird man gern registieren. Aber sehr bald wird man feststellen müssen, daß die berühmte "intuitive Bedienbarkeit" nicht sehr weit führt, und in einer shell schon gar nicht. Scheinbar bekannte Befehel verhalten sich ganz anders, und wer z. B. nur mal den Befehl set probiert, um wie unter DOS bloß mal ein paar Umgebungsvarible zu sehen, der wird fast erschrecken, was da alles durchrauscht und sich erstaunt fragen, wann zum Teufel das denn alles ausgeführt wird.

Nun ist Linux ja an sich ein recht auskunftfreudiges System. Fast jeder Befehl hat seine Hilfe-Parameter, der help-Befehl und die man-pages sind mit englischen Grundkennntnissen und einem Wörterbuch leicht zu erschließen, und im Internet kann man Überblicke oder Darstellungen zu Detailproblemen ohne Zahl hervorstochern. Trotzdem wird, je nach Notwendigkeit oder eigenem Anspruch früher oder später, der Zeitpunkt kommen, wo es unausweichlich scheint, sich einen strukturierten und umfassenden Überblick über das gesamte Gebiet zu verschaffen.

Dabei kann das Buch eine gute Hilfe sein. Bereits im Vorwort werden die allerwichtigsten Eigenschaften der bash aufgelistet, die einzelnen Kapitel vorgestellt, etwas zu Codebeispielen und typografischen Konventionen gesagt, vor allem aber machen sich die Autoren Gedanken über die Zielgruppe, was mehr ist, als man von den meisten Computerbüchern erwarten kann. Zwar wiederholt das 1. Kapitel allerei Grundkonzepte, aber als "totaler Anfänger ... wird Ihnen das möglicherweise zu schnell gehen" (S. X) Tatsächlich scheinen die Autoren beträchtliche Arbeit und Erfahrung in die Aufgabe gesteckt zu haben, die technischen Inhalte nicht einfach bloß in einem sachlogischen Zusammenhang darzustellen, sondern sie tatsächlich didaktisch aufzubereiten. Dazu gehört auch eine Sprache, die Freude bereitet. Wenn ich einen Satz lese wie: "Ich betrachte die Shell-Programmierung als natürliche, unvermeidliche Folge der zunehmenden Erfahrung eines Benutzers." (S. XI), dann hat der Autor bei mir erstmal Kredit.

So liest es sich denn auch am Anfang recht angenehm und leicht dahin. Trotzdem kamen dabei auch Informationen rüber, auf die ich, da nicht danach gesucht, nie gekommen wäre. Z.B. expandiert die bash Wildcards auch in Pfadnamen, wovon ja ein DOS- oder Windows-User nur träumen kann, (und sie expandiert sie, nebenbei gesagt, logisch korrekt). Auch hatte ich zwar schon mehrmals gelesen, daß "bash" für "Bourne again shell" stehe, was mich aber ratlos zurückließ, bis mir jetzt hier gesagt wurde, wer Steve Bourne war. Überhaupt das Merken: Es nützt nur wenig, wenn Befehle oder Parameter Abkürzungen oder sonstige mnemotics sind, aber man nicht weiß, wofür sie stehen. Newham und Rosenblatt erklären dies recht ausführlich und umfassend. Es sind ja oft die sinnlos erscheinenden Details, die die meisten Schwierigkeiten bereiten. In Linux kann einem, selbst wenn man Computer schon in etlichen Programmiersprachen dressiert hat, z.B. das hierarchische Quotierungssystem immer wieder die schönsten Fallen stellen, wenn man sich nur ungenau über die Frage - was macht die Shell, was macht der Befehl - im Klaren ist. Wir finden im Buch dazu schöne Beispiele, und "Wenn Sie das verstehen, werden sie kein Problem haben, die anderen verwirrenden Probleme zu lösen, die sich aus der oftmals kryptischen Syntax der Shell ergbeben."(S. 24) Auch simple Erklärungen können einen Aha-Effekt hervorrufen, daß z.B. der Backslash als Fortsetzungszeichen bei umgebrochenen Kommandozeilen nichts anderes als eine quotiertes Return ist, welches somit die Befehlsinterpretation nicht beendet.

An sich wäre es ja auch selbstverständlich, daß Wildcarts auch im Pfadnamen gelten, (oder daß beispielsweise auch so ein Ausdruck wie "*hallo*" jedes "hallo" findet, der diesbezüglich unverwöhnte MS-User wird sich freuen, solche Feinheiten nebst vielen anderen gleich auszuprobieren.

Überhaupt bringen die Autoren das Kunststück fertig, die lern-notwendige Redundanz nebst Vor- und Rückverweisen unterzubringen, ohne damit Langeweile zu erzeugen. Sicher, man könnte sich darüber unterhalten, ob der emacs- UND der vi-Modus beim Bearbeiten von Kommandozeilen wirklich in aller Ausführlichkeit gebracht werden müssen, andererseits, was solls, man kann sowas auch überfliegen, und wer sich für einen der Editoren entscheiden möchte, wird genau diese Darstellung vermutlich zu schätzen wissen.

Nachdem man noch im 3. Kapitel gemütlich seine Arbeitsumgebung gestaltet konnte, geht es ab dem 4. Kapitel dann langsam aber sicher zur Sache, mit der "Einfachen Shell-Programmierung" beginnend. Die Autoren schreiben zwar, daß man "es auch als Nicht-Programmierer lesen" und damit was anfangen können, stellen aber gleichzeitig fest, daß "zusätzliche Erfahrungen in einer konventionellen Programmiersprache ..." hilfreich seien, wenn auch nicht "zwingend notwendig". Wer möchte und zäh genug dran bleibt, kann es hier sozusagen von Anfang an stufenweise lernen. Der weitere Aufbau folgt einer solchen Programmier-Lern-Logik: Kontrollfluss, Optionen und Variablen, Ein- und Ausgabe, Prozess-Behandlung, Fehlersuche, Administration sind weitere Kapitel. (Selbstverständlich schreiben die Autoren auch, welche Aufgaben man besser mit "richtigen" Programmiersprachen löst.)

Man findet im Buch neben vielen sofort anwendbaren praktischen Beispielen und "Aufgaben", auch diverse Anhänge mit Befehlsreferenzen, Vergleiche mit anderen Shells, Stichwortregister, was insgesamt einen hohen Gebrauchswert verspricht.
Zurück zum Seitenanfang

Netzwerksicherheits Hacks

Buchcover von Netzwerksicherheits Hacks, O'Reilly

Review: Kai Baumgart

Autor: Andrew Lockhart
Deutsche Übersetzung: Andreas Bildstein
ISBN: 3-89721-384-2
Preis: € 30.00
Sprache: Deutsch
Mehr Informationen sowie Probekapitel: Network Security Hacks - O'Reilly.com

Das Buch Netzwerksicherheits Hacks ist die deutsche Übersetzung des englischsprachigen Buches "Network Security Hacks" von Andrew Lockhart und ist eine Sammlung von 100 Tipps und Tricks um die Sicherheit in Netzwerken zu erhöhen. Das Buch beschätigt sich sowohl mit Linux- und OpenBSD-Servern als auch mit Windows(2003)-Server was einen breiten Überblick über die Möglichkeiten der Absicherung und Angriffsflächen in heterogenen Netzwerken gibt.

Dieses Buch birgt eine Menge breit gefächerter Tricks und bedient Felder nicht nur auf Seiten des Netzwerks sondern auch auf Seiten der Hosts im Netzwerk. Themen wie (Network) Intrusion Systems, grsecurity mit ACLs oder zum Beispiel Logging übers Netzwerk sind Beispiele von Themen, die ein wenig ausführlicher betrachtet wurden.

Obwohl das Buch zu den einzelnen Hacks manchmal nur kurze Einführungen geben kann, bringt es einen sehr ausführlich Überblick über die jeweiligen Techniken und Möglichkeiten, die ein Administrator anwenden kann. Die einzelnen Tipps bauen meist nicht aufeinander auf, sodass man selbst entscheiden kann, was man umsetzt. Ein wenig nachteilig mag es jedoch erscheinen, wenn man ein vermindertes Interesse an der Absicherung eines Windows2003-Servers zeigt, da dies einen (wenn auch geringen) Teil des Buches ausmacht.

Fazit: Frei nach dem Grundsatz - Sicherheit ist kein Zustand, sondern ein Prozess - wird dem Leser eine große Sammlung an Techniken geliefert, die zwar teilweise altbekannt ist, aber nichtsdestotrotz nicht weniger wirkungsvoll sind. Grundsätzlich wird eine Übersicht geboten, was man einsetzen kann und was es bringt. Ob man jedoch jeden einzelnen Trick in der Praxis anwendet, ist jedoch dem Leser überlassen...
Zurück zum Seitenanfang

Secure Programming Cookbook for C and C++

Buchcover von Secure Programming Cookbook for C and C++, O'Reilly

Review: Michael Süß

Autoren: John Viega & Matt Messier
ISBN: 0-596-00394-3
Preis: € 48.00
Sprache: Englisch
Mehr Informationen, sowie Probekapitel: Secure Programming Cookbook for C and C++ - O'Reilly.com

Ich bespreche heute das Buch "Secure Programming Cookbook for C and C++" von John Viega und Matt Messier, und zwar in der englischen Ausgabe. Es trägt den bezeichnenden Untertitel "Recipes for Cryptography, Authentication, Networking, Input Validation & More", und das kann man ziemlich genau so auch als kurze Inhaltsangabe durchgehen lassen.

Es enthält jede Menge kurze oder auch teilweise nicht so kurze Anleitungen darüber, wie man häufig auftretende Probleme aus den oben genannten Bereichen in C und C++ möglichst sicher löst. Beispiele für solche Anleitungen sind:
- wie erstelle ich einen SSL-Client (und wie mache ich ihn schneller)
- wie verhindere ich Pufferüberläufe
- wie finde ich heraus, welchen Verschlüsselungsalgorithmus ich verwenden sollte

Die Anleitungen sind meißtens in sich abgeschlossen, stimmig und kratzen wie ich finde auch nicht nur an der Oberfläche des Problems. Um zu beurteilen, wie sicher die angeboten Lösungen tatsächlich sind fehlt mir allerdings das nötige Expertenwissen, zumindest sind mir keine offensichtlichen Fehler aufgefallen. Häufig gibt es Verweise auf fertige Bibliotheken, die das Problem bereits lösen, was ich persönlich oft nützlicher finde als eine extensive Besprechung einer eigenen Implementierung.

Die Autoren haben versucht, sowohl Windows als auch Linux unter einen Hut zu bringen, was ihnen wie ich finde auch recht gut gelingt. Zum Ende möchte ich noch eine Empfehlung zum Kauf des Buches abgeben: Dies ist kein Buch für jeden C / C++ - Programmierer, insbesondere angesichts des nicht ganz kleinen Preises (aber das sind wir von Fachbüchern ja gewohnt, oder?). Viele der angesprochenen Themen werden von der Mehrheit der Programmierer nie benötigt (wie oft implementiert man denn z.B. einen Verschlüsselungsalgorithmus in C?). Wenn man allerdings doch mal in die Verlegenheit kommen sollte, sich mit den Themen Kryptographie, Authentisierung, Netzwerkprogrammierung, etc. zu beschäftigen, und das ganze in C / C++ tun zu wollen, dann sollte man sich dieses Buch definitiv gönnen!
Zurück zum Seitenanfang

Secure Coding: Principles and Practices

Buchcover von Secure Coding: Principles and Practices, O'Reilly

Review: Michael Süß

Autoren: Mark G. Graff & Kenneth R. van Wyk
ISBN: 0-596-00242-4
Preis: € 29.00
Sprache: Englisch
Mehr Informationen, sowie Probekapitel: Secure Coding: Principles and Practices - O'Reilly.com

Im Buch "Secure Coding" mit dem Untertitel "Principles and Practices" beschreiben die Autoren, wie man sichere Programme schreibt und Systeme aufsetzt. Es ist in 6 Kapitel unterteilt, die sich grob mit "Grundlagen", "Architekturen", "Design", "Implementierung", "Administration" und "Automatisierung und Tests" überschreiben lassen.

Insbesondere in den ersten Kapiteln wird das Thema Sicherheit aus einer relativ weit entfernten Perspektive betrachtet. Mir persönlich gefiel das nicht so, da viele der dort behandelten Themen jedem ein Begriff sein dürften, der sich schon einmal mit Computersicherheit beschäftigt hat. Nichts desto trotz ist dieser Teil sicherlich als Übersicht der Grundlagen nützlich, auch wenn diese vielen Leuten bekannt sein dürften.

In den späteren Kapiteln des Buches wird es dann konkreter, wobei hier meisst die Kapitel in "Sachen, die man tun sollte", "Sachen, die man nicht tun sollte" und "Beispiele aus der Praxis" eingeteilt sind. Mit Hilfe dieser Einteilung ist es möglich, einen guten Einstieg in das Thema zu erhalten. Leider hatte ich manchmal das Gefühl, hier nur eine lose Sammlung von Checklisten vor mir zu haben, die man auch aus dem Internet bekommen könnte. Teilweise recht langatmige Erläuterungen zu offensichtlichen Punkten dieser Checklisten vertiefen diesen Eindruck. Durch die guten Hinweise auf weiterführende Literatur im Text und im Anhang wird das jedoch etwas kompensiert. Auch die anschaulichen Beispiele (grösstenteils aus den persönlichen Erfahrungen der Autoren) sind unterhaltsam und lehrreich.

Seine wahren Stärken entwickelt dieses Buch vermutlich, wenn man tatsächlich vor der Aufgabe steht, eine "sichere" Anwendung zu entwickeln. An diesem Punkt sind die erwähnten Checklisten ein nützliches Mittel, um seine Anwendung zu überprüfen. Ich glaube daher, dass eine der größten Stärken dieses Buches darin liegt, das es einen selbst lehrt, zur rechten Zeit die richtigen Fragen zu stellen. Auch einige Optionen zur Lösung häufig auftretender Problemklassen werden aufgezeigt, ohne dabei allzusehr auf Spezifika bestimmter Programmiersprachen einzugehen (obwohl das gesammte Buch etwas C-lastig ist).

Zusammenfassend handelt es sich bei "Secure Coding: Principles and Practices" um ein gutes Buch mit ein paar Schwächen im Detail, so dass ich nur 3 von 5 Punkten vergeben möchte.
Zurück zum Seitenanfang

Managing Security with Snort and IDS Tools

Buchcover von Managing Security with Snort and IDS Tools, O'Reilly

Review: Stefan Triller

Autoren: Kerry J. Cox & Christopher Gerg
ISBN: 0-596-00661-6
Preis: € 38.00
Sprache: Englisch
Mehr Informationen, sowie Probekapitel: Managing Security with Snort and IDS Tools - O'Reilly.com

Dieses Buch beschreibt weit mehr als nur Snort.
Es fängt an mit der Erklärung, was (N)IDS Systeme sind, wofür man sie braucht und auch, dass die alleinige Existenz von Ihnen keine Sicherheit des Netzes ausmacht.
Danach geben die Autoren einen Überblick über den Aufbau eines IP-Headers, TCP-Headers, 3 Way Handshake usw. Dies wird an Hand von Beispielen mit tcpdump dargelegt. Netzwerkerfahrene Administrtoren können diesen Teil ruhig überspringen.
Im nächsten Kapitel geht es dann auch schon los, es wird die Installation von Snort unter Linux und Windows beschrieben und welche Optionen Snort bietet.
Und da man wissen sollte warum man überhaupt ein IDS System haben sollte, werden Tools wie nmap, Nessus und Co beschrieben, welche Systeme auf offene Ports und Schwachstellen testen. Mit ihnen kann man nachher auch Snortalarme testweise auslösen.
Ein ganzes Kapitel beschreibt nur die snort.conf, die zentrale Konfigurations Datei von Snort. Es wird auf jede Option kurz eingegangen und die Preprozessoren genauer beschrieben. Außerdem werden nützliche Tipps gegeben um "false positives" zu vermeiden.
Nun stellt sich die Frage: Wohin mit den Snort Sensor in meinem Netzwerk? - auch dies wird in dem Buch behandelt, wobei einige verschiedene Konstellationen diskutiert werden.
Natürlich darf auch eine Anleitung zum Erstellen von eigenen Regeln zur Erkennung von Mustern im Netzwerktraffic nicht fehlen, deswegen widmen die Autoren ebenfalls ein komplettes Kapitel nur diesem Thema.
Da das Lesen von Logfiles für den Menschen meist nicht sonderlich angenehm ist, gibt es einige GUIs zum Darstellen der Snortalarme und Logs. Ausführlich beschrieben werden z.B. ACID und Snortcenter, welches beide Webinterfaces sind.
Zum Abschluss geben die Autoren noch einige Tipps um Snort in Netzen einzusetzen, in denen sehr schnelle und ausgelastete Leitungen gibt, sodass man nicht so ohne weiteres die Standardconfig nutzen könnte, da der Sensor dies unmöglich schaffen könnte.
Alles in allem finde ich dieses Buch durchaus empfehlenswert für Netzwerkadminstratoren, die ihr Netz im Auge haben wollen und dafür ein (N)IDS installieren möchten, oder auch für die, die bereits Snort installiert haben.
Denn für letztere gibt es eine ganze Reihe Tipps, die sehr nützlich sind.
Zurück zum Seitenanfang

Programming Perl, 3rd Edition

Buchcover von Programming Perl, 3rd Edition, O'Reilly

Review: Michael Süß

Autoren: Larry Wall, Tom Christiansen, Jon Orwant
ISBN: 0-596-00027-8
Preis: € 48.00
Sprache: Englisch
Mehr Informationen, sowie Probekapitel: Programming Perl, 3rd Edition - O'Reilly.com

"Part bible, part encyclopedia, and part almanac, this is the essential book on Perl". So geschrieben stehts auf dem Umschlagtext der englischen Version von "Programming Perl", über die ich heute berichten möchte. "The incontestably definitive reference book on Perl" behaupten die Perl-eigenen Manual Seiten. Nimmt man dann noch die Tatsache dazu, das Larry Wall, der Hauptautor dieses Buches auch gleichzeitig noch der Erfinder von Perl ist, versteht man vielleicht, warum ich dieses Buch über Perl haben wollte.
Der erste Eindruck zählt ja bekanntlich oft einiges, und mein erster Eindruck war: Oh Mann, dieses Buch ist dick! Über 1000 Seiten geballtes Perl Know-How in einem massiven Block. Oh ja, und jetzt weiß ich auch, woher das Buch seinen Spitznamen "Camel-Book" bekommen hat (kennt man ja von O'Reilly).
Aber genug der Äußerlichkeiten, schon ein Blick ins Inhaltsverzeichnis verrät, das dieses Buch tatsächlich mehrere Kundenkreise anspricht: Im ersten Teil des Buches erhält der Perl-Neuling einen umfassenden Überblick über die Sprache, ihre Eigenschaften und Stärken und nach dem Lesen dieser knapp 50 Seiten sollten man in der Lage sein, bereits eigene kleine Perl-Skripte zu verfassen und zumindest einen groben Überblick über den Inhalt fremder Programme zu erhalten (sollten diese denn einigermaßen leserlich geschrieben sein, es ist ja in Perl ziemlich einfach, Skripte zu verfassen, die wirklich nur der Programmierer versteht, der sie verfasst hat - und selbst das nur zwei Wochen lang).

Weiter geht es mit dem zweiten Teil des Buches, wo dann im Detail und auf rund 350 Seiten all das Handwerkszeug ausführlich beschrieben wird, mit dem man sich als Programmierer die Zeit vertreibt: Operatoren, Reguläre Ausdrücke, Funktionen, Datenstrukturen und vieles mehr sind hier die Themen.
In vielen Büchern wäre wohl anschließend Schluß und allein für diese Kapitel ist das Buch vermutlich seinen Preis wert, allerdings geben sich die Autoren damit nicht zufrieden, sondern hängen noch Teile über "Perl als Technologie" (wo es auf 150 Seiten um erweiterte Konzepte wie Inter Prozess Kommunikation, Threading, oder den Debugger geht) sowie "Perl als Kultur" (CPAN, Sicherheit, Portabilität - 100 Seiten) an. Nicht vergessen will ich hier den umfangreichen Referenzteil zur Sprache (und ich meine umfangreich: immerhin 350 Seiten zum Nachschlagen), der den Abschluß des Buches bildet. Die eben beschriebenen Kapitel machen das Buch auch für den zweiten Kundenkreis interessant, nämlich als Nachschlagewerk für den erfahreneren Perl-Programmierer.
Soviel als grober Überblick zum Inhalt, ich möchte an dieser Stelle noch einige Besonderheiten herausstreichen, die mir beim Lesen des Buches aufgefallen sind: Da wäre zum Ersten der wirklich erfrischende Stil der Autoren zu erwähnen, die es mehr als einmal geschafft haben, mich zum Lachen zu bringen. Auch die verwendeten Beispiele sind einprägsam und lassen den Humor der Autoren an mehr als einer Stelle durchblicken, ebenso wie die oft und gern eingestreuten Fußnoten im Text, die man sich nicht entgehen lassen sollte.
Das gute Einführungskapitel hatte ich ja bereits erwähnt, und obwohl das vorgestellte Buch (leider) nicht mein erstes Buch über Perl war, hat es mir doch in einigen Punkten nochmals weitergeholfen.
Leider hat das Buch auch einen Nachteil: Es ist nicht mehr ganz neu. Es beschreibt Perl in der Version 5.6, zur Zeit aktuell ist 5.8 und 6.0 liegt soweit ich weiß in nicht allzuferner Zukunft (und hält wohl einige gravierende Neuerungen bereit).
Ich weiß nicht, ob wir bereits eine Skala für Buchbewertungen entwickelt haben, aber aus den oben gennanten Punkten ergibt sich für mich eine Punktzahl von 9 aus 10. Also ein Spitzenbuch, nur leider nicht mehr ganz taufrisch.
Nachtrag: Nach dem 5-er Bewertungssystem (von Amazon) hat dies Buch 5 von 5 Punkten verdient.
Zurück zum Seitenanfang

XML Schema - The W3C's Object-Oriented Descriptions for XML

Buchcover von XML Schema - The W3C's Object-Oriented Descriptions for XML, O'Reilly

Autor: Eric van der VList
ISBN: 0-596-00252-1
Preis: € 40.00
Sprache: Englisch
Mehr Informationen, sowie Probekapitel: XML Schema - O'Reilly.com

Am Anfang gibt der Autor eine Einführung in XML Schema. Es wird ein "Hello-World"-Schema erstellt. Anhand von praxisortientieren Schemata führt der Autor durch das Buch. Es werden ID's, IDRef's, Namespaces ausführlich besprochen. Auch auf den Unterschied von simplen und komplexen Datentypen wird ausführlich eingegangen. Es gibt etliche nützliche Tipps und es wird vor vielen gemeinen Fehlern gewarnt - so wie man es von O'Reilly kennt und schätzt.
Van der VList widmet ein ganzes Kapitel der Dokumentation von XML Schemata. Ein wichtiges Thema, wie ich finde. Es wird gezeigt, wie man ein Schema sauber dokumentiert und dafür sorgt, dass es wartbar bleibt.
Am Ende des Buches findet man noch eine Element und Datentyp Referenz. Im Anhang wird noch auf einige XML Schema Sprachen wie Relax NG oder Schematron eingegangen.
Der Autor sollte in den Beispielen Leerzeilen verwenden. Ohne Leerzeilen sind die langen Beispiele etwas unleserlich.
Persönliche Meinung: Gutes Buch um XML Schema zu lernen. Man sollte sich allerdings mit den Grundlagen von XML auskennen. Um die Voraussetzungen zu schaffen kann man "Learning XML" von O'Reilly lesen.

Zurück zum Seitenanfang