Relative Pfade

In einigen Delphi-Foren ist immer wieder zu hören “Niemals relative Pfade!” Und auch ich behaupte das recht häufig. Und das nicht ganz ohne Grund. Relative Pfade sind die Ursache von vielen Problemen. Beispielsweise auch die Ursache des momentan diskutierten “Binary Planting”-Problems (siehe hierzu auch: Wikipedia). Also: niemals relative Pfade! Das Problem ist: Diese Behauptung ist falsch. Zumindest in der Absolutheit, wie die der Satz suggeriert.

Die Antwort auf so gut wie jede Frage im Software Engineering heißt ja bekanntlich “it depends”. Und so ist es auch mit der Antwort auf die Frage, ob relative Pfade “böse” sind. Kommt drauf an. Das “niemals” in obigem Satz ist also – wie fast immer – ein “niemals außer es gilt was anderes”… ;-)

Das, was ich im Folgenden beschreibe, sind nur die grundlegenden Konzepte. Details sind vereinfacht. Ich will hier nur die Idee vermitteln, kein Handbuch schreiben.

Aber mal der Reihe nach…
weiter lesen »

Dancing Auschwitz

Ich betreibe hier ein Blog über “Informatik und Anderes”. Das Andere kommt dabei meist etwas kurz. Hier also mal etwas, das so überhaupt nichts mit Informatik zu tun hat: In einem Beitrag von Kulturzeit wurde ein eigenwilliges Kunstprojekt vorgestellt: Dancing Auschwitz. Eine Kunstaktion, wie sie nur ein Holocaust-Überlebender machen kann.

Der 89-Jährige Adam Kohn tanzt mit seinen Enkeln in Auschwitz und anderen Konzentrationslagern auf “I Will Survive”. Von der Aktion gibts ein Video auf YouTube. Das Video ist beeindruckend. Man sieht es lachend und weinend.

Manche mögen es als Provokation sehen. Manche mögen fehlenden Respekt vor den Opfern vermuten. Andere sehen vielleicht eine Art Racheakt, einen Triumphzug.

Ich sehe darin nicht den freudigen Triumph, sondern vielmehr die triumphierende Freude. Also nicht “Ich habs überlebt! (Und andere nicht.)”, sondern “Wir alle sind froh, dass diese schreckliche Zeit vorbei ist – möge sie niemals wieder kehren!”

Ich war einige Jahre in einer Jugendgruppe, der “Geschichtswerkstatt”, aktiv, in der wir u.a. die Nazizeit in meinem Heimatort aufgearbeitet haben. So etwas haben wir aber nicht annähernd geschafft, nicht schaffen können. So etwas kann wohl nur ein Holocaust-Überlebender.

Gedenken ist wichtig, aber die Frage nach einem zeitgemäßen Gedenken stellt sich natürlich. Wie aber sieht ein angemessenes Gedenken an etwas aus, das drei Generationen hinter mir liegt? Ich habe da auch keine abschließende Antwort, aber vielleicht ist es wie mit der Trauerbewältigung: Irgendwann muss der Schritt von der Trauer zur Erinnerung stattfinden.

Meine Antwort kann nicht so aussehen wie die von Kohn. Seine Antwort finde ich aber absolut faszinierend. Vielleicht aber schaffen wir es ja, uns ein wenig mit ihm zu freuen…

Pseudocode

Um Algorithmen zu skizzieren, Ideen aufzuzeigen u.ä. eignet sich insbesondere Pseudocode. Zumindest für alles unterhalb der Klassenebene. Sind mehrere Klassen beteiligt, eignen sich grafische Notationen wie UML meist besser, aber ansonsten ist Pseudocode toll. Vor allem ist toll, dass man den Detailgrad beliebig variieren kann. Von fast kompilierfähig bis “abstrakte Codekunst” ist so gut wie alles möglich. Außerdem bietet es die Möglichkeit, programmiersprachenunabhängig zu bleiben.

Für dieses Blog habe ich mich entschieden, meinen Pseudocode etwas zu “standardisieren”. Der Nachteil von Pseudocode ist ja, dass er überall anders aussieht, was der allgemeinen Verständlichkeit wieder etwas abträglich ist. Oberstes Ziel bei “meinem” Pseudocode soll die Lesbarkeit sein. Schon bisher habe ich “pascalartigen Pseudocode” verwendet, weil dieser relativ gut lesbar ist.
weiter lesen »

Gefangen, nicht gefunden! #11

