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.

Mým hlavním programovacím jazykem je C++, ale mám zkušenosti i s JavaScriptem, HTML a PHP. Průběžně se zdokonaluji i v dalších programovacích jazycích a frameworcích.

Spolupracuji s agenturami zprostředkovávající IT kontrakty i na kontraktech a projektech na zakázku pro koncové zákazníky.

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

Martin Svoboda

Reference

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

Na některých projektech jsem pracoval přímo pro konkrétního zákazníka. Na dalších projektech jsem pracoval přes personální agentůry jako kontraktor.

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.