Da isser ja

Eigentlich hätte mein Entwicklertipp der Woche zu Python schon am Mittwoch veröffentlicht werden sollen, denke ich. Die Webseite bei LinkedIn Learning (LiL) hatte für den Kurs auch eine Aktualisierung am Mittwoch angezeigt, aber es wurde noch der Tipp von letzter Woche als neuster Tipp angezeigt. Da war wohl mit der Freigabe der etwas schiefgegangen, aber jetzt ist der neue Tipp da. Es geht diese Woche um variable Parameter einer Funktion.

Buch-Zeit

Soweit ich mich erinnere, wollte ich schon als Kind Schriftsteller bzw. Autor oder Journalist werden. Ich habe über die Jahre zwar nie – wie erträumt – Science Fiction-, Fantasy- oder sonstige Prosa-Bücher geschrieben, aber mittlerweile fast mehr IT-Fachbücher als ich zählen kann – von den ganzen zusätzlichen Schulungsunterlagen und Zeitungsartikeln ganz zu schweigen. Mein Regal mit meinen Belegexemplare bricht fast auseinander, obwohl die Belegexemplare nicht vollständig sind.

In der letzten Zeit hat das Schreiben von Büchern aber  nachgelassen. Stattdessen konzentriere ich mich verstärkt auf Videoproduktionen.

Aber die nächsten Wochen habe ich Freiraum und da gehe ich die Überarbeitung von einem Buch und einer Schulungsunterlage an. Ich werde also mal wieder als Autor aktiv.

Das Buch ist aus 2013/2014 und braucht dringend ein paar Updates und bei der Schulungsunterlage geht es um ein CMS, für das nun nach einigen Jahren Verzögerung wohl doch die neue Version endlich erscheinen wird.

 

WLAN Mesh & WLAN-Brücke mit dem Repeater

Nachdem ich eine Weile mit der neuen Fritz!Box 7590 und dem Fritz Repeater 2400 experimentiert habe, habe ich eine Position für den Repeater gefunden, bei dem der WLAN Mesh im ganzen Haus eine halbwegs stabile Performance liefert. Allerdings erreiche ich gerade im hinteren Teil meines Büros auch im optimalen Fall nur etwa 80% der theoretisch möglichen Internet-Geschwindigkeit von dem neuen Glasfaseranschluss. Das hat mich gewurmt, denn ich habe den Anspruch, dass mir im Haus der Alpha-Zugang zusteht. Ich kann es nicht akzeptieren, dass im Wohnzimmer oder der Küche das Internet schneller ist, nur weil das im Erdgeschoss und mein Büro der 2. Stock ist. Wo kommen wir denn da hin?

Nun hat der Repeater auch einen Ethernet-Anschluss und damit kann man eine sogenannte LAN-Brücke aufbauen, bei der Router und Repeater per Ethernetkabel verbunden werden und dann strahlen beide das WLAN ab. Bei einem Mesh kann man damit wohl richtig gut die Ausdehnung des WLAN erweitern, wenn die Geräte weit genug auseinander gestellt werden.

In meinem Fall habe ich aber eine sogenannte WLAN-Brücke aufgebaut. Dabei sind Router und Repeater wie vorgesehen per WLAN gekoppelt, aber an den Repeater schliesst man per Ethernet ein Gerät an. Das habe ich mit meiner Gigabit Switch gemacht und an die wie gehabt alle Geräte im Büro per Kabel. Resultat – ich brauche keine weitere WLAN-Adapter und zudem liefert diese Konstruktion im Büro die maximale Internet-Geschwindigkeit. So gut wie kein Verlust und auch die Latenz ist super. Router und Repeater sind auch über WLAN quasi ohne Verlust verbunden (die beiden Geräte sind ja explizit aufeinander abgestimmt) und durch das schnelle Ethernet geht das verlustfrei an die Endgeräte.

So ist das nach meiner derzeitigen Auffassung eine perfekte Anordnung für meine Zwecke und die vergleichsweise lahmen 50 Mbit/s bzw. 10 Mbit/s von dem neuen Glasfaseranschluss fühlen sich extrem fix an. Auch wenn die reinen Zahlen dagegen sprechen – das ist gefühlt fast so schnell wie mein DSL100-Anschluss im Eppsteiner Büro. Im Moment bin ich voll zufrieden damit – was ein bisschen entschädigt für den bisherigen Ärger mit dem Glasfaseranschluss.

Habemus Glasfaser

