Cena Netto:
11 641.85 PLN
2 750.00 EUR
Brutto: 14 319.48 PLN
Kurs przyjęty do powyższej kalkulacji 1 EUR = 4,2334 PLN -
tabela nr. 072/C/NBP/2018, z dnia z dnia 2018-04-11.

Cena w PLN jest orientacyjna (wyliczana z EUR/USD wg kursu sprzedaży NBP z dnia wystawienia faktury).
Nadchodzące szkolenia:
Generuj PDF

Zapisz się

Opis

Kurs przygotowuje do tworzenia aplikacji pracujących w środowisku systemu operacyjnego Red Hat Enterprise Linux. Przez pięć dni zajmujemy się koncepcjami, poznawaniem wewnętrznych mechanizmów API systemu operacyjnego oraz ich wykorzystywaniem w realnych aplikacjach. Kurs kładzie nacisk na realistyczne labolatoria oraz ćwiczenia. W ramach zajęć kształcimy umiejętności i rozwijamy wiedzę dotyczącą tworzenia wydajnych aplikacji we wszystkich dystrybucjach systemu Linux.

Cel

  • Wykształcenie umiejętności obejmujących tworzenie wydajnych aplikacji na platformę Red Hat Enterprise Linux.
  • Zapoznanie się z właściwościami środowiska pracy programisty systemowego Linux
  • Dostarczenie wiedzy dotyczącej wywołań bibliotek i jądra systemu

Grupa docelowa:

Wiedza i rozwijane umiejętności w ramach zajęć, będą przydatne twórcom aplikacji tworzonych także w systemach Windows i przenoszących swoje programy do środowiska systemu operacyjnego Linux.

Uwagi:

Szkolenie trwa: 5 dni.
Oferujemy szkolenia w naszych ośrodkach w Warszawie, Wrocławiu, Krakowie i Gdyni, jak i w lokalizacjach wskazanych przez klienta. 
W celu ustalenia szczegółów prosimy o kontakt na osec@osec.pl

Wymagania:

  • Średnio zaawansowana znajomość języka C.

  • Wiedza i umiejętności tożsame z zakresem certyfikaty RHCSA lub równoważnego (praca w środowisku tekstowym systemu GNU/Linux lub z rodziny Unix).

  • Tworzenia skryptów w środowisku powłoki systemowej.

  • Znajomości zasad pracy w środowisku edytorów systemowych vi lub emacs

