MacBook Pro Mitte 2012

Als 2016 OSX Sierra herauskam, war mein MacBook plötzlich veraltet. Ich bestellte mir ein altes 2011er mit dem ich bis zum Beginn des Sommers 2017 auch sehr zufrieden war. Die hohe Auflösung des Bildschirms und der Geschwindigkeitszuwachs machte das Arbeiten einfacher. Was ich damals nicht bedachte war, dass mit dem Gerät auch ein berüchtigter Grafikkarten-Bug ausgeliefert wurde, der nun im warmen Sommer zuschlug.

Der Bildschirm blieb weiss und beim Start wurde das Apple-Symbol von dünnen roten Streifen durchzogen angezeigt.

Im Netz fand ich nun ein MacBook von Mitte 2012, das ich nach ein paar Tagen erhielt. Kurz die Festplatte und den RAM ausgetauscht und schon konnte ich weiter arbeiten. Wieder gab es einen schnelleren Prozessor und verrückterweise unterstützte Bluetooth nun Handoff,  wer weiss, wie sich das noch in meinen Alltag integriert. Einzig das Display war eine Enttäuschung. Anstelle der 1650×1050 Pixel vom gestorbenen MacBook musste ich mich wieder mit 1440×900 Pixel zufrieden geben.

Als das neue MacBook 2012 herauskam, wurde es eigentlich mehr als ein Hardware-Upgrade bezeichnet denn als ein neues Modell. Ich hatte die Idee, dass man vielleicht das Display aus dem 2011er Modell in das 2012er Modell einbauen könnte. Damit war ich nicht alleine. Nach ein paar Internet-Recherchen fand ich bei ifixit.com , der genau die gleiche Idee hatte:

I want to conclude this thread: YES, it is possible.

The LCD panels in A1286 MacBook Pros are the same from 2009-2012, the only light issue is the physical shape of the display connector – the critical electrical pin out is identical. To fit the 2011 display connector into a 2012 logic board connector socket you have to remove a little bit of metal from the two contralateral sides of the connector (nowhere near the conductors), then it fits properly. The shape of the 2011 display assembly is the same as the 2012 counterpart (meaning location of hinges etc.), it will fit on the 2012 lower case perfectly.

Bluetooth, Wi-Fi, the FaceTime camera, brightness adjustment and closing the lid to go to sleep, all is working without any trouble.

I hope this information helps people since dedicated 2012 spare parts are rather rare and the 2011 machines are beginning to die due to the AMD GPU issue, so they are going to pop up for parts.

Can I use the early/late 2011 display assembly on a 2012 machine?

Displayanschluss des MacBook Pro
Den Sockel habe ich an den Seiten etwas hoch gebogen, damit der Stecker passt.

Es ist also möglich. Nur der Display-Anschluss benötigte etwas guten Willen, um zu passen aber es funktioniert.

 

WordPress mit Docker

Viele Jahre habe ich meine WordPress-Entwicklung mit dem MAMP-Projekt erledigt. Das ganze geht aber auch mit docker und das um einiges einfacher.

Das damp – Projekt liefert genau das und ist beim Aufsetzen einer neuen WordPress-Instanz zum Testen um vieles einfacher. Die Installation und Verwendung wird auf den Seiten ganz gut beschrieben und funktioniert.

Das einzige kleine Problem war, dass WordPress keine Schreibberechtigung auf den wp-content – Ordner hatte. Das merkt man spätestens, wenn man ein Plugin installieren oder aktualisieren oder aber ein Bild in einen Post hinzufügen möchte.

Das Problem hatten auch andere und nach 38 Stunden Internetrecherche hatte mir diese Github-Antwort geholfen. Es kann sein, dass das ein OSX-Problem ist und auf anderen Host-Betriebssystemen gar nicht auftritt. Ohne weiter ins Detail zu gehen wieso und weshalb, ist die Lösung für das Problem relativ einfach.

Man meldet sich auf der WordPress-Maschine an und führt die folgenden Befehle aus und startet die Maschine dann neu:

usermod -u 1000 www-data
chown -R www-data:www-data .

Im Detail geht es so:

Auf einer Konsole wurde damp gestartet.

