Donnerstag, 25. Dezember 2008

ein Versuch, etwas Ordnung im vermeintlichen Chaos zu finden

Die letzte abzugebende Einzelaufgabe für mich war XSD/XSLT.
Da meine Motivation zugegebenermaßen schon ziemlich abgeflaut war und noch einiges anderes zu tun war, entschied ich mich, nur das Nötigste zu machen, weshalb ich mich auch für das XML Schema XSD entschied, da mir dies auf den ersten Blick einfacher erschien (offensichtlich war ich auch nicht der Einzige mit dieser Vermutung, auf alle Fälle gab es in unserer Gruppe wohl nur einen Kollegen, der XSLT gewählt hatte).

Ich tat mir am Anfang ehrlich gesagt ziemlich schwer, da die Folien und sonstigen Unterlagen mir ziemlich unstrukturiert erschienen, was aber wohl, nachdem ich das Ganze Konzept so in etwa ganz grob verstanden hatte (so vermute ich zumindest :D), daran liegt, dass das XML Schema an sich eher etwas unstrukturiert und unlogisch erscheint, wenn man DTD gewöhnt ist.
So ist XML Schema viel flexibler, es spielt nicht bei allen Elementen eine Rolle, wo genau im Dokument sie definiert werden, etc.

Ich setzte mich also hin, tippte meine Datei herunter und versuchte immer wieder hier und da ein paar Feinheiten einzubauen. Als ich dann nach einiger Zeit fertig war, war es leider schon ziemlich spät, ich schon mindestens genau so ziemlich erschöpft und leider spuckte mir das Validationstool vor allem für meine ausgeklügelten Feinheiten diverse Fehler aus. Die während des Codens gekommene Motivation wurde also von einer Sekunde auf die andere zerschmettert, meine Laune dem Erschöpfungsgrad entsprechend.
Also verunschönerte ich meiner Meinung nach das Dokument wieder dahingehend, dass ich vieles vereinfachte, was mir Fehler erzeugt hatte, und siehe da - es funktionierte alles einwandfrei.

Die Moral der Geschichte also.. ja.. keine Ahnung, denkt euch was aus, irgendwo kommt auf alle Fälle das Wort meh vor :P

Meine Abgabe dazu findet ihr natürlich wieder in der Sidebar :)

Freitag, 12. Dezember 2008

Der Tag des Gerichts

Diese Woche gab es ja keinen Übungstermin, stattdessen lud Herr Derntl die Teams einzeln zu sich ins Büro, um genauer auf die einzelnen Probleme, mit denen sich die Teams für die auf sie zu kommende Implementiernug ihres Projekts konfrontiert sehen, eingehen zu können.
Im Rahmen dieser Audienz stimmten wir auch dem Vorschlag zu, den TaskCompanion als Webservice im CEWebS zu implementieren. Ich habe den Vorschlag gleich sehr begrüßt, da wir so ein bereits fertiges und gut funktionierendes Framework zur Verfügung gestellt bekommen, auch inklusive Stylesheets, etc und auch um die Userverwaltung brauchen wir uns eigentlich kaum Gedanken machen. Im Endeffekt brauchen wir uns jetzt wohl wirklich fast nur mehr um die Logik dahinter kümmern.
Außerdem spielt sicher auch der Fame-Aspekt eine kleine Rolle :D, denn ich muss schon sagen, dass ich etwas stolz darauf wäre, wenn unsere App in Zukunft im CEWebS integriert und auch verwendet würde :P Wie auch immer, das ist glaub ich momentan noch eher ein weit entfernter Traum, da wir noch nichtmal angefangen haben, zu programmieren ;)

An meinen Einzelabgaben gab's soweit offensichtlich nichts auszusetzen und ich bin mal sehr gespannt, wie das Projekt nun weiterverlaufen wird :)

Nun geht's ans Eingemachte

In der fünften Projektphase mussten wir nun explizit spezifizieren, welche Use Cases wir tatsächlich bis zum Abgabetermin glauben, implementieren zu können. Hier war ich glaub ich primär die Euphorie-Handbremse, da ich versuchte, meine Kollegen darauf hinzuweisen, dass wir uns besser nicht übernehmen sollten und ja trotzdem immer noch mehr implementieren könnten, als wir spezifiziert haben.
Wir haben nämlich auch so trotz allem immer noch genügend Use Cases ;) Ebenso haben wir noch unsere ungefähren konkreteren Vorstellungen der Datenverwaltung und Architektur miteingebracht.

