Mittwoch, 4. Juni 2025

Spring Boot und die Annotationshölle

 Spring und Spring Boot sind sehr gute Frameworks und haben aus meiner Sicht zu Recht J2EE ersetzt. Einer der Probleme von Spring Boot Applikationen ist der Annotationsjungel. Es gibt in vielen Projekten Klassen mit 5, 6 oder 7 Klassenannotationen auch Methoden oder Felder haben machmal 3 Annotationen.  Und für den Programmierer ist das schwer zu verstehen:

  1. Was bedeutet die Annotation?
  2. Aus welchem Framework stammt sie: Spring, Hibernate, Lombok, Shedlock, ... ?
  3. Wie funktionieren sie?

Hier ein paar wichtige Annotationen, wie sie funktionieren. 

Spring Sterotype Annotationen wie Service oder Component funktionieren via Klassenname. Paketnamen sind egal, das heisst, wenn ich zwei Klassen mit dem selben Namen habe die aber in anderen Paketen sind, dann führt das zu einem Konflikt.

Lombok Annotationen wie Getter, ... funktionieren über Code Ergänzungen. Das ist meist unkritisch. 

Spring Annotationen wie Retry, Transactional oder Shedlock Annotationen funktionieren über Wrapper oder Proxy Klassen  (Hello Grails and Groovy). Diese Annotationen sind in der Verwendung kritischer, weil sie nur von Aussen funktionieren. Das heisst, die annotierte Methode muss public oder im default Scope sein und der Aufruf muss aus einer anderen Klasse erfolgen. Dann läufts wie erwartet.

Und jetzt die gefährlichsten Annotationen, Anootationen ohne Funktion, die nur die Lesbarkeit erhöhen, wie z.B. JetBrains NotNull nicht zu verwechseln mit  Jakarta Validation NotNull oder Lombok NonNull. JetBrains NotNull dient  nur der Dokumentation und ggf. der statischen Code Analyse.

So, know your annotations. Happy coding life. 

Sonntag, 20. April 2025

Free your Rooter: OpenWrt auf Raspberry Pi 4 als AP


 Zusammenfassung

OpenWrt ist ein einfacher Weg sich von normaler Routersoftware zu lösen. Das Raspberry ermöglicht ein einfache, in minem Fall nicht ganz vollständige Ersetzung bestehender Hard- und Software. Warnung, OpenWrt benötigt ein wenig Netzwerk Kenntnisse bzw ist ein Weg diese zu erwerben.

 

Auf Gehts

 Mein Cisco Router hat nach doch einigen Jahren das zeitlich gesegnet. Der Raspi war schon da als Rest von anderen Projekten. Also los. OpenWrt ist ein freies WiFi Router Betriebsystem oder Firmeware, das auf eine grossen Anzahl verschiedener Hardware läuft un unter anderem auch die Raspberries unterstützt. OpenWrt bedeutet keine Backdoors, kein Telefonieren nach Hause und Support ohne Ende.

Ziel war es einen CISCO WPA Access Point zu ersetzen:

  • Zwei SSID
  • 2.4 Ghz und im 5 GHz Band.
  • N und AC/AX
  • WPA2 PSK

 Fashen von OpenWrt auf ein alte SD Karte, kein Problem. Raspberry started, prima. Jetzt muss man den Raspberry via Ethernet Kabel lokal an einen Computer anschliessen. Das ist notwendig weil das pure OpenWrt einen eigenen DHCP Server startet, der sich natürlich nicht mit deinem bestehenden DHCP Server versteht. Also Kabel ran und DHCP Server deaktivieren in dem man die DHCP Einstellung auf Client setzt, jetzt kann der Raspy an die normale Switch. 

Das WiFi Setup enthält den nächsten Stolperstein, zwar unterstützt der Raspberry 4 das 2.4 GHz Band als auch auch das 5 GHz Band, aber nicht gleichzeitig. Auch wird AX nicht unterstützt. Was auch nicht funktionierte war das Auto Select der Kanäle. Also musste ich einen festen Kanal wählen. Die Kombination WPA2/WPA3 liefft auch nicht stabli, genauso wie 802.11w Management Frame Protection nicht stabil lief. That's it.

Überrasch bin von der Leistungsfähigkeit von OpenWrt und auch von der Mini WiFi Antenne. Was ich auch vermisse ist PoE aber dfür gibt ja ein HAT board.

Montag, 6. Januar 2025

Welchen Laptop für Software Development?

