Hlavní navigace

Programátorské techniky nejen v C++

  • SEH v Linuxu (C++)

    Pokud programujete ve Windows, tak zkratka SEH vám asi není úplně neznámá. SEH znamená „Structured Exception Handling“, jedná se o nadstavbu nad C/C++ a připomíná to klasické C++ výjimky. Začátek bloku se označuje klíčovým slovem __try a blok provedený při výjimce se nazývá __except. SEH disponuje ještě klíčovým slovem __finally
    5. 9. 2012 0:58 (aktualizováno)
  • Jak zakázat explicitní fsync (v Ubuntu)

    Sync, fsync, fdatasync, díváte se na jednu trojici z mnoha zel, které na linuxu občas potkávám. Tyto příkazy obecně mají zaručovat programu, že všechny data která do souboru zapsal, budou fyzicky zapsána na disk. A teď by se mohlo diskutovat o tom, jestli vůbec má uživatelská aplikace (čili program běžící v userspace) právo takto přímo manipulovat s HW daného počítače…
    9. 6. 2012 23:46 (aktualizováno)
  • Náhrada chybějícího finally v C++11

    Znám dost kolegů programátorů (a internetové diskuze jsou jimi plné), kteří nelibě nesou neexistence klíčového slova finally v bloku try-catch. Blok uvozený klíčovým slovem finally se provadí vždy, bez ohledu, zda blok try skončil nebo neskončil výjimkou. Takový blok najdeme v Javě a hodně se využívá.
    6. 9. 2012 8:11 (aktualizováno)
  • Skrytá úskalí vícenásobné dědičnosti v C++

    Upozorňuji dopředu, že nehodlám zde probírat to, co všichni programátoři v C++ určitě znají a co si mohou přečíst na milionech stránkách, které nabídne google. Myslím tím zejména ony problémy s diamantovým děděním a jak správně pracovat s virtuální dědičností. Při práci s generikou, kdy se hojně používají „prázdné třídy“ časem narazíme na další komplikaci, které i zkušeného programátora překvapí a možná mu trošku zkomplikují život. 
    7. 5. 2012 0:13 (aktualizováno)
  • Tvoříme "vláčky" nejen v C++

    Dnes bych se chtěl ve svém krátkém blogpostu podělit o programovací techniku, kterou nazývám „vláček“. Myslím, že to nebude nic neznámého, je to věc, která se dá uplatnit nejen C++, ale většinou u všech objektových jazyků, kde je volání prováděno zkrze zápis objekt.metoda(), jako třeba Java. V některých jazycích najdeme vláčky v základu (smalltalk – říká se tomu „message chain“).
    25. 1. 2012 1:02 (aktualizováno)
  • Temná strana linuxu - spouštění procesů

    Jednoho dlouhého zimního večera jsem se rozhodl, že si napíšu v C++ třídu, která bude multiplatformě řešit spouštění procesů třetích stran z aplikace. Slovem multiplatformní mám na myslí hlavně Linux a Windows verzi. Nakonec se to povedlo, ale bylo to náročné, skoro jsem se začínal obávat, že univerzální rozhraní není možné napsat… tak aby tam byly roury, přesměrování, čekání na proces, nebo jeho paralelní běh. Nechci teď řešit kolik knihoven a v kterých balících se tohle řeší…
    23. 1. 2012 20:51 (aktualizováno)
  • Alokátory a operator new v C++

    Každý programátor v C++ ví, že pomocí operátoru new můžeme zkonstruovat objekt na globální haldě. Někdy je však potřeba provést alokaci nového objektu jinde, než na globální haldě. Slovíčko „někdy“ zde ale není úplně na místě, v praxi jsem si ověřil, že to přináší výhody, takže spíše by se sem hodilo slovíčko „často“.
    4. 1. 2012 19:43 (aktualizováno)