Der alte Mann und das Meer

Pirates!

Wenn ich am Meer bin und auf dieses endlose blaue Wasser hinausschaue zieht es mich irgendwie immer raus. Am Liebsten würde ich dann auf einem dieser dicken Schiffe anheuern, die um die Welt fahren und die raue See dort draußen erleben. Vielleicht hört sich das auch ein wenig zu romantisch an und ich stehe eher die ganze Zeit an der Reeling und füttere die Fische.

Andere Dinge, die immer mehr in das nächste Leben verschoben werden, sind das Durchspielen von Computerspielen. Zwar bin ich bei Skyrim schon ziemlich weit, habe den Dragonborn-DLC durch und bin endlich wieder auf den Pfaden der Hauptquest und mit Stufe 37 ist das Spiel auch recht einfach, wenn man wie ich sich auf den klassischen Tank in Form eines Zweihänders und schwerer Rüstung spezialisiert hat, aber momentan ist irgendwie die Luft raus. Auch wenn mich Skyrim nun fast ein dreiviertel Jahr in den Bann gezogen hat und ich auch kein anderes Spiel angefasst habe. Bis neulich.

Da ist nämlich Elite Dangerous für die PS4 erschienen. Ein Spiel, für das ich mir fast einen Windows-Rechner und eine Okulus Rift zugelegt hätte. Elite habe ich damals schon auf dem C64 fasziniert eingelegt. Die elend lange Ladezeit abgewartet und das Spiel nie so recht verstanden. Als dann Anfang der Neunziger Frontier: Elite II rauskam, konnte ich es kaum erwarten, dass auf meinem PC zu spielen und war total enttäuscht. Viel zu schwer, nicht eingängig genug und für einen hitzköpfigen Teenager nicht das richtige Spiel. Mit Lieblingsspielen wie Aces of the Pacific, dem ersten Teil der Das Schwarze Auge-Triologie und Adventures von LucasArts war Elite II damals einfach zu realistisch und mangels Handlung fehlte einem der Antrieb.

Als vor einigen Jahren auf Kickstarter Elite Dangerous angekündigt wurde, war ich aber trotzdem wieder Feuer und Flamme. Die wurde zwar gleich wieder im Keim erstickt, da das Spiel erstmal nur für den PC erscheinen sollte und ich wenig Lust hatte, mehrere tausend Euro in Windows-Hardware zu stecken, aber ich verfolgte das Projekt trotzdem. Nun ist das Spiel für die PlayStation 4 erschienen und ich habe es, obwohl noch nicht mit der Hauptstory von Skyrim fertig, gestartet. Und war dem Spiel verfallen.

Zwar scheint es genauso unzugänglich wie seine Vorgänger zu sein (wobei ich Frontier: First Encounters nie gespielt habe) und ich mir geschworen habe, nach Grand Theft Auto V und Skyrim erstmal kein Open World Spiel mehr anzufassen, aber irgendwie haben mich schon die Tutorials zum Kennenlernen der Schiffsteuerung und Waffen sowie die ersten beiden Stunden im offenen Spiel so angefixt, dass ich nach meinem Urlaub erstmal alle anderen Spiele links liegen lassen werde, um mich in die Tiefen des Alls zu begeben.

Wobei wir dann wieder beim Durchspielen von Spielen angelangt sind. Ein richtiges Ende gibt es ja außer dem Erreichen des Elite-Ranges auch nicht. Und für den bräuchte ich bestimmt mehrere Jahre.

Deployment mit TYPO3 Surf

Vorsicht Bücher! Nicht werfen!

Den ganzen Tag entwickelt man tolle neue Features, die dann auf einem Testsystem abgenommen werden müssen oder das Licht der Welt auf dem Livesystem erblicken dürfen. Früher hat man dafür den FTP-Client angeschmissen, dann wurde es en vogue alles per SSH zu transferieren und irgendwann wurde alles so komplex, dass man noch Tests vorher ausführen oder das Autoloading von Klassen und Schnittstellen automatisieren wollte. Dadurch wurde dieser Prozess so aufgebläht und kompliziert, dass man gezwungen wurde, diesen auch von Software durchführen zu lassen, um ja nichts zu vergessen oder Fehler zu übersehen.
Neben Travis CI und Codeship gibt es noch für PHP Deployer, die einem auf die ein oder andere Art den Deployment-Prozess abnehmen.

