Zum Inhalt springen

Archiv

Tag: Software

Ninject

Mai 23

Seit ich meine Bröt­chen bei einem Inge­nieur­dienst­leis­ter ver­diene, sind die beruf­li­chen Ein­träge recht sel­ten gewor­den. Somit möchte ich jetzt die Gele­gen­heit erfrei­fen, um in all­ge­mei­ner und unver­fäng­li­cher Art über mein neues Pro­jekt zu berichten.

Zuerst ein­mal hat sich mein Arbeits­weg hal­biert, vor­her war ich in der Nähe von Bern tätig. Das fast täg­li­che, lange Pen­deln hat mich ziem­lich ange­strengt. Geblie­ben aus die­ser Zeit ist aber noch mein Abo für die 1. Klasse. Im Prin­zip brau­che ich das nicht mehr, aber irgend­wie hänge ich doch noch dran. Und es gibt ein­fach mehr Platz und damit auch Ruhe in den gelb mar­kier­ten Wagen der 1. Klasse, nach denen ich jetzt schon gewohn­heits­mä­ßig Aus­schau halte. Mein Weg ist deut­lich kür­zer jetzt und führt durch eine ver­traute, schöne Landschaft.

Aber nun zum tech­ni­schen Teil. Ich arbeite an einem gigan­ti­schen, objekt­ori­en­tier­ten Software-​​Projekt in einer spä­ten Phase. Vor­bei sind die schö­nen Zei­ten des Archi­tek­tur­ent­wurfs und des Imple­men­tie­rens, jetzt geht es um das Besei­ti­gen von Feh­lern und das hof­fent­lich frist­ge­mäße Aus­lie­fern. Pro­ble­ma­tisch sind die vie­len Abhän­gig­kei­ten zwi­schen den Modu­len. Jedes­mal, wenn eine Klasse eine andere ver­wen­det, muss sie deren Imple­men­tie­rung ken­nen. Dadurch ent­stand Code, der sich nur schlecht tes­ten lässt. Idea­ler­weise möchte man ein Modul iso­liert betrach­ten und tes­ten. Durch die vie­len Abhän­gig­kei­ten muss man aber quasi immer alles zugleich tes­ten und kann so keine wirk­lich gute Aus­sage machen.

Eine Lösung die­ses Dilem­mas bie­tet Depen­dency Injec­tion. Wir ver­wen­den als C#–Pro­gram­mie­rer das Frame­work Nin­ject. Her­vor­zu­he­ben ist die tolle Web­seite die­ses Pro­jekts im Ninja-​​Stil. Und so ver­bringe ich meine Tage jetzt mit dem nin­jec­ten, wie wir das so nen­nen. Jedes new wird kri­tisch über­prüft, ob man es nicht durch einen Ninject-​​Ausdruck erset­zen könnte. Am Ende such Nin­ject auto­ma­tisch den pas­sen­den Kon­struk­tor her­aus und kann auch statt der nor­ma­len Imple­men­tie­rung ein Mock-​​Objekt verwenden.

Damit beschäf­tige ich mich also momen­tan täg­lich, und das mit einem wun­der­schö­nen Blick auf die Berge.

Vor ziem­lich genau einem Jahr begann ich bei der Hel­ve­ting AG, einem auf­stre­ben­den Schwei­zer Inge­nieur­büro. Mit dem Dok­tor­ti­tel in der Tasche, nach drei Wochen Arbeits­lo­sig­keit und mit­ten in einem JobBasis-​​Kurs der New­Pla­ce­ment GmbH wagte ich den Sprung ins rich­tige Berufs­le­ben. Und da bin ich nun und reflektiere.

Ein Jahr – drei Projekte