Natürlich bekamen wir ungefähr eine halbe Stunde, nachdem wir unsere Abgabe fertig hatten, viel genauere Anweisungen wie diese auszusehen habe und sogar ein Template, das wir eigentlich nur mehr hätten ausfüllen müssen. Wie auch immer haben wir dann doch unser bereits erstelltes Dokument abgegeben und dem Kommentar nach zu urteilen, sollte das auch soweit ganz in Ordnung sein :)

Das Dokument findet ihr übrigens hier

XPath und seine Funktionen

Als nächstes machte ich mich dran, die XPath Aufgabe zu lösen. Hierfür mussten wir 3 vernünftige Abfragen für unser in A3 erstelltes XML Dokument sowie für eine neu zu erstellende XML Datei zu einer bereits vorgegeben DTD formulieren.

Leider verstand ich - trotz des expliziten Hinweises darauf vom Chef - nicht von Anfang an, dass bei einer Vergleichsoperation wirklich nur der Wert der jeweils zu vergleichenden Attribute verwendet wird, da nämlich bei einer Navigation zu einem der Attribute immer der komplette String, also auch der Name des Attributes markiert wurden.
Also dachte ich, bin ich schlau, und befrage mal w3.org nach XPath Funktionen und fand natürlich auch ganz schnell die Funktion string(), die genau das zurücklieferte, was ich wollte: nämlich den Wert des Attributs.
Haha ja, allerdings brauchte ich auch eine Weile, bis ich das entdeckte, denn das Ergebnis von Funktionen, markiert unser Tool nicht - wie bei normalen Navigationen - einfach im Dokument rot, sondern gibt es oberhalb des Dokumentes klein zurück :P
Wie auch immer, nachdem diese Hürden also überwunden waren, bemerkte ich den nächsten Mangel an meiner Arbeitstechnik, nämlich, dass string() ja immer nur ein Ergebnis zurückliefert. So konnte ich dann eben nicht mehrere IDREFs zurückverfolgen oder ähnliche Anfragen machen.

Mittlerweile bin ich zum Glück etwas klüger geworden und weiß, dass der Vergleichsoperator sofort string() verwendet, und ich ansonsten auch die Funktion contains() hätte benutzen können :)

Trotz allem hat mir diese Aufgabe eigentlich ziemlich Spaß gemacht und meine Abfragen findet ihr hier

CRV-TVS FTW!

Wie ich gerade bemerkt habe, war ich einige Zeit lang sehr inaktiv, was den Blog anging, deshalb schreib ich jetzt mal ein bisschen was nach :D

Nungut zuerst mal war da das die vierte Aufgabe im Projektteil, nämlich das Review der Architektur einer anderen Gruppe. Wir haben hier Team 4 (David, Andi und Ronny) und ihr unglaubliches TerminVereinbarungsSystem für das ComputerReferat des Studentenheims Vindobona (oder kurz CRV-TVS) zugeteilt bekommen :)
Soweit gab's eigentlich auch nicht viel zu bemängeln, da die Kollegen ihre Arbeit eigentlich eh ziemlich gut gemacht haben, weshalb es nach einigen Diskussionen innerhalb meines Teams auch 7,5 Punkte gab (ich war für 8, die andern für 7 :P).

Genaueres dazu, könnt ihr unserem gesamten Review entnehmen :)

Donnerstag, 27. November 2008

das gute alte relationale Schema

Soda, hab meine DTD nach dem letzten Post noch einmal ordentlich überarbeitet und sämtliche 1:n und 1:1 Beziehungen mithilfe von Kindelementen ausgedrückt, so wie das auch von der Leitung empfohlen wurde.. kam auf die Idee, da wir eigentlich in DBS genau das gleiche mit E/R Diagrammen und relationalen Schemata gemacht haben und es war offensichtlich auch genau so erwünscht :) Gut gemacht hab ich das wiedermal *selbstSchulterklopf*

Nur die m:n Beziehung habe ich vermutlich nicht optimal, also als eigenes Element mit den zwei passenden IDREFs gemacht, aber dafür bin ich jetzt um das klüger und mach's beim nächsten Mal besser, oder bessere es vielleicht hier auch noch aus, falls ich die Zeit und Lust dazu finde - was ich momentan aber leider nicht vermute :/

