Získej neomezený přístup k 600+ online kurzům v jedinečné akci za bezkonkurenční cenu.
Kup předplatné

Výsledky vyhledávání

pro ”c++” jsme našli 187 výsledků

Články (119)

Všechny články
Co je testování softwaru?
Vzdělávání
18.10.2021
Skillmea

Co je testování softwaru?

Software je třeba testovat během jeho vývoje i po každém updatu. Pokud se chceš dozvědět, co je součástí testování softwaru, proč je testování důležité, kde v procesu vývoje se testování nachází a které jazyky je dobré ovládat, pokud chceš být IT tester, čti tento článek dále. Co je testování softwaru?Testování softwaru je metoda, která kontroluje, zda skutečný softwarový produkt odpovídá očekávaným požadavkům (implicitním i explicitním) a zajišťuje, aby softwarový produkt neobsahoval chyby, resp. pomáhá s tím, aby software obsahoval co nejméně chyb a žádné kritické. Zahrnuje spuštění softwarových/systémových komponent pomocí manuálních nebo automatizovaných nástrojů. Účelem testování softwaru je identifikovat chyby, nedostatky nebo chybějící požadavky v porovnání s původními požadavky. Testování softwaru se týká procesu ověřování a vyhodnocování funkce softwarové aplikace nebo produktu. Používá se ke snížení nebo odstranění chyb a minimalizaci množství dodatečných investic, které musí společnost investovat do řešení problémů a vydávání aktualizací. Softwarový tester tedy hledá chyby, nedostatky či jiné problémy ve webových či mobilních aplikacích, desktopových produktech nebo hrách. “TL;DR: IT testeři jsou důležití, protože pomáhají vysoké kvalitě softwarových produktů, spokojenosti zákazníků a uživatelů a dlouhodobé prosperitě businessu.” Proč je testování softwaru důležité?Testování softwaru je důležité, protože neotestovaný nebo nedostatečně výkonný software může mít vliv na tisíce uživatelů. Pokud například webová aplikace, která prodává produkt, funguje příliš pomalu, zákazníci mohou být netrpěliví a koupí si podobný produkt jinde. Nebo pokud databáze v aplikaci pošle nesprávné informace pro vyhledávací dotaz, lidé mohou ztratit důvěru k webové aplikaci nebo firmě obecně. Softwarový tester pomáhá předcházet těmto druhům selhání. Testování softwaru navíc může pomoci zajistit bezpečnost uživatelů nebo osob, kterých se týká používání. Úkolem testeru je tedy vžít se do pozice uživatele daného softwarového produktu a připravit si různé scénáře, které na daném produktu v průběhu vývoje testuje. Nalezené problémy následně reportuje vývojářskému týmu, který tyto chyby odstraní. “TL;DR: Cílem testování je zajistit co nejvyšší uživatelskou spokojenost s produktem.[Image]” Typy testování softwaruExistuje několik typů testování softwaru, z nichž každý vyžaduje různý stupeň specifičnosti. Zde je seznam některých z nejběžnějších: Testování použitelnosti (Usability testing)Testování použitelnosti je nejlepším způsobem jak zjistit, zda s webovou stránkou, aplikací nebo hrou běžní uživatelé umí zacházet a pochopit, jak při jejím používání přemýšlejí. Usability testing je v podstatě způsob, jakým dokážeme ověřit výsledek své práce na reálných uživatelích. Usability testing představuje hodnocení produktu nebo služby jeho testováním reprezentativním vzorkem uživatelů. Zpravidla musí účastníci během testování splnit několik úkolů, přičemž je jejich chování a jednání pečlivě sledovány a zaznamenávány testerem. Akceptační testováníHlavním účelem akceptačního testování není nalezení chyb, ale ohodnocení připravenosti systému pro nasazení a používání. Jedná se tedy o kontrolu, zda systém funguje tak, jak má. Software v tomto případě pracuje s ostrými a skutečnými daty, testuje se, zda produkt pracuje správně v reálném nasazení a splňuje uživatelské požadavky. Integrační testováníCílem je ověřit, zda větší části softwaru spolu fungují. Tento typ testování většinou neprovádějí testeři, ale samotní vývojáři. Testuje se interakce s různými částmi softwaru, ale také s hardwarem, operačním systémem. Unit testySlouží programátorovi jako okamžitá zpětná vazba k napsanému kódu. Unit testy slouží k testování menších jednotek zdrojového kódu. Programátor napíše kód a následně pro tento kód napíše testy. Existuje přístup psaní testů před kódem, který se nazývá Test Driven Development. Test by měl testovat chování kódu za standardních i mimořádných situací. Ideální unit test je nezávislý na ostatních testech a na zbytku testovaného programu. Někdy není na první pohled vidět rozdíl mezi unit a integračním testováním. Kromě těchto testů známe další druhy testů, například. performance testy. Co potřebuješ vědět, chceš-li být testerem?I když jako IT tester nemusíš napsat ani řádek kódu, v mnoha případech jej stále musíš umět přečíst. Jako tester softwaru tvoje práce zahrnuje více než jen klikání a procházení aplikací. Musíš být schopen přezkoumat kód a hledat potenciální problémy nebo zjistit, co mohlo způsobit chybu nebo poruchu. Většina testerů provádí kromě manuálního testování také psaní automatizovaných testů. Napsat automatizované testy je ale výrazně jednodušší než naprogramovat celé aplikace. Podle portálu platy.sk je průměrná měsíční mzda IT testeru v Bratislavě téměř 2.000 Eur, takže vydat se na tuto kariérní cestu je iz finančního pohledu zajímavé. Zde je několik jazyků, které by ses měl naučit, abys maximalizoval své vyhlídky na práci testeru: • Java • Python • C# Stačí se naučit samozřejmě jeden z jazyků, může být také jiný než je v seznamu. Kromě toho budeš určitě potřebovat pořádnou dávku preciznosti a být komunikativní, jelikož budeš muset reportovat nalezené chyby, správně je pojmenovat, najít řešení a budeš dále v kontaktu s vývojářským týmem. Pokud v IT teprve začínáš, práce manuálního IT testeru je skvělý start. Manuální testování je stále tady a bude zde i nadále, jelikož má mnoho výhod, například pomocí manuálního testování umíš objevit nové chyby v aplikaci, designové chyby a další. Opět poznamenáváme, že trh v QA se neustále vyvíjí a předpokládáme, že bude chtít univerzální testery, kteří umí dobře manuálně testovat a zároveň i tvořit automatizaci. Pokud máš v plánu stát se automatizovaným testerem, máme pro tebe hned několik kurzů. Nejprve začni s kurzem Selenium, ve kterém se naučíš i Javu a JUnit. Tento kurz má také pokračování pro pokročilé. Pokud se ti více zamlouvá JavaScript, určitě mrkni kurz Cypress.io. Cypress je moderní testovací nástroj pro end to end testování.
Jak zjistit, zda je číslo zadané ze vstupu prvočíslem?
Tipy a triky
16.10.2019
Skillmea

Jak zjistit, zda je číslo zadané ze vstupu prvočíslem?

