Dnes to budú linky bez rozsiahleho opisu, proste to, čo sa mi podarilo nazbierať. Tento diel neobsahuje až zaujímavé úlovky, skôr praktické.
Je open source bezpečnejšie?
https://www.youtube.com/watch?v=ev1XwF7js98
Polemika od IAmTimCorey o bezpečnosti open source softvéru, finančnej motivácii a ich dôsledkov na bezpečnosť.
Antora Documentation
https://docs.antora.org/antora/latest/
Antora je nástroj na tvorbu dokumentácie pomocou AsciiDoc. Sám som ho neskúšal, ale dostal som naň odporúčanie.
Frozen collections
https://medium.com/c-sharp-progarmming/frozen-collections-in-net-8-055b007587d0
Blog o Frozen kolekciácih v .Net 8 a ich perfomace dopade.
Packet sender
Packet sender je niečo ako Postman na steroidoch. Jeho hlavnou featurov je posielanie a primanie širokého spektra paketov a sieťových protokolov. Zvláda samozrejme aj http, SSL, TCP, UDP, WOL,…
Ja som naň narazil, keď som potreboval zistiť čo vracia DNS server.
CPU Guard .Net
https://github.com/encryptedtouhid/CpuGuard.NET
Veľmi zaujímavý ASP.NET Core midllware, ktorý postráži využitie CPU pre konkrétny request.
MS Kiota
https://github.com/microsoft/kiota
Nástroj pre generovanie klientov z OpenAPI dokumentácie s podporou viacerých jazykov.
Game of Life na GPU
https://www.youtube.com/watch?v=ow2o0xIVePE
Ukážka použitia GPUIL (link) knižnice pre známe Game of Life vo WPF aplikácii. Najzajímavejšie je prepojenie GPUIL a WPF aplikácie.
Hodiny tikajúce 10 000 rokov
Trochu hardvérový link. Ale rozmýšľali ste niekedy ako tvoriť veci, ktoré vydržia dlho? A nie len to, ale aby aj fungovali dlho?
V linku je popis projektu, ktorý sa vytvoril gigantické hodiny, ktoré by mali ukazovať presný dátum nasledujúcich 10 000 rokov. Je to dosť, kde sa pozrieme do histórie, tak za tu dobu sa dvakrát zrútila ľudská civilizácia a prišli sme o značnú časť vedomostí.
Kavita
https://github.com/Kareadita/Kavita
Kavita je hlúpo povedané serverová aplikácia napísaná v C# pre čítanie elektronických kníh a PDFiek. Má aj platenú verziu, ktorá poskytuje viac funkcionlity.
Po Inštalácii na NAS je to ideálne riešenie pre rodinnú knižnicu.
Windows XP v prehliadači
Ak sa niekomu cnie za XP-éčkom, môže si ho vyskúšať priamo v prehliadači.
LangChain pre .NET
https://github.com/tryAGI/LangChain
Hľadal som, či je jestvuje alternatíva LangChain pre .Net a skutočne jestvuje.
MariaDB a vektory
https://mariadb.org/projects/mariadb-vector/
Nie som moc fanúšik MySQL/MariaDB, ale MariaDB vo verzii 11.6 prinesie podporu vektorového vyhľadávania pre embedingy.
YaTsDb
https://github.com/harrison314/YATsDb
Teraz moja vlastná polievočka, ale opis mi nevyšiel na zmysluplný blogpost. Vždy som si chcel vytvoriť nejakú databázu a teraz som si splnil sen.
Na začiatku leta som sa venoval IoT projektom a potreboval som ukladať údaje o počasí a vnútornej teplote, vlhkosti,… (pri tom objeme dát by to zvládla aj SQLite) po nakoniec si dáta ukladám do InfluxDb cloudu (free tier). No zistil som, že v .NET-e nejestvuje žiadna TimeSeries databáza. Tak som si povedal, že idem do toho.
Zobral som simple line formát a názvoslovie z InfluxDb (databáza = bucket, tabuľka = mesaurment) a internú logiku z RavenDb, takže YaTsDb dokáže ukladať viac hodnôt k času, ale sú dostupné cez svoj index (poradové číslo), ďalej je možné k hodnotám priradiť tag, podlá ktorého sa idenxujú (databázový index). Na dopytovanie som zvolil syntax podobnú SQL.
Ako nízkoúrovňový podvozok som použil ZoneTree, čo je usporiadaná key-value databáza, použil som formát popísaný tu, plus databáza obsahuje veci pre vlastný manažment.
Výsledkom sú dva projekty.
Jeden je YaTsDb ako plnohodnotná databáza, ktorá v sebe okrem TimeSeries enginu obsahuje manažment GUI, sheduler pre javascript tasky (to umožňuje napríklad v pravidelných intervaloch získavať a ukladať dáta, alebo programovať alerty) implementované pomocou jint a NCronJob.
Druhý je YaTsDb.Lite, obsahuje iba TimeSeries engine, ale zato je ho možné kompilovať do NativeAot (chcel som si vyskúšať NativeAOT projekt).
V nasledujúcom príklade je ukážka vloženia dát pomocou cURL:
curl -XPOST http://localhost:8080/write/smart_home --data-binary "sensors_data,Room1 22.0,45,80.4 1719242779202"
curl -XPOST http://localhost:8080/write/smart_home --data-binary "sensors_data,Room2 23.1,NULL,75.0 1719243079200"
A príklad dopytu:
curl -XPOST http://localhost:8080/query/raw/smart_home --data-binary "SELECT AVG(1), MIN(1), MAX(1), COUNT(1) FROM sensors_data WHERE TAG('Room2') AND INTERVAL(NULL, -10h) GROUP BY +10m"
YaTsDb implementuje aproximáciu mediánu, čo je medzi time series databázami unikát, pretože ide o veľmi pamäťovo náročnú operáciu a tým aj nebezpečnú.