<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl">
	<id>https://jak.mazovia.edu.pl/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=DellStrangways0</id>
	<title>Mazovia - Wkład użytkownika [pl]</title>
	<link rel="self" type="application/atom+xml" href="https://jak.mazovia.edu.pl/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=DellStrangways0"/>
	<link rel="alternate" type="text/html" href="https://jak.mazovia.edu.pl/index.php/Specjalna:Wk%C5%82ad/DellStrangways0"/>
	<updated>2026-10-16T06:49:21Z</updated>
	<subtitle>Wkład użytkownika</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://jak.mazovia.edu.pl/index.php?title=Index_Scan_Nebo_Full_Scan:_Co_Rozhoduje_O_Rychlosti_Dotazu&amp;diff=1040383</id>
		<title>Index Scan Nebo Full Scan: Co Rozhoduje O Rychlosti Dotazu</title>
		<link rel="alternate" type="text/html" href="https://jak.mazovia.edu.pl/index.php?title=Index_Scan_Nebo_Full_Scan:_Co_Rozhoduje_O_Rychlosti_Dotazu&amp;diff=1040383"/>
		<updated>2026-10-11T19:12:49Z</updated>

		<summary type="html">&lt;p&gt;DellStrangways0: Utworzono nową stronę &amp;quot;Nepodceňujte nástroje pro vývoj. Redux DevTools umožňují sledovat každou akci, skákat v čase a porovnávat strom stavu před a po. Když se aplikace chová divně, první krok je najít akci, po které se stav rozbije. Často se ukáže, že reducer mutuje původní objekt místo vytvoření nového. V produkci middleware pro logování vypněte, jinak zbytečně zpomaluje aplikaci a zaplavuje konzoli. Stejně tak kontrolujte, že žádný reducer neobsahu…&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Nepodceňujte nástroje pro vývoj. Redux DevTools umožňují sledovat každou akci, skákat v čase a porovnávat strom stavu před a po. Když se aplikace chová divně, první krok je najít akci, po které se stav rozbije. Často se ukáže, že reducer mutuje původní objekt místo vytvoření nového. V produkci middleware pro logování vypněte, jinak zbytečně zpomaluje aplikaci a zaplavuje konzoli. Stejně tak kontrolujte, že žádný reducer neobsahuje náhodné hodnoty nebo volání API.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Nakonec se vyplatí měřit, ne hádat. Změňte jeden prvek, změřte dobu a plán, a teprve pak dělejte další úpravu. Sledujte nejpomalejší dotazy průběžně, protože seznam se mění s tím, jak rostou data. Výkon není jednorázový úkol, ale rutina: aktualizovat statistiky, hlídat nevyužívané indexy a kontrolovat, jestli podmínky nebrání jejich použití.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Zvažte také, co se stane, když limit překročí legitimní uživatel. Místo tvrdého zablokování můžete poslat upozornění nebo zvýšit limit po ověření. U API je dobré vracet hlavičky s informací o limitu a zbývajícím čase. To klientům umožní se přizpůsobit. Pokud potřebujete rozlišit roboty od lidí, můžete přidat jednoduchý důkaz práce, ale to už je nad rámec běžného rate limitingu. Vždy měřte, kolik požadavků končí na 429, a podle toho pravidla upravujte. Bez měření jen hádáte.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Rychlost dotazu nejčastěji nezávisí na tom, jak dlouho trvá samotný výpočet, ale na tom, kolik dat musí databáze přečíst. Pokud dotaz prochází celou tabulku, aby vrátil pár řádků, je to signál, že chybí vhodný index nebo že ho optimalizátor odmítl použít. Prvním krokem je proto zjistit skutečný plán provedení. Většina databázových systémů umí příkaz EXPLAIN nebo jeho obdobu. Sledujte, zda se u tabulky objevuje full table scan, jaký typ joinu se použil a kolik řádků se odhaduje. Právě rozdíl mezi odhadem a skutečností často ukáže, kde je problém.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Praktický postup: nejprve změřte dobu běhu dotazu a prohlédněte si plán. Potom zkuste přidat nebo upravit index a znovu změřte. Nepřidávejte indexy naslepo; každý index zpomaluje zápisy a zabírá místo. Sledujte statistiky – pokud jsou zastaralé, optimalizátor se rozhoduje podle nesprávných odhadů. Pravidelná aktualizace statistik bývá nejlevnější optimalizace, kterou můžete udělat. A nakonec: testujte na datech, která odpovídají produkci. Malá vývojová tabulka se chová úplně jinak než plná produkční.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Dalším viníkem bývá návrat příliš mnoha sloupců. Dotaz SELECT * nutí databázi načíst i data, která vůbec nepotřebujete, a zvyšuje zátěž na přenos i paměť. Vypište jen sloupce, které skutečně použijete. U spojování tabulek dávejte pozor na pořadí joinů. Menší tabulka by měla být zpracována dříve, pokud to logika dovolí. Pomáhá také omezit množství řádků co nejdříve – filtr v poddotazu nebo v CTE může výrazně zmenšit datový tok ještě před joinem.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Pokud aplikace běží ve více instancích, paměťové úložiště přestane fungovat spolehlivě. Každý proces má vlastní počítadla a limit se tak fakticky násobí. Řešením je úložiště v Redis nebo jiné sdílené databázi. express-rate-limit podporuje vlastní store; stačí předat instanci klienta. Pozor na to, že Redis musí být dostupný a nesmí se stát dalším bodem selhání. Nastavte časové limity připojení a ošetřete výpadky tak, aby aplikace nespadla, ale aby limit přešel do bezpečného režimu.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Omezení rychlosti požadavků v Node.js s Expressem není jen o tom nasadit middleware a doufat, že to bude fungovat. Špatně nastavený limit dokáže zablokovat legitimní provoz, zatímco útočník proklouzne. Základem je uvědomit si, že rate limiting není brzda pro všechny, ale ochrana konkrétních zdrojů. Nesnažte se omezovat celou aplikaci jedním globálním pravidlem. Raději si nejdřív zmapujte, které endpointy jsou citlivé – přihlašování, registrace, odesílání e-mailů, vyhledávání nebo jakákoli operace, která stojí peníze nebo výkon.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Optimalizace není jednorázový úkon. Dotazy, které byly rychlé, mohou po nárůstu dat zpomalit. Proto se vyplatí mít přehled o pomalých dotazech a čas od času zkontrolovat jejich plány. Zaměřte se na ty, které běží často, i když jsou na první pohled rychlé – jejich kumulativní dopad bývá větší než u jednoho dlouhého dotazu. Změna jedné podmínky nebo přidání jednoho vhodného indexu pak často znamená rozdíl mezi dotazem, který zatěžuje celý systém, a dotazem, který si vezme jen to, co potřebuje.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Když se index zdá být, ale dotaz ho ignoruje Častý problém: index existuje, ale optimalizátor ho nepoužije. Důvodem bývá obalení sloupce funkcí nebo výrazem. Podmínka typu WHERE YEAR(datum) = 2024 zabrání použití indexu na sloupci datum, protože databáze musí nejprve spočítat hodnotu pro každý řádek. Řešením je přepsat podmínku na rozsah: datum &amp;gt;= &#039;2024-01-01&#039; AND datum úložné prostory v malém bytě&amp;lt;/a&amp;gt;ždy se snažte, aby levá strana podmínky obsahovala holý sloupec.&lt;/div&gt;</summary>
		<author><name>DellStrangways0</name></author>
	</entry>
	<entry>
		<id>https://jak.mazovia.edu.pl/index.php?title=Sd%C3%ADlen%C3%A1_datab%C3%A1ze,_kter%C3%A1_ti%C5%A1e_rozb%C3%ADj%C3%AD_testovac%C3%AD_pyramidu&amp;diff=1040147</id>
		<title>Sdílená databáze, která tiše rozbíjí testovací pyramidu</title>
		<link rel="alternate" type="text/html" href="https://jak.mazovia.edu.pl/index.php?title=Sd%C3%ADlen%C3%A1_datab%C3%A1ze,_kter%C3%A1_ti%C5%A1e_rozb%C3%ADj%C3%AD_testovac%C3%AD_pyramidu&amp;diff=1040147"/>
		<updated>2026-10-11T19:07:22Z</updated>

		<summary type="html">&lt;p&gt;DellStrangways0: Utworzono nową stronę &amp;quot;Pro sledování výkonu se vyplatí měřit dobu spuštění, spotřebu baterie a vytížení paměti. Pomohou vám k tomu nástroje, které jsou součástí vývojových prostředí, a jednoduché záznamy přímo v aplikaci. Zaznamenejte si, kolik času uplyne od klepnutí na ikonu po zobrazení první obrazovky. Pokud přesáhne několik sekund, hledejte příčinu – často jde o příliš mnoho práce při startu, například načítání velkých dat nebo in…&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Pro sledování výkonu se vyplatí měřit dobu spuštění, spotřebu baterie a vytížení paměti. Pomohou vám k tomu nástroje, které jsou součástí vývojových prostředí, a jednoduché záznamy přímo v aplikaci. Zaznamenejte si, kolik času uplyne od klepnutí na ikonu po zobrazení první obrazovky. Pokud přesáhne několik sekund, hledejte příčinu – často jde o příliš mnoho práce při startu, například načítání velkých dat nebo inicializaci knihoven, které nejsou potřeba.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Testů přes skutečné uživatelské rozhraní drž co nejméně. Jsou pomalé a křehké: stačí posunout tlačítko a přestanou fungovat. Piš je jen pro kritické cesty – přihlášení, [https://flashjournal.site/item/jak-e-it-open-source-licence-u-k-du-p-evzat-ho-od-klienta dokončení interiéru] objednávky, smazání účtu. Vždy hledej prvek podle stabilního identifikátoru, ne podle textu, který se překládá. Počkej na stav, ne na pevný počet sekund; pevné čekání je nejčastější důvod, proč testy na pomalém počítači padají. A když test spadne, podívej se nejdřív, jestli není chyba v testu samotném.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Vyhýbejte se sdílenému mutovatelnému stavu, kde to jde. Globální proměnné a objekty předávané mezi funkcemi, které je mění, dělají tok dat nepředvídatelným. Pokud funkce vrací novou hodnotu místo toho, aby přepisovala vstup, snáz se testuje a snáz se čte. Stejně tak dávejte přednost malým modulům s jasně vymezeným rozhraním před jedním velkým souborem, kde se všechno odkazuje na všechno.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Na co se vyplatí dát pozor při prvním rozhodování První jazyk by měl mít tři vlastnosti: jednoduchou syntaxi, dostatek materiálů v češtině nebo angličtině a aktivní komunitu. Jednoduchá syntaxe znamená, že nemusíš řešit složité typové systémy nebo [https://www.deviantart.com/search?q=ru%C4%8Dn%C3%AD ruční] správu paměti dří[https://stackoverflow.qastan.be/?qa=user/grzegorzwojcik84 úložné prostory v malém bytě], než pochopíš základy. Dostatek materiálů znamená, že když narazíš na chybu, najdeš vysvětlení. Aktivní komunita znamená, že se dostaneš k odpovědím na otázky, které ještě nikdo nezodpověděl.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Rozklad na malé kroky sám o sobě odhad nezpřesní, pokud ho neudělá člověk, který bude práci skutečně dělat. Manažer ani analytik nedokáže spolehlivě odhadnout, kolik času zabere implementace, protože nevidí do . Proto je lepší nechat odhad napsat řešitele a teprve potom ho porovnat s ostatními. Pokud se odhady dvou lidí liší více než dvojnásobně, není to důvod k hádce, ale signál, že zadání není dost jasné.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;U end-to-end testů je situace jiná. Ty často potřebují databázi, která se podobá produkci, včetně objemu a rozložení dat. Sdílená instance tady může dávat smysl, ale musí být oddělená od vývojové a integrační. Zásadní je, aby end-to-end běhy neběžely současně s jinými zápisy. Naplánuj je mimo pracovní špičku nebo použij samostatný klon. Pokud to nejde, raději omez počet paralelních běhů, než aby selhávaly kvůli zámkům.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Odhady v softwarových projektech selhávají především proto, že lidé odhadují práci, kterou ještě nikdy nedělali, a zaměňují ji za práci, kterou znají. Nejčastější chyba je odhadovat v hlavě během porady, kde nikdo nic nepočítá a všichni jen souhlasí s prvním číslem, které zazní. První krok k lepším odhadům je přestat odhadovat celky a začít rozkládat práci na části, které trvají nejvýše dva dny.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Vyhněte se odhadům, které zní příliš přesně. Tvrzení, že to bude hotové za sedmnáct dní, je falešná jistota. Poctivější je rozmezí a informace, co se stane, když se něco pokazí. Zároveň platí, že čím déle projekt běží, tím méně přesné odhady jsou, protože přibývá neznámých. Pokud se odhad začne výrazně rozcházet se skutečností, je lepší včas zmenšit rozsah než posouvat termín donekonečna.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Poslední věc, kterou je snadné podcenit, je monitoring. Sdílená databáze bez přehledu o tom, kdo ji zrovna používá, je černá skříňka. Zaznamenej, které testy se připojují, jak dlouho běží a [https://gitlab.rails365.net/grzegorzmazur34 jak zařídit malou kuchyni]é dotazy spouštějí. Když se pyramida začne sypat, uvidíš to v datech dřív, než ti to řekne někdo z týmu. Bez tohoto přehledu budeš jen hádat, která vrstva testů je ta, co zlobí.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Sdílená databáze mezi týmy vypadá jako úspora. Jeden stroj, jedna sada dat, žádné kopie. Jenže testovací pyramida stojí na předpokladu, že jednotlivé vrstvy testů jsou izolované a rychlé. Jakmile se o stejnou instanci začnou prát vývojáři, testeři a CI pipeline, pyramida se začne drolit od základů. Unit testy přestanou být unit testy, [https://www.buzzfeed.com/search?q=proto%C5%BEe protože] potřebují připojení k síti. Integrační testy závisí na datech, která někdo jiný právě přepsal. A end-to-end testy padají z důvodů, které s kódem nemají nic společného.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Začni tím, co chceš skutečně dělat. Pokud tě láká tvorba webových stránek, potřebuješ jazyk, který běží v prohlížeči. Pokud chceš zpracovávat data a tabulky, hledej jazyk s dobrými knihovnami pro výpočty. Pokud chceš ovládat hardware nebo psát rychlé aplikace, budeš potřebovat něco jiného. Konkrétní cíl je důležitější než abstraktní „chci se naučit programovat&amp;quot;. Bez cíle skončíš u tutoriálů, které tě nikam neposunou.&lt;/div&gt;</summary>
		<author><name>DellStrangways0</name></author>
	</entry>
	<entry>
		<id>https://jak.mazovia.edu.pl/index.php?title=Kdy_REST_ni%C4%8D%C3%AD_v%C3%BDkon_a_GraphQL_zbyte%C4%8Dn%C4%9B_komplikuje&amp;diff=1039719</id>
		<title>Kdy REST ničí výkon a GraphQL zbytečně komplikuje</title>
		<link rel="alternate" type="text/html" href="https://jak.mazovia.edu.pl/index.php?title=Kdy_REST_ni%C4%8D%C3%AD_v%C3%BDkon_a_GraphQL_zbyte%C4%8Dn%C4%9B_komplikuje&amp;diff=1039719"/>
		<updated>2026-10-11T18:55:00Z</updated>

		<summary type="html">&lt;p&gt;DellStrangways0: Utworzono nową stronę &amp;quot;Nejčastější chyba je, že do testu zahrnete skutečný HTTP klient. Ten se snaží volat síť, testy jsou pomalé a padají podle připojení. Řešení je jednoduché: síťového klienta nahraďte ručně vytvořenou funkcí, která vrací předpřipravená data nebo chybu. Stejně tak časovače: pokud async akce používá odložené volání, v testu je nahraďte synchronním spuštěním. Nikdy nespouštějte skutečné čekání, testy pak trvají zbyte…&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Nejčastější chyba je, že do testu zahrnete skutečný HTTP klient. Ten se snaží volat síť, testy jsou pomalé a padají podle připojení. Řešení je jednoduché: síťového klienta nahraďte ručně vytvořenou funkcí, která vrací předpřipravená data nebo chybu. Stejně tak časovače: pokud async akce používá odložené volání, v testu je nahraďte synchronním spuštěním. Nikdy nespouštějte skutečné čekání, testy pak trvají zbytečně dlouho.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Podepisování a ověřování Pro symetrické podepisování (HS256) používejte dostatečně dlouhý a náhodný klíč, ideálně z proměnné prostředí, nikdy ne v kódu. Asymetrické algoritmy (RS256, ES256) jsou vhodné, když token vydává jedna služba a ověřuje jiná – veřejný klíč lze bezpečně distribuovat. Vždy explicitně povolte pouze jeden algoritmus a při ověřování ho vynuťte. Typická chyba je přijetí algoritmu none nebo toho, který útočník vloží do hlavičky. Totéž platí pro ignorování podpisu u knihoven, které to umožňují konfigurací.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Volba mezi REST API a GraphQL není otázka modernosti, ale konkrétního tvaru dat a způsobu, jakým je klient bude používat. REST staví na pevně daných endpointech, kde každá adresa vrací předem definovanou strukturu. GraphQL nabízí jeden vstupní bod a klient si sám určí, která pole potřebuje. První chyba, kterou lidé dělají, je rozhodování podle popularity nástroje místo podle toho, jestli data mají pevnou nebo proměnlivou podobu.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Praktický postup je rozdělit odhad na dvě části. První je čistá práce, kterou umíte pojmenovat. Druhá je režie, kterou odhadnete z historie. Pokud z posledních pěti úkolů vychází, že režie tvořila zhruba třetinu času, použijte stejný podíl i nyní. Nejde o přesné číslo, ale o vědomé zahrnutí místo jeho ignorování. U delších úkolů režie neroste lineárně — čím více lidí a systémů je zapojeno, tím více času spotřebuje koordinace.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Nejprve si nainstalujte vývojové prostředí. Stačí Visual Studio Community nebo JetBrains Rider, případně VS Code s rozšířením pro C#. Při instalaci zaškrtněte workload pro .NET desktop development. Pak zvolte šablonu Console App a cílový framework .NET 8 nebo novější. Pokud vytvoříte projekt ve složce s diakritikou nebo mezerami, může se stát, že se build zasekne na neplatné cestě. Proto používejte názvy jako MojeAplikace bez háčků a mezer.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Co se opravdu stane po stisku F5 Po spuštění se nejdřív zavolá metoda Main. V novějších verzích C# ji nemusíte psát ručně, kompilátor vygeneruje takzvaný top-level program. Kód, který napíšete na první řádek souboru Program.cs, se provede jako první. To je častý zdroj zmatku: začátečník vloží metodu Main doprostřed a dostane chybu CS8802 nebo CS0017. Řešení je jednoduché – buď používejte top-level zápis, nebo všechny metody držte mimo něj a Main nechte jako jedinou vstupní metodu.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;U async akcí jde nejčastěji o thunk. Ten je funkce, která přijímá dispatch a getState a vrací promise. Test spočívá v tom, že thunk zavoláte s falešnými funkcemi, počkáte na promise a zkontrolujete, jaké akce se dispatchovaly a v jakém pořadí. Pozor na to, že thunk může dispatchovat jiné thunky. V takovém případě je potřeba je buď rozbalit, nebo testovat jen tu vnější část a vnitřní řešit zvlášť.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Volba vývojového prostředí pro Python vypadá jako marginálie, dokud nestrávíte celý den konfigurací rozšíření, která si navzájem kradou klávesové zkratky. IDE není jen okno s editorem. Rozhoduje o tom, jak rychle najdete chybu, jak snadno spustíte testy a jestli vůbec pochopíte, co se v kódu děje. Špatná volba se neprojeví hned první den, ale po měsíci zjistíte, že půlku času trávíte bojem s nástrojem místo řešením problému.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Doba platnosti tokenu má být krátká – řádově minuty až hodiny. Pro delší sezení používejte refresh token, který je uložen bezpečně (HttpOnly cookie, nikoli localStorage) a lze ho jednorázově zneplatnit. Claims jako role nebo oprávnění neberte jako absolutní pravdu, pokud se mohou změnit během platnosti tokenu. Buď je ověřujte proti databázi, nebo zvolte kratší expiraci. Do payloadu nikdy nedávejte citlivé údaje (hesla, rodná čísla, čísla karet) – payload je pouze podepsaný, ne šifrovaný, takže si ho kdokoli přečte.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Nepodceňujte ani terminál a správu úloh. IDE, které umí spouštět příkazy projektu přímo v integrovaném terminálu se správným prostředím, ušetří desítky přepnutí denně. Zkuste si nastavit jeden spouštěcí profil pro testy a jeden pro ladění. Pokud to zabere více než několik minut, je to další argument proti. Nakonec se ptejte na rychlost hledání v projektu a na to, zda nástroj umí pracovat s monorepem nebo více kořeny. To jsou věci, které vás budou bolet každý den.&lt;/div&gt;</summary>
		<author><name>DellStrangways0</name></author>
	</entry>
	<entry>
		<id>https://jak.mazovia.edu.pl/index.php?title=U%C5%BCytkownik:DellStrangways0&amp;diff=1039717</id>
		<title>Użytkownik:DellStrangways0</title>
		<link rel="alternate" type="text/html" href="https://jak.mazovia.edu.pl/index.php?title=U%C5%BCytkownik:DellStrangways0&amp;diff=1039717"/>
		<updated>2026-10-11T18:54:59Z</updated>

		<summary type="html">&lt;p&gt;DellStrangways0: Utworzono nową stronę &amp;quot;Autor blogu dílnou i obývákem žije už dlouho. Sdílím zde, jak zvládnout domácnost bez stresu. Nejraději ukazovat chytrá řešení, která zvládne každý.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Autor blogu dílnou i obývákem žije už dlouho. Sdílím zde, jak zvládnout domácnost bez stresu. Nejraději ukazovat chytrá řešení, která zvládne každý.&lt;/div&gt;</summary>
		<author><name>DellStrangways0</name></author>
	</entry>
</feed>