Da TYPO3 das Beste System der Welt ist (höhöhö) gibt es hierfür noch aus den Zeiten von TYPO3 Flow das Deployment-Tool TYPO3 Surf, das unter der Obhut von Helmut Hummel (und ganz vielen anderen Entwicklern) gepflegt wird. TYPO3 Surf setzt darauf auf, dass ein Projekt auf Basis von git und composer erstellt wird und man noch die TYPO3 Console verwendet. Recht viele Anforderungen auf den ersten Blick. Aber wer setzt denn noch TYPO3-Installationen ohne composer auf?

Wie man composer und TYPO3 Surf installiert, wird bestens auf deren Seiten beschrieben und dann kann man sich von mir das Repository ziehen, in der alles vorhanden ist, um sich erstmal lokal eine Entwicklungsumgebung mit allen benötigten Dateien für ein Deployment mit TYPO3 Surf aufzubauen.
Das ganze Script ist noch nicht ganz fertig, es basiert leider darauf, dass eine Datenbank auf dem Livesystem mit den benötigten TYPO3-Tabellen existiert. Und die entsprechenden Konfigurationsdateien müssen auch erstmal in das eigene Repository. Von daher muss man leider noch folgende Schritte ausführen, bis man deployen kann:

  1. „composer install“ ausführen, um erstmal lokal die TYPO3-Installation anstoßen zu können.
  2. Dann führt man wie gewohnt die TYPO3-Installation aus, damit wir die Datenbank erhalten, die auf das Livesystem importiert wird.
  3. In der Datei web/typo3conf/LocalConfiguration.php werden die entsprechenden Parameter für das Live-System gemacht, für das Entwicklungssystem werden die Parameter in der Datei web/Configuration/Development.php gesetzt. Diese wird verwendet, wenn man den Application-Context von TYPO3 auf Development während der Entwicklung setzt.
  4. Die Datei .surf/typo3-surf-base-installation.php muss auch noch angepasst werden. Hier müssen Hostname, SSH-User, der Pfad zur PHP-Datei, der Deployment-Pfad und das git-Repository gesetzt werden. Letzteres ist das eigene Repository, in der zwar ein Klon meines Repositories sitzt. Aber mit allen jetzt gemachten Änderungen in den Konfigurationsdateien.
  5. Die Änderungen werden in den Master-Branch des Repositories gepushed.
  6. Im Terminal der Wahl wird im Hauptverzeichnis des Repositories der Befehl „surf deploy typo3-surf-base-installation“ ausgeführt. Sollte die Datei im Verzeichnis .surf umbenannt worden sein, den Befehl entsprechend anpassen.
  7. Staunen.

Zum Schluss muss nur noch der vHost-Eintrag des Livesystems auf den Ordner „releases/current/web“ unterhalb des Deployment-Pfades verweisen und schon hat man sein erstes „deploytes“ TYPO3-System. Viel Spaß.

In der kommenden Zeit werde ich mich noch damit auseinandersetzen, wie man die Datenbank auf dem Livesystem per Deployment und TYPO3 Console „frisch“ hält und was vor allem bei zukünftigen Deployments zu beachten ist.

Update: Jan Kiesewetter von t3easy hat auf dem letzten TYPO3Camp in Stuttgart einen Talk zu TYPO3 Surf gehalten. Die Slides kann man sich bei ihm anschauen.

Backendmodule von TYPO3 6.2 nach TYPO3 7.6 migrieren

Baustelle

Momentan migriere ich ein paar TYPO3-Installation von Version 6.2 auf die LTS-Version 7.6 als Zwischenschritt um dann auf die neue LTS-Version 8.7 gehen zu können. Dabei sind mir ein paar kleine Backend-Module vor die Füße gefallen, deren Sinn meistens darin besteht, Daten aufzubereiten und anzuzeigen oder eine Import-Schnittstelle für CSV-/XML-Dateien bereitstellen.
Eigentlich würde ich eher dazu tendieren, diesen Update-Schritt dafür zu nutzen, den bestehenden Code zu refakturieren um von piBase/AbstractController-Extensions zu Extbase-basierten Erweiterungen zu kommen. Das ist den meisten Kunden aber schlichtweg zu teuer, von daher bleibt einem manchmal nur übrig, den minimalen Weg zu gehen.