Wie auch immer, habe glaub ich verstanden, worum's geht und die Aufgabe ganz okay gelöst, aber das werde ich vermutlich erst erfahren, wenn ich den Kommentar dazu bekommen habe ;)

Weiter geht's :)

Sonntag, 23. November 2008

Hmja.. es gibt halt schon wieder ein erstes Mal :D

Nachdem wir also bei der dritten Projektabgabe ein weiteres Mal präsentieren durften und uns offensichtlich ganz souverän geschlagen hatten (zumindest hörte es sich in der Einheit so an und der vorläufige Kommentar ging auch in die Richtung :)), bin ich immer besserer Laune im Bezug auf unser Projekt und dementsprechend steigt die Motivation natürlich auch laufend.. wenn ich auch noch immer keinen blassen Schimmer habe, wie wir die eigentliche Implementation angehen sollen, aber ich denke, dafür ist die Lehrveranstaltung ja da :)

Wie auch immer, heute habe ich mich mal drangesetzt, mit der XML/DTD Aufgabe zu beginnen. Soweit war die größte Hürde eigentlich das Überlegen eines passenden Szenarios. Wie es mir schon andere Kollegen wie zum Beispiel der Herr Selig vorgemacht haben, werde auch ich hier mein Klassendiagramm zur Verfügung stellen, sowie die dazugehörige Beschreibung (damit es hier nicht auch noch zu Missverständnissen kommt :D).


Dann habe ich mich mal daran gemacht, die Folien zu DTD zu lesen, weil ich mir diesmal eigentlich ziemlich war, dass es am vernünftigsten sein wird, damit zu beginnen :D
Un dann hab ich eigentlich auch schon losgelegt und meine erste DTD Datei erstellt. Ich frage mich zwar, ob das auch nur annähernd korrekt ist, so wie ich's gemacht habe, aber ich wüsste nicht, wie ich es großartig anders machen sollte. Vielleicht schließe ich mich morgen mit ein paar Kollegen zusammen, wenn sich die Gelegenheit bietet, und werde auf Unzulänglichkeiten hingewiesen oder eben nicht ;)

Jetzt fehlt also eigentlich nur mehr die dazugehörige XML Datei, an die ich mich morgen setzen werde. Und auch diese wird die erste ganz allein von mir geschrieben sein :)

Achja, und ich füge auch sofort noch Links zu unseren/meinen Abgaben zu A2 und P3 in der Sidebar hinzu :)

Sonntag, 16. November 2008

...und gleich noch eine Premiere

Eingeschlossen in mein Kämmerlein, abgeschottet von der Außenwelt, habe ich heute meine ersten php-Dateien gecodet. Nach den typischen Anlaufschwierigkeiten, die wohl auch mit leichter Programmierverrostung meinerseits sehr stark zu tun hatten, kam ich schön langsam wieder in Übung und konnte wirklich jede Stunde Fortschritte bemerken.

Zu Beginn fühlte ich mich etwas überfordert, weil ich nicht so recht wusste, wo ich anfangen sollte. Zum Glück kam mir dann natürlich als erstes gleich mal eine Klassendefinitionsdatei in den Sinn. Aber als diese fertig war, wusste ich auch nicht so recht, wo weiter, weil ich mir noch nicht ganz im Klaren darüber war, wie das ganze an sich aufgebaut sein sollte, mit Eingabemaske, Logik, etc. Im Endeffekt hab ich dann einfach mal mit dem Formular weitergemacht und danach war ich dann schon etwas in Fahr, sodass mir die restlichen Dinge auch schneller von der Hand gingen.
Die Serialisierung habe ich gleich in die Formulardatei miteingebunden und ich war im Endeffekt ziemlich überrascht davon, dass eigentlich fast alles auf Anhieb so geklappt hat, wie ich mir das gewünscht habe, selbst die lässlichen Syntaxfehler hielten sich ziemlich in Grenzen.
Ich wollte ursprünglich ja auch ein ganz neues HTML und CSS Gerüst basteln, aber habe das vorerst unterlassen..

Soweit bin ich ganz zufrieden mit dem, woran ich die letzten 10 Stunden gearbeitet habe, denn das steht mal soweit. Ich habe zwar noch keine speziellen Features eingebaut, aber ja, vielleicht geht sich das noch aus.
So würde ich zum Beispiel lieber die Ausgabe durch eine Schleife machen, sodass ich nicht jeden Track hardcoden brauche und vor allem die Tracklist nur so viele Einträge hat, wie eingegeben wurden. Momentan ist das bei mir noch etwas statisch.

