Wolkenfetzen

Die Zeiten, als ich mit Hardware beschäftigt habe und genau wußte, welche Grafikkarte, welches Mainboard und welcher RAM gerade der heisseste Scheiss sind, sind schon lange vorbei. Mit Einzug von Apple-Geräten und auch dem Abflauen des Apple-Hypes, in dem man sich noch jede Keynote angeschaut hat, besteht die Notwendigkeit, sich mit diesen Themen zu beschäftigen, nicht mehr. Apple-Geräte sind einfach viel zu teuer, haben selten die neueste Technologie verbaut, funktionieren aber.

Früher hat man bestimmt auch den ein oder anderen Bekannten gehabt, der immer die neuesten Software-Cracks hatte, seine PlayStation 1 mit einem Mod-Chip versehen hat und sich Spiele aus der Videothek auslieh, um sie schnell zu brennen und einfach nur zu sammeln.

Der Wired-Artikel "The teens who hacked Microsoft´s Xbox empire" beschäftigt sich mit dieser Szene und einem speziellen Hacker, dessen Geschichte damals irgendwie an mir vorbeiging. Lag wahrscheinlich daran, dass ich noch nie eine Microsoft-Konsole mein Eigen nannte (PlayStations waren schon immer besser! ;-) ).

Dann gibt es noch ein Interview mit Matthias Schreiber, dem Geschäftsführer der TYPO3 GmbH, in dem man es in erster Linie um die Entwicklung und Ziele von TYPO3 9 geht. Sehr lesenswert.

Schlechtes Gewissen

Der pile of shame an ungelesenen Artikeln wächst und wächst, die Projekte, die ich mir so vorgenommen habe, werden auch nicht weniger (im Gegenteil) und vielleicht ist es eine Idee, durch Niederschreiben von Ideen, Verlinken von Artikeln und Webseiten diese bewußter wahrzunehmen und einzuordnen.

Durch einen Artikel auf kottke inspiriert, dem (noch nicht vollständigen) Schließens meines Facebook-Accounts geschuldet habe ich mir vorgenommen, mein digitales Erbe hier anzutreten. Wie schon mehrere Male vorher fest vorgenommen, versuche ich ab sofort für mich mehr zu bloggen.

Anfangen werde ich damit, dass Tab meines Blogs immer im Browser offen sein wird, um Artikel, die ich lese und spannend finde, zu verlinken und vielleicht sogar zu kommentieren und meine Gedanken dazu niederzuschreiben.

DSGVO

Ich muss mich mal darum kümmern, ob die DSGVO für mich gilt. Wahrscheinlich nicht, weil dieses Blog keine Werbung schaltet, keinen Umsatz in Form von Spenden a la Patreon oder so aeinfährt und auch sonst von keinem Belang ist. Trotzdem mal nach der entsprechenden Passage suchen, da ich ja auch Tracker in der Seite habe. Die könnte ich in dem Zug auch mal ausschalten.

Lustiger wird es heute nicht

Martin Sonneborn hat mal wieder eine Rede im EU-Parlament gehalten. Zum Thema Syrien und Angriffskriege im Allgemeinen. Recht kurz und ich bin immer noch zwiegespalten, wie ich mit der Partei Die Partei umgehen soll. Ob Satire wirklich konstruktiv Politik machen kann oder ob es nur dazu dient, kurz eine Anregung zum Nachdenken zu erhalten.

Ich lese jetzt wieder Comics

In meiner Kindheit habe ich Comics verschlungen. Angefangen mit Mickey Mouse und Fix und Foxi über Asterix und später dann die Perlen aus dem Carlsen Verlag wie Gaston und Clever & Smart.
Als das iPad herauskam, gab es auch schnell Apps, mit denen man sich ganze Reihen von Batman-Comics herunterladen konnte. Was sich bei mir schnell im Geldbeutel bemerkbar machte, da so eine Reihe relativ kostengünstig (ich glaube so um die 4-5 Euro, wenn ich mich nicht falsch erinnere) war, aber der Klick, um die nächsten Comics zu lesen, war auch zu schnell gemacht.

