Hlavní navigace

Programátorské techniky nejen v C++

  • Optimalizace async. parseru JSON v C++20

    Toto je dodatek k předchozímu článku o parsování JSON pomocí korutiny. Ačkoliv původním záměrem nebylo maximalizovat rychlost, ale spíš benefit asynchronního zpracování, tak diskutéři pod článkem mne donutili podívat se na možnosti optimalizace právě na rychlost. Co měřit? Posuzovat efektivitu algoritmu podle rychlosti je asi ta nejjednodušší metrika, ale k tomu jsem se původně nechtěl snižovat. Jedno číslo, které nemusí vyjadřovat skutečnou efektivitu…
    8. 5. 2024 14:32 (aktualizováno)
  • Asynchroní parsování JSONu v C++20

    Tento článek je ukázkou a malým cvičením na korutiny. Ukážeme si, jak napsat parser JSONu jako korutinu v C++20 Motivace Asynchronní parsování JSONu najde uplatnění zejména u programů, které komunikují po síťovém spojení nebo používají asynchronní vstupně výstupní operace. Jako příklad si můžeme uvést HTTP server, který přijme request od klienta ve formátu JSON. 
    4. 5. 2024 14:28 (aktualizováno)
  • Sdílení objektů mezi vlákny v C++20 (II)

    Tento článek je volným pokračování předchozího článku Sdílení objektů mezi vlákny jednoduše v C++20. Tentokrát se podíváme na jiné řešení, které má ambice se dostat do normy C++26 Synchronized_value na CppConu Krátké představení nového návrhu najdete ve videu Lightning Talk: Thread Safety With synchronized_value in C++ – Jørgen Fogh – CppCon 2023. Video stojí za shlédnutí, protože má něco přes 3 minuty, včetně upoutávky na CppCon 2024 na začátku videa
    25. 4. 2024 16:08
  • Asynchronní cykly v C++20

    Pro podporu asynchroních cyklů C++20 byl navržen příkaz for co_await. Problém je, že nakonec se tento návrh do normy nedostal. Máme nějakou náhradu? for co_await Příkaz for asi nemusím představovat. Jeho použití pro procházení kontejnerů a rozsahů asi také ne. Kdyžtak pro zopakování /---pre std::vector<int> items={1,2,3,4}; for (int x: items) { std::cout << x << std::endl; } \---
    13. 4. 2024 14:14 (aktualizováno)
  • RVO pro korutiny (C++20)

    RVO znamená Return Value Optimization a tentokrát se podíváme na to, jak toto téma ovlivňují korutiny v C++ Co je RVO (Return Value Optimization) RVO je v C++ standardizované od verze 17. Takže se v tomhle pohledu jedná celkem o novinku. Přesto se překladače snažily o tento typ optimalizace před verzí 17. Pro  vysvětlení, o co přesně jde, začnu příkladem
    31. 3. 2024 14:49
  • Knihovna libcoro - korutiny pro C++20 (revize)

    Po určité době jsem se rozhodl revidovat svou knihovnu pro práci s korutinami v C++20. Během používání jsem si zapsal postřehy z dosavadního vývoje a tak vznikla nová knihovna která se snaží řešit některé problémy předchozí verze. Motivace Protože ani C++20 ani C++23 a vypadá to že ani C++26 nepřinese standardní nástroje na práci s korutinami a asynchronními operacemi, mým cílem bylo přijít s vlastním řešením v podobě této knihovny…
    24. 3. 2024 18:15
  • Sdílení objektů mezi vlákny jednoduše v C++20

    Programování vícevláknových aplikací může být pro některé programátory skutečnou výzvou. Problémové situace nastávají kdykoliv vlákna přistupují na sdílené objekty. Zapomenutá synchronizace je často zdrojem nepředvídatelného chování a náhodných pádů. Ale vhodným nástrojem si lze práci zjednodušit a kód dobře zabezpečit
    11. 2. 2024 13:55
  • Trable s moduly v C++20/23

    Již v roce 2020 jsme se dočkali nového nástroje na organizaci zdrojových souborů u velkých projektů v C++, a to jsou moduly. V tomto článku se pokusím formulovat svůj rozporuplný pocit, který z toho mám. Jak asi tušíte, považuji se za „C++ maximalistu“ a též se snažím držet krok s vývojem tohoto jazyka. S různými úspěchy se mi to daří a to navzdory tomu, že píšeme rok 2024 a poslední schválenou verzí by měla být C++23, já se neustále probírám novinkami v C++20. Už jsem se úspěšně popral s koruti
    14. 1. 2024 18:58 (aktualizováno)
  • NOSTR, "pštrosí" sociální síť

    V článku proberu nově vznikající decentralizovanou síť NOSTR. Co to je, v čem stojí za pozornost, jakými bolestmi trpí, co se nepovedlo a zda to vůbec má smysl. NOSTR je zkratka, která znamená Notes and Other Stuff Transmitted by Relay. Často jej snadno poznáte pomocí loga zobrazující pštrose – jako ostrich. 
    20. 8. 2023 13:46
  • Napsal jsem si databázi v C++

    Možná někoho napadne, co je to za bláznivý nápad, proč by si někdo psal novou databázi. Není to zbytečná práce? Proč nesáhnout po něčem existujícím? Databází máme přehršel. Na druhou stranu, proč ne. Uplatnění si určitě najde Co je DocDB[1] Nejprve bych trochu poupravil clickbaitový titulek.  Určitě se nejedná o „standalone“ databázi, ale o knihovnu pro C++, kdy je databáze integrální součástí C++ projektu – tedy přímo realizovaná ve výsledném programu, nikoliv tedy jako externí server…
    16. 7. 2023 20:58 (aktualizováno)