Archiv des Autors: Ralf Abramowitsch

Wochenend-Projekt: SSD Upgrade meines DELL XPS 12

Mein 5 Jahre altes DELL XPS 12 leidet schon seit einiger Zeit unter akutem Speichermangel. Die bessere Ausstattung mit 256GB SDD reicht mir nicht mehr aus, sodass ich jetzt eine Erweiterung auf 1 TB vornehmen will.

Bauform

Aber SSD ist nicht gleich SSD. Es kommt auf die Bauform an:

  • 2,5 Zoll SSDs
  • mSATA-SSDs
  • M.2-SSDs

Auf der Seite von crucial bin ich aber findig geworden, welche SSD die richtige für meinen Rechner ist:
https://www.crucial.de/deu/de/upgrade-kompatibel-mit/Dell/xps-12-(9250)

Ich hab mich für eine Samsung 860 EVO mSATA SSD mit 1 TB Speicherplatz entschieden (Kosten: ca. 130€):

Verpackung Samsung 860 EVO mSATA SSD
Verpackung Samsung 860 EVO mSATA SSD

Backup

Bevor ich jedoch die vorhandene SSD aus dem Rechner ausbaue, erstelle ich ein Backup. Schon seit Jahren setze ich hier Acronis True Image ein und kann es nur empfehlen.

Backup mit Acronis True Image 2019

Es erstellt ein komplettes System-Image, das dann nach dem Wechsel des Laufwerks einfach wiederhergestellt werden kann. Zudem kann man einfach ein Wiederherstellungsmedium auf einem USB-Stick erstellen, von dem direkt gebootet werden kann.

Wechsel des Laufwerks

Schritt 1: Alle Schrauben lösen – auch die unter dem Deckel
Dazu braucht man einen 5mm Torx Schraubendreher, um die Schrauben zu lösen.

Schrauben am Dell XPS12 entfernen

Schritt 2: Deckel abnehmen

In dem rot markierten Bereich befindet sich die SSD unter dem schwarzen Klebeband:

SSD

Schritt 3: Klebeband entfernen

Schritt 4: Schrauben entfernen

Schritt 5: Nach dem Entfernen der Schrauben kommt die SSD etwas hoch. Das ist aber ganz normal und erleichtert den Aus- bzw. Einbau

Schritt 6: SSD entnehmen und neue SSD einsetzen

Schritt 7: Deckel draufsetzen und Schrauben wieder festziehen

Restore

Nun wird der Rechner über den Recovery USB Stick gestartet und anschließend das Backup wiederhergestellt.

Fazit

Alles in allem hat das Backup, der Umbau und die Wiederherstellung gut 1 Stunde gedauert. Dafür hab ich jetzt endlich wieder genügend Platz, um auch mal meine gesamte DropBox lokal zu speichern 🙂

MSI Logs komfortabel auswerten/analysieren

Als Software-Entwickler muss man sich neben der Entwicklung neuer Software manchmal auch um die Verteilung beispielsweise über Windows Installer Technologien befassen. Schlägt eine Installation fehl, kommt man meist nicht darum, sich die Details anzuschauen. Dazu muss ein Logfile zum Installer erstellt werden, indem dem Windows Installer ein Parameter mitgegeben wird:

msiexec /i [PfadZumMsiPaket] /l*v [PfadZumLogFile]

Beispiel: msiexec /i MeinSetupProjekt2015.msi /l*v MeinInstallerLog.txt

Schaut man das erste Mal in so ein Logfile, so sieht es nicht besonders hilfreich aus:

Analysiert man solche Logfiles öfter, findet man sich irgendwann doch noch schnell darin zurecht.

Vor kurzem bin ich über ein nützliches Werkzeug zum Analysieren vom Windows Installer Logfiles gestoßen: Microsoft Installer Verbose Log Analyzer (WiLogUtl.exe), das Bestandteil des Windows Installer SDKs ist.

Zu finden ist das Programm dann auch der Festplatte unter %ProgramFiles%\Windows Kits\8.1\bin\x86:

Nach dem Laden des Logfiles kann man dieses dann analysieren lassen:

In meinem Fall habe ich die Ausführung mit erhöhten Rechten abgelehnt. Klickt man dann auf „Analyze“, so wird folgender Dialog geöffnet:

Der erste Fehler wird direkt in der oberen Liste angezeigt. Über die Buttons „Next“ und „Previous“ kann dann zwischen den Fehlern im Logfile navigiert werden.

Es lassen sich auch die Properties und deren Werte in einer Übersicht anzeigen:

Dabei können die Properties sowohl auf Client-Seite (z.B. während der Erfassung von Installationspfad, Auswertung von Launch-Conditions, …) angezeigt werden als auch bei der Ausführung, wenn das Installationspaket vom Windows Installer Service ausgeführt wird. Sehr praktisch!

 

Über den Button „Policies“ in der Analyse kann man sich die Berechtigungen anzeigen lassen, die beispielsweise per Gruppenrichtlinie an den Rechner verteilt wurden:

Auch sehr praktisch ist das Erzeugen eines HTML-Reports aus dem Logfile:

Die einzelnen Kategorien des Logfiles sind dann farbig hinterlegt, was das Lesen der Logdatei deutlich angenehmer macht.

Dieses HTML-Logfile kann auch automatisch über einen Kommandozeilen-Parameter erzeugt werden:

wilogutl /q /l c:\mymsilog.log /o c\outputdir\