Ich habe diverse Backend-Module mit folgenden Klassen-/Namespace-Ersetzungen wieder zum Laufen bekommen. Diese Erweiterungen sind aber wirklich nur klein und auch nicht mehrsprachig gehalten. In dieser Beziehung konnte ich leider keine Erfahrungen sammeln.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$LANG => $GLOBALS["LANG"]
 
$BE_USER => $GLOBALS['BE_USER']
 
t3lib_SCbase => \TYPO3\CMS\Backend\Module\BaseScriptClass
 
t3lib_BEfunc => \TYPO3\CMS\Backend\Utility\BackendUtility
 
t3lib_div => \TYPO3\CMS\Core\Utility\GeneralUtility
 
$page = t3lib_div::makeInstance('t3lib_pageSelect'); => $page = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\CMS\Frontend\Page\PageRepository');
 
$template = t3lib_div::makeInstance('t3lib_TStemplate'); => $template = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\CMS\Core\TypoScript\TemplateService');
 
$this->doc = t3lib_div::makeInstance('mediumDoc'); => $this->doc = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Backend\\Template\\DocumentTemplate');
 
$this->doc = t3lib_div::makeInstance('template'); => $this->doc = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Backend\\Template\\DocumentTemplate');

Über den Weg Gelaufenes in KW12

Grillen

Diese Woche lag im Zeichen des Frühlingsanfangs und irgendwie gab es wenig Artikel, die ich mir überhaupt zum Lesen markiert habe. Lag vielleicht aber auch daran, dass ich wenig dazu kam, meine RSS-Feeds zu scannen.

  • Wunschliste für die Integration von composer in TYPO3
    Alexander Schnitzler hat auf Github einige Zeilen geschrieben, wie er sich selber die Integration von composer für TYPO3 vorstellt. Die Kommentare sind lesenswert, weil sie noch mehr Punkte aufgreifen.
  • Karabiner-Elements
    Tool, mit dem ich die Media-Tasten von macOS auf meine Pok3r-Tastatur legen konnte. Endlich.
  • Interview mit Donald Trump mit dem Time-Magazin
    Auf der einen Seite total faszinierend, wie so jemand Präsident eines riesengroßen und vor allem bunten Staat werden kann. Auf der anderen Seite beängstigend.
  • OpenEmu – Emulator für diverse Systeme
    Auf der Suche nach einem SNES-Emulator für den Raspberry Pi drauf gestoßen, ausprobiert und für gut befunden. Alte Spiele auf macOS mit dem PlayStation-Controller spielen. Wunderbar.
  • RetroPie – Emulator für den Raspberry Pi
    Ich habe es noch nicht ausprobiert, aber das scheint genau das zu sein, was ich für den Mini-Rechner benötige. Wenn das wirklich mit einem PlayStation-Controller zu koppeln ist, wird mein Sohnemann das hoffentlich wie ich hervorragend finden.
  • Der letzte Brand
    Faszinierendes Interview eines Workaholic und in Perfektion versessenen Mannes, der nicht zum ersten Mal alles hinschmeisst, weil es nur noch betriebswirtschaftliche Maximierung für seine Tätigkeit gibt. Nicht nur, dass ich Monkey 47 immer noch allen anderen Gins bevorzuge, weil er für mich die schönste, fruchtig-würzige Geschmacksnote hat, ich würde gerne mal so einen Williams aus seiner Brennerei probieren. Leider unbezahlbar.

Über den Weg Gelaufenes in KW11

Antiallergika

