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

From Rikkiepedia
Jump to navigation Jump to search
Created page with "Při práci s externími službami, jako je stahování webových stránek, používejte knihovny `requests` a `BeautifulSoup`. Dejte si pozor na limity – mnoho webů omezuje počet požadavků, takže do skriptu vložte pauzy (např. `time.sleep()`) a respektujte soubor `robots.txt`. Automatizace by nikdy neměla narušovat fungování cizích serverů. Podobně u tabulek využijte `pandas`, ale pamatujte, že paměťová náročnost roste s velikostí dat – pro mal..."
 
mNo edit summary
 
Line 1: Line 1:
Při práci s externími službami, jako je stahování webových stránek, používejte knihovny `requests` a `BeautifulSoup`. Dejte si pozor na limity mnoho webů omezuje počet požadavků, takže do skriptu vložte pauzy (např. `time.sleep()`) a respektujte soubor `robots.txt`. Automatizace by nikdy neměla narušovat fungování cizích serverů. Podobně u tabulek využijte `pandas`, ale pamatujte, že paměťová náročnost roste s velikostí dat – pro malé soubory stačí `csv` modul.<br><br>Verzování kódu v projektech, kde se kombinují různé verze knihoven, bývá častým zdrojem chyb. Nejde jen o to, aby se aplikace sestavila, ale aby byla reprodukovatelná a aby každý člen týmu pracoval se stejnými závislostmi. Základní pravidlo zní: určete, co je pro projekt klíčové, a to verzujte explicitně. U malých projektů postačí zamknout přesné verze, u větších systémů je nutné zavést pravidla pro aktualizace a zpětnou kompatibilitu.<br><br>Vyvarujte se také hlubokému vnořování. Pokud máte tři úrovně if-else nebo for smyček, je to signál k refaktoringu. Použijte early return: místo if (condition) { … } else { … } napište if (!condition) return; a pokračujte rovnou. Tím se snižuje mentální zátěž a kód je lineárnější. Stejně tak se vyhněte opakování – pokud se nějaká logika vyskytuje na více místech, vytáhněte ji do sdílené funkce.<br><br>Další pastí je zapomínání na okolní prostředí – skript, který běží na Windows, může selhat na Linuxu kvůli odlišným oddělovačům cest. Používejte funkce z `pathlib.Path`, které jsou multiplatformní, a testujte skript na více zařízeních, pokud to je možné. Důležité je také verzování – i jednoduchý skript uložte do Gitu, abyste se mohli vrátit k předchozí funkční verzi, když něco rozbijete. Tento návyk se vám vyplatí u všech projektů.<br><br>Konzistence je další oblast, kde se NoSQL liší. Mnoho systémů nabízí takzvanou eventuální konzistenci – po zápisu nemusí být data okamžitě viditelná pro všechny čtenáře. To je v pořádku pro sociální sítě nebo logy, ale není vhodné pro bankovní transakce, kde potřebujete přísnou konzistenci. Pokud takovou transakci musíte udělat, budete ji modelovat přes více zápisů a kompenzační operace, což je složitější než v SQL. Ptejte se, co se stane, když vypadne uzel a zápis se nepodaří dokončit.<br><br>Než začnete psát první skript, ujasněte si, co přesně chcete automatizovat. Rozdělte úkol na malé kroky: co je vstupem, co výstupem a jaké operace se mají provést. Například pokud potřebujete hromadně přejmenovat soubory, zjistěte, v jakém formátu jsou názvy, a napište jednoduchý cyklus, který projde složku a upraví názvy podle vzoru. Python k tomu nabízí moduly jako `os` a `pathlib`, které práci se soubory zjednodušují.<br><br>Jak se vyhnout častým chybám při psaní skriptů Nejčastější chybou začátečníků je tvrdé zakódování cest k souborům. Pokud použijete absolutní cestu, skript bude fungovat pouze na vašem počítači. Místo toho použijte relativní cesty nebo proměnné, které umožní skript spustit kdekoli. Druhým problémem je ignorování výjimek – soubor nemusí existovat, síť může být nedostupná, vstup nemusí odpovídat očekávání. Vždy obalte rizikové operace do bloku `try/except` a na chyby reagujte srozumitelnou hláškou.<br><br>Komentáře používejte střídmě. Dobrý kód se komentuje sám, pokud jsou názvy výstižné a logika přehledná. Komentář by měl vysvětlovat „proč", ne „co". Například „provedeme kontrolu, protože starší prohlížeče nepodporují fetch" je užitečné, ale „přičteme 1" není. Pokud zjistíte, že potřebujete komentář k objasnění složitého výrazu, raději výraz rozdělte do proměnných s názvy, které popisují jednotlivé kroky.<br><br>Na závěr si osvojte techniku logování. Místo pouhého `print()` zaznamenávejte průběh do souboru pomocí modulu `logging`. Díky tomu zjistíte, kdy a kde skript selhal, i když běží na pozadí. Automatizace je o tom, aby vám práce ubyla pokud vám skript přináší víc starostí než užitku, vraťte se k jednoduššímu řešení. Začněte malými úkoly, postupně přidávejte složitější logiku a brzy zjistíte, že Python je mocný nástroj, který vám ušetří spoustu času.<br><br>Další pastí je verzování samotného kódu podle data, nikoliv podle sémantické verze. Pokud přidáváte nové funkce, ale zároveň měníte staré, zvyšte major verzi. Pokud jen opravujete chyby, zvyšte minor verzi. Pokud měníte jen interní detaily, zvyšte patch. Toto pravidlo musí být napsané v dokumentaci projektu a každý člen týmu ho musí dodržovat. Bez toho se rychle stane, že dvě verze knihovny mají stejné číslo, ale různé chování, což je nejhorší možný scénář.
Postman je jedním z nejrozšířenějších nástrojů pro testování a dokumentaci API. Naučit se s ním pracovat vyžaduje více než jen odeslat pár požadavků jde o systematický přístup, který vám ušetří hodiny ladění. Následující postupy vycházejí z reálné praxe a zaměřují se na konkrétní činnosti, které využijete při každodenní práci s rozhraními.<br><br>Typické chyby a prevence Nejčastější chybou je spoléhání na „nejnovější dostupnou verzi". To vede k tomu, že se build chová odlišně na různých počítačích, protože prostředí stáhne pokaždé jinou verzi. Řešením je soubor zámků, který zaznamená přesnou verzi každé knihovny a také hash jejího zdroje. Tento soubor musí být commitnutý a nesmí se měnit ručně. Druhou častou chybou je aktualizace knihovny, která mění chování v jiné části projektu, aniž by to byl reflektováno v testech. Proto si před aktualizací spusťte celou testovací sadu a porovnejte výstup před a po změně.<br><br>Když zákazník uslyší „bude to za tři dny", automaticky to bere jako závazek. I když dodáte o den dřív, problém není v rychlosti, ale v tom, že jste slíbili něco, co jste nemohli garantovat. Komunikace odhadu času není o tom, co zvládnete, ale o tom, co dokážete obhájit. Základem je oddělit přání od reality: co chcete stihnout, a co je skutečně reálné při běžném provozu.<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>Nakonec si pamatujte, že odhad není prodejní argument. Pokud zákazník tlačí na rychlost, protože chce nízkou cenu, nikdy nekývněte na nereálný termín jen kvůli zakázce. Radši mu vysvětlete, co všechno se musí udělat, a nabídněte kompromis – třeba zkrácení rozsahu práce. Když ukážete, že odhad stavíte na faktech, zákazník si vás váží víc, než když bezhlavě slíbíte. Až příště budete chtít říct „to bude rychlé", vzpomeňte si, že rychlost se měří výsledkem, ne slovy.<br><br>Na co si dát pozor při psaní testů Nejčastější chybou bývá testovat implementaci místo chování. Pokud test kontroluje, jak přesně funkce interně pracuje, stává se křehkým a každá změna kódu ho rozbije, i když je výsledek stále správný. Testujte tedy vstupy a výstupy, nikoliv vnitřní proměnné. Dalším častým problémem je používání reálných časů, náhodných hodnot nebo síťových volání přímo v testech takové testy jsou pomalé a někdy i nespolehlivé. Řešením je tyto závislosti nahradit falešnými objekty, tzv. mocky, nebo alespoň testovat s pevně stanovenými daty.<br><br>Další pastí je verzování samotného kódu podle data, nikoliv podle sémantické verze. Pokud přidáváte nové funkce, ale zároveň měníte staré, zvyšte major verzi. Pokud jen opravujete chyby, zvyšte minor verzi. Pokud měníte jen interní detaily, zvyšte patch. Toto pravidlo musí být napsané v dokumentaci projektu a každý člen týmu ho musí dodržovat. Bez toho se rychle stane, že dvě verze knihovny mají stejné číslo, ale různé chování, což je nejhorší možný scénář.<br><br>Nakonec nezapomeňte, že odhad je vždy pravděpodobnostní, ne jistota. Dobrý odhad by měl být rozložen na optimistickou, realistickou a pesimistickou variantu. Pro plánování projektu používejte realistickou až pesimistickou. Optimistická hodnota je vhodná jen pro motivační účely, ne pro slibování termínů. Pokud se odhady často liší o více než 30 %, zaměřte se na zlepšení rozkladu úkolů a sběr dat – to je cesta k trvalejší přesnosti.<br><br>Automatizace kontroly kompatibility místo ručního dohledu Ruční sledování verzí u více knihoven je neudržitelné, proto je nutné zapojit automatizované nástroje. Nejde o žádný konkrétní software, ale o princip: do CI (průběžné integrace) přidejte krok, který ověří, zda všechny deklarované závislosti existují a zda jejich verze odpovídají definovanému rozsahu. Tato kontrola by měla běžet při každém commitu a při každém vydání. Dále si vytvořte skript, který generuje zámek verzí (lockfile) pro celý projekt. Tento zámek zachytí přesné verze všech knihoven, které se aktuálně používají, a to včetně tranzitivních závislostí. Bez takového zámku se může stát, že vývojář na svém počítači pracuje s jinou kombinací než produkce, a to vede k nepředvídatelným chybám.<br><br>Nejdřív si určete tři scénáře: optimistický, realistický a pesimistický. Optimistický počítejte jen tehdy, když máte jistotu, že nezasáhne žádná nečekaná překážka. Realistický by měl být váš standardní odhad, se kterým jdete ven. Pesimistický si nechte v záloze pro interní plánování, ale zákazníkovi o něm nemluvte. Pokud mu řeknete rovnou nejhorší možný termín, budete vypadat neschopně; pokud mu dáte jen ten optimistický, riskujete zklamání.

