Publiziert am von matthias | Kommentare deaktiviert für Beispiel Warenkorbanalyse in sql

Krüger, Guido: Handbuch der Java-Programmierung

Krüger, Guido: Handbuch der Java-Programmierung. 3. Auflage, München 2002.

Das Handbuch der Java-Programmierung gehört zum besten, das ich über Programmierung im allgemeinen und Java im besonderen gelesen habe. Kein Buch kann alles erklären und den wenigsten gelingt es, ein Thema erschöpfend darzustellen. Aber diese 1200-und-mehr Seiten sind klar und deutlich geschrieben. Dem geistig regen Leser wird der Horizont erweitert und es inspiriert zu neuen Fragen – aber “der Krüger” stellt einen nie vor Rätsel.

Auf knapp 500 Seiten präsentiert Krüger den Kern der Sprache “Java”. Didaktisch klug plaziert er das Kapitel über Objektorientierte Programmierung (OOP) nach den syntaktischen Grundlagen und vor den “weiterführenden Spracheigenschaften”, die das Wissen um OOP voraussetzen. Darauf folgen fast 400 Seiten über Grafikprogrammierung, das Thema “Applets” wird danach kurz behandelt. Das Ende des Hauptteils beleuchtet “Spezielle APIs” – beispielsweise jdbc, Sockets und Cryptographie.

Die Java-Themen, die Krüger behandelt, behandelt er detailiert. Die Beispiele sind gehaltvoll, prägnant, in sich abgeschlossen und verständlich. Krüger zeigt Zusammenhänge, ist sachlich, aber nie trocken, nie langweilig. Das Buch ist hervorragend für die Ausbildung geeignet – habe es an vier Kandidaten erprobt. Dazu habe ich einige Kapitel ausgewählt, deren Themen man m.E. als Programmier- und Java-Anfänger beigebracht bekommen muss. Anschließend einige Inhalte, anhand derer man exemplarische zeigen kann, wie java “tickt” und die in der täglichen Praxis im Ausbildungsbetrieb gebraucht werden: Kapitel 1, 2.2, 2.3, 3.2, 4, 5, 6,7, 8, 9.1, 11, 12, 13, 18, 20, 21, 42. Kapitel 50 bei Bedarf. Das ist der Lehrplan für’s erste Jahr, immer gepaart mit den dortigen kleinen Programmier-Aufgaben.

Der Teil über Objektorientierte Programmierung gehört zu den besten Texten, die ich zu diesem Thema kenne und die für ein breites Publikum geschrieben sind. Wer diesen Teil verstanden hat und weiss, wie die java-api-doc zu lesen ist, den bringt nichts mehr aus der Ruhe. Der Index des hjp ist hervorragend, auch nach jahrelanger Nutzung habe ich keine Einträge hinzugefügt – und das kommt leider nur selten vor.

Man sieht auf www.javabuch.de, dass fleissig an dem Buch gearbeitet wird. Ich habe mir seinerzeit die 3. Auflage gekauft und schaue auch heute noch immer wieder ‘rein. Ich empfehle es jedem ernsthaften Java-Programmierer zur Anschaffung.

[Reflexion]

Das obige ist eine mächtige Lobhudelei. Unangebrachte Lobhudelei kommt im Web oft vor. Ich kenne Guido Krüger nicht, bekomme keinen Cent für diesen Lobgesang und denke, dass er dem Buch gerecht wird.

Veröffentlicht unter Bibliographie | Kommentare deaktiviert für Krüger, Guido: Handbuch der Java-Programmierung

Natürlich ist das obige Beispiel so in der Praxis nicht vorgekommen. Das Beispiel zeigt eine nützliche Struktur. Im Laufe der Zeit kam immer wieder die Anforderung der Durchnummerierung. Man braucht dazu keinen PK-Constraint, aber wenigstens irgendein Tupel, das unique ist – und das findet sich. Jedenfalls konnte ich immer irgendwo eins auftreiben :)

