<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
		<id>http://wiki.pannier-schulungen.de/index.php?action=history&amp;feed=atom&amp;title=Verzov%C3%A1n%C3%AD_webu%3A_Pr%C5%AFvodce_pro_za%C4%8D%C3%ADnaj%C3%ADc%C3%AD_kod%C3%A9ry</id>
		<title>Verzování webu: Průvodce pro začínající kodéry - Versionsgeschichte</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.pannier-schulungen.de/index.php?action=history&amp;feed=atom&amp;title=Verzov%C3%A1n%C3%AD_webu%3A_Pr%C5%AFvodce_pro_za%C4%8D%C3%ADnaj%C3%ADc%C3%AD_kod%C3%A9ry"/>
		<link rel="alternate" type="text/html" href="http://wiki.pannier-schulungen.de/index.php?title=Verzov%C3%A1n%C3%AD_webu:_Pr%C5%AFvodce_pro_za%C4%8D%C3%ADnaj%C3%ADc%C3%AD_kod%C3%A9ry&amp;action=history"/>
		<updated>2026-08-22T04:04:17Z</updated>
		<subtitle>Versionsgeschichte dieser Seite in MeinWiki</subtitle>
		<generator>MediaWiki 1.28.0</generator>

	<entry>
		<id>http://wiki.pannier-schulungen.de/index.php?title=Verzov%C3%A1n%C3%AD_webu:_Pr%C5%AFvodce_pro_za%C4%8D%C3%ADnaj%C3%ADc%C3%AD_kod%C3%A9ry&amp;diff=114259&amp;oldid=prev</id>
		<title>BenitoMcCary6 am 21. August 2026 um 18:00 Uhr</title>
		<link rel="alternate" type="text/html" href="http://wiki.pannier-schulungen.de/index.php?title=Verzov%C3%A1n%C3%AD_webu:_Pr%C5%AFvodce_pro_za%C4%8D%C3%ADnaj%C3%ADc%C3%AD_kod%C3%A9ry&amp;diff=114259&amp;oldid=prev"/>
				<updated>2026-08-21T18:00:36Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;' lang='de'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Version vom 21. August 2026, 18:00 Uhr&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;Zeile 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; 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 class=&quot;diffchange diffchange-inline&quot;&gt;Druhý častý problém je ignorování dotazovacích vzorů. NoSQL databáze nejsou univerzální – každý typ má specifické možnosti dotazování. Než nasadíte&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;zkuste si napsat pět nejčastějších dotazů&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;které vaše aplikace bude spouštět&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Pokud zjistíte&lt;/del&gt;, že &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;potřebujete fulltextové vyhledávání nebo složité agregace&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;možná &lt;/del&gt;je &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;lepší zůstat u relační databáze nebo zkombinovat obojí (tzv&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;polyglot persistence). Také &lt;/del&gt;si &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;rozmyslete, jak budete data mazat – některé NoSQL databáze nemají efektivní operaci pro smazání velkého rozsahu dat&lt;/del&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Stavba REST API v Node&lt;/del&gt;.&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;js s frameworkem Express patří mezi základní dovednosti backendového vývojáře&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Express &lt;/del&gt;je &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;minimalistický&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;ale dostatečně flexibilní nástroj, který vám umožní rychle vytvořit funkční rozhraní&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Než začnete, ujistěte &lt;/del&gt;se, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;že máte nainstalovaný Node.js &lt;/del&gt;a &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;že rozumíte základům JavaScriptu&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;jako jsou async/await a práce s objekty&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Celý postup &lt;/del&gt;je &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;vhodné rozdělit do menších kroků&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;abyste &lt;/del&gt;se &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;vyhnuli chaotickému kódu &lt;/del&gt;a &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;usnadnili si budoucí údržbu&lt;/del&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Na závěr si osvojte testování API pomocí nástrojů jako Postman nebo přímo &lt;/del&gt;v &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;rámci integračních testů&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Pravidelně kontrolujte&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;jak vaše API reaguje na neexistující cesty&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;neplatná data &lt;/del&gt;nebo &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;příliš velké požadavky&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Express sice zvládá základní limity, ale pro produkci byste měli přidat kompresi a ochranu proti DoS útokům&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;A pamatujte – kvalitní REST API není jen o tom&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;aby fungovalo&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;ale aby bylo robustní, konzistentní &lt;/del&gt;a &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;snadno použitelné pro ostatní vývojáře&lt;/del&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Nejprve &lt;/del&gt;si &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;otevřete vývojové prostředí&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Doporučuji použít Visual Studio Community &lt;/del&gt;nebo &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Visual Studio Code, obojí &lt;/del&gt;je &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;zdarma&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Po spuštění vytvořte nový &lt;/del&gt;projekt &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;typu „Konzolová aplikace&amp;quot; (Console App) pro jazyk C#. Jméno projektu zvolte bez diakritiky&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;třeba „PrvniAplikace&amp;quot;&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Po vytvoření uvidíte soubor Program.cs s předpřipraveným kódem&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Smažte vše, co tam &lt;/del&gt;je&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;, &lt;/del&gt;a &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;napište následující kód: Console.WriteLine(&amp;quot;Ahoj&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;světe!&amp;quot;); a stiskněte F5. Program se spustí a v okně &lt;/del&gt;se &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;zobrazí text. Tím máte za sebou první funkční aplikaci&lt;/del&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Nakonec si osvojte práci &lt;/del&gt;s &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;vysvětlením plánu dotazu (EXPLAIN)&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Tento nástroj vám ukáže&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;jak databáze dotaz zpracovává&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;které indexy používá a kde dochází k sekvenčnímu procházení&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Než optimalizujete, vždy se podívejte &lt;/del&gt;na &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;tento výstup&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Často zjistíte, že problém není v dotazu, ale v chybějícím indexu, který &lt;/del&gt;se &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;tváří jako existující&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;ale ve skutečnosti se nepoužívá&lt;/del&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Routování &lt;/del&gt;a &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;zpracování požadavků Express používá pro definici koncových bodů metody jako app.get&lt;/del&gt;(), &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;app.post()&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;app&lt;/del&gt;.&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;put() &lt;/del&gt;a &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;app&lt;/del&gt;.&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;delete(). Každá z nich přijímá cestu a callback funkci&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;která má přístup k objektům req a res&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Při psaní rout je důležité používat parametry cest, třeba /users/:id, a validovat je ještě před samotným zpracováním. Typickou chybou je zapomenout na asynchronní zpracování – pokud vaše handler funkce nepoužívá async/await, může dojít k neošetřeným rejectovaným promisům&lt;/del&gt;, které &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;aplikaci spadnou. Vždy proto obalujte asynchronní operace &lt;/del&gt;do &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;try/catch bloků&lt;/del&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Další praktickou záležitostí &lt;/del&gt;je &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;správa stavových kódů HTTP. Vracejte 200 pro úspěšné GET požadavky&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;201 pro vytvoření nového zdroje&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;204 pro úspěšné smazání a 400 nebo 404 pro chybové situace&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Nepoužívejte univerzální 500 pro vše&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;co se nepovede. Konkrétní kódy pomáhají klientům rychleji diagnostikovat problém&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Rovněž se vyhněte vracení surových chybových hlášení &lt;/del&gt;z &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;databáze &lt;/del&gt;– &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;vytvořte si jednoduchý middleware&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;který zachytí výjimky &lt;/del&gt;a &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;převede je na JSON s přátelským popisem&lt;/del&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Další důležitou dovedností &lt;/del&gt;je &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;umět &lt;/del&gt;se &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;vrátit &lt;/del&gt;k &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;předchozímu stavu&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Pokud jste provedli commit a zjistíte, že &lt;/del&gt;je &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;něco špatně&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;můžete se pomocí historie podívat na jednotlivé commity a vybrat ten, ke kterému se chcete vrátit&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Pozor ale &lt;/del&gt;na &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;to&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;že pokud jste provedli další změny a ty nejsou commitnuté, mohou se dostat do konfliktu. Vždy si proto před návratem uložte nebo zahoďte aktuální rozpracovanou práci&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Dobré &lt;/del&gt;je &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;také vědět&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;že commit nemusí být trvalý – &lt;/del&gt;můžete &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;jej upravit&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;sloučit s jiným&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;nebo úplně odstranit&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;dokud nedojde k publikaci&lt;/del&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Nejjednodušší &lt;/del&gt;a &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;pro menší týmy nejpraktičtější je model trunk-based development. Všechny změny směřují do hlavní větve&lt;/del&gt;, ale &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;každá funkce nebo oprava dostane vlastní krátkodobou větev&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Pravidlo zní: jedna větev = jeden úkol. Větve pojmenovávejte podle čísla úkolu nebo srozumitelného popisu&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;například feature/login-form &lt;/del&gt;nebo &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;fix/empty-state&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Hlavní větev zůstává vždy stabilní a připravená k nasazení.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Až &lt;/del&gt;je &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;práce hotová&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;nemažte staré větve hned po sloučení&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Nechte &lt;/del&gt;je &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;ještě pár dní, ale označte je jako uzavřené&lt;/del&gt;. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Pokud &lt;/del&gt;se &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;objeví chyba, můžete se k nim vrátit. Když si tým zvykne na tato pravidla, ušetříte hodiny času, které by jinak padly na řešení konfliktů &lt;/del&gt;a &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;na dohady&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;kdo co měl udělat jinak. Pravidelná revize workflow po každém větším projektu pomůže odhalit slabá místa a upravit proces podle aktuálních potřeb&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; 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 class=&quot;diffchange diffchange-inline&quot;&gt;Typická chyba&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;kterou v praxi vidím&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;je snaha pokrýt end-to-end testy úplně všechno&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Pak se stane&lt;/ins&gt;, že &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;jeden test trvá dvě minuty a celá sada půl hodiny. Vývojáři čekají na výsledek&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;ztrácí kontext a testy se stávají spíše brzdou než pojistkou. Řešení &lt;/ins&gt;je &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;jednoduché: použijte pravidlo 80/15/5 – 80 % jednotkových, 15 % integračních a 5 % end-to-end testů&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Většinu funkcionality totiž ověříte rychlými a spolehlivými testy na nižších vrstvách, a pomalé testy &lt;/ins&gt;si &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;necháte jen na nejdůležitější scénáře&lt;/ins&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Začněte u jednotkových testů&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Ty by měly pokrývat všechny klíčové výpočty, validace a rozhodovací logiku&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Píšete &lt;/ins&gt;je &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;ve stejném jazyce jako aplikaci&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;nejlépe přímo u třídy nebo funkce&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Snažte &lt;/ins&gt;se, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;aby každý test ověřoval jednu konkrétní věc &lt;/ins&gt;a &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;nezávisel na databázi&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;souborech ani síti&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Typická chyba &lt;/ins&gt;je &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;testovat přes HTTP endpoint, když stačí zavolat metodu přímo. Tím testy zpomalíte a znejistíte – pak vám stačí&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;že &lt;/ins&gt;se &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;změní jeden JSON klíč, &lt;/ins&gt;a &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;spadne vám deset testů, které přitom ověřují úplně jinou logiku&lt;/ins&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Jakmile máte repozitář připravený, začněte s tzv. commitováním. Každý commit je snímek vašeho kódu &lt;/ins&gt;v &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;určitém čase&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Než provedete commit&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;musíte změny nejdříve označit. K tomu slouží příkaz&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;který přidá soubory do tzv. staging area. Teprve poté můžete vytvořit commit s výstižnou zprávou. Vyhněte se obecným popiskům jako „oprava chyby&amp;quot; &lt;/ins&gt;nebo &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;„update&amp;quot;&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Místo toho pište konkrétně: „Oprava responzivního menu na mobilu&amp;quot; nebo „Přidání formuláře do sekce kontakty&amp;quot;&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Taková zpráva vám za měsíc řekne přesně&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;co se změnilo&lt;/ins&gt;, a &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;usnadní orientaci v historii&lt;/ins&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Pokud &lt;/ins&gt;si &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;netroufáte na kód, začněte s dokumentací&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Přidávání příkladů, opravování překlepů &lt;/ins&gt;nebo &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;doplnění chybějících sekcí &lt;/ins&gt;je &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;stejně hodnotné jako oprava bugů&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Zkuste si nasadit &lt;/ins&gt;projekt &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;lokálně a projít dokumentaci krok za krokem – určitě narazíte na místa&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;která nejsou jasná&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Takové poznatky pak můžete přetavit v konkrétní návrh na zlepšení&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;U dokumentace &lt;/ins&gt;je &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;důležité držet se stručnosti &lt;/ins&gt;a &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;přesnosti&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;vyhýbat &lt;/ins&gt;se &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;zbytečnému balastu&lt;/ins&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Jakmile je jednotková vrstva pevná, přejděte na integrační testy. Ty ověřují, že vaše komponenty spolupracují správně – typicky &lt;/ins&gt;s &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;databází, externími službami nebo frontendem&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Zde platí pravidlo: testujte jen to&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;co jednotkově nejde pokrýt. Například mapování ORM&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;SQL dotazy nebo synchronizaci mezi moduly&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;U integračních testů si dejte pozor &lt;/ins&gt;na &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;stav prostředí. Vždy používejte izolovanou testovací databázi a po každém běhu ji vracejte do původního stavu&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Jinak &lt;/ins&gt;se &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;vám testy navzájem ovlivňují a vy strávíte hodiny hledáním chyby&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;která je jen artefaktem pořadí testů&lt;/ins&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Základem je pochopit rozdíl mezi kolekcí &lt;/ins&gt;a &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;prostředím &lt;/ins&gt;(&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;environment&lt;/ins&gt;)&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;. Kolekce slouží k seskupení souvisejících požadavků&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;zatímco prostředí uchovává proměnné, jako jsou adresy serverů&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;přihlašovací tokeny nebo identifikátory&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Vytvořte si alespoň dvě prostředí – jedno pro testovací &lt;/ins&gt;a &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;druhé pro produkční prostředí&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Díky tomu přepnete mezi nimi jedním kliknutím&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;aniž byste museli ručně měnit každou adresu&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Pro proměnné používejte klíče ve formátu promenna&lt;/ins&gt;, které &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Postman automaticky dosadí &lt;/ins&gt;do &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;URL, hlaviček i těla požadavku&lt;/ins&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Před odesláním pull requestu si ověřte, že váš kód prochází všemi testy. Pokud projekt žádné testy nemá, zkuste alespoň spustit sestavení. Typickou chybou &lt;/ins&gt;je &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;poslat změny&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;které fungují jen u vás&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;ale rozbijí něco jiného&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Po odeslání pull requestu se může stát&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;že vám správci napíšou připomínky&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Nebuďte &lt;/ins&gt;z &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;toho frustrovaní &lt;/ins&gt;– &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;je to běžná součást spolupráce. Reagujte na komentáře věcně&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;vysvětlujte své rozhodnutí &lt;/ins&gt;a &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;případně upravte kód&lt;/ins&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Praktické tipy pro každodenní práci Častým nešvarem začátečníků &lt;/ins&gt;je &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;verzovat až po dokončení celé funkce. Tím ale ztrácíte možnost vrátit &lt;/ins&gt;se k &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;dílčím krokům&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Ideální &lt;/ins&gt;je &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;commitovat po každé logické části – třeba po úpravě hlavičky&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;po přidání nové sekce nebo po vyřešení bugu&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Pokud pracujete &lt;/ins&gt;na &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;větší změně&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;využijte větve&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Větev &lt;/ins&gt;je &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;kopie vašeho kódu&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;ve které &lt;/ins&gt;můžete &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;experimentovat&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;aniž byste ovlivnili hlavní verzi. Když je vše hotové&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;větev sloučíte zpět. Tento postup oceníte zejména při práci v týmu&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;ale i sólově vám ušetří spoustu starostí&lt;/ins&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Praktické tipy pro psaní testů &lt;/ins&gt;a &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;automatizaci Postman nejen odesílá požadavky&lt;/ins&gt;, ale &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;umožňuje i psát automatizované testy v JavaScriptu&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Po odeslání požadavku přejděte na kartu „Tests&amp;quot; a přidejte ověření, že odpověď má očekávaný stavový kód&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;obsahuje správnou strukturu JSON &lt;/ins&gt;nebo &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;že hodnota v odpovědi odpovídá zadané&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Typickým příkladem &lt;/ins&gt;je &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;kontrola&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;že pm.response.to.have&lt;/ins&gt;.&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;status(200) nebo že pole data &lt;/ins&gt;je &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;pole a není prázdné&lt;/ins&gt;. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Tyto testy &lt;/ins&gt;se &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;ukládají do kolekce &lt;/ins&gt;a &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;lze je spouštět hromadně pomocí Collection Runneru&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;což je zásadní pro regresní testy&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>BenitoMcCary6</name></author>	</entry>

	<entry>
		<id>http://wiki.pannier-schulungen.de/index.php?title=Verzov%C3%A1n%C3%AD_webu:_Pr%C5%AFvodce_pro_za%C4%8D%C3%ADnaj%C3%ADc%C3%AD_kod%C3%A9ry&amp;diff=113696&amp;oldid=prev</id>
		<title>ZSBKathleen: Die Seite wurde neu angelegt: „Druhý častý problém je ignorování dotazovacích vzorů. NoSQL databáze nejsou univerzální – každý typ má specifické možnosti dotazování. Než…“</title>
		<link rel="alternate" type="text/html" href="http://wiki.pannier-schulungen.de/index.php?title=Verzov%C3%A1n%C3%AD_webu:_Pr%C5%AFvodce_pro_za%C4%8D%C3%ADnaj%C3%ADc%C3%AD_kod%C3%A9ry&amp;diff=113696&amp;oldid=prev"/>
				<updated>2026-08-21T17:33:34Z</updated>
		
		<summary type="html">&lt;p&gt;Die Seite wurde neu angelegt: „Druhý častý problém je ignorování dotazovacích vzorů. NoSQL databáze nejsou univerzální – každý typ má specifické možnosti dotazování. Než…“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Druhý častý problém je ignorování dotazovacích vzorů. NoSQL databáze nejsou univerzální – každý typ má specifické možnosti dotazování. Než nasadíte, zkuste si napsat pět nejčastějších dotazů, které vaše aplikace bude spouštět. Pokud zjistíte, že potřebujete fulltextové vyhledávání nebo složité agregace, možná je lepší zůstat u relační databáze nebo zkombinovat obojí (tzv. polyglot persistence). Také si rozmyslete, jak budete data mazat – některé NoSQL databáze nemají efektivní operaci pro smazání velkého rozsahu dat.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Stavba REST API v Node.js s frameworkem Express patří mezi základní dovednosti backendového vývojáře. Express je minimalistický, ale dostatečně flexibilní nástroj, který vám umožní rychle vytvořit funkční rozhraní. Než začnete, ujistěte se, že máte nainstalovaný Node.js a že rozumíte základům JavaScriptu, jako jsou async/await a práce s objekty. Celý postup je vhodné rozdělit do menších kroků, abyste se vyhnuli chaotickému kódu a usnadnili si budoucí údržbu.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Na závěr si osvojte testování API pomocí nástrojů jako Postman nebo přímo v rámci integračních testů. Pravidelně kontrolujte, jak vaše API reaguje na neexistující cesty, neplatná data nebo příliš velké požadavky. Express sice zvládá základní limity, ale pro produkci byste měli přidat kompresi a ochranu proti DoS útokům. A pamatujte – kvalitní REST API není jen o tom, aby fungovalo, ale aby bylo robustní, konzistentní a snadno použitelné pro ostatní vývojáře.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Nejprve si otevřete vývojové prostředí. Doporučuji použít Visual Studio Community nebo Visual Studio Code, obojí je zdarma. Po spuštění vytvořte nový projekt typu „Konzolová aplikace&amp;quot; (Console App) pro jazyk C#. Jméno projektu zvolte bez diakritiky, třeba „PrvniAplikace&amp;quot;. Po vytvoření uvidíte soubor Program.cs s předpřipraveným kódem. Smažte vše, co tam je, a napište následující kód: Console.WriteLine(&amp;quot;Ahoj, světe!&amp;quot;); a stiskněte F5. Program se spustí a v okně se zobrazí text. Tím máte za sebou první funkční aplikaci.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Nakonec si osvojte práci s vysvětlením plánu dotazu (EXPLAIN). Tento nástroj vám ukáže, jak databáze dotaz zpracovává, které indexy používá a kde dochází k sekvenčnímu procházení. Než optimalizujete, vždy se podívejte na tento výstup. Často zjistíte, že problém není v dotazu, ale v chybějícím indexu, který se tváří jako existující, ale ve skutečnosti se nepoužívá.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Routování a zpracování požadavků Express používá pro definici koncových bodů metody jako app.get(), app.post(), app.put() a app.delete(). Každá z nich přijímá cestu a callback funkci, která má přístup k objektům req a res. Při psaní rout je důležité používat parametry cest, třeba /users/:id, a validovat je ještě před samotným zpracováním. Typickou chybou je zapomenout na asynchronní zpracování – pokud vaše handler funkce nepoužívá async/await, může dojít k neošetřeným rejectovaným promisům, které aplikaci spadnou. Vždy proto obalujte asynchronní operace do try/catch bloků.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Další praktickou záležitostí je správa stavových kódů HTTP. Vracejte 200 pro úspěšné GET požadavky, 201 pro vytvoření nového zdroje, 204 pro úspěšné smazání a 400 nebo 404 pro chybové situace. Nepoužívejte univerzální 500 pro vše, co se nepovede. Konkrétní kódy pomáhají klientům rychleji diagnostikovat problém. Rovněž se vyhněte vracení surových chybových hlášení z databáze – vytvořte si jednoduchý middleware, který zachytí výjimky a převede je na JSON s přátelským popisem.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Další důležitou dovedností je umět se vrátit k předchozímu stavu. Pokud jste provedli commit a zjistíte, že je něco špatně, můžete se pomocí historie podívat na jednotlivé commity a vybrat ten, ke kterému se chcete vrátit. Pozor ale na to, že pokud jste provedli další změny a ty nejsou commitnuté, mohou se dostat do konfliktu. Vždy si proto před návratem uložte nebo zahoďte aktuální rozpracovanou práci. Dobré je také vědět, že commit nemusí být trvalý – můžete jej upravit, sloučit s jiným, nebo úplně odstranit, dokud nedojde k publikaci.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Nejjednodušší a pro menší týmy nejpraktičtější je model trunk-based development. Všechny změny směřují do hlavní větve, ale každá funkce nebo oprava dostane vlastní krátkodobou větev. Pravidlo zní: jedna větev = jeden úkol. Větve pojmenovávejte podle čísla úkolu nebo srozumitelného popisu, například feature/login-form nebo fix/empty-state. Hlavní větev zůstává vždy stabilní a připravená k nasazení.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Až je práce hotová, nemažte staré větve hned po sloučení. Nechte je ještě pár dní, ale označte je jako uzavřené. Pokud se objeví chyba, můžete se k nim vrátit. Když si tým zvykne na tato pravidla, ušetříte hodiny času, které by jinak padly na řešení konfliktů a na dohady, kdo co měl udělat jinak. Pravidelná revize workflow po každém větším projektu pomůže odhalit slabá místa a upravit proces podle aktuálních potřeb.&lt;/div&gt;</summary>
		<author><name>ZSBKathleen</name></author>	</entry>

	</feed>