Ich will es endlich schaffen!

Super Mario Land

Ich bin nicht gut im Beenden von Videospielen. Ich denke, die Anzahl an Spielen, die ich wirklich bis zum Ende gespielt habe, kann man an vier Händen abzählen. Und ich spiele seit 1989.
Irgendwann erreiche ich einen Punkt im Spiel, in dem es mir zu nervig ist, ständig von „vorne“ anzufangen, um die Stelle zu meistern, an der ich scheitere. Aus diesem Grund habe ich mich auch noch nie an die „Dark Souls“-Reihe getraut: ich würde wahrscheinlich schon nach zehn Minuten den Controller in die Ecke werfen und die Disc nie wieder einlegen.

Letztes Jahr habe ich mir vorgenommen, Spiele, die ich mir kaufe, auch zu Ende zu bringen. In Sport-/Rennspielen den eventuell vorhandenen Karrieremodus bis zum maximal erreichbaren Pokal und Story-Spiele bis zum Ende der Geschichte. Hundert Prozent der Ziele will ich gar nicht erreichen, bei OpenWorld-Spielen ist das ja mittlerweile mehr als lästig geworden: „Sammle hundert von diesen rosafarbenen Pflanzen“ und so weiter. Laaaangweilig.

Kurz nach meinem Entschluss habe ich mir die Skyrim-Edition für die PlayStation 4 geholt, nachdem ich das Spiel auf der PS3 zwar schon weit gebracht, aber nicht im Ansatz vollendet hatte. Und nun spiele ich seit letztem September, habe zwar auch schon den DLC Dragonborn zum Ende gebracht, aber die Hauptquest-Reihe vernachlässigt. Und das mit fast Level 40. Aber ich werde sie noch zu Ende bringen. Auf jeden.

Auch wenn ich mir vor ein paar Wochen Elite Dangerous zugelegt habe. Klingt jetzt ziemlich idiotisch, als Spieler, der schon andere Spiele nicht zu Ende gespielt hat, sich quasi ein Endlos-OpenWorld-Spiel ohne großartige Storyline zuzulegen. Aber vielleicht ist das ja nur, dass ich eine Ausrede habe.

Nichtsdestotrotz gibt es aber ein paar Spiele, die mich schon reizen, sie zu Ende zu spielen. Super Mario Land auf dem GameBoy ist so eins davon. Schon damals hatte ich das Spiel und bin an den ersten Leveln verzweifelt. Ich bin einfach nicht gut in Jump ’n’ Runs. Ich finde aber, dass man diesen Klassiker der Spielgeschichte, der so prägend für das Genre an sich und Videospiele im Allgemeinen war, zu Ende bringen sollte. Oder nicht?

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.