<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.it-core.eu/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=DwightStahlman</id>
	<title>IT-Core - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://www.it-core.eu/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=DwightStahlman"/>
	<link rel="alternate" type="text/html" href="https://www.it-core.eu/wiki/index.php?title=Special:Contributions/DwightStahlman"/>
	<updated>2026-09-05T05:21:33Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://www.it-core.eu/wiki/index.php?title=Kdy%C5%BE_psan%C3%AD_test%C5%AF_v_Pythonu_za%C4%8D%C3%ADn%C3%A1_bolet,_s%C3%A1hn%C4%9Bte_po_pytestu&amp;diff=199292</id>
		<title>Když psaní testů v Pythonu začíná bolet, sáhněte po pytestu</title>
		<link rel="alternate" type="text/html" href="https://www.it-core.eu/wiki/index.php?title=Kdy%C5%BE_psan%C3%AD_test%C5%AF_v_Pythonu_za%C4%8D%C3%ADn%C3%A1_bolet,_s%C3%A1hn%C4%9Bte_po_pytestu&amp;diff=199292"/>
		<updated>2026-08-29T04:53:49Z</updated>

		<summary type="html">&lt;p&gt;DwightStahlman: Created page with &amp;quot;Nejdřív si ujasněte, co budete verzovat. Webový projekt obvykle obsahuje zdrojové kódy, šablony, styly, skripty a konfigurační soubory. Do verzování nepatří vygenerované soubory, jako jsou minifikované CSS nebo JavaScript, cache, nahrané obrázky ani lokální konfigurace s hesly. Pro tyto soubory si připravte seznam ignorovaných souborů hned na začátku. Pokud ho nevytvoříte, budete do historie ukládat balast, který znepřehlední každý diff a...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Nejdřív si ujasněte, co budete verzovat. Webový projekt obvykle obsahuje zdrojové kódy, šablony, styly, skripty a konfigurační soubory. Do verzování nepatří vygenerované soubory, jako jsou minifikované CSS nebo JavaScript, cache, nahrané obrázky ani lokální konfigurace s hesly. Pro tyto soubory si připravte seznam ignorovaných souborů hned na začátku. Pokud ho nevytvoříte, budete do historie ukládat balast, který znepřehlední každý diff a zpomalí práci s repozitářem.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Praktickým krokem je rozhodnutí o tom, co odlišuje váš projekt. Pokud jde o knihovnu, kterou mají ostatní vývojáři připojovat do svých aplikací, permisivní licence usnadní integraci. Pokud jde o samostatnou aplikaci, [https://Search.un.org/results.php?query=kterou%20chcete kterou chcete] poskytovat s garancí svobody pro koncové uživatele, silnější copyleft dává smysl. Častou chybou je kombinace více licencí v jednom projektu. Přidávání souborů pod odlišnými licencemi vytváří právní zmatek a může vést k tomu, že kód nelze legálně distribuovat vůbec. Proto si hned na začátku ujasněte, jestli budete používat jednotnou licenci, nebo zda si vystačíte s výjimkou pro určité části projektu.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Pozor na jeden typický zádrhel: pokud fixture vytvoříte, ale zapomenete ho použít jako argument v [https://Justbookmark.win/story.php?title=jak-zjednodusit-stav-v-redux-pri-praci-s-asynchronnimi-akcemi testovací] funkci, pytest ho nespustí. Vznikne pak chyba, která vede k domněnce, že test nefunguje. Také si dejte pozor na přílišné sdílení stavů – pokud jeden test změní data, která používá jiný test, může to způsobit nepředvídatelné selhání. Vždy proto nastavte fixtures tak, aby byly izolované a každý test začínal s čistým stavem.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Co všechno se schovává za „naprogramováním&amp;quot; Než začnete odhadovat, rozepište úkol na menší části a ke každé přiřaďte i tzv. skryté náklady. Patří sem čtení dokumentace, která není aktuální, hledání správného API, nastavování lokálního prostředí, nebo třeba synchronizace s kolegy na společném rozhraní. Zkuste si pro každý úkol napsat seznam činností, které nejsou na první pohled vidět, a odhadněte jim čas zvlášť. Teprve pak je přičtěte k čistému programování.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Nejdůležitější otázka zní: chcete, aby všechny odvozeniny zůstaly svobodné, nebo chcete maximální možnou adopci i za cenu, že někdo váš kód začlení do placené aplikace? Pokud je pro vás klíčová ochrana komunity a budoucích uživatelů, sáhnete po silné copyleft licenci, jako je GPL. Ta vyžaduje, aby každý, kdo distribuuje upravenou verzi, zpřístupnil zdrojový kód pod stejnou licencí. Typickou pastí je zde ale to, že GPL může odradit firmy, které chtějí knihovnu začlenit do interního systému, aniž by musely otevírat vlastní kód.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Častou chybou je odhadovat pouze podle „čistého&amp;quot; času, který byste potřebovali, kdyby vše proběhlo hladce. Realita ale vypadá jinak. Přidejte rezervu na hledání chyb, na nejasné požadavky a na komunikaci. Zkušení vývojáři často používají pravidlo, že k hrubému odhadu přidají 30–50 % času na skryté činnosti. Není to [https://Bookmarkfeeds.stream/story.php?title=jak-rozkladat-odhad-casu-na-analyticke-faze-a-implementaci-v-agilnim-tymu univerzální] vzorec, ale dobrý startovní bod, který pak upravíte podle konkrétního projektu.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Při odhadu myslete i na to, že ne vždy budete pracovat v nepřerušovaném bloku. Schůzky, e-maily nebo dotazy kolegů rozbíjejí koncentraci a každé přerušení vás stojí čas na opětovné ponoření do problému. Pokud víte, že máte den plný schůzek, neplánujte si na ten den úkol, který vyžaduje hluboké soustředění. Místo toho si rezervujte časové bloky, které jsou vyhrazeny pouze pro práci bez rušení.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Na závěr si uvědomte, že i bez integračního prostředí můžete dosáhnout vysoké pokrytí testy. Klíčem je oddělit čistou logiku od side efektů a testovat každou část izolovaně. Tím získáte rychlé a spolehlivé testy, které vám dají jistotu, že vaše reducery a async akce fungují správně, a to bez složitého nastavování prostředí. Až příště přidáte novou akci nebo upravíte reducer, budete moci okamžitě ověřit, že nic nerozbijete – a to je k nezaplacení.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Vyplatí se ale dávat pozor na jeden častý omyl:  váš testovací soubor do aktuálního adresáře. Pokud testujete funkci z modulu, musíte mít správně nastavený import. Nejjednodušší je spouštět pytest z kořenového adresáře projektu, kde máte balíčky i testy. Místo from moje_aplikace import funkce občas selhává kvůli špatné struktuře složek. Řešením je buď použít relativní importy, nebo přidat do kořene projektu soubor pyproject.toml s nastavením pythonpath. Tento krok ušetří hodiny hledání chyb, které ve skutečnosti nejsou chybami kódu.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Pokud chcete jít ještě dál, můžete si vytvořit jednoduchý pomocný „test store&amp;quot;, který bude mít dispatch a getState, ale nebude obsahovat middleware. To vám umožní testovat i kombinace reducerů a async akcí dohromady, ale stále bez nutnosti spouštět celou aplikaci. Tento přístup je užitečný pro ověření, že akce správně mění stav napříč více reducery. Stačí, když si definujete výchozí stav celého store, zavoláte async akci s tímto store a poté zkontrolujete, jak se stav změnil.&lt;/div&gt;</summary>
		<author><name>DwightStahlman</name></author>
	</entry>
	<entry>
		<id>https://www.it-core.eu/wiki/index.php?title=Commit_message_bez_chaosu:_jak_zp%C4%9Btn%C3%A1_dohledatelnost_zm%C4%9Bn%C3%AD_v%C3%A1%C5%A1_k%C3%B3d&amp;diff=199006</id>
		<title>Commit message bez chaosu: jak zpětná dohledatelnost změní váš kód</title>
		<link rel="alternate" type="text/html" href="https://www.it-core.eu/wiki/index.php?title=Commit_message_bez_chaosu:_jak_zp%C4%9Btn%C3%A1_dohledatelnost_zm%C4%9Bn%C3%AD_v%C3%A1%C5%A1_k%C3%B3d&amp;diff=199006"/>
		<updated>2026-08-29T04:43:10Z</updated>

		<summary type="html">&lt;p&gt;DwightStahlman: Created page with &amp;quot;Nejčastější chybou je uvádět jeden konkrétní termín bez jakékoli rezervy. Pokud si nejste jistí, řekněte raději rozsah: „Předpokládám, že to bude hotové mezi středou a pátkem.&amp;quot; Tím dáváte najevo, že nad termínem přemýšlíte, a zároveň si necháváte prostor pro nepředvídané komplikace. Zákazník ocení, když mu rovnou vysvětlíte, co může ovlivnit délku práce – například čekání na podklady, složitost zadání nebo nutnos...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Nejčastější chybou je uvádět jeden konkrétní termín bez jakékoli rezervy. Pokud si nejste jistí, řekněte raději rozsah: „Předpokládám, že to bude hotové mezi středou a pátkem.&amp;quot; Tím dáváte najevo, že nad termínem přemýšlíte, a zároveň si necháváte prostor pro nepředvídané komplikace. Zákazník ocení, když mu rovnou vysvětlíte, co může ovlivnit délku práce – například čekání na podklady, složitost zadání nebo nutnost dodatečných konzultací.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Posledním bodem je osvěta a pravidelná údržba. Proškolte svůj tým, aby každý nový kód procházel kontrolou na SQL injection. Při každém nasazení aktualizujte frameworky, knihovny a databázové ovladače, které opravují známé bezpečnostní díry. Pokud dodržíte tyto kroky, výrazně snížíte riziko, že se SQL injection stane noční můrou vaší aplikace. Prevence je vždy levnější a méně stresující než řešení následků.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Verzování se vyplatí i pro jednoho vývojáře. Když budete mít každou změnu podchycenou, můžete bez obav zkoušet nové přístupy. Špatný nápad můžete zahodit jedním příkazem a vrátit se k osvědčenému stavu. Navíc si vytvoříte zvyk, který využijete v každém dalším projektu. Začněte dnes – vytvořte si první commit a uvidíte, jak se vám uleví. Za pár týdnů si nedokážete představit práci bez toho.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Typické chyby, které ztěžují zpětnou dohledatelnost Nejčastějším prohřeškem je vágnost. Zpráva „Změny v souboru&amp;quot; neříká nic o tom, co změna dělá. Stejně zrádné jsou i zprávy sice konkrétní, ale psané v minulém čase, které popisují, co už bylo hotovo, místo toho, co commit přináší. Rozdíl mezi „Opravena chyba v přihlášení&amp;quot; a „Oprav přihlášení při prázdném heslu&amp;quot; je zásadní – druhá varianta jasně říká, kdy a kde problém nastane. Další častou chybou je přidávání nesouvisejících změn do jednoho commitu, což znemožňuje rychlé pochopení logiky a komplikuje reverty.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Důležité je také myslet na budoucnost. Komentáře píšete pro sebe za šest měsíců, ne pro váš aktuální mozek. Proto se vyplatí investovat čas do vět, které vysvětlují rozhodnutí, jež na první pohled nedávají smysl. Pokud jste například změnili algoritmus kvůli výkonu, napište, proč to bylo nutné a jaké měření vás k tomu vedlo. Tím se vyhnete situaci, kdy později někdo (nebo vy sami) změnu vrátí, protože nevidí důvod, proč byla provedena.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Růst codebase s sebou přináší nepříjemný paradox: čím více testů, tím pomalejší a méně spolehlivá je zpětná vazba. Jednotkové testy začnou trvat minuty, integrační testy vyžadují databázi a externí služby. Nejde o to testů ubírat, ale o to je správně nasměrovat. Klíčem není poměr počtu testů, ale jejich ekonomika – každý test musí mít jasný účel a rozumnou cenu údržby.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Při psaní nových testů dodržujte pyramidu: většina testů by měla být malých a rychlých. Pokud zjistíte, že čistý jednotkový test vyžaduje složité nastavování falešných závislostí, je to signál, že kód je příliš provázaný. Refaktorujte – rozdělte třídy, zaveďte rozhraní. Častou chybou je testovat vnitřní implementaci místo chování. Test pak selže při každé změně kódu, i když funkce zůstává stejná. Testujte veřejné rozhraní a výsledky, ne to, jak jsou interně dosaženy.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Stanovit termín dodání je vždy riskantní. Když řeknete „bude to za týden&amp;quot;, zákazník si to uloží do hlavy jako pevný slib. Jakmile práce skončí za deset dní, cítí zklamání, i když bylo zpoždění způsobeno objektivními okolnostmi. Klíčem k úspěšné komunikaci odhadů není být vždy přesný, ale nastavit očekávání tak, aby drobné odchylky neznamenaly ztrátu důvěry.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Důvěra se buduje dlouhodobě. Pokud jednou dodáte pozdě, ale s vysvětlením a náhradním řešením, zákazník to pochopí. Pokud se to opakuje, přestane vašim odhadům věřit úplně. Proto si před každým slibem položte otázku: „Co všechno se může pokazit a jak to ovlivní termín?&amp;quot; Nechte si rezervu na technické problémy, nemoc, čekání na podklady. A když práci dokončíte dříve, než jste slíbili, je to vždy příjemné překvapení, které posiluje vaši důvěryhodnost.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;JWT je ale jen podepsaný řetězec. Jeho bezpečnost stojí na tom, jak ho vytvoříte a jak s ním zacházíte. Nejdůležitější je podpis. Vždy používejte asymetrický algoritmus, jako je RS256, a soukromý klíč držte výhradně na serveru. Veřejný klíč pak můžete distribuovat klientům, kteří jen ověřují podpis. Vyhněte se symetrickému HS256, pokud nemáte jen jednu službu, protože ten vyžaduje sdílení tajemství, které se snadno dostane tam, kam nemá. A nikdy, ale opravdu nikdy nepodepisujte token algoritmem, který si klient může zvolit sám – to je cesta k obejití celé ochrany.&lt;/div&gt;</summary>
		<author><name>DwightStahlman</name></author>
	</entry>
	<entry>
		<id>https://www.it-core.eu/wiki/index.php?title=User:DwightStahlman&amp;diff=199004</id>
		<title>User:DwightStahlman</title>
		<link rel="alternate" type="text/html" href="https://www.it-core.eu/wiki/index.php?title=User:DwightStahlman&amp;diff=199004"/>
		<updated>2026-08-29T04:43:04Z</updated>

		<summary type="html">&lt;p&gt;DwightStahlman: Created page with &amp;quot;Váš průvodce praktickým bydlením se zabývá denně. Sdílím zde, jak skloubit funkčnost s teplem domova. Nejraději ukazovat chytrá řešení, která zvládne každý.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Váš průvodce praktickým bydlením se zabývá denně. Sdílím zde, jak skloubit funkčnost s teplem domova. Nejraději ukazovat chytrá řešení, která zvládne každý.&lt;/div&gt;</summary>
		<author><name>DwightStahlman</name></author>
	</entry>
</feed>