Backup für Fotografen

Wer möchte seine Fotos verlieren? Niemand! Also muss man sich eine ausreichende Backup-Strategie überlegen. Je höher der Grad der Professionalität, umso mehr wird man in seinen Backup-Prozess und die Hardware dahinter investieren müssen. In diesem Beiträg zeige ich, wie ich meine Fotos in Sicherheit bringe.

Ausgangssituation

Zuerst möchte ich ein paar Worte über meine Ausgangssituation verlieren, da diese ja tongebend für den Aufbau meiner Umgebung ist. Ich verwende nun seit einigen Jahren keine fixe Arbeitsstation mehr. Zum Einsatz kommen zwei Laptops. In meinem Fall sind das Windows-Rechner. Die Größe der jeweiligen Laptop-Festplatten reichen nicht aus, alle Fotos zu fassen. Die Laptops verwende ich für das Überspielen neuer Fotos oder als Zwischenspeicher, wenn ich unterwegs bin und Platz auf der Speicherkarte geschaffen werden muss. Fotos speichere ich alle im RAW-Format, das benötigt dann schon etwas Platz.

Ausstattung

Folgende Gerätschaft kommt bei mir zum Einsatz:

Diese Ausstattung ist für mich durchaus ausreichend. Bei größeren Datenmengen müssen natürlich die Größen der Festplatten entsprechend sein und vermutlich empfiehlt sich dann auch ein stärkeres NAS (hinsichtlich Konvertierungen etc.).

Backup – Workflow

Wenn ich nun mit neuen Fotos nach Hause komme, importiere ich diese mit Lightroom in einen Gesamtkatalog. Damit werden alle neuen Fotos auf die externe Festplatte am Arbeitsplatz kopiert, die Quelldateien bleiben vorerst unberührt. Ist dies geschehen, erfolgt eine Sychronisation mit meinem NAS.

