Western Digital “My Book World”–SSH Zugang

Heute habe ich seit langer Zeit mal ein Software-Update auf meinem NAS, einem WD My Book World, durchgeführt. Nachdem das System nicht ansprechbar war, habe ich einen Reset durchgeführt und dann neu über das Webinterface connected.

Dabei ist mir etwas interessantes aufgefallen: Mein NAS besitzt ja einen SSH-Zugang!

image

Somit kann man via PuTTY mal schnell eine Konsole aufmachen und beispielsweise nachsehen, welche Prozesse so laufen:

image

Im Internet bin ich dann noch auf weitere nützliche Seiten mit Tipps&Tricks gestoßen:

http://martin.hinner.info/mybook/

http://mybookworld.wikidot.com/

http://www.ismprofessional.net/pascucci/documenti/mybook/mybook-hacking-en.html

Mal schauen, was ich in Zukunft damit anfangen kann Smiley

backup strategie

In der Vergangenheit habe ich mir über das Thema “Backup” schon Gedanken gemacht. Aktuell sichere ich via W-LAN manuell (via Windows-Explorer) die Bilder, E-Mails und Dokumente auf mein NAS. Das NAS hat eine Kapazität von 1TB und reicht momentan noch aus.

Ein Ereignis im Bekanntenkreis hat mich jedoch stark verunsichert: Es wurde bei einem Bekannten eingebrochen und dort wurde neben dem Flachbild-Fernseher, Laptop und SmartPhone auch das NAS mitgenommen. Als wäre der Sachschaden nicht schon groß genug, sind nun auch sämtliche Daten verloren.

Also sollte ich erstmal meine Anforderungen an mein Backup formulieren:

  • Schnell
  • Automatisiert / Läuft im Hintergrund
  • Sicher
  • Bezahlbar

Als nächstes kommt das zu sichernde Datenvolumen:

  • Bilder: ca. 60 GB
  • Dokumente: ca. 3 GB
  • Projekte: ca. 10 GB
  • Outlook PST-Dateien: ca. 4 GB
  • Musik: ca. 2 GB
  • Sonstiges: ca. 1 GB

Somit komme ich auf etwa 80 GB an zu sichernden Daten.

Die Daten sind natürlich auf 2 Rechner verteilt und teilweise redundant vorhanden. Das heißt, jeder hat auf seinem Rechner Bilder von der Digicam. Je nachdem, wo die SD-Karte der Digicam zuerst angeschlossen wurde, importiert die Bilder lokal. Ich sichere dann aktuell manuell die Bilder aufs NAS.

Da ich schon ein NAS besitze, benötige ich nun eine günstige Online-Sicherung. Da gibt es ja unzählige Möglichkeiten: Amazon S3, Google Drive, DropBox, Mozy Backup, Strato HiDrive, 1&1 Webfestplatte, …

Welche Anforderungen habe ich an den Online-Speicher?

Must Have:

  • Platz für min. 80 GB Daten (besser: 100 GB)
  • Daten werden verschlüsselt abgelegt (AES 256 Bit oder höher)
  • Daten werden remote gesichert
  • Bezahlbar (max. 10€ pro Monat)
  • Backup-Software wird schon mitgeliefert

Nice To Have:

  • Zugriff auf die Daten via Webbrowser
  • Zugriff auf die Daten via iPhone App
  • Zugriff auf die Daten via Windows Explorer
  • Verschlüsselung via PKI (Public Key Infrastruktur)

Auswahlverfahren

DropBox, Amazon S3 usw. sind keine “echten” Backup Anbieter. Sie bieten lediglich Speicherplatz an, auf dem die Daten gesichert werden können. Online Backup Anbieter speichern unterschiedliche Versionen der gleichen Datei. Man kann beispielsweise eine ältere Version einer Datei wiederherstellen.

Nachdem ich mir zahlreiche Anbieter angeschaut habe, sind Mozy Backup und CrashPlan+ in die engere Auswahl gekommen.

Nach einigen Recherchen im Internet habe ich gelesen, dass es bei Mozy Backup Probleme bei der Wiederherstellung von Daten gibt. Letztlich hat mich jedoch die Client von CrashPlan überzeugt.

