Aktualne promocje

20/01/2017
29/09/2020
31/10/2020

Barcampy, konferencje, wydarzenia

29/11/2016 - 18:00
08/11/2016 - 08:30
04/11/2016 (Caly dzien)

RHD251 Red Hat Linux Programming

Kod szkolenia: 
RHD251
Opis szkolenia: 

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 szkolenia: 
  • 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 wobec słuchaczy: 
  • Ś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

Cena netto PLN: 
11700
Cena brutto PLN: 
14391
Cena EURO: 
2750
Czas trwania: 
5 dni
Uwagi: 

Cena w PLN jest kosztem sugerowanym. Koszt zajęć 2750 euro, przeliczenie wg kursu sprzedaży w NBP z dnia wystawienia faktury. Kurs euro=4,2547 PLN wg Tabeli nr 170/C/NBP/2014 z dnia 2014-09-02

 

Oferujemy również szkolenia w naszych ośrodkach w Krakowie i Gdyni, jak i w lokalizacjach wskazanych przez klienta.

W celu ustalenia szczegółów prosimy o kontakt na osec@osec.pl

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
Kursy poprzedzające: 

Logowanie

O osec.pl

Nasz serwis działa dzieki następującym projektom:

Drupal CMS - http://www.drupal.org
Apache HTTPD - http://www.apache.org
PHP - http://www.php.net
MySQL - http://www.mysql.com

ipv6 ready