In den letzten Jahren habe ich mir dann immer den neuesten Asterix geholt und auch den besten Band (Asterix bei den Schweizern!), aber so richtig gepackt hat es mich nicht. Irgendwie waren die Geschichten einfallslos und der klassische Aufbau von Asterix-Panels konnte mich auch nicht hinter dem Ofen hervorholen. Auch wenn man das den neuen Machern zugutehalten kann, dass sie dem Stil treu bleiben und Asterix nicht einfach kaputtmachen.

Kurz nach Weihnachten bin ich in den hiesigen Comicladen gestolpert und habe mich mal umgeschaut. Wobei mir gleich die Serie "Die Saga der Zwerge" aufgefallen ist und ich mir den zweiten Band mitgenommen habe. Der erste Band war leider vergriffen und so ließ ich ihn noch bestellen.

Und was soll ich sagen: zwar sind die beiden Bände jetzt kein literarisches Artefakt, aber sehr stimmig und (für mich) hervorragend gezeichnet. Und vor allem ziemlich lang und umfangreich. Da sitzt man schon mal ein wenig mehr als eine Stunde, um bis an das Ende zu gelangen. Mal schauen, wohin meine neu entflammte Faszination mich treiben lässt...

TYPO3-Projekte mit composer aufsetzen

Ich weiß nicht, ob es eine ultimative Art gibt, TYPO3-Projekte, in denen man selber Erweiterungen entwickelt, mittels composer aufzusetzen. Von daher beschreibe ich mal mein Setup und bin gespannt, wie man es besser machen könnte.

Allgemein gehe ich davon aus, dass eine Website auf Basis von TYPO3 entwickelt werden soll. Sprich: es wird TYPO3 CMS als Core-System verwendet, ein paar Extensions aus dem TER und dann noch ein paar Erweiterungen, die man selber entwickelt und die nicht öffentlich im TER verfügbar sind. Template-Erweiterungen und so weiter.

Für die Website gibt es dann ein Repository, in dem sich bei mir zwei composer.json-Dateien befinden, da ich Projekte momentan mittels TYPO3 Surf auf ein Test- und Livesystem deploye. Eine Datei heißt composer.json und ist für den Aufbau des Test- und Livesystems verantwortlich. Die andere Datei heißt composer-dev.json und verwaltet alle Abhängigkeiten für mein Entwicklungssystem. Warum ich nicht in der composer-Datei den "require-dev"-Zweig nutze, wird gleich klar.

{
  "repositories": [
    {
      "type": "composer",
      "url": "https://composer.typo3.org/"
    },
    {
      "type": "path",
      "url": "../_Extensions/*"
    }
  ],
  "name": "my-vendor/my-typo3-cms-distribution",
  "require": {
    "typo3/cms": "^8.7",
    "helhum/typo3-console": "^4.6",
    "vendor/my_extension": "^1.0"
  },
  "scripts": {
    "package-states": [
      "./vendor/bin/typo3cms install:generatepackagestates --activate-default"
    ],
    "folder-structure": [
      "./vendor/bin/typo3cms install:fixfolderstructure"
    ],
    "post-autoload-dump": [
      "@package-states",
      "@folder-structure"
    ]
  },
  "extra": {
    "helhum/typo3-console": {
      "install-extension-dummy": false
    },
    "typo3/cms": {
      "cms-package-dir": "{$vendor-dir}/typo3/cms",
      "web-dir": "web"
    }
  }
}

Im repositories-Zweig verweise ich auf den Ordner _Extensions, der sich auf gleicher Ebene wie das Projekt-Repository befindet. Hier kann natürlich auch auf ein projektbezogenen Unterverzeichnis verwiesen werden (mache ich auch so, habe es nur vereinfacht). In diesem _Extensions-Verzeichnis befinden sich die Repositories der Erweiterungen für dieses Projekt, die ich selber entwickele. In diesem Fall die Erweiterung my_extension. Diese Erweiterung besitzt natürlich auch eine entsprechend gepflegte composer.json-Datei um unter anderem das Autoloading zu gewährleisten, Abhängigkeiten aufzulösen und notfalls Umbenennungen vorzunehmen.