V 15. kapitole online kurzu vyššího programovacího jazyka C++ úrovně Elementary II najdete mezi zadáními praktických příkladů pro domácí procvičení i úlohu, ve které máte najít největší společný dělitel dvou čísel a také úlohu, ve které máte najít nejmenší společný násobek dvou čísel nebo jejich největší společný dělitel.   Sáhnete-li do osnov matematiky druhého stupně základní školy někde do 6. nebo 7. ročníku, zjistíte, že klíčem k vyřešení těchto dvou úkolů je rozklad obou čísel na součin prvočísel. Úkoly patří z hlediska logiky a analytického myšlení mezi začátečnické. Přesto vím, že jsou náročnější. Právě proto jsem se rozhodl napsat tento blog. V tomto blogu nechci řešit tento úkol za vás, ale alespoň bych vám rád podal návod, jak zjistit, zda je načtené číslo ze vstupu prvočíslem. Tento úkol je jeden z dílčích úkolů, které je třeba řešit při dvou zmíněných příkladech, jejichž řešení jste dostali za úkol najít. Ti, kteří zapomněli, co je prvočíslo, ozřejmím i tento pojem. Prvočíslo je celé kladné číslo, které je dělitelné pouze jednotkou a svojí vlastní hodnotou. Budeme se tedy pohybovat pouze v množině kladných celých čísel. Příkladem prvočísla může být např. číslo 5, protože je dělitelné pouze číslem 1 a 5. dalšími příklady jsou 2, 3, 7, 11, 13, 17 atp. Samotné číslo 1 se za prvočíslo nepovažuje. Řekněme, že máme číslo 60, jeho rozklad na součin prvočísel je 2 x 2 x 3 x 5. Už z rozkladu je zřejmé, že jej můžeme vynásobit číslem 1, nic by to totiž nezměnilo na výsledku, pořád byste dostali číslo 60. Vidíte , a právě proto se matematici dohodli, že 1 prvočíslem nebude, nemá totiž již žádný vliv v součinu prvočísel, jehož výsledkem je nějaké číslo. Takže bez zbytečných dalších prázdných frází přejdu rovnou k věci. Následuje tedy zdrojový kód v jazyce C++, který řeší titulek tohoto blogu: 01: #include <iostream> 02: using namespace std; 03: 04: int main() 05: { 06: int iNumb; 07: 08: cout << "Zadaj lubovolne cele kladne cislo: "; 09: cin >> iNumb; 10: cout << endl; 11: 12: bool flag = true; 13: 14: if (iNumb == 1) 15: { 16: flag = false; 17: } 18: else 19: { 20: for (int i = 2; i <= iNumb / 2; i++) 21: { 22: if (iNumb % i == 0) 23: { 24: flag = false; 25: break; 26: } 27: } 28: } 29: 30: if (flag) 31: { 32: cout << "Cislo " << iNumb << " je prvocislo !" << endl; 33: } 34: else 35: { 36: cout << "Cislo " << iNumb << " nie je prvocislo !" << endl; 37: } 38: 39: cout << endl; 40: 41: cin.get(); 42: cin.get(); 43: 44: return 0; 45: } Na řádku 01 je uvedena direktiva preprocesoru #include, jejímž parametrem je standardní knihovna iostream. Potřebujeme ji z důvodu používání objektů cout, cin a manipulátoru endl. Na řádku 02 uvádíme v platnost jmenný prostor std pro celý zdrojový soubor .cpp. Zmíněné objekty cout, cin a manipulátor endl je zároveň součástí tohoto prostoru. Na řádku 04 je uvedena funkce main i se svým návratovým typem, kterým je int (integer). Tuto funkci volá operační systém. Na řádku 05 je uvedena levá programová závorka, kterou začíná tělo funkce main. Na řádku 06 je deklarována proměnná iNumb pro datový typ int. Tato proměnná reprezentuje hodnotu celého kladného čísla, o kterém chceme zjistit, jestli patří mezi prvočísla. Na řádku 08 je pomocí objektu cout zapsán na výstup konzolové aplikace textový řetězec, který vyzve uživatele k zadání hodnoty kladného celého čísla, jehož vlastnost prvočísla testujeme. Na řádku 09 je prostřednictvím objektu cin načtena tato hodnota do proměnné iNumb. Na řádku 10 je prostřednictvím objektu cout a manipulátoru endl přesunut kurzor konzolové aplikace na další řádek. Na řádku 12 je deklarována proměnná flag a zároveň inicializována na hodnotu true. Tato proměnná nám bude po otestování načteného čísla ukládat informaci, zda je číslo prvočíslem nebo ne. Z hlediska logiky algoritmu je nutno proměnnou flag inicializovat před testováním na hodnotu true. Algoritmem budeme totiž testovat, zda načtené číslo mezi prvočísla nepatří. Používá se zde tedy postup vylučovací. Na řádku 14 je testována podmínka, zda v proměnné iNumb není hodnota 1. Pokud ano, program pokračuje kladnou větví a do proměnné flag se na řádku 16 zapíše hodnota false, která reprezentuje stav, kdy načtené číslo prvočíslem není. Na řádcích 13 a 15 jsou pouze uvedeny programové závorky, které uzavírají blok kódu uvedený v kladné větvi. Pokud zmíněná podmínka splněna není, pokračuje se zápornou větví. Blok kódu v záporné větvi uzavřen programovými závorkami na řádcích 19 a 29. Na řádcích 20 až 27 je uvedeno jádro algoritmu, který testuje vlastnost prvočísla u čísel větších než 1. A v čem spočívá idea jádra algoritmu? V každé iteraci cyklu zjišťujeme, zda je číslo dělitelné hodnotou v proměnné i. Nejmenší číslo, kterým může být načteno testované dělitelné, je číslo 2 (viz. řádek 20 – for smyčka) a proto iterujeme od této hodnoty. Proměnnou i postupně inkrementujeme (viz. řádek 20 – for smyčka) a testujeme, zda je hodnota proměnné iNumb dělitelná beze zbytku pomocí operace modulo na řádku 22, která je umístěna v příkazu if. Pokud je číslo dělitelné hodnotou v proměnné i beze zbytku, tak se na řádku 24 uloží do proměnné flag hodnota false, což reprezentuje stav, kdy načtené číslo není prvočíslem. Proměnná i se inkrementuje po iNumb/2 (viz. řádek 20 – for smyčka). Důvodem je fakt, že žádné celé kladné číslo nemůže být přece dělitelné beze zbytku číslem větším než je jeho polovina. Nenajde-li se tedy číslo, kterým je načtená hodnota testovaného čísla dělitelná beze zbytku, neuloží se do proměnné flag hodnota false, čili po ukončení v ní bude uložena hodnota true, což reprezentuje stav, kdy je načteno testované číslo prvočíslem. Na řádku 25 je uvedeno klíčové slovo break a to z toho důvodu, že v případě nalezení jednoho čísla, které dělí načtené testované číslo beze zbytku, není nutné hledat další dělitele. Testované číslo už prvočíslo totiž být nemůže a proto násilně ukončíme smyčku for, urychlíme program, který následně přejde až na řádek 30. Zde se už jen testuje hodnota v proměnné flag. Pokud je v této proměnné uložena hodnota true, tak se zapíše na výstup konzolové aplikace pomocí objektu cout informace o tom, že je načteno testované číslo prvočíslem (viz. řádek 32), pokud false tak informace, že prvočíslem není. Na řádcích 41 a 42 je již jen načítán vstup z konzolové aplikace pomocí objektu cin, což slouží k tomu, aby se hned program neukončil a byl zobrazen výsledek v okně konzole, dokud uživatel nezatlačí libovolná klávesa. Na řádku 44 vrací funkce main operačnímu systému hodnotu 0, která indikuje stav správného ukončení aplikace. Na řádku 45 je ukončeno tělo programu pravou programovou závorkou. Algoritmus, který jsem navrhl a implementoval v jazyce C++, není ještě optimální. Je však pro účely kurzu úrovně začátečník dostačující. Mezi prvočísly lze ještě sledovat určité vlastnosti, nebudu je však tomto bloku vzpomínat, abych příliš posluchače úrovně začátečník zbytečně nadměrně nezatížil. Optimální algoritmus však budu ještě publikovat a rozebírat v dalším bloku a v kurzu, který bude zaměřen i na matematiku. Autorem blogu je Marek Šurka, lektor online kurzů jazyka C++ na Learn2Code.
Objective-C nebo Swift? Který jazyk zvolit?
Vzdělávání
03.09.2014
Marián Kristeľ

