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 180 výsledků
Kurzy (9)
Všechny kurzy
-
12h 26min
Algoritmizace v C++
od Marek Šurka
-
9h 55min
C++ Intermediate (středně pokročilý)
od Marek Šurka
4.4
3h 29min
C# pro mírně pokročilé
od Jaroslav Beňo
-
3h 22min
Objektově orientované programování v C++
od Marek Šurka
4.6
3h 18min
C# pro začátečníky
od Jaroslav Beňo
4.3
4h 44min
C++ Elementary (pro začátečníky)
od Marek Šurka
5.0
6h 26min
C++ Pre-Intermediate (mírně pokročilý)
od Marek Šurka
5.0
4h 9min
C++ Elementary II. (začátečník II.)
od Marek ŠurkaKapitoly (51)
Visual Studio C# - Príkazy, nastavenia a instructions prompt
Profesionální programování s AI
Visual Studio C# - Setup projektu
Profesionální programování s AI
ÚLOHA 6: Riešenie č. 3
Microsoft Excel: Pracovní pohovor
ÚLOHA 6: Riešenie č. 1
Microsoft Excel: Pracovní pohovor
ÚLOHA 12: Riešenie č. 1
Microsoft Excel: Pracovní pohovor
Visual Studio C# - Čo ďalej
Profesionální programování s AI
ÚLOHA 6: Riešenie č. 2
Microsoft Excel: Pracovní pohovor
20.4 Heap sort - algoritmus v jazyku C++
Algoritmizace v C++
Články (120)
Všechny články
Tipy a triky
03.10.2019
Skillmea
Lambda výrazy v Javě - část III.
Lambda a vnitřní anonymní třídyVelmi se nám žádá říci, že lambda výrazy jsou jen zkratky jak napsat vnitřní anonymní třídy. Ale pamatuj si, není tomu tak. Vypadá to podobně, ale lambda není implementace rozhraní. Lambda je sama osobě nezávislá jiná věc.
Podívejme se na příklad. Namísto toho, abychom použili implementační třídu našeho rozhraní IHelloWord, vytvoříme si vnitřní anonymní třídu.
IHelloWord helloWord3 = new IHelloWord() {
@Override
public void sayHello() {
System.out.println("HelloWord impls inner anonymous class");
}
};Všechny 3 možnosti, které mají jako návratovou hodnotu rozhraní IHelloWord můžeme podsunout do metody printHelloWord(IHelloWord helloWord).
helloWord.printHelloWord(helloWord1);
helloWord.printHelloWord(helloWord2);
helloWord.printHelloWord(helloWord3);
Jak to, jak to?Jak java ví, jaký má použít typ pro lamba výraz? Abychom tomu porozuměli, vytvoříme si novou třídu, kde budeme pracovat s lambda výrazem.
Vytvořme si rozhraní, které bude mít jednu metodu, která bude vracet int a na vstupu bude také int.
interface Nasob{
int nasob(int a);
}
Ako by vyerala implementácia tohto rozhrania?
class NasobPiatimi implements Nasob{
public int nasob(int a){
return a*5;
}
}Nyní si navrhněme lambda výraz, který odpovídá dané metodě. Nepotřebujeme návratovou hodnotu int, neboť java umí na ni přijít sama a nepotřebujeme ani název metody a ani modifikátor přístupu public. Náš lambda výraz bude vypadat takto:
(int a) -> a*5;Nyní použijte tento lambda výraz:
public static void main(String[] args) {
Nasob nasobPiatimi = (int a) -> a*5;
System.out.println(nasobPiatimi.nasob(10));
}Na výstupu bude 50. V tomto příkladu se lambda tváří jako instance rozhraní Nasob. V předchozích příkladech, kdy jsme používali HelloWord, jsme takovou proměnnou vkládali jako parametr metody printHelloWord (HelloWord3 v IDEi). Namísto toho jsme mohli tuto lambdu vložit přímo do metody.
helloWord.printHelloWord(() -> System.out.println("HelloWord impls lambda"););
Java kompilátor vezme tento lambda výraz a podívá se kam jde. Jedná se o metody printHelloWord a podívá se, co akceptuje na vstupu. Akceptuje rozhraní HelloWord. Pokud lambda sedí s požadavkem, že dané rozhraní obsahuje jen jednu metodu a ta vrací void a na vstupu nemá žádný parametr, tak java řekne, že daná lambda je typu HelloWord. Toto se jmenuje Type inference. Java si sama zjistí typ. Teď, když víš jak java dokáže zjistit typy, vrátíme se k příkladu, který jsme začali psát v této kapitole. V našem příkladu umíme ještě více zkrátit zápis našeho lambda výrazu.
Nasob nasobPiatimi = (int a) -> a*5;
System.out.println(nasobPiatimi.nasob(10));Jelikož naše lamba jde do metody rozhraní, kterou známe
interface Nasob{
int nasob(int a);
}
Tak vieme presne povedať aký typ má vstupný paramter metódy. Je to int.
interface Nasob{
int nasob(int a);
}Když to víme, tak nemusíme při psaní lambda výrazu znovu specifikovat typ vstupního parametru.
Nasob nasobPiatimi = (a) -> a*5;
A jelikož máme jen jeden parametr, nemusíme psát ani závorky.
Násob napětí = a -> a*5;
Už nebudeme nic mazat, neboť by nám už nic nezbylo 😃
Nyní můžeme napsat metodu, která bude na vstupu očekávat rozhraní Nasob a když ji použijeme, tak do ní vložíme na vstup náš lambda výraz.
public static void printNasob(Nasob nasob){
System.out.println(nasob.nasob(10));
}
public static void main(String[] args) {
printNasob(a -> a*5);
}V jevu mohli klidně vytvořit nový typ pro tyto lambda výrazy. Ale neudělali to a jedním z důvodů je i zpětná kompatibilita se starším kódem. Jak už víme, tak lambda výrazy můžeme použít všude tam, kde máme vyhovující rozhraní.
Ve vnitřních anonymních třídách, v metodách kde je na vstupu interface a podobně. Příklad:
HelloWord helloWord3 = new HelloWord() {
@Override
public void sayHello() {
System.out.println("HelloWord impls inner anonymous class");
}
};
HelloWord helloWord3 = () -> System.out.println("HelloWord impls inner anonymous class");
Při tomto musíme pamatovat, aby rozhraní byla jedno metodová nebo aby ostatní metody rozhraní byly default. A dané metody v rozhraních, aby se shodovaly s lambda výrazem. Takové rozhraní s jednou abstraktní metodou (metoda, která poskytuje popis ne implementaci) se nazývá Functional interface.
Představ si, že používáš rozhraní, které má jen jednu metodu a používáš ho pro lambda výrazy. Nyní by někdo cizí přišel a do tohoto rozhraní by přidal další abstraktní metodu, přesněji její popis bez implementace. Takové rozhraní by již více nebylo functional interface a proto by se nemohlo použít pro lambda výraz a nastala by chyba - přestože rozhraní by bylo v pořádku. Třeba na to myslet a pokud chceme něco přidat do functional interfac, tak jen jako default metody.
Abychom upozornili kohokoli, kdo by chtěl něco přidat do našeho rozhraní, tak máme možnost přidat anotaci @FunctionalInterface. K anotacím se ještě dostaneme, tak se nebojte. Nyní je důležité vědět, že je to pomůcka – tato pomůcka nám udělá to, že jakmile napíšeme další metodu do našeho rozhraní, tak nastane chyba. Danou anotaci nemusíme psát, ale je to super.
@FunctionalInterface
public interface HelloWord {
void sayHello();
}Příklady na vyzkoušení:
1. vytvoř si seznam míst
2. setřiď seznam
3. napiš metodu, která vypíše vše ze seznamu míst
4. udělej si metodu, která vypíše jen ta města, která se skládají z jednoho slova nepoužívej při tom lambda výrazy
Pokračování příště 👋
Články a online kurzy o Javě pro tebe připravuje Jaro Beňo.
Vzdělávání
20.12.2016
Skillmea
Marek Chrenko - nový lektor v Skillmea
Marek je bývalý programátor, který se v současnosti věnuje grafice a webdesignu. K programování a web stránkám se dostal už na střední škole a takovýmto způsobem si přivydělával, dokud neskončil školu a nenastoupil do zaměstnání. Momentálně žije na „volné noze“ a zabývá se grafikou a tvorbou videí.
Při své práci pronikl do „pozadí“ fungování nejnovějších programů a rozhodl se, že pomůže začátečníkům v chápání fungování programů nikoli na teoretické rovině, ale hlavně v praktické.. tak aby tyto znalosti mohly využít ve své práci!
Přečti si rozhovor s Markem a pokud tě něco zajímá, napiš svůj dotaz do komentáře.
Marku, jak ses stal grafickým designérem?
Ještě na střední škole jsem dělal webstránky pro klienty, takže když jsem se chtěl pochlubit svojí robotu, tak musely ty weby i nějak vypadat. Tedy jsem se musel naučit i trošku tomu designu a pak to už šlo :) Důležité je neusnout na vavřínech a stále se učit. Trénovat, trénovat, trénovat. Nikdy nic nebude dokonalé, ale dá se alespoň přiblížit k dokonalosti tréninkem. A já jsem se snažil toho držet. Trénoval jsem různé postupy, některé byly dobré, některé ne.. Všechno je o testování a pak to člověk jako kdyby chytí do ruky. Kdysi bych neřekl že ze mě bude grafik, designér ale někde hluboko v sobě má člověk v sobě zákódovaný ten smysl pro design.. jen to je třeba vzbudit :)
Jak bys popsal svůj přístup k designu? Kdo nebo co tě nejvíce ovlivnilo nebo ovlivňuje?
Přístup? Už jak jsem zmínil výše, snažím se trénovat. Řeknu to na rovinu.. nemaluji na výkresy, necítím k tomu vztah. Ale tak jak se to mluví o papíře že snese všechno.. i počítač snese všechno, takže moje hrací hřiště je paleta nástrojů a otevřený dokument většinou ve Photoshopu. Řídím se pravidlem, že v jednoduchosti je krása a snažím se to odrážet ve svém přístupu k designování, grafice. Kdo mě nejvíce ovlivňuje? Všem známá firma Apple. Opět .. v jednoduchosti je krása :)
Co je podle tebe tvou nejsilnější designérskou stránkou a jak jsi tuto dovednost zlepšoval v posledních letech?
Představivost / fantazie – když člověk nemá představivost, nevidí ve své mysli výsledek toho co má vytvořit, jen těžko se bude umět realizovat. Na jakých projektech nejraději pracuješ? Tam kde mám hlavní slovo: D Ale ne.. Nejlepší je když člověk má v hlavě už přibližnou představu co chce.. pak je práce jednoduchá.
[Image]
I toto se naučíš v online kurzu od Marka
Jaký je tvůj názor na specializaci vs. zobecňování?
Obě jsou super. Ale pro profesionální práci je nezbytná specializace. Nemůžete být profesionál když máte jen všeobecné vzdělání k danému tématu. Je nutné se v tom trošku „povrtat“. Když chce mít člověk přehled, je důležité zobecnění. Specializace patří profesionálům :) Je lepší kopat jednu jámu do 100m hloubky než kopat deset jam do 10m hloubky.
Máš nějaké oblíbené nástroje, tooly, které ti usnadňují práci?
Photoshop :)
Co bys doporučil začínajícím grafikům (designérům), jak mohou nastartovat svoji kariéru?
Udělejte si přehled a zjistěte, k čemu máte největší vztah a poté ten směr zdokonalujte a pracujte na tom. Prostě trénovat, trénovat, trénovat. Ještě malá rada.. napodobujte to, co už je vytvořeno, co vidíte v reálném životě a to se snažte vytvořit svépomocí.
Marek udělal spolu s námi online kurz Photoshopu , ve kterém ovládneš úpravu fotografií od úplných základů až po pokročilé techniky. Informace o tomto online kurzu najdeš na našem webu .
Vzdělávání
17.09.2020
Skillmea
Java Files, Path, čtení ze souboru
File I/O (Featuring NIO.2)Ve verzi 7 přišel nový balík java.nio, ve kterém je nově uděláno to, co bylo v java.io. Chceš vědět, jak číst soubory (java read file)? Tak musíš vědět, co je to Path a Files.
Můžeš používat oba balíčky. Musíš si ale dávat pozor na to, že pokud pracuješ na projektu, kde se používá java 6 a případně níže, tak ti nepůjdou tyto nové věci. Ale uvažujme, že na takových starých projektech nepracujeme a budeme si vysvětlovat věci s použitím tohoto nového balíčku.
Budeme si mluvit o základních třídách Path a Files, budeme manipulovat se soubory a složkami a tak podobně. Zde je zajímavý link porovnání funkcionality zmíněných balíků a jaké chyby měla java.io:
https://docs.oracle.com/javase/tutorial/essential/io/legacy.html#mapping
PathJednoduše řečeno je to linka na soubor nebo na složku v daném operačním systému. Soubory jsou hierarchicky uloženy. Ve windowsu je na vrchu označení disku například C:\home\skuska. V linuxových systémech je root začínající lomítkem / například /home/skuska. Zde můžeme vidět, že ve windowsu a v linuxu se používají úplně jiné oddělovače. Na to je třeba pamatovat.
Relativní a absolutní cestaAbsolutní cestu můžeme chápat jako úplnou celkovou adresu nebo cestu na soubor nebo složku.
C:\home\skuska je absolutní cesta, která vždy obsahuje root, tedy v tomto případě označení disku C:. Pokud bych ale napsal jen home\skuska\text.txt - tak vidím, že se snažím přistoupit na soubor text.txt, který je umístěn ve složce home a skuska. Ale kde se nachází složka home? Bez dalších informací to nevím a to je relativní cesta.
Třída PathZákladní třída v tomto balíčku – používá se aby uchovávala informace o názvu souboru, složkách které jsou použity ke zkonstruování cesty aby bylo možné lokalizovat dané dokumenty nebo složky. Path na windowse je bude odlišná od Path na unixu.
Pokud mluvíme o třídě Path, tak můžeme v jednoduchosti říci, že můžeme manipulovat s cestou, která vede ke složkám nebo souborům.
Třída FilesTato třída slouží k manipulaci se složkami a soubory. Používá třídu Path.
Když přistupujeme k souborům nebo celkově ke zdrojům na disku – tak jsou „otevřené“. Potom s nimi pracujeme a když už s nimi nepracujeme tak musíme zavolat „uzavření“ práce s těmito zdroji, aby je mohl používat někdo jiný.
K automatickému uzavření můžeme použít try-with-resources.
Práce se souboryMáš Path instanci, která reprezentuje soubor nebo složku. Teď ale stále nevíš, jestli reálně tento soubor nebo složku existuje, jestli se dá z něj číst, zda se do něj dá zapisovat a podobně.
Existuje soubor nebo neexistuje, můžu k němu přistoupit?
Path path = Paths.get("C:\work\tools\Apache Software Foundation\Tomcat6\logs\service-install.log");
System.out.println(Files.exists(path));
System.out.println(Files.notExists(path));
isReadable(Path)
isWritable(Path) isExecutable(Path)
Jsou to stejné soubory? isSameFile(Path, Path)
mazání souboru Files.delete(path);
Vyhodí to výjimku proč se to nepodařilo, pokud se to nepodařilo. Metoda deleteIfExists(Path) také smaže soubor ale pokud soubor neexistuje tak se nevyhodí výjimka.
kopírování souboru
Files.copy(source, target, REPLACE_EXISTING);Do metody lze dát varargs options. StandardCopyOption a LinkOption enums jsou podporovány. Všimni si, že pokud dáš ctrl a click na copy metodu, tak je tam CopyOption... options. Potom klikni ctrl na copy option a zjistíš, že je to jen interface, ale v popisu máš napsáno, že umíš použít StandartCopyOption, což implementuje CopyOption.[Image]
Tady si můžeš prohlédnout implementace CopyOption rozhraní.
Pokud kopíruješ soubor na místo kde se takový soubor již nachází, tak se soubor nepřepíše pokud nezadáš option REPLACE_EXISTING.
Složky lze také kopírovat ale zkopírují se prázdné i když v nich byl nějaký soubor.
Čtení jsou souboru (read from file)Konečně jsme přišli na kus kódu, díky kterému můžeš číst ze souboru (read from file):
Path path = Paths.get("C:\\work\\tools\\Apache Software Foundation\\Tomcat6\\logs\\service-install.log");
List<String> lines = Files.readAllLines(path);
Události
26.02.2020
Skillmea
Co má společného Picasso a WordCamp Košice 2020?
WordCamp je nezisková konference, která se pořádá v 75 městech po celém světě. Je určena zejména fanouškům redakčního systému WordPress, zároveň má však značný přesah do marketingu, podnikání i osobního života. Rozvíjí znalosti a dovednosti, které jsou v dnešní IT době velmi žádané.
Pablo Picasso byl významný umělec 20. století, který měl mnoho talentů. Možná o nich ze začátku ani nevěděl, ale postupným tvořením a rozvíjením se z něj stal maestro. Tak jako Picasso, i ty máš v sobě různé talenty, ale musíš je objevit a rozvíjet.[Image]
Díky konferenci WordCamp Košice 2020 máš možnost získat znalosti a dovednosti o používání a škálování systému WordPress, poznat příběhy lidí z WordPress komunity, můžeš se stát součástí této komunity – objev a rozviň svůj #wordpresstalent.
„Třetí ročník WordCampu v Košicích s sebou opět přináší nové změny, kterými se snažíme zvyšovat úroveň konference. Jednou z těch větších jsou nové prostory - Kasárny/Kulturpark. Ty se nacházejí v centru města, jen pár minut chůze od Hlavní ulice.“, uvedli organizátoři konference.
Už 16. května tě v prostorách Kasáren/Kulturpark čekají zajímavé přednášky i workshopy z různých oblastí tvorby, používání či propagace webu. Tématické okruhy přednášek a workshopů se budou střídat, takže pokud si např. hardcore dev, budeš mít program vystaraný na celý den.
Learn2Code má rádo WordPress a proto jsme hrdým partnerem této konference. Ahoj a vidíme se 16.5.2020 v Košicích na WordCampu.
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.
Vzdělávání
20.12.2021
Skillmea
Co je etický hacking?
Slovní spojení etický hacking se na první pohled může jevit jako oxymoron. V tomto blogu ti však vysvětlíme, co je to etický hacking, na jakých principech je postaven, jak se liší od toho neetického hackingu a jak může být přínosný pro firmy.
Když vznikl pojem „hacker“, popisoval softwarové inženýry, kteří vyvinuli kód pro sálové počítače. Nyní to znamená zkušeného programátora, který se pokouší získat neoprávněný přístup k počítačovým systémům a sítím využitím slabých míst v systému. Hackeři píší skripty, aby pronikli do systémů, prolomili hesla a ukradli data.
I když se hackování stalo pojmem, který nejčastěji popisuje škodlivé a neetické aktivity, nemusí tomu tak být. Hacker může tyto dovednosti stále dobře využít. V tomto článku se podíváme na etické hackování a ukážeme ti, jak můžeš začít svou cestu stát se etickým hackerem.
Co vlastně dělají etičtí hacker?
Etický hacking je znám také jako white hat hacking nebo penetrační testování. Může to být velmi zajímavá kariéra, protože etičtí hackeři tráví svůj pracovní den učením se, jak fungují počítačové systémy, odhalováním jejich zranitelných míst a zkoušením vkrást se do nich beze strachu ze zatčení.
Na rozdíl od neetických hackerů, kteří jsou obvykle motivováni finančním ziskem, etičtí hackeři mají za cíl pomoci firmám (ale i společnosti jako celku) udržovat jejich údaje v bezpečí. Firmy si najímají etické hackery, aby našli zranitelná místa ve svých systémech a aktualizovali chybný software, aby nikdo jiný nemohl použít stejnou techniku k opětovnému proniknutí.
Jako etickému hackerovi se ti buď podaří nabourat do systému a poté ho opravit, nebo se pokusíš nabourat do systému a nepodaří se ti to. Oba výsledky znamenají vítězství pro etického hackera a firmu, protože firemní síť a údaje jsou v konečném důsledku bezpečné.
Řekněme si ještě jaký je rozdíl mezi etickým hackerem a penetračním testerem. Zatímco termín etický hacking lze použít k popsání celkového procesu hodnocení, provádění, testování a dokumentování založeného na množství různých hackerských metodologií, penetrační testování je jen jeden nástroj nebo proces v rámci etického hackingu.
Hledají zranitelná místa
Zranitelnost jsou bugy nebo chyby v softwaru, které lze využít k získání neoprávněného přístupu do sítě nebo počítačového systému. Mezi nejběžnější zranitelnosti patří:
• zastaralý software,
• nesprávně nakonfigurované systémy,
• nedostatečné šifrování údajů.
Některé zranitelnosti lze snadno otestovat, protože chyby již byly zdokumentovány. V těchto případech musí penetrační tester provést pouze skenování systému, aby zjistil, zda v systému existuje chyba a aktualizovat software.
Další zranitelnosti však mohou být neznámé a penetrační tester použije skripty a další nástroje, aby maximálně otestoval systém a zjistil, jestli se nějaké chyby objeví.
Ukazují metody používané hackery
Etičtí hackeři se mohou vžít i do role učitele. Mnoho firem a zaměstnanců ví jen málo o hrozbách kybernetické bezpečnosti ao tom, jak jejich jednání může zabránit hrozbě nebo pomoci hackerovi ukrást data.
Etičtí hackeři pořádají kurzy o kybernetické bezpečnosti a varují zaměstnance před novými hrozbami, když je objeví. Vzdělávání je obzvlášť účinné proti phishingu a jiným kybernetickým útokům typu sociálního inženýrství, které vyžadují, aby útočníkův cíl (člověk) podnikl kroky, aby byla jeho hackerská aktivita umožněna.
Když jsou zaměstnanci informováni o potenciální hrozbě, existuje větší šance, že ji bude možné zastavit dříve, než infikuje systém.
Pomáhají předcházet kybernetickým útokům
Etičtí hackeři také spolupracují s ostatními členy bezpečnostního týmu na vytvoření bezpečnější infrastruktury pro podnik.
Etičtí hackeři vědí, jaké druhy hrozeb existují, a mohou týmu pomoci při výběru nástrojů a vytváření bezpečnostních politik, které mohou zabránit hrozbám, o kterých možná ještě ani nevědí. Mohou také pomoci s nastavením systémů pro zálohování a obnovu, které lze použít v nejhorším případě.[Image]
Klíčové principy etického hackingu
Hranice mezi black hat (nebo neetickým) hackingem a white hat (nebo etickým) hackingem se může zdát nejasná. Koneckonců, existuje také gray hat hacking, které se nachází někde mezi těmito dvěma.
Jako etický hacker bys měl dodržovat několik zásad:
• Dodržuj zákon: hackování je etické pouze tehdy, pokud máš povolení k provedení hodnocení bezpečnosti systému, který hackuješ.
• Poznej rozsah projektu: chovej se jen v intencích smlouvy, kterou máš se společností. Zjisti přesně, co máš testovat a testuj pouze tyto systémy.
• Nahlas všechna slabá místa: nahlas všechna slabá místa, která najdeš a navrhni způsoby, jak je opravit.
• Respektuj jakékoli citlivé údaje: penetrační tester často testuje systémy, které uchovávají citlivé údaje a bude muset podepsat smlouvu o mlčenlivosti (NDA).
Proč je etický hacking důležitý?
Záměrným zjištěním zneužití a slabin v počítačových sítích organizace je v podstatě možné opravit je dříve, než je zneužije neetický hacker. Etičtí hackeři tedy pomáhají organizacím identifikovat a eliminovat hrozby zlepšováním celkové bezpečnosti IT v organizaci.
Samozřejmě nejsou to jen údaje, které jsou v sázce, pokud jde o počítačovou kriminalitu. Ve zprávě Centra pre strategické a medzinárodné štúdie a spoločnosti McAfee v oblasti bezpečnostního softwaru z roku 2020 bylo zjištěno, že ztráty z počítačové kriminality dosáhly v roce 2020 přibližně 945 miliard USD. Jen pro srovnání, v roce 2018 to bylo zhruba 522 miliard USD, takže nárůst je znepokojivý. Tyto rostoucí náklady se připisují lepšímu vykazování, jakož i efektivnějším technikám hackerů.
Kromě ztráty údajů a peněz může počítačová kriminalita poškodit veřejnou bezpečnost, poškodit ekonomiky a podkopat národní bezpečnost. Je zřejmé, že je nezbytné chránit organizace a jejich údaje a etické hackování může v této ochraně hrát klíčovou roli.
Druhy etického hackingu
Existuje několik etických hackerských metod a základních oblastí, které může profesionál použít. Níže uvádíme některé z nejběžnějších typů etického hackování:
• Hackování webových aplikací. Webové aplikace jsou sdíleny přes síť (jako je internet nebo intranet) a někdy jsou založeny na prohlížeči. I když jsou pohodlné, mohou být zranitelné vůči útokům skriptů a etičtí hackeři takové slabiny testují.
• Hackování webového serveru. Webové servery provozují operační systémy a aplikace, které hostují webové stránky a připojují se k back-end databázím. V každém bodě tohoto procesu existují potenciálně slabá místa, která musí etičtí hackeři otestovat, identifikovat a doporučit opravy.
• Hackování WIFI bezdrátové sítě. Všichni známe bezdrátové sítě – skupinu počítačů, které jsou bezdrátově připojeny k centrálnímu přístupovému bodu. S touto vymožeností však přichází řada potenciálních bezpečnostních nedostatků, které musí white-hat hackeři hledat.
• Hackování systému. Přístup k zabezpečené síti je jedna věc, ale hackování systému se zaměřuje na získání přístupu k jednotlivým počítačům v síti. Etičtí hackeři se přesně o to pokusí a zároveň navrhnou vhodná protiopatření.
• Sociální inženýrství. Zatímco ostatní metody se zaměřují na přístup k informacím prostřednictvím počítačů, systémů a sítí, sociální inženýrství se zaměřuje na jednotlivce, lidi. Často to znamená manipulaci lidí, aby předali citlivé údaje nebo poskytli přístup, aniž by měli podezření na špatný úmysl.
Jaké pracovní pozice může obsadit etický hacker?
Firmy všech velikostí a odvětví se obávají bezpečnosti své sítě. Pokud stále dochází k narušení bezpečnosti a firmy budou mít stále citlivé údaje, etičtí hackeři budou žádáni, takže trh práce pro ně vypadá dobře iv budoucnosti.
Některé větší podniky mají mezi zaměstnanci etických hackerů, kteří celý den provádějí bezpečnostní testy a penetrační testy. V jiných společnostech může být etické hackování pouze součástí práce, zatímco většinu času trávíte konfigurací sítí a nastavováním nových systémů. Některé z nejpopulárnějších pozic etických hackerů zahrnují:
• Penetrační tester
• Security Analyst
• Etický hacker
• Bezpečnostní konzultant
• Bezpečnostní inženýr
• Bezpečnostní architekt
• Analytik informační bezpečnosti
• Manažer informační bezpečnosti
Závěr
Pokud tě kariéra v tomto odvětví zatím láká, možná tě také zajímá, jak se naučit etický hacking. Většina etických hackerů, penetračních testerů a white-hat hackerů se pustí do etického hackingu, protože je zajímá, jak funguje internet a informační bezpečnost. Jedna věc, kterou musí etický hacker vědět, je kybernetická bezpečnost.
Jelikož etický hacker se zabývá i softwarovými zranitelnostmi a možná bude muset psát skripty, které mu pomohou s tímto úkolem, budeš se muset naučit i nějaký programovací jazyk (pravděpodobně to bude více jazyků). Pro etické hackery jsou doporučené jazyky jako Python, C, C++ nebo JavaScript.
Práce s terminálem, scriptování v Bashi jsou také silně doporučeno, stejně tak nástroje pro testování zranitelnosti jako Metasploit a OpenVAS. Mnoho užitečných nástrojů a postupů etického hackingu se naučíš v našem online kurzu Úvod do etického hackingu.
Nejdůležitějším požadavkem je však zvědavost. Takže buď zvědavý a hodně štěstí při etickém hackování!
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ářů.
Ostatní
07.04.2023
Skillmea
Skillmea kariéra: Copywriter/ka junior
Hľadáme copywritera/ku. 🔎 Mal by si byť kreatívny, s dokonalou znalosťou slovenského jazyka a gramatiky. Dôležitá je aj tvoja chuť pracovať a vzdelávať sa. Pridaj sa k nám.
Čo bude primárna náplň tvojej práce?
👉 písanie článkov na náš blog
👉 vytváranie kreatívneho obsahu podľa aktuálneho zadania a potrieb
👉 korektúra textov podľa potreby
Koho hľadáme✅ Zaujímaš sa o niektoré z tém programovania, marketingu, dizajnu, nových technologických trendov, kryptosveta či osobného rozvoja.
✅ Orientuješ sa v online marketingu a jeho prostredí, bavia ťa nové technológie.
✅ Slovenská gramatika a štylistika na jednotku, články po tebe nebudeme kontrolovať.
✅ Pošli nám ukážky prác (obsahu), ktoré si v rámci copywritingu vytváral/a alebo vytváraš.
Znalosť jazyka▪ slovenský - C2 - expert
▪ anglický - A1 - úplný začiatočník
Prečo si vybrať nás🌐 Sme online vzdelávacia a kariérna platforma Skillmea. Máme najväčšiu ponuku online kurzov na Slovensku a v Čechách. 👉 Prístup získaš ku všetkým z nich.
🏢 Sedíme v office v Petržalke, kde budeš mať super podmienky na prácu. Budeš mať flexiblilný pracovný čas a možnosť pracovať aj z domu. Tešíme sa na teba.
Dodatočné informácie📧 Pošli nám svoje portfólio prác, životopis alebo link na LinkedIn profil a dohodneme si online stretnutie, následne aj osobný pohovor a tam si povieme viac o pozícii.