Programování je mou profesí i zálibou. V programování je dán jasný řád a pravidla, která je nutné dodržovat. Všechno má souvislost a ve výsledku dává smysl, i když to nemusí být na první pohled jasně patrné.
S programování jsem začínal v roce 2012. Tehdy jsem se užil v jazyce ANSI C programovat RISC mikrokontrolér AT89S52. Postupně jsem se propracoval k programování konzolových aplikací. První zkušenosti s objektově orientovaným programováním (OOP) byly v jazyce PHP. Nejednalo se (jak by se dalo předpokládat) o tvorbu webových stránek, ale o implementaci aplikačního serveru, který propojoval databázový systém s vestavěným systémem. Na vysoké škole jsem se dostal k programování mobilních aplikací pro operační systém Android v programovacím jazyce Java. Zároveň jsem si rozšířil znalosti z oblasti softwarového inženýrství. Poslední roky si své kódy rovněž verzuji pomocí nástroje GIT.
V programování mě baví objevovat nové metody a přístupy, hledat chyby a poučit se z nich.
JAVA pro operační systém Android
První zkušenost s objektově orientovaným programovacím jazykem Java jsem získal během tvorby bakalářské práce. V tomto jazyce jsem rovněž vypracoval i svou diplomovou práci a další, zejména školní projekty. Jazyk jsem se učil sám a to především z volně dostupných materiálů a různých tutoriálů na internetu. Měl jsem předchozí zkušenost s OOP v jazyce C# a PHP, což mi znatelně usnadnilo učení, i když Java je mírně od těchto jazyků odlišná.
Navrhoval a implementoval jsem aplikace, které využívaly standardní grafické prvky, obsahovaly více vláknové procesy, ukládaly data do lokálních i vzdálených databázových systémů a komunikovaly s okolím prostřednictvím Wi-Fi a Bluetooth.
Mám rovněž zkušenost s programováním jednoduchých konzolových aplikací v tomto programovacím jazyce.
C# .NET
S objektově orientovaným jazykem C# a frameworkem .NET jsem se poprvé setkal rovněž na vysoké škole. V rámci předmětu jsem se seznámil se základní konstrukcí jazyka a upevnil jsem si znalosti z OOP.
Mám zkušenosti s implementací více oknových aplikací, které umí reagovat na různé uživatelské podněty, vykreslovat grafy, synchronizovat více vláknové procesy, číst, zapisovat a parsovat textové soubory a komunikovat s okolím prostřednictvím sériové linky a síťových protokolů TCP/IP a UDP.
ANSI C pro konzolové aplikace
První zkušenosti s procedurálním programováním v jazyce C jsem získal během programování mikrokontrolérů. Na střední a vysoké školy pak bylo programování konzolových aplikací v céčku považováno za základ. Mám zkušenosti s čtením vstupů konzole, čtením a zápisem souborů a základní povědomí o dynamické alokaci paměti.
Ze zkušeností s implementací firmwaru mikrokontroléru pak ovládám členění zdrojového kódu do více zdrojových a hlavičkových souborů a také podmíněný překlad zdrojového kódu
LabVIEW
S programováním v LabVIEW jsem se seznámil v rámci kurzů na vysoké škole. V rámci těchto kurzů jsem řešil dva projekty. První projekt byl program na agregaci signálů s proměnnými parametry, které byly následně vykresleny do grafu a jednotlivé vzorky uloženy do strojově čitelného souboru. Druhý projekt kombinoval automatické měření a testování demonstračního produktu za pomocí měřících přístrojů připojených skrze USB nebo GPIB rozhraní k PC.
Během návrhu a implementace jsem se seznámil se základními prvky tohoto ,,programovacího jazyka“, které slouží pro algebraické výpočty, ovládání měřících přístrojů nebo interakci s uživatelským rozhraním.
PHP a framework Nette
První zkušenosti s OOP jsem získal v rámci učení se skriptovacího jazyka PHP. Ten umožňuje jak klasické procedurální tak objektově orientované programování.
Pro rychlejší, efektivnější a bezpečnější psaní zdrojového kódu je možné (avšak nikoliv nutné) využít některého z frameworku, v mém případě původního českého frameworku Nette Ten obsahuje třídy pro rychlejší práci s databázemi, tvorbu formulářů a šablon nebo autentifikaci uživatelů.
V Nette frameworku jsem implementoval několik aplikačních serverů, které přijímaly požadavky skrze HTTP(S) protokol a data obsažená v požadavcích procházely a ukládaly do databáze. Tyto servery fungovaly jako prostředníci mezi vestavěnými systémy nebo mobilními aplikacemi, které se vzdálenou databází komunikovaly. Dále mám zkušenosti s konfigurací routerů a parsování JSON řetězce v tomto frameworku.
Relační databázové systémy
V rámci několika řešených projektů jsem se setkal s nutností využít k ukládání dat některý z dostupných databázových SQL systémů. Mám zkušenost s návrhem struktury databáze, tvorbou vazeb mezi tabulkami a konstrukcí složitějších SQL dotazů.
MySQL (Maria DB)
Databázový systém MySQL později MariaDB jsem využíval společně s aplikačními servery, které měly plnou kontrolu nad daty ukládanými a posléze vybíranými z databáze. Pro komunikaci s databází bylo využito PHP ovladače PDO. Administrace databází probíhala přes nástroj phpMyAdmin.
SQLite
V rámci mé diplomové práce vznikla potřeba ukládat jednoduchá data do lokální databáze v zařízení, na kterém byla navržená aplikace provozována. Andorid API poskytuje nativní podporu pro databázový systém SQLite, který je součástí operačního systému. Administrace databáze probíhala prostřednictvím pluginů vývojového prostřední nebo on-line dostupných nástrojů.
Verzovací nástroj GIT
Se zdokonalováním svých schopností a objevování pokročilejších a sofistikovanějších programovacích jazyků vznikla potřeba zdrojové kódy zálohovat a verzovat. Poslední projekty se snažím své zdrojové kódy verzovat pomocí verzovacího nástroje GIT.
Ovládám základní příkazy pro vytvoření nebo naklonování existujícího repositáře, commitnutní změn a jejich aktualizaci ve vzdáleném repositáři.