Mittels

COMPOSER=composer-dev.json composer update

wird das Entwicklungssystem aufgesetzt. TYPO3 Console übernimmt hierbei auch das Erstellen der PackageStates.php und erstellt notwendige Verzeichnisse. Meine Erweiterungen werden per Symlink in die jeweiligen Repository-Verzeichnisse aufgelöst. Erweiterungen aus dem TER werden wie gewohnt "normal" unterhalb von web/typo3conf/ext/ kopiert.

Nun kann ich in den jeweiligen Erweiterungs-Repositories entwickeln, versionieren, taggen und so weiter. Wenn ich einen Stand erreicht habe, der getestet oder sogar veröffentlicht werden soll, werden meine Erweiterungen beziehungsweise die Symlinks (per Bash-Skript) entfernt und folgende Composer-Datei aufgerufen:

{
  "repositories": [
    {
      "type": "composer",
      "url": "https://composer.typo3.org/"
    },
    {
      "type": "vcs",
      "url": "https://github.com/KaffDaddy/my_extension"
    }
  ],
  "name": "my-vendor/my-typo3-cms-distribution",
  "require": {
    "typo3/cms": "^8.7",
    "helhum/typo3-console": "^4.6",
    "vendor/my_extension": "^1.0"
  },
  "scripts": {
    "package-states": [
      "./vendor/bin/typo3cms install:generatepackagestates --activate-default"
    ],
    "folder-structure": [
      "./vendor/bin/typo3cms install:fixfolderstructure"
    ],
    "post-autoload-dump": [
      "@package-states",
      "@folder-structure"
    ]
  },
  "extra": {
    "helhum/typo3-console": {
      "install-extension-dummy": false
    },
    "typo3/cms": {
      "cms-package-dir": "{$vendor-dir}/typo3/cms",
      "web-dir": "web"
    }
  }
}

Wie man sieht, ist der einzige Unterschied im repositories-Zweig zu sehen. Hier müssen entsprechend alle Repositories der Erweiterungen angegeben werden, die installiert werden sollen. In diesem Fall ist es nur eine, aber das kann dann schon mal ausarten. Wenn man nun composer update ausführt, werden die Erweiterungen alle "normal" installiert.

Einmal getriggert werden

Ich habe es gestern Abend endlich mal geschafft, <a href="https://de.m.wikipedia.org/wiki/Arrival_(Film)">Arrival</a> zu schauen. Ein Science-Fiction, der von der ersten Begegnung mit Außerirdischen handelt und in der die zwei Protagonisten versuchen, mit den Aliens zu kommunizieren.

Als Nebenplot (ohne jetzt mehr zu verraten) handelt die Geschichte von der Tochter der Hauptdarstellerin, die als Teenager an einer seltenen Form einer Krankheit verstirbt. Um die Krankheit zu visualisieren, wurde die scheinbar dafür gängige Form (Haare ab, Flecken auf der Haut) gewählt, so dass meine erste Assoziation Krebs ist. Immer.

Und da triggert eine Menge in mir. Weil ich den Scheiss auch schon hatte. Oder habe. So genau kann das ja keiner sagen. Wir tragen ja alle Zellen in uns, deren DNA irgendwie kaputt ist und wenn sie aktiver werden, entstehen dadurch diese wunderbaren Tumore. Das Schlimme an dieser Krankheit ist, dass, wenn man einmal dem Tod von der Schippe gesprungen ist, bei jedem quer sitzenden Furz als erstes denkt, dass schon wieder eine Metastase oder ein neuer Tumor mit anderer Zusammenstellung wächst. Und die Diagnostik von Tumoren ist, wie ich das mitbekommen habe, immer noch recht schwer. Man muss schon Glück haben, in einem recht frühen Stadium zum Arzt zu gehen, der dann noch den richtigen Riecher hat, die korrekten Schlüsse zu ziehen.