Latest revision as of 17:56, 21 August 2026

Postman je jedním z nejrozšířenějších nástrojů pro testování a dokumentaci API. Naučit se s ním pracovat vyžaduje více než jen odeslat pár požadavků – jde o systematický přístup, který vám ušetří hodiny ladění. Následující postupy vycházejí z reálné praxe a zaměřují se na konkrétní činnosti, které využijete při každodenní práci s rozhraními.

Typické chyby a prevence Nejčastější chybou je spoléhání na „nejnovější dostupnou verzi". To vede k tomu, že se build chová odlišně na různých počítačích, protože prostředí stáhne pokaždé jinou verzi. Řešením je soubor zámků, který zaznamená přesnou verzi každé knihovny a také hash jejího zdroje. Tento soubor musí být commitnutý a nesmí se měnit ručně. Druhou častou chybou je aktualizace knihovny, která mění chování v jiné části projektu, aniž by to byl reflektováno v testech. Proto si před aktualizací spusťte celou testovací sadu a porovnejte výstup před a po změně.

Když zákazník uslyší „bude to za tři dny", automaticky to bere jako závazek. I když dodáte o den dřív, problém není v rychlosti, ale v tom, že jste slíbili něco, co jste nemohli garantovat. Komunikace odhadu času není o tom, co zvládnete, ale o tom, co dokážete obhájit. Základem je oddělit přání od reality: co chcete stihnout, a co je skutečně reálné při běžném provozu.

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.

