<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://dustyways.wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=NilaLionel</id>
	<title>Dusty Ways: Rebirth - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://dustyways.wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=NilaLionel"/>
	<link rel="alternate" type="text/html" href="https://dustyways.wiki/index.php?title=Special:Contributions/NilaLionel"/>
	<updated>2026-08-31T19:40:31Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://dustyways.wiki/index.php?title=Testovac%C3%AD_pyramida,_o_kter%C3%A9_v%C4%9Bt%C5%A1ina_t%C3%BDm%C5%AF_omylem_zapom%C3%ADn%C3%A1&amp;diff=226565</id>
		<title>Testovací pyramida, o které většina týmů omylem zapomíná</title>
		<link rel="alternate" type="text/html" href="https://dustyways.wiki/index.php?title=Testovac%C3%AD_pyramida,_o_kter%C3%A9_v%C4%9Bt%C5%A1ina_t%C3%BDm%C5%AF_omylem_zapom%C3%ADn%C3%A1&amp;diff=226565"/>
		<updated>2026-08-29T02:59:05Z</updated>

		<summary type="html">&lt;p&gt;NilaLionel: Created page with &amp;quot;Dále se zaměřte na dobu běhu. Pokud máte testy, které trvají déle než pět minut, rozdělte je do vrstev: rychlé (jednotkové), střední (integrace s jednou komponentou) a pomalé (end-to-end). Rychlé spouštějte při každém commitu, střední při každém pull requestu a pomalé až před nasazením do produkce. Tím zajistíte, že vývojáři dostanou zpětnou vazbu rychle, ale složité scénáře nezmizí. Nezapomeňte také na flaky testy – pokud...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dále se zaměřte na dobu běhu. Pokud máte testy, které trvají déle než pět minut, rozdělte je do vrstev: rychlé (jednotkové), střední (integrace s jednou komponentou) a pomalé (end-to-end). Rychlé spouštějte při každém commitu, střední při každém pull requestu a pomalé až před nasazením do produkce. Tím zajistíte, že vývojáři dostanou zpětnou vazbu rychle, ale složité scénáře nezmizí. Nezapomeňte také na flaky testy – pokud test občas selže bez zjevné příčiny, buď ho opravte, nebo zahoďte. Jinak začnete ignorovat červené výsledky a celý systém ztratí důvěryhodnost.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Jak najít rovnováhu, když už je pozdě Nejdřív si udělejte mapu současného stavu. Projděte si testy v repozitáři a rozdělte je podle toho, co skutečně ověřují. Jednotkové testy, které potřebují databázi, síť nebo souborový systém, jsou ve skutečnosti integrační a je třeba je tak i chápat. Toto překlasifikování vám ukáže, kde je poměr vychýlený. Často zjistíte, že máte stovky jednotkových testů, které jen opakují logiku implementace, a přitom chybí pár klíčových integračních testů pokrývajících hlavní toky aplikace.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Začněte tím, že si v každém IDE nebo editoru definujete pro každý jazyk samostatný profil nebo workspace. Většina moderních nástrojů to umožňuje přes takzvané workspace settings. Určete pro každý jazyk vlastní formátovač, linter a pravidla pro zalamování řádků. Například Python nebude tolerovat stejnou šířku řádku jako JavaScript. Pokud toto nastavíte globálně, bude se vám kód v každém jazyce formátovat jinak, než tým očekává. Typická chyba je mít pro všechny soubory jednotný formát, což vede k nekonečným diskuzím v code review.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Další chybou bývá přenášení citlivých dat přímo v payloadu JWT. Token je podepsaný, ale ne šifrovaný, takže jeho obsah si může přečíst každý, kdo ho získá. Do tokenu proto patří pouze identifikátory uživatele, role a případně další neveřejné, ale ne citlivé údaje. Hesla, čísla karet nebo osobní údaje do tokenu nikdy nepatří. Pokud potřebujete tokenem přenášet citlivé informace, použijte JWE, ale v drtivé většině případů je lepší token jen podepsat a data uchovávat na serveru.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Práce na projektu, který kombinuje více jazyků, je častější, než se zdá. Typicky jde o backend v Javě, frontend v TypeScriptu, pár skriptů v Pythonu a šablonu v HTML s CSS. Mnoho vývojářů ale stále používá jedno prostředí nastavené na jeden jazyk, což vede k věčné přepínací smyčce mezi konfiguracemi. Přitom stačí věnovat půl hodiny nastavení IDE, aby se všechny jazyky  jako jeden celek. Klíčem je nesnažit se mít všechno zapnuté najednou, ale nastavit si kontexty, které se mění podle toho, co právě píšete.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Další praktický krok je nastavit si pro každý jazyk vlastní terminál nebo příkazovou řádku. Mnoho projektů má skripty pro build spouštěné v různých prostředích. Pokud máte jeden terminál, který se přepíná podle aktuálního souboru, ušetříte si spoustu klikání. V praxi to znamená, že když stojíte v souboru Python, terminál se automaticky spustí s virtuálním prostředím. Když přejdete na JavaScript, terminál se přepne do Node.js prostředí. To vám umožní spouštět testy a linting bez ručního zadávání příkazů. Ale pozor, tohle vyžaduje, aby byl každý jazyk izolovaný ve svém vlastním adresáři nebo alespoň měl jasně oddělené konfigurační soubory.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Na závěr si zkuste celý projekt otevřít bez jediného ručního zásahu. Pokud se IDE zeptá, který jazyk má pro daný soubor použít, znamená to, že ještě nemáte správně nastavené automatické rozpoznávání. V ideálním případě by mělo být vše připravené tak, že otevřete projekt a můžete okamžitě psát kód v jakémkoli jazyce. Toto nastavení vám ušetří hodiny času, které byste jinak strávili přepínáním konfigurací a řešením chyb, které vznikly jen kvůli špatnému kontextu.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Jak vypadá zdravá hierarchie a kde ji nejčastěji rozbijete Funkční základ pyramidy tvoří jednotkové testy. Měly by pokrývat izolovanou logiku bez závislostí na databázi, síti nebo časovačích. Pokud test potřebuje připojení k databázi nebo mockování pěti vrstev, není to jednotkový test, ale integrační test [https://graph.org/Jak-strukturovat-verzov%C3%A1n%C3%AD-k%C3%B3du-pro-projekty-s-v%C3%ADce-verzemi-knihoven-08-12 byt v paneláku] převleku. Integrační testy patří do prostřední vrstvy – ověřují spolupráci modulů, ale stále by měly být rychlé a stabilní. Na vrcholu stojí malý počet E2E testů, které kontrolují kritické uživatelské cesty. [https://Www.Europeana.eu/portal/search?query=%C4%8Cast%C3%A1 Častá] chyba? Píšete E2E testy pro každou maličkost, protože „to je přece nejvěrnější simulace&amp;quot;. To je cesta do pekla.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Jak zvládnout přepínání mezi jazyky bez ztráty kontextu Vyzkoušejte funkci automatické detekce typu souboru podle přípony a podle obsahu. IDE si sám přepne zvýrazňování syntaxe a načte příslušné pluginy. Důležité je ale nastavit i klávesové zkratky pro přepínání mezi jednotlivými jazykovými režimy. Například když upravujete soubor .tsx, měl by se vám aktivovat linter pro TypeScript a React. Když otevřete soubor .py, měla by se vypnout kontrola typů z TypeScriptu a zapnout Pythoní linter. Většina nástrojů to umí, ale je potřeba si to vědomě nakonfigurovat. Bez toho se vám stane, že vám IDE hlásí chyby v souborech, které zrovna nespouštíte, a vy ztrácíte čas.&lt;/div&gt;</summary>
		<author><name>NilaLionel</name></author>
	</entry>
	<entry>
		<id>https://dustyways.wiki/index.php?title=6_krit%C3%A9ri%C3%AD,_podle_kter%C3%BDch_vyberete_spr%C3%A1vnou_open_source_licenci&amp;diff=226244</id>
		<title>6 kritérií, podle kterých vyberete správnou open source licenci</title>
		<link rel="alternate" type="text/html" href="https://dustyways.wiki/index.php?title=6_krit%C3%A9ri%C3%AD,_podle_kter%C3%BDch_vyberete_spr%C3%A1vnou_open_source_licenci&amp;diff=226244"/>
		<updated>2026-08-29T02:41:25Z</updated>

		<summary type="html">&lt;p&gt;NilaLionel: Created page with &amp;quot;Další častou chybou je míchání více nesouvisejících změn do jednoho commitu. Například když opravíte překlep v dokumentaci a zároveň změníte logiku výpočtu ceny. Takový commit se špatně čte, špatně vrací zpět a komplikuje hledání chyb. Ideální commit mění jednu věc. Pokud potřebujete udělat dvě nesouvisející úpravy, rozdělte je do dvou commitů. I kdybyste měli poslat oba najednou, historie zůstane čistá.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Jak konkrét...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Další častou chybou je míchání více nesouvisejících změn do jednoho commitu. Například když opravíte překlep v dokumentaci a zároveň změníte logiku výpočtu ceny. Takový commit se špatně čte, špatně vrací zpět a komplikuje hledání chyb. Ideální commit mění jednu věc. Pokud potřebujete udělat dvě nesouvisející úpravy, rozdělte je do dvou commitů. I kdybyste měli poslat oba najednou, historie zůstane čistá.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Jak konkrétně strukturovat zpětnou vazbu, aby měla váhu Klíčové je oddělit fakta od emocí a interpretací. Místo věty „Mám pocit, že nikdo neposlouchá&amp;quot; použijte popis situace: „Včera na poradě jsem třikrát zopakoval termín, ale nikdo nereagoval.&amp;quot; Tím předejdete obranným reakcím. Zaveďte pravidlo, že každý zpětnou vazbu formuluje jako pozorování, dopad a návrh. Například: „Když se rozhodnutí odsouvá na poslední chvíli (pozorování), nestíháme dodělat úkoly (dopad). Navrhuji, abychom deadline stanovili dva dny předem.&amp;quot; Tento vzorec nutí mluvčího být konkrétní a druhým usnadňuje pochopení.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Jaké konkrétní povinnosti licence ukládá uživatelům? Každá licence s sebou nese povinnosti, které musíte zvládnout vysvětlit. U GPL je to především povinnost poskytnout zdrojový kód, pokud software distribuujete. U LGPL se tato povinnost týká pouze upravených knihoven, nikoliv celé aplikace, která je používá. Permisivní licence zase vyžadují zachování copyrightové hlavičky a často i vyloučení odpovědnosti. Před výběrem si proto zjistěte, jaké jsou přesné podmínky dané verze. Licence se vyvíjejí – verze 2 a 3 GPL se liší v detailech, které mohou být pro váš projekt zásadní.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Začněte tím, co od uživatelů chcete. Pokud vám jde o co nejširší použití, včetně komerčních projektů, zvolte permisivní licenci (například MIT nebo BSD). Ta umožňuje kód použít, upravit i začlenit do proprietárního softwaru bez povinnosti zveřejnit zdrojové kódy. Naopak pokud chcete zajistit, aby všechny odvozeniny zůstaly otevřené, použijte copyleftovou licenci, jako je GPL. Tím vzniká řetězec, který drží kód svobodný i v rukou dalších vývojářů. Rozhodnout se mezi těmito dvěma světy je první a nejdůležitější krok.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Na závěr si dejte pozor na dva typické omyly. První: snažit se vyřešit všechno najednou. Vyberte maximálně tři priority, které budete řešit do příští retrospektivy. Druhý: nechat otevřený konec bez shrnutí. Posledních pět minut věnujte tomu, že zapíšete, kdo co udělá a do kdy. Pokud toto dodržíte, retrospektiva se stane nástrojem, který tým posune – a příště se už nikdo nebude ptát, proč se scházíme.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Největší zrádce: řazení a porovnávání textu Dalším častým problémem je řazení. MySQL ve výchozím nastavení používá porovnávání bez ohledu na velikost písmen a ne vždy respektuje českou diakritiku. PostgreSQL používá pravidla podle zvolené locale. Pokud vaše aplikace spoléhá na konkrétní pořadí výsledků, musíte to ošetřit explicitně – buď definováním collation přímo u sloupce, nebo použitím funkce lower v dotazech. Jinak se může stát, že se výpis uživatelů seřadí podle ASCII hodnot a „Černý&amp;quot; skončí až za „Zelený&amp;quot;, což je pro uživatele matoucí.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Prvním krokem je důkladná analýza schématu. MySQL umožňuje automatické přetypování řetězců na čísla nebo používá implicitní konverze, které PostgreSQL odmítá. Typickým příkladem je sloupec typu enum – v PostgreSQL se doporučuje převést na varchar s kontrolním omezením, protože enum zde nelze snadno rozšiřovat. Podobně dopadnou sloupce s nulovými hodnotami a prázdnými řetězci: PostgreSQL rozlišuje NULL a prázdný řetězec, zatímco některé aplikace psané pro MySQL je zaměňují.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Při psaní testů se vyvarujte testování interních implementací, jako jsou privátní metody nebo konkrétní datové struktury. Testujte chování, které uživatel vidí – tedy co funkce vrací, jak zpracovává vstupy, jaké vyvolává výjimky. Pokud testujete výjimku, použijte syntaktický konstrukt pytest.raises: s pytest.raises(ValueError): funkce_co_hazi_chybu(). Tím správně ověříte, že chyba skutečně nastane, a nezachytíte ji jen pokusem o try/except.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Jaké informace do těla zprávy patří a jaké ne Do podrobné části patří kontext: jaký problém jste řešili, jaké alternativy jste zvažovali a proč jste vybrali právě toto řešení. Dále sem patří případné vedlejší efekty – co se může rozbít, jaké další části kódu změna ovlivňuje. Typickou chybou je opisování rozdílu v kódu. Pokud jste přidali podmínku, nepíšete „Přidal jsem if, který kontroluje věk&amp;quot;, ale „Zabraň přístup uživatelům mladším 18 let&amp;quot;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Přechod z MySQL na PostgreSQL bývá často podceňovaný. Mnoho týmů předpokládá, že stačí exportovat data, importovat je a upravit pár dotazů. Realita je ale jiná: rozdíly v datových typech, chování transakcí a dokonce i v tom, jak oba systémy řadí text, dokážou připravit nepříjemná překvapení. Pokud se na migraci nepřipravíte, místo plynulého přechodu získáte dny ladění a noční volání kvůli nefunkční aplikaci.&lt;/div&gt;</summary>
		<author><name>NilaLionel</name></author>
	</entry>
	<entry>
		<id>https://dustyways.wiki/index.php?title=User:NilaLionel&amp;diff=226242</id>
		<title>User:NilaLionel</title>
		<link rel="alternate" type="text/html" href="https://dustyways.wiki/index.php?title=User:NilaLionel&amp;diff=226242"/>
		<updated>2026-08-29T02:41:23Z</updated>

		<summary type="html">&lt;p&gt;NilaLionel: Created page with &amp;quot;Autor blogu světem interiérů žije už dlouho. Sdílím zde, jak zvládnout domácnost bez stresu. Nejraději popisovat postupy krok za krokem.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Autor blogu světem interiérů žije už dlouho. Sdílím zde, jak zvládnout domácnost bez stresu. Nejraději popisovat postupy krok za krokem.&lt;/div&gt;</summary>
		<author><name>NilaLionel</name></author>
	</entry>
</feed>