Mein letzter Blogeintrag ist schon ne Weile her. Das liegt u.a. daran, dass ich ein vergleichsweise arbeitsreiches Semester hinter mir habe… und jetzt noch zwei Klausuren vor mir. Mit ein bisschen Glück gibts jetzt aber wieder etwas öfter was von mir zu lesen. In der Zwischenzeit haben sich eine Hand voll halb-fertige Artikel angesammelt. Ebenso wie einige interessante Links…

Informatik

  • Mein Vortrag für die diesjährigen Delphi-Tage ist angenommen worden. Auf der “Agenda” steht was von “Was die OOP-Tutorials verschweigen”. Es geht grob gesagt darum, wie man objektorientiert denkt. Die Folien werde ich online stellen, wenn ich sie fertig habe.
  • How Not To Sort By Average Rating. Ein interessanter Artikel über das richtige Sortieren von Bewertungen (via).
  • Ich hab jetzt mal auf WordPress 3 aktualisiert. Ging überraschend reibungslos. So wie ich das sehe, gehen alle Plugins noch, obwohl die meisten davon nicht für die 3er-Version aktualisiert wurden. Eigentlich sollte das bei gutem Design ja normal sein. Eigentlich…
  • Wer sich ein bisschen für Security interessiert, sollte sich vielleicht mal “Tatort Internet” ansehen. Bisher gibt schon 4 Folgen. Alle sind sehr interessant und kurzweilig geschrieben. Da sieht man mal wie Malware wirklich funktioniert. Wenn man mitkommen möchte, sollte man aber ein paar grundlegende Assemblerkenntnisse mitbringen.
  • “software is like sewage pipes, I want it to work reliably and I don’t want to know about the details” (gefunden bei Martin Fowler). Das Bild passt auch ganz gut auf Module. Denn genau so funktioniert Kapselung (“I want it to work reliably”) und Information Hiding (“and I don’t want to know about the details”). Der Artikel ist übrigens auch ganz interessant.
  • Ich finde ja Assertions sehr praktisch. Also wenn man sie richtig anwendet. Vor einiger Zeit hab ich dazu einen interessanten Artikel gelesen: Design by Contract and Unit Testing. Die Frage ist nämlich u.a. wie das mit Unit-Tests zusammenpasst. Es gibt da noch ne Menge dazu zu sagen. Da werde ich aber wohl separat mal dazu bloggen. Wenn ich hoffentlich bald mal dazu komme…
  • Zehn Zentimeter: In diesem kurzen Blogpost erklärt Isotopp sehr schön, welchen Beschränkungen verteilte Systeme hinsichtlich der Performance ausgesetzt sind.

Anderes

  • Nein, heute gibts nichts anderes…

Delphi-Tage 2010

Am 17./18. September sind wieder Delphi-Tage. Ich werde wohl auch wieder dabei sein. Die Mischung aus Community-Event und Fachvorträgen machen die Delphi-Tage jedes Jahr zu etwas Besonderem. Man sieht die ganzen Leute aus dem Forum mal nicht nur als Produzenten von Foren-Posts und man geht garantiert auch nicht dümmer nach Hause.

In den letzten beiden Jahren (Günzburg und Hamburg) war ich dabei und werde auch dieses Jahr wieder dabei sein. Und diesmal vermutlich auch als Referent. Und apropos Referent: Alle, die ebenfalls Lust haben, einen Vortrag zu halten, sind herzlich dazu eingeladen. ==> Call for Papers Es werden noch ein paar Referenten gesucht, also meldet euch…

Software Architectural Tactics and Patterns for Safety and Security

Im letzten Semester habe ich eine Seminararbeit zum Thema “Software Architectural Tactics and Patterns for Safety and Security” geschrieben. Grob gesagt geht es darum, wie man auf Architektur-Ebene Sicherheitsaspekte (Safety und Security) behandeln kann.

Dabei stürze ich mich hauptsächlich auf die vom SEI eingeführten Tactics. Das sind eigentlich nicht viel mehr, als wiederverwendbare Ideen um bestimmte Qualitätsziele (wie eben auch Sicherheit) zu erreichen.

Tactics sind sehr feingranular und deshalb sehr flexibel, haben aber den Nachteil, dass sie auch wenig konkret sind. Theoretisch kann man sich aus einzelnen Tactics Patterns zusammenbasteln und so quasi maßschneidern. Für dieses Maßschneidern gibts aber nicht allzu viel Hilfestellung (wie das bei Patterns der Fall wäre).