Ich habe schon nicht mehr daran geglaubt, aber seit heute gegen 12:00 Uhr gibt es an meinem Standort in Bodenheim funktionierend einen Glasfaseranschluss. Die Sache war bisher eine wahre Horrorstory. Im November 2019 (!) habe ich den Vorvertrag mit EWR abgeschlossen. Es war dabei klar, dass es noch bis August 2020 dauern wird, bis die Glasfaserleitungen verlegt sind. Das war mir egal, weil mein damaliger Providervertrag erst zum März 2021 gekündigt werden konnte. Aber dass die Sache sich dann noch ewig hinziehen würde und sich eine Panne an die nächste reihen sollte, hätte ich nie erwartet.

Die Kabel kamen erst im Januar 2021 im Keller an, aber immerhin noch 2 Monate vor der geplanten Freischaltung. Aber dann wurden wir einfach im Regen stehen lassen. Nichts ist passiert, der alte Providervertrag, der von EWR gekündigt werden sollte, wurde nicht rechtzeitig gekündigt und bei uns im Haus ist ein nicht weitergegangen. Mehrere E-Mails an EWR haben keine Fortschritt gebracht.

Irgendwann Ende März bekamen wir nach vielen, vielen E-Mails an EWR ein Anschlusskit, um aus dem Keller die Glasfaserleitung ins Haus zu bekommen. Das hat Anfang April ein Elektriker erledigt, den wir selbst beauftragt hatten. Aber das Zusammenflicken der beiden Enden durfte er nicht machen und nach zig weiteren E-Mails an EWR wurden dann endlich letzte Woche die Enden verknotet.

Ob damit alles fertig wäre, habe ich die Techniker gefragt. Antwort – Ja.

Also Router für Glasfaser bestellt und erst beim Versuch des Anschließens bemerkt, dass da noch ein Glasfasermodem fehlt. Ich bin Softwareexperte und auf Hardwareseite eher unbedarft. Ich dachte ernsthaft, dass die neue Fritz!Box 7590, die ich mir angeschafft hatte, weil Glasfaer-ready das erledigt. Ist nicht der Fall und EWR hatte vergessen, ein Glasfasermodem anzuschließen.

Also wieder eine E-Mail an EWR und mittlerweile in einem alles andere als freundlichen Ton. Aber das scheint gewirkt zu haben. Gestern (Feiertag!!) kam ein Anruf, dass heute das Glasfasermodem nachgeliefert wird. Gegen 14:00 Uhr. 11:30 Uhr hat es geklingelt und ein Monteur war da und hat das Ding montiert. 14:00 Uhr hat es wieder geklingelt und ein weiterer Monteur wollte das Glasfasermodem anbringen. Der wusste nichts von Monteur 1! Ich habe den Eindruck, bei der Projektleitung von EWR weiß die linke Hand nichts von der rechten Hand. Unglaublich. Was sich EWR bei meinem Anschluss leistet, spottet jeder Beschreibung. Ich habe das Gefühl, da gibt es kein Pflichtenheft oder eine Checkliste oder ein Ticketsystem. Mittlerweile habe ich den Eindruck, dass der Bruder von dem Freund einer Tochter die „Planung“ nebenher macht. So wie bei manchen Webseiten.

Es muss doch klar sein, in welcher Reihenfolge welche Schritte durchzuführen sind. Wenn schon die verschiedenen Technikergruppen keine Ahnung von den Aktionen der anderen Gruppen haben. Es kann nicht meine Aufgabe als Kunde sein, EWR zu sagen, welche technischen Maßnahmen durchzuführen sind. Ich bin Laie. Zumindest als Kunde, auch wenn ich als IT-Spezialist definitiv mehr Kenntnisse habe als ein „normaler“ Anwender. Aber einerseits bin ich bekanntlich auf die Softwareseite spezialisiert und kenne Hardware nur peripher. Andererseits ist es eben wie gesagt nicht meine Verpflichtung, den Workflow von EWR zu kontrollieren. Vor allen Dingen ist der Informationsfluss von EWR zu mir als Kunde auch absolut mangelhaft. In Eppstein habe ich aktuell DSL100 und brauche eigentlich kein Glasfaser. Aber da der Rest der Strasse da mitmacht, habe ich mich angeschlossen. Von der dort zuständigen Deutschen Glasfaser bekomme ich im Vorfeld detailliert die Arbeitsschritte mitgeteilt, die sie ausführen. Das geht ab wie Schnitts-Katze. Ich hatte schon befürchtet, dass ich in Eppstein – wo ich es nicht brauche – früher den Glasfaseranschluss habe als in Bodenheim, wo mein DSL16 komplett an der Belastungsgrenze ist.