damp up

Die Docker-Umgebung von damp einstellen

eval $(docker-machine env damp)

Die entsprechende WordPress-Maschine heraussuchen

docker ps

Die Liste mit den Docker-Maschinen-Ids und Namen wird angezeigt.

Nun eine interaktive Shell auf der entsprechenden WordPress-Maschine öffnen

docker exec -it <docker-wordpress-maschine-id> bash

Und dort die magischen Befehle zum Ändern des Besitzers der WordPress-Installation eingeben

usermod -u 1000 www-data
chown -R www-data:www-data .

Nun mit exit wieder von der Maschine abmelden.

Damit die Änderungen nun auch wirksam werden, muss der docker-container neu gestartet werden.

docker restart <docker-wordpress-maschine-id>

Voilá

Synology und ddns

Meine Synology steht nun auch im Netz. Grundsätzlich geht es mir hier darum, einen eigenen Git-Server im Netz zu haben, der nach meiner Sicherungsstrategie am günstigsten abgesichert ist. Dabei möchte ich meine Projekte nicht über GitHub veröffentlichen bzw. soweit es von irgendeinem externen Dienstleister unabhängig sein.

Dabei möchte ich die NAS über eine eigene Domain erreichen, die direkt auf meine dynamische IP aufgelöst wird. Schön wäre es noch, den git-Server über eine eigene Subdomain zu erreichen.

Eigene Domain

Zuerst habe ich mir einen Domainnamen über inwx.de besorgt. Das geht unkompliziert und ist innerhalb von ein paar Minuten erledigt.

Wichtig ist nun, dass man für alle Subdomains die A-Records einträgt und die per default eingetragenen NS – Einträge entfernt.

DynDNS

Dafür gibt es verschiedene Möglichkeiten:

Man könnte den internen DynDNS – Dienst, der im DMS integriert ist, nutzen. Das hat aber mit dem Update-Dienst von inwx nicht funktioniert. Außerdem stellt inwx standardmäßig nur einen DDNS-Update-Dienst bereit.

Hier wird beschrieben, wie das ganze mit einem Update-Skript direkt in der Synology funktioniert. Das ist mir aber zu viel Gefrickel und nicht gerade anwenderfreundlich.

Für die Synology gibt es den community package hub. Dort wird der DDNS Updater 2 bereitgestellt, bei dem inwx bereits fix und fertig integriert ist.

Also habe ich das Repository eingerichtet und den Updater installiert. Anschließend inwx konfigurieren und auf das erfolgreiche Update der DNS-Einträge bei inwx warten.

Git – Gogs – oder?

Derzeit gibt es nicht viele selbst verwaltete Git-Weboberflächen, die es mit GitHub oder BitBucket aufnehmen können. Letztenendes kann man sich zwischen Gitea und Gogs entscheiden. Wobei Gitea ein Fork von Gogs ist, der mehr Funktionen mitbringt.

Die Entscheidung für Gogs fiel recht einfach: Auf der Suche nach einer Installationsanleitung bin ich auf das gogs-spk gestossen, was sich einfach im DSM installieren lässt.

Leider läuft es als Root-Nutzer, was so ziemlich gegen alle Sicherheitsprinzipien verstösst.

Gogs ist dann über den Port 3000 der Nas erreichbar und sollte dort fertig konfiguriert werden.

Portfreigaben

Das geht recht einfach über eine Portweiterleitung im Router, bei der die Ports 80 und 443 auf die Nas weitergeleitet werden.

SSL

Es versteht sich von selbst, dass der Webserver nur über SSL erreichbar sein sollte. Dazu stellt letsencrypt Zertifikate bereit, die sich auch sehr einfach über die Weboberfläche der Synology einrichten lassen. Dabei sollte man ein Zertifikat für die www-Seite und dann die Aliase für die Subdomains einrichten. Hierzu muss der Webserver der Nas aber bereits von außen erreichbar sein. Es sollten also die Portweiterleitungen im Router eingerichtet sein.

Wenn das Zertifikat fertig eingerichtet ist, muss es noch den Domain-Namen im DSM zugewiesen werden. Ansonsten wird das Standard-Synology-Zertifikat ausgeliefert, das für die eingerichtete Domain nicht gültig ist.