Eine Taktik wäre beispielsweise “Authorization” um unbefugten Zugriff zu verhindern. Wie die Autorisierung aber nun funktionieren soll, sagt die Taktik nicht. Es ist wirklich nur die Idee, nicht die Realisierung derselben, die hier wiederverwendet wird.

IMHO ist der Wert solcher Taktiken deshalb deutlich geringer, als der Wert von Patterns. Dennoch finde ich solche Taktik-Kataloge ganz interessant. Einfach um mal nach zu gucken, ob man auch an X und Y gedacht hat…

Auf knapp 12 Seiten kann ich selbstverständlich nicht allzu viel präsentieren und auch nahe liegenden Gründen ist das auch recht akademisch. Insgesamt ist die Seminararbeit also mehr eine Zusammenfassung der Problematik und möglicher Lösungsansätze. Ich hab mir auch schon überlegt, ob ich da drüber ein etwas praktischer orientiertes Tutorial schreibe, aber da gibts wohl vorher noch diverse andere Themen, die sich besser für Tutorials eigenen. Hier also erstmal meine Seminararbeit. Vielleicht interessiert sie ja doch den einen oder anderen:

Download: Software Architectural Tactics and Patterns for Safety and Security (Größe: 1.52 MB; bisher 76 mal heruntergeladen)

Gefangen, nicht gefunden! #10

Informatik

  • Das Windows-Setup wird auch immer schlechter. Letztens hab ich meinem Cousin nen DualBoot eingerichtet. Bei der Linux-Installation Platz für Win gelassen, dann Vista-Setup gestartet. ==> “Es wurde kein Systemvolume gefunden, das den Installationskriterien entspricht.” Äh… die gewählte Partition war die erste auf der einzigen Platte und war auch schon NTFS-partitioniert und auch groß genug. Was bitte fehlt da noch? Und die Fehlermeldung ist natürlich mal wieder ziemlich nichts-sagend. Die allwissende Müllhalde hat diverse merkwürdige Vorschläge geliefert (u.a. mit XP-CD booten und von da aus formatieren). Letztendlich hat es sich heraus gestellt, dass man händisch mit diskpart die Partition als aktiv markieren musste. Und dann hats geklappt. Warum bitte kann das Windows-Setup das nicht selbst tun?
  • Zwischendurch hab ich schon gedacht, die Spam-Bots werden intelligenter. Statt sinnlos 20 Kommentare mit Potenzmittel-Werbung zu hinterlassen, kommen jetzt viel weniger und mache davon sind sogar schon auf deutsch und verzichten auf Werbung im Kommentar. Und mit ein bisschen Glück passt der Text sogar zum Artikel. Beispiel:

    An sich ne gute Sache, ich frag mich nur, ob das auch dauerhaft brauchbar bleibt.

    Das war ein Kommentar in meinem Artikel Opera-Profil mit Windows teilen. Der Text passt perfekt. Würde man ja fast freischalten, wenn da nicht der Benutzername “Spiel Roulette” wäre und ne einschlägige Website angegeben wäre. Außerdem wurde der Artikel zwei Mal kommentiert. Mit gleicher Mail-Adresse, unterschiedlichem Benutzernamen und anderem – diesmal etwas weniger gut passenden – Text. Schlussfolgerung: Entweder sind die Spam-Bots schlauer geworden oder sie haben mich in die Liste gepackt “Sinnloses Bombardement hilft nix, aber vielleicht isser ja blöd genug, deutsche Kommentare zu akzeptieren.” Immerhin hab ich jetzt weniger Spam zu löschen… Mittlerweile wird der Spam aber auch schon wieder mehr und wieder dümmer. *seufz*

  • Ich lese gerade The Pragmatic Programmer und dort ein sehr interessantes Kapitel über Exceptions. Dazu muss ich auch mal was bloggen. Das hat auf jeden Fall einen eigenen Blog-Post verdient. Das Buch kann ich jedenfalls weiter empfehlen.

Anderes; heute: Recht

  • Ich höre in der Uni gerade (freiwillig) Zivilrecht. Vom Prof. empfohlen: Tele-Jura. Ist ganz interessant und gut gemacht.
  • Ein interessanter Vortrag von Udo Vetter (lawblog) über rechtliche Aspekte des Bloggens.

Gefangen, nicht gefunden! #9

