<?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=BrianneBlackett</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=BrianneBlackett"/>
	<link rel="alternate" type="text/html" href="https://wiki.rettungsdienstblog.eu/index.php?title=Spezial:Beitr%C3%A4ge/BrianneBlackett"/>
	<updated>2026-10-03T08:29:27Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.37.1</generator>
	<entry>
		<id>https://wiki.rettungsdienstblog.eu/index.php?title=Pokud_zvol%C3%AD%C5%A1_IDE_jen_podle_popularity,_bude%C5%A1_ladit_prost%C5%99ed%C3%AD_m%C3%ADsto_k%C3%B3du&amp;diff=401032</id>
		<title>Pokud zvolíš IDE jen podle popularity, budeš ladit prostředí místo kódu</title>
		<link rel="alternate" type="text/html" href="https://wiki.rettungsdienstblog.eu/index.php?title=Pokud_zvol%C3%AD%C5%A1_IDE_jen_podle_popularity,_bude%C5%A1_ladit_prost%C5%99ed%C3%AD_m%C3%ADsto_k%C3%B3du&amp;diff=401032"/>
		<updated>2026-10-01T18:33:17Z</updated>

		<summary type="html">&lt;p&gt;BrianneBlackett: Die Seite wurde neu angelegt: „Neignorujte chybová hlášení. Podrobná chybová zpráva z databáze prozradí názvy tabulek, sloupců i typy dat a útočníkovi výrazně usnadní další postup. V produkčním prostředí proto zapněte obecné chybové stránky a podrobnosti logujte pouze na server. Totéž platí pro ladící nástroje, které nesmí být veřejně dostupné.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Testování mobilních aplikací stojí na dvou pilířích: ručním průzkumu a automatizaci. R…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Neignorujte chybová hlášení. Podrobná chybová zpráva z databáze prozradí názvy tabulek, sloupců i typy dat a útočníkovi výrazně usnadní další postup. V produkčním prostředí proto zapněte obecné chybové stránky a podrobnosti logujte pouze na server. Totéž platí pro ladící nástroje, které nesmí být veřejně dostupné.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Testování mobilních aplikací stojí na dvou pilířích: ručním průzkumu a automatizaci. Rozdíl mezi nimi není v tom, který je lepší, ale v tom, co který dokáže odhalit. Ruční testování vyniká tam, kde jde o vzhled, plynulost a chování při reálném používání. Automatizace zase zvládne opakovat stovky scénářů bez únavy. Rozhodující je pochopit, kdy nasadit který přístup.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Největší chyba vzniká hned na začátku: tým si vybere NoSQL podle popularity a pak se snaží dotazovat stejně jako v relační databázi. Jenže bez schématu se data snadno rozutečou [http://wudao28.com/home.php?mod=space&amp;amp;uid=2888361 barvy stěn do obýváku] mnoha podob a každý dotaz začne skenovat celé kolekce. U dokumentových databází to znamená, že dokumenty rostou [http://ctphome.com/bbs/home.php?mod=space&amp;amp;uid=133868 barvy stěn do obýváku] obrovských struktur, které se špatně aktualizují, a u key-value úložišť se zase zvětšuje počet požadavků, protože chybí vhodné seskupení. Výsledkem je vyšší latence a složitější provoz, ne rychlejší aplikace.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Začněte jednotným formátem odpovědí. Každé volání by mělo vracet stejnou obálku: data, stavový kód, případně seznam chyb. U chyb vždy uvádějte strojově čitelný kód, lidsky čitelnou zprávu a pole, kterého se týká. Vyhněte se tomu, aby jedna chyba vracela řetězec a jiná objekt. Frontend pak nemusí řešit desítky variant a stačí mu jedna funkce pro zpracování odpovědi.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Druhá věc je debugger. Zkus nastavit zarážku na řádek, spustit program a projít se po kódu. Pokud musíš místo toho vkládat tiskové výpisy, prostředí ti práci neusnadní. Dobrý debugger umí zobrazit hodnoty proměnných, krokovat [https://telegra.ph/Jak-ve-v%C3%BDb%C4%9Bru-ide-zohlednit-podporu-pro-datab%C3%A1zov%C3%A9-n%C3%A1stroje-a-SQL-08-12 barvy stěn do obýváku] volaných funkcí a zastavit se při výjimce. To se nedá nahradit hezkým barevným schématem.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Nejčastější chyba je dokumentace psaná ručně vedle kódu. Časem se rozejde a nikdo nepozná, která verze platí. Lepší je generovat dokumentaci z anotací nebo ze schématu a udržovat ji jako součást repozitáře. Pokud to nejde, zaveďte pravidlo, že změna endpointu bez úpravy dokumentace neprojde revizí. Verzujte API a v dokumentaci vždy uveďte, které verze se změna týká.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;NoSQL není jedna databáze ani univerzální náhrada relačního modelu. Je to soubor přístupů, které se vzdávají pevného schématu a často i části transakčních záruk výměnou za jiný způsob ukládání a dotazování. Mezi hlavní skupiny patří dokumentové databáze, key-value úložiště, širokosloupcové systémy a grafové databáze. Každá z nich řeší jiný typ problému a jinak se v ní navrhují data.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Před nasazením si napište seznam pěti až deseti nejčastějších dotazů a odhadněte, kolik dat budou číst a zapisovat. Podle toho navrhněte klíče a seskupení dokumentů tak, aby jeden dotaz sáhl na co nejmenší [https://Www.Express.co.uk/search?s=po%C4%8Det%20m%C3%ADst počet míst]. U dokumentových databází pomáhá vnořovat data, která se čtou společně, ale zároveň hlídat velikost dokumentu. U grafů zase dávejte pozor na superuzly s obrovským počtem vazeb, které zdržují procházení. Bez tohoto kroku skončíte s pomalými dotazy i na výkonném clusteru.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Dokumentace REST API není popis toho, co jsme naprogramovali, ale smlouva mezi backendem a frontendem. Pokud si ji backend i frontend vyloží jinak, vznikají chyby, které se hledají těžko. Cílem je, aby se vývojář na frontendu dozvěděl z dokumentace vše potřebné bez ptaní a aby se kontrakt nezměnil, aniž by si toho někdo všiml.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Kdy NoSQL dává smysl a kdy ne NoSQL použijte tam, kde je přirozeně hierarchický nebo nepravidelný obsah, kde se mění podoba záznamů a kde potřebujete horizontální škálování zápisu. Typicky jde o katalogy s různými atributy, telemetrii, uživatelské profily,  vztahy v grafech. Naopak pro silně transakční agendu s mnoha vzájemně provázanými tabulkami, složitými joiny a požadavkem na okamžitou konzistenci je relační databáze stále bezpečnější volba. Není to ideologie, ale otázka přístupového vzoru.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Pozor také na doplňování kódu a na to, jak prostředí rozumí typům. Některá prostředí nabízejí našeptávání jen podle názvů, jiná skutečně analyzují kód. Rozdíl poznáš ve chvíli, kdy pracuješ s knihovnou, kterou dobře neznáš. Vyzkoušej to na jedné funkci s více parametry a sleduj, zda ti prostředí ukáže jejich názvy a typy.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Funkce, která má přes 30 řádků, obvykle dělá víc věcí. Rozdělte ji. Každá funkce by měla mít jednu odpovědnost a ideálně vracet hodnotu, ne měnit okolní stav. Vyhněte se hlubokému vnořování if bloků – použijte guard clauses na začátku funkce. Místo if (podminka) { ... } else { ... } často stačí otočit podmínku a vrátit se včas. Tím se sníží počet úrovní odsazení a kód se čte shora dolů jako příběh.&lt;/div&gt;</summary>
		<author><name>BrianneBlackett</name></author>
	</entry>
	<entry>
		<id>https://wiki.rettungsdienstblog.eu/index.php?title=4_z%C3%A1klady_HTML_a_CSS,_kter%C3%A9_rozhoduj%C3%AD_o_funk%C4%8Dnosti_str%C3%A1nky&amp;diff=400904</id>
		<title>4 základy HTML a CSS, které rozhodují o funkčnosti stránky</title>
		<link rel="alternate" type="text/html" href="https://wiki.rettungsdienstblog.eu/index.php?title=4_z%C3%A1klady_HTML_a_CSS,_kter%C3%A9_rozhoduj%C3%AD_o_funk%C4%8Dnosti_str%C3%A1nky&amp;diff=400904"/>
		<updated>2026-10-01T18:20:21Z</updated>

		<summary type="html">&lt;p&gt;BrianneBlackett: Die Seite wurde neu angelegt: „Hranice, které se v praxi osvědči&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Prvním krokem je rozdělit testy podle toho, co skutečně ověřují, ne podle názvu složky. Jednotkový test volá jednu funkci nebo třídu, nepoužívá databázi, síť ani souborový systém a běží v milisekundách. Integrační test naopak ověřuje spolupráci dvou a více komponent včetně reálného úložiště nebo HTTP vrstvy. Pokud test potřebuje nastartovat aplikaci, není to jednotkový t…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hranice, které se v praxi osvědči&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Prvním krokem je rozdělit testy podle toho, co skutečně ověřují, ne podle názvu složky. Jednotkový test volá jednu funkci nebo třídu, nepoužívá databázi, síť ani souborový systém a běží v milisekundách. Integrační test naopak ověřuje spolupráci dvou a více komponent včetně reálného úložiště nebo HTTP vrstvy. Pokud test potřebuje nastartovat aplikaci, není to jednotkový test, i když je v souboru s názvem unit.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;U složitějších async vzorů (redux-saga, redux-observable) testujte efekty izolovaně. Saga testy používají expectSaga nebo ruční iteraci generátoru. U observable testů použijte TestScheduler. Vždy testujte chybové větve: co se stane, když promise rejectuje, když je volání zrušeno, když přijde neočekávaná akce. Právě tam bývá nejvíc chyb.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;První věc je správná kostra dokumentu. Každý soubor začíná deklarací typu dokumentu a párovým tagem html s jazykem stránky. Uvnitř hlavičky patří znaková sada, titulek a meta tag pro responzivitu. Tělo pak obsahuje viditelný obsah. Typická chyba: chybějící meta tag viewport. Na mobilu se pak stránka zobrazí jako zmenšená plocha a uživatel musí zoomovat. Nastavte jej vždy: šířka zařízení, počáteční měřítko jedna.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Nakonec testujte průběžně, ne až na konci. Otevřete nástroje pro vývojáře, zkontrolujte konzoli a zkuste stránku zúžit na šířku telefonu. Chyby v HTML se v prohlížeči často tiše opraví, ale to neznamená, že tam nejsou. Projděte si strukturu a ověřte párové tagy. Když držíte tyto čtyři základy, máte pevnou půdu pro jakékoli další rozšiřování.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Testování Redux logiky bez integračního prostředí znamená, že ověřujete pouze čisté funkce a thunk akce v Node.js. Reducer je čistá funkce: dostane stav a akci, vrátí nový stav. Žádné závislosti na DOM, fetchi ani globálních objektech. Async akce (thunk, saga, observable) naopak potřebují mockované dispatch a getState. Izolovaný test odhalí chyby dřív, než je zamaskuje UI.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Sémantické tagy místo divů Místo desítek divů používejte tagy, které nesou význam: header, nav, main, section, article, footer. Vyhledávače i čtečky obrazovky z nich lépe pochopí, co je na stránce důležité. Divy si nechte na čistě vizuální obaly. Další častá chyba je vnořování tagů do sebe bez rozmyslu. Nadpis první úrovně patří na stránku jednou, další nadpisy tvoří logickou hierarchii. Když ji přeskočíte, snižujete přístupnost i srozumitelnost obsahu.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;U async akcí (thunk) testujte funkci, kterou thunk vrací, přímo. Vytvořte mock dispatch a getState jako jednoduché funkce, které sbírají volání. Zavolejte thunk s těmito mocky a počkejte na návratový promise. Ověřte pořadí dispatch volání: nejdřív „pending&amp;quot; akce, pak úspěch nebo chyba. Nepoužívejte reálný store ani reálný fetch. Mnoho lidí si plete async testy s čekáním na síť – to už je integrační test.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;CSS pak připojte buď externím souborem v hlavičce, nebo zápisem do hlavičky. Externí soubor je lepší, protože se cachuje a odděluje vzhled od struktury. V selektorech dávejte přednost třídám před identifikátory. ID má být na stránce jen jedno a používá se spíš pro skoky v rámci dokumentu. Vyhněte se řetězení selektorů do dlouhých cest, které se špatně udržují. Platí pravidlo: čím konkrétnější selektor, tím větší problém při změně.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Pro mockování asynchronních volání použijte jest.fn() nebo vi.fn(), které vrací promise. Nikdy netestujte konkrétní implementaci API, ale pouze to, že thunk správně dispatchuje výsledek. Pokud thunk volá více async operací, testujte každou zvlášť. Pozor na sdílený stav mezi testy: vždy resetujte mocky v beforeEach. Zapomenutý reset způsobí, že jeden test ovlivní druhý.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Volba open source licence není formalita, kterou lze odbýt na konci projektu. Ovlivňuje, kdo může váš kód použít, jak ho může upravovat a zda musí své úpravy zveřejnit. Špatně zvolená licence může znamenat, že váš projekt nikdo nepoužije, nebo naopak že ho někdo uzavře a vy už nedostanete nic zpět. Proto je potřeba se rozhodnout dřív, než zveřejníte první řádek kódu.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Nejprve si ujasněte, co od licence očekáváte. Chcete, aby kód mohl použít kdokoli i v komerčním produktu bez povinnosti zveřejnit zdrojáky? Pak hledejte permisivní licenci, jako je MIT, BSD nebo Apache. Pokud naopak chcete, aby každý, kdo váš kód upraví a dál šíří, musel zachovat stejnou svobodu i pro své úpravy, potřebujete copyleftovou licenci, typicky GPL. Rozdíl mezi permisivní a copyleftovou licencí je to nejdůležitější rozhodnutí, které uděláte.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Jak na to prakticky: reducery a thunk akce Pro reducer použijte testovací runner (Jest, Vitest, Mocha) a napište tři scénáře: výchozí stav bez akce, reakce na známou akci a reakce na neznámou akci. Ověřujte, že se stav nemutuje – použijte Object.freeze nebo porovnání reference. Typická chyba: testovat reducer přes store, čímž do testu zbytečně taháte middleware a vytváříte integrační závislost. Další častá chyba je ignorování vnořených objektů: mělká kopie nestačí, pokud měníte vnořenou strukturu.&lt;/div&gt;</summary>
		<author><name>BrianneBlackett</name></author>
	</entry>
	<entry>
		<id>https://wiki.rettungsdienstblog.eu/index.php?title=Benutzer:BrianneBlackett&amp;diff=400900</id>
		<title>Benutzer:BrianneBlackett</title>
		<link rel="alternate" type="text/html" href="https://wiki.rettungsdienstblog.eu/index.php?title=Benutzer:BrianneBlackett&amp;diff=400900"/>
		<updated>2026-10-01T18:20:18Z</updated>

		<summary type="html">&lt;p&gt;BrianneBlackett: Die Seite wurde neu angelegt: „Někdo, kdo praktickým bydlením sází na osvědčené tipy. Píšu o tom, jak si poradit v malém bytě. Nejvíc mě baví ukazovat chytrá řešení, která zvládne každý.“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Někdo, kdo praktickým bydlením sází na osvědčené tipy. Píšu o tom, jak si poradit v malém bytě. Nejvíc mě baví ukazovat chytrá řešení, která zvládne každý.&lt;/div&gt;</summary>
		<author><name>BrianneBlackett</name></author>
	</entry>
</feed>