Jak zorganizovat verzování kódu při více knihovnách

První kroky: vytvořte si vlastní testovací projekt Nejefektivnější způsob, jak nahradit chybějící praxi, je simulovat reálné testování. Stáhněte si volně dostupnou webovou aplikaci nebo mobilní hru (nemusíte ji kupovat) a začněte ji systematicky procházet. Vytvořte si tabulku, do které zapíšete testovací scénáře: co očekáváte, co se stalo, a jaký je stupeň závažnosti případné chyby. Zaměřte se na hraniční hodnoty, prázdná pole, neplatné vstupy nebo chování při pomalém připojení.<br> <br> <br> <br> Optimalizace SQL dotazů není jen otázkou rychlejší odezvy, ale také stability celé aplikace. Pomalý dotaz totiž blokuje zdroje, které potřebují ostatní operace. Nejčastější chybou bývá vybírání zbytečných sloupců pomocí hvězdičky a absence indexů na sloupcích používaných v podmínkách WHERE. Než začnete cokoli měnit, zapněte si logování pomalých dotazů a změřte si výchozí stav. K tomu se hodí příkaz EXPLAIN, který ukáže, jak databáze plánuje dotaz provést.<br> <br> <br> <br> Pytest také umožňuje parametrizaci testů, což je skvělý způsob, jak otestovat mnoho kombinací vstupů bez psaní duplicitního kódu. Pomocí @pytest.mark.parametrize nadefinujete seznam hodnot a funkcí, která je postupně projde. To se hodí pro hraniční případy, jako je prázdný řetězec, nula, záporná čísla nebo prázdný seznam. Díky parametrizaci získáte lepší pokrytí a při selhání hned víte, která konkrétní kombinace nefunguje.<br> <br> <br> <br> Na závěr si zvykněte testy psát průběžně, ne až na konci projektu. Začněte s jednoduchou funkcí a postupně přidávejte další. Pokud narazíte na chybu, napište nejdříve test, který ji reprodukuje, a teprve poté opravujte kód. Tento postup vám ušetří spoustu času a zajistí, že se chyba už nevrátí. Až si osvojíte základy, podívejte se na pokročilejší funkce pytestu, jako jsou fixture s rozsahem, conftest.py nebo pluginy – ale to už je jiný příběh.<br> <br> <br> <br> Základní test vypadá tak, že do souboru s názvem test_nazev.py napíšete funkci test_něco() a uvnitř použijete příkaz assert. Například chcete-li ověřit, že funkce secti(2, 3) vrací 5, stačí napsat assert secti(2, 3) == 5. Pytest při selhání ukáže, které hodnoty se lišily, takže nemusíte psát vlastní hlášky. Důležité je testy psát tak, aby byly nezávislé na pořadí, a proto se vyhýbejte sdíleným proměnným napříč testy. Pokud potřebujete připravit data, použijte takzvané fixture, které se definují pomocí dekorátoru @pytest.fixture a pak se předávají jako parametry funkce.<br> <br> <br> <br> <span style="font-weight: 800;">Během přípravy si vytvořte</span> strukturovaný životopis, kde místo pracovní historie uvedete „Vlastní testovací projekty" a konkrétní ukázky: kolik chyb jste nalezli, jaké typy testů jste provedli, jaké nástroje jste používali. U pohovoru se nevyhýbejte otázce, proč nemáte praxi – vysvětlete, co jste se naučili, a ukažte svůj portfolio. Důležité je, abyste mluvili o tom, co jste dělali, ne o tom, co neumíte.<br> <br> <br> <br> Prakticky doporučuji zavést automatizovaný skript, který ověří konzistenci verzí mezi všemi soubory projektu. Tento skript spusťte jako součást CI, tedy před každým nasazením. Měl by kontrolovat, že deklarované verze odpovídají skutečně použitým a že žádný modul neodkazuje na neexistující číslo. Dále nastavte pravidlo, že každá změna závislosti musí projít code review a musí být zapsána do changelogu. Tím se vyhnete situaci, kdy někdo tiše povýší knihovnu a až po měsíci se objeví problém v produkci.<br> <br> <br> <br> Nakonec si zvykněte na limitování výsledků. Pokud potřebujete jen prvních sto řádků, použijte LIMIT. Databáze pak může ukončit zpracování dřív, než projde celou tabulku. Stejně tak se vyhněte přenosu obrovských datasetů do aplikace – zpracujte agregace na straně databáze. Pravidelně čistěte staré záznamy, ale pokud to není nutné, nearchivujte do stejné tabulky. Udržování tabulek v dobré kondici – bez fragmentace – také pomůže.<br> <br> <br> <br> Druhým častým problémem je používání funkcí na sloupcích v podmínkách. Pokud napíšete WHERE YEAR(datum) = 2024, index na sloupci datum se nepoužije, protože databáze musí funkci aplikovat na každý řádek. Řešení spočívá v porovnávání intervalů: WHERE datum >= '2024-01-01' AND datum <'2025-01-01'. Stejně dejte pozor na operace typu LIKE s divokou kartou na začátku vzoru, které také znemožní využití indexu.<br> <br> <br> <br> Než začnete tvořit první webovou stránku, je dobré pochopit, že HTML a CSS plní každý jinou roli. HTML definuje strukturu a obsah stránky, tedy nadpisy, odstavce, obrázky nebo odkazy. CSS pak určuje, jak tato struktura vypadá – barvy, písma, mezery nebo rozložení prvků. Pokud si tyto dvě technologie pletete, výsledek bude chaotický. Zkuste si představit dům: HTML jsou cihly a stěny, CSS je barva a zařízení interiéru.<img src="https://i.ytimg.com/vi/Zdb38_mMyoQ/hq720.jpg" alt="Úprava interieru v A3" style="max-width:450px;float:left;padding:10px 10px 10px 0px;border:0px;">