Irgendwie habe ich es vergessen für die zehnte Woche meinen Reader zu entrümpeln. Auf der anderen Seite komme ich momentan gerade sowieso kaum dazu, Artikel mehr als die Phase des Scannens zu gönnen. Was sie echt nicht verdient haben. Die meisten jedenfalls.

  • KoN (King of Nothing)
    ist ein Rogue-like der in sieben Tagen aus der Feder von TINYTOUCHTALES und Max Fiedler. Die Macher des hervorragenden Smartphone-Kartenspiels haben dann auch nur fünf Tage für die Umsetzung eines Threes-Rogue-Likes benötigt. Scotty wäre stolz.
  • Thimbleweed Park wird endlich veröffentlicht
    Ich habe ja seit der ersten Ankündigung es so gut wie vermieden, Screenshots, Videos oder Artikel über das neue Machwerk von Ron Gilbert (unter anderem) anzuschauen und zu lesen. Auch wenn es nicht der große Wurf wird, möchte ich das Spiel ohne irgendwelche Beeinflussung genießen. Der Anspruch an ein neues Grafik-Adventure besonder in dem Stil ist einfach nicht zu erfüllen, das ist mir jetzt schon klar. Aber vielleicht werde ich ja eines Besseren belehrt. Hoffentlich.
  • Is design dead?
    Zu meiner Schande muss ich gestehen, dass ich diesen langen Artikel noch gar nicht gelesen habe, aber wenn es dort wirklich um die Praktiken des Extreme programming (XP) und Software-Design geht, habe ich das auf jeden Fall vor.
  • CSS Grid Layouts werden der neue Scheiss
    Die Unterstützung von Flexbox ist mittlerweile so stark, dass man es ohne Nachdenken verwenden kann und auch „Frameworks“ wie Bootstrap verwenden diese Methode in Version 4. Der „Nachfolger“ steht nun schon in den Startlöchern und erlaubt unter anderem zweidimensionale Grids anzulegen, die man so auch nicht mit Flexbox hinbekommt. Jedenfalls nicht mit purem CSS. Hier und hier gibt es noch ein paar Infos.
  • Die MiniDisc
    Ich wollte damals immer einen MiniDisc-Player haben, aber die waren für einen Schüler einfach viel zu teuer.

Der erste Kinder-Rechner

Raspberry Pi

Ich weiß noch, wie ich meinen ersten Computer zum elften (zehnten?) Geburtstag bekommen habe: im örtlichen Metro habe ich meinen Vater angebettelt doch den Amiga 500 zu kaufen und nicht den kleinen Bruder. Und das, obwohl meine Eltern überhaupt gar nicht den Sinn gesehen haben, mir so ein neumodisches Ding in mein Kinderzimmer zu stellen. Zwar hatte mein Vater damals im Büro auch schon zwei Rechner (8088er und ich glaube schon einen 286er), die aber für Textverarbeitung und Steuerdinge benutzt wurden. Wenn sie nicht von uns Kindern zum Flippern oder Frogger-Spielen zweckentfremdet wurden.
Von meinen Freunden hatten fast alle aber einen Commodore C64, was dann den Ausschlag gegeben hat, dass ich auch solch einen bekommen habe. So von wegen Software-Vielfalt und so. Knick-knack, sie verstehen schon.

Nun ist es soweit, dass ich meinem großen Sohn auch einen Rechner in sein Zimmer stellen werde. Er ist zwar schon firm in der Bedienung eines iMacs und auch iPad und iPhone stellen ihn vor keine große Hürde (außer, dass sein iPhone nur für Fahrradtouren mit seinen Kumpels oder ähnliches verwendet werden darf), aber diese Geräte stehen halt nicht direkt in seinem Zimmer.
Da ich noch keine großen Ausgaben haben wollte und alle alten Rechner defekt oder ausgeschlachtet sind, musste Ersatz in Form eines Raspberry Pi her. Viel Rechenpower hat er ja nicht, aber zum Zocken stehen dem Herrn ja auch diverse Konsolen zur Verfügung, auf denen auch schon seine eigenen Nutzerprofile laufen. In erster Linie soll er den Rechner zur Recherche für die Schule, YouTube und seine eigene Musik verwenden. Und vielleicht bekomme ich ihn ja sogar dahin, ein wenig in die Programmierung zu schnuppern. Video- und Audiobearbeitung wird auf dem schmalbrüstigen Prozessor nicht möglich sein, daran hat er die letzten Monate auch in der Schule gefallen dran gefunden, aber da bin ich noch auf Recherche.

Ich habe ihm jetzt erstmal ein aktuelles Raspbian installiert und neben dem schon installierten LibreOffice habe ich LXMusic als MP3-Player auf den kleinen Rechner geworfen. Zum Drucken kann er dank CUPS und hplip auf den im Haushalt befindlichen HP Deskjet-Drucker per Airprint drucken.
Da er ihn zu Ostern bekommen soll möchte ich bis dahin es auch noch schaffen zum Beispiel einen SNES-Emulator inklusive PS3-Controller-Verbindung zum Laufen zu bekommen, damit er neben Minecraft (es gibt eine spezielle Version für den Pi) auch noch ein wenig Mario World oder ähnliches spielen kann.