LoadingCache der Guava-Bibliothek nutzen

Für Java existiert eine Bibliothek mit dem Namen Guava. Diese, von Google entwickelte, Bibliothek bietet gewisse Basisfunktionalitäten, welche vom Java-Framework nicht abgedeckt werden. Eine dieser Funktionalitäten ist der LoadingCache. Bei diesem handelt es sich um einen Cache, welcher dazu genutzt werden kann die Ergebnisse zeitintensiver Operationen zwischenzuspeichern. Daneben verfügt er über die Informationen wie er die entsprechenden Daten bezogen werden. Um Guava zu nutzen muss die Bibliothek z.B. mittels Maven eingebunden werden. Dazu muss die pom.xml-Datei um eine Abhängigkeit erweitert werden:

<dependency>
	<groupId>com.google.guava</groupId>
	<artifactId>guava</artifactId>
	<version>27.0-jre</version>
</dependency>

Anschließend kann Guava in dem betreffenden Projekt genutzt werden. In diesem Beispiel soll der Cache dazu dienen Anfragen an einen Webservice zu cachen. Der Webservice liefert Daten zurück, welche in einem Objekt vom Typ BookData gespeichert werden:

class BookData {

	public final String title;
	public final String description;
	public final double price;

	public BookData(String title, String description, double price) {
		this.title = title;
		this.description = description;
		this.price = price;
	}
}

Innerhalb der Anwendung übernimmt die Methode getBookData die Aufgabe, diese Daten vom Webservice zu beziehen:

public BookData getBookData(String isbn) {
	return bookdataService.getData(isbn);
}

Der LoadingCache von Guava ist technisch betrachtet eine Map. Bei der Initialisierung ist dies ersichtlich:

LoadingCache<String, BookData> books = CacheBuilder.newBuilder()
		.maximumSize(1000)
		.expireAfterWrite(7, TimeUnit.DAYS)
		.build(
				new CacheLoader<String, BookData>() {
					public BookData load(String isbn) {
						return getBookData(isbn);
					}
				});

Beim Anlegen des Cache können unterschiedliche Parameter wie die maximale Größe, die Zeit ab der ein Eintrag erneuert wird und der CacheLoader definiert werden. Der CacheLoader implementiert die Methode load, welche die entsprechenden Daten vom Webservice bezieht. Nachdem der LoadingCache definiert ist, kann die Map normal genutzt werden:

BookData bookData = books.get("9783736889842");

Im Hintergrund wird der Wert, wenn vorhanden, aus dem Cache bezogen. Ist dies nicht der Fall wird stattdessen der CacheLoader genutzt, welcher in diesem Beispiel einen Request an den Webservice sendet und das Ergebnis wieder im Cache hinterlegt. Der LoadingCache selber beschränkt sich auf die Laufzeit der Applikation und wird nicht persistiert.

Google Fonts herunterladen

Im Rahmen der DSGVO wird unter anderen Datensparsamkeit gefordert; bei vielen Webseiten ist dies leider nicht immer gegeben. So findet häufig die Einbindung der Google Fonts vor. Jetzt ist es per se nicht verwerflich Google Fonts zu nutzen, allerdings sollten diese Fonts lokal eingebunden werden. Wenn dies nicht geschieht und sie direkt über das CDN von Google eingebunden werden, überträgt man bei jedem Aufruf entsprechende Daten an Google.

fonts.google.com

Um dies zu unterbinden, sollte die gewünschte Schriftart heruntergeladen werden und anschließend lokal in die eigene Webseite bzw. das eigene Projekt eingebunden werden. Hierfür bietet sich der google-webfonts-helper von Mario Ranftl an. Dort wählt man die gewünschte Schriftart aus und kann diese anschließend herunterladen. Neben dem eigentlichen Font wird auch entsprechendes CSS zu Einbindung bereitgestellt. Genutzt werden kann der google-webfonts-helper nicht nur über die Weboberfläche, sondern auch über eine entsprechende REST-API.

Der google-webfonts-helper

Der Quelltext des google-webfonts-helper kann über GitHub bezogen werden. Lizenziert ist das Projekt unter der MIT Lizenz und damit freie Software.

Werbeblocker mal anders

Werbeblocker sind wahrscheinlich in einem Großteil der Browser anzutreffen. Anders lässt sich das Internet in vielen Fällen nicht mehr genießen. Neben den gewöhnlichen Werbeblockern wie uBlock Origin, existieren noch eine Reihe von spezialisierten Werbeblockern wie z.B. AdNauseam.

AdNauseam
Preis: Kostenlos

Im Gegensatz zu anderen Werbeblockern geht AdNauseam einen ungewöhnlichen Weg; die Erweiterung klickt die Anzeigen wahllos im Hintergrund an und versucht so die Profilbildung zu erschweren. Das erschwert natürlich auch das Geschäftsmodell der Werbung, so das Google die Erweiterung als Malware einstufte und sie aus Chrome verbannte. Im Firefox kann die Erweiterung dagegen weiterhin problemlos installiert werden.

adnauseam.io

Technisch gesehen handelt es sich bei AdNauseam um einen Fork von uBlock Origin und ist ebenfalls unter der GPL in Version 3 lizenziert. Das offizielle Repository ist auf GitHub zu finden. Daneben existiert eine offizielle Seite des Projektes unter adnauseam.io.

Kontrastverhältnisse im Vergleich

Um eine gute Lesbarkeit auf einer Webseite zu erreichen, ist es wichtig ein sinnvolles Kontrastverhältnis zwischen Hintergrund und Schrift zu wählen. Ist dieses Verhältnis zu schlecht, leidet die Lesbarkeit der Texte. Große Webkonzerne wie Google und Apple gehen hierbei teilweise mit schlechtem Beispiel voran.

leaverou.github.io/contrast-ratio/

Nach der WCAG 2.0 Richtlinie wird im Normalfall ein Kontrastverhältnis von mindestens 4,5:1 gefordert. Ob die eigene Webseite diesem Kontrastverhältnis entspricht, kann man mit dem contrast ratio Tool testen, welches auf GitHub unter leaverou.github.io/contrast-ratio/ zu finden ist. Der Quelltext, der unter der MIT-Lizenz lizenzierten Software, ist ebenfalls auf GitHub zu finden.

nslookup unter Windows mit anderem DNS-Server durchführen

Möchte man zu einer Domain die IP-Adresse und weitere DNS-Informationen ermitteln kann man unter Windows das Tool nslookup nutzen. Ein einfacher Aufruf sieht dabei so aus:

nslookup example.com

Hierbei wird der DNS-Server genutzt welcher an dem genutzten Rechner eingestellt ist. Allerdings kann auch ein abweichender Server definiert werden. Dazu muss nach der abzufragenden Domain der gewünschte DNS-Server angegeben werden:

nslookup example.com 8.8.8.8

In diesem Fall wird der Google eigene DNS-Server mit der IP 8.8.8.8 genutzt. Die Antwort auf diese Anfrage sieht exemplarisch so aus:

Nicht autorisierende Antwort:
Server:  google-public-dns-a.google.com
Address:  8.8.8.8

Name:    example.com
Addresses:  2606:2800:220:1:248:1893:25c8:1946
          93.184.216.34