Aber sei es drum – nachdem das Glasfasermodem angeschlossen war, ging der Anschluss. Allerdings war die Einrichtung des Routers alles andere als trivial, denn es gab von EWR keinerlei Informationen, welche Daten man im Router einzurichten hatte. Vor allen Dingen die VLAN-ID hätte ich niemals erraten. Vermutlich nicht einmal herausbekommen, dass man die vorgeben muss. Hätte mein Nachbar nicht vor einigen Wochen mit der gleichen Hardware seinen Glasfaseranschluss eingerichtet und mir eine Anleitung geschickt, wäre ich voll aufgelaufen. Das hatte er im Internet gefunden und die Infos hätte ich von EWR erwartet:

  • Anschluss an externes Modem oder Router
  • Internetverbindung selbst aufbauen
  • Zugangsdaten benötigt? Nein
  • Verbindungseinstellungen ändern
    • VLAN für den Internetzugang verwenden: Ja
      • VLAN-ID: 132
    • IP-Einstellungen:
      • IP-Adresse automatisch über DHCP beziehen: Ja
      • DHCP-Hostname: fritz.box

Aber nun läuft die Sache und nach und nach muss ich alle Geräte in meinem lokalen Netzwerk samt den Telefonen umstellen. Denn mein alter Providervertrag ist immer noch aktiv und vor allen Dingen laufen darüber weiter die Telefonnummern. Die Story wird also weiter gehen – auch in Hinsicht darauf, wer nur den überflüssigen Providervertrag bis zum Ende der Laufzeit zahlt. Denn die Kündigung des alten Vertrags hat nach dem Glasfaserabschlussvertrag EWR machen müssen und die Frist versäumt. Wir werden es sehen.

Ich habe jetzt bei dem neuen Glasfaseranschluss auch erst einmal ganz unten begonnen und nur 50 Mbit/s im Download und 10 Mbit/s im Upload abgeschlossen. Ein Witz gegenüber meinem DSL-Anschluss in Eppstein, wo ich ja schon echte 80 Mbit/s im Download und vor allen Dingen fast 40 Mbit/s im Upload realisieren kann. Und der neue Glasfaseranschluss in Eppstein wird 300 Mbit/s im Download erreichen und dabei sogar 5 EUR/Monat billiger als der bisherige DSL-Anschluss oder der gleichteuere Schneckenglasfaseranschluss in Bodenheim. Aber ich habe in Bodenheim keine Wahl und wichtig ist, dass das vollkommen überlastete DSL16 jetzt ersetzt wird. Wenn ich hier mehr als 50 Mbit/s brauche – Aufbohren des Vertrags geht immer und ich habe darauf geachtet, dass die neue Fritz!Box auch mit schnelleren Verbindungen zurechtkommt. Soweit ich es auf der Beschreibung verstehe, geht die bis zu einem GBit.

Jetzt ist erst einmal Thema, wie ich im Haus das Netzwerk in Gang bekomme und alle Geräte überführe. Demn leider steht die neue Fritz!Box jetzt im Erdgeschoss und nicht mehr in meinem Büro im zweiten Stock wie bisher. Meine wichtigen Geräte habe ich im Moment per Ethernet am Router angeschlossen, aber ich kann und will keine Leitungen durch das Haus bis zur Fritz!Box im Ergeschoss ziehen. Das W-LAN-Signal ist aber so schwach, dass es zwar im Treppenhaus in den 2. Stock reicht, aber nicht mehr ins Büro. Das war mir jedoch vorher klar und ich habe noch einen zusätzlich Repeater 2400 gekauft, um damit ein Mesh-WLAN aufzubauen. Nach diversen Versuchen mit der richtigen Position geht das jetzt auch einigermaßen. Ich bekomme zwar keine 50 Mbit/s (wie im Ergeschoss) in die hintere Ecke des Büros, aber so zwischen 30 – 45 Mibt/s kommen bei den derzeitigen Positionen des Mesh-Servers und Mesh-Clients an. Das ist ok.

Nur die Latenz ist mit WLAN richtiger Mist. Trotz oder vielleicht wegen dem Mesh. Da kann man vermutlich nichts groß mache. Auch sendet das Mesh nur auf 2,4 GHz. Zumindest der Repeater, während die eigentliche Fritz!Box mit 2,4 und 5 GHz sendet. Bei 5 GHz ist der Datendurchsatz im W-LAN deutlich besser als bei 2,4 GHz, aber die Reichweite erheblich schlechter. Mit 173 Mbit/s beim 2,4 GHz-Netz sollte es mit dem Internet jedoch ok sein. Das ist ja mindestens 3x langsamer und wenn ich aufbohre, muss ich mir was überlegen.