Objective-C nebo Swift? Který jazyk zvolit?

Při tvorbě kurzu iOS Developer jsme rozhodovali, který z jazyků si vybrat jako výukový. Z mého pohledu bylo toto rozhodnutí relativně jednoduché, ale pro úplnost si shrňme důvody, proč to nakonec vyhrál jazyk  Swift .[Image] Apple nám na letošní WWDC představil svůj nový programovací jazyk Swift. Ten by měl být rychlejší bezpečnější modernější a mnoho dalšího. Já osobně za jeho hlavní výhody pro začátečníky považuji jednodušší syntaxi, Playground a interaktivní debugovací konzoli. Jednodušší syntaxSkoro vždy, když jsem si povídal s nějakým vývojářem, který Objective-C viděl, nebo se s ním pokoušel pracovat, přišla řeč i na syntaxi tohoto jazyka. Nepadlo na její adresu snad jediné pozitivní slovo. Kopec hranatých závorek, názvy metod s mezerami, hvězdičky a množství zbytečného kódu kolem. Také mi dost dlouho trvalo, než jsem se s tímto stylem zápisu sžil, i když nakonec jsem mu přišel na chuť. Swift je svojí syntaxí velmi podobný rozšířeným jazykům jako například. JavaScript, C, Ruby, atd., takže pro lidi, kteří už v něčem programovali (a nebylo to nic exotického :-)) bude seznámení se Swiftem jednoduché. Ti, kteří nikdy neprogramovali to budou mít také mnohem jednodušší ve srovnání s Objective-C. Swift od nás, mimo jiné, nepožaduje rozdělovat zápis tříd do dvou samostatných souborů, importovat soubory s deklaracemi nebo si lámat hlavu se správou paměti. PlaygroundXCode ve verzi 6 disponuje novým nástrojem s názvem Playground. Jeho účel vyplývá z jeho názvu. Slouží k „hraní si“ s kódem. Obrazovka je rozdělena na dvě části. Vlevo uživatel píše svůj kód a vpravo hned vidí výsledek. Začínající programátor tedy nebude muset řešit, jaký typ aplikace vytvořit, co všechno kde zaškrtnout a zvolit. Stejně tak nebude muset po každé změně znovu spouštět aplikaci. Je to ideální způsob, jak se s jazykem seznámit a poznávat jej do detailů. Playground není omezen pouze na textový výstup, ale poskytuje také grafické prostředí. Stejně tak zobrazuje programátorovi i případné chyby a upozornění, že něco by mohl udělat jinak resp. lepší.[Image] Interaktivní debugovací konzolaBěžně se při vývoji aplikace stává, že napíšu kus kódu, aplikaci spustím, abych viděl, co jsem vlastně vytvořil a následně zjistím, že se nechová přesně tak, jak bych si představoval. Nebo si jen chci ověřit, co by se stalo když... Doposud jsem to mohl řešit tak, že po každé drobné změně jsem aplikaci znovu spustil a ověřil si, zda se daná změna projevila tak, jak jsem očekával. Tato metoda je náročná v případě, že funkcionalita, kterou potřebuji prověřit je „vzdálená“ několika tapnutí na obrazovku, nebo je závislá na specifickém stavu aplikace resp. prostředí se kterým aplikace pracuje, jako např. vzdálený server. Se Swiftem přichází také  Read-Eval-Print-Loop (REPL) . Je to debugovací konzole, která poskytuje interaktivní verzi Swiftu, pomocí které lze komunikovat s běžící aplikací, nebo si jen ověřit své nápady ve skriptovacím prostředí XCode nebo systémové konzole. Již zanedlouhoProti použití Swiftu v našem kurzu momentálně říká v podstatě jen to, že ještě není ve své finální podobě a vývojáři v Apple jej mohou ještě decentně upravit. Osobně si myslím, že pokud se tak stane, bude to v minimálním rozsahu a náš kurz to neovlivní. Autorem tohoto blog postu je lektor kurzu iOS Developer Števo Ľupták. Máte-li nějaké dotazy týkající se Swiftu nebo kurzu, napište je do komentářů.
Co dělá DevOps Engineer?
Vzdělávání
16.11.2021
Skillmea

Co dělá DevOps Engineer?

