Jak Nastavit CI/CD Pipeline S GitHub Actions: Unterschied zwischen den Versionen

Aus MeinWiki
Wechseln zu: Navigation, Suche
(Die Seite wurde neu angelegt: „Klíčové je rozlišovat mezi „co" a „proč". Diff vám ukáže, co se změnilo, ale ne proč. Proto v popisu vždy vysvětlete důvod. Například místo…“)
 
K
 
Zeile 1: Zeile 1:
Klíčové je rozlišovat mezi „co" a „proč". Diff vám ukáže, co se změnilo, ale ne proč. Proto v popisu vždy vysvětlete důvod. Například místo „Změněna barva tlačítka" napište „Změněna barva tlačítka na tmavší, aby byl lépe viditelný na světlém pozadí". Taková informace šetří čas při revizi kódu i při budoucí údržbě. Pokud je změna složitější, rozdělte ji do více commitů, ať každý dělá jednu věc. To usnadní reverz a hledání příčiny chyb.<br><br>Kdy NoSQL nepoužívat a jaké chyby se vyvarovat Naopak, pokud potřebujete provádět složité transakce, kde je nutné zajistit, aby se buď provedly všechny operace, nebo žádná, zůstaňte u relační databáze. Typickým příkladem je bankovní převod – odeslání peněz a připsání na účet musí proběhnout atomicky. Většina NoSQL systémů podporuje transakce jen omezeně, nebo jen na úrovni jednoho záznamu. Dalším případem, kdy se NoSQL nehodí, jsou dotazy nad více tabulkami, které vyžadují časté spojování (JOIN). I když některé NoSQL databáze tento problém řeší, výkonnostně a vývojově je to složitější než v SQL.<br><br>Při práci s NoSQL se vyvarujte dvěma častým chybám. První je použití NoSQL jen proto, že je „moderní", bez jasného důvodu. Druhým problémem je nedostatečné navržení datového modelu. V NoSQL se často doporučuje ukládat data tak, jak je budete číst (denormalizace). To znamená, že pokud potřebujete zobrazit objednávku s položkami, uložíte je společně v jednom dokumentu, místo abyste je rozdělovali do více tabulek. To vede k výkonnostnímu zisku, ale musíte pečlivě zvážit, jak se data mění, abyste se vyhnuli nekonzistencím.<br><br>Typová inference a praktické tipy TypeScript se snaží uhodnout typy automaticky, což znamená, že nemusíte psát anotace všude. Pokud ale deklarujete proměnnou bez inicializace, dostanete typ any, který vypne veškerou kontrolu. To je častý zdroj chyb. Místo any používejte unknown nebo konkrétní typ, případně zúžený typ pomocí typeof či instanceof. Další častou pastí je práce s poli pokud máte pole, které může obsahovat různé typy, definujte to explicitně jako union, aby nedošlo k neočekávanému chování při volání metod.<br><br>Další technikou, kterou oceníte při ladění složitějších aplikací, je použití logpointů. Logpoint je hybrid mezi console.log a breakpointem – místo zastavení běhu programu pouze vypíše hodnotu do konzole. To je ideální pro situace, kdy potřebujete sledovat hodnoty ve smyčce, ale nechcete při každé iteraci ručně pokračovat. Nastavíte ho stejně jako breakpoint, ale v menu zvolíte možnost Add logpoint a napíšete výraz, který se má vypsat. Tím získáte rychlý přehled bez zbytečného přerušování běhu.<br><br>Typickou chybou je psát zprávy v minulém čase. „Fixed bug" nebo „Přidali jsme funkci" je sice běžné, ale lépe se čte rozkazovací způsob: „Oprav chybu v přihlašování" nebo „Přidej validaci e-mailu". Tento styl připomíná příkaz a přesně říká, co změna dělá. Druhým častým prohřeškem je příliš dlouhé shrnutí, které se nevejde do rozhraní a je oříznuto. Držte se tedy stručnosti. A poslední zásada: pokud změna řeší více nesouvisejících věcí, rozdělte ji do více commitů. Jeden commit by měl představovat jednu logickou jednotku.<br><br>Když se řekne databáze, většina vývojářů si představí tabulky, řádky a SQL dotazy. Relační databáze jsou osvědčeným standardem, ale ne pro každý projekt jsou tou nejlepší volbou. NoSQL databáze nabízí jiný způsob ukládání dat, který může být v některých případech výrazně efektivnější. Než se ale pustíte do jejich implementace, je důležité pochopit, kdy dávají smysl a kdy naopak přinesou více problémů než užitku.<br><br>Na závěr: TypeScript se nejlépe učí při práci na reálném projektu. Začněte tím, že si do existujícího JavaScriptového projektu přidáte konfigurační soubor a postupně přepnete soubory na .ts. Sledujte chyby, které editor hlásí, a opravujte je. Po pár týdnech zjistíte, že píšete kód rychleji, protože se nemusíte spoléhat na paměť a dokumentaci. Chyby odhalíte dřív, než se dostanou k uživatelům, a to je největší přínos, který TypeScript nabízí.<br><br>Když procházíte historii projektu, každá commit zpráva by měla odpovědět na dvě otázky: co se změnilo a proč. Většina vývojářů ale píše zprávy jako „oprava bugu" nebo „úpravy". Takové popisy jsou k ničemu, protože neříkají, co přesně se dělo, a hlavně proč. Bez kontextu se po pár měsících vracíte k hádankám a musíte ručně procházet diff, abyste zjistili, co se vlastně stalo. Cílem není psát romány, ale dodat dostatek informací, aby se kdokoli v historii rychle zorientoval.
+
<br>Kdy přidat integrační test a kdy raději unit test Praktické vodítko: pokud test vyžaduje nastavení více než tří závislostí (databáze, HTTP klient, fronta), zvažte, zda by nešlo většinu logiky pokrýt unit testem a integrační test nechat jen na okrajové případy. Typickou chybou je testovat každou metodu servisní vrstvy integračně, i když se v ní nachází čistá byznys logika. Přesuňte tuto logiku do samostatné třídy, kterou otestujete jednotkově. Integrační test pak pouze ověří, že se třída správně propojuje s okolím – a takových testů stačí málo.<br><br>Na závěr: rovnováha není statický stav, ale průběžný proces. Při každé nové funkci si položte otázku, zda ji lze pokrýt unit testem s minimálním úsilím. Pokud ano, udělejte to. Integrační testy si šetřete na místa, kde dochází ke skutečné interakci mezi komponentami – a i tam se snažte o minimální počet scénářů. Pravidelná údržba testů, jejich mazání a refaktorování, je stejně důležitá jako psaní nových. Jen tak udržíte testovací sadu rychlou, spolehlivou a užitečnou i v době, kdy se codebase dál rozrůstá.<br><br>Častým problémem je také zapomínání na resetování stavu mezi požadavky. Pokud uživatel odešle formulář, pak ho zruší a odešle znovu, stará data se mohou mísit s novými. Proto si vždy definujte akci reset pro každý slice, která vrátí stav do výchozího bodu. Nebo, pokud používáte thunky, můžete v rámci jednoho thunku nejprve dispatchnout reset a poté načítání. Tento návyk eliminuje spoustu chyb s duplicitními nebo zastaralými daty.<br><br>Práce s asynchronními akcemi v Reduxu často vede k nepřehlednému stavu, který je obtížné testovat a rozšiřovat. Největší chybou, kterou vidím v kódu týmů, je skladování všech dat, stavů načítání a chyb do jedné globální proměnné bez jasné struktury. Výsledkem jsou pak komponenty, které řeší, [https://Www.wikipedia.org/wiki/zda%20m%C3%A1 zda má] být tlačítko aktivní, a zároveň zpracovávají odpověď ze serveru. Přitom stačí dodržet pár zásad, aby se stav stal předvídatelným a údržba snesitelná.<br><br>Pro nasazení (CD) vytvořte samostatný job, který závisí na úspěšném CI. Využijte secrets pro přihlašovací údaje – nikdy je neukládejte přímo do YAML souboru. V nastavení repozitáře najdete sekci Secrets, kde uložíte tokeny nebo klíče. V workflow je pak použijte jako $ secrets.NAZEV . Deploy na server může probíhat přes SSH, docker push nebo nahrání artefaktů na hosting. Důležité je také správně nastavit permissions minimální oprávnění pro každý job, aby se předešlo bezpečnostním rizikům.<br><br>Poslední rada: nepodceňujte výběr selectoru. Pokud máte v komponentě přístup k celému stavu Reduxu, selektory by měly být co nejkonkrétnější – vracející jen to, co komponenta potřebuje. Vyhnete se tím zbytečnému překreslování, když se změní jiná část stavu. Pro asynchronní data je vhodné si připravit selektory, které vrací rovnou připravená data pro zobrazení, třeba s výchozími hodnotami, a tím oddělíte logiku výběru od logiky zpracování.<br><br>Když backend dodá rozhraní bez pořádné dokumentace, frontend často tápá, doptává se na Slacku a píše si vlastní poznámky. Výsledkem jsou zbytečné chyby, zpoždění a frustrace. Přitom stačí dodržet pár zásad, které z dokumentace udělají nástroj, ne nutné zlo. Tento článek se zaměřuje na praktické kroky, jak dokumentaci připravit tak, aby sloužila oběma stranám – a hlavně aby se v ní dalo rychle a spolehlivě hledat.<br><br>Častou chybou začátečníků je neúcta k procesu. Mnoho lidí rovnou vytvoří PR, aniž by se podívali, jestli podobný úkol není už rozpracovaný. Než začnete pracovat, zkontrolujte si uzavřené i otevřené pull requesty. Pokud si nejste jistí, zeptejte se v diskusi pod issue. Další past je neřešit zpětnou vazbu – když vám někdo připomínkuje, berte to jako příležitost, ne jako útok. Odpovězte slušně, upravte kód a vysvětlete, co jste změnili.<br><br>Jak vypadá kvalitní první příspěvek? Začněte něčím nenáročným, co nevyžaduje hluboké pochopení architektury projektu. Může to [https://Wideinfo.org/?s=b%C3%BDt%20oprava být oprava] překlepu v dokumentaci, doplnění komentáře, vylepšení formátování nebo drobná oprava chyby v kódu. Předtím, než cokoli uděláte, si vytvořte vlastní větev (branch) z hlavní větve repozitáře. Poté proveďte změny a pošlete tzv. pull request (PR). [https://mdma.noosworx.com/index.php?title=Jak_spr%C3%A1vn%C4%9B_odhadnout_%C4%8Das_na_skryt%C3%A9_%C4%8Dinnosti_ve_v%C3%BDvoji osvětlení v obýváku] něm jasně popište, co jste změnili a proč. Nezapomeňte přidat i relevantní informace, jako je číslo issue, které řešíte.<br><br>Základním krokem je rozdělit stav podle domén. Místo jednoho objektu asyncState s deseti klíči pro různé požadavky použijte samostatné slice pro každou logickou oblast, například user, products nebo notifications. V každém slice pak udržujte čistá data, nikoli [https://rikkiepedia.nl/index.php?title=Prvn%C3%AD_kroky_s_API:_co_um%C4%9Bt,_ne%C5%BE_za%C4%8Dne%C5%A1_volat_ciz%C3%AD_slu%C5%BEby informace] o tom, že se něco děje. Pro kontrolu průběhu asynchronní operace je vhodné vytvořit malý pomocný stav – typicky status s hodnotami idle, loading, succeeded a failed, plus pole error pro chybové hlášky. Tento vzor, inspirovaný doporučením z oficiální dokumentace Reduxu, je jednoduchý a snadno rozšiřitelný.<br>

Aktuelle Version vom 21. August 2026, 22:35 Uhr


Kdy přidat integrační test a kdy raději unit test Praktické vodítko: pokud test vyžaduje nastavení více než tří závislostí (databáze, HTTP klient, fronta), zvažte, zda by nešlo většinu logiky pokrýt unit testem a integrační test nechat jen na okrajové případy. Typickou chybou je testovat každou metodu servisní vrstvy integračně, i když se v ní nachází čistá byznys logika. Přesuňte tuto logiku do samostatné třídy, kterou otestujete jednotkově. Integrační test pak pouze ověří, že se třída správně propojuje s okolím – a takových testů stačí málo.

Na závěr: rovnováha není statický stav, ale průběžný proces. Při každé nové funkci si položte otázku, zda ji lze pokrýt unit testem s minimálním úsilím. Pokud ano, udělejte to. Integrační testy si šetřete na místa, kde dochází ke skutečné interakci mezi komponentami – a i tam se snažte o minimální počet scénářů. Pravidelná údržba testů, jejich mazání a refaktorování, je stejně důležitá jako psaní nových. Jen tak udržíte testovací sadu rychlou, spolehlivou a užitečnou i v době, kdy se codebase dál rozrůstá.

Častým problémem je také zapomínání na resetování stavu mezi požadavky. Pokud uživatel odešle formulář, pak ho zruší a odešle znovu, stará data se mohou mísit s novými. Proto si vždy definujte akci reset pro každý slice, která vrátí stav do výchozího bodu. Nebo, pokud používáte thunky, můžete v rámci jednoho thunku nejprve dispatchnout reset a poté načítání. Tento návyk eliminuje spoustu chyb s duplicitními nebo zastaralými daty.

Práce s asynchronními akcemi v Reduxu často vede k nepřehlednému stavu, který je obtížné testovat a rozšiřovat. Největší chybou, kterou vidím v kódu týmů, je skladování všech dat, stavů načítání a chyb do jedné globální proměnné bez jasné struktury. Výsledkem jsou pak komponenty, které řeší, zda má být tlačítko aktivní, a zároveň zpracovávají odpověď ze serveru. Přitom stačí dodržet pár zásad, aby se stav stal předvídatelným a údržba snesitelná.

Pro nasazení (CD) vytvořte samostatný job, který závisí na úspěšném CI. Využijte secrets pro přihlašovací údaje – nikdy je neukládejte přímo do YAML souboru. V nastavení repozitáře najdete sekci Secrets, kde uložíte tokeny nebo klíče. V workflow je pak použijte jako $ secrets.NAZEV . Deploy na server může probíhat přes SSH, docker push nebo nahrání artefaktů na hosting. Důležité je také správně nastavit permissions – minimální oprávnění pro každý job, aby se předešlo bezpečnostním rizikům.

Poslední rada: nepodceňujte výběr selectoru. Pokud máte v komponentě přístup k celému stavu Reduxu, selektory by měly být co nejkonkrétnější – vracející jen to, co komponenta potřebuje. Vyhnete se tím zbytečnému překreslování, když se změní jiná část stavu. Pro asynchronní data je vhodné si připravit selektory, které vrací rovnou připravená data pro zobrazení, třeba s výchozími hodnotami, a tím oddělíte logiku výběru od logiky zpracování.

Když backend dodá rozhraní bez pořádné dokumentace, frontend často tápá, doptává se na Slacku a píše si vlastní poznámky. Výsledkem jsou zbytečné chyby, zpoždění a frustrace. Přitom stačí dodržet pár zásad, které z dokumentace udělají nástroj, ne nutné zlo. Tento článek se zaměřuje na praktické kroky, jak dokumentaci připravit tak, aby sloužila oběma stranám – a hlavně aby se v ní dalo rychle a spolehlivě hledat.

Častou chybou začátečníků je neúcta k procesu. Mnoho lidí rovnou vytvoří PR, aniž by se podívali, jestli podobný úkol není už rozpracovaný. Než začnete pracovat, zkontrolujte si uzavřené i otevřené pull requesty. Pokud si nejste jistí, zeptejte se v diskusi pod issue. Další past je neřešit zpětnou vazbu – když vám někdo připomínkuje, berte to jako příležitost, ne jako útok. Odpovězte slušně, upravte kód a vysvětlete, co jste změnili.

Jak vypadá kvalitní první příspěvek? Začněte něčím nenáročným, co nevyžaduje hluboké pochopení architektury projektu. Může to být oprava překlepu v dokumentaci, doplnění komentáře, vylepšení formátování nebo drobná oprava chyby v kódu. Předtím, než cokoli uděláte, si vytvořte vlastní větev (branch) z hlavní větve repozitáře. Poté proveďte změny a pošlete tzv. pull request (PR). osvětlení v obýváku něm jasně popište, co jste změnili a proč. Nezapomeňte přidat i relevantní informace, jako je číslo issue, které řešíte.

Základním krokem je rozdělit stav podle domén. Místo jednoho objektu asyncState s deseti klíči pro různé požadavky použijte samostatné slice pro každou logickou oblast, například user, products nebo notifications. V každém slice pak udržujte čistá data, nikoli informace o tom, že se něco děje. Pro kontrolu průběhu asynchronní operace je vhodné vytvořit malý pomocný stav – typicky status s hodnotami idle, loading, succeeded a failed, plus pole error pro chybové hlášky. Tento vzor, inspirovaný doporučením z oficiální dokumentace Reduxu, je jednoduchý a snadno rozšiřitelný.