[edit]
Huiuiui, und wie ich gerade beim Chef gesehen habe, könnte ich die übergebenen Tracks statt mit einer for-Schleife vermutlich auch viel einfacher und vor allem sauberer mit einem foreach zum Album hinzufügen. Ich hatte es zuvor schon kurz in Erwägung gezogen, allerdings dann nicht eingängig damit beschäftigt..
[/edit]

Aufgefallen ist mir auf alle Fälle, dass PHP um Welten netter ist als C++ und ich das ziemlich schnell bemerkt habe und deshalb nicht so defensiv programmieren musste, wie ich das bisher meistens tat. Wie auch immer habe ich eigentlich noch quasi keine möglichen Fehlerquellen bei der Eingabe versucht zu korrigieren, so kann man meinem Formular eigentlich alles übergeben, was man will und es wird einfach stupide ausgegeben, ohne zu überprüfen, ob bspw. bei der Tracklänge auch wirklich eine Zeitangabe in (hh:)mm:ss angegeben wird, was ich bisher eigentlich bei allen meinen Programmen immer sehr sorgfältig machte.

Wie auch immer, ich denke, für's erste Mal ist es soweit ganz okay, ich bin zumindest mehr oder weniger zufrieden mit meiner Leistung, allerdings habe ich wohl auch nicht so hohe Maßstäbe gesetzt, wie mein geschätzter Kollege auf der anderen Seite des Donaukanals :D


Achja, wer mein bescheidenes Werk betrachten will, kann das natürlich hier tun :)


*edited: Sun, 16 Nov 2008, 23:47

mein erstes Mal =)

Am Dienstag ist wieder ein großer Abgabetermin. Abgesehen von der PHP Aufgabe, mit der ich noch etwas überfordert bin, steht nämlich auch eine weitere Projektabgabe an, nämlich ein Architekturmodell.
Dieses sollten wir als Komponentenmodell bzw. mehreren Komponentendiagrammen darstellen, was für die meisten von uns vermutlich Neuland war oder immer noch ist ;) Bei uns war es zumindest so..

Wie auch immer, im Endeffekt hatte ich dann das Gefühl, dass wir es eigentlich den Umständen entsprechend ganz gut umsetzen konnten, auch wenn es immer noch ein paar kleine Unklarheiten gab. Wir einigten uns dann aber darauf, dass diese spätestens in den Reengineering-Prozessen der nächsten Arbeitsschritte vermutlich eliminiert würden :D

Auch hier trat teilweise wieder das Problem auf, wie schon bei den Use Cases, dass wir uns etwas schwer taten, das Abstraktionslevel richtig zu wählen und dementsprechend weder zu simpel, noch zu komplex zu werden.
Verwendet haben wir wieder Omnigraffle, das ich jetzt zum ersten mal selbst so wirklich ausführlich in action erlebt habe und das uns die Arbeit ziemlich erleichtert hat, und obendrein noch hübsche Diagramme erzeugt :D

Ein weiteres Mal verbleibe ich also in Spannung auf die Abgabe und darauffolgende Kommentare und Verbesserungsvorschläge :)

Freitag, 7. November 2008

Was bisher geschah (seit 2.Nov, 21:20 :p)...

Zuallererst gibt's natürlich wieder Neuigkeiten, über das, was auch schon in den letzten Beiträgen angesprochen wurde: der Name :D.. und zwar gibt es da eine gute und eine schlechte Nachricht.
Der Tradition aus allen möglichen Filmen, Büchern und Serien folgend, beginne ich natürlich mit der guten Nachricht:
Uns wurde zugesichert, dass wir den Namen unseres Projektes selbstverständlich jederzeit ändern können, was uns sehr zu gute kommt, nicht zuletzt aufgrund dessen, was Inhalt der schlechten Nachricht ist:
Wie Philipp aufmerksamerweise bemerkte, gibt es leider auch schon ein Programm, das auf den von uns so geliebten Namen TaskBuddy hört :/ Deshalb werden wir wohl ein weiteres Mal den Namen ändern und auf TaskCompanion zurückgreifen müssen. Das Logo wurde natürlich auch schon dahingehend verändert, aber sieht jetzt natürlich aufgrund des durch die plötzlich doppelt so große Wortlänge des zweiten Teils entstandenen Ungleichgewichts bei weitem nicht mehr so genial aus, wie zuvor :P
Mal sehen, ob sich da noch etwas ändern wird ;)

