seeseekey.net - Invictus Deus Ex Machina

Die seit einigen Jahren in iOS integrierte Aktivierungssperre schützt das Gerät im Falle eines Diebstahles. Allerdings sollte diese entfernt werden bevor das Gerät verkauft oder anderweitig weitergegeben wird. Seit iOS 10.3 hat sich das Verhalten zur Deaktivierung der Aktivierungssperre gegenüber älteren Versionen leicht geändert.

Nach der Bestätigung wird das Gerät abgemeldet

Zur Deaktivierung der Aktivierungssperre auf dem Gerät müssen die Einstellungen geöffnet werden und dort auf den Namen (erster Eintrag in den Einstellungen) geklickt werden. Auf der rechten Seite findet sich unten nun der Button Abmelden. Die Abmeldung muss mit dem Apple-ID-Passwort bestätigt werden und anschließend wird die Aktivierungssperre für das Gerät deaktiviert.

Vor vielen Jahren spielte ich mein erstes Point & Click Adventure mit dem Namen Maniac Mansion auf dem Commodore 64. Leider bin ich in all der Zeit nicht dazu gekommen den Nachfolger Day of the Tentacle zu spielen. Dank der Remastered Version, welche unter anderem für iOS erschien, konnte ich das nun endlich nachholen.

Das Tentakel will die Weltherrschaft an sich reißen

Die Geschichte des Spieles ist schnell erzählt. Das lila Tentakel trinkt giftige Industrieabfälle und mutiert dadurch und möchte plötzlich die Weltherrschaft an sich zu reißen. Dabei spielt man nicht nur in der Gegenwart, sondern auch in der Zukunft und der Vergangenheit und muss die Ereignisse so ändern das man schlussendlich, durch die geschickte Manipulation der Zeitlinie, zum Ziel kommt. Im Original Day of the Tentacle gab es bei Ed einen Computer auf dem man den Vorgänger Maniac Mansion spielen konnte. Auch auf der iOS-Version ist dieses Gimmick enthalten.

Der Computer bei Ed ermöglicht das Spielen von Maniac Mansion

Im Gegensatz zum Originalinterface, das in der Remastered-Variante ebenfalls genutzt werden kann, ist das neue Interface an die zeitlichen Gepflogenheiten von heute angepasst und lässt sich auch auf dem iPad gut spielen.

Wer auf der Suche nach einigen Stunden Ablenkung in der guten alten Zeit™ ist, der sollte sich Day of the Tentacle zu Gemüte führen.

Es reicht ein Moment der Unaufmerksamkeit und schon fällt das geliebte Smartphone in Zeitlupe in Richtung des harten Fußbodens. Danach ist das Display gebrochen oder das Gerät ist anderweitig beschädigt. Nun stellt sich die Frage wo man das ganze reparieren kann.

kaputt.de

Hierbei hilft die Seite kaputt.de. Auf der Seite, welche sie als Vergleichsportal für Reparaturlösungen versteht, kann man nach den entsprechenden Dienstleistern in der Umgebung suchen und die Preise miteinander vergleichen. Neben der Option das Gerät beim Dienstleister vorbeizubringen, gibt es in bestimmten Städten auch die Möglichkeit den Reparatur-Dienstleister zu sich nach Haus kommen zu lassen. Was man bei einer Reparatur allerdings berücksichtigen sollte, ist dass für bestimmte Geräte wie z.B. die Smartphones von Apple, keine Originalersatzteile auf dem Markt verfügbar sind und somit nur Ersatzprodukte verbaut werden können.

Nutzt man einen mobilen Mac so fragt man sich eventuell wie es mit dem eingebauten Akku aussieht. Die App coconut Battery kann diese Fragen beantworten. Die App liefert detaillierte Informationen über Ladezyklen, Seriennummer, Firmware des Akkus und darüber hinaus noch viele weitere Informationen.

Die Informationen über ein MacBook Air aus dem Jahre 2012

Neben der Auswertung des Akkus von macOS-Geräten, ist auch eine Auswertung von iOS-Geräten in der App möglich. Allerdings funktionierte diese Auswertung nicht, da dass iOS-Gerät nicht erkannt wurde. Heruntergeladen werden kann die kostenlose App über die Webseite des Herstellers.

