blog.andreas-klingler.de

Notizen und Gedanken von Andreas Marc Klingler

Schlagwort: Programmierung

Code-Realität

In Vorlesungen hört man ja ab und zu Horror-Geschichten über „die Realität“(tm). Man lacht dann meist darüber und fragt sich, ob es denn stimmen kann, das in freier Wildbahn wirklich dermaßen unglaublich schrecklicher Code existieren kann. So blöd kann ja keiner sein.

Letzte Woche habe ein solches Beispiel erlebt, bei dessen Code-Analyse ich minutenlang nicht mehr aus dem Lachen herauskam. Auch wenn Weinen wohl angemessener gewesen wäre.

Es ging um eine Webplattform, die trotz 8-Kern-Systems mit 32 GB RAM kaum noch benutzbar war aufgrund extrem langer Antwortzeiten im Minutenbereich. Ein Hauptproblem war eine Mehode, die folgendes gemacht hat:

  • Lade zu Beginn erstmal alle Objekte aus der Datenbank in eine Variable.
  • Lade, weil’s so schön ist, auch direkt alle abgeleiteten Objekte abgeleiteter Tabellen in Variable.
  • Führe diverse Transformationen mit allen diesen Objekten aus (deren Sinn sich mir nicht zu 100% erschlossen hat).
  • Filtere ca. 80% der Objekte raus.
  • Führe mit der verbleibenden Objekten weitere Transformationen durch.
  • Ermittle schließlich die Anzahl der Elemente, die in der „Hauptvariable“ noch drin sind, und …
  • verwende diesen Wert nie wieder.

Überflüssig zu sagen, dass auch die anderen Variablen überhaupt nicht verwendet werden. Tja…

Willkommen in der Realität! (Fluchtmöglichkeiten sind nicht ausgeschildert.)

(Nachtrag: Zum Thema: devopsreactions.tumblr.com, codinghumor.tumblr.com uvm.)

ManagedObjectContext von Core Data mit Storyboard in XCode 4.2

Um Core Data in einer iOS-Anwendung benutzen zu können, muss man die Komponenten des Core Data-Frameworks instantiieren, was normalerweise im Application Delegate geschieht. Normalerweise wird dort in der Methode didFinishLaunchingWithOptions das erzeugte NSManagedObjectContext-Objekt den View Controllern übergeben, damit diese es für Zugriffe auf die Datenbank nutzen können.

Die Standardlösung, die auch in vielen Dokumenten von Apple noch vorkommt und von der dieser Code stammt, sieht wie folgt aus:

Weiterlesen