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