Zual­ler­erst erwar­tete mich der Sprung ins kalte Was­ser eines ambi­tio­nier­ten Groß­pro­jekts, es ging um die Neu­ent­wick­lung eines medi­zi­ni­schen Geräts. Ich war als Teil­pro­jekt­lei­ter von Anfang an stark gefor­dert. Nach der Kon­zept­phase ver­schob sich mein Schwer­punkt auf ein inter­nes Pro­jekt, ich ent­wi­ckelte in Rekord­zeit ein Sys­tem für die Zeit­er­fas­sung mit cake­PHP und Post­greSQL, wel­ches die exis­tie­rende Lösung mit Excel-​​Sheets ablöste.

Danach gab es noch ein zwei­mo­na­ti­ges Kun­den­pro­jekt mit einer Smart-​​Phone-​​Applikation, so dass ich schon an drei sehr unter­schied­li­chen Pro­jek­ten mit­ge­wirkt habe. Ab Novem­ber erwar­tet mich ein vier­tes Pro­jekt, dies­mal im Bereich Software-​​Tests und direkt beim Kun­den. Somit hat mich jetzt auch das Pen­del­schick­sal erwischt, mit einem 1. Klasse–Gene­ral­abon­ne­ment, WLAN im Zug und der Mög­lich­keit unter­wegs zu arbei­ten lässt sich das aber sicher­lich ertra­gen. Den­noch bedeu­tet es eine Umstel­lung, an die ich mich erst noch gewöh­nen muss.

For­schung vs. Industrie

Was sind nun die Unter­schiede zwi­schen For­schung und Indus­trie? Neu sind die Zeit­er­fas­sung und der Druck, in der geplan­ten Zeit ein Resul­tat zu errei­chen, mit dem der Kunde zufrie­den ist. Da ich aber lange Zeit an einem inter­nen Pro­jekt gear­bei­tet habe, traf das für mich nur zum Teil zu. Obwohl ich auch dort unter gro­ßem Druck stand, zum Stich­tag musste das Basis­sys­tem mit fir­men­kri­ti­schen Daten ste­hen und funk­tio­nie­ren. Das grund­sätz­li­che Pro­blem bei Pro­jek­ten für jemand ande­ren sind wech­selnde Anfor­de­run­gen. Und gerade beim Zeiterfassungs-​​System, mit dem alle arbei­ten, kom­men wöchent­lich neue Anfor­de­run­gen und Ver­bes­se­rungs­vor­schläge, so dass die gro­ßen Ent­wick­lungs­pro­jekte schnell mal auf­ge­scho­ben wer­den. In der For­schung war das anders, dort konnte ich wei­test­ge­hend selbst bestim­men, was ich mache und wann es gut genug ist, natür­lich immer im Dia­log mit den Team­kol­le­gen und mei­nem Doktorvater.

Der All­tag ist sehr ähnlich. Nach dem etwas län­ge­ren Arbeits­weg treffe ich in einer Büro­um­ge­bung mit vie­len am Com­pu­ter tip­pen­den und kli­cken­den Leu­ten ein. Ich starte meine per­sön­li­che Kiste hoch, che­cke Emails und arbeite wei­test­ge­hend selbst­stän­dig an mei­nen Pro­jek­ten. Mit­tags­pause, Bespre­chun­gen mit Kol­le­gen und Vor­ge­setz­ten, Prä­sen­ta­tio­nen, Fahr­ten zum Kun­den, Kon­fe­renz­teil­nah­men feh­len zuge­ge­be­ner­ma­ßen – im Grunde sehr ähnli­che Abläufe.

Und das Lösen von Pro­gram­mier­pro­ble­men ist auch gleich geblie­ben, ob nun mit Mat­lab, C++ oder PHP, stets stoße ich irgendwo an, ana­ly­siere, kon­sul­tiere das Inter­net, grenze ein und löse das Pro­blem, um auf das nächste zu tref­fen. Was mir ein biss­chen fehlt, ist der hohe Anspruch, den wis­sen­schaft­li­che Publi­ka­tio­nen an das For­mu­lie­ren und Lay­out von Doku­men­ten stel­len. Dafür fehlt schlicht die Zeit, obwohl der Abschluss­be­richt oder das Kon­zept eben­falls sehr wich­tige Doku­mente sind, für die der Kunde eine Menge Geld bezahlt. Aber für einen guten Bericht müsste man schon meh­rere Tage im Ange­bot rechnen.