Nakonec si pamatujte, že odhad není prodejní argument. Pokud zákazník tlačí na rychlost, protože chce nízkou cenu, nikdy nekývněte na nereálný termín jen kvůli zakázce. Radši mu vysvětlete, co všechno se musí udělat, a nabídněte kompromis – třeba zkrácení rozsahu práce. Když ukážete, že odhad stavíte na faktech, zákazník si vás váží víc, než když bezhlavě slíbíte. Až příště budete chtít říct „to bude rychlé", vzpomeňte si, že rychlost se měří výsledkem, ne slovy.

Na co si dát pozor při psaní testů Nejčastější chybou bývá testovat implementaci místo chování. Pokud test kontroluje, jak přesně funkce interně pracuje, stává se křehkým a každá změna kódu ho rozbije, i když je výsledek stále správný. Testujte tedy vstupy a výstupy, nikoliv vnitřní proměnné. Dalším častým problémem je používání reálných časů, náhodných hodnot nebo síťových volání přímo v testech – takové testy jsou pomalé a někdy i nespolehlivé. Řešením je tyto závislosti nahradit falešnými objekty, tzv. mocky, nebo alespoň testovat s pevně stanovenými daty.

Další pastí je verzování samotného kódu podle data, nikoliv podle sémantické verze. Pokud přidáváte nové funkce, ale zároveň měníte staré, zvyšte major verzi. Pokud jen opravujete chyby, zvyšte minor verzi. Pokud měníte jen interní detaily, zvyšte patch. Toto pravidlo musí být napsané v dokumentaci projektu a každý člen týmu ho musí dodržovat. Bez toho se rychle stane, že dvě verze knihovny mají stejné číslo, ale různé chování, což je nejhorší možný scénář.