Nur für das interne Netz hätte ich schon gerne mehr Datendurchsatz. Zudem – da ich weder für meine Workstation noch mein NAS einen W-LAN-Adapter habe (auch wenn die nur einen Apple 😉 kosten – muss ja nicht sein), werde ich die beiden wohl weiter mit Ethernet betreiben. Zumindest scheint der Repeater einen Ethernet-Anschluss zu haben und wenn ich meine TP-Link Gigabit Switch da ranklemme und Workstation und NAS und vielleicht auch mein Terra-Notebook an die Switch, sollte dazwischen der Datenaustausch schneller gehen und die Geräte dennoch direkt über den Repeater ins Internet kommen. Da muss ich ein bisschen noch basteln. Derzeit messe ich mit Jperf mein Netzwerk durch und da kommt mit Ethernet ein ganz guter Datendurchsatz mit fast 200.000 KBit/s raus. Da werde ich das lahme W-LAN wirklich nicht für die Verbindung zur NAS verwenden.

Der Spion in deinem HP-Gerät

Ich habe die Tage die Meldungen meiner Firewall aktiviert, um bequemer zu sehen, welches Programm wann nach Hause telefonieren will. Gerade ist mir wieder unangenehm aufgefallen, dass mein Multifunktionsgerät von HP nicht funktioniert, ohne dass das Dreckding ins Internet geht.

Warum zum Teufel muss für einen einfachen Scan eine Verbindung zum Internet bestehen?

Das ist entweder ein ganz übel schlecht gemachtes Produkt oder unverschämte Spionage.

Da wird so viel Wind wegen Datenschutz und DSGVO gemacht und einfache Drucker/Scanner funktionieren nicht, wenn man die unkontrollierte Datenspionage durch den Hersteller nicht freischaltet.

Bei den Schwankungen der Krypto-Währungen wird dem letzten Anleger/Schürfer schlecht

Wie ich vor einigen Monaten bekannt habe, habe ich Krypto-Währungen bis zum Ende letzten Jahres ziemlich ignoriert. Trotz meines mathematischen Backgrounds und meiner IT-Tätigkeit. Wie so viele Andere bin ich erst durch die Explosion des Bitcoin-Kurses Ende letzten Jahres wach geworden und mit einem sehr geringen Betrag in die Krypto-Zockerei eingestiegen. Der ist am Anfang dieses Jahres mit der Rallye der Krypto-Währungen gewaltig gewachsen. Etwa 40% Zuwachs in einem Monat und dann bis Ende April noch etwa 10%. Stand heute ist der Gewinn aber ziemlich weg. Also nicht ganz und ich kann mich definitiv nicht beschweren. So viel Zinsen hätte ich bei keiner anderen Anlage erwirtschaftet, aber gegenüber meinem höchsten (virtuellen) Gewinn ist der aktuelle Einbruch fatal. Gerade die letzten 2 Wochen habe ich gut 80% meines bisherigen Gewinns wieder verloren. Die Kurse der meisten Krypto-Währungen sind auf fast 50% der Jahreshochs eingedampft.

Schon krass, wie ein Tweat von Elton Tusk die Kurse beeinflusst. Nach oben oder unten. Da muss Anlegern schlecht werden. Gute Nerven sind mehr als unabdingbar, wenn man mit Bitcoins & Co handelt. Und man sollte nur mit Geld zocken, dass man übrig hat. Aber das ist eine alte Weisheit, die an der Börse wie der Spielbank gilt.

Nur gibt es ja auch noch die Krypto-Miner, die das Schürfen als Erwerbsquelle betreiben. Deren Kalkulationen gehen nur auf, wenn die Kurse der Krypto-Währungen weiter steigen. Zumindest, wenn sie erst die letzten paar Monate auf den Zug aufgesprungen sind und Hardware angeschafft haben. Bei den Preisen für Top-Grafikkarten für ein effektives GPU-Mining liegt man derzeit zwischen 1.000 EUR bis zu ca. 2.700 EUR. Wenn man dann noch die gewaltigen Stromkosten und die Steuer drauf rechnet, kann sich die Investition erst auf Jahre gesehen rechnen. Wenn zur Kalkulation die Kurse von Anfang des Jahres genommen wurden und zudem auf die teils extrem optimistischen Prognosen hinsichtlich des weiteren Wachstums der Krypto-Währungen vertraut wurde (ich habe Prognosen gelesen, dass ein Bitcoin die nächsten Jahre auf über 200.000 EUR hochgehen würde), haben die Neu-Schürfer total mit Zitronen gehandelt. Auch bei denen wird Kursachterbahn die letzten Wochen extreme Übelkeit ausgelöst haben.

