Formularz kontaktowy

Close

    Szkolenie

    Osoba zgłaszająca


    RHD251 Red Hat Linux Programming

    RHD251

    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.

    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

    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

    For more details, please contact us at osec@osec.pl

    Note: The course outline is subject to change as technology advances and the underlying job evolves. For questions or confirmation on a specific objective or topic, please contact us at osec@osec.pl
    Cena netto:13184 PLN(3025 EUR)Cena brutto:16216.32 PLNOpis

    Kurs przyjęty do powyższej kalkulacji 1 EUR = 4.3583 PLN – tabela nr. 042/C/NBP/2024, z dnia 2024-02-27. Obowiązująca od: 2024-02-28. Cena w PLN jest orientacyjna (wyliczana z EUR/USD wg kursu sprzedaży NBP z dnia wystawienia faktury). Przyjmujemy wpłaty w PLN lub EURO.

    Uwaga

    Oferujemy szkolenia wirtualne, self-paced oraz stacjonarne (w Warszawie i w lokalizacjach wskazanych przez klienta).
    W celu ustalenia szczegółów prosimy o kontakt na osec@osec.pl

     

     

    Opis:

      – Termin gwarantowany (GTR)

    Terminy