Na základě některých statistik se předpokládá, že poptávka po softwarových inženýrech do roku 2029 poroste o 22%. Tato poptávka po softwarových inženýrech a webových či mobilních aplikacích, které vytvářejí, vedla k mnoha novým pracovním pozicím a inovativním, efektivnějším vývojovým procesům – jako například DevOps. Zajímá tě, co je to DevOps, co dělá takový DevOps Engineer (inženýr), kolik vydělává a jaké dovednosti potřebuje? Čti dál a dozvíš se víc.[Image]Co je DevOps? DevOps je spojení slov Development (vývoj) a Operations (provoz). Je to speciální metoda vývoje softwaru, která spojuje procesy, lidi a technologie, díky čemuž mohou firmy produkovat kvalitní software, služby a produkty. DevOps-áci používají nástroje, procesy a metody vývoje k zajištění efektivního vývoje aplikací. Hrají důležitou roli v každé fázi procesu vývoje, od nápadu až po implementaci a údržbu. DevOps označuje způsob vývoje softwaru, který zajišťuje, že vše běží hladce v každé fázi vývoje. Před představením DevOps v roce 2009 vývojářské týmy obvykle sestavovaly každou část aplikace nezávisle. Jeden tým by se například zabýval strukturou databáze, zatímco jiný vytvořil frontend nebo bezpečnostní prvky. I když to bylo efektivní, často to vedlo k problémům, kdy byly tyto různé části spojeny do jednoho celku. DevOps se snaží tento problém vyřešit tím, že všechny účastníky vývoje spojí dohromady. Můžeš si to lehce představit jako stavbu domu. Standardně bys měl různé dodavatele, kteří by dělali různé práce: zedníci, elektrikáři, instalatéři, malíři atp. U DevOps modelu však tito dodavatelé spolupracují, diskutují o každé fázi vývoje a pracují spolu a táhnou za jeden provaz. Výsledkem je, že konečný produkt je efektivnější, kvalitnější a ušetří i čas, protože každá složka se pojí s ostatními. DevOps Engineer zajišťuje, že se to všechno děje hladce a konzistentně během celého životního cyklu vývoje. DevOps specialisté tedy používají různé nástroje, procesy a metody vývoje, aby zajistily efektivní vývoj aplikací. V každé fázi procesu vývoje (od nápadu až po implementaci a údržbu) hrají významnou roli. Jelikož celý vývoj aplikace je v rámci jednoho týmu, vývojáři jsou schopni rychleji komunikovat mezi sebou, ale také kolaborovat se zákazníkem, což znamená častější vydávání nových verzí vyvíjeného softwaru. Funkce DevOps DevOps specialista podporuje komunikaci, spolupráci a sdílení odpovědnosti napříč všemi stranami během životního cyklu vývoje. Hlavní výzvou, které čelí DevOps-áci, je sjednotit všechny účastníky vývoje, což jsou frontend a backend developeři, UI/UX designéři, testeři, lidé zodpovědní za bezpečnost produktu, ale také obchodníci, zákaznický servis či další klíčové osoby. V DevOps kultuře jsou všichni tito účastníci stejně důležití a jejich vstupy do vývoje mají stejnou hodnotu. DevOps-ák musí zajistit, že je s tím celý tým ztotožněn, podporuje to a samozřejmě zejména praktikuje. Jaké techniky používají DevOps-áci? Nejčastěji jsou využívány následující postupy či technologie: • continuous integration, continuous deployment (CI/CD), • kontejnerizace, • monitorování. Ve zkratce si řekněme o každé z výše uvedených technologií. CI/CD Zavádí automatizaci do softwarového vývoje. Pomocí skupiny různých nástrojů tak lze zajistit automatické sestavování verzí, jejich kontrolu a reporting kvalit konkrétní verze. Po sestavení a otestování lze nasadit verzi do produkčního prostředí. To je technika Continuous Integration. Jinými slovy, změny se provedou a integrují okamžitě. "CD" se může vztahovat i na Continuous Delivery. Změny provedené v aplikaci se před odesláním do úložiště (např. GitHub) testují na chyby. Následně jsou umístěny do živé produkce. Continuous Deployment znamená automatické odesílání změn provedených vývojářům z úložiště jako například. GitHub do produkce, kde jej mohou koncoví uživatelé používat. Kontejnery Kontejnery poskytují způsob izolace procesů od zbytku softwaru. Každý kontejner funguje v podstatě jako virtuální stroj, který spouští jednu část celkového procesu. Protože kontejnery lze velmi rychle zapnout a vypnout, kontejnerizace usnadňuje vytváření, nasazování a spouštění aplikací. DevOps engineer musí rozumět kontejnerizaci, protože má vliv na to, jak se produkt vytváří, upravuje a testuje. Při vytváření kontejneru by mělo platit pravidlo, že jeden kontejner je jedna služba. Abychom docílili těchto vlastností kontejnerů, musíme dodržet 3 hlavní principy kontejnerizace: standardnost (Standard), jednoduchost (Lightweight) a izolovanost (Isolated). V dnešní době je velmi populární přechod na mikroservisově orientovanou architekturu. U této architektury je funkcionalita softwaru rozdělena do menších částí - mikroservisů. Cílem je vytvoření aplikace, která bude co nejvíce modulární. Bude to znamenat její zjednodušení, udržovatelnost a také škálovatelnost. Funkcionalita aplikace se rozdělí do jednotlivých mikroservisů, kde každý má na starosti pouze jednu, oddělenou část softwaru. Pokud bude nutná změna aplikace, tyto mikroservisy je relativně snadné upravit. Provede se jen požadovaná změna, upraví se daný mikroservis a opětovně je nasazen. Při takovém přístupu se vyskytuje méně chyb, výpadků a má to kladný vliv na testování a hledání chyb v softwaru. Monitorování Monitorování zahrnuje používání systému, který umožňuje sledovat celý vývojový ekosystém a upozorní tě, pokud se něco pokazí. S dobře nastaveným monitorováním můžeš rychle řešit problémy pomocí analýzy základních příčin, která přesně určí, kde problém začal. Monitorování ti také umožňuje zjistit, jak se různé systémy navzájem ovlivňují, ať už běží současně nebo postupně. Tvá práce jako DevOps specialisty bude téměř nemožná bez komplexního monitorovacího řešení. Řešení problémů bude rychlejší a efektivnější.[DASA DevOps Competency model (zdroj: DASA)] Dovednosti DevOps specialisty Technické dovednosti jsou nezbytností. I když se v DevOps prostředí a IT obecně neustále objevují nové technologie a nástroje, dobrý DevOps inženýr by měl mít kvalitní znalosti v těchto oblastech: • verziování, systém správy verzí (jako Git, Github, Bitbucket, Svn atd.), • Continuous integration (Jenkins, Bamboo, VSTS), • koncepty kontejnerů (Docker), • orchestrace kontejnerů (Kubernetes, Swarm, Openshift), • cloud (AWS, Azure, GoogleCloud, Openstack), • základy sítí, Linux (základy OS), Bash, • základy programování (např. Python, Design Patterns). DevOps inženýři musí být schopni psát bezpečný kód na ochranu aplikací před útoky, jakož i na obranu před běžnými zranitelnostmi kybernetické bezpečnosti. Stejně jako v jiných technických prostředích, klíčovým prvkem DevOps je také automatizace. Mnoho opakujících se a manuálních úkolů prováděných tradičnějšími systémovými administrátory lze automatizovat pomocí jazyků jako Python, Ruby, Bash či Shell. Nezapomínej ani na soft skill dovednosti jako komunikační dovednosti, dobrou organizaci, ochotu spolupracovat, flexibilitu, prezentační dovednosti nebo to, že zákazník je na prvním místě. Mzda DevOps specialisty se podle portálu platy.sk pohybuje v závislosti na regionu a seniority na úrovni od 2.000 Eur výše. Jedná se o velmi žádanou pozici, poptávka po DevOps inženýrech v posledních letech značně vzrostla.[Image]Jak se stát DevOps specialistou Aby ses stal DevOps specialistou, musíš získat znalosti a zkušenosti potřebné pro práci s různými technologiemi. Klíčem je naučit se dovednosti, aplikovat je a vybudovat si portfolio, kterým se umíš odprezentovat. Náš seznam výše v článku se zdá být vyčerpávající a nekonečný. Jak jsme již zmiňovali, v jedné oblasti můžeš být expertem ao jiných víš toho málo. To je naprosto v pořádku. Základní znalosti z každé oblasti jsou dobrým začátkem. Například, pokud jsi softwarový inženýr, určitě jsi dobrý v programování. Nemělo by být pro tebe obtížné zvládnout práci admina, protože některé činnosti jsi už určitě mohl vykonávat ve své práci. Stejně tak, pokud jsi síťový inženýr, nebudeš mít problém naučit se více o bezpečnosti, virtualizaci a správě infrastruktury. Každá z těchto dovedností spolu souvisí. Cesta k tomu, abyste se stali DevOps specialistou je dlouhá, ale stojí za to. A neexistují žádné zkratky.
Java nejnovější verze – Java 9 moduly (1. část)
Vzdělávání
09.12.2018
Skillmea

Java nejnovější verze – Java 9 moduly (1. část)