Aber es kommt noch dicker – nicht nur Tusk & Co bringen die Kurse zum Schwanken – mittlerweile greifen diverse Massnahmen, die gegen das Mining getroffen werden. Viele neue Grafikkarten bekommen gezielte Blockaden gegen die Nutzung zum Mining eingebaut und im Land mit dem grössten Abbau – China – wurden die letzten Tage massive Gesetze gegen das Mining beschlossen. Der Energiebedarf wurde so gross, dass selbst China die Notbremse zieht. Die Umwelt wird es danken, auch wenn das Land ganz und gar kein Vorreiter in Sachen Umweltschutz ist.

Aus welchen Gründen auch immer – der Beschuss der Krypto-Währungen wird immer stärker und die Kurse sacken immer weiter ab. Die kurzen Erholungs-Peaks nutzen die Anleger sofort zur Gewinnmitnahme (oder Verlustbeschränkung) und nach jedem kurzen Peak geht es noch weiter runter. Auch wenn ich es – wie viele Anleger – nicht wahrhaben wollte. Man sollte nie in ein fallendes Messer greifen. Ich habe es getan und deshalb halt wieder viel erzocktes (virtuelles) Geld verzockt. Ich denke mittlerweile, dass die Kurse noch weiter wegbrechen. Eine Blase ist halt eine Blase.

Auch wenn ich (virtuelles) Lehrgeld zahlen musste, finde ich die Entwicklung nicht schlecht. So viel Energieverbrauch für eine Sache ohne wirklichen „Nährwert“ ist falsch. Auch wenn die grundsätzliche Idee der Krypto-Währungen in jeder Hinsicht gut ist.

Ich bin gespannt, wie es weitergeht.

 

Uploadfilter zur Zensur sind wohl durch

Ich hatte es gar nicht mehr auf dem Schirm, dass einige Interessenverbände weiter Uploadfilter vorangetrieben haben. Und nun sind sie wohl durch. Wie bei der vollkommen missratenen DSGVO hat geballte Inkompetenz auf Seiten der Politik der geschickten Lobbyarbeit von Rechteinhabern keinen Verstand bzw. Widerstand entgegensetzen können. Die gerade beschlossene Reform des Urheberrechts öffnet damit Willkür und Zensur Tür und Tor und erlaubt das legale Blockieren von unliebsamen Inhalten. Auch wenn diese vollkommen legal sind.

Uploadfilter sind ein Zensur- und Unterdrückungsmechanismus und keine legitime Option für das Internet. Insbesondere wird der zu erwartende „vorauseilende Gehorsam“ zig legale Inhalte ablehnen.

Die Interessen von Rechteinhabern müssen auf sinnvolle Weise gewahrt werden, aber nicht über so eine Zensur. Auch wenn diese Interessenvertreter teils meine Einkünfte sichern – bei dieser grottenschlechten Aktion gilt:

Not in my name!!

JSF/MyFaces, Microservices, Maven & Co

Ich habe die ersten drei Tage der Woche eine Einzelschulung zu erweiterten Java-Themen gehalten. Es ist kaum zu glauben, aber das war die erste Live-Schulung seit 1,5 Jahren. Obwohl ich in der Zeit sogar sehr viele Schulungen gehalten habe, waren sie allesamt online.
Bei der Schulung ging es grob gesagt um Java. Aber keine Einsteiger-Themen, sondern um eine Betrachtung diverser Themen im Java-Umfeld samt Web für einen erfahrenen Programmierer, der sich mit den Techniken bereits auskennt. So Sachen wie

  • JUnit, Git und Github,
  • Maven und andere Build-Tools wie Gradle und Ant,
  • Docker,
  • Übersicht neue Java-Techniken (vor allen Dingen Lambda-Ausdrücke, Closures und das Modulsystem)
  • JavaFX/OpenJFX/FXML
  • Ausblick Mobile, Android Studio, Cordova
  • Tomcat bzw. Java-Container als Server (Wildfly)
  • JSP/Servlets/JSF
  • Refactoring
  • Microservices (Spring)