Inhalt­lich habe ich eini­ges an Ent­wick­lungs­me­tho­dik gelernt, Android und Java ken­nen gelernt, außer­dem meine Fähig­kei­ten im Bereich Datenbank-​​Entwurf und Web­de­sign ausgebaut.

Frei­zeit

Meine Frei­zeit­ak­ti­vi­tä­ten konnte ich zum größ­ten Teil bei­be­hal­ten, ich nahm an bis zu drei par­al­le­len Thea­ter­pro­duk­tio­nen oder –kur­sen teil. Der Sport kam etwas zu kurz, aber die Nähe zur Schlie­re­ner Klet­ter­halle konnte ich auch gut nut­zen, so dass momen­tan Klet­tern mein Aus­gleichs­sport ist.

Fazit

Alles in allem bin ich zufrie­den, ich wollte mich in ver­schie­de­nen Pro­jek­ten in der Indus­trie aus­pro­bie­ren und Erfah­rung sam­meln, die wich­tigste Wäh­rung auf dem Arbeits­markt und das größte Manko eines frisch­ge­ba­cke­nen ETH-​​Absolventen. Von daher werde ich noch einige Zeit dabei blei­ben und regel­mä­ßig neu über­le­gen, ob und wann ich zurück in die deut­sche Hei­mat möchte.

MVC ist ein Begriff, der bei Web­an­wen­dun­gen mit Datenbank-​​Zugriff häu­fig auf­taucht. Der­zeit arbeite ich mit mit dem MVC-​​orientierten cake­PHP, um eine interne ERP-​​Lösung zu ent­wi­ckeln. Jedoch ent­hält die Web­seite eines ande­ren Ent­wick­lungs­sys­tems eine schön geschrie­bene und sehr anschau­li­che Beschrei­bung des MVC-​​Konzepts (over­view [Kohana User Guide]). Anhand des Bei­spiels einer Bank wer­den die grund­le­gen­den Eigen­schaf­ten die­ser Archi­tek­tur beschrie­ben und Regeln für die Gestal­tung for­mu­liert. Meine der­zei­tige ERP-​​Beispiel-​​Lösung bedarf defi­ni­tiv einer Überarbeitung…

Wenn du ein Hob­by­fo­to­graf mit digi­ta­ler Kamera bist, kennst du das Pro­blem — im Laufe der Zeit sta­peln sich Hun­derte Auf­nah­men auf der Fest­platte, der Über­blick geht ver­lo­ren und ein ein­zi­ger Festplatten-​​Crash kann alle Arbeit zunichte machen. Bei mir ist jetzt nach vier Jah­ren mit geschätz­ten 10.000 Fotos der Moment gekom­men, in dem ich mich dem Thema Archi­vie­rung sys­te­ma­tisch wid­men möchte.

Fest­platte, DVDs oder Cloud?

Im Gegen­satz zu den ana­lo­gen For­ma­ten Dia und Nega­tiv kön­nen Fest­plat­ten oder DVDs Daten nicht wirk­lich lange auf­be­wah­ren. Das wich­tigste Prin­zip ist also Redun­danz, spei­chere deine Bil­der nicht nur ein­mal, son­dern auf meh­re­ren Spei­cher­me­dien. Nur so kannst du den Ver­lust wert­vol­ler Daten wirk­lich garantieren.