Wie auch immer, in der letzten Praktikumseinheit waren wir eines der zwei glücklichen Teams, die ihre Anforderungen präsentieren durften, worüber ich mich freute, da wir ja Arbeit hineingesteckt hatten und ich eigentlich auch sehr zufrieden mit dem, was wir erzeugt hatten, war. Leider war nicht mehr genügend Zeit, dass wir wirklich alles ausführlich hätten vorstellen können, aber ich glaube, wir konnten so in etwa einen Gesamteindruck unserer Vorstellungen vermitteln :)
Kommentar bzw Bewertung haben wir bis dato noch keine erhalten, aber ich bin mal gespannt :)

Als nächstes will ich mich aber PHP widmen, da ich mich damit noch nie wirklich beschäftigt habe. Ich bin allerdings positiv eingestellt, da ich eigentlich spätestens seit dem AlgoDat Praktikum letztes Semester sehr gerne objektorientiert programmiere und ja sowieso sehr motiviert bin, Webprogrammierspezifisches zu lernen =)
Bin also schon sehr gespannt, wie ich mit der laufenden Aufgabe zurechtkommen werde. Ich gehe aber nicht davon aus, dass es sowas wird, wie das, was Werner schon gemacht hat und noch vor hat :D Hab ja schon einige Nightly Builds der Beta-Version seines Tools gesehen und war wirklich sehr beeindruckt ;) Schon allein, weil auch das Interface so hübsch ist :D

... wo ich schon beim nächsten Punkt angelangt werde, der mich wohl noch ein wenig beschäftigen wird. Wie ich ja bereits im Post zur ersten Aufgabe geschrieben habe, hatte ich noch nicht wirklich viel Ahnung von HTML/CSS. Natürlich hatte ich aber schon hier und da gelesen, wie sich Leute darüber mokierten, wenn andere Tabellen zur Anordnung von Elementen bzw allgemeinen Gestaltung der Seite verwendeten. Ich fragte mich aber immer, was es denn für eine Alternative gäbe, da mir einfach nichts Anderes einfiel :P Wie auch immer, hat uns Kollege Klaffenboeck genau das gezeigt. Habe mich jetzt noch nicht wirklich damit auseinandergesetzt, aber die Anordnung mittels floating divs/spans wirkt so auf den ersten Blick eigentlich fast einfacher, als mit einer Tabelle, da das ganze Konstrukt eben nicht so statisch und viel flexibler ist.
Würde gerne, wenn es sich ausgeht, mich genauer damit beschäftigen, und meine Oberfläche für die zweite Abgabe dann so gestalten :)


Zuletzt erwähnter Kollege hat uns heute übrigens auch noch gebeten, unsere Use Case Diagramme von der Präsentation online zu stellen, da er sich dafür interessierte, was uns natürlich gleich mal sehr ehrte und mich daran erinnerte, dass ich ja sowieso sämtlichen Content, den wir im Rahmen unseres Praktikums bereits erzeugt haben und noch erzeugen werden, hier zu verlinken und so für Andere zugänglich zu machen.
Vielleicht folgt ja noch jemand dem Beispiel, ich bin mir sicher, dass es ein paar Leute gibt, die die Lösungen ihrer Kollegen auch interessieren ;)


There you go:

A1 - HTML/CSS

P1 - Projektidee
P1 - Präsentation

P2 - Anforderungen
P2 - Präsentation


Werde glaube ich außerdem noch ein Item in der Sidebar hinzufügen Habe außerdem noch ein Item in der Sidebar hinzugefügt, in dem ich diese Links sammle, damit man gleich eine Übersicht hat.
Vielleicht schaut's sich ja wirklich irgendwer an, hab am almighty ja leider keinen Download-Counter :D Würde mich auf alle Fälle freuen, wenn's wem hilft, und wenn nicht, dann hab ich's halt für mich gemacht, der Dokumentation und Übersicht wegen ;)

Und einen Poll hab ich auch, weil ich mir grad extrem unsicher bin, ob man die Artikel besser linksbündig oder in Blocksatz lesen kann :D Helft mir mal bitte!


*edited: Fri, 07 Nov 2008, 03:27