Bei der Anfrage hat mich allerdings das Thema JSF (Java Server Faces) doch schwer verwundert. Ich hatte in der Vergangenheit JSF durchaus mehrfach geschult, aber seit Jahren eigentlich nichts mehr damit zu tun. Und ich bin davon ausgegangen, dass das Thema JSF eigentlich ziemlich out ist. So hatte ich das auch schon vor einigen Jahren beurteilt und mich deshalb aus dem Themenkomplex weitgehend zurückgezogen. Die vereinzelten Anfragen zu JSF-Kursen habe ich auch immer abgelehnt. Überhaupt sah und sehe ich bei den Java-Frameworks für das Web eigentlich nicht (mehr) das große Potential. Weder bei JSF (oder gar Servlets/JSP), noch Spring oder Struts.

Aber mein Teilnehmer wechselt demnächst beruflich als IT-Leiter in eine Behörde, die wohl mit JSF 2.3 arbeitet. Alttechnologien halten sich oft ewig. Ich habe ja auch einen Standardkunden, der noch mit Cobol arbeitet.

Da diese Schulung als eine Art Workshop mit Wissensaustausch gewünscht war und JSF etc. nur einen Teil der Agenda ausgemacht hat, habe ich die Sache angenommen. JSF und Web haben wir dann auch geschlossen am dritten Tag abgearbeitet.

Rückblickend war es auch verdammt spannend, sich wieder in die Welt von JSF einzuarbeiten. Wobei dabei uns beim Voranarbeiten ganz interessante Phänomene untergekommen sind, von denen mir immer noch nicht ganz klar ist, ob wir auf den Grund der Tatsachen getaucht sind oder uns verirrt haben.

Gerade bei Java im Web-Umfeld ist m.E. erst einmal die Konfiguration die größte Einstiegshürde. Vor allen Dingen, wenn man da nicht täglich am Schaffen ist. Das fängt schon mit der Konfiguration der Server an. Ganz banal bei der lästigen Tomcat-Einstellung in der Datei tomcat-users.xml, wo mit

<role rolename="manager-gui"/>

<user username="admin" password="admin" roles="standard,manager-script,manager-gui" />

erst einmal freigeschaltet werden muss, dass der Server über das Webinterface administriert werden kann und war-Dateien überhaupt deployed werden dürfen. Mit Wildfly ist es auch nicht einfacher bzw. bequemer.

Da Maven in der Schulung ein großes Thema war, haben wir viel mit Architypes gearbeitet. Auch bei JSF, was wir in der Version 2.3 als Basis genommen haben. Neben den Schablonen in Netbeans und Eclipse, die mit Maven, Ant oder Gradle arbeiten.

Neben dem elenden Konfigurieren über die web.xml und die faces-Konfigurationsdateien gab es ganz ungewöhnliche Probleme mit dem Kompilieren bzw. Deployen der Projekte. Vor allen Dingen Projekte, die ich schon zum Laufen gebracht hatte, als auch die generierten Projekte aus den POM-Dateien wurden vielfach nicht übersetzt oder konnten nicht auf den Tomcat depoyed werden. Teils gingen auch die SSI-Dateien mit den Tag-Libs, aber alleine die Existenz einer Java-Datei im Projekt hat die Übersetzung blockiert. Nicht einmal als Bean oder Controller gebaut, sondern eine leere Klasse im source-Verzeichnis hat genügt, um einen Fehler zu erzwingen.
Andere Projektkonfigurationen haben die Java-Controler und -Beans übersetzt, aber die xhtml-Dateien wurden auf dem Server nicht geparst und damit die Tag-Libs nicht verarbeitet.
In Netbeans gab es bei dem Problemen mit dem Java-Code die unverständige Fehlermeldung, dass source in der Version 6 nicht mehr unterstützt wird und wir die Version 7ff nehmen sollten. Nach diversen Problemen habe ich auf mein Matebook als Ursache getippt, aber auf dem Teilnehmerrechner waren die Fehler exakt reproduzierbar.
Irgendwann hatte ich die Faxen dicke und habe auf einem alten Linux-Rechner die Geschichte von Grund auf neu aufgesetzt. Also zuerst Maven, was noch nicht da installiert war, und dann einen Architype für JSF mit der Konsolenanwendung mvn aus dem Internet gezogen. Damit hat die Sache von A bis Z funktioniert und mir ist aufgefallen, dass ich auf dem Linux-Rechner das OpenJDK 8 installiert habe. Auf unseren beiden anderen Rechnern allerdings das JDK 16 und bei meinem Teilnehmer das JDK 15. Und danach haben wir endlich in einer Konfigurationsdatei zu den JSF 2.3 die XML-Tags gefunden, dass die Entwickler- als auch Zieldatei auf Java 8 festgelegt ist.
Unter dem Gesichtspunkt macht auch die Fehlermeldung von Netbeans Sinn – es müsste bei mir eigentlich heißen source in der Version 16, aber das Feld für die Versionsnummer wurde wohl nur einstellig konzipiert. Aus der 16 wurde die 6 und damit eine vollkommen unsinnige Fehlermeldung. Aber zum Zeitpunkt, wo die JSF 2.3 konzipiert wurden, hatte man vermutlich nicht an Inkompatibilitäten in so hohen Folgeversionen, sondern nur älteren Versionen, gedacht. Wir sind nicht so ganz sicher, ob die JSF bis zur Version 2.3 mit den neuen JDK nicht mehr klar kommen, aber ich denke schon. In der Doku steht explizit auch die Version 8. Das deckt sich mit der Tatsache, dass Cordova auch nur bis zur JDK-Version 8 funktioniert. Das habe ich ja in meiner Vorlesung an der TH Bingen die Tage behandeln müssen.
Die JSF werden wohl als Apache MyFaces weiterentwickelt und stehen mittlerweile in der Version 4.0 zur Verfügung, aber die haben wir uns dann nicht mehr genauer angesehen.

