Vývoj udržovatelného rozšiřitelného modulárního software na zakázku

Jsem zkušený freelance vývojář vyvíjející software na zakázku. Mým cílem je kvalitní a udržovatelný kód rozdělený do funkčních celků, které jsou znovu použitelné v budoucích projektech.

C++

Vývoj software v jazyce C++ pro operační systémy Windows a Linux.

HTML5 / CSS3 / JS

Vývoj responzivních webových stránek, aplikací, ale i blogů a e-shopů.

PHP / Node.js

Vývoj serverových aplikací v jazycích PHP a Node.js.

Cordova

Vývoj multiplatformních aplikací, převážně pro mobilní zařízení, v jazyce JavaScript. Jedna aplikace pro více operačních systémů.

Instalace

Instalace, konfigurace a zprovoznění vyvinutých aplikací, webových stránek i serverů.

Podpora

Pomoc zákazníkům včetně vývoje nových verzí i funkcionalit na základě požadavků a zkušeností.


Martin Svoboda

IT Freelancer

Jsem zkušený IT vývojář pracující na kontraktech, projektech na zakázku i open source projektech zvěřejněných na GitHubu.

Mezi mé programovací jazyky patří C++, JavaScript, TypeScript, Node.js, HTML, CSS, PHP, MySQL, PostgreSQL a SQLite. Průběžně se zdokonaluji i v dalších programovacích jazycích a frameworcích.

Mým cílem je kvalitní a udržovatelný kód rozdělený do funkčních celků, které jsou znovu použitelné v budoucích projektech. Vývoj nových projektů za použití dříve vyvinutých komponent je rychlejší a levnější.

Na větších projektech pro více vývojářů spolupracuji s dalšími freelance vývojáři, kteří se aktivně podílí na vývoji software.

SLEDOVAT
Martin Svoboda

Reference

ZÁKAZNÍCI A PROJEKTY, NA KTERÝCH JSEM PRACOVAL JAKO FREELANCE VÝVOJÁŘ

  • IXPERTA s.r.o.

    V rámci kontraktu se jako C++, JavaScript (Node.js) a ORACLE Digital Assistant vývojář podílím na různých projektech. Pracoval jsem na vývoji digitálního asistenta na platformě ORACLE Digital Assitent. Logiku asistenta jsem implementoval v YAML a propojení digitálního asistenta s umělou inteligencí SentiSquare pro zpracování českého jazyka v Node.js.

    Pracoval jsem také na projektu "Virtual Showroom" pro online prodej automobilů. Podílel jsem se na vývoji backendového serveru v Node.js (TypeScript).

    V současné době pracuji na interním nástroji pro čtení a parsování dat z Confluence. Opět se jedná o backend server v Node.js (TypeScript).

    Detaily

  • SODAT Technologies, a.s.

    V rámci kontraktu se SODAT Technologies a.s. jsem pracoval jako C++ develper na vývoji služby Windows, včetně jejích automatických testů. Podílel jsem se na implementaci komunikace s ovladačem souborového systému (file system driver), síťovým ovladačem (včetně analýzy provozu HTTP/HTTPS) a komunikace s backend serverem přes gRPC a Protocol Buffers.

    Detaily

    • Období: Květen 2018 - Duben 2020
    • Dovednosti: C++GTestGMockBackendgRPCProtobuf
    • WWW: https://www.sodat.com
  • Atos Convergence Creators s.r.o

    V rámci kontraktu jsem zde pracoval na vývoji komunikačních serverů pro radiostanice Tetra. Servery byly vyvíjeny v C++, SQLite a PostgreSQL. Implementoval jsem odesílání stavových zpráv a krátkých datových služeb (SDS). Podílel jsem se také na implementaci spojení hovorů a jejich záznamu.

    Detaily

    • Období: Březen 2017 - Květen 2018
    • Dovednosti: C++PostgreSQLSQLiteBackend
    • WWW: https://www.atos.net
  • DHO s.r.o.

    Mým úkolem byl vývoj "GPS serveru" v C ++ pro komunikaci s GPS jednotkami (Finder, Level, Patriot, Princip, Teltonika, TK103) umístěnými ve vozidlech. Přijatá GPS data byla uložena do databáze MySQL pro pozdější zpracování a generování knihy jízd.

    Detaily

  • MarsTech

    Implementace, spuštění a správa blogu mars-gamer o hraní počítačových her, herních zařízeních a všem, co s hraním her souvisí na webhostingu WEDOS.

    Detaily

  • MarsTech

    Vývoj a údržba vlastní webové stránky www.marstech.cz pro prezentaci nabízených služeb, referencí i open source projektů.

    Detaily

Open Source Projekty

PRACUJI I NA VLASTNÍCH OPEN SOURCE PROJEKTECH, KTERÉ MĚ USNADŇUJÍ A URYCHLUJÍ PRÁCI

