Zaujímavé linky #9

Po nejakom čase sa mi zas nahromadil zoznam zaujímavých liniek.

Porovnávanie stringov

Ešte na vysokej škole som robil diplomovku, ktorá sa týkala podobnosti textov. Táto knižnica implementuje mnohé algoritmy pre určenie podobnosti dvoch stringov (NGramy, GST, LCS,…).

Občas sa to môže hodiť.

Narazil som pri tom aj na zaujímavý algoritmus pre greedy výpočet editačnej vzdialenosti stringov, ktorý pracuje v lineárnej zložitosti (väčšina ostatných algoritmov má kvadratickú zložitosť) SIFT4.

Tu je niekoľko jeho implementácii (od JS, cez C# až po T-SQL):

Perfomace

Jedno zhrnutie trikov pre dosiahnutie lepšieho performace v dotnet kóde, niektoré triky sú priam extrémne. Osobne si myslím, že efektívny kód by nemal a nemusí byť nečitateľný. No pri niektorých týchto trikoch sa porušujú pravidlá OOP a SOLID princípov.

https://prodotnetmemory.com/slides/PerformancePatternsLong/

Pri tejto téme, inšpirovaný aj knižnicou StringSimmilarity som sa rozhodol skúsiť optimalizovať najpomalšiu časť mojej diplomovky. Na mojom notebooku mi vtedy spravenie testov trvalo 8 až 10 hodín, pričom som procesor vyťažil naplno, takže sa nedal pri tom ani otvoriť prehliadač.

Vo výsledku sa mi podarilo zrýchliť tú najpomalšiu časť približne až 4-násobne. Pričom som narazil na zaujímavé veci, celé sa to fungovalo ešte na .Net Framewroku 4. Takže až bude záujem napíšem o tom blog.

Nepredikovatelné ID-ćka

Často sa rieši problém nepredikovateľnách ID na webových stránkach alebo API. Nasledujúca knižnica s celočíselného ID alebo poľa ID-čiek spraví mierne „šifrované“ stringové ID, ktoré vyzerá ako ID s youtube.

Ďalšia knižnica pre value objekty

Source generátorov, ktoré generujú value objekty je plno. No táto ma zaujala hľavne tým, že genruje štruktúry, ktoré sa nedajú inicializovať na defaultnú hodnotu (ukazuje to už Visual Studio), v čom je obrovská sila.

Ako implementovať connection pool

Nasledujúca prednáška ukazuje ako je alebo bol implementovaný connection pool pre Npgsql. Je to hlavne ako sa vyhnúť lokovaniu a používa sa trieda Interlocked. Veľmi podobne sú v dotnete implementované aj ObjectPool-y.

Nekryptorafické hashe

Nekryptografické hashe sa hodia pri mnohých veciach, od nejakej práce zo stringami, cez filtrovanie requestov (Bloom filter) až po marketing (MinHash algoritmus).

Tu je knižnica, pre dotnet, ktorá niektoré poskytuje.

MiSTer FPGA

Asi najlepšia vec, ktorú som videl pre priaznivcov retro počítačov a konzol. Ide o malé zariadenie, ktoré pomocou FPGA emuluje rôzne typy konzol a počítačov od Amigy cez Atari, PMD 85, Ondra, ZX Spectrum a všetko na čo si len spomeniete. No nie je to softvérový emulátor, ale hardvérový, takže to má vždy správny takt, správnu rýchlosť aj rovnaké bugy ako pôvodné železo.

Vďaka technológii FPGA podporuje dopĺňanie ďalších retro počítačov, ktorých už teraz podporuje požehnane.

Viac info a zoznam podporovaných vecí je tu:

Tu je praktická ukážka a podrobný opis v češtine spolu s výhodami a nevýhodami tohto riešenia. Za mňa je to geniálna vec.

3.5`` disketa

Pri retre ešte zostaneme – prečo má disketa geniálny dizajn.

2 Likes