Wenn man einen ESP8266 programmiert, so wird man dessen GPIOs nutzen um externe Dinge wie Sensoren oder ähnliches anzusteuern bzw. auszulesen. Versucht man das gleiche mit einem NodeMCU-Board wird man feststellen das die Pinbelegung des Boards nicht mit der vom ESP8266 übereinstimmt.

Das NodeMCU-Board in Version 3

Wenn man die Pinbelegung des NodeMCU-Boards mit der vom ESP8266 in Reinform vergleicht, ergibt sich folgendes Bild:

NodeMCU D0 zu ESP8266 16
NodeMCU D1 zu ESP8266 5
NodeMCU D2 zu ESP8266 4
NodeMCU D3 zu ESP8266 0
NodeMCU D4 zu ESP8266 2
NodeMCU D5 zu ESP8266 14
NodeMCU D6 zu ESP8266 12
NodeMCU D7 zu ESP8266 13
NodeMCU D8 zu ESP8266 15
NodeMCU D9 zu ESP8266 3
NodeMCU D10 zu ESP8266 1

Bei der Entwicklung über die Arduino IDE braucht man allerdings keine Sorgen machen. Wird hier das NodeMCU-Board genutzt, so findet man definierte Konstanten von D0 bis D10 um die NodeMCU-GPIOs direkt anzusprechen. Einige der Pins haben auf dem Board eine besondere Funktion:

D1 (I2C Bus / SCL (Clock-Signal))
D2 (I2C Bus / SDA (Datenleitung))
D4 (wie LED_BUILTIN, aber invertierte Logik)
D5 (SPI Bus SCK (Clock-Signal))
D6 (PI Bus MISO)
D7 (SPI Bus MOSI)
D8 (SPI Bus SS (CS))
D9 (Serielle Konsole RX)
D10 (Serielle Konsole TX)

Wenn man das Android Studio unter macOS installiert hat, wird man unter Umständen feststellen dass man es nicht ohne Rückstände wieder deinstallieren kann. Es reicht nicht die Android Studio App zu löschen, stattdessen müssen ein paar Ordner mehr angefasst werden. Wer es sich einfach machen möchte kann folgende Kommandos im Terminal eingeben:

rm -Rf /Applications/Android\ Studio.app
rm -Rf ~/.AndroidStudio*
rm -Rf ~/.gradle
rm -Rf ~/Library/Preferences/AndroidStudio*
rm -Rf ~/Library/Preferences/com.google.android.*
rm -Rf ~/Library/Preferences/com.android.*
rm -Rf ~/Library/Application\ Support/AndroidStudio*
rm -Rf ~/Library/Logs/AndroidStudio*
rm -Rf ~/Library/Caches/AndroidStudio*

Zusätzlich kann man die SDK-Tools und die virtuellen Maschinen für den Android Emulator löschen. Allerdings sollte man hier sicher sein, das sie von keiner anderen Anwendung wie z.B. dem Xamarin Studio noch benötigt werden:

rm -Rf ~/.android
rm -Rf ~/Library/Android*

Thunderbird verfügt seit vielen Versionen über eine globale Suche. Unter Umständen kann es passieren das diese Suche nicht mehr richtig funktioniert. Dies äußert sich in einer langsamen Suche oder dadurch das, sobald man Suchergebnisse aufruft, diese nicht mehr existent sind. Um diese Fehler zu beheben muss der globale Index neu aufgebaut werden. Dazu muss Thunderbird beendet werden und der Profil-Ordner aufgesucht werden. Je nach Betriebssystem liegt dieser in unterschiedlichen Ordnern:

Linux: ~/.thunderbird/xxx.default
macOS: ~/Library/Thunderbird/Profiles/xxxxxxxx.default/
Windows 2000/XP: C:\Dokumente und Einstellungen\%Benutzername%\Anwendungsdaten\Thunderbird\Profiles\xxx.default
Windows Vista/7; C:\User\%Nutzername%\AppData\Roaming\Thunderbird\Profiles\xxx.default