Při své práci často narážím na potřebu implementace podobných nebo stejných funkcionalit. Proto vyvíjím i své vlastní open source projekty implementující základní funkcionality jako je logování, aktivní i pasivní konfigurace, práci s vlákny, správou DLL knihoven a další. Všechny projekty a detailní informace o nich naleznete na mém GitHub profilu Mars2004.

MarsTech C++ SYS

MarsTech C++ SYS projekt integruje většinu ostatních projektů do jedné statické knihovny a dynamické (sdílené) knihovny.

Implementuje objekty, které přes svůj interface (rozhraní) poskytují přístup k implementacím jednotlivých projektů. Na příkladu použití C++ SYS knihovny lze vidět, kolik práce a času je možné jejím použitím ušetřit.

Zjistit Více O Projektu

MarsTech Error

Snad každý program v jakémkoli jazyce se musí vypořádat s obsluhou chybových kódu a výjimek. Projekt definuje typ pro chybové kódy i jednotlivé chybové kódy a implementuje vlastní výjimku včetně její obsluhy.

Samozřejmě lze použít obsluhu a definici chyb operačního systému. Bohužel většina operačních systémů má svůj vlastní seznam chybových kódu, které jsou nepřenositelné na ostatní operační systémy. MarsTech projekty jsou psány tak, aby šly s minimálním úsílím použít na různých operačních systémech.

Zjistit Více O Projektu

MarsTech Logging

Logování je důležitou součástí při ladění i hledání chyb a chybových stavů. Ideální je, když chyby nenastávají a logy nejsou potřeba, ale vydat program bez kvalitního logování je velice odvážné až hloupé.

Tento projekt sám o sobě neimplementuje logování. Existuje spousta kvalitních logovacích frameworků a není potřeba vyvíjet další. Bohužel většina logovacích frameworků není připravena na unit testování a dependency injection a proto MarsTech logging je jen obálka nad logovacím frameworkem spdlog.

Zjistit Více O Projektu

MarsTech Headers

Menší projekt obsahující pouze C++ hlavičkové soubory. Většina tříd, maker a funkcí je obecných a nezapadá do žádného jiného projektu.

Na druhou stranu většina těchto tříd, maker a funkcí je používáná ostatními MarsTech projekty.

Zjistit Více O Projektu

MarsTech Dependency Injection

C++ knihovna pro usnadnění implementace dependency injection v projektech. Jedná se o techniku používanou při implementaci kódu, který lze snadno unit testovat.

Knihovna obsahuje hlavičkové soubory definující makra pro snadnou implementaci dependency injection factories a injectors. Téměř každý unit testovatelný objekt (třída) v C++ má vlastní implementaci faktorky nebo injektoru.

Zjistit Více O Projektu

MarsTech Threading

C++ knihovna pro práci s vlákny a jejich snadnou synchronizaci. Implementuje thready, worker thready, eventy i thread pooly.

Standard C++ sice obsahuje implementaci vláken (threadů) a synchronizačních objektů, ale opět nejsou připravené na snadné unit testování a jejich použití vyžaduje často opakující se kód. Použití reálných vláken v unit testech je velice složité.

Zjistit Více O Projektu

MarsTech Configuration

C++ knihonvna implementující aktivní a pasivní konfiguraci. Pasivní konfigurace je nastavení, které si program/aplikace přečte jednou při spuštění, aktivní konfiguraci může program měnit. Lze ji použít i pro udržení stavové informace.

Většina projektů si implementuje vlastní konfiguraci. Pro každý program/aplikaci znovu a znovu. To je časově neefektivní. MarsTech konfiguraci stačí vložit seznam identifikátorů a jejich defaultní hodnoty (odvozuje se od nich typ) a máte konfiguraci implementovanou. Není potřeba vyvíjet ji znovu.

Zjistit Více O Projektu

MarsTech DLL Factory

C++ knihovna pro práci s dynamickýma (na Linuxu sdílenýma) knihovnama. Stačí mít instance MarsTech DLL Factory a můžete pracovat s dynamickými knihovnama. DLL faktory zajistí načtení a držení dynamické knihovny.

Práce s dynamickýma (sdílenýma) knihovnama může být složitá a při nesprávném použití hrozí pád aplikace. DLL Factory řeší většinu problémů spojených s dynamickýma knihovnama a usnadňuje práci s něma.

Zjistit Více O Projektu

MarsTech Module

C++ knihovna pro podporu modulárního software. Obsahuje implementaci Module Manageru, který řídí spuštění a zastavení modulů (pluginů).

Často vídávám software, který se snaží být univarzální a mít veškerou funkcionalitu na jednom místě. Takový software je bohužel složitý na údržbu, testování (automatizované testování je téměř nemožné) a je problém do něj přidat novou funkcionalitu. Dříve nebo později je takový software potřeba napsat znovu. Díky modulům, které implementují jednotlivé funkcionality se dá přepisu vyhnout. Stačí změnit dotyčný modul případně přidat nový.

Zjistit Více O Projektu

Kontaktujte Mě

POŠLETE VAŠÍ ZPRÁVU

Zpráva byla odeslána.
Odeslání zprávy selhalo.