Správné verzování kódu při práci na více větvích

Při řešení konfliktů se zaměřte na to, co je skutečně potřeba změnit. Než začnete konflikt ručně upravovat, podívejte se na obě verze kódu a pochopte, proč ke konfliktu došlo. Často se stává, že konflikt je pouze zdánlivý — obě větve dělají stejnou věc jiným způsobem. V takovém případě je lepší konzultovat s autorem druhé změny a domluvit se na jednotném řešení. Po vyřešení konfliktů vždy spusťte testy a zkontrolujte, že vaše změny nezpůsobily regresi.<br> <br> <br> <br> Začít s API může znít jako složitý úkol, ale ve skutečnosti jde o rozhraní, které umožňuje dvěma programům spolu komunikovat. Nejjednodušší způsob, jak si to představit, je porovnat API s číšníkem v restauraci: vy si objednáte (pošlete požadavek), číšník to předá kuchyni (serveru) a přinese vám jídlo (data). Pro začátek nemusíte psát složité systémy – stačí vám nástroj na posílání HTTP požadavků a malý kousek testovacího kódu.<br> <br> <br> <br> Na závěr si vyzkoušejte složitější scénář: požadavek, který vyžaduje autentizaci. Registrace a získání klíče je běžná praxe, ale dávejte pozor na to, abyste klíč nikdy nezveřejnili. Používejte proměnné prostředí nebo konfigurační soubory, které ignoruje vaše verze správy zdrojového kódu. Soustřeďte se na správné zasílání klíče v hlavičce, které je dnes standardem. Postupně tak zvládnete i pokročilejší techniky a vaše aplikace začnou skutečně využívat sílu cizích služeb.<br> <br> <br> <br> Na závěr proveďte zátěžové testy s reálnými daty, ne jen s testovacími vzorky. Srovnejte rychlost dotazů, které vaše aplikace používá nejčastěji, a optimalizujte indexy. PostgreSQL nabízí pokročilé typy indexů (GIN, BRIN), které mohou výrazně zrychlit fulltextové vyhledávání nebo rozsahové dotazy. Po nasazení do produkce sledujte logy pomalých dotazů a postupně dolaďte výkon. Migrace tak nebude jen technickým cvičením, ale příležitostí k vylepšení celé databázové vrstvy.<br> <br> <br> <br> Migrace databáze mezi dvěma odlišnými systémy není jen kopírováním dat. MySQL a PostgreSQL se liší v datových typech, chování transakcí, syntaxi SQL i v přístupu k indexům. Nejčastější chybou bývá spoléhat na automatické nástroje bez předchozí analýzy schématu. Než začnete, zmapujte si všechny tabulky, pohledy, triggery a uložené procedury. Zvláštní pozornost věnujte sloupcům typu ENUM, které PostgreSQL nepodporuje nativně – převeďte je na text s CHECK omezením nebo na samostatnou číselníkovou tabulku.<br> <br> <br> <br> Když už data máte, přichází na řadu jejich zpracování. Začněte tím, že z odpovědi vytáhnete konkrétní hodnotu – třeba jméno nebo číslo. Většina moderních jazyků má funkce, které převedou JSON na slovník nebo objekt, takže nemusíte parsovat ručně. Otestujte si, co se stane, když API vrátí prázdný výsledek – dobrý kód by měl umět ošetřit i tuto situaci. Doporučuji psát si krátké úryvky kódu, které pak můžete použít jako stavební bloky pro složitější aplikace.<br> <br> <br> <br> Praktický postup: od exportu po ověření konzistence Pro samotný přenos dat použijte nástroj pgloader, který umí číst přímo z MySQL a zapisovat do PostgreSQL. Před spuštěním si připravte cílovou databázi s prázdným schématem – pgloader vytvoří tabulky automaticky, ale výsledné datové typy často nejsou optimální. Po importu proto zkontrolujte definice sloupců a upravte je ručně, zejména pokud jde o číselné typy (MySQL INT vs PostgreSQL INTEGER) nebo dekadická čísla. Pro velké tabulky zvažte rozdělení exportu na menší dávky, abyste předešli přetečení paměti serveru.<br> <br> <br> <br> Druhým krokem je vytvoření vlastního portfolia. Nemusíte mít přístup k placeným nástrojům – postačí vám bezplatné aplikace, které dobře znáte, nebo dokonce vlastní malý projekt. Vyberte si jednoduchou webovou stránku nebo mobilní aplikaci a začněte ji systematicky testovat. Zapisujte si každý nález do tabulky: popište krok, jakým jste problém reprodukovali, očekávané chování, skutečné chování a případně i prioritu. Dbejte na to, aby váš popis byl srozumitelný i pro člověka, který aplikaci nezná. Tento dokument pak poslouží jako ukázka vaší práce při pohovoru. Častým omylem je testování pouze „šťastné cesty" – tedy že vše funguje, když uživatel postupuje správně. Zkuste se zaměřit na okrajové případy, prázdná pole, nezvyklé vstupy nebo přerušení připojení.<br> <br> <br> <br> Celkově vzato, testování bez integračního prostředí je nejen možné, ale často rychlejší a spolehlivější. Zaměřte se na čistotu reducerů, správné mockování API a důkladné pokrytí chybových scénářů. Tím získáte robustní testy, které vám dají jistotu při každé změně kódu.<br> <br> <br> <br> Poslední částí je testování složitějších async toků, jako jsou sekvenční volání nebo paralelní requesty. Zde se vyplatí použít skutečný store s reducery, abyste mohli ověřit kompletní změnu stavu. Vytvořte si testovací helper, který vytvoří store s potřebnými reducery a middleware, a poté v testu dispatchujte async akci a čekejte na dokončení. Pomocí async/await a malého zpoždění (např. setImmediate) se vyhnete závodům. Hlavní chyba, které se vyvarujte, je používání setTimeout bez kontroly – v testech to vede k nestabilitě a pomalému běhu.