Praktyczne zastosowanie bibliotek Boost oraz nowych standardów C++
Czas trwania szkolenia:4 dni (32h)
Kod kursu:CPP/BOOST
Poziom zaawansowania:
Szkolenie na zamówienie
Szkolenie dostosowane do potrzeb Twojego zespołu. Dostępne wyłącznie na zamówienie.
- Dostosowany program
- Indywidualna wycena
- Dowolny termin
O szkoleniu Praktyczne zastosowanie bibliotek Boost oraz nowych standardów C++
W cenie otrzymasz:
- Materiały szkoleniowe
- Certyfikat ukończenia szkolenia
- W przypadku szkolenia w trybie stacjonarnym zapewnimy Ci również lunch oraz sprzęt niezbędny do nauki
Wymagania
- Biegłe posługiwanie się wybranym środowiskiem IDE (Eclipse, NetBeans, Vim)
- Znajomość koncepcji programowania obiektowego, systemowego i aplikacyjnego
- Biegła znajomość narzędzi do tworzenia aplikacji z rodziny gcc i binutils
- Umiejętność posługiwania się narzędziem debuggera
- Znajomość koncepcji związanych z programowaniem w języku C++ na poziomie średnio i zaawansowanym
- Dodatkowo mile widziana jest znajomość aspektów sprzętowych platformy x86 (przydzielanie i zarządzanie pamięcią, alokacja rejestrów, konwencje wywołań, optymalizacje)
Zalety
- Praktyka przed teorią - wszystkie szkolenia technologiczne prowadzone są w formie warsztatowej. Konieczna teoria jest wyjaśniana na przykładzie praktycznych zadań
- Konkretne umiejętności - w ramach każdego szkolenia rozwijamy praktyczne umiejętności związane z daną technologią i tematyką
- Nauka z praktykami - wszyscy trenerzy na co dzień pracują w projektach, gwarantuje to dostęp do eksperckiej wiedzy i praktycznego know-how
Cele szkolenia
- Kształcenie umiejętności oraz rozwijanie wiedzy dotyczącej tworzenia zaawansowanych rozwiązań w języku C++
- Osadzenie narzędzi i procesów tworzenia oprogramowania w realiach współczesnych wymagań Inżynierii Oprogramowania
- Dokonanie konsolidacji wiedzy i uzupełnienie braków w kompetencjach w kontekście standardu C++17
- Testowanie jednostkowe aplikacji w języku C++
- Tworzenie aplikacji z użyciem bibliotek składowych Boost
- Zapoznanie ze współczesnymi bibliotekami języka C++ przetwarzającymi dane w różnorodnych formatach
Program
Algorytmy i iteratory biblioteki standardowej - uzupełnienia związane ze standardami C++11, C++14 i C++17
- Wydajność algorytmów standardowych
- Stosowanie algorytmów i iteratorów
- Algorytmy i kontenery dostępne w ramach standardów C++11, C++14 i C++17
- Modyfikacja działania algorytmów standardowych
STL - uzupełnienie i przypomnienie wiedzy
- Szablony - stosowanie i reguły dopasowań
- Reguły SFINAE (ang. substitution failure is not an error)
- Wzorzec „zadziwiająco często powracającego szablonu” CRTP (ang. curiously recurring template pattern)
- Trik Bartona-Nackmana (ang. Barton-Nackman trick)
- Kruczki i sztuczki związane ze stosowaniem szablonów
- Szablon o zmiennej liczbie argumentów (ang. variadic templates)
- Szablony zagnieżdżone
Mechanizmy i elementy standardu C++17
- Manipulacja typem
- Nowe słowa kluczowe
- Mechanizmy kontroli definiowania i instancji klas
- Wyjątki i obsługa w środowisku wielowątkowym
- Rozszerzenia biblioteki standardowej
- Wyrażenia lambda
Cechy typów (ang. type traits)
- Pojęcie cechy typu i manipulowanie nim
- Cechy typów w bibliotece standardowej
- Rozwiązywanie najczęstszych problemów z użyciem cechy typów
- Własne cechy typów - tworzenie i stosowanie
- Rozszerzenia C++17
Wykładnie - praktyczne stosowanie
- Pojęcie wykładni (ang. class policy)
- Wykładnie - wady i zalety
- Tworzenie i stosowanie własnych wykładni
- Implementacja popularnych wzorców projektowych z użyciem wykładni
- Programowanie aspektowe, a wykładnie
Inteligentne wskaźniki
- Rodzaje inteligentnych wskaźników
- Problem własności/przynależności
- Stosowanie inteligentnych wskaźników w codziennej pracy
Testowanie aplikacji w języku C++
- TDD w języku C++ - zasady i stosowanie
- xUnit - elementy i stosowanie
- Prawidłowe tworzenie testów
- Zasady TDD a biblioteka cppunit
- Warsztat praktyczny testowania
Boost Test - biblioteka wspierająca testowanie
- Przegląd elementów Boost Test
- Implementacja testów w bibliotece Boost Test
- Testy rozszerzone
Boost - przegląd przydatnych bibliotek
- Zakresy zastosowań bibliotek Boost
- Specyfika implementacji i stosowania
- Przykładowe zastosowania bibliotek
- Biblioteki Boost a nowe standardy języka C++
Boost Regex
- Zakres stosowania Boost Regex
- Typowe operacje związane z analizą wyrażeń regularnych
- Kruczki i sztuczki zastosowania Boost Regex
- Optymalizacja mechanizmów biblioteki we własnych aplikacjach
Boost Property Tree
- Przeznaczenie biblioteki Boost Property Tree
- Zakres wydajnego stosowania Boost Property Tree
Boost Meta State Machine/Boost Statechart
- Paradygmat programowania maszyny stanu
- Wsparcie dla programowania maszyny stanu dostarczane wraz z bibliotekami z rodziny Boost
- Warsztat implementacji maszyny stanu
Boost Algorithm
- Boost Algorithm jako uzupełnienie biblioteki standardowej
- Algorytmy przeszukiwania
- Algorytmy pracujące na sekwencjach
- Warsztat implementacji
Boost Asio
- Asynchroniczny dostęp do danych z użyciem Boost Asio
- Wsparcie komunikacji sieciowej
- Asio a przesyłanie danych sieciowych
- Sygnały
- Warsztat implementacji
Boost Filesystem
- Przenośność zapewniana przez Boost Filesystem
- Boost Filesystem a nowe standardy języka C++
- Przechwytywanie błędów w Boost Filesystem
- Warsztat implementacji
Boost Interprocess
- Współdzielenie struktur pomiędzy procesami
- Synchronizacja pracy procesów
- Alokatory i zarządzanie pamięcią
- Boost Interprocess a inteligentne wskaźniki
Boost Intrusive
- Wydajność i zalety struktur intruzywnych
- Intruzywne wersje kontenerów
- Analiza wydajności tradycyjnych rozwiązań i rozwiązań Boost Intrusive
Boost MPL
- Metaprogramowanie - pojęcia, algorytmy i warsztat
- Szybkie wprowadzenie do metaprogramowania
- Metaprogramowanie a rzeczywiste wyzwania
- Warsztat implementacji
Profilowanie aplikacji w języku C++
- Pojęcie wąskich gardeł w aplikacji
- Mechanizmy i rodzaje profilowania aplikacji w C++
- Warsztat implementacji