Zaujímavé linky #13

Ďalšia dávka liniek, ktorá vznikla prácou na novom hoby projekte, plus nazbierané veci časom.

DotNes

https://github.com/jonathanpeppers/dotnes/

DotNes je kompilátor dotnetu a C# pre herné konzoly NES.

Nekompiluje nič použiteľné – je to zaujímavá hračka, ale je to pekná ukážka ako si pre dotnet a IL spraviť prekladač do niečoho obskúrneho.

IdGen

https://github.com/RobThree/IdGen

Knižnica, ktorá generuje Twitter-like ID-čka, teda také ktoré sú časovo usporiadateľné, majú v sebe nejaké flagy a náhodnú zložku.

Sú to veľmi podobné ID-čka o akých hovoril Oren Eini v rozhovore o tom ako vytvoriť sociálnu sieť, ktorá škáluje - https://www.youtube.com/watch?v=z_EdHkDoxoE.

FixedStrings

https://github.com/xoofx/FixedStrings

Knižnica implementuje 8/16/32/64 znakové stringy, tieto typy sa nealokujú na heape. Vďaka trikom zo Span-mi a interpolácii s nimi ide robiť takmer to isté ako s normálnym stringom.

Napríklad nasledujúci kód nerobí alokáciu:


FixedString16 str = $"HelloWorld {DateTime.Now.Year}";

Console.Out.WriteLine(str.AsSpan());

Lock v .Net 9

https://steven-giesel.com/blogPost/d7f923b3-13ff-4ecc-8b8f-d847ae581f68/a-new-lock-type-in-net-9

.Net 9 prinesie nový typ na zamykanie pre vlákna.

NCronJob

https://github.com/NCronJob-Dev/NCronJob

Knižnica integrovaná na ASP.NET Core background Workers, ktorá v ňom vie vykonávať viac úloh naplánovaných cez Cron výrazy.

FastCache

https://github.com/neon-sunset/fast-cache

Knižnica impelemntujúca cache, ktorá je rýchlejšia ako tá v ASP.NET Core (no nevyzerá, že by implementovala rovnaké rozhranie).

No zaujímavé je, že interne používa knižnicu NonBlocking, ktorá implementuje naozaj rýchly ConcurentDictionary<,> a Counter (inkrementovať číslo dostatočne rýchlo môže byť problém pri extrémnej záťaži).

Parquet-dotnet

https://github.com/aloneguid/parquet-dotnet

Apache Parquet – je multiplatformový, jazykovo agnostický formát na ukladanie stĺpcových dát do súborov. Táto knižnica ho implementuje pre dotnet.

Apache Arrow

https://github.com/apache/arrow/blob/main/csharp/README.md

Apache Arrow - je zas formát na reprezentáciu in-memoy dát, ktorý je tiež jazykovo agnostický formát. Uvádzam ho skôr ako zaujímavosť, neštudoval som ho do hĺbky.

Malo by ním ísť spracovávať veľké dáta v RAM ale aj v GPU.

Deterministický password manažér

https://samuellucas.com/2024/02/25/deterministic-password-managers-revisited.html

Zamyslenie sa nad deteministickými password manažérmi – derivujú heslo podľa jedného secretu (heslo, nieco ulozene na disku, Yubikey, čipovej karte), prihlasovacieho mena a stránky.

Takýto princíp ma jednu veľkú výhodu, na jeho použitie netreba nič synchronizovať, neprezradí na akých stránkach máte účty, funguje offline.

Na druhú stranu má aj svoje problémy, ktoré sú v popísané v článku.

Tu je jeden taký manažér implementovaný v C# https://github.com/samuel-lucas6/Cahir.

Dots

https://github.com/nor0x/Dots

Ide o multiplatformový manažér .NET SDK na vašom stroji, klikom ide odinštalovať a nainštalovať konkrétne verzie .NET SDK.

Ani vývojár ako ja nepotrebuje mat na disku 8 verzii .NET 7-micky.

SecureDelete-net

https://github.com/bitbeans/securedelete-net

Knižnica na bezpečné mazanie súborov, knižnica je určená pre Windows. (Po preskúmaní kódu pre SSD-čka, som zistil, že tam nepomôže nič iné ako šifrovanie disku.)

Chat.js a HTMX

https://endjin.com/blog/2024/04/aspnet-core-razor-htmx-chartjs

Ako zložiť dokopy ASP.NET Core, Razor, HTMX a Chart.js tak aby to fungovalo ako má.

C-éčkové súbory v Blazor WebAssembly

https://learn.microsoft.com/en-us/aspnet/core/blazor/webassembly-native-dependencies?view=aspnetcore-8.0

Vedeli ste, že v Blazor WebAssembly projekte ide refencovať a použiť zdrojáky napísané v C?

Tie sa priamo prekladajú do WebAssembly a ide tak obísť výkonové obmedzenia v Mono interpreteru.

2 lajkov

Veľmi zaujímavá zbierka odkazov. Dík najmä za FixedStrings.

btw, trochu sa mi zatmelo pred očami, keď som videl napísané “Ríchla cache”, Nabudúce daj, pls, trochu pozor. Viacerí sme už starší, srdce už nie je také silné ako bývalo… :wink:

s.

Vdaka za pochvalu, aj upozornenie. Fixol som to.