<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.rettungsdienstblog.eu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=BobbieHogle4</id>
	<title>Rettungsdienst-Wiki - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.rettungsdienstblog.eu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=BobbieHogle4"/>
	<link rel="alternate" type="text/html" href="https://wiki.rettungsdienstblog.eu/index.php?title=Spezial:Beitr%C3%A4ge/BobbieHogle4"/>
	<updated>2026-10-03T04:50:49Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.37.1</generator>
	<entry>
		<id>https://wiki.rettungsdienstblog.eu/index.php?title=Co_odhal%C3%AD_konzole_d%C5%99%C3%ADv_ne%C5%BE_nekone%C4%8Dn%C3%A9_p%C5%99em%C3%BD%C5%A1len%C3%AD%3F&amp;diff=400880</id>
		<title>Co odhalí konzole dřív než nekonečné přemýšlení?</title>
		<link rel="alternate" type="text/html" href="https://wiki.rettungsdienstblog.eu/index.php?title=Co_odhal%C3%AD_konzole_d%C5%99%C3%ADv_ne%C5%BE_nekone%C4%8Dn%C3%A9_p%C5%99em%C3%BD%C5%A1len%C3%AD%3F&amp;diff=400880"/>
		<updated>2026-10-01T18:18:04Z</updated>

		<summary type="html">&lt;p&gt;BobbieHogle4: Die Seite wurde neu angelegt: „Zaveďte dvě sady příkazů, které se dají spouštět zvlášť. Jednotkové testy musí běžet při každé změně a musí být spolehlivé. Integrační testy spouštějte před commitem nebo v CI na menším vzorku a v plné sadě méně často. Pomůže i fyzické oddělení: jiná složka, jiný konfigurační soubor, jiný běhový profil. Když se integrační testy tváří jako jednotkové, vývojář je přestane pouštět, protože trvaj…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Zaveďte dvě sady příkazů, které se dají spouštět zvlášť. Jednotkové testy musí běžet při každé změně a musí být spolehlivé. Integrační testy spouštějte před commitem nebo v CI na menším vzorku a v plné sadě méně často. Pomůže i fyzické oddělení: jiná složka, jiný konfigurační soubor, jiný běhový profil. Když se integrační testy tváří jako jednotkové, vývojář je přestane pouštět, protože trvají příliš dlouho.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Swift je dnes jediná rozumná volba pro nové aplikace na platformách Applu. Objective-C sice stále funguje a v mnoha projektech zůstává, ale pokud začínáte od nuly, nemá smysl do něj investovat čas. Swift je bezpečnější díky silnému typovému systému, čitelnější a jeho kompilátor odhalí řadu chyb ještě před spuštěním aplikace. To se projeví hlavně ve větších projektech, kde se počet obrazovek a stavů rychle násobí.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Dalším místem je spojování tabulek. JOIN bez indexu na spojovacím sloupci vede k nested loop s full scanem. Ověřte, že obě strany JOINu mají index. U velkých tabulek zvažte, zda není lepší použít EXISTS místo IN, pokud jde o korelovaný poddotaz. Někdy pomůže i přepsání poddotazu na JOIN, jindy naopak. Vždy měřte.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Testování mobilních aplikací se často omezuje na jedno zařízení a jednu verzi systému. Výsledkem je aplikace, která funguje na vývojářově telefonu, ale u části uživatelů padá při startu nebo zobrazuje rozbité rozvržení. Chyba nebývá v kódu jako takovém, ale v tom, že se testuje příliš úzký vzorek prostředí. Prvním krokem proto je sestavit matici zařízení podle skutečných dat o uživatelích, ne podle toho, co je po ruce.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Paměťovým cyklům se nevyhnete, pokud nebudete dávat pozor. Silné reference mezi objekty, které na sebe vzájemně odkazují, způsobí, že se ani jeden neuvolní. Platí to hlavně u uzávěrů a pozorovatelů. Pravidelně kontrolujte, kdo koho drží, a slabé reference používejte tam, kde dává smysl. Nástroje pro ladění paměti vám ukážou, které objekty zůstávají v paměti po opuštění obrazovky.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Častou chybou je použití funkce na indexovaném sloupci, například WHERE YEAR(datum_objednavky) = 2024. Tím se index stává nepoužitelným. Místo toho napište rozsah: WHERE datum_objednavky &amp;gt;= &amp;#039;2024-01-01&amp;#039; AND datum_ &amp;lt;&amp;#039;2025-01-01&amp;#039;. Podobně se vyhněte implicitním převodům typů – pokud je sloupec číslo a vy porovnáváte s řetězcem, databáze může index ignorovat.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Než začnete hledat chybu v kódu, otevřete vývojářské nástroje. Většina prohlížečů je otevře klávesou F12 nebo zkratkou Ctrl+Shift+I. Přepněte se na panel Console. Pokud je tam červený text, máte první stopu. Klikněte na číslo řádku vpravo od chyby, prohlížeč vás přenese přímo do zdroje na problematické místo. Často jde o překlep v názvu proměnné nebo o volání funkce, která ještě nebyla načtena. Console není jen výpis chyb, můžete do ní psát příkazy a zkoušet, co se děje s daty.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Zvláštní pozornost si zaslouží uložené procedury. Ani ty nejsou automaticky bezpečné. Pokud procedura uvnitř používá dynamické SQL a vkládá do něj parametr přes spojování řetězců, injektáž zůstává. Stejně tak volání procedury s právy vlastníka může útočníkovi rozšířit možnosti, pokud se mu podaří ovlivnit vnitřní dotaz. U dynamického SQL uvnitř procedur platí stejné pravidlo jako v aplikaci: parametry předávejte přes placeholdery, ne textem.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Častá chyba je zapomenutý breakpoint. Než zavřete nástroje, zkontrolujte panel Breakpoints a všechny záznamy smažte. Jinak se vám stránka bude zasekávat i při běžném prohlížení a budete marně hledat příčinu. Stejně tak pozor na podmíněné breakpointy: pravým kliknutím na červený bod můžete přidat podmínku, třeba i == 5. Skript se zastaví jen tehdy, když podmínka platí. To se hodí u cyklů, které jinak proběhnou tisíckrát.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Breakpoint vydrží víc než dvacet console.log V panelu Sources najděte svůj soubor a klikněte na číslo řádku, kde chcete zastavit běh. Vznikne breakpoint. Obnovte stránku a skript se zastaví přesně tam. Vpravo se zobrazí aktuální hodnoty všech proměnných v daném rozsahu. Můžete je rovnou přepsat a sledovat, jak se změní další průběh. Tlačítky Step over, Step into a Step out se posouváte po kódu. Pokud se smyčka zacyklí, stačí breakpoint uvnitř a uvidíte, kolikáté opakování právě běží. Tohle odhalí chyby, které se v konzoli vůbec neprojeví, protože kód nespadne, jen dělá něco jiného, než má.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Když se chyba objeví jen občas, použijte panel Network. Zkontrolujte, zda se všechna data skutečně načetla a v jakém pořadí. Asynchronní volání často doběhnou později, než kód očekává. Pomůže sledovat stavové kódy odpovědí a časování. Pokud některý požadavek skončí chybou, najdete ji v záložce Response nebo v konzoli. Někdy stačí přidat čekání na dokončení operace, jindy je problém v tom, že se stejný požadavek odešle dvakrát.&lt;/div&gt;</summary>
		<author><name>BobbieHogle4</name></author>
	</entry>
	<entry>
		<id>https://wiki.rettungsdienstblog.eu/index.php?title=V%C4%9Btev,_nebo_fork:_co_rozhoduje_o_hladk%C3%A9m_v%C3%BDvoji&amp;diff=400778</id>
		<title>Větev, nebo fork: co rozhoduje o hladkém vývoji</title>
		<link rel="alternate" type="text/html" href="https://wiki.rettungsdienstblog.eu/index.php?title=V%C4%9Btev,_nebo_fork:_co_rozhoduje_o_hladk%C3%A9m_v%C3%BDvoji&amp;diff=400778"/>
		<updated>2026-10-01T18:04:41Z</updated>

		<summary type="html">&lt;p&gt;BobbieHogle4: Die Seite wurde neu angelegt: „Nakonec si hlídejte poměr, ale ne slepě. U malé služby může stačit pár jednotkových a jeden integrační test. U složitého systému s mnoha rozhraními bude integrační vrstva silnější. Pyramida je vodítko pro rozhodování, ne soutěž o počty. Když každý test ví, co ověřuje, a běží na správné vrstvě, sada zůstane rychlá, srozumitelná a užitečná i po letech.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Většina týmů, které si stěžují na chaotické m…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Nakonec si hlídejte poměr, ale ne slepě. U malé služby může stačit pár jednotkových a jeden integrační test. U složitého systému s mnoha rozhraními bude integrační vrstva silnější. Pyramida je vodítko pro rozhodování, ne soutěž o počty. Když každý test ví, co ověřuje, a běží na správné vrstvě, sada zůstane rychlá, srozumitelná a užitečná i po letech.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Většina týmů, které si stěžují na chaotické mergování, nemá problém v nástroji, ale v tom, že si nikdy nedohodla, kdo co vlastně dělá. Git je distribuovaný systém a bez pravidel se každý vývojář chová jako samostatný ostrov. První krok tedy není technický, ale organizační: sepište na jednu stránku, jaké větve budete používat a k čemu slouží. Bez toho se dřív nebo později stane, že dva lidé upraví stejný soubor a výsledek bude horší než předtím.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Prvním krokem je zmapovat, co databáze skutečně obsahuje. V MySQL často zůstávají tabulky bez primárního klíče, sloupce s implicitními hodnotami, uložené procedury a triggery v proprietární syntaxi. Všechny tyto objekty je nutné projít ručně. Automatické konvertory sice převedou většinu DDL, ale výrazy specifické pro MySQL zůstanou nepřeložené nebo se přeloží špatně. Výsledkem bývá schéma, které se sice vytvoří, ale neodpovídá původní logice.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Základem je dlouho žijící hlavní větev, obvykle main nebo master, která by měla vždy obsahovat nasaditelný stav. Do ní se nikdy necommituje přímo. Každá změna vzniká na krátké větvi, jejíž název nese účel: oprava přihlášení, nový filtr v seznamu, aktualizace závislostí. Krátká větev znamená jednotky dní, ne týdny. Čím déle větev žije, tím větší je vzdálenost od main a tím bolestivější je návrat. Větve pojmenovávejte malými písmeny s pomlčkami, ať se v nich dá hledat a ať je na první pohled jasné, co řeší.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Testovací pyramida není dogma, ale nástroj, jak rozhodnout, kde má který test vzniknout. Vychází z jednoduché myšlenky: čím rychlejší a levnější test, tím častěji ho spouštíme. Na dně stojí jednotkové testy, uprostřed integrační a nahoře end-to-end. Pokud poměr obrátíte, sada se zpomalí, začne padat z nesouvisejících důvodů a lidé jí přestanou věřit.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Typická chyba je dlouhé držení větve a čekání na schválení. Další je force push do sdílené větve, který smaže kolegům jejich commity. Vyhněte se také commitům se zprávami typu „oprava&amp;quot; nebo „úpravy&amp;quot;. Zaveďte si pravidlo, že hlavní větev je chráněná a přímý push do ní není možný. Tým, který dodržuje krátké větve, jasné zprávy a povinnou kontrolu, stráví méně času hašením požárů a více psaním kódu, který funguje.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Základní pravidlo zní: pokrytí měřte tam, kde může selhání způsobit reálnou škodu. Platební logika, výpočty, validace vstupů nebo stavové automaty si vysoké pokrytí zaslouží. Naopak jednoduché gettery, konfigurační konstanty nebo automaticky generovaný kód nemá smysl honit na sto procent. Pokud tým tráví čas psaním testů jen proto, aby v reportu svítilo vyšší číslo, přesunul se od kvality k vanity metrice.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Kdy se z pokrytí stává past Prvním varovným signálem je situace, kdy testy volají funkci, ale nekontrolují žádný výstup. Projdou všemi řádky, zvýší pokrytí, ale chybu v logice neodhalí. Druhým je snaha pokrýt i triviální a stabilní části, zatímco kritické větve zůstávají netknuté. Třetím je tlak na procenta shora: jakmile se z pokrytí stane cíl, začnou vznikat testy bez hodnoty. Čtvrtým je ignorování toho, jaký typ pokrytí sledujete – řádkové, větvové nebo podmínkové. Každý vypovídá o něčem jiném a zaměňovat je vede k falešnému pocitu bezpečí.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Měření pokrytí kódu testy vypadá jako jednoznačné číslo, které lze snadno vykázat. Právě proto se často zneužívá. Pokrytí samo o sobě neříká, zda testy něco skutečně ověřují, nebo jen procházejí řádky kódu, aniž by kontrolovaly výsledek. Užitečné je pouze tehdy, když ho čtete společně s kvalitou testů a rizikem konkrétního kódu.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Pokrytí přestává být užitečné ve chvíli, kdy se stane cílem místo nástrojem. Jakmile tým píše testy kvůli reportu, přestává řešit, co má být ověřeno. Stejně tak ztrácí smysl, když se jím poměřují lidé nebo když se porovnávají nesrovnatelné projekty. Číslo bez kontextu neřekne nic o tom, zda je software spolehlivější. Říká jen, kolik řádků bylo spuštěno.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Pozor na práci s testy, které jen zvyšují pokrytí. Často vznikají tak, že se testuje privátní metoda přes veřejné rozhraní, ale bez kontroly stavu. Takový test projde, i když logika vrátí špatný výsledek. Místo toho se zaměř na chování: co má funkce vrátit, jaké chyby má vyhodit, jak se změní stav. Pokud test neumí selhat při změně logiky, nemá cenu. Stejně tak nepomůže testovat gettery a settery jen proto, aby vyskočilo procento.&lt;/div&gt;</summary>
		<author><name>BobbieHogle4</name></author>
	</entry>
	<entry>
		<id>https://wiki.rettungsdienstblog.eu/index.php?title=Benutzer:BobbieHogle4&amp;diff=400777</id>
		<title>Benutzer:BobbieHogle4</title>
		<link rel="alternate" type="text/html" href="https://wiki.rettungsdienstblog.eu/index.php?title=Benutzer:BobbieHogle4&amp;diff=400777"/>
		<updated>2026-10-01T18:04:40Z</updated>

		<summary type="html">&lt;p&gt;BobbieHogle4: Die Seite wurde neu angelegt: „Autor blogu dílnou i obývákem sází na osvědčené tipy. Píšu o tom, jak skloubit funkčnost s teplem domova. Nejraději hledat cesty, jak si usnadnit život.“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Autor blogu dílnou i obývákem sází na osvědčené tipy. Píšu o tom, jak skloubit funkčnost s teplem domova. Nejraději hledat cesty, jak si usnadnit život.&lt;/div&gt;</summary>
		<author><name>BobbieHogle4</name></author>
	</entry>
</feed>