<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://rikkiepedia.nl/index.php?action=history&amp;feed=atom&amp;title=Jak_zorganizovat_verzov%C3%A1n%C3%AD_k%C3%B3du_p%C5%99i_v%C3%ADce_knihovn%C3%A1ch</id>
	<title>Jak zorganizovat verzování kódu při více knihovnách - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://rikkiepedia.nl/index.php?action=history&amp;feed=atom&amp;title=Jak_zorganizovat_verzov%C3%A1n%C3%AD_k%C3%B3du_p%C5%99i_v%C3%ADce_knihovn%C3%A1ch"/>
	<link rel="alternate" type="text/html" href="https://rikkiepedia.nl/index.php?title=Jak_zorganizovat_verzov%C3%A1n%C3%AD_k%C3%B3du_p%C5%99i_v%C3%ADce_knihovn%C3%A1ch&amp;action=history"/>
	<updated>2026-08-31T17:04:26Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://rikkiepedia.nl/index.php?title=Jak_zorganizovat_verzov%C3%A1n%C3%AD_k%C3%B3du_p%C5%99i_v%C3%ADce_knihovn%C3%A1ch&amp;diff=107470&amp;oldid=prev</id>
		<title>AntoniettaLeniha at 17:56, 21 August 2026</title>
		<link rel="alternate" type="text/html" href="https://rikkiepedia.nl/index.php?title=Jak_zorganizovat_verzov%C3%A1n%C3%AD_k%C3%B3du_p%C5%99i_v%C3%ADce_knihovn%C3%A1ch&amp;diff=107470&amp;oldid=prev"/>
		<updated>2026-08-21T17:56:50Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 17:56, 21 August 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Při práci s externími službami, jako &lt;/del&gt;je &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;stahování webových stránek, používejte knihovny `requests` &lt;/del&gt;a &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;`BeautifulSoup`&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Dejte si pozor na limity &lt;/del&gt;– &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;mnoho webů omezuje počet požadavků&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;takže do skriptu vložte pauzy (např&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;`time.sleep()`) &lt;/del&gt;a &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;respektujte soubor `robots.txt`. Automatizace by nikdy neměla narušovat fungování cizích serverů. Podobně u tabulek využijte `pandas`&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ale pamatujte, že paměťová náročnost roste &lt;/del&gt;s &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;velikostí dat – pro malé soubory stačí `csv` modul&lt;/del&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Verzování kódu v projektech, kde se kombinují různé verze knihoven, bývá častým zdrojem chyb&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Nejde jen o to&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;aby &lt;/del&gt;se &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;aplikace sestavila&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ale aby byla reprodukovatelná a aby každý člen týmu pracoval se stejnými závislostmi&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Základní pravidlo zní: určete, co &lt;/del&gt;je &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;pro projekt klíčové&lt;/del&gt;, a &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;to verzujte explicitně&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;U malých projektů postačí zamknout přesné verze, u větších systémů je nutné zavést pravidla pro aktualizace &lt;/del&gt;a &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;zpětnou kompatibilitu.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Vyvarujte &lt;/del&gt;se &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;také hlubokému vnořování&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Pokud máte tři úrovně if-else nebo for smyček&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;je &lt;/del&gt;to &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;signál k refaktoringu&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Použijte early return: místo if (condition) { … } else { … } napište if (!condition) return; &lt;/del&gt;a &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;pokračujte rovnou. Tím se snižuje mentální zátěž &lt;/del&gt;a &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;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&lt;/del&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Další pastí je zapomínání na okolní prostředí – skript&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;který běží na Windows, může selhat na Linuxu kvůli odlišným oddělovačům cest&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Používejte funkce z `pathlib.Path`&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;které jsou multiplatformní&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;a testujte skript na více zařízeních&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;pokud to je možné. Důležité je také verzování – i jednoduchý skript uložte do Gitu&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;abyste se mohli vrátit k předchozí funkční verzi, když něco rozbijete&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Tento návyk se vám vyplatí u všech projektů.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Konzistence je další oblast&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;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&lt;/del&gt;, ale &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;není vhodné pro bankovní transakce&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;kde potřebujete přísnou konzistenci&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Pokud takovou transakci musíte udělat, budete ji modelovat přes více zápisů a kompenzační operace, což &lt;/del&gt;je &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;složitější než v SQL. Ptejte se, &lt;/del&gt;co &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;se stane&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;když vypadne uzel &lt;/del&gt;a &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;zápis se nepodaří dokončit&lt;/del&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Než začnete &lt;/del&gt;psát &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;první skript&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ujasněte si, co přesně chcete automatizovat&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Rozdělte úkol na malé kroky: co je vstupem, co výstupem &lt;/del&gt;a &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;jaké operace se mají provést&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Například pokud potřebujete hromadně přejmenovat soubory, zjistěte&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;v jakém formátu jsou názvy, a &lt;/del&gt;napište &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;jednoduchý cyklus&lt;/del&gt;, který &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;projde složku &lt;/del&gt;a &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;upraví názvy podle vzoru&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Python k tomu nabízí moduly jako `os` &lt;/del&gt;a &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;`pathlib`&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;které práci &lt;/del&gt;se &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;soubory zjednodušují&lt;/del&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;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&lt;/del&gt;. Pokud &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;použijete absolutní cestu, skript bude fungovat pouze &lt;/del&gt;na &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;vašem počítači. Místo toho použijte relativní cesty nebo proměnné&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;které umožní skript spustit kdekoli. Druhým problémem je ignorování výjimek – soubor nemusí existovat&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;síť může být nedostupná, vstup nemusí odpovídat očekávání. Vždy obalte rizikové operace do bloku `try/except` a &lt;/del&gt;na &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;chyby reagujte srozumitelnou hláškou&lt;/del&gt;.&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Komentáře používejte střídmě. Dobrý kód &lt;/del&gt;se &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;komentuje sám&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;pokud jsou názvy výstižné &lt;/del&gt;a &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;logika přehledná&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Komentář by měl vysvětlovat „proč&quot;&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ne „co&quot;&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Například „provedeme kontrolu, protože starší prohlížeče nepodporují fetch&lt;/del&gt;&quot; &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;je užitečné&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ale „přičteme 1&quot; není. Pokud zjistíte&lt;/del&gt;, že &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;potřebujete komentář k objasnění složitého výrazu&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;raději výraz rozdělte do proměnných s názvy, které popisují jednotlivé kroky&lt;/del&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Na &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;závěr &lt;/del&gt;si &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;osvojte techniku logování&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Místo pouhého `print()` zaznamenávejte průběh do souboru pomocí modulu `logging`. Díky tomu zjistíte&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;kdy &lt;/del&gt;a &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;kde skript selhal&lt;/del&gt;, i když &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;běží na pozadí&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Automatizace &lt;/del&gt;je &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;o tom&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;aby vám práce ubyla &lt;/del&gt;– &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;pokud vám skript přináší víc starostí než užitku&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;vraťte se k jednoduššímu řešení&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Začněte malými úkoly&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;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&lt;/del&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;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ář.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Postman &lt;/ins&gt;je &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;jedním z nejrozšířenějších nástrojů pro testování &lt;/ins&gt;a &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;dokumentaci API&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Naučit se s ním pracovat vyžaduje více než jen odeslat pár požadavků &lt;/ins&gt;– &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;jde o systematický přístup&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;který vám ušetří hodiny ladění&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Následující postupy vycházejí z reálné praxe &lt;/ins&gt;a &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;zaměřují se na konkrétní činnosti&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;které využijete při každodenní práci &lt;/ins&gt;s &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;rozhraními&lt;/ins&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Typické chyby a prevence Nejčastější chybou je spoléhání na „nejnovější dostupnou verzi&quot;&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;To vede k tomu&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;že &lt;/ins&gt;se &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;build chová odlišně na různých počítačích&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;protože prostředí stáhne pokaždé jinou verzi&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Řešením &lt;/ins&gt;je &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;soubor zámků&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;který zaznamená přesnou verzi každé knihovny &lt;/ins&gt;a &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;také hash jejího zdroje&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Tento soubor musí být commitnutý &lt;/ins&gt;a &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;nesmí &lt;/ins&gt;se &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;měnit ručně&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Druhou častou chybou je aktualizace knihovny, která mění chování v jiné části projektu&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;aniž by &lt;/ins&gt;to &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;byl reflektováno v testech&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Proto si před aktualizací spusťte celou testovací sadu &lt;/ins&gt;a &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;porovnejte výstup před &lt;/ins&gt;a &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;po změně&lt;/ins&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Když zákazník uslyší „bude to za tři dny&quot;&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;automaticky to bere jako závazek&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;I když dodáte o den dřív&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;problém není v rychlosti&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ale v tom&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;že jste slíbili něco&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;co jste nemohli garantovat&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Komunikace odhadu času není o tom&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;co zvládnete&lt;/ins&gt;, ale &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;o tom&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;co dokážete obhájit&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Základem &lt;/ins&gt;je &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;oddělit přání od reality: &lt;/ins&gt;co &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;chcete stihnout&lt;/ins&gt;, a &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;co je skutečně reálné při běžném provozu&lt;/ins&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Na závěr si zvykněte testy &lt;/ins&gt;psát &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;průběžně&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ne až na konci projektu&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Začněte s jednoduchou funkcí &lt;/ins&gt;a &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;postupně přidávejte další&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Pokud narazíte na chybu&lt;/ins&gt;, napište &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;nejdříve test&lt;/ins&gt;, který &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ji reprodukuje, &lt;/ins&gt;a &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;teprve poté opravujte kód&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Tento postup vám ušetří spoustu času &lt;/ins&gt;a &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;zajistí, že se chyba už nevrátí. Až si osvojíte základy&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;podívejte &lt;/ins&gt;se &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;na pokročilejší funkce pytestu, jako jsou fixture s rozsahem, conftest.py nebo pluginy – ale to už je jiný příběh&lt;/ins&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Nakonec si pamatujte, že odhad není prodejní argument&lt;/ins&gt;. Pokud &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;zákazník tlačí &lt;/ins&gt;na &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;rychlost&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;protože chce nízkou cenu&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;nikdy nekývněte &lt;/ins&gt;na &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;nereálný termín jen kvůli zakázce&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Radši mu vysvětlete, co všechno &lt;/ins&gt;se &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;musí udělat&lt;/ins&gt;, a &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;nabídněte kompromis – třeba zkrácení rozsahu práce&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Když ukážete, že odhad stavíte na faktech, zákazník si vás váží víc&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;než když bezhlavě slíbíte&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Až příště budete chtít říct „to bude rychlé&lt;/ins&gt;&quot;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;vzpomeňte si&lt;/ins&gt;, že &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;rychlost se měří výsledkem&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ne slovy&lt;/ins&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Na &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;co &lt;/ins&gt;si &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;dát pozor při psaní testů Nejčastější chybou bývá testovat implementaci místo chování&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Pokud test kontroluje, jak přesně funkce interně pracuje&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;stává se křehkým &lt;/ins&gt;a &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;každá změna kódu ho rozbije&lt;/ins&gt;, i když &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;je výsledek stále správný. Testujte tedy vstupy a výstupy, nikoliv vnitřní proměnné&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Dalším častým problémem &lt;/ins&gt;je &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;používání reálných časů&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;náhodných hodnot nebo síťových volání přímo v testech &lt;/ins&gt;– &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;takové testy jsou pomalé a někdy i nespolehlivé. Řešením je tyto závislosti nahradit falešnými objekty&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;tzv&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;mocky&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;nebo alespoň testovat s pevně stanovenými daty&lt;/ins&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;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ář&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;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.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;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.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;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í&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key Rikkie_my_wiki:diff:1.41:old-107282:rev-107470:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>AntoniettaLeniha</name></author>
	</entry>
	<entry>
		<id>https://rikkiepedia.nl/index.php?title=Jak_zorganizovat_verzov%C3%A1n%C3%AD_k%C3%B3du_p%C5%99i_v%C3%ADce_knihovn%C3%A1ch&amp;diff=107282&amp;oldid=prev</id>
		<title>RuthieTrommler: Created page with &quot;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...&quot;</title>
		<link rel="alternate" type="text/html" href="https://rikkiepedia.nl/index.php?title=Jak_zorganizovat_verzov%C3%A1n%C3%AD_k%C3%B3du_p%C5%99i_v%C3%ADce_knihovn%C3%A1ch&amp;diff=107282&amp;oldid=prev"/>
		<updated>2026-08-21T17:43:36Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;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...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;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.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;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.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;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.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;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ů.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;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.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;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í.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;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.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;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č&amp;quot;, ne „co&amp;quot;. Například „provedeme kontrolu, protože starší prohlížeče nepodporují fetch&amp;quot; je užitečné, ale „přičteme 1&amp;quot; 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.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;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.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;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ář.&lt;/div&gt;</summary>
		<author><name>RuthieTrommler</name></author>
	</entry>
</feed>