Od verze 9 bude java vydávána v pravidelných intervalech. Nová java každých 6 měsíců. Takže můžeme očekávat novou funkčnost častěji, ale v menších dávkách. Nejpoužívanější Java dnes je java 8 – vydaná v roce 2014. Java 9 byla poprvé vydána v září 2017, později byly opraveny kritické chyby a lze říci, že taková lepší verze byla vydána v lednu 2018. Java 10 byla vydána v březnu 2018, Java 11 v září 2018. Takže rychlý posun ve verzích, ale ne drastický posun ve funkčnosti. Co je lepší? Najednou a mnohem nebo méně a postupně? Záleží na tom, co děláte. Pokud používáte mnoho rámců a knihoven třetích stran, může být vaše práce ovlivněna po zvýšení tohoto jevu. Prvním milníkem je java 11, která je označena jako LTS, tj. dlouhodobá podpora. Tato verze tohoto jevu bude opravena na dlouhou dobu a bude o ni postaráno v následujících letech. Co to znamená? Že společnosti s větší pravděpodobností přeskočí z jevu 8 dříve na jev 11, protože si budou jisty, že tato java bude v budoucnu opravena –, pokud bude nalezena kritická chyba. V tomto článku se zaměříme hlavně na seznam nových změn. Nebudeme se zabývat jednotlivými změnami podrobně. Budeme to udržovat i v budoucnu. InstalaceNejprve musíte stáhnout a nainstalovat nejnovější fenomén jdk. V době psaní to tak je Java 11. Nastavte proměnnou prostředí JAVA_HOME na nový jev – na kořen, nikoli do složky bin. Poté nastavte cestu k proměnné PATH pouze do složky koše nově nainstalovaného jevu. Spusťte příkazový řádek a zadejte příkaz: java – verze Pokud máte verzi, vše je v pořádku.[Image] Pokud dojde k chybě nebo se zobrazí starší verze, ujistěte se, že v PATH je cesta nového fenoménu nastavena na začátku. Je možné, že v PATH máte také nastaveno C: \ ProgramData \ Oracle \ Java \ javapath. Pokud ano, musí to být za cestou k nejnovějšímu jevu. ModulyV Javě 9 je nejpříznivější změnou projekt Jigsaw –, ale stačí, když si vzpomeneme, že se jedná o divizi modularity – velkého monolitu –, takže celá aplikace v jednom balení do menších buněk – moduly. Moduly pak řeknou, co publikují světu a co požadují pro svou správnou funkčnost. Každý modul obsahuje soubor modul-info.java a alespoň jeden balíček. Module-info.java obsahuje popis závislostí, které modul potřebuje. Každý modul je nezávislý v tom, že pokud obsahuje obrázky nebo konfigurační soubory, modul je spravuje sám. Vše v modulu je pro modul soukromé, pokud neřekneme jinak. Existují 4 typy modulů.Systémové moduly – Java SE a JDK moduly –, pokud si všimnete, jdk nainstalovaný pro novější jev postrádá složku jre. Nyní jsou jmody. Zde máme všechna výchozí nastavení poskytovaná moduly.[Image] Aplikační moduly jsou moduly, které chceme vytvořit, když se rozhodneme, že chceme moduly používat. Automatické moduly je vytvořen, když do modulu cesty přidáme soubory JAR. Název modulu je převzat z názvu souboru. Tyto automatické moduly mají plný přístup ke všem ostatním modulům načteným na cestě. Nepojmenovaný modul = pokud jsou některé třídy nebo soubory jar načteny na cestě –, tyto třídy a soubory jar jsou automaticky přidány do tohoto nejmenovaného modulu. Používá se pro zpětnou kompatibilitu s předchozím starším Javanese kódem. DistribuceModul by měl být zabalen jako jarní soubor – jeden jarní soubor by měl obsahovat maximálně jeden modul. Když provádíme projekt sestavení, musíme být opatrní, abychom každý modul v našem projektu zabalili jako samostatnou pružinu. Základní modulySlíbili jsme, že jdk má novou strukturu, která obsahuje jmoduly. Zde jsou základní moduly. Pokud zadáme příkaz, můžeme tyto moduly uvést pomocí příkazového řádku <b>java --list-modules</b>. [Image] Každý modul, který vytvoříme, použije implicitní modul java.base. Použití dalších modulů bude k dispozici po konfiguraci. Vytvoření moduluModul v podstatě vzniká, pokud definujeme soubor modul-info.java v kořenovém adresáři zdrojového kódu modulu. Tento okamžik pracuje se zdrojovým kódem jako s modulem. Moduly se navzájem nevidí – nemají přístup k sobě navzájem a ke třetímu atd. Podle toho, kolik modulů používáme. Pokud chcete použít něco zvenčí nebo chcete, aby byla viditelná vnitřek vašeho modulu nebo vnitřní čas vašeho modulu, musíte jej definovat. Pojďme mít projekt, ve kterém definujeme nový modul. V modulu máme složku src, do které vložíme veškerý zdrojový kód. Uvnitř definujeme balíček sk.jaro.demo a stále v něm vnější a vnitřní. Vytvoříme jednoduché třídy, které jen něco napíšou na konzoli.[Image] package sk.jaro.demo.external; public class HelloMainModuleExternal { public void doAction() { System.out.println ("Hello main module HelloMainModuleExternal"); } }  package sk.jaro.demo.internal; public class HelloMainModuleInternal { public void doAction() { System.out.println("Hello main module HelloMainModuleInternal"); } } Tyto třídy se liší pouze v názvu a příkazu na konzole. Později nastavíme vnitřní, aby byl viditelný pouze v hlavním modulu. Později nastavíme externí, aby byl viditelný mimo hlavní modul. Vytvořte soubor modul-info.java v src tohoto modulu. Uvnitř souboru je syntaxe, kde klíčovým slovem je nejprve modul, pak název modulu – můžete také použít tečky, a pak jsou zde složené závorky: modul nasmodule { }. Chceme, aby byl externí balíček k dispozici pro další moduly –, které budou nastaveny pro export. module main { exports sk.jaro.demo.external; }Nyní vytvoříme nový modul ve stejném projektu s názvem utils. Uvnitř budeme mít jednu třídu, ve které se pokusíme použít třídu HelloMainModuleExternal z hlavního modulu.[Image] Module-info.java musí nyní obsahovat, že v tomto modulu požadujeme hlavní modul –, protože z tohoto modulu používáme funkčnost. module utils { requires main; } Nyní můžeme použít třídy, které byly exportovány z hlavního modulu: package sk.jaro.demo; import sk.jaro.demo.external.HelloMainModuleExternal; public class UseSomethingFromMainModule { public static void main(String[] args) { HelloMainModuleExternal helloMainModuleExternal = new HelloMainModuleExternal(); helloMainModuleExternal.doAction(); } }ZávěrNakonec si s tím můžete hrát hned teď. Zkuste použít třídu, která není exportována z hlavního modulu. O modulech by bylo možné napsat a mluvit o nich, ale doufám, že pochopíte princip modularizace. Během studií na toto téma mám několik otázek, na které jsem dosud neodpověděl. Například: Maven s java modularizací? Rámce a modularizace? Pokud se vám tento článek líbil, napište něco do komentářů, budu šťastný. Zajímá vás Java? Vyzkoušejte jeden z kurzů na toto téma https://skillmea.sk. Pokud se o mně chcete dozvědět více, sledujte můj web www.jaroslavbeno.sk. jaro Zdrojové kódy ke stažení.
10 programátorských C++ úkolů pro začátečníky
Vzdělávání
07.10.2021
Skillmea

10 programátorských C++ úkolů pro začátečníky

