Wielkość: px
Rozpocząć pokaz od strony:

Download "http://lpmagazine.org/pl/download"

Transkrypt

1

2

3 Szanowni Czytelnicy, Zapraszamy również do pobierania numerów archiwalnych Linux+, począwszy od numeru 1/2005

4 10/2010 SPIS TREŚCI JĄDRO LINUXA 10 Linux Kernel: Podróż do wnętrza systemu. Część trzecia (3/7): Podstawy programowania modułów jądra Rafał Kułaga Pośród użytkowników systemów operacyjnych opartych na jądrze Linux panuje przekonanie, iż analiza oraz tworzenie kodu jądra jest czynnością niezwykle trudną i zarezerwowaną dla wybranych. Czynności te wymagają bowiem rezygnacji z wysokiego poziomu abstrakcji oferowanego przez wykorzystywane obecnie frameworki programistyczne na rzecz bliższego zapoznania się z architekturą jądra i wykorzystywanego sprzętu. Celem cyklu, którego kontynuacją jest ten artykuł, jest zapoznanie Czytelnika z tymi zagadnieniami oraz omówienie tworzenia modułów jądra, w tym sterowników urządzeń. Zapraszam do lektury! Reklama ROZWIĄZANIA 18 Programowanie wieloplatformowych aplikacji w Linuksie Paweł Wolniewicz W dobie szybkiego wzrostu popularności aplikacji obsługiwanych przez przeglądarkę www tworzenie przenośnego, wieloplatformowego kodu traci na znaczeniu. Sporo problemów ubywa także dzięki językowi Java. Procesy te nie stanowią jednak panaceum na wszelkie kłopoty związane z tworzeniem przenośnego oprogramowania, zwłaszcza tego, które bogato korzysta z multimedialnych możliwości komputerów. 28 Thrust Cudowne Wzorce Marek Sawerwain Jeśli posiadamy kartę graficzną NVIDIA w wersji przynajmniej 88xx, to można za pomocą pakietu CUDA wykorzystać moc obliczeniową karty graficznej do obliczeń uniwersalnych. Choć ostatecznie stosowanie technologii CUDA we własnym programie nie jest zbytnio utrudnione, to można też stosować dodatkowe pakiety, któ-

5 SPIS TREŚCI re wprowadzają dalsze ułatwienia. Pakiet Thrust, poprzez zbiór szablonów podobnych do STL, wprowadza dalsze ułatwienia w korzystaniu z mocy drzemiącej w układach graficznych. 36 Testy wydajnościowe za pomocą Apache Jmeter Kamil Porembiński Budując nowy serwis internetowy, stawiając różne usługi na serwerze, warto jest przetestować nowe rozwiązania pod względem wydajności. Przydatna do tego będzie aplikacja Apache JMeter napisana w Javie. 40 Drupal Features Grzegorz Bartman Jeśli zajmujesz się tworzeniem serwisów internetowych opartych o system Drupal i kiedykolwiek miałeś problemy z przenoszeniem funkcjonalności pomiędzy wersją deweloperską a produkcyjną serwisu, to ten artykuł jest dla Ciebie. Z artykułu dowiesz się, jak zarządzać ustawieniami Drupala, które są zapisywane w bazie danych. Po przeczytaniu tekstu będziesz wiedział, jak szybko i sprawnie wdrożyć nową funkcjonalność lub ewentualnie przywrócić poprzednią wersję funkcjonalności w serwisie. BEZPIECZEŃSTWO 46 Cała prawda o certyfikatach SSL Michał Spławski Protokół SSL po raz pierwszy pojawił się w 1994 roku jako dzieło firmy Netscape Corporation. W ciągu kolejnych lat został dopracowany i jest powszechnie wykorzystywany w przeglądarkach internetowych, klientach poczty elektronicznej i wielu aplikacjach. Certyfikaty SSL najczęściej są wykorzystywane do bezpiecznej transmisji danych, jaka zachodzi pomiędzy przeglądarką internetową odwiedzającego daną stronę a serwerem, który tę stronę obsługuje. Oznacza to, że żadna osoba trzecia, niebędąca nadawcą ani odbiorcą transmisji, przynajmniej w teorii, nie będzie w stanie ich rozszyfrować. 48 Jak uwiarygodnić swój sklep w sieci? Paweł Sankowski Podnieś zaufanie swoich klientów, używając certyfikatów SSL. Poznaj mechanizmy szyfrowania i rodzaje certyfikatów. Część 2 RECENZJE Miesięcznik Linux+ (12 numerów w roku) jest wydawany przez Software Press Sp. z o.o. SK Redaktor naczelny i korekta: Tomasz Łopuszański tomasz.lopuszanski@software.com.pl Skład i łamanie: Tomasz Kostro Kierownik produkcji: Andrzej Kuca andrzej.kuca@software.com.pl Stali współpracownicy: Andrzej Jankowski, Roger Zacharczyk, Leszek Konka, Piotr Brzózka, Robert Romaniuk, Sławomir Iwanek Adres korespondencyjny: Software Press Sp. z o.o. SK, ul. Bokserska 1, Warszawa, Polska tel , fax cooperation@software.com.pl Dział reklamy: adv@software.com.pl Redakcja dokłada wszelkich starań, by publikowane w piśmie i na towarzyszących mu nośnikach informacje i programy były poprawne, jednakże nie bierze odpowiedzialności za efekty wykorzystania ich; nie gwarantuje także poprawnego działania programów shareware, freeware i public domain. Wszystkie znaki firmowe zawarte w piśmie są własności odpowiednich firm. Zostały użyte wyłącznie w celach informacyjnych. Reklama 54 Manta MM814 Sky USB Game Pad Maciej Mroziński 58 Rockey dongles Osoby zainteresowane współpracą prosimy o kontakt: cooperation@software.com.pl 5