Der Lightroom-Katalog befindet sich in einen Cloud Station Ordner (siehe auch Synology: Die eigene Cloud – ohne Limitierungen und wird somit mit meinem NAS (und allen anderen Rechnern, die mit meinem Benutzer mit dem NAS verbunden sind) synchronisiert. So steht mir der vollständige und stets aktuelle Katalog auf allen Geräten zur Verfügung. Die Sicherungen des Katalogs werden direkt über einen Share auf das NAS gelegt, jedoch nicht synchronisiert.

Täglich wird ein Backup der Daten auf dem NAS erstellt. Der Plan dahinter ist etwas aufwändiger, da natürlich nicht jeden Tag ein vollständiges Backup gezogen wird. Hierfür kommen die zwei MyBook-Platten zum Einsatz. Eines hängt davon am NAS, das andere ist außer Haus. Ein Tausch der Platten findet regelmäßig statt.

Die kleine externe SSD habe ich als ständigen Begleiter und übernimmt unterschiedliche Funktionen: temporäre Kataloge für Bearbeitungen unterwegs, zur Durchsicht etc.

Fazit

Die Infrastruktur gibt schon etwas her, muss aber auch sein, wenn man seine Fotos nicht durch einen Festplatten-Ausfall (oder noch schlimmeres) verlieren möchte. Ganz billig ist die Geschichte nicht, aber hier muss auch nicht jedes Jahr investiert werden. Im Grunde sollte man sein Datenaufkommen pro definierten Zeitraum wissen, dann kann man ganz gut hochrechnen, welche Datenträgergrößen man benötigt bzw. wie lange man damit auskommt. Einmal in ordentliche Hardware investiert, hat man länger seine Ruhe (und kann unbesorgt schlafen).

Hast du Fragen? Her damit!

Software für Fotografen

In der digitalen Fotografie kommt man ohne Software nicht aus. Das beginnt beim Backup, bei Datei-Synchronisationen, Bearbeitung, Verwaltung und vielem mehr. Dieser Beitrag zeigt einige Werkzeuge, die ich – als Hobbyfotograf – einsetze und so auch uneingeschränkt empfehlen kann.

Adobe Photoshop Lightroom hat sich als DAS Tool zum Verwalten und Entwickeln von Fotos durchgesetzt. Wer nicht nur entwickeln, sondern auch verändern möchte, der muss zu Photoshop, Gimp und Co. greifen.

Screenshot Lightroom

Screenshot Lightroom 5.5

Wer Lightroom einsetzt, der sei auf das Plugin Show Focus Points verwiesen. Damit können sich die Fokuspunkte beliebiger Fotos angezeigt werden. Das ist gerade für Lernzwecke sehr brauchbar. Das Plugin funktioniert mit allen Canon EOS und Nikon DSLRs.

Sehr empfehlenswert ist die Google Nik Collection. Vom HDR-Tool bis hin zum kompletten Satz an Filtern für Farbkorrekturen und Retusche ist hier alles enthalten. Die Nik Collection arbeitet mit Photoshop, Lightroom und Photoshop Elements zusammen.

Ein absolutes Muss (zumindest in der Windows-Welt) ist IrfanView. Das ist ein schneller Bildbetrachter, mit dem zudem auch noch Batch-Jobs ausgeführt werden können. Es werden zahlreiche Plugins angeboten, um beispielsweise auch mit RAW-Fotos umgehen zu können.

Wer – so wie ich – gerne im Freien fotografiert, der möchte natürlich gerne wissen, wann die Sonne an einem bestimmten Ort eine bestimmte Stellung innehat, um das gewünschte Licht zu erhalten. TPE – The Photographer’s Ephemeris hilft hier. Was hat es mit Ephemeriden auf sich?

Screenshot FreeFileSync

Screenshot FreeFileSync

Für Backups, ausgesuchte Ordner etc. ist ein gutes Tool zum Synchronisieren von Dateien sehr praktisch. Zwar habe ich alle Fotos auf einer Synology (siehe hier und hier), verwende aber eine externe Festplatte zur Arbeit mit Lightroom. Zudem sind noch zwei Laptops im Einsatz, die immer wieder neue Daten anschleppen. Für diesen Anwendungsfall hat sich FreeFileSync im (fast) täglichen Einsatz sehr bewährt.

Bei der Installation von FreeFileSync bitte ganz genau sein und alles abhaken, das nicht gebraucht wird, da sonst Adware installiert wird, die man nicht haben möchte.

Nachdem ich gerne die GPS-Koordinaten an meinen Fotos dran habe, mir der Canon GP-E2 GPS Empfänger zu teuer ist, setze ich aktuell die App Geotag Photos Pro ein. Die gibt es aktuell für iOS und Android, kostet ein paar wenige Euros, tut was sie soll und auch der Workflow in Richtung Lightroom geht gut und problemlos von der Hand.

Das waren nun die Tools, die ich zum aktuellen Zeitpunkt regelmäßig einsetze. War die “must have” Software hier nicht dabei und sollte ich mir sie unbedingt ansehen, freue ich mich über einen entsprechenden Hinweis per Kommentar. Viel Spaß beim Fotografieren und Nachbearbeiten.

PS: Zu guter Letzt noch ein Tool, das ich selbst zwar noch nicht im Einsatz gehabt habe, durfte aber schon bei der Arbeit damit zusehen und die Ergebnisse waren auch sehenswert: PTgui, ein Tool zum Zusammensetzen von Panorama-Fotos.

Mehr Kraft im Alltag durch Fitnesstracker

Mittlerweile gibt es Fitnesstracker am Markt wie Sand am Meer und in unterschiedlichsten Ausprägungen. Es gibt sie als Schrittzähler, mit oder ohne optischen Pulsmessern, Höhenmessern usw. In diesem Beitrag möchte ich erzählen, wie mir ein Schrittzähler zu mehr Kraft im Alltag verholfen hat.

Eigentlich war ich auf der Suche nach einem kleinen Gadget. Als technikaffiner Mensch braucht man ab und an eine Spielerei. Hans-Peter Schelian hat mich dann auf Schrittzähler aufmerksam gemacht. Das ist nun bereits über ein Jahr her.

Anfangs war ich recht skeptisch, aber es war ein witziges Gadget, nicht allzu teuer, also habe ich mir so einen Fitbit zugelegt. Und dann kam die Ernüchterung.

10.000 Schritte pro Tag werden empfohlen. Kinder schaffen das angeblich locker (und wenn ich meine Kinder so beobachte schaffen die wohl eher 40.000 pro Tag). Die Wochenende liefen ganz gut, an den Arbeitstagen aber, ja, da hätte ich weit mehr erwartet. Ich hatte das Gefühl weit mehr Bewegung zu machen, aber Tage mit knapp unterhalb der 2.000 Schritte-Marke haben eindeutig gezeigt, dass dem nicht so ist. Es bestand also dringender Bedarf auf mehr Bewegung.

Nimm die Stufen, nicht den Lift!

Davon angetrieben mehr Schritte zu schaffen, habe ich begonnen, lieber die Stufen statt den Lift zu nehmen oder aber den längeren Weg um ein Hindernis herum. Das hat zusätzliche Meter gebracht und weiter motiviert.

Im nächsten Schritt begann ich in der Mittagspause eine Runde zu spazieren und wenn das nicht ging, dies eben am Abend nachzuholen. Damit konnte ich mein tägliches Bewegungspensum verdoppeln.

Mehr Energie und Kraft durch Bewegung

Die vermehrte Bewegung hatte natürlich positive Auswirkungen, ich fühlte mich frischer, energiegeladener und total motiviert. So motiviert, dass ich weitere Steigerungen eingeführt habe. Mittlerweile hat sich ein ganz nettes Programm angesammelt:

  • Mit BWT (Body Weight Training) stärke ich meine Muskulatur. Damit habe ich es geschafft, gerade Problemzonen von Softwareentwicklern (Nacken, Schulter und Rücken) zu stärken.
  • Ein- bis zweimal pro Woche schwinge ich mich auf mein Fahrrad oder den Ergometer und spule ca. 20km herunter. Radfahren wirkt sich zusätzlich positiv auf die gesamte Muskulatur aus, fördert auch die Koordination und macht mir persönlich unheimlich Spaß. Wie auch beim BWT steigere ich laufend das Trainingspensum und versuche mich so weiterzuentwickeln.
  • Zusätzlich zu, Training versuche ich mein Bewegungspensum mit Fotowalks, gemeinsames Wandern mit der Familie usw. zu fördern. Das sind zwar “punktuelle” Maßnahmen, sind aber dennoch nicht zu unterschätzen.

Aus dem Kauf eines kleinen Schrittzählers hat sich doch sehr viel entwickelt. Ich fühle mich weit besser als damals, bin stressresistenter, beweglicher, habe eine bessere Haltung. Zusätzlich bin ich damit auch ein gutes Vorbild für meine Kinder.

Auch wenn sich viele Gedanken machen, dass die so aufgezeichneten Daten an Versicherungen weitergereicht werden könnten (und entsprechende Vorhaben gibt es ja), mich hat die Erkenntnis hart getroffen, dass man sich als Softwareentwickler de facto null bewegt. Um Probleme mit der Muskulatur und/oder dem Bewegungsapparat zu vermeiden bzw. zu vermindern, muss man sich bewegen. Es ist egal was genau man tut, Bewegung zählt und hilft.

Also, los geht’s! Aufstehen und gleich mal mindestens 15 Minuten bewegen!

Weniger Demotivation, mehr Motivation

Zum Thema Motivation gibt es ja hunderte, wenn nicht gar tausende Bücher und Ratgeber. Was findet sich nicht an Tipps wie man sich selbst und andere motivieren kann. Das klingt hilfreich, aber: Selbst motivieren kann sich nur, wer ohnehin schon einen gewissen Grad an intrinsischer Motivation mitbringt. Andere Menschen zu motivieren ist weitaus schwieriger. Sie müssen begeisterungsfähig sein und ebenfalls über einen ausreichend starken Motivations-Motor verfügen. Da dies alles nur sehr schwer steuerbar ist, empfiehlt es sich an einer einfacheren Stelle zu investieren: Demotivation verhindern.

Gehaltserhöhungen sorgen nur kurzfristig für Motivation.

In meiner bisherigen Karriere habe ich immer wieder gesehen, dass Führungskräfte glauben, mit einer Gehaltserhöhung für höhere Motivation und bessere Performance sorgen zu können. Das mag kurzfristig auch zutreffend sein. Das “Glückshormon” Dopamin wird ja mit einer Antriebssteigerung und generell Motivation in Verbindung gebracht. Tatsächlich flaut dieser Zustand jedoch sehr schnell ab und der Alltag hält Einzug.

Die Verringerung von demotivierenden Einflüssen kann Wunder bewirken.

Eine weit effektivere – und nachhaltigere – Variante erscheint mir die Verringerung der demotivierenden Einflüsse zu sein. Und derer gibt es in der Regel jede Menge. Hier einige Beispiele:

  • Menschen brauchen Ziele und Aufgaben die sie verstehen/nachvollziehen können. Deswegen ist es wichtig, als Unternehmen eine Vision voran zu treiben und diese den Mitarbeitern auch klar kommunizieren zu können. Nichts demotiviert mehr, als nicht zu wissen, wofür man arbeitet bzw. als das Wissen, dass die eigene Arbeit umsonst ist.
  • Oft fehlt Hardware um Anforderungen ordnungsgemäß umsetzen zu können  (keine Testgeräte für mobile Entwicklung), oft steht aber auch nur die günstigste oder ein bereits in die Jahre gekommene Hardware zur Verfügung, mit der die Arbeit eine reine Wartezeit ist.
  • Ein häufiger Grund der Unzufriedenheit sind mangelhafte Arbeitsplätze bzw. -umgebungen. Häufig finden sich unzulängliche Sitzgelegenheiten, das Raumklima wird vernachlässigt und zusätzlich wird auf Großraumbüros gesetzt, die effizientes, zielorientiertes Arbeiten fast unmöglich machen.
  • Gerne wird auch das Berufsbild des Softwareentwicklers misinterpretiert. Softwareentwicklung ist ein kreativer Prozess, kein Fließbandjob. Kreative Prozesse benötigen entsprechenden Freiraum. Dies bedeutet nicht, dass Softwareentwickler tun und lassen können was sie wollen, nein. Wer das vorhandene Potential abgreifen möchte, tut jedoch gut, dies zu berücksichtigen.

Wie man sieht, können Verbesserungen mit überschaubarem Investment herbeigeführt werden. Im Grunde gilt es heraus zu finden, was die täglichen Störfaktoren sind und wie sie ausreichend gut behoben werden können. Für die Mitarbeiter ist das eine gute Sache, immerhin werden Problemstellen beseitigt, die tagtäglich am Nervenkostüm zerren und wenig Energie für die eigentliche Arbeit übrig lassen.

 

Freilichtmuseum Stübing

Diese Diashow benötigt JavaScript.

ASP.NET vNext (Alpha 3) und Ubuntu

Katana, als eine Implementierung zu Owin, setze ich aktuell in zahlreichen Projekten ein. Weit angenehmer soll ASP.NET vNext werden. Da ich in den letzten Monaten wieder vermehrt mit Linux arbeite, musste ich natürlich gleich die Plattformunabhängigkeit testen, zumindest wenn es an die Installation ging. Da gab es dann aber doch ein paar Hürden, die jedoch schnell gelöst werden konnten.

Sehr hilfreich hat Christian Weyer zahlreiche Informationen und Tipps zusammen getragen.

Das funktionierte eigentlich auch gut, bis auf die Geschichte mit libuv. Der angegebene Hinweis hat bei mir nicht funktioniert. Eine Alternative, die unter Ubuntu 14.04 läuft findet sich hier.

Zusammengefasst:
* Kestrel beziehen
* Kompilieren
* libuv.so.1 nach ~/.kpm/packages/Microsoft.AspNet.Server.Kestrel/1.0.0-alpha3/native/darwin/universal/libuv.dylib kopieren

Und hier der Beweis:
ASP.NET vNext (Alpha 3) unter Ubuntu

Anforderungen an die Produktentwicklung

Produktentwicklung ist eine richtig schwierige Angelegenheit und birgt zahlreiche Gefahren in sich. Da bedarf es nicht nur ordentlicher finanzieller Mittel, sondern auch einiges an Mut. Mut zu Entscheidungen, die gerade den ersten Kunden nicht wirklich gefallen werden.

Bedarf erkennen und Lösung anbieten

Wer mit einem Produkt erfolgreich sein möchte, muss einen konkreten Bedarf erkennen und lösen können. Entweder besitzen viele denselben Bedarf und es gibt noch keine Lösung hierzu oder man schafft es, einen Bedarf mit dem eigenen Produkt zu wecken.

Idealerweise ist man selbst der Mittelpunkt des Bedarfs und will das zu schaffende Produkt vorrangig für sich selbst einsetzen.

Die Grundidee, quasi die Vision des Produkts, muss an alle Beteiligten kommuniziert werden. Wer daran mitarbeitet, muss dahinter stehen um das Ziel mit Nachdruck verfolgen zu können. Große Zweifel an der Lösung, des gewählten Weges oder aber auch des Umfanges können das Projekt sehr schnell scheitern lassen.

Konsequente Verfolgung des Ziels

Der wohl wichtigste Schritt in der Produktentwicklung ist das Schaffen einer ersten verkaufbaren Version. Das sollte ein möglichst kleines Set des zu erreichenden Ziels sein. Dennoch muss es einen klaren Nutzen bringen, soll es auch verkauft werden können.

Dazu ist es unabdingbar, hartnäckig in die gewünschte Richtung zu arbeiten. Natürlich werden sich einige Dinge anders entwickeln als zuvor geplant, Ablenkungen sollten aber ferngehalten werden.

Essentiell ist aus meiner Sicht, diese erste Phase ohne gröbere Änderungen zu beenden. Das bedeutet:

  • Verkaufbarer Umfang definieren
  • Marketing / Vertrieb darauf abstimmen
  • Definierten Umfang entwickeln

Gerade in dieser Phase darf es keine Richtungsänderungen geben. Das würde das Produkt bereits in den Anfängen auf einen instabilen Boden stellen (sowohl technologisch, als auch in den Köpfen der involvierten Personen).

Nicht von Kunden steuern lassen

Jedes Produkt startet mit einem bzw. wenigen Kunden. Diese melden zurück, hätten gerne diese Verbesserung und diese Änderung. Außerdem hätten sie das auch gerne so, denn so arbeiten sie, nicht anders.

Natürlich muss man sich die Rückmeldungen der Kunden genau ansehen und sie teilweise (!!) einfließen lassen. Wie und was davon ins Produkt übernommen wird, entscheidet aber nicht der Kunde. Man darf sich hier nicht zu sehr treiben lassen. Tut man das, verlässt man den direkten Weg zu seinem Ziel. Das hat natürlich Implikationen auf den Zeitpunkt der Fertigstellung, den Umfang des Produktes usw.

Gerade hinsichtlich des Produktumfanges können flankierende Aufgaben Änderungen erfahren. Man denke hier an die Vorbereitung zu Marketing-Maßnahmen. Auch diese müssten sich ändern, sollte es zu größeren Änderungen aufgrund von berücksichtigten Kundenwünschen kommen. Das kann gewollt sein, wenn eine Idee so gut ist, dass sie unmöglich ignoriert werden kann. Meist sind die Änderungswünsche jedoch nicht strategischer Natur.

Man muss sich und dem Kunden vor Augen halten, dass ein “Standard-Produkt” nicht alle Wünsche aller Kunden berücksichtigen kann. Dafür ist es preislich wesentlich günstiger zu haben und deckt schon viele der Grundanforderungen ab.

Kundenspezifische Anpassungen vermeiden

Kundenspezifische Anpassungen werden gerne als zusätzliche Leistung angeboten. So hat man ein Standard-Produkt das für viele potentielle Kunden verfügbar ist. Auf Wunsch (und mit entsprechender Gegenleistung) bekommt der Kunde zusätzliche Funktionen oder aber Erweiterungen bestehender Möglichkeiten.

Das klingt gut, immerhin kann man sich so eventuell die Produktentwicklung (die zugegeben teuer ist) (mit)finanzieren lassen.

Dieses Vorgehen hat allerdings auch ein paar Nachteile:

  • Damit das Produkt für Kunden angepasst werden können, müssen Konfigurationsmöglichkeiten geschaffen werden wo vorher keine notwendig waren.
  • Sollen bestehende Funktionen für Kunden erweitert/verändert werden, müssen auch hier Mechanismen vorgesehen werden, damit ein austauschbares Eingreifen möglich ist. Das erhöht die Komplexität, Fehleranfälligkeit und Wartbarkeit der Anwendung.
  • Die Produktentwicklung steht natürlich nicht still und so kann es zu Veränderungen an den bestehenden Mechanismen geben. Diese Änderungen sind bei allen Kundenerweiterungen nachzuziehen. Wird dies hinausgezögert, wird irgendwann der anstehende Aufwand nicht mehr akzeptiert. Das Resultat ist die Verwaltung und Pflege von unterschiedlichen Versionen (meist Major-Versionen mit eigenen Änderungen/Erweiterungen).
  • Diese unterschiedlichen Konfigurationen und Erweiterungen stellen zusätzliche Anforderungen an das Configuration-/Release-Management und das Thema des Deployments im Allgemeinen.

Bereits diese wenigen Punkte lassen erahnen, was hier auf das Projektteam an zusätzlichen Aufwand zukommt. Die Schaffung eines eigenen Teams für die Erfüllung von Kundenträumen resultiert in erhöhtem Abstimmungsaufwand, Support, Diskussionen an welcher Stelle Umsetzungen stattzufinden haben. Allen voran stehen Kundenprojekte zudem meist unter Zeitdruck. Da eine Kundenanforderung gerne auch eine Verallgemeinerung an der Basis des Produktes verursacht, wird dieser Zeitdruck über mehrere Teams verteilt und Zeitpläne auch einmal massiv durcheinander gewürfelt.

Fixe Rahmenbedingungen für die Produktentwicklung

Alles ändert sich, laufend. So ist das in der Softwareentwicklung und dem sollte (muss) auch Rechnung getragen werden. In der Produktentwicklung bedarf es jedoch einiger fixen Säulen. Diese sind anfangs klar zu definieren und an ihnen sollten alle Vorgänge gemessen werden.

Dabei geht es zumindest um das zu lösende Problem und das gewählte Geschäftsmodell. Änderungen an einer dieser beiden Säulen hat massive Auswirkungen auf das gesamte Produkt plus Anhang.

Den eigenen Weg finden

Man kennt es: Da sieht man hier etwas, dann dort. Überall Informationen, Konzepte und Pläne, die auch das eigene Produkt bereichern würden. Dies ist vor allem dann ausgeprägt, wenn sich potentielle Konkurrenten am Zielmarkt tummeln. Das ist wunderbar und kann eigene Ideen ungemein bereichern, jedoch sollte man sich nicht davon vorrangig treiben lassen. Meist ist der eigene Produkt-Ansatz ein anderer und somit können unterschiedliche Ideen oft gar nicht so einfach kombiniert werden bzw. muss die Sinnhaftigkeit in Frage gestellt werden.

Das eigene Produkt muss eine eigene Persönlichkeit bekommen und dies auch vermitteln. Werden Eigenheiten anderer Produkte angenommen, ist dies nicht mehr möglich. Das eigene Produkt erscheint als Flickwerk. Das gilt es unbedingt zu vermeiden.

Daher Ideen/Umsetzungen der Konkurrenz beobachten und durchaus einmal längere Zeit “sitzen” lassen. Erstens muss man nicht alles haben, was die Konkurrenz hat und zweitens kann man das mit ein wenig Abstand und weniger eigenen Druck sicherlich besser machen.

Fazit

Wer ein Produkt für die Masse entwickelt, weiß wie schwierig diese Aufgabe ist. Vor allem, wenn das Unternehmen klein ist und Kundenanfragen nur sehr ungern abgelehnt werden. Nichts desto trotz muss man sich für eine Richtung entscheiden. Ein erfolgreiches Produkt zu schnüren und gleichzeitig den Kunden alle Wünsche zu erfüllen wird nicht möglich sein.

Link-o-licious #7

Interessante Web-Ressourcen habe ich wieder gefunden. Links zu den Themen Web, Go und Produktivität finden sich hier. Ebenfalls etwas zum Nachdenken.

Web

Go

Produktivität

Zum Nachdenken

JSON-Datei mit Go einlesen

Das JSON-Format wird ganz gerne verwendet, um Daten oder Einstellungen zu übertragen bzw. zu speichern. Daher stellt sich häufig die Anforderung, JSON-Dateien einzulesen. Dieser Kurzbeitrag zeigt den notwendigen Sourcecode zum Einlesen von JSON-Dateien und dem Mapping auf einen Go Typen.

Gegeben ist eine JSON-Datei mit Einstellungen für eine Anwendung:

{
    "connectionString": "der connection string im detail"
}

Zur Abbildung der Daten im JSON-Format wird ein Type namens Settings erstellt. Dabei ist zu beachten, dass ein JSON-Mapping angegeben werden kann.

type Settings struct {
    DbConnectionString string `json:"connectionString"`
}

Für das Einlesen der Datei wird das Package os benötigt. Für das Serialisieren der JSON-Daten das Package json. Der Vorgang wird in der Funktion ReadSettings durchgeführt, wie nachfolgend zu sehen:

package samplelib

import (
    "encoding/json"
    "os"
)

type Settings struct {
    DbConnectionString string `json:"connectionString"`
}

func ReadSettings(fileName string)  (settings *Settings, err error) {
    file, _ := os.Open(fileName)
    settings = new(Settings)
    err = json.NewDecoder(file).Decode(settings)
    return
}

Nach einem Import kann dies wie folgt aufgerufen werden:

var settings, err = samplelib.ReadSettings("settings.json")

if err != nil {
    fmt.Println("Error while reading configuration:", err.Error)
} else {
    fmt.Println("connection-string:" + settings.DbConnectionString)
}

Für weitere, tiefergehendere Informationen kann ich JSON and Go – The Go Blog empfehlen.

Link-o-licious #6

Ich habe wieder einige interessante Links, die ich mit euch teilen möchte. Dieses Mal dreht sich sehr viel um das Thema Go, da ich mich aktuell vermehrt damit beschäftige und den einen oder anderen Test damit mache.

Allgemein

Erfolgreich in der Unvorhersagbarkeit, oder: Softwareglück ohne Schätzungen

Web

Initiative “Schöneres Backend”: 20 kostenlose Dashboard UI Mockups

Go

Vor einigen Monaten habe ich vorsichtig begonnen mich mit Go zu beschäftigen. Dieses Engagement wird nun immer intensiver, wodurch sich in meinen Bookmarks nun auch vermehrt Links auf Go-Inhalte finden..

The Go Programming Language Specification
Common Mistakes Made with Golang, and Resources to Learn From
Build a RESTful API in Go – Video
Build a RESTful API with Martini
An Introduction to Programming in Go

.NET

Combining Modifiers in C#: “protected internal” and “override sealed”
Visual Studio 14 CTP 2 verfügbar

© 2014 Norbert Eder

Theme by Anders NorenUp ↑