Ich ver­wende mir als pri­märe Archiv­lö­sung eine externe Fest­platte, die im RAID1-​​Modus arbei­tet. Es sind also eigent­lich zwei Fest­plat­ten, die genau die glei­chen Daten ent­hal­ten. Wenn nun eins der bei­den Lauf­werke aus­fal­len sollte, sind die Daten immer noch auf dem ande­ren ver­füg­bar. Und diese externe Fest­platte steht nun nicht immer neben dem Rech­ner, wo sie durch ver­se­hent­li­che Fuß­tritte, Staub oder Tem­pe­ra­tur­schwan­kun­gen Scha­den neh­men kann, son­dern im Ori­gi­nal­kar­ton ver­packt in der Abstell­kam­mer. Je nach Bedarf hole ich sie dann her­aus und syn­chro­ni­siere den Bilder-​​Ordner.

In DVDs habe ich nicht so das Ver­trauen, jedoch wäre das eigent­lich auch mal eine Maß­nahme. Denn bei einem Woh­nungs­brand wären wohl Rech­ner und externe Fest­platte futsch und alle Daten ver­lo­ren. Dann sind bei Ver­wand­ten, Freun­den oder auf Arbeit depo­nierte Archiv-​​DVDs die ein­zige Variante.

Eine rela­tiv neue Vari­ante fürs Archi­vie­ren ist Online-​​Speicher. In klei­nen Men­gen ist die­ser auch kos­ten­los zu bezie­hen, aber Bild­da­ten neh­men leicht meh­rere Giga­byte ein, so dass bei der Mehr­zahl der Anbie­ter saf­tige Gebüh­ren anfal­len. Ich habe mich bei Wuala ange­mel­det, was momen­tan aber noch im Beta-​​Stadium ist. Da hat man 1 GB kos­ten­lo­sen Online-​​Speicher und die Wahl zwi­schen dem Kauf von zusätz­li­chem Spei­cher oder dem Tausch von eige­nen Fest­plat­ten­platz gegen Online-​​Speicher. Da alle Daten ver­schlüs­selt sind, kann man natür­lich nicht schauen, was die ande­ren denn da so archi­vie­ren. Bei genü­gend eige­nem Fest­plat­ten­platz erhält man so kos­ten­los den aus­fall­si­che­ren Online-​​Speicher.

Schon seit län­ge­rer Zeit bin ich bei flickr. Im Gegen­satz zu Wuala kann man hier aber aus­schließ­lich Bil­der in bekann­ten For­ma­ten hoch­la­den, Roh­da­ten las­sen sich da nicht for­ma­tie­ren. Aber in Bezug auf soziale Inter­ak­tion (Kom­men­tie­ren von Bil­dern, Bewer­ten) ist flickr über­le­gen. Am Beginn wollte ich mög­lichst alle Fotos tei­len, im Geist eines offe­nen Aus­tau­sches. Jedoch bin ich über die Jahre selek­ti­ver gewor­den und stelle nur noch aus­ge­wählte Bil­der bei flickr rein, ins­be­son­dere dann, wenn ich sie in mein Web­log ein­bin­den möchte.

Bild­for­mate für die Archivierung

Ein ande­res tech­ni­sches Kapi­tel ist das der Bild­da­tei­for­mate. Kri­te­rien für die Beur­tei­lung der zahl­rei­chen exis­tie­ren­den For­mate sind Qua­li­täts­ver­luste durch Kom­pri­mie­rungs­al­go­rith­men (z.B. beim JPG-​​Format) und ob sich Meta­da­ten im XMP-​​, EXIF– und IPTC-​​Format ein­bet­ten las­sen. Diese For­mate erlau­ben die Erfas­sung zusätz­li­cher Infor­ma­tio­nen, also Foto­graf, Kamera-​​Modell, Ort, Beschrei­bung, Stich­worte, Bewer­tung, etc. Sehr wich­tig für das Wie­der­fin­den von Fotos ist die Ver­gabe von Stich­wor­ten (Tags). Diese beherr­schen so ziem­lich alle Bild­ver­wal­tungs­pro­gramme, aber aus­tausch­bar sind die Bil­der nur, wenn die Daten in der Bild­da­tei direkt gespei­chert werden.