Der Client von CrashPlan ist sehr angenehm zu bedienen und unterstützt mich sowohl im lokalen Backup als auch im Cloud-Backup:

image

Die Übersichtsseite zur Datensicherung:

image

Die Übersichtsseite zur Datenwiederherstellung mit der Möglichkeit, Ordner und Dateien zur Wiederherstellung auszuwählen:

image

In den Einstellungen kann man neben der Auslastung für den Rechner beim Backup ..

image

… die Häufigkeit der Sicherung konfigurieren

image

Die Möglichkeit der Datendeduplizierung spart Bandbreite und Zeit, wenn Daten auf unterschiedlichen Rechnern sind:

image

Auch die Häufigkeit des Backups und vorgehaltene Dateiversionen sind konfigurierbar:

image

In puncto Sicherheit gibt es die Möglichkeit, die Daten mit dem Konto-Kennwort zu verschlüsseln oder einen privaten Schlüssel zu verwenden:

image

Vor- und Nachteile sind auf der entsprechenden Supportseite beleuchtet.

Auch das Begrenzen der Bandbreite zur Sicherung ist möglich:

image

Auf der Seite “Historie” gibt es eine Art Logfile über die gesicherten Daten:

image

Nebenbei gäbe es noch die Möglichkeit, meine Daten bei einem Freund zu sichern:

image

Oder auf einen externen Datenträger:

image

Der Client ist für die gängigen Betriebssysteme verfügbar: Windows, MacOS und Linux.

 

Schade nur, dass der Client keine Unterstützung für das Sichern auf ein NAS bietet.

Offen ist auch noch, wie ich meine E-Mail mit Outlook künftig sichere. Die PST-Dateien sind recht groß und ändern sich, sobald ich eine E-Mail empfangen habe.

PIBOW: ein schickes Gehäuse für den Raspberry Pi

Heute ist es endlich geliefert worden: mein Pibow, ein schickes Gehäuse für das Raspberry Pi:

20120912-182904.jpg

20120912-182926.jpg

20120912-182952.jpg

Es kleines bisschen Luxus versüßt das Arbeiten 🙂

Bestellen kam man das Gehäuse für ca. 15£ unter folgender Adresse: http://pibow.com/

Man sollte jedoch einige Wartezeit einplanen. Bei mir hat es ca. 6 Wochen gedauert, bis es geliefert wurde.

Raspberry Pi: Erste Versuche

Vor einigen Tagen war es endlich soweit: meinRaspberry Pi ist endlich bei mir angekommen. Wer es nicht kennt: es ist der berühmt 25£ Rechner mit 700 MHz ARM Prozessor, 256 MB RAM, HDMI- und USB-Anschlüssen, sowie einem GPIO-Port.

Hier ist ein Bild des guten Stücks im Betrieb:

20120909-223831.jpg

Die 16GB Speicherkarte habe ich mit Raspbian bespielt:

20120909-224018.jpg