Informatik… mehr oder weniger… oder weniger

  • Delphi-Treff wird 10. Anlässlich dieses Geburtstags gibt ein neues Design, ein Update der Forensoftware und ein Gewinnspiel.
  • Wer sich schon immer mal gefragt hat *wie* kompliziert C ist, sollte sich mal diesen Artikel über printf() ansehen (via). Da kann man manchmal nur noch den Kopf schütteln.
  • Eigentlich dachte ich zu wissen, was Thunderbird meint, wenn von “Komprimieren” die Rede ist. Dachte ich… Tz…

Anderes – hauptsächlich Typographie

Seit ich LaTeX gelernt hab, finde ich Typographie ganz interessant. Und achte seit dem auch (ein bisschen) darauf. Zumindest bei allem, was über einen Blog-Post hinausgeht. Hier ein paar interessante Links dazu:

Was man im Studium nicht lernt…

…man aber trotzdem wissen sollte, wenn man Software entwickeln will.

Wenn ich mir so überlege, was in den letzten 6 Semestern Informatik-Studium so alles gelernt habe, dann ist das wohl ne ganze Menge. Trotz dem Klischee vom praxisfernen Uni-Absolventen wird da sehr viel Praxisrelevantes gelehrt. Nichtsdestotrotz gibt es einiges, was nicht oder nicht intensiv genug gelehrt wird und dennoch praxisrelevant ist.

Das ist nicht unbedingt ein Fehler des Lehrangebots (auch, wenn das ein oder andere problemlos integriert werden könnte), sondern unterstreicht einfach die Tatsache, dass das, was gelehrt wird, nicht alles ist. Es wird schlichtweg verlangt, dass man sich auch über die Lehrveranstaltungen hinaus Wissen aneignet. Wer das nicht tut, ist in gewissem Umfang wirklich ein praxisferner Theoretiker.

Hier mal eine Liste von dem, was mir so alles einfällt, was alles nicht gelehrt wird. Natürlich kann das von Uni zu Uni unterschiedlich sein und natürlich kann diese Liste auch nur das enthalten, was mir selbst bewusst ist. Also ohne Anspruch auf Vollständigkeit:
weiter lesen »

Gefangen, nicht gefunden! #8

Informatik

  • MPICH2 (zumindest die Windows-Version) ist wohl eines der wenigen Programme das seine Versionsnummer verheimlichen will. Readme – schweigt sich aus, Changelog – gibts (in der Installation) nicht, --version-Parameter – gibts nicht, Ordnername mit Versionsnummer – auch nicht. Letztendlich hab ich den Wert nur in der Systemsteuerung gefunden (da wo man das deinstallieren kann; früher hieß das mal “Software” jetzt glaub ich “Programme und Funktionen”).
  • Deadlocks sind unlustig. Insbesondere, wenn man sie sich mit MPI baut. Naturgemäß lassen sich die Dinger nur schwer debuggen. Da braucht man ne ganze Zeit, bis man die Fehlerquelle überhaupt lokalisiert hat…
  • Hat schonmal jemand seine Bugs protokolliert? Ich hab das mal gemacht und es ist ganz interessant zu sehen, welche Fehler man so macht. Vllt. blogge ich mal ne Statistik.

Anderes

  • Letztens hatte ich mal die Gelegenheit die Menüführung von dem “Bordcomputer” vom Mercedes Sprinter zu bewundern. Schlecht! Mit Useability scheinen es die Auto-Bauer nicht so zu haben. Normalerweise ist sowas ja nicht schwer zu realisieren. 4 Knöpfe reichen da: Menü/OK, Hoch/+, Runter/- und Exit. Das System sollte hinlänglich bekannt sein und ist bei den meisten Monitoren für die Farbeinstellungen, etc. genau so implementiert. Die Entwickler hatten die Lösung also wohl direkt vor der Nase. Was aber ist denen eingefallen: Es gibt 6 Knöpfe: MenüHoch, MenüRunter, Hoch, Runter, + und -. Kein OK, kein Exit, aber dafür Hoch-Runter drei mal. Äh… Was haben die sich dabei gedacht? Vielleicht unterschiedliche Hoch/Runter-Knöpfe für unterschiedliche Hierarchieebenen? Das wär ja schon bescheuert, aber noch nicht mal das stimmt so recht. Sry, aber ne Useability-Schulung täte den Ingenieuren gut.
  • Noch ein Useability-Unfall beim Sprinter: Scheibenwischer und Blinker sitzen hier auf einem Hebel. Zum Wischen muss man da jetzt die Hand vom Lenkrad nehmen und drehen… Da wollten sie wohl den Regensensor verkaufen…

powered by WordPress | WordPress Themes