6 Dział prowadzi Andrzej Jankowski AKTUALNOŚCI Cisco kupuje system zarządzania materiałami wideo Koncern Cisco przejmie firmę Extend- Media specjalizującą się w systemach do zarządzania materiałami wideo czytamy w komunikacie prasowym amerykańskiego producenta sprzętu sieciowego. Szczegółów finansowych transakcji, która ma zostać sfinalizowana jeszcze w 2010 roku, nie ujawniono. Większość pracowników kupionego przedsiębiorstwa zasili wydział Service Provider Video Technology w Cisco. Pozostała część załogi znajdzie przypuszczalnie zatrudnienie w dziale marketingu nowego właściciela.telewizja i wideo transmitowane przez Internet co najmniej od dziesięciu lat stanowią dla Cisco ważny rynek przyszłości. Opracowany przez firmę ExtendMedia system zarządzania treścią (Content Management System, CMS) OpenCA- SE jest przeznaczony dla dostawców treści rozpowszechniających materiały wideo w Sieci. Ten CMS umożliwia równoczesne zarządzanie klipami wideo przeznaczonymi dla różnych urządzeń końcowych, łączenie ich z kampaniami reklamowymi oraz sprzęganie z sieciowymi systemami płatności. Wiadomość pobrana z heise-online.pl Tendencja wzrostowa w sektorze serwerów wciąż trwa Od kwietnia od czerwca 2010 roku na świecie przeznaczono 10,9 miliarda dolarów na systemy serwerowe. W porównaniu z drugim kwartałem ubiegłego roku odpowiada to wzrostowi o 11 procent, donoszą analitycy z IDC. Po historycznych spadkach w 2009 roku teraz zmiany tendencji nie da się nie zauważyć: badacze odnotowali największy wzrost obrotów w tym sektorze od ponad 7 lat. W zestawieniu z analogicznym okresem w roku 2009 liczba sprzedanych serwerów wzrosła o prawie 24 procent, przy czym większość zarówno rynku, jak i wzrostu należy do systemów x86. Platforma x86 stale umacnia swoją pozycję nie tylko pod względem sprzedanych urządzeń (1,8 miliona), ale także obrotów (35,3 procent) z wynikiem 7 miliardów dolarów stanowi ona ponad 64 procent obrotów uzyskiwanych w tym sektorze. Wiadomość pobrana z heise-online.pl e-podpis pod Linuxem CERTUM PCC jako pierwsze w Polsce centrum certyfikacji udostępniło funkcjonującą w środowisku systemu operacyjnego Linux, aplikację do składania i weryfikacji bezpiecznego podpisu elektronicznego. To znaczący krok w kierunku rozwoju niezależności technologicznej podpisu elektronicznego, dzięki któremu także zwolennicy alternatywnych systemów operacyjnych będą mogli posługiwać się e-podpisem. Udostępniona wersja beta aplikacji procertum SmartSign, została przetestowana w środowisku systemu operacyjnego Linux Ubuntu. Aplikacja wymaga stosowania kart kryptograficznych jako nośników certyfikatów kwalifikowanych w związku z czym, udostępniono także niezbędne sterowniki do ich obsługi. Pełna funkcjonalność procertum SmartSign, analogiczna jak w wersji dla środowiska Windows, zapewnia możliwość składania bezpiecznego podpisu elektronicznego w środowisku Linux zgodnie z wymogami Ustawy o podpisie elektronicznym. Wszystkie osoby zainteresowane dalszym rozwojem funkcjonalnym ww. aplikacji zapraszamy do przesyłania na adres: linux@unizeto.pl swoich sugestii lub spostrzeżeń wynikających z użytkowania procertum SmartSign. Aplikację procertum SmartSign w wersji beta, dla środowiska Linux, można pobrać z portalu certum.pl zakładki Oprogramowanie < CERTUM PCC jako jedyne z polskich centrów certyfikacji znajduje się na liście zaufanych na świecie urzędów certyfikacyjnych i posiada prawo do posługiwania się pieczęcią WebTrustSM/TM. Dzięki temu certyfikaty wydawane przez CERTUM PCC posiadają status zaufanych w skali globalnej. CERTUM PCC ( wydaje certyfikaty kwalifikowane i niekwalifikowane, a w tym certyfikaty SSL służące do zabezpieczania transmisji danych np. w bankowości elektronicznej oraz e-commerce. Na wzrost zainteresowania certyfikatami SSL wpływa zarówno konieczność zabezpieczania danych - zwłaszcza osobowych - przesyłanych drogą elektroniczną, jak i potrzeba uwierzytelnienia firmowych i transakcyjnych serwisów WWW. Dowiedz się więcej na Wydano Gnasha Nius sprzed paru dni, ale warty odnotowania. Gnash, czyli GNU Flash Player na licencji GPL 3, został przed paroma dniami wydany.gnash jest przenośną aplikacją i działa na m. in. na platformach GNU/Linux (w tym systemach wbudowanych) i BSD na architekturach x86, ARM, MIPS i PowerPC. Gnash dostarcza samodzielny odtwarzacz, jak również wtyczki do popularnych przeglądarek. Autorzy chwalą się, że odtwarzacz jest w 100 procentach kompatybilny z YouTube. Wiadomość pobrana z osnews.pl 6 10/2010

7 Aktualności Dział prowadzi Andrzej Jankowski Szybki Internet dla wschodniej Afryki Wschodnioafrykańskie państwa otrzymały nowe, szybkie połączenie z Internetem. Mający długość 10 tysięcy kilometrów East Africa Submarine Cable System (EASSy) zapewnia przepustowość wynoszącą 3,84 Tb/s zamiast planowanych wcześniej 640 Gb/s. Słabo rozwinięta infrastruktura teletransmisyjna Czarnego Lądu sprawiła kłopoty dziennikarzom relacjonującym niedawne mistrzostwa świata w piłce nożnej. Punkty przyłączeniowe kabla na wybrzeżu RPA, Mozambiku, Madagaskaru, Komorów, Tanzanii, Kenii, Somalii, Dżibuti i Sudanu pozwalają obsługiwać 21 krajów, w których mieszka około 250 milionów potencjalnych internautów. Wymianę danych z innymi państwami na kontynencie zapewniają stacje w RPA, Sudanie, Dżibuti i Kenii. Wiadomość pobrana z heise-online.pl Konferencja Open World Forum 2010 w Paryżu Trzecia edycja jednej z największych na świecie konferencji poświęconych tematyce otwartego oprogramowania odbędzie się w Paryżu w dniach 30 września 1 października Konferencja stanowi forum dyskusji decydentów, przedstawicieli firm oraz społeczności Wolnego/Otwartego Oprogramowania i ma na celu wzajemne oddziaływanie różnych środowisk i stymulowanie otwartych inicjatyw, zarówno technologicznych, ekonomicznych, jak i społecznych. Wśród prelegentów znaleźli się przedstawiciele społeczności i inicjatyw na rzecz wolnego i otwartego oprogramowania, takich jak Open Source Initiative, Apache Software Foundation, Eclipse Foundation, Mozilla, OW2, OpenOffice.org czy Eric Steven Raymond, jedna z czołowych postaci ruchu open source. Pojawią się również przedstawiciele czołowych firm, na przykład Google, Oracle, VP Red Hat i wielu innych. Pełna lista prelegentów zawiera aż 150 nazwisk osób związanych z otwartym oprogramowaniem. Wiadomość pobrana z osnews.pl Reklama Nowy rodzaj elektronicznego procesora Firma Lyric Semiconductor zaprezentowała pierwszy na świecie procesor probabilistyczny. Jego działanie polega na wykorzystaniu sygnałów elektrycznych, które reprezentują wartości prawdopodobieństwa, nie zaś obecnie stosowane logiczne zera i jedynki. Obecnie na rynku procesorów dominuje sztywna i jednoznaczna logika binarna. Nawet procesy i obliczenia analogowe jak rachunek prawdopodobieństwa są dziś jedynie symulowane. Jednak może już niedługo będzie można tego typu obliczenia wykonywać bezpośrednio. Firma Lyric Semiconductor stworzyła procesor całkiem nowego typu: probabilistyczny. Stany na jego wejściach, wyjściach i bramkach nie reprezentują logicznego 0 i 1, ale ich prawdopodobieństwo. Binarne bramki logiczne zastąpione są tzw. bramkami bayesowskimi. Jak mówi pomysłodawca i założyciel firmy, Ben Vigoda, trzeba było zaczynać całkowicie od zera. Podstawą teoretyczną były jego badania przeprowadzone podczas pisania pracy doktorskiej. Wiadomość pobrana z osnews.pl

8 Dział prowadzi Andrzej Jankowski AKTUALNOŚCI Ruboto: Tworzenie aplikacji dla Androida w języku Ruby Jednym z projektów, które Google wspomagał w ramach inicjatywy Summer of Code, był Ruboto. Jest to ambitna próba stworzenia implementacji Ruby ego pozwalającej na uruchamianie aplikacji działających w systemie operacyjnym Android. Bazę dla opublikowanego właśnie pierwszego wydania Ruboto stanowi JRuby, czyli implementacja Ruby ego przeznaczona dla maszyny wirtualnej Javy (JVM). Projekt nie jest jeszcze tak zaawansowany, by w najbliższym czasie mógł zastąpić Javę przyznaje jego programista Daniel Jackoway. Upublicznione wydanie ma status super-alpha pozwala ono pisać w Rubym komponenty typu Activities, BroadcastReceivers i Services. Jak zapewniają twórcy, pozostałe klasy można dodawać w prosty sposób. Następne wersje mają zawierać lepszą dokumentację, poprawiony mechanizm powiadamiania o błędach, prostszą konfigurację i plug-iny dla popularnych szablonów. Warto zaznaczyć, że korzystanie z Ruboto nie pozwala jeszcze na tworzenie samodzielnych aplikacji dla Androida. Za każdym razem należy uruchomić interpreter i ręcznie wczytać odpowiedni skrypt. Wiadomość pobrana z heise-online.pl Dwurdzeniowy HTC Scorpion ujrzał światło dzienne Na temat telefonu HTC Scorpion od dawna słyszy się plotki. Jest o czym plotkować, bowiem ma być to pierwszy smartphone z dwurdzeniowym procesorem Snapdragon taktowanym zegarem bagatela 1.5 GHz! Jeśli informacje potwierdzi amerykański Verizon, w którym oferowany ma być telefon, można śmiało powiedzieć, że flagowy telefon z Androidem ma dopiero nadejść. Dwurdzeniowy układ zdeklasować ma bowiem każde obecne na rynku urządzenie z Androidem na pokładzie. Tajemniczy HTC stylistycznie przypomina model Evo 4G. Wyposażony ma być w 4.3 calowy ekran, kamerę do wideorozmów oraz główny aparat o rozdzielczości 8MP z podwójnym podświetleniem LED. Ciekawym dodatkiem jest odchylana nóżka pozwalająca ustawić telefon w pozycji pozwalającej wygodnie oglądać wideo. Scorpion ma być wyposażony w Androida w wersji co najmniej 2.2. Jeśli premiera odbędzie się wystarczająco późno, można będzie liczyć na integracje najnowszej wersji 3.0. Wiadomość pobrana z Google ma nowy silnik wyszukiwania w czasie rzeczywistym Spora metamorfoza silnika wyszukiwania w czasie rzeczywistym Google - oddzielna strona główna, wyszukiwanie na bieżąco i również za pośrednictwem Google Alerts to tylko niektóre nowości. Wyszukiwanie w czasie rzeczywistym w Google wprowadzone zostało pod koniec ubiegłego roku. Pozwala ono na przeszukiwanie wiadomości w serwisach społecznościowych takich jak Facebook, Twitter czy MySpace - są one indeksowane na specjalnych zasadach, dzięki czemu już kilka sekund po wysłaniu wiadomości jest ona dostępna w Google. Do tej pory użytkownicy mogli z poziomu strony wyników przełączyć się na tryb wyszukiwania w czasie rzeczywistym. Teraz Google poszedł o krok dalej. Uruchomiono oddzielną stronę główną Google, które wyszukuje informacje tylko w wiadomościach serwisów społecznościowych. Najciekawszą funkcją jest przeszukiwanie na bieżąco - nawet po wyświetleniu wyników pierwszego wyszukiwania Google cały czas próbuje je uaktualniać, dzięki czemu dodana później wiadomość pojawia się na liście niemal w czasie rzeczywistym i bez konieczności odświeżania wyników. Ponadto użytkownik widzi wykres aktywności danego tematu w zależności od daty i godziny, może też zawęzić wyniki do wiadomości z danego obszaru geograficznego. Do dyspozycji oddano także nowy widok konwersacji grupujący wiadomości będące odpowiedziami na czyjeś posty. Aktualizacja dotknęła również usługę Google Alerts umożliwiającą otrzymywanie powiadomień o nowych wynikach wyszukiwania dla zdefiniowanych wcześniej fraz. Teraz można skonfigurować usługę tak, by monitorowała także serwisy społecznościowe, przez co alerty mogą przychodzić tuż po dodaniu wpisu na Twitterze. Wiadomość pobrana z dobreprogramy.pl Totalna inwigilacja w Meksyku? Pamiętacie Raport Mniejszości, gdzie skanery rozpoznawały w miejscach publicznych ludzi, by wyświetlać im na billboardach spersonalizowane reklamy? Podobnie ma być w Meksyku. Bo ponoć powszechne skanowanie w miejscach publicznych tęczówek ma służyć nie tylko bezpieczeństwu, ale i wygodzie. Żegnaj 2010, witaj 1984? Napisałem bezpieczeństwo w cudzysłowie, bo ten wyraz powinien się dobrze kojarzyć i dotyczyć dobra publicznego, jak i osobistego poszczególnych obywateli. Podobna uwaga odnosi się również zresztą do słowa wygoda. Jednak wydaje się, że lepszym słowem była by mniej przyjaźnie brzmiąca inwigilacja. I to totalna Kilka dni temu firma Biometrics R&D firm Global Rainmakers Inc. (GRI) poinformowała, że dzięki jej technologii zastosowanej w najnowszych skanerach tęczówki, powstało najbardziej bezpieczne miasto na świecie. Chodzi o miasto Leon w Meksyku. W przyszłości, niezależnie czy wchodzisz do domu, otwierasz swoje auto, uruchamiasz laptopa, pobierasz swoje leki w aptece, kluczem do wszystkiego będzie twój unikalny klucz tęczówka mówi Jeff Carter z Global Rainmakers. Wiadomość pobrana z osnews.pl 8 10/2010

9

10 LINUX KERNEL Linux Kernel: Podróż do wnętrza systemu Część trzecia (3/7): Podstawy programowania modułów jądra Pośród użytkowników systemów operacyjnych opartych na jądrze Linux panuje przekonanie, iż analiza oraz tworzenie kodu jądra jest czynnością niezwykle trudną i zarezerwowaną dla wybranych. Czynności te wymagają bowiem rezygnacji z wysokiego poziomu abstrakcji oferowanego przez wykorzystywane obecnie frameworki programistyczne na rzecz bliższego zapoznania się z architekturą jądra i wykorzystywanego sprzętu. Celem cyklu, którego kontynuacją jest ten artykuł, jest zapoznanie Czytelnika z tymi zagadnieniami oraz omówienie tworzenia modułów jądra, w tym sterowników urządzeń. Zapraszam do lektury! Linus Torvalds, człowiek który zapoczątkował rozwój jądra Linux, przy publikacji jego wersji 0.02 napisał Czyż nie tęsknicie za czasami, gdy mężczyźni byli mężczyznami i sami pisali swoje sterowniki?. Od tego wydarzenia minęło prawie 20 lat, zaś przemysł komputerowy uległ jeszcze większym zmianom. Obecnie wiedza o budowie systemu operacyjnego, sterowników, a tym bardziej umiejętność tworzenia kodu działającego na tak niskim poziomie wydaje się zbędna większości programistów. Zintegrowane środowiska programistyczne oraz frameworki pozwalają na bezstresowe tworzenie aplikacji. Z jednej strony jest to zjawisko bardzo korzystne, ponieważ pozwala szybciej zrealizować projekt oraz zwiększyć jego niezawodność. Z drugiej strony jest to jednak zjawisko mogące powodować ignorancję. Często mówi się o przepaści dzielącej programistów rozpoczynających naukę od języka C, w szczególności przy jednoczesnym zrozumieniu assemblera oraz programistów znających tylko języki wysokiego poziomu, w szczególności interpretowane lub wykonywane przez maszyny wirtualne. Oczywiście wszyscy z pewnością zgodzą się, że języki te mają obecnie zupełne różne zastosowania. Dalsza część cyklu będzie jednak poświęcona właśnie niskopoziomowemu programowaniu z wykorzystaniem języka C jeżeli nie znasz go dobrze, to sugeruję na początek zapoznanie się z nim i solidny trening w pisaniu aplikacji działających w przestrzeni użytkownika. Pamiętaj, że w module jądra jeden zagubiony wskaźnik może kosztować Cię nie naruszenie ochrony pamięci i zakończenie wykonywanej aplikacji, lecz uszkodzenie systemu plików. Błędy popełniane w trakcie tworzenia kodu działającego w przestrzeni jądra mają to do siebie, iż ich skutki są nieprzewidywalne. W tej części cyklu zajmiemy się takimi zagadnieniami jak charakterystyka modułów jądra, funkcjami przez nie pełnionymi oraz narzędziami stosowanymi do ich obsługi. Przedstawione zostaną również podstawowe różnice pomiędzy programowaniem w przestrzeni użytkownika oraz przestrzeni jądra. Poznasz różnicę pomiędzy biblioteką standardową języka C, a wywołaniami systemowymi. Następnie rozpoczniemy właściwe programowanie modułów jądra dowiesz się jak napisać, skompilować oraz wykorzystać własny moduł. Omówimy kilka podstawowych funkcji udostępnianych przez jądro oraz poznamy metody przekazywania parametrów przy wczytaniu modułu. Moduły jądra krótka charakterystyka Czym są moduły jądra dowiedziałeś się już w poprzednich częściach cyklu. Poznałeś również kryteria decydujące o tym, co warto zbudować w postaci modułu, a co pozostawić w części statycznej jądra. Moduły mogą pełnić różne funkcje zmieniać zachowanie systemu operacyjnego (poprzez zmianę obsługi wywołań systemowych), stanowić sterowniki dla rzeczywistych urządzeń lub emulować je. Kontrowersyjną grupą modułów jądra są rootkity, które umożliwiają przejęcie pełnej kontroli nad zainfekowanym systemem, przy jednoczesnym ukryciu ich obecności /2010

11 Linux Kernel (3/7): Podstawy programowania modułów jądra Budowa modułu jądra Moduły jądra tworzone są w języku programowania, a następnie kompilowane do kodu maszynowego procesora, na którym uruchomione jest jądro Linux. Powoduje to, że moduł jądra skompilowany dla konkretnej architektury wymagać będzie rekompilacji w celu uruchomienia go na innej. Bardzo często wiąże się to również z koniecznością wprowadzenia zmian w kodzie źródłowym, co może być czasochłonne w przypadku większych projektów. Oprócz właściwej części, którą jest kod maszynowy, moduły jądra zawierają sekcję.modinfo, przechowującą informacje takie jak rodzaj licencji, numer wersji jądra oraz informacje o autorze. Są one przeznaczone zarówno dla użytkownika, jak i wykorzystywane są w trakcie wczytywania modułu do działającego jądra. Standardowe pliki obiektowe w systemie Linux mają rozszerzenie *.o. Moduły jądra po kompilacji otrzymują rozszerzenie *.ko. Jakie role mogą pełnić moduły jądra? Większość Czytelników jest z pewnością zainteresowana praktycznymi możliwościami, jakie daje tworzenie modułów jądra. W tym paragrafie zajmiemy się odpowiedzią na pytanie Co mogą moduły jądra?. Aby w pełni zrozumieć informacje zawarte w tym artykule, konieczne jest, aby Czytelnik uświadomił sobie podstawowe zasady działania jądra systemu operacyjnego. W standardowej architekturze Intel dostępne są cztery poziomy, zwane ringami, na których działać może procesor. Oznacza się je zazwyczaj liczbami od 0 do 3. Ring 0 zwany jest trybem uprzywilejowanym (Supervisor Mode), zaś ring 3 jest poziomem, na którym działają aplikacje użytkownika. Domyślasz się zapewne, iż jądro systemu operacyjnego z racji pełnionych funkcji wymaga szczególnych przywilejów, toteż działa na poziomie 0. Przykładowo działając w obrębie przestrzeni jądra możemy przesyłać dane przy pomocy portu COM poprzez odwołanie się do odpowiednich adresów przestrzeni wejścia/wyjścia. Znajdując się w przestrzeni użytkownika, konieczne jest skorzystanie z odpowiednich mechanizmów udostępnianych przez jądro (wywołań systemowych). Na poziomie ringu 3 nie jest możliwe korzystanie z przestrzeni wejścia/wyjścia w sposób bezpośredni. Widzimy więc, iż znajdując się w przestrzeni jądra możemy wszystko. Mamy pełen dostęp do zasobów sprzętu, na którym działamy. Pamiętaj jednak, że wiążą się z tym poważne zagrożenia zarówno dla bezpieczeństwa systemu, jak i przechowywanych w nim danych. Z tego właśnie powodu nigdy nie powinieneś używać modułów jądra pochodzących z niesprawdzonych źródeł. Modularność jądra Linux w praktyce W poprzednich częściach cyklu napisane zostało, iż Linux jest jądrem monolitycznym, umożliwiającym ponadto dołączanie kodu w postaci modułów. Takie rozwiąza- nie charakteryzuje się wysoką wydajnością oraz umożliwia rozszerzanie funkcjonalności bez potrzeby zmiany wczytywanego do pamięci obrazu jądra oraz ponownego uruchomienia systemu. Podstawowe funkcje jądra realizowane są przez kod zawarty w części statycznej, która wczytywana jest przy starcie systemu i pozostaje w pamięci przez cały czas jego działania. Obsługa funkcji dodatkowych oraz sterowniki niektórych urządzeń zawarte zostają często w modułach, które mogą być w razie potrzeby wczytane do jądra, a następnie usunięte. Proces ten nie zakłóca pracy uruchomionych aplikacji (oczywiście pod warunkiem, że moduł napisany jest poprawnie). Wszystkie popularne dystrybucje systemu Linux zawierają narzędzia pozwalające na pełną obsługę modułów. Zostaną one omówione dokładnie w dalszej części artykułu. Dynamiczne linkowanie Czytelnikom potrafiącym programować w C/C++ z pewnością znane są najważniejsze kroki procesu kompilacji programu działającego w przestrzeni użytkownika. Są to (w dużym skrócie): faza preprocesora, kompilacja oraz linkowanie. W trakcie działania preprocesora kod przygotowywany jest do kompilacji między innymi poprzez dołączenie odpowiednich plików nagłówkowych i przetworzenie makr. Na etapie kompilacji, kod źródłowy analizowany jest przy użyciu reguł składniowych języka programowania i tworzony jest jego model w postaci odpowiedniej struktury danych (tzw. reprezentacja pośrednia), który jest następnie poddawany kompilacji i optymalizacji. Po ich zakończeniu, otrzymane pliki obiektowe są linkowane z bibliotekami w celu uzyskania pliku wykonywalnego. Podczas kompilacji modułów, nie są one linkowane ze standardową biblioteką języka C. Z tego powodu nie jest możliwe wykorzystanie funkcji z niej pochodzących. Po kompilacji, pliki obiektowe modułów zawierają nierozwiązane symbole, przez co przed ich wykorzystaniem konieczne jest linkowanie z działającym jądrem. Wersje jądra Linux wcześniejsze niż 2.6 polegały na programach użytkownika w celu linkowania. Począwszy od wersji 2.6 linkowanie odbywa się w całości w przestrzeni jądra, program wczytujący moduł służy jedynie do przekazania pliku *.ko do przestrzeni jądra. Programowanie w przestrzeni jądra Po przedstawieniu najważniejszych różnic w programowaniu przestrzeni użytkownika i przestrzeni jądra, warto zapoznać się z podstawowymi zasadami, które uwzględnić należy przy tworzeniu kodu działającego w przestrzeni jądra. Najważniejsze z nich zebrano poniżej. Moduły jądra nie są linkowane z biblioteką standardową języka C, nie ma więc możliwości wykorzy- 11

12 LINUX KERNEL stania zawartych w niej funkcji. Uświadomienie sobie tego faktu jest niezwykle ważne; na forach internetowych znaleźć można wiele opisów błędów wynikających z niepoprawnego rozumienia podstawowych zasad rządzących programowaniem modułów; Tworząc dowolny kod dla jądra Linux, zawsze warto zastanowić się, czy możliwe jest jego utworzenie jako modułu. Umożliwia to nie tylko dodanie kodu do jądra bez konieczności rekompilacji, ale również jego dodawanie i usuwanie bez potrzeby ponownego uruchamiania systemu; Tworzone moduły należy testować na systemach nie zawierających ważnych danych. W niektórych przypadkach najlepszym rozwiązaniem jest skorzystanie z maszyn wirtualnych, np. programu VirtualBox, dostępnego nieodpłatnie na stronie Jeżeli tworzysz sterowniki urządzeń, idealnym rozwiązaniem będzie zastosowanie osobnego komputera do testów; Upewnij się, że rozumiesz mechanizmy alokacji pamięci jądra. Pozornie, alokacja pamięci wydaje się zagadnieniem łatwym do opanowania. W następnych częściach cyklu zajmiemy się nim dokładniej; Umiejętność tworzenia modułów jądra daje programiście naprawdę wielkie możliwości, które używane w sposób nierozważny mogą mieć opłakane skutki. Dlatego upewnij się, że wiesz co robisz. Linus Torvalds zażartował kiedyś na temat filozofii Linuksa - (...) filozofią Linuksa jest śmiej się w obliczu niebezpieczeństwa. Ups. Nie ta. Zrób to sam. Właśnie. Czytelnikom polecam przyjęcie drugiej z filozofii. Po zapoznaniu się z tymi punktami, można już przejść do opisu pakietów niezbędnych do tworzenia modułów oraz konfiguracji jądra. Niezbędne narzędzia i konfiguracja jądra Tworzenie modułów jądra Linux wymaga zainstalowania: kompilatora GCC, programu make, nagłówków odpowiedniej wersji jądra oraz pakietu zawierającego narzędzia do obsługi modułów (module-init-tools). Pakiety te dostępne są w repozytoriach wszystkich dystrybucji, w większości przypadków zawarte są w standardowej instalacji systemu. W przypadku gdy dokonywaliśmy rekompilacji jądra zgodnie z poradami zawartymi w poprzednich częściach cyklu, warto przyjrzeć się opcjom z kategorii Loadable module support (Rysunek 1). Umożliwienie obsługi modułów wymaga wbudowania do jądra funkcji Enable loadable module support. Jeżeli chcemy mieć możliwość odłączania modułów, konieczne jest zaznaczenie funkcji Module unloading. Opcje Forced module loading oraz Forced module unloading pozwalają na wymuszenie dołączania modułów (zignorowanie informacji o wersji modułu) oraz ich odłączania (zignorowanie tego, iż moduł może być używany). Należy koniecznie pamiętać, że wersja wykorzystywanych nagłówków musi pokrywać się z wersją jądra, do której chcemy włączyć nasz moduł. Początkującym zalecałbym trzymanie się jednej wersji w celu uniknięcia chaosu. Rysunek 1. Kon guracja obsługi modułów w jądrze Linux 12 10/2010

13 Linux Kernel (3/7): Podstawy programowania modułów jądra Hello Linux pierwszy moduł Po upewnieniu się, że wszystkie niezbędne pakiety zainstalowane są w systemie oraz odpowiedniej konfiguracji jądra, przyszedł czas na napisanie pierwszego modułu. Jego zadaniem będzie wyświetlenie komunikatu przy wczytaniu oraz usunięciu. Nie jest to może szczególnie wyszukana funkcjonalność, pozwala jednak zapoznać się z podstawowymi zasadami rządzącymi działaniem modułów oraz stanowi punkt wyjścia do dalszego rozwoju. Komentarz do kodu Kod modułu HelloLinux przedstawiony został na Listingu 1. Zdefiniowane są w nim dwie funkcje init_module(), zwracająca wartość typu integer oraz cleanup_module(). Ich nazwy dobrze opisują ich znaczenie pierwsza z nich wywoływana jest po włączeniu modułu do jądra i służy do przygotowania modułu do pracy. Zadaniem drugiej z nich jest wykonanie czynności poprzedzających odłączenie modułu, takich jak np. zwolnienie alokowanej wcześniej pamięci. Załączone pliki nagłówkowe to linux/module.h, który wykorzystywany jest przez wszystkie moduły oraz linux/kernel.h, zawierający między innymi definicję KERN_INFO. Z pewnością zauważyłeś, iż w kodzie korzystamy z funkcji printk(), podobnej do funkcji printf() znanej z biblioteki standardowej języka C. Funkcja ta służy do zapisywania informacji oraz komunikatów diagnostycznych jądra. Komunikaty te nie są jednak zawsze wyświetlane na konsoli w przypadku zastosowania emulatora terminala w środowisku graficznym nie zostaną wyświetlone w ogóle, zaś w przypadku trybu tekstowego pojawią się one wtedy, gdy komunikat będzie odpowiedniego typu. Typ komunikatu określany jest przy pomocy stałej np. KERN_INFO (dostępne typy komunikatów można znaleźć w pliku nagłówkowym linux/kernel.h). Wszystkie komunikaty jądra można odczytać przy pomocy polecenia dmesg. Plik Makefile i kompilacja Na Listingu 2. przedstawiona została zawartość pliku Makefile służącego do ułatwienia kompilacji naszego modułu. Osobom, które wcześniej nie edytowały zawartości plików programu make, polecam zapoznanie się z jego dokumentacją. Należy pamiętać, iż linie zawierające komendy składające się na poszczególne cele (all, clean) muszą zostać poprzedzone wcięciem w postaci podwójnej tabulacji. W sytuacji, gdy plik Makefile ma służyć do kompilacji większej liczby modułów, kolejne pliki źródłowe należy dodawać przy użyciu dyrektyw obj-m += nazwa_ pliku_źródłowego.o. Jeżeli pojedynczy moduł znajduje się w wielu plikach źródłowych, konieczne jest użycie dwóch dyrektyw: obj-m += nazwa_modułu.o a następnie nazwa_modułu-objs := plik1.o plik2.o. Po zapisaniu pliku przedstawionego na Listingu 2. pod nazwą Makefile, w celu kompilacji modułu należy wykonać polecenie make all. Usunięcie modułów odbywa się przy użyciu polecenia make clean. Jeżeli natrafiłeś na błędy w trakcie kompilacji, upewnij się, iż pliki nagłówkowe jądra znajdują się w odpowiedniej lokalizacji. Aby włączyć moduł do jądra konieczne są prawa użytkownika root. Po zalogowaniu skorzystaj z programu insmod lub modprobe (ich dokładny opis znajdziesz w paragrafie Narzędzia do obsługi modułów). Po jego wczytaniu w oknie konsoli powinien pojawić się napis Hello Linux! wraz ze znacznikiem czasowym. Po odłączeniu modułu przy użyciu polecenia rmmod, wyświetlony powinien zostać komunikat Goodbye!. Moduł drugi pobieranie parametrów W drugim module zaprezentowane zostaną bardziej zaawansowane funkcje, pozwalające na pobieranie parametrów przy wczytaniu oraz makra służące do zmiany informacji zapisanych w sekcji.modinfo, takich jak np. typ licencji modułu. Komentarz do kodu Pierwszą różnicą w stosunku do modułu przedstawionego na Listingu 1. jest zastąpienie funkcji init_module() oraz cleanup_module() funkcjami o dowolnych nazwach. Listing 1. HelloLinux.c - najprostszy moduł jądra #include <linux/module.h> #include <linux/kernel.h> int init_module(void) { printk(kern_info "Hello world!\n"); return 0; void cleanup_module(void) { printk(kern_info "Goodbye!\n"); Listing 2. Make le dla modułu HelloLinux obj-m += HelloLinux.o all: clean: make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean 13

14 LINUX KERNEL Umożliwiają to makra module_init() oraz module_exit(), przyjmujące jako parametry odpowiednio nazwy funkcji inicjalizującej i deinicjalizującej. Makra MODULE_LICENSE(), MODULE_AUTHOR() oraz MODULE_ DESCRIPTION() służą do ustawiania odpowiednich pól w sekcji.modinfo. Być może zauważyłeś już komunikat wyświetlany przy dołączeniu do jądra modułu o niezdefiniowanej lub własnościowej licencji. Pobieranie parametrów przy wywołaniu Do przekazywania parametrów przy wczytaniu modułu wykorzystujemy makro module_param() przyjmujące trzy Listing 3. Moduł jądra wykorzystujący pobieranie wartości parametrów przy dołączeniu #include <linux/module.h> #include <linux/moduleparam.h> #include <linux/kernel.h> #include <linux/init.h> #include <linux/stat.h> MODULE_LICENSE("GPL"); MODULE_AUTHOR("R. Kulaga"); MODULE_DESCRIPTION("Modul drugi"); static int moduleint = ; static char *modulestring = "Wartosc domyslna"; static int moduleintarray[4]; static int arrayargc = 0; module_param(moduleint, int, S_IRUSR); MODULE_PARM_DESC(moduleInt, "Wartosc typu int"); module_param(modulestring, charp, S_IRUSR); MODULE_PARM_DESC(moduleString, "Ciag znakow"); module_param_array(moduleintarray, int, &arrayargc, 0); MODULE_PARM_DESC(moduleIntArray, "Tablica elementow typu int"); static int init start(void) { int idx; printk(kern_info "Witaj w module drugim!\n"); printk(kern_info "Wartosc moduleint = %d\n", moduleint); printk(kern_info "Wartosc modulestring = %s\n", modulestring); printk(kern_info "Liczba elementow w tablicy moduleintarray = %d\n", arrayargc); for(idx = 0; idx < arrayargc; idx++) { printk(kern_info "moduleintarray[%d] = %d\n", idx, moduleintarray[idx]); return 0; static void exit stop(void) { printk(kern_info "Goodbye!"); module_init(start); module_exit(stop); 14 10/2010

15 Linux Kernel (3/7): Podstawy programowania modułów jądra parametry: nazwę zmiennej, jej typ oraz prawa dostępu do odpowiadającego pliku w systemie sysfs. System plików sysfs zostanie opisany dokładniej w następnych częściach cyklu. W przypadku gdy jako parametr pobierana jest tablica wartości dowolnego typu, należy użyć makra module_ param_array(), które przyjmuje cztery parametry: nazwę tablicy, typ przechowywanych wartości, wskaźnik do zmiennej przechowującej ilość wczytanych elementów oraz prawa dostępu do odpowiadającego pliku sysfs. Makro MODULE_PARM_DESC() służy do prezentacji informacji o przyjmowanych parametrach przy użyciu programu modinfo. Przyjmuje dwa parametry nazwę zmiennej oraz ciąg znaków stanowiący opis jej znaczenia. Wczytanie modułu z przekazaniem wartości zmiennych może odbyć się przy użyciu programu insmod. Parametry należy podać po nazwie modułu, w dowolnej kolejności, np. insmod hw.ko moduleint=234 modulestring= Tekst moduleintarray=1,2,3,5. Narzędzia do obsługi modułów Obsługa modułów wymaga zastosowania narzędzi działających w przestrzeni użytkownika. Zebrane one zostały w pakiecie module-init-tools (wcześniej modutils). Reklama Wyświetlanie listy modułów Lista aktualnie wczytanych modułów znajduje się w pliku /proc/modules (więcej informacji o wirtualnym systemie plików /proc znajdziesz w następnej części cyklu). Wygodnym sposobem prezentacji zawartych w nim danych jest wykorzystanie programu lsmod. Nie posiada on interesujących opcji wywołania, jednak czytelniej formatuje informacje zawarte we wspomnianym pliku. Wczytywanie modułów Włączenie modułu do jądra odbywa się przy wykorzystaniu programu insmod. Przy jego wywołaniu należy podać nazwę modułu wraz z pełną ścieżką oraz wartości zmiennych przykazywanych przy załączeniu. Przy dołączeniu modułu jądra, insmod próbuje rozwiązać wszystkie symbole korzystając z tabeli symboli jądra. Najczęściej używane opcje wywołania to -f, powodująca pominięcie kontroli wersji jądra (opcja ta oczywiście nie ma wpływu na proces rozwiązywania symboli) oraz - p, powodująca sprawdzenie, czy moduł może zostać poprawnie dołączony. Należy mieć świadomość, iż insmod nie wczytuje automatycznie modułów wymaganych do działania dołączanego modułu. Z tego względu, najczęściej wykorzystywane jest narzędzie bardziej zaawansowane modprobe.

16 LINUX KERNEL Usuwanie modułów Usunięcie wczytanego modułu odbywa się przy użyciu narzędzia rmmod. Przy jego wywołaniu jako argument podajemy nazwę modułu. Podobnie jak lsmod, rmmod rzadko wywołujemy z dodatkowymi opcjami. modprobe szwajcarski scyzoryk dla modułów Opisane powyżej narzędzia, jakkolwiek użyteczne, mogą być obecnie zastąpione poprzez wykorzystanie programu modprobe. Służy on do kompleksowej obsługi modułów zarówno dołączania, usuwania, jak i rozwiązywania zależności pomiędzy nimi. Program modprobe dba, aby wczytane zostały wszystkie moduły wymagane do działania podłączonych urządzeń współpracując z udev. Przy wywołaniu bez dodatkowych opcji konfiguracyjnych, modprobe wczytuje moduł o podanej przez użytkownika nazwie. Cechą odróżniającą modprobe od prostszego narzędzia, jakim jest insmod, jest tworzenie plików opisujących zależności pomiędzy modułami. Przy wywołaniu nie podajemy ścieżki do pliku *.ko, jedynie określoną nazwę. Odłączenie modułu odbywa się przy użyciu opcji -r, po której należy podać jego nazwę. Aby umożliwić obsługę tworzonych modułów przy użyciu programu modprobe, musimy zapoznać się z narzędziem depmod. Służy ono do tworzenia plików z zależnościami opartych na symbolach, które zostały znalezione w zbiorze modułów podanych przy wywołaniu lub określonym w pliku konfiguracyjnym /etc/modules.conf. Przykładowo, w celu obsługi przy użyciu modprobe, utworzony przez nas moduł hw.ko należy przenieść do dowolnego katalogu znajdującego się w lokalizacji /lib/ modules/ (np. /lib/modules/misc/). Następnie należy wywołać komendę depmod -a, która spowoduje aktualizację bazy zależności. Jeżeli operacja przebiegła poprawnie, możemy już włączyć moduł przy użyciu polecenia modprobe hw. Wyświetlanie symboli nm Wyświetlenie symboli zawartych w pliku obiektowym odbywa się poprzez użycie polecenia nm nazwa_pliku_ obiektowego.ko. Po jego wykonaniu naszym oczom ukaże się lista obiektów, wraz z odpowiadającymi im wartościami oraz typem. Program nm może się okazać bardzo przydatnym narzędziem do znajdowania błędów, których źródłem są nierozwiązane symbole, zarówno w modułach, jak i standardowych plikach obiektowych. Więcej informacji na temat programu nm można uzyskać wydając polecenie man nm. Testowanie modułów na maszynach wirtualnych Jak zostało już napisane w tym artykule, testowanie tworzonych modułów na systemach produkcyjnych jest bardzo nierozsądne. Błędy w kodzie w najlepszym przypadku będą kosztować Czytelnika ponowne uruchomienie komputera oraz utratę niezapisanych danych. W mniej optymistycznym przypadku nastąpić może np. uszkodzenie systemu plików. Z tego względu warto rozważyć wykorzystanie maszyn wirtualnych jako rozwiązania odpowiedniego do testowania modułów. Jest to rozwiązanie nie tylko znacznie wygodniejsze, lecz również bezpieczniejsze, ponieważ nie ryzykujemy utraty danych przechowywanych na komputerze-gospodarzu. Z drugiej strony należy mieć świadomość ograniczeń takiego środowiska testowego dla modułów. Są one widoczne szczególnie przy testowaniu sterowników urządzeń. Maszyny wirtualne pozwalają na wykorzystanie sprzętu podłączonego do komputera-gospodarza w bardzo ograniczonym stopniu. W takiej sytuacji wykorzystanie wirtualizacji nie jest najlepszym rozwiązaniem. Więcej uwagi temu zagadnieniu poświęcone zostanie w następnych częściach cyklu, poświęconych sterownikom urządzeń. Podsumowanie W tej części cyklu Czytelnik zapoznał się z podstawowymi informacjami na temat modułów jądra Linux, ważnymi z punktu widzenia ich programowania. Oprócz tego przedstawiona została konfiguracja środowiska do kompilacji i testowania tworzonego kodu oraz narzędzia wykorzystywane do obsługi modułów. Napisaliśmy również kilka modułów korzystających z podstawowych funkcji udostępnianych przez jądro Linux. Informacje zawarte w tym artykule mają na celu przygotować Czytelnika do bardziej zaawansowanych zagadnień, które omówione zostaną w następnym artykule. Zajmiemy się w nim między innymi wykorzystaniem wirtualnego systemu plików /proc w celu komunikacji z programami przestrzeni użytkownika, omówieniem mechanizmów alokacji pamięci w jądrze oraz wieloma innymi zagadnieniami. Każdemu z Czytelników polecam własnoręczne poszukiwanie dodatkowych informacji w internecie. Forma cyklu wymusza bowiem na mnie staranną selekcję materiału, która może powodować brak omówienia pewnych, niekiedy nawet ważnych zagadnień. Moim głównym celem jest to, aby każdy zainteresowany mógł zapoznać się z programowaniem przestrzeni jądra, toteż śmiało pisz, jeżeli masz jakiekolwiek wątpliwości mój adres znajduje się w ramce O Autorze. RAFAŁ KUŁAGA Autor interesuje się bezpieczeństwem systemów informatycznych, programowaniem, elektroniką, muzyką rockową, architekturą mikroprocesorów oraz zastosowaniem Linuksa w systemach wbudowanych. Kontakt z autorem: rl.kulaga@gmail.com 16 10/2010

17 Pobierz nowy numer SDJ

18 ROZWIĄZANIA Programowanie wieloplatformowych aplikacji w Linuksie W dobie szybkiego wzrostu popularności aplikacji obsługiwanych przez przeglądarkę www tworzenie przenośnego, wieloplatformowego kodu traci na znaczeniu. Sporo problemów ubywa także dzięki językowi Java. Procesy te nie stanowią jednak panaceum na wszelkie kłopoty związane z tworzeniem przenośnego oprogramowania, zwłaszcza tego, które bogato korzysta z multimedialnych możliwości komputerów. Duże znaczenie ma także fakt, że nie każdy program można i warto uruchomić na serwerze, choć niewykluczone, że w przyszłości sytuacja zmieni się znacząco dzięki coraz modniejszemu programowaniu w chmurze. Jednak nawet wśród aplikacji desktopowych, zwłaszcza dostępnych na licencji open source, coraz wyraźniej zarysowuje się trend polegający na tworzeniu narzędzi działających zarówno w Linuksie, jak i Windows oraz Mac OS X. Nie oznacza to bynajmniej, że wszystkie te programy pisanie są w języku Java. Dobre, w pełni przenośne oprogramowanie można przygotować także w C++, z użyciem wieloplatformowych bibliotek. Takiemu rozwiązaniu poświęcony zostanie ten artykuł. Naszym zadaniem będzie stworzenie w języku C++ oprogramowania działającego w najpopularniejszych systemach operacyjnych, oferującego podstawowe funkcje multimedialne, bez konieczności przepisywania większości kodu podczas implementacji na nowej platformie. Użyjemy pakietu openframeworks, bibliotek Qt, a także kilku dodatkowych, przenośnych narzędzi. Poznamy także ograniczenia zaproponowanego rozwiązania, przekonując się jednak zarazem, że dzięki coraz lepszym i wszechstronniejszym bibliotekom programistycznym możliwe jest szybkie tworzenie w Linuksie kodu, która zadziała także w MS Windows oraz MacOS. Co będzie nam potrzebne? Oprócz kompilatora GCC, który zastąpimy w systemie Windows pakietem MinGW ( koniecznie powinniśmy zainstalować kilka bibliotek. Pierwszą z nich jest openframeworks. Poza tym skorzystamy między innymi z Qt. Wybór tej biblioteki stanowi oczywistość dla wielu programistów. Nie należy jednak zapominać, że do tworzenia w pełni przenośnych interfejsów graficznych świetnie nadaje się szereg innych pakietów między innymi wxwidgets oraz GTK+. Są one wspierane przez wieloplatformowe środowisko programistyczne Code::Blocks, które również wypróbujemy w tym artykule. Oczywiście nie jesteśmy skazani na tworzenie aplikacji w tym właśnie programie. Przyda nam się również chociażby Qt Creator lub Eclipse. Również kompilator MinGW nie jest konieczny w systemie Windows. Jego użycie stanowi jednak najprostsze rozwiązanie, gdyż został on umieszczony w pakiecie z bibliotekami Qt. Chcąc stworzyć przenośną aplikację, nie musimy się też koniecznie ograniczać do języka C++. Pomijając programowanie z użyciem Javy w przypadku zastosowań multimedialnych możemy zdecydować się na skorzystanie z Processing ( Ten język jest szczególnie predestynowany do tworzenia przenośnych narzędzi (MS Windows, Linux, MacOS X) posiadających zaawansowane funkcje muzyczne, graficzne lub wideo. Przykładowe zastosowania Processing znaleźć można na stronach serwisu Hack a Day ( Artykuł ten nie będzie stanowił kompendium dotyczącego bibliotek pozwalających na tworzenie przenośnych aplikacji w języku C++ (lub z użyciem Pro /2010

19 Programowanie wieloplatformowych aplikacji w Linuksie Biblioteki włączone w skład openframeworks openframeworks to konglomerat multimedialnych bibliotek open source. W skład archiwum instalacyjnego wchodzą, oprócz kodu przygotowanego przez twórców projektu, także następujące pakiety: OmniVidea Fobs ( paczka ułatwiająca tworzenie obiektowych, przenośnych aplikacji w wielu językach, z użyciem biblioteki ffmpeg; FreeImage ( wieloplatformowa biblioteka ułatwiająca programistom dodawanie do aplikacji wsparcia dla popularnych formatów graficznych; FMOD ( pakiet ułatwiający pisanie programów i gier wymagających interaktywnego tworzenia oraz odtwarzania dźwięku. Działa na wielu platformach; FreeType ( biblioteka służąca do obsługi czcionek w wielu formatach; GLee (GL Easy Extension; działająca w wielu systemach operacyjnych biblioteka wspomagająca wykorzystanie OpenGL; oferuje szereg dodatków i rozszerzeń; GLUT (OpenGL Utility Toolkit; biblioteka umożliwiająca tworzenie wieloplatformowych aplikacji OpenGL; RTAudio ( API służące do tworzenia przenośnych aplikacji przechwytujących i emitujących dźwięk w czasie rzeczywistym; Unicap ( biblioteka obsługująca urządzenia rejestrujące obraz; działa w Linuksie; oferuje także narzędzia ułatwiające korzystanie z kamer internetowych. cessing). Przedstawione zostaną natomiast fragmenty kodu, które można (lub nie) w prosty sposób przenieść z Linuksa do innych popularnych systemów operacyjnych. Dominującym wątkiem będzie przechwytywanie obrazu z kamer internetowych, a także manipulowanie ustawieniami tych urządzeń. Niektóre z funkcji z łatwością zaimplementujemy w wieloplat- formowym oprogramowaniu, inne z kolei będą wymagały przepisania części kodu podczas migracji z Linuksa. Zaprezentowane przykłady mogą potencjalnie stanowić źródło inspiracji dla programistów chcących korzystać z systemu spod znaku pingwina, udostępniając przy tym owoce swojej pracy także użytkownikom konkurencyjnych platform. Rysunek 1. Możliwości openframeworks obrazuje galeria projektów zamieszczona na stronie domowej biblioteki 19

20 ROZWIĄZANIA Kompilacja bibliotek Rozpocznijmy od kompilacji potrzebnego oprogramowania. Interfejsy aplikacji będziemy tworzyli z użyciem bibliotek openframeworks oraz Qt. Jak wspomniano wcześniej, nie są to jedyne dopuszczalne opcje. Sposób instalacji biblioteki Qt wraz z narzędziami programistycznymi (Qt Creator, Eclipse) został szczegółowo opisany we wcześniejszych numerach Linux+ (6,7, 9/ 2010). Zajmiemy się zatem tylko kompilacją openframeworks oraz kilku dodatkowych pakietów. openframeworks dostępne jest w postaci pakietów zawierających binaria i kod źródłowy. Niektóre z nich (tak zwane archiwa FAT ) wyposażone są dodatkowo w zestaw przykładów. Pobierając potrzebne pliki (ze strony zwróćmy uwagę na wersje przeznaczone dla innych systemów Windows, Mac, a także iphone. Jak możemy zaobserwować, openframeworks to projekt w pełni wieloplatformowy. Po rozpakowaniu ściągniętego pakietu powinniśmy zapoznać się ze znajdującym się wewnątrz (w katalogu głównym) plikiem readme.txt. Zawiera on podstawowe informacje dotyczące instalacji openframeworks w popularnych dystrybucjach Linuksa (Ubuntu, Fedora, Debian). Poza tym zamieszczono tam wskazówki przeznaczone dla użytkowników innych systemów oraz opis procedur instalacyjnych dodatkowych Listing 1. Odtwarzacz wideo (openframeworks) plik main.cpp: #include "ofmain.h" #include "testapp.h" int main( ){ ofsetupopengl(1024,768, OF_FULLSCREEN); ofrunapp(new testapp()); plik testapp.cpp: #include "testapp.h" #include "stdio.h" testapp::testapp() { void testapp::setup(){ ofbackground(255,255,255); film.loadmovie("przyklad.mov"); film.play(); void testapp::update(){ film.idlemovie(); void testapp::mousepressed(int x, int y, int button){ film.setpaused(true); void testapp::mousereleased(){ film.setpaused(false); plik testapp.h: #ifndef _TEST_APP #define _TEST_APP #include "ofmain.h" #include "ofaddons.h" class testapp : public ofsimpleapp{ public: testapp(); void setup(); void update(); void mousepressed(int x, int y, int button); void mousereleased(); ofvideoplayer film; ; Rysunek 2. Kompilacja przykładów załączonych do openframeworks (z użyciem Code::Blocks) #endif 20 10/2010

Java jako język programowania

Java jako język programowania Java jako język programowania Interpretowany programy wykonują się na wirtualnej maszynie (JVM Java Virtual Machine) Składnia oparta o język C++ W pełni zorientowany obiektowo (wszystko jest obiektem)

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Laboratorium 1. Wstęp do programowania w języku Java. Narzędzia 1. Aby móc tworzyć programy w języku Java, potrzebny jest zestaw narzędzi Java Development Kit, który można ściągnąć

Bardziej szczegółowo

Memeo Instant Backup Podręcznik Szybkiego Startu

Memeo Instant Backup Podręcznik Szybkiego Startu Wprowadzenie Memeo Instant Backup pozwala w łatwy sposób chronić dane przed zagrożeniami cyfrowego świata. Aplikacja regularnie i automatycznie tworzy kopie zapasowe ważnych plików znajdujących się na

Bardziej szczegółowo

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych. Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych. 1. Przygotowanie środowiska programistycznego. Zajęcia będą

Bardziej szczegółowo

Wprowadzenie do biblioteki klas C++

Wprowadzenie do biblioteki klas C++ Instrukcja laboratoryjna nr 7 Programowanie w języku C 2 (C++ poziom zaawansowany) Wprowadzenie do biblioteki klas C++ WxWidgets mgr inż. Lasota Maciej dr inż. Kaczmarek Tomasz dr inż. Wilk-Jakubowski

Bardziej szczegółowo

Odseparowanie kodu PHP i warstwy prezentacji od dawna było celem

Odseparowanie kodu PHP i warstwy prezentacji od dawna było celem Smarty system szablonów 01 Odseparowanie kodu PHP i warstwy prezentacji od dawna było celem programistów tworzących aplikacje w tym języku. Bardzo często taki kod w znacznym stopniu przeplatał się tagami

Bardziej szczegółowo

Zintegrowany system usług certyfikacyjnych. Dokumentacja użytkownika. Obsługa wniosków certyfikacyjnych i certyfikatów. Wersja dokumentacji 1.

Zintegrowany system usług certyfikacyjnych. Dokumentacja użytkownika. Obsługa wniosków certyfikacyjnych i certyfikatów. Wersja dokumentacji 1. Dokumentacja użytkownika Zintegrowany system usług certyfikacyjnych Obsługa wniosków certyfikacyjnych i certyfikatów Wersja dokumentacji 1.05 Unizeto Technologies SA - www.unizeto.pl Autorskie prawa majątkowe

Bardziej szczegółowo

Programowanie I. O czym będziemy mówili. Plan wykładu nieco dokładniej. Plan wykładu z lotu ptaka. Podstawy programowania w językach. Uwaga!

Programowanie I. O czym będziemy mówili. Plan wykładu nieco dokładniej. Plan wykładu z lotu ptaka. Podstawy programowania w językach. Uwaga! Programowanie I O czym będziemy mówili Podstawy programowania w językach proceduralnym ANSI C obiektowym Java Uwaga! podobieństwa w podstawowej strukturze składniowej (zmienne, operatory, instrukcje sterujące...)

Bardziej szczegółowo

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ), PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ), Program 351203 Opracowanie: Grzegorz Majda Tematyka zajęć 2. Przygotowanie środowiska pracy

Bardziej szczegółowo

SystimPlus. Dokumentacja (FAQ) dla wersji: v1.14.05.12

SystimPlus. Dokumentacja (FAQ) dla wersji: v1.14.05.12 SystimPlus Dokumentacja (FAQ) dla wersji: v1.14.05.12 Spis treści 1.Co to jest SystimPlus?... 1 2.Instalacja i wymagania... 1 3.Jakie drukarki fiskalne obsługuje SystimPlus?... 3 4.Jak połączyć się z drukarką

Bardziej szczegółowo

Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.

Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę. Języki C i C++ to bardzo uniwersalne platformy programistyczne o ogromnych możliwościach. Wykorzystywane są do tworzenia systemów operacyjnych i oprogramowania użytkowego. Dzięki niskiemu poziomowi abstrakcji

Bardziej szczegółowo

Cechy systemu X Window: otwartość niezależność od producentów i od sprzętu, dostępny kod źródłowy; architektura klient-serwer;

Cechy systemu X Window: otwartość niezależność od producentów i od sprzętu, dostępny kod źródłowy; architektura klient-serwer; 14.3. Podstawy obsługi X Window 14.3. Podstawy obsługi X Window W przeciwieństwie do systemów Windows system Linux nie jest systemem graficznym. W systemach Windows z rodziny NT powłokę systemową stanowi

Bardziej szczegółowo

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Programowanie obiektowe Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Java P. L. Lemay, Naughton R. Cadenhead Java Podręcznik 2 dla kaŝdego Języka Programowania Java Linki Krzysztof Boone oprogramowania

Bardziej szczegółowo

4. Podstawowa konfiguracja

4. Podstawowa konfiguracja 4. Podstawowa konfiguracja Po pierwszym zalogowaniu się do urządzenia należy zweryfikować poprawność licencji. Można to zrobić na jednym z widżetów panelu kontrolnego. Wstępną konfigurację można podzielić

Bardziej szczegółowo

Tworzenie oprogramowania

Tworzenie oprogramowania Tworzenie oprogramowania dr inż. Krzysztof Konopko e-mail: k.konopko@pb.edu.pl 1 Tworzenie oprogramowania dla systemów wbudowanych Program wykładu: Tworzenie aplikacji na systemie wbudowanym. Konfiguracja

Bardziej szczegółowo

MAMP: Można to pobrać i zainstalować z XAMPP: Można go pobrać i zainstalować z

MAMP: Można to pobrać i zainstalować z   XAMPP: Można go pobrać i zainstalować z WordPress : Omówienie I Instalacja Na początek, dlaczego byłbyś zainteresowany wykorzystaniem WordPressa razem z PhoneGap? Zapytałbym: "Dlaczego byś nie?" Moim zdaniem WordPress jest jednym z najłatwiejszych

Bardziej szczegółowo

Bydgoskie Centrum Archiwizacji Cyfrowej sp. z o.o.

Bydgoskie Centrum Archiwizacji Cyfrowej sp. z o.o. STRONA GŁÓWNA ` Usługa earchiwizacja.pl przeznaczona jest zarówno dla osób indywidualnych, jak i firm. Wykorzystuje zasadę przetwarzania danych w chmurze. Pozwala to na dostęp do własnej bazy dokumentów

Bardziej szczegółowo

Język JAVA podstawy. wykład 1, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Język JAVA podstawy. wykład 1, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna Język JAVA podstawy wykład 1, część 2 1 Język JAVA podstawy Plan wykładu: 1. Krótka historia Javy 2. Jak przygotować sobie środowisko programistyczne 3. Opis środowiska JDK 4. Tworzenie programu krok po

Bardziej szczegółowo

Programowanie w C. dr inż. Stanisław Wszelak

Programowanie w C. dr inż. Stanisław Wszelak Programowanie w C dr inż. Stanisław Wszelak Przeszłość i przyszłość składni programowania w C Ken Thompson Denis Ritchie Bjarne Stoustrup Zespoły programistów B C C++ C# 1969 rok Do SO UNIX 1972 rok C++

Bardziej szczegółowo

MonoGame. Wieloplatformowe gry w C# Mateusz Cicheński

MonoGame. Wieloplatformowe gry w C# Mateusz Cicheński MonoGame Wieloplatformowe gry w C# Mateusz Cicheński Plan prezentacji Założenia Alternatywy Narzędzia Różnice między WP8, ios, Android DEMO Podsumowanie Założenia CEL: Stworzenie wieloplatformowej gry

Bardziej szczegółowo

Internetowy serwis Era mail Aplikacja sieci Web

Internetowy serwis Era mail Aplikacja sieci Web Internetowy serwis Era mail Aplikacja sieci Web (www.login.eramail.pl) INSTRUKCJA OBSŁUGI Spis treści Internetowy serwis Era mail dostępny przez komputer z podłączeniem do Internetu (aplikacja sieci Web)

Bardziej szczegółowo

Protokół HTTP (2) I) Wprowadzenie. II) Użyte narzędzia: III) Kolejność działań

Protokół HTTP (2) I) Wprowadzenie. II) Użyte narzędzia: III) Kolejność działań Protokół HTTP (2) I) Wprowadzenie Celem ćwiczenia jest zapoznanie z protokołem HTTP. Ćwiczenie obejmuje takie zagadnienia jak: a) instalację i konfigurację serwera HTTP (Apache2), b) uwierzytelnianie dostępu

Bardziej szczegółowo

Programowanie obiektowe zastosowanie języka Java SE

Programowanie obiektowe zastosowanie języka Java SE Programowanie obiektowe zastosowanie języka Java SE Wstęp do programowania obiektowego w Javie Autor: dr inŝ. 1 Java? Java język programowania obiektowo zorientowany wysokiego poziomu platforma Javy z

Bardziej szczegółowo

Instrukcja dla osoby potwierdzającej profil zaufany

Instrukcja dla osoby potwierdzającej profil zaufany Załącznik nr 3 do Procedury działania Punktu Potwierdzającego Profile Zaufane epuap w Urzędzie Miejskim w Gdańsku Instrukcja dla osoby potwierdzającej profil zaufany Spis treści 1. Cel i zakres dokumentu...3

Bardziej szczegółowo

Zawartość. Wstęp. Moduł Rozbiórki. Wstęp Instalacja Konfiguracja Uruchomienie i praca z raportem... 6

Zawartość. Wstęp. Moduł Rozbiórki. Wstęp Instalacja Konfiguracja Uruchomienie i praca z raportem... 6 Zawartość Wstęp... 1 Instalacja... 2 Konfiguracja... 2 Uruchomienie i praca z raportem... 6 Wstęp Rozwiązanie przygotowane z myślą o użytkownikach którzy potrzebują narzędzie do podziału, rozkładu, rozbiórki

Bardziej szczegółowo

brandrace FUNKCJONALNY sklep internetowy

brandrace FUNKCJONALNY sklep internetowy brandrace FUNKCJONALNY sklep internetowy Zwiększ efektywność działań w internecie poprzez wdrożenie nowych rozwiązań! sklep internetowy Sprzedaż przez internet to przyszłość handlu. Z każdym dniem przybywa

Bardziej szczegółowo

Instrukcja użytkownika ARSoft-WZ1

Instrukcja użytkownika ARSoft-WZ1 05-090 Raszyn, ul Gałczyńskiego 6 tel (+48) 22 101-27-31, 22 853-48-56 automatyka@apar.pl www.apar.pl Instrukcja użytkownika ARSoft-WZ1 wersja 3.x 1. Opis Aplikacja ARSOFT-WZ1 umożliwia konfigurację i

Bardziej szczegółowo

INSTRUKCJA INSTALACJI OPROGRAMOWANIA MICROSOFT LYNC 2010 ATTENDEE ORAZ KORZYTANIA Z WYKŁADÓW SYNCHRONICZNYCH

INSTRUKCJA INSTALACJI OPROGRAMOWANIA MICROSOFT LYNC 2010 ATTENDEE ORAZ KORZYTANIA Z WYKŁADÓW SYNCHRONICZNYCH INSTRUKCJA INSTALACJI OPROGRAMOWANIA MICROSOFT LYNC 2010 ATTENDEE ORAZ KORZYTANIA Z WYKŁADÓW SYNCHRONICZNYCH Wstęp Warunkiem uczestnictwa w wykładzie zdalnym jest zainstalowanie na komputerze ucznia uczestnika

Bardziej szczegółowo

MentorGraphics ModelSim

MentorGraphics ModelSim MentorGraphics ModelSim 1. Konfiguracja programu Wszelkie zmiany parametrów systemu symulacji dokonywane są w menu Tools -> Edit Preferences... Wyniki ustawień należy zapisać w skrypcie startowym systemu

Bardziej szczegółowo

Instrukcja użytkownika Platforma transakcyjna mforex Trader dla systemu Linux

Instrukcja użytkownika Platforma transakcyjna mforex Trader dla systemu Linux Instrukcja użytkownika Platforma transakcyjna mforex Trader dla systemu Linux Kontakt: e-mail: kontakt@mforex.pl infolinia: 22 697 4774 www.mforex.pl 1 1 O platformie Platforma mforex Trader to część systemu

Bardziej szczegółowo

I. Informacje ogólne. Jednym z takich systemów jest Mambo.

I. Informacje ogólne. Jednym z takich systemów jest Mambo. MAMBO (CMS) I. Informacje ogólne CMS, Content Management System ("system zarządzania treścią") jest to jedna lub zestaw aplikacji internetowych pozwalających na łatwe utworzenie oraz późniejszą aktualizację

Bardziej szczegółowo

Diagnostyka pamięci RAM

Diagnostyka pamięci RAM Diagnostyka pamięci RAM 1 (Pobrane z slow7.pl) Uszkodzenie pamięci RAM jest jednym z najczęściej występujących problemów związanych z niestabilnym działaniem komputera. Efektem uszkodzenia kości RAM są

Bardziej szczegółowo

DESlock+ szybki start

DESlock+ szybki start DESlock+ szybki start Wersja centralnie zarządzana Wersja bez centralnej administracji standalone WAŻNE! Pamiętaj, że jeśli chcesz korzystać z centralnego zarządzania koniecznie zacznij od instalacji serwera

Bardziej szczegółowo

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki Język programowania prosty bezpieczny zorientowany obiektowo wielowątkowy rozproszony przenaszalny interpretowany dynamiczny wydajny Platforma

Bardziej szczegółowo

Połączenia. Instalowanie drukarki lokalnie (Windows) Co to jest drukowanie lokalne?

Połączenia. Instalowanie drukarki lokalnie (Windows) Co to jest drukowanie lokalne? Strona 1 z 6 Połączenia Instalowanie drukarki lokalnie (Windows) Uwaga: Jeśli dysk CD Oprogramowanie i dokumentacja nie obejmuje obsługi danego systemu operacyjnego, należy skorzystać z Kreatora dodawania

Bardziej szczegółowo

Instrukcja użytkownika Platforma transakcyjna mforex Trader dla systemu MacOS

Instrukcja użytkownika Platforma transakcyjna mforex Trader dla systemu MacOS Instrukcja użytkownika Platforma transakcyjna mforex Trader dla systemu MacOS Kontakt: e-mail: kontakt@mforex.pl infolinia: 22 697 4774 www.mforex.pl 1 1 O platformie Platforma mforex Trader to część systemu

Bardziej szczegółowo

Wykonać Ćwiczenie: Active Directory, konfiguracja Podstawowa

Wykonać Ćwiczenie: Active Directory, konfiguracja Podstawowa Wykonać Ćwiczenie: Active Directory, konfiguracja Podstawowa Instalacja roli kontrolera domeny, Aby zainstalować rolę kontrolera domeny, należy uruchomić Zarządzenie tym serwerem, po czym wybrać przycisk

Bardziej szczegółowo

Wydział Informatyki, Elektroniki i Telekomunikacji. Katedra Informatyki

Wydział Informatyki, Elektroniki i Telekomunikacji. Katedra Informatyki Wydział Informatyki, Elektroniki i Telekomunikacji Katedra Informatyki Pastebin w wersji zorientowanej na środowisko mobilne z klientem pozwalającym na oba kierunki przeklejania. Dokumentacja deweloperska

Bardziej szczegółowo

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery http://xqtav.sourceforge.net XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery dr hab. Jerzy Tyszkiewicz dr Andrzej Kierzek mgr Jacek Sroka Grzegorz Kaczor praca mgr pod

Bardziej szczegółowo

WPROWADZENIE DO JĘZYKA JAVA

WPROWADZENIE DO JĘZYKA JAVA WPROWADZENIE DO JĘZYKA JAVA programowanie obiektowe KRÓTKA HISTORIA JĘZYKA JAVA KRÓTKA HISTORIA JĘZYKA JAVA 1991 - narodziny języka java. Pierwsza nazwa Oak (dąb). KRÓTKA HISTORIA JĘZYKA JAVA 1991 - narodziny

Bardziej szczegółowo

Kernel Kompilacja jądra

Kernel Kompilacja jądra Kernel Kompilacja jądra systemu Co to jest jądro systemu operacyjnego Jądro systemu operacyjnego jest rozpowszechniane na licencji GNU General Public License (GPL) określonej przez konsorcjum Free Software

Bardziej szczegółowo

Currenda EPO Instrukcja Konfiguracji. Wersja dokumentu: 1.3

Currenda EPO Instrukcja Konfiguracji. Wersja dokumentu: 1.3 Currenda EPO Instrukcja Konfiguracji Wersja dokumentu: 1.3 Currenda EPO Instrukcja Konfiguracji - wersja dokumentu 1.3-19.08.2014 Spis treści 1 Wstęp... 4 1.1 Cel dokumentu... 4 1.2 Powiązane dokumenty...

Bardziej szczegółowo

Wstęp do Informatyki i Programowania Laboratorium: Lista 0 Środowisko programowania

Wstęp do Informatyki i Programowania Laboratorium: Lista 0 Środowisko programowania Wstęp do Informatyki i Programowania Laboratorium: Lista 0 Środowisko programowania Przemysław Kobylański Wprowadzenie Każdy program w C musi zawierać przynajmniej funkcję o nazwie main(): Aby możliwe

Bardziej szczegółowo

Przewodnik Google Cloud Print

Przewodnik Google Cloud Print Przewodnik Google Cloud Print Wersja A POL Definicje oznaczeń W tym podręczniku użytkownika zastosowano następujący styl uwag: Uwagi informują o tym, jak należy reagować w danej sytuacji, lub zawierają

Bardziej szczegółowo

Stawiamy pierwsze kroki

Stawiamy pierwsze kroki Stawiamy pierwsze kroki 3.1. Stawiamy pierwsze kroki Edytory tekstu to najbardziej popularna odmiana programów służących do wprowadzania i zmieniania (czyli edytowania) tekstów. Zalicza się je do programów

Bardziej szczegółowo

System Zarządzania Treścią

System Zarządzania Treścią System Zarządzania Treścią Dawno, dawno temu, w latach 90-tych XX wieku publikowanie w Internecie nie było proste. Wymagało znajomości HTMLa do stworzenia strony, FTP do wysłania zawartości na serwer i

Bardziej szczegółowo

KOMPUTEROWY SYSTEM WSPOMAGANIA OBSŁUGI JEDNOSTEK SŁUŻBY ZDROWIA KS-SOMED

KOMPUTEROWY SYSTEM WSPOMAGANIA OBSŁUGI JEDNOSTEK SŁUŻBY ZDROWIA KS-SOMED KOMPUTEROWY SYSTEM WSPOMAGANIA OBSŁUGI JEDNOSTEK SŁUŻBY ZDROWIA KS-SOMED Podręcznik użytkownika Katowice 2010 Producent programu: KAMSOFT S.A. ul. 1 Maja 133 40-235 Katowice Telefon: (0-32) 209-07-05 Fax:

Bardziej szczegółowo

Krótka Historia. Co to jest NetBeans? Historia. NetBeans Platform NetBeans IDE NetBeans Mobility Pack Zintegrowane moduły. Paczki do NetBeans.

Krótka Historia. Co to jest NetBeans? Historia. NetBeans Platform NetBeans IDE NetBeans Mobility Pack Zintegrowane moduły. Paczki do NetBeans. GRZEGORZ FURDYNA Krótka Historia Co to jest NetBeans? Historia Wersje NetBeans Platform NetBeans IDE NetBeans Mobility Pack Zintegrowane moduły NetBeans Profiler Narzędzie do projektowania GUI Edytor NetBeans

Bardziej szczegółowo

Implementacja aplikacji sieciowych z wykorzystaniem środowiska Qt

Implementacja aplikacji sieciowych z wykorzystaniem środowiska Qt Implementacja aplikacji sieciowych z wykorzystaniem środowiska Qt 1. Wprowadzenie Wymagania wstępne: wykonanie ćwiczeń Adresacja IP oraz Implementacja aplikacji sieciowych z wykorzystaniem interfejsu gniazd

Bardziej szczegółowo

Międzyplatformowy interfejs systemu FOLANessus wykonany przy użyciu biblioteki Qt4

Międzyplatformowy interfejs systemu FOLANessus wykonany przy użyciu biblioteki Qt4 Uniwersytet Mikołaja Kopernika w Toruniu Wydział Matematyki i Informatyki Wydział Fizyki, Astronomii i Informatyki Stosowanej Agnieszka Holka Nr albumu: 187396 Praca magisterska na kierunku Informatyka

Bardziej szczegółowo

Laboratorium Informatyka (I) AiR Ćwiczenia z debugowania

Laboratorium Informatyka (I) AiR Ćwiczenia z debugowania Laboratorium Informatyka (I) AiR Ćwiczenia z debugowania Krzysztof Kluza, Janusz Miller 1 Debugowanie Debugowanie, czy też po polsku odpluskiwanie, to proces polegający na kontrolowanym wykonaniu programu

Bardziej szczegółowo

OMNITRACKER Wersja testowa. Szybki przewodnik instalacji

OMNITRACKER Wersja testowa. Szybki przewodnik instalacji OMNITRACKER Wersja testowa Szybki przewodnik instalacji 1 Krok 1:Rejestracja pobrania (jeżeli nie wykonana dotychczas) Proszę dokonać rejestracji na stronieomninet (www.omnitracker.com) pod Contact. Po

Bardziej szczegółowo

Win Admin Monitor Instrukcja Obsługi

Win Admin Monitor Instrukcja Obsługi Win Admin Monitor Instrukcja Obsługi czerwiec 2019 wersja dokumentu 1.7 dla wersji aplikacji 2.1.1.0 Spis treści: I. Wstęp 3 II. Wymagania systemowe 4 III. Ograniczenia funkcjonalne wersji demo 5 IV. Instalacja

Bardziej szczegółowo

BIBLIOTEKA CYFROWA JAKO KONTENER TREŚCI DLA PORTALI INTERNETOWYCH. DLIBRA & DRUPAL DWA SYSTEMY, JEDNA WITRYNA.

BIBLIOTEKA CYFROWA JAKO KONTENER TREŚCI DLA PORTALI INTERNETOWYCH. DLIBRA & DRUPAL DWA SYSTEMY, JEDNA WITRYNA. BIBLIOTEKA CYFROWA JAKO KONTENER TREŚCI DLA PORTALI INTERNETOWYCH. DLIBRA & DRUPAL DWA SYSTEMY, JEDNA WITRYNA. Michał Kwiatkowski Piotr Grzybowski Poznańskie Centrum Superkomputerowo-Sieciowe II Konferencja

Bardziej szczegółowo

1. Instalacja platformy.net Framework.

1. Instalacja platformy.net Framework. Konfiguracja sprzętowo-programowa komputera umożliwiająca korzystanie z komponentu do składania podpisu elektronicznego w oknie przeglądarki dla systemów e-giodo oraz Elektroniczna Skrzynka Podawcza (ESP)

Bardziej szczegółowo

Podstawy Informatyki Wprowadzenie do języka C dr inż. Jarosław Bułat

Podstawy Informatyki Wprowadzenie do języka C dr inż. Jarosław Bułat 02 Podstawy Informatyki Wprowadzenie do języka C dr inż. Jarosław Bułat 2012.10.07 Program w języku C Program w języku C jest pisany w pliku tekstowym, następnie przetwarzany przez kompilator do pliku

Bardziej szczegółowo

Tworzenie i obsługa wirtualnego laboratorium komputerowego

Tworzenie i obsługa wirtualnego laboratorium komputerowego Uniwersytet Mikołaja Kopernika Wydział Fizyki, Astronomii i Informatyki Stosowanej Michał Ochociński nr albumu: 236401 Praca magisterska na kierunku informatyka stosowana Tworzenie i obsługa wirtualnego

Bardziej szczegółowo

TEST DIAGNOSTYCZNY. w ramach projektu TIK? tak! - na kompetencje cyfrowe najwyższy czas!

TEST DIAGNOSTYCZNY. w ramach projektu TIK? tak! - na kompetencje cyfrowe najwyższy czas! TEST DIAGNOSTYCZNY w ramach projektu TIK? tak! - na kompetencje cyfrowe najwyższy czas! ZASADY OCENY TESTU 1. Test diagnostyczny składa się z 20 pytań. 2. Każde pytanie zawiera cztery propozycje odpowiedzi.

Bardziej szczegółowo

1.Wstęp. 2.Generowanie systemu w EDK

1.Wstęp. 2.Generowanie systemu w EDK 1.Wstęp Celem niniejszego ćwiczenia jest zapoznanie z możliwościami debuggowania kodu na platformie MicroBlaze oraz zapoznanie ze środowiskiem wspomagającym prace programisty Xilinx Platform SDK (Eclipse).

Bardziej szczegółowo

BSX PRINTER INSTRUKCJA UŻYTKOWNIKA. Autor: Karol Wierzchołowski 30 marca 2015

BSX PRINTER INSTRUKCJA UŻYTKOWNIKA. Autor: Karol Wierzchołowski 30 marca 2015 ! BSX PRINTER INSTRUKCJA UŻYTKOWNIKA Autor: Karol Wierzchołowski 30 marca 2015 SPIS TREŚCI WSTĘP... 3 INTERFEJS PROGRAMU... 5 KONFIGURACJA PROGRAMU... 6 DRUKOWANIE PARAGONÓW I FAKTUR... 8 REJESTRACJA PROGRAMU...

Bardziej szczegółowo

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main. Część XVI C++ Funkcje Jeśli nasz program rozrósł się już do kilkudziesięciu linijek, warto pomyśleć o jego podziale na mniejsze części. Poznajmy więc funkcje. Szybko się przekonamy, że funkcja to bardzo

Bardziej szczegółowo

FAQ Systemu EKOS. 1. Jakie są wymagania techniczne dla stanowiska wprowadzania ocen?

FAQ Systemu EKOS. 1. Jakie są wymagania techniczne dla stanowiska wprowadzania ocen? 27.06.11 FAQ Systemu EKOS 1. Jakie są wymagania techniczne dla stanowiska wprowadzania ocen? Procedura rejestracji ocen wymaga podpisywania protokołów (w postaci wypełnionych formularzy InfoPath Forms

Bardziej szczegółowo

INSTRUKCJA UŻYTKOWNIKA MPCC

INSTRUKCJA UŻYTKOWNIKA MPCC V1.0.0 (10.14.2015) 1 (7) INSTALACJA UWAGA: Produkt działa jako urządzenie nadrzędne Modbus. Dlatego w przypadku podłączania narzędzia do istniejącej sieci Modbus konieczne może okazać się odłączenie innego

Bardziej szczegółowo

Poradnik zetula.pl. Jak założyć konto na zetula.pl. i zabezpieczyć dane na swoim komputerze?

Poradnik zetula.pl. Jak założyć konto na zetula.pl. i zabezpieczyć dane na swoim komputerze? Poradnik zetula.pl Jak założyć konto na zetula.pl i zabezpieczyć dane na swoim komputerze? 1.Wejdź na stronę www.zetula.pl 2.Kliknij na odnośniku Utwórz nowe konto 3.Wypełnij formularz rejestracyjny. Pola

Bardziej szczegółowo

REFERAT O PRACY DYPLOMOWEJ

REFERAT O PRACY DYPLOMOWEJ REFERAT O PRACY DYPLOMOWEJ Temat pracy: Projekt i implementacja mobilnego systemu wspomagającego organizowanie zespołowej aktywności fizycznej Autor: Krzysztof Salamon W dzisiejszych czasach życie ludzi

Bardziej szczegółowo

Android - wprowadzenie. Łukasz Przywarty 171018

Android - wprowadzenie. Łukasz Przywarty 171018 Android - wprowadzenie Łukasz Przywarty 171018 Ramowy plan prezentacji Czym jest Android: definicja, krótka historia. Architektura systemu. Architektura aplikacji. Właściwości systemu. Środowisko deweloperskie.

Bardziej szczegółowo

Linux Kernel II. Hello kernel - jak napisać pierwszy moduł

Linux Kernel II. Hello kernel - jak napisać pierwszy moduł Linux Kernel II Hello kernel - jak napisać pierwszy moduł Przypomnienie (I) Moduły uruchamiane są i działają w przestrzeni Kernela (Kernel space), Moduły piszemy w języku C, Moduły działają inaczej niż

Bardziej szczegółowo

System zarządzający grami programistycznymi Meridius

System zarządzający grami programistycznymi Meridius System zarządzający grami programistycznymi Meridius Instytut Informatyki, Uniwersytet Wrocławski 20 września 2011 Promotor: prof. Krzysztof Loryś Gry komputerowe a programistyczne Gry komputerowe Z punktu

Bardziej szczegółowo

Zarządzanie rolami jakie może pełnić serwer System prosi o wybór roli jaklą ma spełniać serwer.

Zarządzanie rolami jakie może pełnić serwer System prosi o wybór roli jaklą ma spełniać serwer. Zarządzanie rolami jakie może pełnić serwer System prosi o wybór roli jaklą ma spełniać serwer. Możemy dodawać lub usuwać poszczególne role. Można to zrobić później uruchamiając START Zarządzanie tym serwerem

Bardziej szczegółowo

Przewodnik Google Cloud Print

Przewodnik Google Cloud Print Przewodnik Google Cloud Print Wersja B POL Definicje oznaczeń W tym podręczniku użytkownika zastosowano następujący styl uwag: Uwagi informują o tym, jak należy reagować w danej sytuacji, lub zawierają

Bardziej szczegółowo

Pliki zorganizowano w strukturze drzewiastej odzwierciedlając strukturę logiczną aplikacji:

Pliki zorganizowano w strukturze drzewiastej odzwierciedlając strukturę logiczną aplikacji: Technologia wykonania projektu: HTML5 Javascript: o jquery (1.9.1), o CreateJS (0.6.1): EaselJS, TweenJS, PreloadJS. Części funkcjonalne projektu: Strona internetowa pliki strony internetowej zlokalizowane

Bardziej szczegółowo

Instrukcja instalacji Mobile Marketing Pro

Instrukcja instalacji Mobile Marketing Pro Instrukcja instalacji Mobile Marketing Pro Przed rozpoczęciem instalacji MMPro należy pobrać i zainstalować dwa wymagane darmowe komponenty niezbędne do prawidłowego działania programu. Net Framework 2.0

Bardziej szczegółowo

Przewodnik Google Cloud Print

Przewodnik Google Cloud Print Przewodnik Google Cloud Print Wersja 0 POL Definicje oznaczeń W tym podręczniku użytkownika zastosowano następującą ikonę: Informacje dotyczą tego, jak należy reagować w danej sytuacji, lub zawierają wskazówki

Bardziej szczegółowo

Konspekt pracy inżynierskiej

Konspekt pracy inżynierskiej Konspekt pracy inżynierskiej Wydział Elektryczny Informatyka, Semestr VI Promotor: dr inż. Tomasz Bilski 1. Proponowany tytuł pracy inżynierskiej: Komunikator Gandu na platformę mobilną Android. 2. Cel

Bardziej szczegółowo

Wprowadzenie do środowiska Qt Creator

Wprowadzenie do środowiska Qt Creator 1.Instalacja środowiska Qt Creator Qt Creator jest wygodnym środowiskiem programistycznym przeznaczonym do tworzenia projektów, czyli aplikacji zarówno konsolowych, jak i okienkowych z wykorzystaniem biblioteki

Bardziej szczegółowo

K. Konopko; Toolchain. Jądro Linuksa. dr inż. Krzysztof Konopko

K. Konopko; Toolchain. Jądro Linuksa. dr inż. Krzysztof Konopko Jądro Linuksa dr inż. Krzysztof Konopko e-mail: k.konopko@pb.edu.pl 1 Jądro Linuksa Program wykładu: Właściwości jądra Linuksa. Pliki źródłowe jądra. Konfiguracja jądra. Kompilacja i kompilacja skrośna

Bardziej szczegółowo

Serwer druku w Windows Server

Serwer druku w Windows Server Serwer druku w Windows Server Ostatnimi czasy coraz większą popularnością cieszą się drukarki sieciowe. Często w domach użytkownicy posiadają więcej niż jedno urządzenie podłączone do sieci, z którego

Bardziej szczegółowo

Dokumentacja aplikacji Szachy online

Dokumentacja aplikacji Szachy online Projekt z przedmiotu Technologie Internetowe Autorzy: Jakub Białas i Jarosław Tyma grupa II, Automatyka i Robotyka sem. V, Politechnika Śląska Przedmiot projektu: Aplikacja internetowa w języku Java Dokumentacja

Bardziej szczegółowo

Instrukcja instalacji usługi Sygnity Service

Instrukcja instalacji usługi Sygnity  Service Instrukcja instalacji usługi Sygnity EmailService Usługa Sygnity EmailService jest przeznaczona do wysyłania wiadomości pocztą elektroniczną do klientów zarejestrowanych w Systemach Dziedzinowych Sygnity

Bardziej szczegółowo

Kancelaria Prawna.WEB - POMOC

Kancelaria Prawna.WEB - POMOC Kancelaria Prawna.WEB - POMOC I Kancelaria Prawna.WEB Spis treści Część I Wprowadzenie 1 Część II Wymagania systemowe 1 Część III Instalacja KP.WEB 9 1 Konfiguracja... dostępu do dokumentów 11 Część IV

Bardziej szczegółowo

IBM SPSS Statistics dla systemu Linux Instrukcje instalacji (licencja sieciowa)

IBM SPSS Statistics dla systemu Linux Instrukcje instalacji (licencja sieciowa) IBM SPSS Statistics dla systemu Linux Instrukcje instalacji (licencja sieciowa) Przedstawione poniżej instrukcje dotyczą instalowania IBM SPSS Statistics wersji 20 przy użyciu licencja sieciowa. Ten dokument

Bardziej szczegółowo

Instalacja i konfiguracji czytników kart kryptograficznych, aplikacji procertum CardManager w systemach Mac OS X

Instalacja i konfiguracji czytników kart kryptograficznych, aplikacji procertum CardManager w systemach Mac OS X Instalacja i konfiguracji czytników kart kryptograficznych, aplikacji procertum CardManager w systemach Mac OS X wersja 1.0 Spis treści 1 WSTĘP... 3 2 INSTALACJA CZYTNIKÓW KART KRYPTOGRAFICZNYCH W SYSTEMACH

Bardziej szczegółowo

BGK@24Biznes Pierwsze kroki w systemie 2014-11-27 2011-11-21

BGK@24Biznes Pierwsze kroki w systemie 2014-11-27 2011-11-21 BGK@24Biznes Pierwsze kroki w systemie 2014-11-27 2011-11-21 BGK@24Biznes Dziękujemy Państwu za wybranie usługi bankowości elektronicznej Banku Gospodarstwa Krajowego BGK@24Biznes. Nasz system bankowości

Bardziej szczegółowo

Instalacja SQL Server Express. Logowanie na stronie Microsoftu

Instalacja SQL Server Express. Logowanie na stronie Microsoftu Instalacja SQL Server Express Logowanie na stronie Microsoftu Wybór wersji do pobrania Pobieranie startuje, przechodzimy do strony z poradami. Wypakowujemy pobrany plik. Otwiera się okno instalacji. Wybieramy

Bardziej szczegółowo

Ćwiczenie 1. Przygotowanie środowiska JAVA

Ćwiczenie 1. Przygotowanie środowiska JAVA Ćwiczenie 1 Przygotowanie środowiska JAVA 1. Wprowadzenie teoretyczne Instalacja JDK (Java Development Kit) NaleŜy pobrać z java.sun.com środowisko i zainstalować je. Następnie naleŝy skonfigurować środowisko.

Bardziej szczegółowo

Acronis Backup & Recovery 10 Server for Linux. Instrukcja szybkiego rozpoczęcia pracy

Acronis Backup & Recovery 10 Server for Linux. Instrukcja szybkiego rozpoczęcia pracy Acronis Backup & Recovery 10 Server for Linux Instrukcja szybkiego rozpoczęcia pracy W tym dokumencie opisano sposób instalowania programu Acronis Backup & Recovery 10 Server for Linux oraz rozpoczynania

Bardziej szczegółowo

Dell UltraSharp UP3017 Dell Display Manager Instrukcja użytkownika

Dell UltraSharp UP3017 Dell Display Manager Instrukcja użytkownika Dell UltraSharp UP3017 Dell Display Manager Instrukcja użytkownika Model: UP3017 Model - zgodność z przepisami: UP3017t UWAGA: UWAGA oznacza ważną informację, pomocną w lepszym używaniu komputera. Copyright

Bardziej szczegółowo

e-awizo SYSTEM POTWIERDZANIA DORĘCZEŃ POCZTY ELEKTRONICZNEJ

e-awizo SYSTEM POTWIERDZANIA DORĘCZEŃ POCZTY ELEKTRONICZNEJ e-awizo SYSTEM POTWIERDZANIA DORĘCZEŃ POCZTY ELEKTRONICZNEJ www.e-awizo.pl BrainSoft sp. z o. o. ul. Bolesława Chrobrego 14/2 65-052 Zielona Góra tel.68 455 77 44 fax 68 455 77 40 e-mail: biuro@brainsoft.pl

Bardziej szczegółowo

OpenOfficePL. Zestaw szablonów magazynowych. Instrukcja obsługi

OpenOfficePL. Zestaw szablonów magazynowych. Instrukcja obsługi OpenOfficePL Zestaw szablonów magazynowych Instrukcja obsługi Spis treści : 1. Informacje ogólne 2. Instalacja zestawu a) konfiguracja połączenia z bazą danych b) import danych z poprzedniej wersji faktur

Bardziej szczegółowo

INSTRUKCJA INSTALACJI SYSTEMU

INSTRUKCJA INSTALACJI SYSTEMU Zarządzanie Procesami Informatycznymi Sp. z o.o. 54-204 Wrocław, ul. Legnicka 62 Tel. : ( 071 ) 354 88 88 Fax : ( 071 ) 354 88 99 E-mail : biuro@vilico.pl INSTRUKCJA INSTALACJI SYSTEMU Wersja 1.4-1 - Spis

Bardziej szczegółowo

Fragment wykładu z języka C ( )

Fragment wykładu z języka C ( ) Fragment wykładu z języka C (2002-2009) Piotr Szwed pszwed@agh.edu.pl Program make Typowy program w języku C/C++ składa się z wielu odrębnych modułów (jednostek translacji). Ich liczba może dochodzić do

Bardziej szczegółowo

Instrukcja instalacji usługi Sygnity SmsService

Instrukcja instalacji usługi Sygnity SmsService Instrukcja instalacji usługi Sygnity SmsService Usługa Sygnity SmsService jest przeznaczone do wysyłania wiadomości tekstowych na telefony klientów zarejestrowanych w Systemach Dziedzinowych Sygnity wykorzystywanych

Bardziej szczegółowo

Być może jesteś doświadczonym programistą, biegle programujesz w Javie,

Być może jesteś doświadczonym programistą, biegle programujesz w Javie, Kompendium PHP 01 Być może jesteś doświadczonym programistą, biegle programujesz w Javie, C++, Pythonie lub jakimś innym języku programowania, których jak myślę, powstało już tyle, że chyba nie ma osoby,

Bardziej szczegółowo

Usługi sieciowe systemu Linux

Usługi sieciowe systemu Linux Usługi sieciowe systemu Linux 1. Serwer WWW Najpopularniejszym serwerem WWW jest Apache, dostępny dla wielu platform i rozprowadzany w pakietach httpd. Serwer Apache bardzo często jest wykorzystywany do

Bardziej szczegółowo

Wdrożenie modułu płatności eservice. dla systemu Magento 1.4 1.9

Wdrożenie modułu płatności eservice. dla systemu Magento 1.4 1.9 Wdrożenie modułu płatności eservice dla systemu Magento 1.4 1.9 - dokumentacja techniczna Wer. 01 Warszawa, styczeń 2014 1 Spis treści: 1 Wstęp... 3 1.1 Przeznaczenie dokumentu... 3 1.2 Przygotowanie do

Bardziej szczegółowo

Uniwersytet Warszawski Wydział Matematyki, Informatyki i Mechaniki. Paweł Parys. Nr albumu: 209216. Aukcjomat

Uniwersytet Warszawski Wydział Matematyki, Informatyki i Mechaniki. Paweł Parys. Nr albumu: 209216. Aukcjomat Uniwersytet Warszawski Wydział Matematyki, Informatyki i Mechaniki Paweł Parys Nr albumu: 209216 Aukcjomat Praca licencjacka na kierunku INFORMATYKA w zakresie INFORMATYKA Praca wykonana pod kierunkiem

Bardziej szczegółowo

Instrukcja obsługi Zaplecza epk w zakresie zarządzania tłumaczeniami opisów procedur, publikacji oraz poradników przedsiębiorcy

Instrukcja obsługi Zaplecza epk w zakresie zarządzania tłumaczeniami opisów procedur, publikacji oraz poradników przedsiębiorcy Instrukcja obsługi Zaplecza epk w zakresie zarządzania tłumaczeniami opisów procedur, publikacji oraz poradników przedsiębiorcy Spis treści: 1 WSTĘP... 3 2 DOSTĘP DO SYSTEMU... 3 3 OPIS OGÓLNY SEKCJI TŁUMACZENIA...

Bardziej szczegółowo

Polityka prywatności 1. Definicje Administrator Cookies - Cookies Administratora - Cookies Zewnętrzne - Serwis - Urządzenie - Ustawa Użytkownik -

Polityka prywatności 1. Definicje Administrator Cookies - Cookies Administratora - Cookies Zewnętrzne - Serwis - Urządzenie - Ustawa Użytkownik - Polityka prywatności Niniejsza Polityka Prywatności określa zasady przechowywania i dostępu do informacji na urządzeniach Użytkownika za pomocą plików Cookies, służących do realizacji usług świadczonych

Bardziej szczegółowo