Reverse Proxy

Die Nas ist so eingerichtet, dass der Webserver auf den Standard-Ports 80 und 443 lauscht. Das DMS bringt eine Reverse – Proxy Konfiguration mit, bei der also der Port von Gogs (3000) auf einen Domain-Namen konfiguriert werden kann. Alternativ ist es möglich, für bestimmte Anwendungen einen Pfad anzugeben.

Das ganze geht im Anwendungsportal des DSM.

Waffeln

An einem Regentag knusprige Waffeln zu backen ist eigentlich ganz einfach.

Hier erstmal die Zutaten:

  • 100g Butter oder Margarine, mit Butter schmeckt es aber besser
  • 100g Zucker
  • 1/2 Päckchen Vanillezucker (kann man auch weglassen)
  • 3 Eier
  • 200g Mehl
  • 1/2 Päckchen Backpulver
  • 180ml Milch

Die Butter anwärmen, so dass sie flüssig ist. Die Eier in Eigelb und Eiweiß trennen. Butter, Eigelb und Zucker miteinander schaumig verrühren. Mehl und Backpulver vermischen und mit der Milch unter den Teig rühren. Wenn der Teig zu fest wird, noch etwas Milch dazugeben. Anschließend das Eiweiß schaumig schlagen und unter den Teig heben. Der Teig lässt sich nun relativ gut gießen und sollte nicht zu flüssig sein.

Danach das ganze im Waffeleisen durchbacken. Ich habe dazu das Waffeleisen immer mal mit ein bisschen Öl bestrichen, dann werden die Waffeln etwas knuspriger.

IMG_9600.jpg

In The Navy – Chrome Extension

Inspiriert durch die Do It! – Extension von Erik Taheri Habe ich nun auch meine eigene erste Chrome-Extension geschrieben. Sie spielt einfach nur den Refrain „In the Navy“ von den Village People ab, wenn man auf den Schalter drückt.

Hier geht’s in den Chrome Web Store

Das Projekt habe ich auch auf GitHub gestellt.

Mal sehen, wie lange die Erweiterung im Chrome Web Store bleibt, bevor sie von Copy Right Schützern wieder aus dem Verkehr gezogen wird.

Mobiles Internet und Wetter in Portugal

Inzwischen ist es recht einfach, auch in Portugal an günstiges schnelles Internet für den Urlaub zu kommen. Vodafone hat gleich am Flughafen einen Shop, in dem man SIM-Karten mit Datenvolumen kaufen kann. Deren Konditionen haben mich aber nicht überzeugt. Zur Vorbereitung fand ich bei http://www.computer-und-technik-im-wohnmobil.de/mobiles-internet-portugal/ den Hinweis auf den lokalen Anbieter MEO, der Prepaid-SIM-Karten mit 2 GB Datenvolumen für 30 Tage für nur 16 Euro anbietet. Auf der MEO-Webseite gibt es eine Übersicht mit Shops in ganz Portugal. Also steuerten wir gleich am ersten Tag den MEO-Shop im Einkaufszentrum Armazéns do Chiado in Lissabon an. Der Verkäufer sprach, so wie auf der Webseite versprochen, englisch und verstand auch gleich, was ich wollte. Ohne Registrierung waren wir nach 10 Minuten mit der 2GB-Flat ausgerüstet.

