Zaujímavé linky #14

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

https://packetsender.com/

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

https://longnow.org/clock/

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

https://xp.quenq.com/

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ú.

2 lajkov

Pekný výber liniek. Ale čisto teoreticky pokiaľ sa jedná o implementáciu TimeSeries v .NET, tak tu bol skôr RavenDB Time Series Overview | RavenDB 6.0 Documentation :slight_smile:

Ano, to som si neuvedomil. Na Githube som hladal vyslovene TimeSeries databazu.