Das Script oben habe ich mit Copy&Paste aus SQuirreL SQL übernommen, während ich mit einer MySQL-Datenbank verbunden war. Kann sein, dass andere RDBMS eine leicht abweichende Syntax haben. Aber im Prinzip sollte dieses Script auf gängigen SQL-Systemen lauffähig sein.

Publiziert am von matthias | Kommentare deaktiviert für Rang in sql

Daten konsistent halten

MySQL und andere RDBMS bieten die Möglichkeit, Foreign-Key-Constraints auszuschalten. Ich halte das für eine schlechte Idee.

Ich kenne aus der Praxis ein Szenario, bei dem FK-Constraints ausgeschaltet wurden, um den Import von Daten zu ermöglichen. Die Daten lagen in unterschiedlichen Tabellen, verknüpft durch Foreign Keys. Man kriegt die einen Daten nicht ‘rein, wenn die anderen Daten nicht vorhanden sind. Bei einem System mit vielen Tabellen und Verbindungen wird das schnell zu einer “Plage”, weil man sich über die Reihenfolge bei Export und Import Gedanken machen muss. Vielleicht sind in dem exportierten System bestimmte Datenstrukturen gar nicht vorhanden, weil das einen anderen Versionsstand hat als das System, in das hinein importiert wird. Es ist verlockend einfach, die Contraints auszuschalten, die Daten reinzupumpen und zu hoffen, dass alles gut geht. RDBMS mit einer strikten Vorgehensweise, Beispiel Oracle, erlauben es nicht, Constraints einzuschalten, solange inkonsistente Daten vorliegen. Und dann hat man zwei Probleme, nämlich inkonsistente Daten und fehlende Contraints, die wiederum zu weiteren Inkonsistenzen führen können. Wohl dem Kunden, der einen Supportvertrag hat :(

Foreign-Key-Contraints auszuschalten heisst, schnell und dreckig zu arbeiten. Manchmal wird einen der Arbeitsdruck dazu verleiten – es muss ein Weg gefunden werden und zwar flott. Ich kenne das. Und ich weiss, dass das Aufräumen inkonsistenter Daten mächtig viel Zeit in Anspruch nehmen kann. Foreign-Key-Contraints-ausschalten als Notnagel: Ja. Als Dauerlösung im Code: Nein!

Veröffentlicht unter Allgemein | Verschlagwortet mit , , , | Kommentare deaktiviert für Daten konsistent halten

Refactoring php

Das erste aysx-Projekt wird sein, ein Warenwirtschaftssystem aufzumöbeln, das anno tuck in php programmiert wurde. Teile des Codes sind prozedural, andere objektorientiert.

Aufgabe ist, einen Schwung neue Features einzubauen und den Code mit aktuellem PHP und MySQL kompatibel zu machen.

Mit der Hilfe von Uncle Bob’s Weisheit lässt sich das sicher machen ;)

Veröffentlicht unter Allgemein | Kommentare deaktiviert für Refactoring php

Hallo Welt,

hier ist aysx.

Ich hoffe, neben meiner Software-Tätigkeit im öffentlichen Dienst und dem bisschen Freelance-Coding für aysx Zeit zu finden, hier ein paar Gedanken niederzulegen, die vielleicht von allgemeinem Interesse sind.

Im Laufe der Jahre habe ich einige Kleinigkeiten gelernt, Kniffe und Tricks gefunden, die mir das Leben als Softwareentwickler leichter gemacht haben. Vielleicht interessiert’s ja wen. Ich denke da an java, sql, texttools, regular expressions, Teamwork, Kunden am Telefon … naja, das übliche, was man halt so macht bei bezahlter Arbeit.

Was ist aysx?

In Pulp Fiction sagt Butch zu Esmarelda Villalobos:

Ich bin Amerikaner, Süße, unsere Namen bedeuten einen Scheiß!

aysx bedeutet nichts. Es ist nur einfach zu tippen. Und genau so einfach soll Software sein: Gerade heraus. Kein Firlefanz. aysx ist mein Laden. Hier kann ich das verwirklichen, was ich für gute Software-Entwicklung halte.

Publiziert am von matthias | Kommentare deaktiviert für Hallo Welt!