20120909-224005.jpg

    Als mitgelieferte Programmierumgebung muss Python 3.2.3 als Shell herhalten. Eine brauchbare IDE habe ich bisher noch nicht gefunden.
    Da ich als .NET Entwickler wenig Erfahrungen mit Python habe ergeben sich zwei Alternativen:

    • Python lernen
    • Mono auf Raspbian installieren

    Mit beidem werde ich mein Glück versuchen.

    Meine Peripherie ist recht günstig:

    • Amazon Basic HDMI Kabel
    • CAT 5e Patch Kabel
    • SanDisk SDHC 16GB SD Card
    • ein altes USB Ladegerät vom Nokia N97 zur Stromversorgung via USB
    • eine einfache Logitech USB Tastatur
    • eine alte Microsoft 3-Tasten-Maus

    Summe aller Ausgaben inkl. Raspberry Pi: ~70€

    Auf einem 42″ Display zu arbeiten ist für mich eine ganz neue Erfahrung 🙂

    Momentan gibts noch ein paar kleinere Probleme wie beispielsweise Netzwerkprobleme. Wenn ich diese gefixt habe, geht’s los.

    Meine Erfahrungen werde ich hier Schritt für Schritt posten.

    Vorlesung .NET: Ergebnisse der Umfrage der Themen im nächsten Semester

    Am Ende des letzten Semesters habe ich nach der Bekanntgabe der Noten wieder eine Umfrage zu den Themen der Vorlesung im nächsten Semester gemacht. Mir ist es wichtig, dass ich nicht irgendetwas unterrichte, von dem ich meine, es wäre interessant, sondern dass ich die Themen anspreche und vermittle, die wirklich von Interesse sind.

    Das Ergebnis der Umfrage sieht so aus:

    20120909-213346.jpg

    Platz 1 teilen sich sowohl das Testen von .NET Anwendungen als auch die Verteilung von .NET-Anwendungen, sowie Parallele Datenverarbeitung mit der TPL/Multithreading. In der Firma bin ich in einer Taskforce zu dem Thema Parallelisierung unterwegs und kann bestimmt den einen oder anderen Tipp aus der Praxis vermitteln.

    Die folgenden Plätze gehen an GUI Programmierung mit WPF. Hier werde ich neben den Grundlagen in Controls, 2D-, 3D-Programmierung und Animation auch auf MVVM (Model-View-ViewModel eingehen).

    Leider hat das Semester nur 10 Vorlesungseinheiten á 3×45 Minuten, sodass andere Themen wie ASP.NET MVC leider auf der Strecke bleiben. Ich wäre aufgrund der aktuellen Entwicklungen wie Windows 8 von einem anderen Ergebnis ausgegangen.

    Ich freue mich schon auf das neue Semester, das am 1.10.2012 wieder an der Dualen Hochschule Baden-Württemberg beginnt 🙂

    System.IO.FileLoadException: Verwenden von .NET 2.0 Assemblies innerhalb eines .NET 4.0 Prozesses

    Verwendet eine .NET 4.0 Assembly .NET 2.0 Komponenten, kommt es zu einer System.IO.FileLoadException mit der detaillierten Meldung „Die Assembly im gemischten Modus wurde während Version v2.0.50727 der Laufzeit erstellt und kann nicht während der 4.0-Laufzeit ohne zusätzliche Konfigurationsinformationen geladen werden.“:

    Bei mir lag es einfach daran, dass ich eine UI-Bibliothek verwendete, die für die CLR 2.0 entwickelt wurde, während mein Hauptprojekt in .NET 4.0 entwickelt wurde.

    Es gibt mehrere Möglichkeiten, das Problem zu lösen:

    –          Über eine Konfigurationsdatei

    –          Über das Konfigurierung der Aktivierung via Code

    Lösungsmöglichkeit 1: via Konfigurationsdatei

    <startup useLegacyV2RuntimeActivationPolicy=“true“>
    <supportedRuntime version=“v4.0″/>
    </startup>

    Die app.config muss natürlich neben der ausführbaren Datei stehen.

    Beispiel:

    Ausführbare Datei: example.exe
    Konfigurationsdatei: example.exe.config

    Mark Miller hat in einem Blog-Beitrag (als PDF: marklio – What is useLegacyV2RuntimeActivationPolicy for_) beschrieben, wozu die useLegacyV2RuntimeActivationPolicy nun wirklich gut ist und was sie tut.

    Es gibt jedoch Anwendungsfälle, für die man nicht einfach eine Konfigurationsdatei neben die ausführbare Datei legen kann. Ein Beispiel dafür könnte sein, dass eine C-API oder eine COM-API zur Verfügung gestellt wird. Dann kann nicht einfach der ausführbaren Datei, die die C-API verwendet, eine Konfigurationsdatei beigelegt werden.

    Lösungsmöglichkeit 2: via Code

    Im Blog von Reed Copsey bin ich auf einen interessanten Artikel gestoßen, der genau mein Problem löst: http://reedcopsey.com/2011/09/15/setting-uselegacyv2runtimeactivationpolicy-at-runtime/

    Nachfolgend der Code, der für meine Belange (C-API) funktionierte. Jedoch ist die Lösung in Reed Copseys Blog explizit als inoffiziell gekennzeichnet.

    public static bool LegacyV2RuntimeEnabledSuccessfully { get; private set; }

    staticRuntimePolicyHelper()

    {

    ICLRRuntimeInfoclrRuntimeInfo =   (ICLRRuntimeInfo)RuntimeEnvironment.GetRuntimeInterfaceAsObject(Guid.Empty,  typeof(ICLRRuntimeInfo).GUID);

    try

    {

    clrRuntimeInfo.BindAsLegacyV2Runtime();

    LegacyV2RuntimeEnabledSuccessfully = true;

    }

    catch (COMException)

    {

    // This occurs with an HRESULT meaning

    // „A different runtime was already bound to the legacy CLR version 2 activation policy.“

    LegacyV2RuntimeEnabledSuccessfully = false;

    }

    }

    [ComImport]

    [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]

    [Guid(„BD39D1D2-BA2F-486A-89B0-B4B0CB466891“)]

    private interface ICLRRuntimeInfo

    {

    void xGetVersionString();

    void xGetRuntimeDirectory();

    void xIsLoaded();

    void xIsLoadable();

    void xLoadErrorString();

    void xLoadLibrary();

    void xGetProcAddress();

    void xGetInterface();

    void xSetDefaultStartupFlags();

    void xGetDefaultStartupFlags();

    [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]

    void BindAsLegacyV2Runtime();

    }

    Interessanterweise wird ein statischer Konstruktor verwendet, der unmittelbar nach dem Laden der assembly ausgeführt wird. Dadurch wird der Code implizit von der Runtime ausgeführt und nicht explizit vom Programm selbst. Das sollte ausreichend gut dokumentiert werden, da potentiell nicht jeder im Team den Code sofort versteht und potentiell den Code als „unnütz“ löschen könnte 😉

    Die Eigenschaft „LegacyV2RuntimeEnabledSuccessfully“ gibt an, ob das Umschalten der Runtime-Aktivierung funktioniert hatte. In meinem Fall habe ich eine Ausgabe für die API erstellt, die dem Benutzer angibt, wie er das Problem mithilfe der Konfigurationsdatei lösen kann.

    Buch-Review: “WiX: A Developer’s Guide to Windows Installer XML”

    Vor einigen Jahren bin ich auf das “WiX”-Projekt (WiX = Windows Installer XML) von Rob Mensching aufmerksam geworden. Dabei handelt es sich um ein Open Source Projekt von Microsoft (sogar das erste!), mithilfe dessen man via XML-Beschreibung eine MSI Installationsdatenbasis erzeugen kann.

    Nachdem ich zahlreiche Tutorials wie beispielsweise DAS WiX Tutorial von Gabor Tramontana durchgearbeitet habe, konnte ich erstmals brauchbare MSI-Dateien erzeugen. In meiner Abteilung habe ich das Projekt dann publik gemacht und mittlerweile setzen alle Produkte meiner Abteilung WiX zum Erzeugen von Installationspaketen ein.

    WiX: A Developer's Guide to Windows Installer XMLDas Buch “WiX: A Developer’s Guide to Windows Installer XML” von Nick Ramirez habe ich als Vorbereitung auf einen Vortrag zu dem Thema durchgelesen. Meiner Meinung nach ist es sowohl für Einsteiger als auch für Fortgeschrittene gleichermaßen geeignet.

    Das erste Kapitel “Getting Started” gibt einen kurzen Einblick in das WiX Toolset und erklärt grob die XML-Elemente und deren Bedeutung. Am Ende des ersten Kapitels ist man bereits in der Lage, einen Installer zu erstellen. Es werden alle dafür notwendigen Schritte erklärt.

    Ab Kapitel zwei “Creating Files und Directories” geht’s dann wirklich in die Tiefe. Es wird erklärt, die Dateien und Verzeichnisse in Komponenten verpackt und in Features gruppiert werden. Zudem gibt es Kniffe, wie große Mengen an Dateien effizient in XML referenziert werden können – Stichwort “Heat” (Heat ist ein “Harvester Tool” aus dem WiX Toolset, das aus dem Dateisystem XML generiert).

    Kapitel drei “Putting Properties and AppSearch to Work” erklärt erst einmal, was Properties sind – nämlich Variablen und wie diese befüllt und referenziert werden. In zweiten Teil wird das Thema AppSearch (also Suche nach Dateien, Verzeichnissen, RegistryKeys, installierten Komponenten, ..) detailliert und wie jeder Abschnitt ausführlich mit XML-Codebeispielen erklärt.

    Startbedingungen sind Thema in Kapitel 4: “Improving Control with Launch Conditions”. Beispiel: Mein Programm installiert eine .NET Assembly. Hier wird gezeigt, wie ich prüfen kann, ob und welches .NET Framework auf dem Zielrechner installiert ist.

    Ein wirklich komplexes Thema, die Installationsreihenfolge, ist Thema von Kapitel 5: “Understanding the Installation Sequence”. Dabei wird sowohl auf die UI-Sequenzen (nicht zu verwechseln mit Dialogen und Wizards) als auch auf die Execution Sequences eingegangen. Custom Actions, also das Ansprechen von externen DLLs, EXE-Dateien, das Ausführen von JScript und VBScript-Code, runden das Kapitel ab.

    Kapitel 6, 7 und 8 drehen sich um das rudimentäre Erstellen von Benutzerschnittstellen, Dialogen usw. Dabei wird unter anderem auf vorgefertigte Dialog-Sequenzen als auch auf die einzelnen Controls eingegangen.
    Schade, dass der Autor hier nützliche Tools verschweigt, mit denen man die UI deutlich komfortabler erstellen kann. Ich möchte hier ein Tool nennen: SharpDevelop von ic#Code. Es ist mit Abstand das beste Open Source-Tool für diese Aufgabe.

    Kapitel 9 erklärt noch einmal alle Tools, sowie deren Benutzung auf der Kommandozeile. Das ist aber in der Regel unnötig, denn das Votive Projekt, das die Integration des Toolsets in Visual Studio mitbringt, ist für die meisten Fälle vollkommen ausreichend. Aber ok, schlecht ist es nicht.

    Kapitel 10 “Accessing the Windows Registry” erklärt wie Registry Keys sowohl gesetzt als auch gelöscht werden können.

    Lokalisierung ist Inhalt des Kapitels 12: “Localizing Your Installer”. Hier wird erklärt, wie ein Installationspaket mehrsprachig gemacht werden kann.

    Kapitel 13 behandelt wieder ein ziemlich komplexes Thema: “Upgrading and Patching” – Welche Update-Typen gibt es? Was ist bei welchem Typ zu beachten?

    Ein Kapitel, das ich vermisst habe, sind Bootstrapper. Beispiel: Eine Setup.exe, die die Voraussetzungen auf dem Zielsystem prüft und ggf. Software nachinstalliert. Visual Studio selbst bietet schon zahlreiche Bootstrapper-Pakete beispielsweise für das .NET Framework, die Visual C++ 20xx Runtimes, SQL Server, etc. an.

    Alles in Allem bin ich aber zufrieden mit dem Buch. Es enthält viele Code-Schnipsel in XML-Form abgedruckt, sodass es sehr praxisnah die Thematik behandelt. Als Schulnote wurde ich eine 2 vergeben.

    Wer sich allerdings mehr für Windows Installer im Allgemeinen interessiert, dem würde ich eher das Buch “Inside Windows Installer 4.5” von Andreas Kerl empfehlen. Ein Kapitel aus diesem Buch behandelt ebenfalls das Windows Installer XML Toolset.

    Besuch bei der dotnet cologne 2010

    WillkommensbannerAm 28. Mai 2010 war ich auf der dotnet cologne 2010 in Köln. Das Programm war wirklich abwechslungsreich und sehr interessant.

    Das Event fand im Holiday Inn in Köln statt. Die Organisation war wirklich klasse! Ich bin ja morgens gegen 4.50Uhr zuhause gestartet, um dann mit den öffentlichen Verkehrsmitteln und der Bahn nach Köln zu fahren.

    Nach Ankunft im Holiday Inn konnte ich mich mit einem köstlichen Frühstück und Kaffee stärken. Genau das, was ich brauchte!

    Los gings bei mir mit der Session “Give Your Application a Triple Boost with Windows 7, Microsoft .NET 4.0, and Intel Multi-core” vom Rami Radi von Intel. Neben den Folien zu Prozessorarchitekturen und Multi-Core-Programmierung von Intel zeigte er an einem Irrgarten-Programm(“Maze”) wie man mithilfe von vTune Performance-Bottlenecks auffinden kann.

    Anschließend kam dann der sehr unterhaltsame Vortrag von Dariusz Parys zum Thema “Windows Workflow 4.0”. Endlich weiß ich auch, wofür man den WF-Designer brauchen kann.

    Der Vortrag “Von 0 auf MSBuild 4.0 in 45 Minuten” von Thorsten Hans gab einen Überblick über MSBuild 4.0. Besonders interessant waren für mich die Neuerungen in MSBuild 4.0, die er wirklich sehr anschaulich an Beispielen gezeigt hat. Supi!

    Gewinner der TypeMock Isolator Lizenz In der Lunch-Session “TypeMock Isolator, Mock-Framework für Brownfield und mehr” von Stefan Lieser habe ich doch tatsächlich eine TypeMock Isolator-Lizenz gewonnen. Yeah! 🙂

    Darüber hab ich mich natürlich riesig gefreut! 🙂

    Der Vortrag “Debugging in Deep mit VS2010 und WinDbg” von Gregor Biswanger war für mich etwas enttäuschend. An sich war er schon gut gemacht. Er hat auch Beispiele usw. gezeigt, doch irgendwie hatte ich mir mehr erhofft. Vielleicht lag es auch daran, dass ich das Buch “Debugging .NET Applications” von John Robbins gelesen hab und schon viele der Tipps & Tricks kannte.

    Ein weiteres Highlight war für mich die Session “Parallelprogrammierung mit der TPL” von Bernd Marquard. Wahnsinn, was da alles mit .NET 4.0 bezüglich Parallelisierung geht! Wirklich toll gemacht!

    Den Abschluss machte die Session “Managed Extensibility Framework (MEF)” von Christoph Wille, seines Zeichens Entwickler von #develop, einer Open Source Entwicklungsumgebung für .NET. Das war für mich eine Spur zu heftig, sodass ich nicht immer folgen konnte.

    An dieser Stelle möchte ich mich nochmals bei den Organisatoren für das tolle Event bedanken. Es hat wirklich Spaß gemacht und ich freue mich schon auf das nächste Jahr.

    Hier sind noch ein paar Bilder von Event:

    Rami Radi's "Give Your Application a Triple Boost with Windows 7, Microsoft .NET 4.0, and Intel Multi-core" Dariusz Parys: "Windows Workflow 4.0" Thorsten Hans bei der Session zu MSBuild 4.0 Stefan Lieser bei der TypeMock-Session: Ich liebe dieses Bild zu Brownfield :-) Bernd Marquard bei der TPL-Session

    Weitere Fotos vom Event: http://blog.typemock.com/2010/06/dotnet-cologne-2010-winners.html

    MSDN Blog-Parade: Windows Azure

    Ich habe gerade im Blog von Peter Kirchner gesehen, dass die msdn-BlogParade in die zweite Runde geht (Danke für den Erinnerungspost :-))

    Beim letzten Mal ging es um Entwicklungshelferlein. Jeder konnte seine Top 3 Entwicklertools aufzählen.

    Thema dieses Mal sind Ideen rund um Windows Azure. Auf dem Initial-Post wurde schon das Projekt “Group Policy Search” vorgestellt: http://gps.cloudapp.net/

    Mein Vorschlag wäre eine Fuhrparkverwaltung. Das bedeutet, dass Firmen ihre Fahrzeuge über eine Cloud-App verwalten können (Fahrzeugdaten erfassen, sich an Wartungsintervalle erinnern lassen, …). Beispielsweise können die Benutzer der Fuhrparkverwaltung nachsehen, welche Fahrzeuge frei sind und diese buchen (z.B. über Outlook).

    Ein Fahrtenbuch erfasst alle Fahrten, die der Fahrer mit dem Fahrzeug macht. Über den integrierten GPS-Empfänger im Windows Phone kann über eine spezielle App das Fahrtenbuch vereinfacht werden. Der Benutzer muss nun nur noch Fahrtbeginn und Fahrtende, Fahrtzweck usw. eintragen und die zurückgelegte Strecke wird von der Mobile App eingetragen und in der Azure App gespeichert.
    Ebenfalls können Betriebsmittel (z.B. Benzin/Diesel nach dem Tanken, Öl, …) erfasst werden.

    Der Fuhrparkmanager weiß somit immer über den aktuellen Stand der Fahrzeuge Bescheid, auch wenn diese unterwegs sind.