Języki programowania i technologie
Na liście poniżej znajdują się technologie, języki programowania i narzędzia, których używam bądź używałem podczas tworzenia różnego rodzaju systemów.
Niektóre z nich mają odnośniki do projektów na tej stronie.
Kliknij daną pozycję, aby zobaczyć szczegóły
Programowanie natywne
Aplikacje desktopowe i serwerowe
C, C++, ASM...
Języki programowania
C
Język C używam głównie do pisania oprogramowania na systemy z ograniczoną ilością zasobów, takie jak mikrokontrolery. Znajomość C jest przydatna do analizowania źródeł Linuksa oraz różnych projektów.
15 lat doświadczenia
Project references:
- KDhome - Niskopoziomowe oprogramowanie dla mikrokontrolerów
- KDcopter v2 - Niskopoziomowe oprogramowanie dla mikrokontrolerów
- KDcopter v3 - Niskopoziomowe oprogramowanie dla mikrokontrolerów
- System inteligentnego domu - Niskopoziomowe oprogramowanie dla mikrokontrolerów
- Sterownik LED - Oprogramowanie na STM32
- Regulator czterech silników BLDC - Oprogramowanie na STM32
C++
Używam C++ wszędzie tam, gdzie wymagana jest szybkość działania, determinizm lub niska zasobożerność. Ponadto, od momentu, gdy przesiadłem się na system Linux, w tym języku piszę również wieloplatformowe aplikacje desktopowe.
15 lat doświadczenia
Project references:
- System zarządzania sprzedażą - Aplikacja serwerowa i panel admina
- MySendFile - Aplikacja serwerowa i desktopowa
- KDhome - Niskopoziomowe oprogramowanie dla mikrokontrolerów
- GKShow - Główna aplikacja do wyświetlania efektów i efekty natywne
- KDcopter v2 - Aplikacja desktopowa do kalibracji i nadzoru lotu
- KDcopter v3 - Aplikacja desktopowa do kalibracji i nadzoru lotu
- System inteligentnego domu - Aplikacja dostępowa do portu szeregowego i system zapisywania danych
- Sterownik LED - Biblioteka na PC
C#
Najlepszy język programowania z jakim miałem do czynienia. Używając C# wraz z frameworkiem .NET napisałem wiele różnego rodzaju aplikacji.
13 lat doświadczenia
Project references:
- Notatki - Główna aplikacja
- System zarządzania sprzedażą sztucznej biżuterii - Główna aplikacja
- Oprogramowanie CAD - Główna aplikacja
- Pacman3D - Aplikacja gry
Java
Używam tego języka głównie podczas tworzenia oprogramowania na platformę Android.
12 lat doświadczenia
Project references:
- System zarządzania sprzedażą - Aplikacja mobilna
- Dłużnicy
Assembler
Używanie assemblera w dziesiejszych czasach nie ma większego sensu (poza bardzo specyficznymi problemami), jednak jego znajomość jest bardzo przydatna podczas analizy problemów oraz podczas optymalizacji aplikacji.
11 lat doświadczenia
Biblioteki
Qt
Framework dla aplikacji okienkowych.
11 lat doświadczenia
Project references:
- System zarządzania sprzedażą - Framework GUI dla terminala sprzedaży oraz panelu kontrolnego
- MySendFile - GUI dla aplikacji desktopowej
- KDcopter v2 - Aplikacje desktopowe
- KDcopter v3 - Aplikacje desktopowe
ZeroMQ
ZeroMQ wykorzystuję tam, gdzie wymagane są specyficzne wzorce komunikacji (takie jak Pub-Sub, czy asynchroniczny serwer).
7 lat doświadczenia
Project references:
- KDhome - Komunikacja między serwerem i skryptami automatyki
OpenGL
DirectX
Project references:
- Pacman3D - wersja dla .NET
iTextSharp
Project references:
- System zarządzania sprzedażą sztucznej biżuterii - Generowanie PDF
DevExpress
Project references:
- Oprogramowanie CAD - Eksport/import PDF
Programowanie na urządzenia mobilne
Tworzenie oprogramowania na platformę Android oraz narzędzia wielo-platformowe.
Android, iOS, Swift, Kotlin...
Android - Kotlin, Java
Tworzę aplikację na platformę Android będące najczęściej częścią większego systemu.
9 lat doświadczenia
Project references:
- System zarządzania sprzedażą - Framework dla aplikacji mobilnej
- Dłużnicy
iOS - Switft, Obj-C
Tworzę aplikację na platformę iOS będące najczęściej częścią większego systemu. Głównie niskopoziomowe biblioteki.
4 lata doświadczenia
Ionic / Cordova
Używam tego frameworka gdy wymagana jest wieloplatformowość.
6 lat doświadczenia
React Native
Używam tego frameworka gdy wymagana jest duża szybkość zarówno developmentu jak i działania samej aplikacji.
2 lata doświadczenia
Języki skryptowe i strony internetowe
Tworzenie strony internetowych oraz skryptów.
HTML, CSS, JavaScript, Python...
Języki programowania
Python
Główny język programowania do tworzenia wszelkiego rodzaju skrpytów użytkowych i automatyzujących. Używam języka Python również do tworzenia stron internetowych.
10 lat doświadczenia
Project references:
- KDhome - Serwer i skrypty automatyki
- GKShow - Efekty skryptowe
- KDcopter v2 - Różne skrypty
- KDcopter v3 - Różne skrypty
VBA
Wykonywałem wiele skryptów automatyzujących pracę w języku Visual Basic for Applications zanim przesiadłem się na system Linux.
13 lat doświadczenia
PHP
Kiedyś używałem tego języka do tworzenia stron internetowych (w połączeniu z frameworkami Seymfony i Zend).
12 lat doświadczenia
Project references:
- MySendFile - Główna strona internetowa
- System inteligentnego domu - Internwtowy panel do zarządzania danymi
CSS/SCSS/Less
Języki używane do stylowania stron.
13 lat doświadczenia
HTML
Używam HTML'a do tworzenia stron internetowych.
13 lat doświadczenia
Dart
Bardzo dobra alternatywa dla języka JavaScript. Wykorzystuję język Dart do tworzenia większych aplikacji niż kilka linii kodu.
6 lat doświadczenia
JavaScript
Język do tworzenia dynamicznych stron internetowych. Do tworzenia większych stron używam języka Dart kompilowanego do JavaScript. Gdy używam JavaScript, używam też jQuery.
13 lat doświadczenia
Lua
Używam tego języka w systemach wbudowanych, włączając w to oprogramowanie do programowalnych Modemów Satelitarnych.
13 lat doświadczenia
Biblioteki i frameworki
Angular
Używam Angular'a do duzych i długofalowych projektów.
4 lata doświadczenia
React
Używam React'a do specjalistycznych/zaawansowanych projektów.
4 lata doświadczenia
Django
MVC framework do tworzenia złożnonych stron internetowych i serwisów.
6 lat doświadczenia
Flask
Framework do tworzenia prostych stron internetowych.
6 lat doświadczenia
Jinja2
System szablonów dla języka Python.
6 lat doświadczenia
Symfony
Project references:
- System inteligentnego domu - Framework dla strony głównej
Systemy wbudowane
Sprzęt oraz oprogramowanie dla systemów wbudowanych.
AVR, FreeRTOS, STM32, Raspberry Pi...
Języki programowania i biblioteki
Embedded C/C++
Do tworzenia aplikacji na systemy wbudowane używam głównie języków C i C++.
11 lat doświadczenia
FreeRTOS
System operacyjny czasu rzeczywistego. Używam go w projektach gdzie system operacyjny jest niezbędny, ale także gdy powoduje uproszczenie programu.
6 lat doświadczenia
Mikrokontrolery i płytki
AVR
Używam tej rodziny mikrokontrolerów do niewielkich projektów.
STM32
Bardzo dobra rodzina mikrokontrolerów. Nadają się do praktycznie każdego zastosowania.
ESP8266
Mikrokontroler przydatny podczas tworzenia rozwiązań dla IoT.
Project references:
- KDhome - Najnowszy expander
RaspberryPI
Mam doświadczenie z tym komputerem jednopłytkowym, gdyż pisałem na niego sporo aplikacji.
Umiejętności
Projektowanie obwodów elektronicznych
Wykonałem wiele projektów i prototypów sprzętowych. Projektuję (i wytrawiam) płytki samodzielnie.
11 lat doświadczenia
Project references:
- KDhome - Płytki drukowane expandera
Bazy danych
Technologie bazodanowe i optymalizacyjne.
PostgreSQL, Redis, SQLite, MongoDB...
PostgreSQL
Używam tej bazy danych do większych i bardziej wymagających projektów.
6 lat doświadczenia
MySQL
Przed poznaniem PostgreSQL była to główna baza dancych do wielu projektów.
14 lat doświadczenia
Project references:
- System zarządzania sprzedażą - Baza danych na serwerze
- MySendFile - Baza danych do przechowywania informacji o plikach użytkownika
- System zarządzania sprzedażą sztucznej biżuterii - Baza danych
- System inteligentnego domu - Przechowywanie wskazań temperatury i innych mierzonych wartości
SQLite
Prosta, aczkolwiek bardzo przydatana baza danych. Używam jej tam, gdzie zwykłe bazy tekstowe są zbyt nieefektywne.
11 lat doświadczenia
Redis
Używam tego systemu cache tam, gdzie wymagana jest szybkość działania, dostępność i skalowalność.
6 lat doświadczenia
MongoDB
Używam bazy danych MongoDB tak, gdzie relacyjna baza danych nie spełnia oczekiwań.
5 lat doświadczenia
Administracja serwerami
Konfigurowanie oraz utrzymanie serwerów Linuksowych, skrypty użytkowe.
Linux, Ansible, Shell...
Języki programowania
Python
Gdy skrypty shell'owe stają się zbyt duże i skomplikowane, przepisuję je do Python'a, który to jest znacznie czytelniejszy i zaawansowany.
10 lat doświadczenia
Shell scripts
Nierozłączne narzędzie podczas używania, konfigurowania i zarządzania systemami Linuksowymi, szczególnie za pomocą linii poleceń i SSH.
12 lat doświadczenia
Narzędzia
Ansible
Używam tego narzędzia do automatyzacji zarządzania serwerami.
6 lat doświadczenia
Graphite
Używam tego narzędzia do zbierania różnego rodzaju statystyk. Wizualizacja za pomocą Grafana.
Git
Używam systemu kontroli wersji do każdego większego projektu.
10 lat doświadczenia
Vim
Mój główny konsolowy edytor tekstu.
9 lat doświadczenia
Linux
Debian, Ubuntu
Dystrybucje Debian i Ubuntu są moimi głównymi dystrybucjami dla serwerów i komputerów, w których wymagana jest stabilność działania.
12 lat doświadczenia
Arch Linux
Dystrybucja na moim komputerze osobistym.
10 lat doświadczenia
Wirtualizacja
libvirt/KVM
6 lat doświadczenia
VirtualBox
9 lat doświadczenia