Rund um das Thema habe ich auch noch ein paar nützliche Anleitungen gefunden:

JSF Tutorial
https://www.javawebtutor.com/articles/jsf/
https://www.tutorialspoint.com/jsf/jsf_overview.htm

JSF in Tomcat zum Laufen bringen
https://www.byteslounge.com/tutorials/how-to-configure-jsf-in-tomcat-example

Webanwendungen als Docker-Images herstellen
https://jaxenter.de/apache-tomcat-meets-docker-webanwendungen-als-docker-images-herstellen-23213

Grundsätzlich hat sich mein Eindruck gefestigt, dass im Web Java nicht (mehr) der Bringer ist. Irgendwie reihen sich JSF/MyFaces in andere Projekte wie JavaFX/OpenJFX oder auch Cordova ein, bei denen die Originalhersteller die Entwicklung abgetreten haben und wo es aus meiner Sicht nicht sicher ist, dass diese Projekte auf Dauer sich halten und/oder zuverlässig weiterentwickelt werden.

Wobei die Erstellung eines Spring-Microservice für Tomcat wirklich genial einfach war und die mit einer Anleitung erstellte Version des Microservice absolut flexibel und einfach an beliebige Bedürfnisse anzupassen ist.

Weiter geht es

Es ist Mitte der Woche, ich habe gerade meinen Einzel-Crashkurs zu erweiterten Java-Themen abgeschlossen und ein neuer Entwicklertipp der Woche zu Python ist heute bei LiL (LinkedIn Learning) herausgekommen. Die Woche geht es darum, wie man in Python privat deklarierte Elemente von außen manipulieren kann.

Keine Chance auf einen Job bei der Sparkassenakademie in Eppstein mehr

Bis vor ein paar Jahren bin ich recht regelmäßig zur Sparkassenakademie Bayern nach Landshut gefahren, um da zu unterrichten. Das war schon seltsam, denn von meiner alten Wohnung habe ich direkt auf die Sparkassenakademie Hessen/Thüringen gesehen. Aber ich bin immer die 430 Kilometer zur Sparkassenakademie Bayern gefahren, um da zu arbeiten. Tja – wie sich halt Kundenkontakte ergeben.

Ich hatte aber immer die Idee, doch auch mal in der Sparkassenakademie in Eppstein zu unterrichten. Die Chance ist vorbei, denn ich habe die Tage im lokalen Blättchen mitbekommen, dass die Sparkassenakademie in Eppstein geschlossen wird. Wäre schon nett gewesen, direkt vor der Haustür (und zwar im direkten Sinn – auch heute noch aus Sicht meines Zweitbüros) zu unterrichten. Wobei die Sparkassenakademie in Landshut schon klasse ausgestattet war:
– Zimmer vor Ort
– Turnhalle
– Kraftraum
– Schwimmbad
– Sauna
– Cafeteria
– Mensa

Viel größer als in Eppstein. Vielleicht kommt ja von da nochmal eine Anfrage.

Woche rum und Aufnahmen im Kasten

Die Arbeitswoche ist rum und nachdem ich gestern den Feiertag frei genommen habe, bin ich heute mit den neuen Aufnahmen für LinkedIn Learning (LiL) fertig geworden.

