NodeMCU als Bauteil in Fritzing hinzufügen

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.

Unterschiedliche Views in einer Single Page Application

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.

Globales @Before in JUnit

Wenn man unter JUnit für mehrere Tests einige vorbereitende Schritte benötigt, so kann man dafür die @Before Annotation nutzen:

@Before
public void setup() {
    // Prepare something
}

Das Problem an dieser Methode ist, das dass ganze auf eine Klasse beschränkt ist. Benötigt man die vorbereitenden Schritte in mehreren Klassen, so muss man sich unter JUnit 4 anders behelfen. Dort führt die Lösung über eine abstrakte Klasse:

public abstract class TestBase {
    @Before
    public void setup() {
        // Prepare something
    }
}

Von dieser Klasse können die Klassen mit den Testfällen abgeleitet werden. Allerdings muss man beachten, das es hierbei zu doppelter Initialisierung kommen kann. Unter JUnit 5 kann man dies nun wesentlich einfacher lösen. Dort gibt es die neue Annotation @BeforeAll:

@BeforeAll
public void setup() {
    // Prepare something
}

Mit diese Annotation wird die Initialisierung vor der Ausführung der Tests durchgeführt.

Größe des Flashspeichers beim NodeMCU ermitteln

Das auf dem ESP8266 basierendem Entwicklungsboard NodeMCU gibt es unterschiedlichen Varianten, die sich unter anderem durch die Größe des Flashspeichers unterscheiden. Möchte man nun ermitteln welche Größe der Speicher beim eigenen NodeMCU-Board hat kann man dies mit einem Programm aus einem der ESP8266-Repositories sehr unkompliziert ermittelt.

Die Größe des Flashspeichers wird über die serielle Schnittstelle ausgegeben

Nachdem die Arduino IDE mit dem Programm geöffnet wurde und das Programm auf das NodeMCU-Board geflasht wurde, kann die Ausgabe über die serielle Schnittstelle ausgelesen werden. Dazu muss der serielle Monitor, im Menü unter Werkzeuge -> Serieller Monitor zu finden, aktiviert werden. Wichtig ist es, dass hier die korrekte Baudrate eingestellt wird.

Webseiten aus der Wayback Machine herunterladen

Wenn man eine nicht mehr verfügbare Webseite aufrufen möchte oder einen älteren Stand einer Webseite benötigt ist die Wayback Machine vom Internet Archive stets zur Stelle. Das Internet Archive ist eine gemeinnützige Organisation, welche seit 2007 offiziell als Bibliothek vom US-amerikanischen Bundesstaat Kalifornien anerkannt ist.

archive.org/web/

Manchmal benötigt man einen Snapshot einer bestimmten Version der Webseite und möchte diesen nicht umständlich über das Webinterface der Wayback Machine herunterladen. In diesem Fall kann sich des Tools wayback-machine-downloader bedienen. Dieses Tool, welches in Ruby geschrieben ist, kann einfach über den Ruby-Paketmanager installiert werden:

gem install wayback_machine_downloader

Anschließend kann das Tool genutzt werden:

wayback_machine_downloader http://example.com

Damit wird der letzte gesammelte Snapshot heruntergeladen. Daneben existieren Option wie die –to Optionen um den Snapshot nur aus einem bestimmten Zeitraum zu holen. Da ich mehrere Snapshots einer Seite benötigte habe ich das ganze in ein Skript gegossen:

#sh

for i in `seq 127 1`;
  do
    # Define date postfix
    DATE_POSTFIX="28120000";
			
    # Linux (Linux date)
    #DATE=`date +%Y%m -d "$i month ago"`    
				
    # macOS (BSD date) 
    DATE=`date -j -v-${i}m +%Y%m` 
    
    # Add date postfix
    DATE=$DATE$DATE_POSTFIX
				
    # Create folder for snapshot
    mkdir $DATE
    cd $DATE

    # Download snapshot
    wayback_machine_downloader http://example.com --to $DATE

    # Leave folder
    cd ..
  done  

In diesem Skript wird durch das Skript 127 Monate in die Vergangenheit gereist und ein Snapshot der Webseite heruntergeladen. Das ganze läuft so lange durch bis das Ende der Schleife erreicht ist. So erhält man pro Monat einen Snapshot. Der Wayback Machine Downloader, dessen Quelltext auf GitHub zu finden ist, ist unter der MIT Lizenz lizenziert und damit freie Software.