(siehe https://msdn.microsoft.com/en-us/library/aa372811(v=vs.85).aspx )

 

Weitere nützliche Links zum Analysieren von Windows Installer Logfiles:

Alternative: der (auch für kommerzielle Zwecke kostenlose) Logit Log Viewer, der auch MSI Logs anzeigen kann

Quelle: http://www.legitlog.com/Products/LegitLogViewer

Wichtiger Hinweis: „=== Verbose logging started“ (erste Zeile) muss aus dem Logfile entfernt werden, da sonst der Logfile Viewer dieses Format nicht verarbeiten kann.

Buch-Review: „Der Fisch stinkt vom Kopf“

Dieses Buch ist eine kurzweilige Unterhaltung wie man sich selbst und andere motiviert.

Den Einstieg macht eine Anekdote zum Hamburger Fischmarkt und zum „Aale Dieter“ – wie man mit „derbem“ Humor und Sprüchen die Leute doch dazu bekommt, seine Waren (zu eigentlich überhöhten Preisen) zu kaufen. Auch die Geschichte vom Pike Place Fish Market in Seattle (USA) und warum die Arbeit dort so viel Spaß macht. Wegen des frühen Aufstehens? Weil man den ganzen Tag nach Fisch stinkt? Weil die Bezahlung so „gut“ ist? Wirklich witzig und einleuchtend erklärt.

Immer wieder wird die „Gallup-Engagement-Studie“ mit Statistiken herangezogen, wie viele unmotivierte Mitarbeiter im Unternehmen arbeiten, woran man sie erkennt und in welche Gruppen (z.B. „Mercedes-Typ“, „Golf-Typ“ etc.) sich diese unterteilen lassen. Natürlich alles gewürzt mit der richtigen Brise Humor J

Das Buch hat neben dem großen Unterhaltungswert auch viel Wissenswertes. Wie man beispielsweise seine Kunden spielerisch an sich bindet. Beispiel: Ein Hotel stellt unter dem Bett ein Schild auf „Sauberkeit ist uns wichtig und auch hier wird bei uns geputzt. Gegen Vorlage dieses Schildes erhalten Sie an der Bar einen Drink gratis“. Super Idee! Es gibt so viele inspirierende Ideen, wie man spielerisch Kunden gewinnen und halten kann, die ich hier nicht alle schon vorgreifen möchte.

Die 270 Seiten habe ich innerhalb kürzester Zeit durchgelesen und wirklich Spaß dabei gehabt. So macht Wissen tanken Spaß! J

Mehr Informationen zum Buch gibt es auch unter http://motivationsvortrag.de/

Tolles Buch, gern mehr davon!

Google Chrome: Keine Internet-Verbindung? Dino Jump & Run

Ich weiß nicht, wie lange es dieses „hidden“ Feature schon gibt oder ob es mir bisher nur noch nie aufgefallen ist, aber wenn bei Google Chrome die Internet Verbindung abgebrochen ist, kann man die Zeit mit einem kleinen Jump&Run überbrücken:

Starten kann man das Spiel, indem man einfach die „Leertaste“ drückt.

Die Leertaste wird dann auch zum Springen verwendet (alternativ kann man auch „Cursor up“ verwenden J

Software-Update für Kobold VR100

Vor einem halben Jahr haben wir uns eine kleine Haushaltshilfe zugelegt: einen Staubsauger-Roboter der Marke Vorwerk. Da das Nachfolgemodell bereits in den Startlöchern stand, haben wir ihn vergünstigt gekauft. Er leistet wirklich gute Dienste (man kann unterschiedliche Startzeiten zu verschiedenen Wochentagen definieren) und wir sind sehr zufrieden damit. Einziges Manko: Es staubt sehr, wen man den Filter leert.

Auf der Vorwerk-Webseite habe ich gesehen, dass ein Software-Update zur Verfügung steht:

Auf der Webseite (http://kobold.vorwerk.de/de/service/software-updates/saugroboter/vr100/) gibt es zum Download die Kobold VR-Updater Software als auch die neue Firmware.

Die Anleitung als PDF-Datei (http://kobold.vorwerk.de/fileadmin/data/de/pdf/Roboter_Anleitung_Software/Anleitung_Saugroboter_SoftwareUpdate.pdf) ist wirklich gut und bebildert beschrieben.

Ich habe also die Software heruntergeladen und installiert:

Nach dem Starten präsentiert sich die Software wiefolgt:

Und man wird Schritt-für-Schritt durch das Update geführt.

Ich wollte mal einen Blick in die Release Notes der Firmware werfen, doch die ZIP-Datei ist verschlüsselt(?):

Ich bin gespannt, ob und wie gut der Kobold VR100 nach dem Software-Update saugt.

Continuous Lifecycle 2013 – Rückblick

Die Continuous Lifecycle 2013 ist zu Ende gegangen: zwei Tage vollgepackt mit interessanten Vorträgen vorwiegend zum Thema Continuous Delivery / Continuous Deployment.

Der erste Konferenztag: 11.11.2013

Die Keynote hielt Mirko Novakovic, seines Zeichens Entwickler und Vorstand der codecentric AG, zum Thema „Lean Startups Eat the World“. Er zeigte eindrucksvoll, wo die Reise (vor allem für das Web-Business) hingehen kann und dass man keine andere Wahl hat, als schnell reagieren zu müssen. Er hat dabei einige gute Buchempfehlungen gegeben: „The Lean Startup“ (http://theleanstartup.com/) von Eric Ries. Auch hier ging es um das Umsetzen einer Idee, Entwicklung, schnelles Feedback und „Go Live“, um schnell aus der Idee Kapital schlagen zu können. Ein guter Vortrag, um auf das Thema einzustimmen.

Für mich ging es dann weiter mit dem Thema „Puppen und Marionetten in der Deploy Pipeline“ von Thomas Gelf. Dabei wurde ein Tool namens „Puppet“ (http://puppetlabs.com/) vorgestellt, das helfen soll, für Test- und Produktivsysteme Software einzuspielen und diese aufzusetzen. Dabei geht es vor allem um das Management dieser Software und wie diese Daten mithilfe einer Domain Specific Language synchronisiert. Sehr beeindruckend, doch leider alles sehr Linux-lastig, was mich in meinem Daily-Business nicht so wirklich unterstützt. Einen Blick über den Tellerrand wert war es allemal.

Im Anschluss habe ich „Continuous Delivery – für jeden geeignet“ gehört. Herrmann Lacheiner hat die (qualitativen) Voraussetzungen für Continuous Delivery bedeutet und klargestellt: ohne bestimmte Prozess-Reife inkl. Requirements-Engineering, Tests usw. sollte man kein Continuous Delivery machen. Erst wenn die Grundlagen sauber sind, sollte man sich an dieses Thema wagen.

Der Vortrag „DevOps – Kultur- oder Technikfrage“ von Mathias Münch zeigte das Zusammenleben und die Zusammenarbeit von Development und Operations auf. Im Nachhinein hätte ich mir lieber „Git, Mercurial und Bazaar im Vergleich“ angehört, nachdem ich in der Pause viele hab von dem Vortrag schwärmen gehört.

Eindrucksvoll war der Vortrag von André von Deetzen und Oliver Wehrens (Principal Developers) bei der ePost zum Thema „Von einem Release alle sechs Monate zu täglichen kleinen Rollouts – ein Erfahrungsbericht“. In diesem Vortrag wurde erzählt, wie es die ePost geschafft hat, von relativen langen Release-Zyklen zu Continuous Delivery geschafft hat – ein wahrer Kraftakt. Für mich ist es immer noch fast ein Wunder, wie man sowas innerhalb so kurzer Zeit (2 Jahre) schaffen konnte, die Entwicklung u.a. auf Scrum und TDD zu trimmen, um dann Continuous Delivery umsetzen zu können. Hut ab!

Matthias Kainer hat in einer Präsentation „Getting your features out – verschiedene Ansätze, neue Features iterativ zu releasen“ u.a. das Feature Toggle Pattern und Feature Branches näher beleuchtet. Dabei hat er ein paar Anekdoten aus seinem Entwickler-Leben bei Autoscout24 / Werkstattportal erzählt.

Den Abschluss der Vortragsreihe machte Thorsten Maier mit seinem Vortrag zu „Schneller, Billiger, Besser – effektiver Einsatz von Code-Reviews“. Neben den manuellen Offline-Reviews (bevorzugte Variante) hat er noch kurz den Technologie-Stack von Atlassian (Stash und Crucible) vorgestellt. Mir persönlich sind die Tools lieber, da ich offline jederzeit Code-Reviews machen kann. Aber geht vor allem um das Zwischenmenschliche bei Code-Reviews und den Lernfaktor. Fehler zu finden ist auch wichtig, aber man sollte vor allem mit einem guten Gefühl aus einem Code-Review Meeting herausgehen.

Die Panel-Diskussion am Abend des ersten Konferenztages war recht polarisierend: auf der einen Seite das Thema „Web“ und „Continuous Deployment“ und auf der anderen Seite der Handwerker, der seinen IT-Service von einem Fachmann machen lassen muss. Letztlich konnte diese Frage nicht endgültig geklärt werden, da die Zeit leider schon vorbei war. Im Anschluss daran gab es noch ein „Get Together“ mit allen Teilnehmern bei einem gemütlichen Glas Bier.

 

Der zweite Konferenztag: 12.11.2013

Der zweite Konferenz-Tag begann mit einem sehr unterhaltsamen Vortrag von Simon Wiest, seines Zeichens aktiver Comitter beim Jenkins Projekt und Prof. für Informatik an der HdM in Stuttgart. Jenskins ist ein Continuous Integration System (aka Build Server), der in Java geschrieben ist. Die Oberfläche gefällt mir und der Funktionsumfang ist durch die Plugins mehr als ausreichend.
Anschließend ging es im Vortrag „Continuous Deployment so einfach wie möglich“ von Dr. Malte Clasen um einen Erfahrungsbericht, der zeigte wie er in seiner Firma Continuous Deployment anhand einer ASP.NET basierten Webseite umgesetzt hat. In der .NET Umgebung habe ich mich gleich heimisch gefühlt, aber viel Neues war für mich jetzt nicht dabei.

Die zweite Keynote war von Alexander Grosse (Soundcloud) zum Thema „DevOps, Continuous Delivery, Agile ALM – Hype over Substance?“. Wow! Was für ein Vortrag! Kritisch wurden aktuelle Trends beäugt und die Arbeit bei Soundcloud vorgestellt. Nach dem Jenkins-Vortrag hat mir dieser Vortrag als zweitbestes gefallen. Erzählungen aus dem „Nähkästchen“ bei Soundcloud waren sehr inspirierend.

Nach dem Mittagessen war ich an der Reihe mit meinem Vortrag zum Thema „Build Patterns – Patterns und Best Practices für den Build Prozess„. Der Raum war ganz gut gefüllt und die zahlreichen Fragen sehr interessant. Hat mir Spaß gemacht 🙂

Das Thema „Build und Projektautomatisierung mit Gradle“ von Joachim Baumann und René Gröschke hat einen guten Überblick in den Stand der Dinge bei Gradle gebracht. Gradle ist eine DSL für Buildprojekte und ist eine Alternative zu Systemen wie Ant, NAnt und Maven, die eher XML-basiert sind. Interessant war, dass jetzt vor allem C++-Projekte nativ unterstützt werden sollen. Sobald .NET-Projekte nativ unterstützt werden, schaue ich mir die Sache nochmals an.

Oliver Stamm hat sehr eindrucksvoll in seinem Vortrag „Wie Behaviour Driven Development den Weg zu Continuous Delivery freimacht“ gezeigt, wie Otto seinen Katalog selbst neu entwickelt hat, und dabei auf BDD gesetzt hat. Interessant war vor allem die Vorgehensweise und das selbst geschriebene BDD-Framework. Da werde ich einiges für mein Produkt mitnehmen können.

Den Abschluss der Konferenz machte für mich „Juristische Herausforderungen über den Lebenszyklus von Software“ von Tobias Haar. Die Gesetze lt. BGB unterscheiden in 4 verschiedene Vertragsformen (Dienstvertrag, Kaufvertrag, Werkvertrag und Mietvertrag), in die die Software-Entwicklung auch eingegliedert wird. Sehr viele kleine und große Stolperfallen, Vor- und Nachteile der jeweiligen Vertragsart wurden vorgestellt. Am besten, man nimmt sich für solche Vertragsfragen wirklich einen Anwalt. Trotzdem war es echt gut, sich die Sachen mal anzuhören.

Hier noch ein paar Bilder und Impressionen von der Konferenz:

Der zweite Konferenztag

Die Location: Die IHK in Karlsruhe

Meine Eintrittskarte als Referenz 🙂

PowerPoint 2013: Referenten-Ansicht auch ohne zweiten Monitor

Was ist die Referentenansicht?

 

Die Referenten-Ansicht in PowerPoint erlaubt es, Folien und Vortragsnotizen auf einem Computer anzuzeigen, währenddessen die Präsentation auf einem zweiten Monitor (respektive einem Beamer) läuft.

Hier ist ein entsprechendes Schaubild:

(Quelle: http://office.microsoft.com/de-de/powerpoint-help/was-ist-die-referentenansicht-HA010360578.aspx)

Die Referentenansicht stellt auf der einen Seite die aktuelle Folie und auf der anderen Seite die Vorschau der nächsten Animation oder Folie sowie die Notizen dar. Hier ein Beispiel der Referentenansicht meiner Präsentation zur Continuous Lifecycle 2013 in PowerPoint 2013:

Im Ribbon „Bildschirmpräsentation“ kann die Referenten-Ansicht aktiviert werden:

In den Voraussetzungen für die Referentenansicht steht, dass man zwei Monitore benötigt, um die Referentenansicht nutzen zu können:

(Quelle: http://office.microsoft.com/de-de/powerpoint-help/was-ist-die-referentenansicht-HA010360578.aspx)

Referentenansicht ohne zweiten Monitor

Ich übe gern meine Präsentation mehrmals, bevor ich sie vor Publikum aufführe. Die Referentenansicht habe ich lieb gewonnen, doch leider habe ich nicht immer einen zweiten Monitor zur Hand.

Durch Zufall habe ich nun herausgefunden, dass sich die Referentenansicht über das Kontextmenü während der Präsentation komfortabel aktivieren lässt:

Anschließend startet PowerPoint 2013 automatisch den Referentenmodus für die gewünschte Folie:

Viel Spaß damit!

Build Patterns: Build Script Injection

Einführung

Vor einiger Zeit habe ich auf Twitter gelesen, dass Roy Osherove sich mit Build Patterns auseinander setzt und ein entsprechendes Buch („Beautiful Builds“) darüber schreiben will. Da es bei LeanPub veröffentlich wird, kann man es bereits vor der Fertigstellung kaufen und reinlesen:

Im Rahmen der Konferenz „Continuous Lifecycle 2013“ am 12.11.2013 in Karlsruhe werde ich ebenfalls einen Kurz-Vortrag zu diesem Thema halten.

Zur Vertiefung möchte ich an dieser Stelle einige Patterns mit Beispielen vorstellen. Den Anfang macht das Pattern „Build Script Injection“.

Problembeschreibung

Roy Osherove hat in seinem Blogbeitrag „Build Patterns: Script Injection“ bereits das Problem beschrieben:

Man hat einen Continuous Integration Prozess etabliert, Quellcode wird aus der Versionsverwaltung ausgecheckt, gebaut und Tests ausgeführt. Über die Zeit und Versionen haben sich jedoch die Ordnerstruktur und/oder Build-Schritte geändert:

Projektstruktur zu Zeitpunkt A
(Produktversion 1.0)

Projektstruktur zu Zeitpunkt B

(Produktversion 2.0)

Soweit so gut. Aktuelle Versionen können jederzeit gebaut werden. Doch was ist, wenn plötzlich ein Patch für Produktversion 1.0 gebaut werden muss? Die Build-Konfiguration greift dann auf Ordner zu, die es früher gar nicht gab und der Build funktioniert nicht mehr.

Lösungsansatz

Um das Problem lösen zu können, muss man den statischen Anteil der Build-Konfiguration vom dynamischen Anteil der Build-Konfiguration trennen. Den dynamischen Anteil lagert man in ein Build-Skript aus, das unter Versionskontrolle steht und versionsabhängig modifiziert werden kann.

Ausgangssituation

Zu Beginn enthält die Build-Konfiguration alle Logik über den Buildablauf und Zugriff auf die Ordner-Strukturen:

Ändert sich die Verzeichnisstruktur oder ein Build-Step, dann ist die Build-Konfiguration nicht mehr „rückwärtskompatibel“. Möchte man ältere Versionen wieder bauen, muss die gesamte Build-Konfiguration entweder angepasst oder eine Kopie pro Version angelegt werden. Das führt jedoch auf Dauer zu einer sehr großen Varianz und wird schlecht wartbar sein.

Zielsituation

Die Build-Konfiguration wird aufgesplittet und einen dynamischen und statischen Anteil:

Der statische Anteil befindet sich in der Build-Konfiguration auf dem CI-Server. Der dynamische Anteil wird in ein Build-Skript ausgelagert. Das Build-Skript enthält die gesamte Build-Logik als auch Informationen über die Verzeichnisstruktur. Zudem unterliegt das Build-Skript nun der Versionskontrolle. Dadurch dass die Build-Konfiguration auf dem CI-Server nur noch das Build-Skript aufruft, können Abläufe beliebig ausgetauscht werden, ohne dass der Build kaputt geht.

WordPress: Für kurze Zeit nicht verfügbar, um eine regelmäßige Instandhaltung durchzuführen. Prüfe in einer Minute erneut.

Heute hab ich meinen WordPress-Blog auf die neue Version 3.7.1 geupdated. Kurz nach dem Start hat sich Chrome entschieden, die Seite neu zu laden. Seitdem erscheint beim Aufruf meines Blogs die folgende Fehlermeldung:

Glücklicherweise konnte ich nach einer kurzen Google-Suche eine potentielle Lösung im Blog von Dennis Koray finden:

Man muss ich per FTP verbinden, um dann die .maintenance-Datei im Root-Verzeichnis zu löschen. Anschließend sollte das Problem gelöst sein.