Nächste Woche steht eine Einzelschulung an. Das erste Mal seit fast 1,5 Jahren sogar als Live- und nicht Remote-Schulung. Ganz so wie früher :-).

 

Mein neuer LiL-Python-Kurs für Umsteiger

Derzeit kommt bei mir jede Woche bei LinkedIn Learning (LiL) ein neuer Entwickler-Tipp zu Python heraus und mittlerweile sind da Tipps im Umfang von über einer Stunde bereits veröffentlicht. Das wird auch das Jahr noch so jede Woche weiter gehen. Aber zusätzlich kommen immer wieder vollständige neue Trainings heraus. Und vor ein paar Tagen war es wieder soweit – ein kompletter neuer Kurs ist freigegeben worden.

Python für C++-, Java- und C#-Entwickler:innen

Schnell und einfach von C#, C++ und Java auf Python umsteigen aus dem Kurs „Python für C++-, Java- und C#-Entwickler:innen“ von Ralph Steyer
Mit der Popularität der Programmiersprache Python steigt auch der Bedarf an Python-Entwicklern. Gerade Umsteiger benötigen dazu einen anderen Ansatz als Einsteiger. Deshalb gehe ich in diesem Umsteigerkurs gezielt darauf ein, wie man von Grundkenntnissen in anderen Programmiersprachen bei den ersten Schritten in der Python-Welt profitieren kann. Dazu behandele ich in der grundlegenden Darstellung immer wieder Parallelen, Schnittmengen und Unterschiede insbesondere zu C++, C# und Java sowie Python-eigene Besonderheiten.

Aufrufargumente an ein Python-Programm übergeben – Entwicklertipp der Woche zu Python

Gerade passiert bei mir im Zusammenhang mit LinkedIn Learning (LiL) ziemlich viel. Geht wie beim Bretzelbacken, denn ein neuer Entwicklertipp der Woche zu Python ist heute herausgekommen. Die Woche ist das Thema, wie Aufrufargumente an ein Python-Programm übergeben und dort verarbeitet werden können.

Aufrufargumente an ein Python-Programm übergeben aus dem Kurs „Python-Entwicklertipps: Jede Woche neu“ von Ralph Steyer

#TopCompanies2021

Im Rahmen der neuen Kampagne  #TopCompanies2021 von LinkedIn Learning ist auch einer meiner Kurse (Python lernen) für den Monat Mai freigeschaltet worden.

Ziel der Kampagne: Um zu wachsen und an der Spitze zu bleiben ist es unerlässlich, bei wichtigen Trendthemen up-to-date zu bleiben. Deshalb zeigt LiL die 5 wichtigsten Trends von Top-Unternehmen im deutschsprachigen Raum auf, um Lernenden dabei zu unterstützen, ganz vorne dabei zu bleiben.

Auf „Videotour“

Seit gestern bin ich wieder an neuen Aufnahmen für LinkedIn Learning (LiL). Dabei sind gleich 3 Aufgaben zu erledigen.

  1. Eine kleine Fehlerkorrektur über gut 10 Sekunden in einem schon recht alten UML-Training. Ein Wortdreher ist erst nach zig Jahren aufgefallen.
  2. Eine komplette Aktualisierung eines Trainings aus dem Jahr 2013. Da ist definitiv klar, dass das nicht mehr ganz auf dem aktuellen Stand sein kann.
  3. Ein paar weitere Entwicklertipps der Woche zu Python.

Es stehen also reine Aktualisierungen und Erweiterungen zu bereits vorhandenen Trainings von mir an.

Der Entwicklertipp der Woche ist da – OpenCV unter Python nutzen

Nächste Woche werde ich neue Aufnahmen für LinkedIn Learning (LiL) einspielen, aber wie jede Woche kommt auch in der Mitte dieser Woche wieder ein Entwicklertipp der Woche zu Python heraus. Es geht um ein spezielles Framework, um unter Python Bilder und Videos anzuzeigen – OpenCV und das ist eine freie Programmbibliothek mit Algorithmen für die Bild- und Videoverarbeitung. Diese kann unter Python, aber auch anderen Sprachen verwendet werden. Die Bibliothek wird vor allen Dingen beim Deep Learning verwendet, kann aber auch einfach für das Anzeigen von Bildern und Videos verwendet werden. Und darauf konzentriert sich dieser Tipp der Woche.

Bilder und Videos mit OpenCV anzeigen aus dem Kurs „Python-Entwicklertipps: Jede Woche neu“ von Ralph Steyer