Pro vývojáře od vývojářů z AGRP[DEV] #7: Inspirativní zdroje a tipy pro tvůj lepší kód
👋
Ahoj,
vánoční shon je v plném proudu, a proto tě zveme, abys na chvíli zpomalil/a, nalil/a si vaječňák nebo svařák (podle chuti 😊) a ponořil/a se do našeho AGRP[NEWSLETTERU].
Přinášíme ti dávku technických tipů, zajímavostí a inspirace, které tě možná vytrhnou z předvánočního stresu a přenesou do světa inovací a objevů.
Tentokrát se dozvíš:
>> Jak náš Marek přispěl do projektu Langchain4J a co jsme v něm objevili za bugy >> K čemu se hodí Java System Properties >> Jak moderně spravovat Grafana dashboardy kódem >> Co je stateless Linux OS a proč může být zajímavý pro Kubernetes nody A samozřejmě jsme nezapomněli na nástroje a články, které by neměly uniknout žádnému vývojáři.
Udělej si pohodlí, užij si chvilku klidu a inspiruj se našimi tipy! 🎄
💡 AGRP[TIPY]
👨💻 Langchain4J a náš open-source hero: Marek! 🎉
Musíme se pochlubit – náš kolega Marek rozvířil vody open-source světa svým příspěvkem do projektu Langchain4J, oblíbeného mezi vývojáři pracujícími s jazykovými modely v Javě.
Marek objevil problém, který ostatní přehlédli, navrhl chytré řešení a jeho kód teď žije přímo v jádru frameworku! Tohle je skvělý příklad toho, jak může programování mít reálný dopad – nejen na tým, ale i na celou vývojářskou komunitu.
Langchain4J je skvělý, ale přiznejme si, není bez chyb.
Za poslední měsíc jsme narazili na několik problémů, na které by si uživatelé měli dát pozor:
Bug ve splitteru: Pokud v ingestoru použijete splitter, který nevyprodukuje žádný segment, celý proces spadne.
Anglický model detekce vět: RecursiveDocumentSplitter používá malý anglický model na detekci vět. Pro české texty doporučujeme využít model z OpenNLP.
Limit počtu textů: V OpenAiEmbeddingModelu je bug s počtem možných textů v poli při jednom requestu – viz pull request.Tady držíme palce našemu dalšímu kolegovi – Jirkovi, jeho pull request čeká na schválení. Možná budeme mít brzy další úspěch v open-source světě!
Structured outputs + toolky: Vyšší API structured outputs nefunguje společně s toolkama kvůli chybě při vyhodnocování JSONu. Pokud to plánujete použít, pozor na tento problém –issue zde.
Máš i ty zkušenosti s Langchain4J? Dej nám vědět, co funguje a co bys doporučili jako alternativu.
👨💻 Tip od našeho Senior Java Developera – Dalibora
## Java System Properties – rychlý přehled všech nastavení
Dalibor narazil na zajímavý zdroj informací o různých nastaveních v Javě:
Je to rychlý referenční přehled všech možných Java systémových vlastností.
Dalibor hledal, jak zakázat jednu šifrovací sadu TLS, a po dlouhém pátrání našel, že to jde jednoduše takto:
java.security.Security.setProperty(„jdk.tls.disabledAlgorithms“, „value“);
Tento přístup se hodí i na další nastavení, která najdete v konfiguraci Javy. Mohlo by ti to ušetřit spoustu času!
👨💻 Tip od našeho Senior DevOps Engineera – Martina
## Grafana as Code
I Grafana dashboardy je možno spravovat pomocí kódu, trackovaný v gitu, nasazovaný pomocí GitOps, moderně, stejně jako všechny ostatní vaše aplikace, nástroje a prostředí. Ale rozhodně to není nic příjemného. Grafana dashboard je JSON. Generování JSONu se dá ulehčit (Grafonnet, Grafana SDK Grafana Foundation SDK). O krok dál to posouvá Grizzly, což je lokální nástroj pro editaci a vizualizaci kódu pro Grafana dashboard. 👉 Odkaz najdeš ZDE.
## Ephemeral Linux distribuce
Stateless je dobro. Což tedy stateless Linux OS? Většinou jde o distribuce určené právě pro jednu věc, běh kontejnerů, některé se rovnou titulují jako ideální podvozek pod kubernetes nody. Vyznačují se read-only filesystemem, minimálním toolingem, častokrát nemají by default povolené ani SSH. Staré známé „pets versus cattle“ aplikované na infrastrukturu. Už někdy kolem roku 2013 se s tímto přístupem objevil CoreOS, který existuje do teď, i když jako Fedora CoreOS. Ale na výběr je toho více, Talos Linux nebo Flatcar container Linuxa další. Pokud hledáš, jak si zjednodušit správu k8s nodů, ulehčit si operativu, za cenu lehké změny přístupu, ale s benefitem mimo jiné vyšší bezpečnosti, tohle je zajímavá možnost.
## Finta s cache na více nodech
Něco z českého rybníčku, blogpost od Luboše Račanského.
Jak na invalidaci cache v clusteru, bez použití nějakého řešení pro distribuovanou cache.
## How System Initiative Treats AWS Components as Digital Twins
System Initiative už Martin v našem newsletteru zmiňoval a nejspíš se tady bude objevovat častěji, protože čím víc ho používá, tím je z toho nadšenější. Odkazovaný článek popisuje, jak System Initiative funguje na malém příkladu. Na blogu se pravidelně objevují nové informace nebo představení funkcí , na YouTube je každý týden stream kde se demují novinky a taky vznikají videa na praktická témata, třeba jak postavit VPC na AWS (System Initiative Building a VPC).
👉 Odkaz na více info najdeš ZDE.
## ChatGPT Canvas
Canvas v ChatGPT je novinka která by stačila sama o sobě, Martin doporučuje, ale zajímavostí je tam víc. Hlavně to, jak se spouští Python pomocí pyodide a WebAssembly z browseru je technicky zajímavé, navíc tudy může dělat http requesty, narozdíl od kódu spuštěného přes ChatGPT code interpreter, ale každá varianta má jiné benefity a omezení.
👉 Odkaz na více info najdeš ZDE.
## When Kubernetes Feels Like a Burden
Kubernetes není všelék a jako obvykle u takových projektů (viz počátky s Dockerem), očekávání jsou obrovská a často nenaplnitelná. Všechna ta práce a operativa rozhodně nikam sama díky k8s nezmizí, rozhodně ne s onprem self-managed k8s, ani u managed služby, pořád tam toho čeká spousta: security, secure user access, monitoring, upgrady a patche, škálování … Často si život komplikujeme sami, když se vrhneme do technologií, které dost možná ani nepotřebujeme v dané situaci a projektu. To jsou všelijaké service meshe, komplikované gitops platformy, gatekeeper služby a podobné. Nemluvě o správě workloadu na k8s – ty hromady yamlu je potřeba nějak zkrotit. Řešení existují, odkazovaný blogpost je nabízí. Ale v první řadě je na místě zhodnotit, jestli je k8s ta správná volba a hned potom si uvědomit všechny důsledky množství práce, kterou to přináší. Blogpostje reakcí na jiný článek, kde je popsáno řešení migrací na jinou platformu, konkrétně AWS ECS. Jak technický, tak i finanční pohled na takovou věc.
⚙️ Tipy na tooly
## AeroSpace
Pro GNU/Linux existuje i3wm, skvělý tilling window manager. Kupodivu i na MacOS se takového prostředí dá dosáhnout, díky AeroSpace. Je to alternativa pro aplikace jako Magnet, Rectangle,yabaia podobné. AeroSpace je nabitý funkcemi a u i3 se inspiruje velmi hluboce, takže komu se stýská po i3, tohle je skvělá volba.
## Mise
Alternativa pro asdf, tj. jednoduchá lokální správa verzí utilit, vývojových prostředí, nástrojů. Tj. instalace nodejs/npm, javy, pythonu, terraformu, etc etc, v různých verzích, jednoduše, izolovaně. Mise je drop-in replacement pro asdf a přidává funkcionalitu navíc.
## Dashy
Dashy je rozcestník. Třeba pro váš homelab. Nebo klidně do práce. Může být výchozí stránkou v prohlížeči odkud se rovnou prokliknete na nějakou službu nebo aplikaci. Vše hezky na jednom místě, vyšperkovat to jde různými doplňky a vyhrát si s tím.
## Serpent
Control snake. Eat food. Create chaos. Chaos engineering hravě. Z podobného ranku jako Kube DOOM.
## Kubernetes configuration linting tools
Seznam šikovných a užitečných nástrojů, díky kterým přežít s Kubernetes.
AGRP 2024🎄A TO JE PRO LETOŠEK VŠE
💌 Baví tě náš obsah? Sleduj nás i našem Instagramu nebo Youtube.
Toto byla poslední várka tipů pro rok 2024, ale už teď tě můžeme ujistit, že v tom příštím rozhodně nehodláme polevit! Děkujeme, že jsi byl/a součástí naší komunity a věříme, že naše newslettery ti přinesly inspiraci, nové znalosti a snad i pár úsměvů. 😊
Přejeme ti krásné Vánoce plné klidu, pohody a odpočinku – a do roku 2025 to nejlepší! Ať tě provází nejen zdraví a štěstí, ale taky čistý a efektivní kód. 🚀
Těšíme se na další rok plný technických objevů a sdílení! Již brzy u dalšího dílu našeho newsletteru!
Tým AGRP.DEV