Naučit se C++ není snadný úkol, když si však chceš uchovat své znalosti v dobré formě, vyžaduje to praxe. Jedna věc je naučit se základy programování v C++ a syntaxi jazyka, ale něco úplně jiného je použít tyto znalosti k tvorbě reálných programů v jazyce C++. V tomto článku si řekneme, kde byste mohli použít jazyk C++ ve své další práci a proč je to stále používaný programovací jazyk. A také ti v článku přineseme 10 programátorských úkolů v C++, na kterých si jazyk procvičíš. K čemu se používá C++?C++ je jedním z nejpoužívanějších programovacích jazyků. Lepší otázkou by tedy mohlo být, k čemu se C++ nehodí? 🙂 C++ je nejčastěji zvolen kvůli své schopnosti efektivně provozovat velké aplikace. Můžete jej také použít k doladění toho, jak program používá svůj hardware. C++ naleznete v operačních systémech, vašich oblíbených multiplayer hrách, připojování na databáze a dokonce i v nových technologiích VR a AR. Kromě toho je C++ populární při tvorbě databázových aplikací, ve finančnictví a ekonomice, využívá se ve vestavěných systémech, real-time systémech, při zpracování velkého objemu dat, dále v robotice a kybernetice, v počítačové grafice (zpracování obrazu, grafický rendering) či komunikačních systémech. Mnoho vývojářů si vybírá C++, neboť dokáže efektivně spouštět jejich programy. Komunita C++ vývojářů je také poměrně široká, umožňuje to jednodušší spolupráci a pomoc, když se člověk při něčem zasekne. 10 C++ úkolů pro začátečníkyKe splnění úkolů použij libovolný editor, který ti vyhovuje. Stanov si cíl a časový horizont, ve kterém chceš úkoly splnit. Klidně udělej jeden úkol každý den, některé úkoly budou možná náročnější a zaberou více času. Začněme s úkoly. 1. Vypište „Hello world“ správuV kterémkoli editoru, se kterým jste se rozhodli pracovat, zkontrolujte, zda můžete napsat kód, který zobrazí tento řetězec znaků. I když se to může jevit jako jednoduchý úkol, zamyslete se nad všemi způsoby, jakými budete chtít zobrazovat zprávy v budoucích programech, které vytvoříte. Tisk chybových zpráv nebo potvrzovacích zpráv pro různé části kódu je důležitý při ladění programu. Mohou se také objevit výzvy nebo výsledky, které budete chtít vytisknout a sdílet s koncovým uživatelem. Vypisování zprávy je dovednost, kterou budete používat poměrně často. 2. Vytvořte program, který sečte dvě celá číslaZjistěte, zda dokážete vytvořit program v jazyce C++, který načte dvě celá čísla ze vstupu klávesnice a sečte je. Výsledek by měl vrátit součet. Jedná se sice o základní kalkulátor, představte si ale jeho sílu ve velké databázi, kde byste pomocí smyček mohli přidávat obrovské množství údajů. Bonusový úkol: Rozšiřte tento program o součet dvou matic (nezáleží, kolik bude mít prvků), abyste vytvořili pole součtových prvků. Máte-li zájem pracovat ve finančním odvětví jako vývojář, pomocí programů, jako je tento, můžete vaší firmě vypočítat důležité údaje. 3. Napište program, který převádí pixely na centimetryMěniče jednotek jsou malé pomocné nástroje. Můžete vytvořit program v jazyce C++, který bude zaznamenávat rozměry v pixelech a vyplivuje přesně stejné měření v centimetrech? Pokud uvažujete o kariéře v oblasti datové vědy, budete muset být dobrý v čištění a formátování údajů. Konverze dat na jinou měrnou jednotku je dobrým praktickým testem. 4. Naprogramujte nástroj pro konverzi teplotyPodobně je užitečný program pro sestavení převodu teploty na jinou měrnou jednotku. Zjistěte, zda můžete vytvořit program, který bude měřit zadanou teplotu ve stupních Celsia a vrátí stejnou teplotu ve Fahrenheitu. 5. Vytvořte multiplikátor s pohyblivou řádovou čárkouVzhledem ke dvěma číslům s pohyblivou řádovou čárkou vytvořte program C++, který vám poskytne součin těchto dvou. Chcete posunout věci na střední úroveň? Na této výzvě vsaďte tím, že povolíte libovolný počet vstupů (nebo jejich množství) a vrátíte součin všech vstupních čísel s pohyblivou řádovou čárkou. 6. Převeďte řetězec na všechna velká písmenaMůžete se rozhodnout, jak dlouhý nebo krátký bude váš vstupní řetězec. Tento program by měl brát zadaná malá písmena a převádět je na velká písmena. Jedná se o velmi užitečný nástroj pro správu databáze nebo čištění dat. 7. Vytvořte kalkulačku, která bude počítat průměrNapište program v jazyce C++, do kterého zadáte pole čísel a výstupem bude jejich průměr. Bonusem by mohla být kalkulačka, která jako vstup použije matici a poskytne průměr každého řádku nebo sloupce. 8. Vytvořte funkci, která zkrátí řetězec na 10 znakůMůžete sestrojit funkci, která přijímá jako vstup řetězec a vrací zkrácenou verzi? Existuje mnoho aplikací pro ořezávání dat, takový nástroj umí odstranit chyby v databázi. Například v údajích o adrese zákazníka by jakékoli PSČ, které má více než pět znaků, bylo nesprávné. Ořezávání celých souborů pomocí tohoto programu může pomoci udržet databáze se správnými údaji. 9. Naprogramujte program, který bude provádět třídění pole číselných prvkůVzhledem k pole, řekněme, 10 čísel, můžete vytvořit program, který vrátí pole v číselném pořadí od nejmenšího čísla po největší? Seřazení dat je účinný způsob využití jazyka C++. Pokud vám vyhovuje malé pole, zkuste pracovat s větším – nebo dokonce s maticí. Třídící algoritmus necháváme na řešiteli. 10. Napište program, který počítá duplicitní položky polePři čištění dat je třeba odstranit duplicitní údaje. V této krátké úloze tedy vytvořte program, který vrátí počet prvků v poli, které jsou duplikáty. Nezapomeňte každý den pracovat na svých programátorských dovednostech, abyste postupně dosáhli vytouženého cíle a stali se dobrými programátory.
Jak umí programátor samouk dohnat ty, co studovali na univerzitě
Tipy a triky
03.04.2018
Martin Lipták

Jak umí programátor samouk dohnat ty, co studovali na univerzitě

Co se učí na univerzitáchJsi programátor samouk a přemýšlíš, jak to vypadá na univerzitě? Už jsi viděl všechny online kurzy , máš za sebou 10 vlastních projektů a začínáš v nové práci jako Web developer. Jak dohnat lidi, kteří 5 let studovali informatiku? Dá se to vůbec?  Před 3 lety jsem skončil FIIT ( Fakulta informatiky a informačních technologií ) na STU v Bratislavě a také jsem přemýšlel, co všechno mi škola dala. Je toho hodně a jsem velmi rád, že jsem si vybral takovou cestu. Na druhou stranu, kdybych tuto možnost neměl, většinu věcí bych se naučil i jinde. Co pro mě byly ty nejdůležitější věci? Asi už tušíš, že je to celé velmi subjektivní a určitě neber tento článek jako univerzální návod. Studentský životBydlel jsem na intrácích v Mlýnské dolině a jeden semestr jsem strávil na programu Erasmus ve Španělsku. Byly to kamarádství a zážitky, na které lze vzpomínat celý život. Pro samouky: Pokud jsi studoval na jakékoli vysoké škole, víš o čem mluvím. Inspirativní lidéPoznal jsem mnoho spolužáků a učitelů, kteří mě v mnoha věcech posunuli dál. S mnoha jsem dosud v kontaktu a můžu se na ně spolehnout, kdybych potřeboval pomoc.  Pro samouky: Skvělé lidi najdeš iv pracovních kolektivech. Obklop se takovými, kteří jsou lepší než ty sám.  Na škole se organizovalo velké množství akcí a učitelé nás motivovali chodit na setkání programátorů mimo školu, kde jsem poznal mnoho dalších lidí. Pro samouky: Hledej si kamarády na různých událostech pro programátory, kterých je více než dost v každém větším městě (například taková Rubyslava nebo Reactive meetups a mnoho dalších). SamostatnostOd intráků a studia v zahraničí, až po práci na zadáních, projektech a závěrečných pracích. Alespoň na FIIT to bylo tak, že táhnout to musel sám student a učitel mu jen pomáhal nebo někdy i nepomáhal. Zasekl ses při zadání a termín je zítra? Použij Google, nebo se poraď se spolužáky, ale vyřeš to. Pokud tvé zadání nebude do 00:00 CEST v předávacím systému, nikoho nebudou zajímat tvé výmluvy a předmět si zopakuješ další rok. Pokud se ti nasbírá takových předmětů více, letíš ze školy. Pro samouky: Tak jako jsi udělal těch 10 vlastních projektů, i v práci budou očekávat, že se věcí chytíš a dotáhneš je samostatně do konce. To ale neznamená, že se nemáš ptát (nejdříve Google) a požádat o pomoc, když ji potřebuješ. [Image] Práce v týmuNa mnoha školních projektech jsem nepracoval sám. Na týmovém projektu jsme byli až 7 a museli jsme se vypořádat s odlišnými názory a dokonce cíli v projektu.  Pro samouky: Máš za sebou těch 10 projektů, při kterých ses naučil samostatnosti. V práci budeš obklopen lidmi a musíte spolu co nejlépe vycházet. Jmenuje se to soft skills a dá se to natrénovat. [Image] VědomostiNa co všechno si vzpomenu 3 roky po skončení školy? O čem byly všechny ty předměty? • Jak funguje počítačový hardware a jak se z jednotek a nul stanou programy – logické obvody a počítačové architektury. • Jak funguje operační systém - ovladače zařízení, IO, systémová volání, procesy, vlákna (threads), synchronizace, správa unixových systémů a shell skripty. • Jak funguje Internet a co je HTTPS, DNS, POP3, IP a Ethernet – 7 vrstev počítačových sítí a jak spolu souvisí všechny tyto protokoly. • V čem se liší paradigmata programování - procedurální programování v C, objektově orientované v Javě, funkcionální v Lispě a logické v Prologu. Viz můj první projekt v C , který jsem nahrál do školního systému pro automatické testování :) • Co znamená zápis O(n) a jak určit složitost algoritmů? Jak může efektivní algoritmus vypočítat výsledek za 1 milisekundu a neefektivní by to počítal týdny? Vyvážené binární stromy, hashing, grafy a jiné datové struktury. • Co je to Turingův stroj? Proč jsou regulární výrazy regulární? Co je abstraktní syntaktický strom? Základní teorie informatiky, na které stojí všechny programovací jazyky. • Je umělá inteligence opravdu inteligentní? Hrubá síla a heuristiky, které řeší složité problémy, neuronové sítě, genetické algoritmy a odvozovací stroje. • Jaké jsou výzvy paralelního programování? Klasické problémy synchronizace, vlákna, mutexy a semafory. • Co je databáze? Návrh datových modelů, psaní dotazů (queries), optimalizace indexy a kdy použít NoSQL. • Úvod do analýzy dat (data science). Lineární regrese, neuronové sítě, support vector machines, clustering a časové řady. • Jak spravovat softwarové projekty? Vodopád nebo agilní metodologie, důležitost testování a dokumentace, návrh poživatelských rozhraní, kvalita kódu a návrhové vzory. • Jak dělat výzkum? Návrh hypotéz, jejich vyhodnocování experimenty, měření dat, psaní a zveřejňování výzkumných článků. • Pár předmětů o ekonomii, právu a psychologii bylo příjemným odpočinkem od technických věcí. • Webový vývoj v Ruby on Rails. Toto je to, čemu se nyní věnuji v práci. Pro samouky: Vypadá to jako velmi dlouhý seznam, ale většinu z těchto věcí se umíš naučit v praxi. Jsou však věci, ke kterým se nedostaneš. Pokud se od začátku zaměřuješ na webový vývoj v PHP , asi se nebudeš do hloubky zabývat hardwarem, překladači (compilers) a operačními systémy. A většina lidí se asi nebude zabývat výzkumem. [Image] Takže jak dohnat ty, kteří studovali FIIT?• Obklop se lidmi, od kterých se můžeš hodně naučit. Najdeš je v práci a na setkáních programátorů. • Nečekej, že ti vždy řeknou, jak máš věci dělat. Samostatnost je ale také umět požádat o pomoc, když ji potřebuješ. • I když to tak na první pohled nevypadá, programování je víc o lidech než o počítačích. Pracuj na svých soft skills a komunikaci v týmu. • Snaž se porozumět věcem do hloubky. Jak fungují regulární výrazy? Proč potřebuje databáze indexy? Jaký je rozdíl mezi http:// a https://? V čem jsou výhody SCRUM-u? • Uč se věci mimo tvé specializace. Vyvíjíš weby? Zkus udělat nativní mobilní aplikaci. Co takhle si o víkendu naprogramovat ovladač do operačního systému nebo kompilátor? Máš dotazy k tomuto blogu? Neváhej je napsat do komentářů.
Jak na vlastní Virtuální privátní server - část 1.
Vzdělávání
21.01.2021
Lubo Herko Edited

