Podstawy programowania w systemie GNU/Linux
Zapraszamy do zgłaszania chęci udziału w wybranych szkoleniach. W tym celu wystarczy się z nami skontaktować telefonicznie, e-mailowo lub za pośrednictwem tej strony. Zapraszamy do rejestracji.
Charakterystyka szkolenia:
Kurs dotyczy postaw programowania w systemie GNU/Linux. Uczestnikom przedstawiony zostanie ogólny model aplikacji w systemach zgodnych z POSIX, sposoby zastosowania wywołań i funkcji systemowych, podstawowe zasady i techniki tworzenia aplikacji pracujących w środowisku graficznym oraz metody tworzenia tzw. modułów jądra (sterowniki).
Profil słuchaczy:
Kurs przeznaczony jest dla osób mających wcześniej styczność z programowaniem.
Wymagania wstępne:
Zakłada się, że uczestnicy:
- dysponują podstawową wiedzą o technikach programowania funkcyjnego (znają pojęcie funkcji, zmiennej, pętli, instrukcji warunkowej itp.)
- znają składnię języka ANSI C
- potrafią posługiwać się podstawowymi poleceniami systemu GNU/Linux Językiem programowania używanym w części warsztatowej będzie język ANSI C, chociaż zdobyta przez uczestników wiedza może być równie dobrze wykorzystana w aplikacjach tworzonych w C++. Inne języki programowania nie są szczególnie popularne w środowisku GNU.
Zagadnienia:
- podstawowe środowisko programistyczne GNU (rodzina kompilatorów gcc, zarządzanie projektami za pomocą Makefiles, debugger gdb)
- aplikacja w systemie Linux (pojęcie procesu, biblioteki dynamicznej, wywołania systemowego)
- wykorzystanie standardowej biblioteki C (libc) (includes, źródła informacji o funkcjach libc)
- model aplikacji konsolowej (standardowe wejście i wyjście w Linuksie, konwencje dotyczące przekazywania programom opcji)
- zarządzanie zasobami (praktyki oszczędzające czas procesora; zarządzanie pamięcią - przydzielanie, zwalnianie; organizacja
- programu, projektowanie pod kątem wydajności i/lub bezpieczeństwa)
- podstawowe wywołania systemowe; plik w Linuksie (pojęcie deskryptora pliku, obsługa plików dyskowych)
- pliki specjalne i ich zastosowanie w aplikacjach (systemowe kolejki FIFO, pliki urządzeń, fcntl() i ioctl())
- zarządzanie procesami (tworzenie procesów, komunikacja między wątkami, sygnały, sekcje krytyczne, semafory, współdzielone segmenty pamięci)
- programowanie sieciowe TCP/IP oraz komunikacja asynchroniczna (gniazda, funkcje związane z wykonywaniem oraz przyjmowaniem połączeń i przetwarzaniem nazw i adresów internetowych protokołu IP4, select(), epoll())
- podstawy wykorzystywania przez aplikacje środowiska graficznego X11 (biblioteka gtk+)
- glade - zautomatyzowane narzędzie do tworzenia interfejsów użytkownika korzystających z gtk+
- budowa jądra systemu Linux
- tworzenie aplikacji pracujących jako część jądra systemu (moduły) - sterowniki urządzeń, programy wykonujące operacje uprzywilejowane
- inne źródła wiedzy
Nabyta wiedza:
Po ukończeniu kursu słuchacz powinien być w stanie samodzielnie stworzyć aplikację pracującą w trybie tekstowym, wykorzystującą środowisko graficzne bądź też pracującą jako część jądra systemu. Słuchacz po ukończeniu kursu będzie znał zasady korzystania z podstawowych wywołań systemowych oraz wywołań biblioteki libc oraz będzie w stanie samodzielnie odnaleźć informacje na temat wywołań nie omówionych na kursie.