blog.andreas-klingler.de

Notizen und Gedanken von Andreas Marc Klingler

Schlagwort: Pro­gram­mie­rung

Code-Rea­li­tät

In Vor­le­sun­gen hört man ja ab und zu Hor­ror-Geschich­ten über „die Rea­li­tät”™. Man lacht dann meist dar­über und fragt sich, ob es denn stim­men kann, das in frei­er Wild­bahn wirk­lich der­ma­ßen unglaub­lich schreck­li­cher Code exis­tie­ren kann. So blöd kann ja kei­ner sein.

Letz­te Woche habe ein sol­ches Bei­spiel erlebt, bei des­sen Code-Ana­ly­se ich minu­ten­lang nicht mehr aus dem Lachen her­aus­kam. Auch wenn Wei­nen wohl ange­mes­se­ner gewe­sen wäre.

Es ging um eine Web­platt­form, die trotz 8-Kern-Sys­tems mit 32 GB RAM kaum noch benutz­bar war auf­grund extrem lan­ger Ant­wort­zei­ten im Minu­ten­be­reich. Ein Haupt­pro­blem war eine Meho­de, die fol­gen­des gemacht hat:

  • Lade zu Beginn erst­mal alle Objek­te aus der Daten­bank in eine Varia­ble.
  • Lade, weil’s so schön ist, auch direkt alle abge­lei­te­ten Objek­te abge­lei­te­ter Tabel­len in Varia­ble.
  • Füh­re diver­se Trans­for­ma­tio­nen mit allen die­sen Objek­ten aus (deren Sinn sich mir nicht zu 100% erschlos­sen hat).
  • Fil­te­re ca. 80% der Objek­te raus.
  • Füh­re mit der ver­blei­ben­den Objek­ten wei­te­re Trans­for­ma­tio­nen durch.
  • Ermitt­le schließ­lich die Anzahl der Ele­men­te, die in der „Haupt­va­ria­ble” noch drin sind, und …
  • ver­wen­de die­sen Wert nie wie­der.

Über­flüs­sig zu sagen, dass auch die ande­ren Varia­blen über­haupt nicht ver­wen­det wer­den. Tja…

Will­kom­men in der Rea­li­tät! (Flucht­mög­lich­kei­ten sind nicht aus­ge­schil­dert.)

(Nach­trag: Zum The­ma: devopsreactions.tumblr.com, codinghumor.tumblr.com uvm.)

Mana­ge­dOb­ject­Con­text von Core Data mit Sto­ry­board in XCode 4.2

Um Core Data in einer iOS-Anwen­dung benut­zen zu kön­nen, muss man die Kom­po­nen­ten des Core Data-Frame­works instan­ti­ie­ren, was nor­ma­ler­wei­se im App­li­ca­ti­on Dele­ga­te geschieht. Nor­ma­ler­wei­se wird dort in der Metho­de did­Fi­nishLaun­ching­Wi­th­Op­ti­ons das erzeug­te NSMa­na­ge­dOb­ject­Con­text-Objekt den View Con­trol­lern über­ge­ben, damit die­se es für Zugrif­fe auf die Daten­bank nut­zen kön­nen.

Die Stan­dard­lö­sung, die auch in vie­len Doku­men­ten von Apple noch vor­kommt und von der die­ser Code stammt, sieht wie folgt aus:

Wei­ter­le­sen