Jak na vlastní Virtuální privátní server - část 1.

Každý týden jeden blog. Takové jsem si dal předsevzetí do nového roku. Hned první týden se to nepodařilo, ale co už 🤦🏻‍♂️ . V tomto textu (nebo seriálu?) budeme řešit tvůj vlastní Virtuální privátní server (VPS). Konkrétně: • zjistíme co to VPS vlastně je a jaké jsou výhody a případné nevýhody, • zkusíme analyzovat naše potřeby a vybrat vhodné parametry našeho serveru, • VPS koupíme, nastavíme, zajistíme a připravíme pro naši aplikaci, • z GitHub repozitáře nasadíme naši aplikaci do produkce pomocí GithubActions (CI), • koupíme doménu a nasadíme SSL certifikát pomocí letsencrypt. Je to hodně práce, pome na to.[Image] K čemu mi je vlastní server?Hned na začátku si to vyjasněme: VPS je pro většinu projektů zbytečný. Při dnešních možnostech, jak svou aplikaci umíme nasadit do produkce a zpřístupnit ji uživatelům na pár kliků, je často zbytečné řešit komplikované nastavování vlastního serveru. Hlavně údržba a řešení případných problémů nám může připomenout, jak špatně jsme se rozhodli. Přesto VPS má své místo a někdy se opravdu může hodit, například: • pokud máš linux v malíčku, nebo svůj VPS už máš (jsi zkušený/á), • pokud výkon sdíleného hostingu viditelně nestačí a už neumíš svou aplikaci dále optimalizovat, • pokud nepostačují dostupné technologie sdíleného hostingu (potřebuješ doinstalovat vlastní knihovny, tooly), • pokud má aplikace extrémní nároky na výkon procesoru, velikost paměti, nebo potřebuješ ukládat gigabajty/terabajty dat, • pokud jsou data, se kterými pracuješ příliš senzitivně na to, aby byla uložena na jednom místě spolu s daty jiných uživatelů sdíleného hostingu. Asi bychom našli i další případy, specifika, kdy se hodí VPS, tyto nám však prozatím postačí. Pokud tedy spadáš do některého z kritérií, čti dále. Jaký výkon serveru potřebuji?Brzdí. Než přistoupíme ke koupi serveru bychom měli vědět, jaké jsou naše požadavky. Alespoň přibližně. Potřebujeme spoustu jader procesoru? Nebo si vystačíme s jedním, případně dvěma jádry? Potřebujeme spoustu operační paměti, nebo terabajty dat na disku? To jsou těžké otázky, ale poradím ti: • Pokud aplikace neexistuje a chceš VPS jen vyzkoušet, zvol nejlevnější server jaký je v nabídce. Zda máš 1 procesor, nebo 32 procesorů - terminál reaguje vždy stejně rychle. • Pokud je aplikace nová a neznáš její nároky, začni raději s méně výkonným a levnějším serverem. Například CPU s jedním nebo dvěma jádry a 2G RAM. Většina providerů disponuje jednoduchým škálovacím nástrojem. Pokud se zvýší nároky, pohneš v administračním rozhraní nějakým sliderem a šup, máš o dvě jádra více, případně dvojnásobek RAM - do pár vteřin. • Pokud jsi narazil na limity sdíleného hostingu, pravděpodobně znáš důvod, proč chceš vyzkoušet VPS. Nejlepší pokud si komunikoval s podporou svého providera a potvrdili, že jsi narazil na limit jejich CPU, nebo RAM. Kde koupit server?Takže, pokud víme alespoň přibližně co chceme, udělejme průzkum. Osobně mám vyzkoušených těchto prodejců VPS: • Linode, DigitalOcean, Hetzner, WebSupport Ubuntu Server a terminál bude u každého prodejce stejný. Řídit se tedy můžeme podle následujících kritérií: 1. cena 2. ještě jednou cena 3. možnosti administračního rozhraní a případného navyšování výkonu do budoucnosti 4. lokalita datového centra (co nejblíže uživatelům) Moje zkušenost V poslední době to u mě osobně vyhrává Hetzner (hetzner.de). Frajeři mají vynikající ceny (vlastní server v době psaní tohoto textu umíš získat již za 3E/měsíc) a navyšování počtu CPU a RAM je řešeno jednoduchým sliderem v administračním rozhraní. Super věc 🎉. Datové centrum můžeš zvolit relativně blízko – Falkenstein, Nemecko. TIP: V levém horním rohu změníš jazyk webu z německého na anglický. 😎 Vytvoření účtu HetznerJak se už konečně tedy dostaneme k vlastnímu serveru? Takto: 1. Vytvoř si účet na hetzner.de (klik) 2. Klikni na linku, kterou ti Hetzner poslal na email zadaný při registraci 3. V sérii formulářů vyplň své iniciály (poslední formulář vyžaduje údaje o platbě, žádná platba předem však není nutná) 4. Po vyplnění a odeslání formulářů se implicitně zobrazí formulář - nastavení tvých iniciál. Vpravo nahoře klikej na čtverečky a vyber z nabídky možnost "Cloud": Pokud máš po absolvování předchozích kroků před sebou takovou obrazovku:[Konzole cloudu Hetzner.de. je vše v pořádku.] Můj server!Už jsme blízko. V seznamu projektů (předchozí obrázek) klikni na "Default" (tento název umíš změnit přes ikonu tří teček v pravém horním rohu karty produktu) a následně "Add server".[Vytvoření nového VPS.] Parametry serveruNyní zvolíme parametry serveru. V tomto případě zvolíme nejlevnější variantu, ale některé možnosti popíšeme blíže. Parametry serveru tedy nastavíme následovně: 1. Location (umístění datového centra): Falkenstein, protože je nejblíže Slovensku. 2. Image (operační systém): Ubuntu 20.04, protože s ním umím pracovat a také existuje obrovská komunita uživatelů Ubuntu serveru, což usnadní vyhledání návodů a řešení případných problémů. Se serverem Ubuntu bude dále pokračovat i tento tutoriál. 3. Type (typ serveru): Standardní, protože nám nevadí, že spolu s naším VPS budou na fyzickém serveru běžet i jiné virutální servery. Dedikovaný typ serveru je vhodný jen tehdy, potřebujeme-li opravdu velký výpočetní výkon pro naše použití. Z dalších možností typu serveru vyberme hned první s označením CX11 a tedy 1x VCPU, 2GB RAM, 20GB SSD v ceně €2.99 za měsíc. 4. Volume (externí disk): Nevytváříme externí disk. 1. TIP: Pokud vytvoříme VPS o velikosti SSD 20GB a potřebujeme více dat, nemusíme hned měnit velikost SSD na serveru, ale můžeme připojit k serveru externí disk. Má to jednu velkou výhodu a jednu menší. Velkou výhodou je, že v případě zvyšování výkonu (např. z 1CPU a 2GB RAM na 4CPU 8GB RAM) můžeme zvolit možnost, že nechceme navyšovat i velikost SSD – tedy SSD zůstane na hodnotě 20GB. Takové rozhodnutí nám v budoucnu umožní i krok zpět a tedy snížení počtu VCPU a RAM. Takto můžeme ušetřit nemálo finančních prostředků, pokud potřebujeme zvýšit výkon VPS jen dočasně, ne natrvalo (např. pokud je aplikace přetížena jen v období Vánoc). 5. Network (síť): Nevytváříme síť, protože nevytváříme skupinu serverů, které potřebujeme mít na jedné síti (např. pokud bychom potřebovali zvlášť VPS pro webserver a databázový server). 6. Additional features (další možnosti): V případě možnosti User data nespekulujeme (zatím). To se nám může hodit tehdy, chceme-li některé činnosti automatizovat, například automaticky přidat uživatele do systému, spustit různé skripty po instalaci a podobně. Backups jsou pravidelné zálohy, což je nutnost na produkčním serveru, kde běží ostrá aplikace. Tato služba je však zpoplatněna – 20% z ceny našeho serveru. Pokud tedy vytváříš produkční server, nafurt, tak doporučuji i se zálohami. Pokud jen testuješ, tak je to na tobě 😉 . 7. SSH Key (SSH klíč): Pokud máš zkušenosti s *nix systémy, možná máš vytvořený svůj id_rsa.pub klíč. Pokud ano, tady ho můžeš použít a tak se autentifikovat při připojování k serveru. V opačném případě (a to je náš případ) ti bude zasláno heslo k root uživateli na tvůj email. Tady tedy nespekulujeme a zatím nezaškrtneme tuto možnost. 1. TIP: Povolit vzdálený přístup pro root uživatele není bezpečné a používá se pouze pro prvotní nastavení serveru (první přihlášení do nového VPS). Jedním z prvních kroků po přihlášení se do nového VPS by mělo být vytvoření vlastního uživatele, který se bude přihlašovat pomocí klíče (ne hesla) a zakázání vzdáleného přístupu pro root uživatele. To bude také náš postup. 8. Name (Název): Toto je název serveru, který je zobrazen v administračním panelu hetzner, ale iv konzole po připojení k serveru přes SSH protokol. TIP: Vzpomeň si na nějaké názvy světů, postav z tvých oblíbených počítačových her, komiksů nebo filmů 😎 . Hodně čtení kvůli pár klikům. Nastavení serveru tedy může vypadat i takto:[Nastavenie parametrov VPS.] První SSH spojení Po potvrzení nastavení chvíli počkáme na spuštění nové instance našeho VPS. Zároveň nám Hetzner doručí email s informacemi o IP adrese, na kterou se budeme připojovat a heslem pro root uživatele. Tak zkontroluj email a pojď se přihlásit na server přes SSH. Jaký program použít k přihlášení přes SSH? Pro MacOS je to Terminal nebo iTerm. V případě linuxu (jakéhokoli) je to velmi podobné MacOS - tedy opět Terminal. Uživatelé Windows mohou použít pro SSH připojení program Putty, případně nainstalovat WSL doplněk a použít WSL terminal. Napiš nám pokud se setkáš s nějakým problémem, pořešíme. Z emailu jsem se dozvěděl, že IP mého serveru je 78.47.244.57 a heslo k uživateli root je ss3PgfWnHwxUhUaKEEr9 (ani nezkoušej, server v době čtení tohoto textu již nebude existovat).[Email s autorizáciou do nášho VPS.] TerminalPříkaz ssh, který použijeme v MacOS, Linux nebo WSL terminálu má následující syntax: ssh pouzivatel@ip_servera Tedy v našem případě: ssh root@78.47.244.57 Terminál si vyptá heslo, můžeme ho jen zkopírovat a přilepit. Při zadávání hesla do terminálu se nezobrazují žádné hvězdičky ani odezva. Proto jen potvrdíme příkaz klávesou Enter. Pokud se na server připojujeme poprvé, SSH se zeptá, zda chceme server uložit do seznamu SSH serverů. Napíšeme yes a spojení se v případě správného hesla úspěšně naváže:[Image] První připojení k serveru přes SSH. Při prvním přihlášení je nutné změnit heslo uživatele root. Zadáme staré heslo a vytvoříme nové. Hotovo. Náš nový VPS server Ubuntu 20.10 je vytvořen. Co dál?V další části blogu budeme pokračovat s nastavením našeho serveru: 1. vytvoříme si na lokálním počítači SSH klíč 2. vytvoříme na serveru vlastního uživatele a nastavíme přihlašování přes SSH klíč 3. zajistíme server pomocí firewallu, fail2ban a jiných nástrojů 4. nainstalujeme a spustíme webový server (nginx) 5. nainstalujeme a spustíme databázový server (postgresql, pokud budeš potřebovat tak i MySQL) 6. nainstalujeme závislosti (git, nodejs, ...) Ve třetí části budeme řešit deploy naší aplikace na VPS: 1. koupíme doménu a nasměrujeme ji na server 2. naklonujeme naši aplikaci na server, spustíme ji pod doménou a vytvoříme k ní službu (systemd service aby se automaticky spustila při případném restartu serveru) 3. pomocí certbot nastavíme doméně SSL certifikát a zpřístupníme aplikaci pod HTTPS 4. pomocí GithubActions nastavíme continous integration tak, aby se po push do main branche spustily automatizované testy a v případě bezchybnosti se aplikace rovnou nasadí do produkce Hodně roboty máme. Ale hodně se také naučíme. Čtvrtá část není.