Im Profilordner befindet sich eine Datei mit dem Namen global-messages-db.sqlite. Diese Datei musst gelöscht werden. Anschließend kann Thunderbird wieder gestartet werden. Der Indizierungsvorgang wird dann neu begonnen. Den aktuellen Fortschritt der Indizierung kann unter Extras -> Aktivitäten angesehen werden. Je nach Größe des Profils kann die Neuindizierung einige Zeit in Anspruch nehmen.

Inspiriert vom Golem.de Temperatur im Büro-Projekt habe ich einen NodeMCU genutzt um die Temperatur zu messen. Auf der Teileliste stehen dabei folgende Bauteile:

  • NodeMCUv3-Board
  • Temperatursensor DS18B20
  • Widerstand (4,7 kOhm)
  • Verbindungskabel (6x)

Diese Teile müssen nun wie folgt auf dem Board angebracht werden:

Die fertige Schaltung

Anschließend kann das NodeMCU-Board mit dem passenden Programmcode bestückt werden:

#include <OneWire.h>
#include <DallasTemperature.h>

OneWire oneWire(D2);
DallasTemperature sensors(&oneWire);
DeviceAddress thermometer;

void setup(void) {
  Serial.begin(115200);

  sensors.begin();
  sensors.getAddress(thermometer, 0); 
  sensors.setResolution(thermometer, 12);
}

void loop() {

  Serial.println("Read temperature...\n");
  sensors.requestTemperatures(); 
  
  float temperature = sensors.getTempC(thermometer); 
  Serial.println(temperature);

  delay(5000);
}

In dem Programm wird zuerst eine One-Wire-Verbindung definiert und in der setup-Methode die Verbindung konfiguriert. Anschließend wird in der loop-Methode alle fünf Sekunden die Temperatur ausgelesen und in die serielle Konsole geschrieben.

Das NodeMCU-Board ist ein Entwicklungsboard für den ESP8266 in der ESP-12er Variante. Durch seinen günstigen Preis kann es direkt in Projekte eingebaut werden. Wenn man ein solches Projekt in der Elektronik-Software Fritzing dokumentieren möchte, benötigt man das entsprechende Bauteil in Fritzing. Es existieren zwar einige der ESP8266-Varianten, aber das NodeMCU-Board fehlt in der Standardausstattung.

Das NodeMCU Bauteil wurde Fritzing hinzugefügt.

Allerdings ist es kein Problem neue Bauteile zu Fritzing hinzuzufügen. Für das NodeMCU-Board gibt es Vorlagen für die Version 1 und die Version 3 des Boards. Wichtig ist hierbei die fzpz-Datei. Nachdem diese heruntergeladen wurde, kann sie in Fritzing per Drag & Drop installiert werden. Anschließend ist das neue Bauteil installiert und kann genutzt werden. Wenn man Fritzing beendet, wird nachgefragt ob das neue importierte Bauteil dauerhaft behalten werden soll. Hier sollte mit Ja geantwortet werden.

Für ein kleineres Projekt habe ich vor einiger Zeit eine HTML5-Single-Page-Application entwickelt und stand dann vor dem Problem wie ich unterschiedliche Views innerhalb dieser Seite realisiere. Da ich möglichst ohne schwerfälliges Framework auskommen wollte, habe ich mich für eine Lösung mittels jQuery entschieden. Im HTML habe ich dazu mehrere Views definiert:

<div id="options" class="widget" style="display: none">
</div>

<div id="game" class="widget">
</div>

Der Inhalt des div-Elements mit der Id options ist dabei standardmäßig ausgeblendet. Nun kann die Ansicht der beiden Views mittels der Funktion switchView gewechselt werden:

switchView() {
	  
    if(this.activeView==this.Views.Game) {
        $("#game").css({"display": "none"});
        $("#options").css({"display": "block"});
        this.activeView = this.Views.Options;
    }
    else if (this.activeView==this.Views.Options) {
        $("#options").css({"display": "none"});
        $("#game").css({"display": "block"});
        this.activeView = this.Views.Game;
    }
}

In der Funktion wird das CSS der jeweiligen div-Elemente manipuliert. Dadurch wird die Sichtbarkeit der Blöcke gewechselt und man hat eine einfache View Umschaltung realisiert.