Konspekt

  1. GCC – Narzędzia GNU Compiler Collection
    • GNU Compiler Collection
    • Historia GCC
    • Cztery etapy przetwarzania programu w GCC
    • Wstrzymywanie pracy kompilatora na wybranych etapach
    • Kompilacja programu w języku C
    • Właściwości i mechanizmy preprocesora
    • Predefiniowane makra i symbole preprocesora
    • Ostrzeżenia i rozszerzenia kompilatora
    • Optymalizacja
    • Konsolidacja (ang. Linking) obiektów do programu
  2. Automatyzacja tworzenia aplikacji z użyciem narzędzia Make
    • Wstęp do make(1)
    • Zasady działania programu make
    • Składnia definicji celu w pliku Makefile
    • Przykłady: Pierwsze kroki z plikiem Makefile
    • Optymalizacja pliku Makefile
    • Cele domyślne (ang. Implicit Rules)
    • Przykład: Prostota jest lepsza w pliku Makefile
    • Zmienne
    • Definiowanie zmiennych
    • Przykład: Tworzenie Makefile z użyciem zmiennych
    • Zmienne automatyczne
    • Cele specjalne
    • Definiowanie przydatnych celów zastępczych
  3. Biblioteka GNU libc i wywołania systemowe
    • Właściwości i mechanizmy biblioteki glibc
    • Standardy bibliotek libc
    • GNU C Library - glibc
    • Funkcje biblioteki kontra wywołania systemowe
    • Użycie wywołań systemowych
    • Obsługa błędów z użyciem errno
    • Dekodowanie informacji o błędach poprzez errno
    • Użycie narzędzia systrace
  4. Argumenty wywołania programu i środowisko
    • Start programu
    • Użycie argc/argv
    • Obsługa opcji z użyciem getopt()
    • Obsługa opcji ,,długich'' z użyciem getopt_long()
    • Środowisko
    • Manipulowanie zmiennymi środowiska
    • Zakończenie działania programu
    • Rejestrowanie procedury obsługi zakończenia programu
  5. Tworzenie bibliotek
    • Dlaczego używamy bibliotek?
    • Biblioteki statyczne i współdzielone
    • Plusy bibliotek statycznych
    • Plusy bibliotek współdzielonych
    • Tworzenie biblioteki statycznej
    • Użycie biblioteki statycznej
    • Tworzenie biblioteki współdzielonej
    • Użycie biblioteki współdzielonej
    • Zarządzanie bibliotekami współdzielonymi
    • Miejsca instalacji i dostępność bibliotek
    • Narzędzie ldconfig
  6. Działania związane z czasem
    • Jak jest obsługiwany czas w systemie?
    • Typy danych związanych z czasem
    • Czas rzeczywisty
    • Rzutowanie i konwersja typu time_t
    • Konwersja struktury tm
    • Czas w procesie
    • Arytmetyka związana z czasem
    • Zegary pracujące z dokładnością sekund
    • Zegary drobnoziarniste (ang. Fine-Grained Timers)
    • Zegar czasu rzeczywistego (ang. Real Time Clock)
  7. Zarządzanie procesem
    • Czym jest proces?
    • Zależności pomiędzy procesami
    • Tworzenie procesów potomnych
    • Uruchamianie innego kodu w procesie potomnym
    • Funkcje z rodziny exec*()
    • Oczekiwanie na działanie procesu potomnego (wait())
    • Oczekiwanie - dokładniej
    • Zmiana priorytetu procesu i poziomy uprzejmości (ang. nice)
    • Priorytety czasu rzeczywistego
  8. Operacje na pamięci
    • Alokacja i zwalnianie pamięci
    • Wyrównywanie struktur w pamięci
    • Blokowanie przestrzeni danych w pamięci
    • Inicjalizacja i kopiowanie pamięci
    • Porównywanie danych w pamięci
  9. Odpluskwianie (ang. Debugging)
    • Jakie działania wykonuje mój program?
    • Odpluskwianie na poziomie źródeł
    • Uruchamianie gdb
    • Wstęp do użycia gdb
    • Wyświetlanie zawartości i zmiana pamięci
    • Biblioteka debuginfo
    • Użycie gdb dla działającego procesu
    • Użycie gdb do autopsji w załamanym programie
    • Biblioteka ElectricFence
    • Odpluskwianie z użyciem valgrind
    • Profilowanie programu i strojenie wydajności
  10. Proste operacje na plikach
    • Strumień kontra wywołania systemowe
    • Otwieranie i zamykanie strumienia
    • Funkcje wejścia/wyjścia w strumieniu
    • Status i błędy strumienia
    • Pozycja kursora w strumieniu plikowym
    • Buforowanie strumienia
    • Pliki tymczasowe
    • Otwieranie i zamykanie deskryptorów plików
    • Operacje wejścia/wyjścia na deskryptorach plików
    • Repozycjonowanie w deskryptorach plików
    • Konwersje strumienia i deskryptora pliku
    • cat z użyciem wywołań ANSI I/O
    • cat z użyciem wywołań POSIX I/O
  11. Komunikowanie się z użyciem potoków
    • Wstęp do mechanizmu potoków
    • Standardowe wywołania wejścia/wyjścia: popen()/pclose()
    • Użycie popen()/pclose()
    • Wywołanie systemowe: pipe()
    • Użycie pipe()
    • Nazwane potoki
    • Użycie nazwanych potoków
    • Co warto jeszcze wiedzieć?
  12. Zarządzanie sygnałami
    • Czym jest sygnał w środowisku GNU/Linux
    • Blokowanie i sprawdzanie sygnałów
    • Praca z użyciem zbioru sygnałów
    • Przykład blokowania sygnału
    • Przechwytywanie sygnału z użyciem sigaction()
    • Przykład sigaction()
    • Przechwytywanie sygnału z użyciem signal()
    • Wysyłanie sygnału
    • Sygnały czasu rzeczywistego
  13. Programowanie z użyciem wątków
    • Wstęp do programowania wielowątkowego
    • Klasy aplikacji wielowątkowych
    • Tworzenie programu wielowątkowego
    • Tworzenie wątku
    • Identyfikacja wątku
    • Synchronizacja i przyłączanie
    • Odłączanie wątku
    • Zatrzymywanie wątku
    • Synchronizacja z użyciem wzajemnego wykluczania (ang. Mutex)
    • Użycie struktur Mutex
    • Blokady zapisu i odczytu
    • Zmienne warunkowe
    • Użycie zmiennych warunkowych
    • Ciekawostki i haczyki przy używaniu zmiennych warunkowych
    • Co warto jeszcze wiedzieć?
  14. Zaawansowane operacje na plikach
    • Operacje na katalogach
    • Operacje na systemie plików
    • Multipleksowane wejście/wyjście z użyciem select()
    • Różne funkcje wejścia/wyjścia
    • Operacje wejścia/wyjścia mapowane na pamięci
    • Użycie operacji wejścia/wyjścia mapowanych na pamięci
    • Blokowanie plików
  15. Komunikacja międzyprocesowa (ang. IPC)
    • Czym jest Interprocess Communication (IPC)?
    • Wstęp do wywołań POSIX IPC
    • Pamięć współdzielona POSIX
    • Semafory POSIX
    • Kolejki komunikatów POSIX
    • Wstęp do System V IPC
    • Pamięć współdzielona System V IPC
    • Tablice semaforów System V IPC
    • Kolejki komunikatów System V IPC
  16. Obsługa komunikacji sieciowej
    • Wstęp do podsystemu sieciowego Linux
    • Podstawowe wywołanie socket()
    • Funkcje klienta
    • Specyfikowanie adresu IPv4
    • Kolejność bajtów: sieciowa i hosta
    • Przykładowy klient TCP/IP
    • Funkcje konwersji adresów
    • Użycie getaddrinfo()
    • Funkcje serwera
    • Przykładowy serwer TCP/IP
    • Komunikacja datagramowa z użyciem protokołu UDP
  17. Praca w społeczności
    • Śledzenie pracy członków zespołu i społeczności
    • Główne wytyczne
    • Tworzenie społeczności
    • Licenses
    • GPL
    • LGPL
    • BSD
    • Creative Commons