Nakonec nezapomeňte, že odhad je vždy pravděpodobnostní, ne jistota. Dobrý odhad by měl být rozložen na optimistickou, realistickou a pesimistickou variantu. Pro plánování projektu používejte realistickou až pesimistickou. Optimistická hodnota je vhodná jen pro motivační účely, ne pro slibování termínů. Pokud se odhady často liší o více než 30 %, zaměřte se na zlepšení rozkladu úkolů a sběr dat – to je cesta k trvalejší přesnosti.

Automatizace kontroly kompatibility místo ručního dohledu Ruční sledování verzí u více knihoven je neudržitelné, proto je nutné zapojit automatizované nástroje. Nejde o žádný konkrétní software, ale o princip: do CI (průběžné integrace) přidejte krok, který ověří, zda všechny deklarované závislosti existují a zda jejich verze odpovídají definovanému rozsahu. Tato kontrola by měla běžet při každém commitu a při každém vydání. Dále si vytvořte skript, který generuje zámek verzí (lockfile) pro celý projekt. Tento zámek zachytí přesné verze všech knihoven, které se aktuálně používají, a to včetně tranzitivních závislostí. Bez takového zámku se může stát, že vývojář na svém počítači pracuje s jinou kombinací než produkce, a to vede k nepředvídatelným chybám.

Nejdřív si určete tři scénáře: optimistický, realistický a pesimistický. Optimistický počítejte jen tehdy, když máte jistotu, že nezasáhne žádná nečekaná překážka. Realistický by měl být váš standardní odhad, se kterým jdete ven. Pesimistický si nechte v záloze pro interní plánování, ale zákazníkovi o něm nemluvte. Pokud mu řeknete rovnou nejhorší možný termín, budete vypadat neschopně; pokud mu dáte jen ten optimistický, riskujete zklamání.