Fuck you cancer!

Doppelt aber nicht dreifach

Twitter hat die maximale Zeichenanzahl von Tweets verdoppelt. Von 140 auf 280 Zeichen. Und alle drehen durch. Wenn ich ehrlich bin, hat es mich schon immer gestört, nur so wenig Zeichen zur Verfügung zu haben und musste auch schon mehrfach, Texte auf mehrere Tweets aufteilen. Und jetzt hat man halt 280 Zeichen zur Verfügung, was in meinen Augen jetzt kein großer Bruch mit dem Kern des Dienstes zu tun hat, sondern schlicht und einfach mit den verschiedenen Sprachen.

Klar haben chinesische oder japanische Nutzer jetzt noch viel mehr "Platz" und können wahrscheinlich ganze Romane in einen Tweet packen. Aber deutschsprachige Tweets können ab sofort sorgfältiger ausformuliert werden und vielleicht wird damit nicht weiter eine Kunstsprache erzeugt, wie man es in den letzten Jahren beobachten konnte.

Was ich nur nicht ganz verstehe, ist, warum es Twitter nicht schafft, seinen Dienst zu professionalisieren. Und vielleicht ein Fremium-Modell einzuführen. Die API, die 3rd-Party-Clients verwenden müssen, ist beschnitten und erlaubt unter anderem nicht den Zugriff auf Votings und ähnlichem. Warum schafft es Twitter nicht, für einen gewissen Betrag, Usern die Möglichkeit zu bieten, die komplette API in ihren Clients zu verwenden. Gepaart mit der Möglichkeit zahlende User von nichtzahlenden Usern unterscheiden zu können. So könnte man auch diesen unsäglichen Spam-Bots ein wenig Einhalt gebieten. Man möchte ja nicht für 1000 erstellte Spambots fünf bis zehn Euro zahlen, wenn man dann auch noch schnell geblockt wird.

Twitter ist für mich das mittlerweile einzige Social Network, dass ich aktiv verwende. Facebook ist einfach unbrauchbar geworden, Instagram hat mich nicht gepackt, da das anfängliche Bildformat einfach zu grausam war und Accounts viel zu viel mit Hashtags um sich geworfen haben, um massig Follower zu generieren. Twitter ist momentan noch das einzige Netzwerk, in dem ich Herr über meinen Stream und Followern bin. Ohne mit Werbung zugebombt zu werden und ich das Gefühl habe, dass es eigentlich keinen Einfluss hat, was ich so zu sehen bekomme.

Ordentlich debuggen mit Xdebug und PhpStorm

Es gibt ja nichts Schlimmeres, als Code nicht ordentlich debuggen zu können. Nicht nachvollziehen können, warum der vermaledeite Code, den man gerade mit Herzblut und Schweiß geschrieben hat, verdammt noch mal nicht das hinten rauswirft, was er soll.

Da PHP größtenteils zur Laufzeit und dann auch noch von einem serverseitigen Daemon beziehungsweise Webserver interpretiert wird (Caches jetzt mal außen vorgelassen), benötigt man eine Erweiterung in Form von Xdebug, die sich dazwischen schaltet und Informationen an die IDE liefert. Unter macOS kann man das Installieren sowieso recht bequem per Homebrew erledigen:

brew install php71-xdebug

Wie man den Rest (Apache, MySQL und PHP) installiert, hatte ich hier mal beschrieben, auch wenn man anstelle der MariaDB lieber Mysql 5.6 installieren sollte.

Okay, zurück zu Xdebug, dass zwar jetzt schon installiert, aber noch nicht konfiguriert ist. Im Verzeichnis /usr/local/etc/php/7.1/conf.d sollte sich die Datei ext-xdebug.ini befinden, in die man folgendes schreiben sollte:

[xdebug] zend_extension="/usr/local/opt/php71-xdebug/xdebug.so" xdebug.max_nesting_level = 500 xdebug.idekey = PHPSTORM xdebug.remote_host = 127.0.0.1 xdebug.remote_enable = 1 xdebug.remote_port = 9000 xdebug.remote_handler = dbgp xdebug.remote_mode = req xdebug.auto_trace=1 xdebug.collect_includes=1 xdebug.collect_params=1 xdebug.collect_return=1 xdebug.extended_info=1

Da Xdebug sich nach meinem Gefühl schon verlangsamend auf den PHP-Interpreter auswirkt, auch wenn kein aktiver Debugging-Prozess läuft, installiert man sich am Besten noch den Xdebug Toggler per

brew install xdebug-osx

Danach kann man dann per

xdebug-toggle on/off

Xdebug einfach ein- und ausschalten. Schlußendlich installiert man dann noch den Xdebug Helper in Chrome oder dem Browser seiner Wahl.

Fehlt jetzt nur noch die Konfiguration von PhpStorm und das Mapping von TYPO3-Core bzw. Erweiterung. Nehmen wir einfach an, dass eine Erweiterung debuggt werden soll die per composer in ein TYPO3-Projekt eingebunden ist. Ich verwende composer bei der Entwicklung von Erweiterungen so, dass zu entwickelnde Erweiterungen als Symlink eingebunden sind, damit sich die git-Repositories nicht in die Quere kommen. Könnte man auch mittels Submodule realisieren, aber ich mache es halt am Liebsten so.

In PhpStorm sollte man in der Konfiguration unter Languages & Frameworks > PHP > Debug die Optionen

  • Force break at first line when no path mapping specified
  • Force break at first line in when a script is outside the project

entfernen. Zusätzlich sollte man in den Einstellungen von PhpStorm unter Languages & Framework > PHP die korrekte Version und Cli-Interpreter angegeben und das "vendor/typo3/cms"-Verzeichnis als "External Library" eingebunden haben.

Wenn man nun die Debugging-Session in PhpStorm aktiv schaltet und zum Beispiel das Frontend von TYPO3 neu lädt, sollte sich PhpStorm mit einem Mapping-Hinweis zu Wort melden und auch gleich entsprechende Dateien zur Auswahl geben. Für das Frontend wählt man am Besten die index.php aus dem Hauptverzeichnis des TYPO3 Cores.
Fröhliches Debuggen!

Die Sonne geht trotzdem auf

Es sind seit der Bundestagswahl ein paar Tage ins Land gegangen und die Sonne geht immer noch jeden Morgen auf. Auch wenn sich die politische Landschaft in diesem Land ganz schön gewandelt hat und das Volksparteiensystem nicht mehr vorhanden ist. Neben den herben Verlusten für die beiden Platzhirsche CDU und SPD und dem Erstarken einer rechten Partei, ist die ehemals als liberale Partei bezeichnete FDP wieder im Bundestag.

Ob jetzt eine Koalition aus CDU, Grünen und FDP zustande kommt oder nicht, wird sich zeigen. Ich hoffe nur, dass die SPD zu ihrem Wort steht und in der Opposition bleibt. Um den rechten Idioten die Stirn zu bieten und Ihnen als drittstärkste Partei nicht die Führungsposition der Opposition zu überlassen. Auch wenn es dieses Amt gar nicht gibt und mit Vorzügen ausgestattet ist.

Ich bin immer noch nicht in eine Partei eingetreten. Ich habe mir meine Gemeindevertretung und auch die Ausschüsse sowie die Parteien angeschaut und habe da keinen Platz für mich gesehen. Vielleicht ist es aber von mir auch ein wenig überheblich so zu denken. Das wird sich zeigen, ganz vom Tisch sind die Überlegungen nicht.

Ich werde nur in meinem Freundes- und Bekanntenkreis noch stärker gegen Alltagsrassismus „Flagge zeigen“. Weiterhin fragen, woher denn die Meinungen kommen, die man so hat und versuchen, meine Argumente vorzutragen. Denn dieser Rassismus ist irgendwie der Nährboden für all den ganzen Scheiss, der sich in diesem Land immer mehr abzeichnet.