Erste Frage: Betriebsystem

  1. Windows: Umständlicher als MacOS, BASH naja Cywin ist brauchbar. Irgend ein Subsystem läuft Amog und verbraucht 100% CPU und unmengen an RAM. Windows 10 fällt eher in in die Kategorie: lieber nicht.
  2. MacOS X: einfacher als Windows. Ich habe aber das Gefühl, dass das Betriebsystem immer schlechter wird. Die neuen MacBook Pros sind wie immer nettt haben aber die Apple M CPUs, was nach zusätzlichem Aufwand klingt.
  3. Linux: Last but not least. Ubuntu, KDE, Plasma merkt funktionieren relativ gut. Probleme gabs in den letzten zwei Jahren aber trozdem. Es wird besser, bleibt also immer eher was für Nerds. Also genau richtig.

Zweite Frage: Software

  1. IDE: IntelliJ, Eclipse, ..
  2. Tools und Framworks: Java, Docker, BASH, Firefox, Telegram, ...

Dritte Frage: Hardwareanforderungen

  1. CPU: 
    1. irgend was Intel-kompatibles um Kompatibilitätsproblemen aus dem Weg zu gehen
    2. Power, so vie wie möglich um so wenig wie möglich zu warten auf den Compiler und die Testausführung
    3. geringer Stromverbrauch und geringe Hitzentwicklung, damit man sich nicht verbrennt
  2. RAM: 32 GB, sollten reichen
  3. GPU: egal, alles ist ausreichend
  4. Disk: 1 TB, sollten reichen
  5. Display: 16' 
  6. Ethernet: Ja
  7. Wifi: 6
  8. Webcam, Micro
  9. Tastatur: sollte funktionieren (sorry Apple), Ziffernblock, separate Pfeiltasten, Beleuchtung
  10. Lieferung: Deutschland
     

Laptops für Software Entwickler

Was ich suche, ist ein non-fancy, Mid-size Laptop mit viel Rechenpower und wenig Stromverbrauch, ausreichend RAM, einer guten Tastatur und einem gut laufenden Linux.

Tuxedo

Gut, nicht überragend aber gut. Deutscher Support, nett. Arbeite seit zwei Jahren mit den Einsteigermodellen, die natürlich nicht die Qualität eines MacBook erreichen aber ausreichend sind. Der Tuxedo Aura fühlt sich eher wie eine Lenovo an. Das TuxedoOS basiert auf Ubuntu, KDE, Plasma, ist nett. Die Tastaur funktioniert, hallo Apple, leider sind die Pleiltasten nicht separat, was aber jetzt in einigen neuen Modellen (Sirius) geändert wurde.

Pro: 

  • Deutscher Support
  • Neue Modelle mit separaten Pfeiltasten

System 76

System 76 ist eine gute Alternative zu Tuxedo. Die Gehäuse wirken hochwertig. Leider haben sie Modelle (Pangolin) die furchtbaren Apple Style Pfeiltasten, teilweise sogar mit haber Höhe. Weil ich keine halbhohen Finger and der rechten Hand habe, ist das nutzlos. Form follows Function, hier nicht. Generell wirken die Preise ein wenig günstiger als die Preise bei Tuxedo.

Pine

Pine bekannt für fancy Linux Hardware, hat auch einen Laptop PineBook im Angebot (01-2025) aber der erfüllt nicht die Anforderungen. Das PineBook zielt auf einen anderen Markt.

Nitrokey

Nitrokey bekannt für den Nitrokey, eine Ersatz für den Yubi Key, hat seine Laptop Palette aufgefrischt. Die Laptoptops heissen hier Pads, wie auch immer. Es scheinen nut Intel CPUs im angebot zu sein, die Tastaturen (Modell abhängig) scheinen das selbe Problem zu haben wie bei den anderen Anbietern, keine Nummernblöcke, keine separate Pfeiltasten.

Hier gibt es auch deutschen Support.

Andere Anbieter, Dell, Lenovo, Asus, ..

Ja warum nicht, ich habe nur leider keine fertig installierten Systeme gefunden. So kann ich hier nicht sagen, wie gut der Linux Support ist. Schreibt mir, wenn ihr hier mehr Informationen habt.

Zusammenfasssung

Es gibt eine Reihe von non-fancy Lapttop der sich zur Softwareentwicklung taugen. Man fährt (noch) gut mit ein MacBook Pro, Windows auf z.B einem Lenovo ist auch noch ok. Meine Wahl wäre ein Linux Laptop von Tuxedo oder System 76. Ein Blick Richtung Nitrokey kann sich auch lohnen.