Das Wetter im Januar war in Portugal nicht so gut. Das war in der ersten Woche auch nicht dramatisch, da wir eh nur Lissabon und die vielen Museen und Kirchen dort auf dem Plan hatten. In der zweiten Woche ging es an den Atlantic in eine Ferienwohnung. Es regnete immer mal und war recht bewölkt. Zur Planung der nächsten Tage, an denen wir mit dem Mietwagen auch mobil waren, hat mir die relativ zuverlässige Vorhersage des Wetters von Yahoo oder Apple aber nicht mehr ausgereicht. Aus Deutschland kenne ich RainToday von der MeteoGroup. Damit kann man recht gut die nächsten Regengebiete ausmachen und gegebenenfalls woandershin fahren. In Portugal funktionierte diese App aber nicht. Es gibt von der MeteoGroup auch die App MeteoEarth, die genau das leistet. Man bekommt in der Standardversion eine Vorhersage von Wolken, Niederschlag und Temperatur quasi der gesamten Welt für die nächsten 24 Stunden, präsentiert auf einem übersichtlichen 3D-Globus, frei zoom- und schwenkbar. Per In-App-Kauf kann man auch eine Vorhersage für die nächsten Tage erwerben, was für den Urlaub nicht notwendig war. So macht sich die Planung des nächsten Tages recht einfach, man kann Bewölkung, Niederschlag und Temperatur über einzelne Schalter ein- und ausblenden und mit einem Schieberegler die Zeit vor- und zurückspulen. So sieht man schon vorher, wo es regnen wird und wo vermutlich die Sonne scheint und die Ziele danach auswählen.

git zum deployen nutzen

Wenn irgendwann alle Tests für eine Webseite abgeschlossen sind, muss sie auf den Webserver deployt werden. Das erfolgt in der Regel über FTP. Es geht aber auch einfacher, wenn man auf dem Webserver git installiert hat.

Auf dem Webserver wird ein bare-Repository angelegt. In diesem gibt es einen Branch production, der die Produktionsversion der Webseite hält. Nach jedem push in das Repository auf dem Webserver wird der production-Branch automatisch in das Webseitenverzeichnis ausgecheckt.

Das Bare-Repository

Auf dem Webserver wird das leere Repository angelegt.

cd repositories
mkdir webseite.git
cd webseite.git
git init --bare

Das lokale Repository

Als nächstes wird das Bare-Repository in ein lokales Verzeichnis geklont. Der Vorteil ist, dass damit die remotes bereits konfiguriert werden:

git clone ssh://..../webseite.git

Nun kann man erstmal auf dem Repository arbeiten und dann den Arbeitsstand comitten bzw. pushen.

z.B.

git add "index.php"
git commit -m"Initialisierung"

Der Branch production muss noch angelegt werden:

git branch production

Hat man irgendwann einen Produktionsstand erreicht, kann in den Branch production gewechselt werden und der Stand vom master-Branch (oder einem Tag etc.) gemergt werden.

git checkout production
git merge master

Dann wird alles auf den Webserver in das Bare-Repository gepusht.

git push origin master production

Das Repository auf dem Webserver

Zuerst wird das repository in das Verzeichnis geklont. Anschließend wird der aktuelle Stand des production-Branches ausgecheckt.

git clone ../../repositories/webseite.git
cd webseite
git pull origin production

Der Hook

Nun soll genau das automatisch passieren. Dafür gibt es in jedem repository einen post-receive-hook. Hierbei wird die Datei webseite.get/hooks/post-receive nach einem push ausgeführt. Der Inhalt sieht also so aus:

#!/bin/sh

cd ~/webseite || exit
unset GIT_DIR
git pull origin production

Es ist wichtig, dass diese Datei auch als ausführbar markiert ist.

Nach dem Anlegen des Hooks muss noch kontrolliert werden, ob er tatsächlich funktioniert.

Parken 2015

Das Buchen eines Parktickets funktioniert in Oberhof, im Thüringer Wald so: Man schickt eine SMS mit dem Inhalt <autokennzeichen>.<parkdauer in stunden> an eine Servicenummer. Die Servicenummer, eine Preisliste und eine detaillierte Anleitung sind überall auf Schildern bei den Parkplätzen einzusehen.

Anschließend erhält man eine SMS zurück, in welcher nochmal die bezahlten Parkgebühren und die Uhrzeit bis zu der das Ticket gilt, aufgeführt sind.

Zehn Minuten vor dem Ablauf der bezahlten Parkdauer erhält man eine zweite SMS als Erinnerung, dass das Ticket bald abläuft. Darin steht außerdem „Verlängerung wie Ticketbestellung“.

Das ist sehr praktisch, wenn man gerade mitten im Wald steht – zwar mit einbalkigem Mobilfunknetz aber weder das Auto, noch den Parkscheinautomat zum Nachbuchen in der Nähe hat.

Crosspost im Techniktagebuch