Das JPG-​​Format ist nach wie vor das mit der wei­tes­ten Ver­brei­tung, da es sehr kleine Datei­grö­ßen ermög­licht. Diese Kom­pri­mie­rung ist jedoch mit einem Qua­li­täts­ver­lust ver­bun­den. Je nach Ein­stel­lung der Qua­li­tät kön­nen Arte­fakte auf­tre­ten. In Bezug auf die Ein­bet­tung von Meta­da­ten ist JPG sehr offen, alle For­mate kön­nen ein­ge­bet­tet wer­den. Das PNG-​​Format, wel­ches kei­nen Qua­li­täts­ver­lust ver­ur­sacht, ist genau an die­sem Punkt schlech­ter, ledig­lich Daten im XMP-​​Format las­sen sich einbetten.

Pro­fis wer­den ihre Daten im Roh­for­mat sichern wol­len, nur so ist die volle Qua­li­tät gewähr­leis­tet. Dafür sind die Dateien dann auch ent­spre­chend grö­ßer. Außer­dem hal­ten sich die Kame­ra­her­stel­ler bedeckt, was die genaue Defi­ni­tion der For­mate angeht, wes­halb andere Anbie­ter meist keine Ver­än­de­run­gen an der Bild­da­tei direkt vor­neh­men, son­dern lie­ber noch eine gleich­na­mige XMP-​​Datei erzeu­gen, wel­che alle Daten ent­hält. Als neuer Quasi-​​Standard gibt es das DNG-​​Format für Roh­da­ten, jedoch ist auch da nicht sicher­ge­stellt, ob die pro­prie­tä­ren For­mate nicht doch gewisse Extra-​​Informationen beinhal­ten, die dann ver­lo­ren gehen könnten.

Ich per­sön­lich fände es müh­sam, meine Bil­der in ver­schie­de­nen For­ma­ten zu spei­chern. Ich ver­wende JPG mit maxi­ma­ler Qua­li­tät und nur in Aus­nah­me­fäl­len hebe ich die Roh­da­ten auf.

Work­flow

Ich foto­gra­fiere mit mei­ner Nikon D200 meist im Roh­for­mat. Nach dem Über­spie­len auf den hei­mi­schen PC benutze ich das Pro­gramm Adobe Bridge CS4 für das Sich­ten, Aus­sor­tie­ren, Bewer­ten und Tag­gen. Der wich­tigste erste Schritt ist das Aus­sor­tie­ren der schlech­ten Bil­der. Dadurch erspart man sich einen Hau­fen Arbeit, da sich die Anzahl schon mal deut­lich redu­ziert. Wenn ich Zeit habe, ver­gebe ich Stern­chen und Stich­wör­ter. Ins­be­son­dere die Per­so­nen ver­su­che ich immer mit Stich­wör­tern fest­zu­hal­ten, schon einige Male brauchte ich Bil­der einer bestimm­ten Per­son. Und das lässt sich mit einer ein­fa­chen Suche nach dem ent­spre­chen­den Stich­wort recht ele­gant erledigen.

Danach öffne ich alle Bil­der eines Shoo­tings mit Adobe Camera Raw und kor­ri­giere ein wenig an Belich­tung, Dyna­mik und Schärfe. Wenn eine Reihe Bil­der unter ähnli­chen Bedin­gun­gen ent­stand, lohnt es sich, sie gemein­sam zu bear­bei­ten. Anschlie­ßend folgt noch das Zurecht­schnei­den und –dre­hen, lei­der meist für jedes Bild ein­zeln. Dann spei­chere ich alle Bil­der als JPG und lösche die sper­ri­gen Ori­gi­nal­da­ten. Fertig.

Refe­ren­zen

Anre­gung für meine Beschäf­ti­gung mit dem Thema Archi­vie­rung war das c’t Son­der­heft Digi­tale Foto­gra­fie.