Webserver mittels des PHP aufsetzen

Für die Entwicklung im Web-Bereich wird meist ein lokaler Webserver benötigt, welcher meist über PHP, eine Datenbank z.B. MariaDB und den eigentlichen Webserver verfügt. Allerdings muss nicht für jeden Fall gleich ein Nginx installiert werden.

Der PHP-Webserver

Ist ein PHP installiert, z.B. unter macOS über Homebrew:

brew install php

kann dieses genutzt werden, um einen Webserver mittels PHP im Terminal zu realisieren. Dafür dient die Option -S:

sudo php -S localhost:80

Als Parameter wird die Adresse und der gewünschte Port angegeben. Das sudo wird benötigt, um den privilegierten Port zu nutzen. Anschließend hört PHP auf dem Port und der Adresse und bearbeitet entsprechende Anfragen.

JSON mit Schlüsselwörtern unter Java deserialisieren

Mittels GSON von Google, können JSONs unter Java einfach in Objekte deserialisiert werden. Allerdings können bestimmte JSON-Objekte zu Problemen führen. So zum Beispiel folgende JSON-Datei:

{
   "default":"ABC",
   "value":"DEF"
}

Das entsprechende Java-Objekt könnte in diesem Fall wie folgt aussehen:

class Data {

  public String default;
  public String value;
}

Damit wäre GSON in der Lage die entsprechenden Felder aus dem JSON, den Felder in der Klasse zuzuordnen. Allerdings kann obige Klasse nicht kompiliert werden. Hintergrund hierfür ist das Feld default. Unter Java ist dies ein Schlüsselwort und kann somit nicht als Feldname genutzt werden. Unter Sprachen wie C# könnte hier mit einer Verbatim-Zeichenkette gearbeitet werden:

public String @default;

Allerdings bietet Java diese Möglichkeit nicht an, sodass sich hier anders beholfen werden muss. Die Lösung ist die Annotation SerializedName. Diese gibt den Namen des Schlüssels im JSON an, welcher in das entsprechende Feld deserialisiert werden soll:

class Data {

  @SerializedName("default")
  public String defaultValue;
  public String value;
}

Damit kann GSON die Serialisierung wieder vornehmen und das obige JSON kann in eine entsprechende Java-Struktur abgebildet werden.

Entwicklermodus unter iOS 16 aktivieren

Unter iOS kann der Entwicklermodus für das entsprechende Gerät aktiviert werden. Dazu müssen in der Theorie die Einstellungen geöffnet und anschließend der Punkt Datenschutz & Sicherheit ausgewählt werden. Dort wiederum findet sich der Punkt Entwicklermodus.

Die Einstellungen unter iOS

Allerdings kann es durchaus vorkommen, dass der Punkt Entwicklermodus nicht vorhanden ist. In diesem Fall muss ein entsprechender Mac her und dort Xcode gestartet und das Gerät mit dem Rechner verbunden werden. Nun sollte in den Einstellungen des iOS-Gerätes der Punkt Entwicklermodus vorhanden sein und kann aktiviert werden.

Probleme beim Deployen zu Maven Central

Im Rahmen einiger Wartungsarbeiten wollte ich eine neue Version einer Java-Bibliothek zu Maven Central deployen. Stattdessen wurde ich von der Meldung:

Execution injected-nexus-deploy of goal org.sonatype.plugins:nexus-staging-maven-plugin:1.6.7:deploy failed: An API incompatibility was encountered while executing org.sonatype.plugins:nexus-staging-maven-plugin:1.6.7:deploy: java.lang.ExceptionInInitializerError: null

überrascht. Am dahinterliegenden Problem wird bereits gearbeitet. Um das Deployment trotzdem durchführen zu können, eignet sich folgender Workaround:

export MAVEN_OPTS="--add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.text=ALL-UNNAMED --add-opens=java.desktop/java.awt.font=ALL-UNNAMED"
mvn clean deploy

Anschließend wird das entsprechende Deployment durchgeführt, was je nach Auslastung einige Minuten dauern kann.

Find My und das immer wiederkehrende Gerät

Im Jahre 2016 habe ich mir einen Mac Mini gekauft. Ein paar Jahre später habe ich diesen wieder verkauft. Natürlich wurden vorher alle iCloud-Funktionen deaktiviert und der Mac zurückgesetzt, bevor er auf die Reise ging.

Das letzte Gerät in der Liste ist zu viel des Guten

Nun fiel mir später ab und an auf das dieser Mac Mini unter einem anderem Namen unter Find My, oder wie es im Deutschen heißt Wo ist? auftauchte. Also habe ich ihn dort wieder entfernt. Und doch taucht er nach einer Weile wieder auf. Da dies ein wenig seltsam war; schaute ich nach, ob das Gerät noch mit meiner Apple-ID verbunden war. Dies war allerdings nicht der Fall. Nachdem ich das Problem noch eine Weile ignoriert habe, raffte ich mich dann doch mal auf und redete mit dem Apple Support. Der Chat war leider nicht sonderlich hilfreich, sodass ich auf einen Rückruf verwiesen wurde und mein Problem nochmal schildern dürfte. Nachdem mein Problem verifiziert wurde, erhielt ich die Aussage:

Das ist wirklich kein alltägliches Problem. Da muss ich ein paar Minuten recherchieren.

Nach der Recherche war die Vermutung des Supports das sich der neue Besitzer des Gerätes nie vollständig mit seiner Apple-ID angemeldet hat und somit das Gerät bei Find My immer wieder bei mir landet. Da es in diesem Moment dafür keine offensichtliche Lösung gab, wurde das Problem an die Entwicklungsabteilung gemeldet.

Ein paar Tage später wurde ich dann gebeten noch die Seriennummer des alten Mac Mini herauszusuchen. Dank einer alten Rechnung war dies problemlos möglich. Anschließend wurde mein iCloud-Account nach einer persönlichen Ansprache von Apple in den Eskalationsmodus geschaltet und nun hieß es wieder warten. Die persönliche Ansprache ergab sich dadurch das mir in einem vorbereiteten Text erklärt wurde; was mit dem iCloud-Account möglich ist, wenn er im Eskalationsmodus aktiviert wurde. Dieser Text ist im Übrigen komplett in der Du-Form verfasst.

Ein Mac Mini von 2009

Wieder einige Tage später gab es wieder einen Rückruf. Die Entwicklungsabteilung hat sich zurückgemeldet. Die Lösung. Es gibt keine. Die Kontaktierung des neuen Besitzers ist nicht möglich und ein Zurücksetzen des Rechners in den Verloren-Modus, damit sich der Käufer meldet, erscheint mir doch etwas unethisch. Damit meldet sich der Rechner immer wieder in meinem Find My-Konto an, obwohl der Rechner eigentlich nicht mit mir verknüpft ist.

So bliebt nur noch die vom Support vorgeschlagene Lösung zu warten bis das Gerät seinen Geist aufgibt und mit einer neuen Apple-ID verknüpft wird. So etwas wie eine Blacklist, auf Kundenwunsch für bestimmte Geräte, ist hier wohl leider nicht vorgesehen. Angenehm war allerdings wie professionell der Support bei Apple organisiert ist und das man doch das Gefühl hat, dass versucht wird einem zu helfen. In diesem Fall leider erfolglos.