Es ist Final Space Time bei NetFlix

Der Überraschungserfolg vor Weihnachten auf NetFlix: Final Space!

Die Animationserie handelt von Gerry und seinen Freunden, die das Ende des Universums abwenden wollen. Es gibt nur ein Problem: Gerry ist ein Kindskopf, der zu 5 Jahren Raumschiffknast verurteilt wurde, weil er eine Takobude in Luft gejagt hat… ja , ok, … UND 42 Raumschiffe zerstört hat.

Die Serie zu sehen, wird wohl niemand bereuen, vorsichtig optimistisch ausgedrückt, verschlingt man Sie am Stück. Das fällt nicht schwer, da es nur 10 Folgen sind. (Ist irgendwie komisch mit Netflix und der Staffellänge, oder?) Leider gibt es nur Staffel 1 auf NetFlix, aber Staffel 2 ist für 2019 angesagt worden \o/

Wenn Ihr noch was sucht um Zeitlücken zu füllen: Final Space! und grüßt Kevin, der hat’s nötig 😉

Wie man in Java die lokale IP ermittelt

Da das Ermitteln der lokalen IPs über alle Interface angeblich Voodoo ist, hier mal eine Lösung ohne Voodoo 🙂

import java.net.InetAddress;
import java.net.NetworkInterface;

                try {
 			Enumeration networkInterfaces = NetworkInterface.getNetworkInterfaces();
 			while (networkInterfaces.hasMoreElements()) {
 		    	     NetworkInterface networkInterface = (NetworkInterface)networkInterfaces.nextElement();
 		    	     Enumeration ips = networkInterface.getInetAddresses();
 		    	     while ( ips.hasMoreElements() ) {
 		    		// InetAddress ipa = (InetAddress)ips.nextElement();
 		    		String ip = ((InetAddress)ips.nextElement()).toString();
 		    		ip = ip.replaceAll("/", "").replaceAll("%.*$","");
 		    		... HIER mit der IP was machen ... 
 		    	      }
 			}
 		} catch (Exception e) {
 			e.printStackTrace();
		}

Eine kleine Anmerkung dazu. Das ist ja der Cast auf InetAddress, es werden an der Stelle aber IPv4 und IPv6 Objekte zurück gegeben, die sich eben ohne Cast-Fehlermeldung nur als InetAddress verarbeiten lassen. Wenn Ihr wissen wollt, was es ist, ohne eine RegEx über das Ergebnis zu legen, lest einfach die Klasse des Objekts aus:

InetAddress ipa = (InetAddress)ips.nextElement();
log( ipa.getClass().getName() );
String ip = ipa.toString().replaceAll("/", "").replaceAll("%.*$","");

Anstatt getName() kann man auch getSimpleName() oder getType() benutzen, ganz wie es Euch gefällt.

Alternative:

		Enumeration<NetworkInterface> networkInterfaces = NetworkInterface.getNetworkInterfaces();
		while (networkInterfaces.hasMoreElements()) {
		   	NetworkInterface networkInterface = (NetworkInterface)networkInterfaces.nextElement();
		   	
		   	for (InterfaceAddress address : networkInterface.getInterfaceAddresses()) {
		   	    String ip = address.getAddress().toString();
	   		    int netmask = address.getNetworkPrefixLength();
	   		    log( netmask + ip );
		   	    ip = ip.replaceAll("/", "").replaceAll("%.*$","");
	   		}
		}

Da bekommt man auch gleich die Netzwerkmaske mit, ist wohl der bessere Weg 🙂

Neues von LAHA

Kleines Update zum kleinen heimischen Audioverteilprojekt. Wie ich hier: Multi-Netzwerk-Lautsprecher mit Linux bereits nach einige Stunden zeigen konnte, klappt das mit dem latenzgleichen Abspielen von Audio im Netz bereits mit Linux Bordmitteln.

Endlich mal wieder was los…

In einer abendlichen Dauerprogrammiersession habe ich in wenigen Stunden eine Client-Server Testsuite gebaut, die bereits funktional ist. Wenn ich von Client rede meine ich die Abspieleinrichtung, die aber als Serverkomponente ausgelegt ist. Bitte merken um Verwirrungen vorzubeugen.

Die Kommunikationsarchitektur kommt auch mit einer rudimentären Anti-kaper-Funktion daher, so daß WLAN Gäste den Clienten nicht übernehmen können. Das beugt z.b. dem Problem vor, daß in einem Netz vielleicht mehr als eine Control-Anwendung läuft. Vielleicht wollen ja die Kinder was anderes hören als die Eltern 😉

Die Kontrolleinheit

Was jetzt noch neben einigen Funktionen fehlt, ist das Kontroll-Center. Das Kontroll-Center sollte ein ansprechendes Äußeres haben, aber ob das mit Swing was wird .. fraglich 😉 Ich lasse mich mal überraschen. Das war ein implizites Ja, wie in Java 😉 Kein rumpliges Python, kein PHP, NodeJs oder Ruby.. Java. Wieso?
A) machts was es soll und B) bekommt Ihr raus, wenn der Source released wird 😀

PS: Wofür LAHA steht, wird später verraten 😉