Toto ale uběhlo... Ještě nedávno jsem v prváku na bakalářském studiu hledal Aulu Q, kde jsme měli většinu přednášek, a za necelé tři týdny začíná ročník páty, čili poslední. Stejně jako minulý rok bych chtěl uvést, které předměty mě letos čekají a jak se na ně těším.
Na téma tohoto příspěvku mě přiměl příspěvek Martina Kopty v článku Vim Plugins You Should Know About: snimpate.vim. O co jde? Drtivá většina programů umožňuje měnit své chování, vzhled atd. pomocí editace nastavení. Pokud vám něco nevyhovuje, případně chybí, a máte možnost to změnit, tak proč to neudělat, že? Co ale když budete pracovat s tímto programem na jiném stroji, kde nebudete mít své nastavení? Budete schopni s tímto programem obstojně pracovat? Nad těmito otázkami bych se chtěl v tomto příspěvku zamyslet.
Po půl roce sucha (konečně) přináším další zajímavou programovací úlohu. Tentokrát se jedná o úlohu pro programátory v C++ a na své si přijdou především milovníci bitových manipulací :). A nebojte, nebude to žádná úloha stylu "vytvořte makro pro vzájemné prohození polovin předaného intu".
Valgrind je open-source nástroj, který slouží především pro ladění paměťových chyb (umí toho víc, např. profilování, ale tím se teď zabývat nebudu). V tomto příspěvu bych se chtěl ukázat jeho možnosti, co se týče detekce problémů při práci s pamětí a to tak, že vždy uvedu jednoduchý příklad kódu (omezím se na jazyk C, ale valgrind zvládá programy napsané v libovolném jazyce, ať už je výsledek kompilovaný či interpretovaný, ovšem hlavně se používá pro programy napsané v C a C++), ve kterém se nachází paměťová chyba a ukázku, jakým výstupem na tuto chybu zareaguje valgrind.
Předtím, než jsem začal k editaci zdrojových souborů k LaTeXu používat VIM, tak jsem používal vývojové prostředí Kile (mohu s klidem doporučit). Mezi jednu z výhod tohoto prostředí bylo automatické vytváření koster pro bibliografické záznamu v BibTeXu. Z menu jste si zvolili typ záznamu a vygeneroval se vám kostra. Jelikož mně něco takového ve VIMu chybělo a nenašel jsem plugin, který by to řešil, tak jsem si napsal vlastní plugin, který to řeší.
Většina programátorů ví o tom, že některé konstrukce mají tzv. nedefinované chování a že by se jim měli vyhýbat. Méně se ale už ví, že kromě nedefinovaného chování norma definuje další typy chování: "specifikované", implementačně závislé a nespecifikované. Po přečtení tohoto příspěvku byste měli mít jasno, jaký je mezi těmito chováními rozdíl a kterým z nich se vyhýbat.
Ve Vimu jsem si oblíbil šikovnou utilitu (plugin) Taglist, která s pomocí programu ctags umí pro editovaný soubor (či explicitně zvolené soubory) zobrazit postranní okno se seznamem (stromem) symbolů, které se v daným souborech vyskytují, jako je např. seznam modulů, typů, funkcí atd. Ostatně mrkněte na screenshoty. Usnadňuje to orientaci a přechod mezi jednotlivými soubory. Tento plugin podporuje celou řadu jazyků (kolem 40), mezi které patří např. C, C++, Python, PHP atd. Bohužel jazyk Haskell není podporován a nepodařilo se mně najít kompletní postup, jak tuto podporu přidat (pouze střípky z diskusí), proto v tomto příspěvku přináším kompletní návod, jak tuto podporu přidat.
Našel jsem zajímavý C++ kvíz.
Každý jazyk obsahuje určitou množinu klíčových slov a množinu rezervovaných slov (ta může být i prázdná, např. v jazyce Fortran, což má za následek možnost solidně zmást případného čtenáře zdrojového kódu :)) a programátor si časem osvojí většinu z těch, která se běžně používají (nebo nepoužívají, ale jsou nechvalně známá, např. goto). Kromě nich ale občas v jazyce existují klíčová slova méně známá, která, ať už z důvodu toho, že jejich význam pozbyl důležitosti či je většina překladačů nepodporuje, nebo se používají pouze ve speciálních případech. V tomto příspěvku bych se chtěl zaměřit na takováto klíčová slova v jazycích C a C++.
Firefox jsem začal používat začátkem roku 2006 a používám jej doteď (resp. nyní mám Iceweasel, protože používám Debian, ale to je detail). Zkoušel jsem i jiné prohlížeče, ale Firefox mě ze všech prohlížečů, které jsem zkoušel, vyhovoval nejvíce. Z největší části do bylo dáno podporou doplňků (add-ons), kterých je v dnešní době neskutečně velké množství a dá se jimi modifikovat, přidávat a odebírat spoustu vlastností. Během doby, co Firefox používám, jsem narazil na celou řadu užitečných doplňků, které bych v tomto příspěvku chtěl prezentovat.