podroz do wnetrza systemu linux 11-2010

45
5/12/2018 PodrozDoWnetrzaSystemuLinux11-2010-slidepdf.com http://slidepdf.com/reader/full/podroz-do-wnetrza-systemu-linux-11-2010 1/45

Upload: rafal-radziszewski

Post on 14-Jul-2015

131 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Podroz Do Wnetrza Systemu Linux 11-2010

5/12/2018 Podroz Do Wnetrza Systemu Linux 11-2010 - slidepdf.com

http://slidepdf.com/reader/full/podroz-do-wnetrza-systemu-linux-11-2010 1/45

Page 3: Podroz Do Wnetrza Systemu Linux 11-2010

5/12/2018 Podroz Do Wnetrza Systemu Linux 11-2010 - slidepdf.com

http://slidepdf.com/reader/full/podroz-do-wnetrza-systemu-linux-11-2010 3/45

Szanowni Czytelnicy, 

Zapraszamy również do pobierania numerów archiwalnych

Linux+, począwszy od numeru 1/2005

http://lpmagazine.org/pl/download

Page 4: Podroz Do Wnetrza Systemu Linux 11-2010

5/12/2018 Podroz Do Wnetrza Systemu Linux 11-2010 - slidepdf.com

http://slidepdf.com/reader/full/podroz-do-wnetrza-systemu-linux-11-2010 4/45

��������������� ��

��������

���������������

���

���������������

��������������������������������������������������

��������������������������������������������������������������������������������

������������������

����������

www.horyzont.eu

��

���

�����

SPIS TREŚCI 6 Aktualności

JĄDRO LINUKSA12 Linux Kernel: Podróż do wnętrza systemuCzęść czwarta (4/7): Zarządzanie procesami,wywołania systemowe oraz system plików /procRafał Kułaga

W poprzedniej części cyklu zajęliśmy się podstawowy-

mi zagadnieniami związanymi z programowaniem mo-

dułów jądra. Na kilku prostych przykładach przekonałeśsię, iż pisanie kodu działającego w przestrzeni jądra nie

 jest wcale takie trudne, jeżeli będziemy stosować się do

przedstawionych zaleceń. W tym numerze poznasz ko-

lejny mechanizm, niezbędny przy tworzeniu modułów,

które mają mieć realne zastosowania – system plików

/proc. Najpierw jednak przyjrzymy się zarządzaniu pro-

cesami w jądrze Linux oraz obsłudze wywołań syste-

mowych. Zapraszam do lektury!

11/2010

ROZWIĄZANIA22 Funkcjonalność systemu Openbravo ERPBartosz Rybicki, Magdalena Ziębińska

Otwarte systemy klasy ERP (Enterprise Resource

Planning ) odgrywają coraz większą rolę na świato-

wych rynkach. Ideę Open Source można śmiało na-

zwać milowym krokiem w ewolucji systemów wspo-

magających kompleksowe zarządzanie przedsiębior-

stwem. Pozwala ona na znaczną redukcję kosztów

wdrożenia dzięki darmowej, nieograniczonej licencji.

Dodatkowo ogólnodostępny kod źródłowy umożliwia

błyskawiczny rozwój produktów w porównaniu do ichkomercyjnych odpowiedników.

28 Prolog – zalety programowania w logicePiotr Orzeszek 

W książce „2001: Odyseja kosmiczna” Arthura C. Clar-

ke’a zainstalowany na statku „Discovery 1” komputer 

pokładowy HAL 9000 sprawuje nadzór nad przebie-

giem misji. Zarządza wszelkimi aspektami lotu, a także

Reklama

Page 5: Podroz Do Wnetrza Systemu Linux 11-2010

5/12/2018 Podroz Do Wnetrza Systemu Linux 11-2010 - slidepdf.com

http://slidepdf.com/reader/full/podroz-do-wnetrza-systemu-linux-11-2010 5/45

5

DLA POCZĄTKUJĄCYCH36 KTurtle – logo na linuxieŁukasz Lechert 

Logo, kto o tym pamięta? Czy projekt ten jeszcze ży-

 je? Czy pokolenie trzydziestolatków i starszych kole-

żanek i kolegów pamięta czasy wrocławskiego Elwro,

ZX Spectrum i ówczesny marketing w szkołach pro-

mujący ten język programowania? Jeśli tak, to zapra-

szam do wstępu do logo i współczesnej implementa-

cji Kturtle.

RECENZJA40 Media-Tech MT1503 – Rogue RFMaciej Mroziński 

KONKURS42 GaduGadu

Miesięcznik Linux+ (12 numerów w roku) jest wydawany przez Software PressSp. z o.o. SK

Redaktor naczelny i korekta: Tomasz Łopuszań[email protected] 

Skład i łamanie: Tomasz Kostrowww.studiopoligraficzne.com

Kierownik produkcji: Andrzej [email protected] 

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, 02-682 Warszawa,Polskatel. +48 22 427 36 91,fax +48 22 224 24 59www.sdjournal.org [email protected] 

Dział reklamy: [email protected] 

Redakcja dokłada wszelkich starań,by publikowane w piśmie i natowarzyszących mu nośnikach informacje

i programy były poprawne, jednakżenie bierze odpowiedzialności za efekty

wykorzystania ich; nie gwarantuje takżepoprawnego działania programówshareware, freeware i public domain.Wszystkie znaki firmowe zawartew piśmie są własności odpowiednich firm.Zostały użyte wyłącznie w celachinformacyjnych.

Osoby zainteresowane współpracą 

prosimy o kontakt:[email protected] 

5

 jako jedyny zna prawdziwy cel wyprawy. Nie tylko prze-

twarza dane, aby udostępnić je załodze, lecz przede

wszystkim samodzielnie podejmuje decyzje. Wyprowa-

dza wnioski z przesłanek. Dzięki temu staje się prawie

równie inteligentny jak ludzie.

Zagadnienia sztucznej inteligencji należą niewątpliwie

do najbardziej fascynujących zagadnień współczesnej

informatyki. Osobiście gdyby przyszło mi kiedyś pro-

gramować komputer pokroju HAL-a wykorzystałbym

do tego celu język Prolog. Jest to jeden z niewielu ję-

zyków programowania, o którym można powiedzieć, że

wystarczy w nim opisać problem aby maszyna sama

znalazła jego rozwiązanie.

34 NmonKamil Porembiński 

W Linuksie istnieje wiele narzędzi do monitorowania

systemu. Jeżeli chcemy sprawdzić zużycie pamięci czy

obciążenie procesora sięgamy po program top. Nasłu-

chujące porty sprawdzamy poleceniem netstat. Często

korzystamy z takich rozwiązań jak vmstat czy free. A te-

raz wyobraźmy sobie jedno narzędzie, które potrafi mo-

nitorować te wszystkie parametry.

SPIS TREŚCI 

Reklama

Page 6: Podroz Do Wnetrza Systemu Linux 11-2010

5/12/2018 Podroz Do Wnetrza Systemu Linux 11-2010 - slidepdf.com

http://slidepdf.com/reader/full/podroz-do-wnetrza-systemu-linux-11-2010 6/4511/20106

AKTUALNOŚCIDział prowadzi Andrzej Jankowski 

Inżynier Oprogramowania C++

Zakres obowiązków:Inżynier Oprogramowania C++:

• Tworzy oprogramowanie dla platformy wbudowanej najnowszych tech-nologii radiowych;

• Ma możliwość ciągłego rozwijania swoich umiejętności w różnych do-

menach IT;• Jest odpowiedzialny za analizę wymagań, projektowanie oprogramo-

wania, implementację i testy;• Pracuje w samo-organizujących się zespołach zgodnie z metodyką 

Scrum;• Współpracuje w międzynarodowym środowisku nad integracją opro-

gramowania oraz rozwiązywaniem problemów.

Wymagania:Kluczowe wymagania:

• Umiejętność zorientowanego obiektowo projektowania i tworzeniaoprogramowania;

• Dobra znajomość języka C++;• Biegła znajomość języka angielskiego.

Pożądane cechy:

• Tytuł inżyniera lub magistra informatyki, telekomunikacji lub pokrew-nych;

• Doświadczenie w tworzeniu oprogramowania wbudowanego orazumiejętność programowania współbieżnego stanowi dodatkowy atut.

Umiejętności interpersonalne:

• Umiejętność pracy w grupie;• Umiejętność efektywnej komunikacji oraz współpracy w międzynarodo-

wym środowisku;• Zdolności analityczne.

Opis działu:Dział Network Systems Radio Access, odpowiedzialny jest za dostarcza-nie najlepszych w swojej klasie radiowych sieci dostępowych dla technolo-gii GSM, WCDMA oraz LTE. Glównymi zadaniami wrocławskiego centrumbadań i rozwoju jest specyfikacja, projektowanie, implementacja, testowa-nie i utrzymanie oprogramowania dla różnych wariantów stacji bazowychNokia Siemens Networks.

Koniec pomocy technicznej dlaUbuntu 9.04Programiści Canonicala przypomnieliużytkownikom, że wydane w kwietniu2009 roku Ubuntu 9.04 wkrótce osią-

gnie koniec 18-miesięcznego okresużycia, w którym zapewniana jest sys-temowi pomoc techniczna. Po 23 paź-dziernika 2010 roku wydanie tej dys-trybucji Linuksa nie otrzyma już więcejpoprawek bezpieczeństwa, nawet doty-czących krytycznych usterek. Użytkow-nicy mogą uaktualnić system do wersjiUbuntu 9.10, jednak lepiej wybraćUbuntu 10.04 LTS, bo okres pomocytechnicznej dla tego wydania przewi-dziany jest na 3 lata dla wersji deskto-powych. Niestety, nie da się przepro-

wadzić bezpośredniej aktualizacji sys-temu z wydania 9.04 do wersji Ubuntu10.04 LTS. Aby być na bieżąco, należynajpierw przeprowadzić uaktualnieniedo wersji 9.10, a dopiero potem aktuali-zować OS do wydania 10.04. Na stronieprojektu znajdziemy instrukcje ułatwia-

 jące wykonanie tej operacji. Źródło:http://www.heise-online.pl 

Zestaw łat dla produktów CiscoKoncern Cisco opublikował pięć rapor-tów opisujących 12 błędów w prze-znaczonym dla routerów i przełączni-ków systemie operacyjnym IOS oraz

 jeden raport na temat dwóch usterek w produkcie Unied CommunicationsManager. Od pewnego czasu Ciscołączy uaktualnienia IOS-a w paczki,wydając je dwa razy do roku w ustalo-nych terminach.Błędy w IOS-ie dotyczą obsługi pro-

tokołów H.323, SIP, IGMP, NAT i połą-czeń SSL VPN, a mogą zostać wykorzy-stane w sposób zdalny do ponowne-go uruchomienia urządzenia. W tymcelu wystarczy przesłać spreparowanypakiet do podatnego na ataki sprzę-tu. Zadziała to w przypadku protoko-łów opartych na UDP, takich jak SIP,nawet z pakietami opatrzonymi sfał-szowanym adresem nadawcy – ltrokreślonych adresów działa zatemtylko częściowo. Wadliwe są wydania6, 7 i 8 systemu.W przypadku Unied CommunicationManagera również mamy do czynie-nia z błędami w implementacji pro-tokołu SIP, które mogą być wykorzy-stane do zdalnego przeprowadzaniaataków typu Denial of Service.Aktualizacje, w których naprawionobłędy, Cisco dostarcza zarejestrowa-nym klientom.

  Źródło: http://www.heise-online.pl/ 

Page 7: Podroz Do Wnetrza Systemu Linux 11-2010

5/12/2018 Podroz Do Wnetrza Systemu Linux 11-2010 - slidepdf.com

http://slidepdf.com/reader/full/podroz-do-wnetrza-systemu-linux-11-2010 7/45

AktualnościDział prowadzi Andrzej Jankowski 

Java SW Engineer

Main Purpose of The Role and The Key Responsibilities:Java Software Engineer is responsible for:

• requirement analysis,• software design,• implementation of test automation platform for software integration te-

sting of UMTS Base Station• writing specications and documentation for the relevant part of the so-

ftware.• cooperation with SW Testing Engineers on integration within the real system

Requirements:Essential requirements:

• experience in Java SE, Object Oreinted Design and Progamming,• experience in concurrent programming (multithreading, multitasking),

Desired skills include:

• B.Sc or M.Sc in faculty of Computer Science, spec. Software Engine-ering or similiar 

• UML, XML, design patterns• knowledge of RCP and experience on working with Version Control

System(s) would be an advantage• uency in English

Personal Attributes:

• good interpersonal and teamwork skills• ability to communicate and co-operate with other people in various si-

tuations• strong analytical skills are important advantage

Business Unit Description:Network Systems BU is responsible for the provisioning the best in classradio access networks for the GSM, WCDMA, WiMAX and LTE technolo-

gies. The responsibility of BTS R&D site at Wroclaw is to specify, design,implement, test and maintain software for many variants of Nokia SiemensNetworks base stations.

Antico Light – środowisko graficzne oparte o QtPojawiło się “nowe” lekkie środowisko graficzne oparte o bibliotekę Qt o na-zwie “Antico Light”. De facto jest to fork, być może niektórym znanego, śro-dowiska “Antico”. Autor wprowadził szereg zmian ułatwiających zarządzanieoknami, co w pierwotnej wersji było czasami wręcz irytujące. W rezultacieotrzymaliśmy produkt, który cechuje się niezwykła lekkością i intuicyjną ob-sługą. Źródła można pobrać ze strony “qt-apps.org”, do kompilacji wymaga-ne są jedynie dwie biblioteki, Qt i xlib, oraz oczywiście pliki nagłówkowe dotych bibliotek. Myślę że warto sprawdzić w “Antico Light” w działaniu, gdyżmimo, że to dopiero wersja “alfa”, jest w miarę stabilne. Instrukcja instalacjiznajduje się na na stronie qt-apps.org. Źródło: http://www.osnews.pl 

VMVision Manager 1.1Przed kilkoma dniami pojawiła sięnowa wersja VMVision Manager,narzędzia ułatwiającego administra-cję maszynami wirtualnymi działają-cymi pod kontrolą VMware ESX. VMVi-sion Manager bazuje na rozwiąza-niu ESX Manager, zaprojektowanymi rozwijanym przez Manfred’a Meie-r’a pod szyldem szwajcarskiej rmyVMVision GmbH. VMVision Managerumożliwia integrację wielu serwerówvCenter i hostów ESX. Pozwala na śle-dzenie wszelkich zdarzeń w środowi-sku wirtualnym. Jak zapewnia produ-cent, dzięki VMVision Manager pracaz produktami VMware staje się o wie-le prostsza. Oprogramowanie dostęp-ne jest w dwóch edycjach VMVisionManager Client Edition w cenie 140EUR oraz VMVision Manager Enterpri-se Edition w cenie 1490 EUR. Pełną listafunkcji wraz z wersją trial do pobraniamożna znaleźć na stronie producenta:http://www.vmvision.com/ 

 Źródło: http://virtual-it.pl/ 

Programowanie w LinuksiePod adresem http://lpmagazine.org/ 

 pl/linux+-poleca możecie pobraćarchiwalny specjalny numer SDJ Extra– Programowanie w Linuksie.

W numerze znajdują się takie artyku-ły, jak:

• Programowanie w OpenOce.orgBasic

• Universal Network Object• Programowanie GUI w językach

interpretowanych• O Linuxie dla twórców aplikacji

wbudowanych• Scratchbox – Narzędzie do kompi-

lacji skrośnej• C++ i Kernel Linuxa• Sterowniki dla Linuxa

Zapraszamy!

Druga edycji Dni Gościaz Grzegorzem Turniakiem20 września we Wrocławiu i 28 wrze-śnia w Warszawie ruszyła druga edycjaDni Gościa, spotkań na których prezesBNI Polska – Grzegorz Turniak, opo-wiada o tam jak dzięki rekomenda-cjom zwiększać zyski rmy i doprowa-dzić do rozwoju biznesu. Po wykładzie

 jest networking, czyli zapoznawanie sięuczestników i wymiana wizytówek. DniGościa obędą się także w innych sze-ściu miastach Polski w październiku.Szczegóły na: http://dnigoscia.pl/ 

Page 8: Podroz Do Wnetrza Systemu Linux 11-2010

5/12/2018 Podroz Do Wnetrza Systemu Linux 11-2010 - slidepdf.com

http://slidepdf.com/reader/full/podroz-do-wnetrza-systemu-linux-11-2010 8/4511/20108

AKTUALNOŚCIDział prowadzi Andrzej Jankowski 

Koniec Icaros Desktop VE i zapowiedź IcarosDesktop 1.2.4Paolo Besser ostatecznie zakończył rozwój linii dystrybucji Icaros Desk-top przeznaczonej dla maszyn wirtualnych oznaczonej “VE”. Ze stronydomowej projektu możliwe jest już tylko pobranie wersji Live! (obraz pły-

ty DVD) i Light (nieco odchudzona dystrybucja mieszcząca się na płycieCD). Powodem tej decyzji były problemy z kompatybilnością jednej wer-sji VE z wszystkimi dostępnymi maszynami wirtualnymi. Wiele technologiiwirtualizacji pojawiło się w ostatnich trzech latach i wspieranie ich wszyst-kich jest praktycznie niemożliwe. Doświadczenia autora wskazywały nato, że mimo iż istnieje standardowy format wirtualizacji, który powinien byćkompatybilny z wszystkimi maszynami, to jednak rzeczywistość okazałasię inna. Jeśli zmiany były dobre dla maszyny wirtualnej VirtualBox, poja-wiały się skargi od użytkowników VMware i na odwrót. Podobnie z fanamiVirtualPC / Parallels itp. Poza tym autor uznał, że instalacja Icaros Desk-top na VMware lub VirtualBox jest łatwiejsze niż na prawdziwym kompu-

terze, więc specjalna wersja VE nie jest już konieczna. Paolo Besser po-informował także, że nadchodzi nowa aktualizacja Icaros Desktop! Wer-sja 1.2.4 będzie zawierać wiele ulepszeń (domyślnie sticky menu i wspar-cie dla grafiki 2D/3D ION), nowe programy i wiele, wiele aktualizacji pro-gramów.Źródło: http://www.osnews.pl 

Kod innych producentów częstą przyczyną luk we własnym oprogramowaniuStosowanie fragmentów kodu lub bibliotek innych producentów we wła-snym oprogramowaniu to jedna z najczęstszych przyczyn powstawanialuk bezpieczeństwa. Tak wynika z badań przeprowadzonych przez spe-cjalizującą się w audytowaniu kodu firmę Veracode. Nie jest to bynajmniejzaskoczeniem, co niedawno potwierdziły usterki we frameworku ASP.NETi w wolnej bibliotece bzip2. Bardziej zaskakuje fakt, że programy dostaw-ców zewnętrznych bywają przeważnie mniej bezpieczne od tych tworzo-nych samodzielnie.Veracode świadczy usługi w zakresie bazujących naprzetwarzaniu w chmurze, zautomatyzowanych analiz oprogramowania.Podczas badań okazało się, że 81% zgłoszonych do sprawdzenia progra-mów firm trzecich zawierało niedoskonałości dotyczące bezpieczeństwa,

natomiast w przypadku własnościowych aplikacji jedynie 57% spośródokoło 2900 przebadanych produktów wykazywało podobne braki. W za-leżności od użytego języka programowania, względnie platformy progra-mistycznej, mamy do czynienia z różnymi usterkami: w przypadku Javy(46%) i .NET-u (66%) listę najczęstszych błędów otwiera luka Cross-SiteScripting. W oprogramowaniu powstałym na bazie C/C++ najpowszech-niejsze są nadal błędy przepełnienia bufora. Jeśli chodzi o problemy na-tury kryptograficznej, to w przypadku platformy .NET plasują się one nadrugim miejscu (13%), Javy wciąż na czwartym miejscu (7%), a językówC/C++ na szóstym miejscu (3%). Według analiz cztery na pięć aplikacjinie spełniło kryteriów rankingu Top 10 projektu OWASP (Open Web Ap-plication Security Project). Zdaniem firmy Veracode szczególnie oprogra-mowanie używane przez banki, ubezpieczycieli i instytucje finansowe jestnieodpowiednio chronione przy realizacji transakcji. Jednak w porówna-niu z poprzednimi badaniami programiści łatają teraz luki szybciej – śred-nio w ciągu 16 zamiast 30 dni.Źródło: http://www.heise-online.pl 

Stabilna wersja przeglądarki gra-cznej gThumb 2.12Ukazała się stabilna wersja progra-mu gThumb Photo Manager 2.12,popularnej przeglądarki graki dla

Linuksa.Program gThumb od ukazaniasię poprzedniej stabilnej wersjiprzeszedł sporo zmian. Pojawiłysię między innymi takie funkcje jak obsługa serwisów społecznościo-wych (na przykład Facebook) i albu-mów webowych. Aplikacja umożli-wia eksport zdjęć do popularnychserwisów – Flickr, Picasa Web i Pho-tobucket. Natomiast import foto-grai możliwy jest z Flickra i PicasaWeb. Ponadto gThumb oprócz

grak może teraz odtwarzać rów-nież materiały wideo. Poprawio-ne zostały też błędy jak aktualizacjawielu danych czy niektóre problemyz obsługą katalogów.Przypomnijmy: gThumb posia-da takie funkcje jak przeglądanieplików, importowanie zdjęć z apara-tów i kamer cyfrowych oraz nagry-wanie na płyty CD. Poza tym pozwa-la tworzyć pokazy slajdów, genero-wać albumy internetowe, wyszuki-wać duplikaty, a także dokonywać

prostej obróbki graki. Wśród opcjiedycji obrazów gThumb oferujemożliwość skalowania i zmiany roz-miaru, przycinanie, uwydatnianie,obracanie o zadaną liczbę stopni,redukcję kolorów i efektu czerwo-nych oczu czy funkcję wyrównywa-nia histogramu. W ręce użytkowni-ka traa także kilka prostych efektów– desaturacja, negatyw, opcje ustala-nia balansu kolorów, odcienia, nasy-cenia, jasności i kontrastu.

  Źródło: http://dobreprogramy.pl 

Mesa 7.9 wchodzi w wydaniekandydująceMesa 7.9, jedno z największychuaktualnień otwartych sterowni-ków gracznych, weszło właśniew fazę wydania kandydującego. Jak podaje Ian Romanick wydanie nal-ne powinno się ukazać w ciągu tygo-dnia, czyli 4 października tego roku.Mesa 7.9 przynosi wiele uspraw-nień, m.in. wsparcie dla rozszerzeńOpenGL i całkiem nowy kompila-tor GLSL. Znajdziemy również sporąliczbę indywidualnych klasycznychsterowników DRI, jak i architekturęGallium3D wraz ze sterownikami.

  Źródło: http://thecamels.org

Page 9: Podroz Do Wnetrza Systemu Linux 11-2010

5/12/2018 Podroz Do Wnetrza Systemu Linux 11-2010 - slidepdf.com

http://slidepdf.com/reader/full/podroz-do-wnetrza-systemu-linux-11-2010 9/45www.lpmagazine.org 9

AktualnościDział prowadzi Andrzej Jankowski 

Wydano OpenShot Video Editor 1.2.2Ukazała się stabilna wersja linuksowego programu OpenShot Video Editor 1.2.2. Umożliwia on użytkownikom systemu Linux łatwą obróbkę filmów wi-deo. OpenShot Video Editor jest nieliniowym edytorem wideo przeznaczo-nym dla użytkowników Linuksa. Do najważniejszych funkcji programu na-

leży zaliczyć obsługę animacji Key Frame, funkcję dodawania przejść wi-deo z możliwością podglądu w czasie rzeczywistym, edycji kolorów, barw,

  jasności czy opcję zmiany szybkości odtwarzania wideo (efekt slow mo-tion). Nad najnowszym wydaniem programu pracowano od pięciu miesię-cy. Wprowadza ono kilka istotnych zmian. Pojawiła się między innymi moż-liwość dodawania animowanych tytułów w 3D dzięki wykorzystaniu progra-mu Blender 2.5. Kolejne nowości to niestandardowe przejścia, dodatkoweefekty wideo i audio, a także możliwość eksportu plików do DVD. Open-Shot został też dostosowany pod kątem użytkowników netbooków, popra-wiono również obsługę osi czasu. Ponadto pojawił się nowy silnik motywówi rozszerzone preferencje programu. Klip wideo prezentujący nowości moż-

na obejrzeć na stronach serwisu Vimeo. Zaktualizowaną wersję programumożna pobrać z vortalu z działu PROGRAMY -> Multimedia -> Tworzeniei edycja filmów.Źródło: http://www.dobreprogramy.pl 

VectorLinux SOHO Deluxe 6.0 wydanyZespół deweloperów VectorLinux, komercyjnej dystrybucji Linuksa, ogłosiłwydanie nowej wersji swojego systemu operacyjnego – SOHO Deluxe 6.0.SOHO DELUXE wykorzystuje środowisko KDE 4.5 oraz najnowszą wer-sję xfce4 jako opcjonalny wybór. Szóste wydanie zostało zaktualizowaneo nowe wersje pakietów dostępnych publicznie, m.in. Digikam 1.4.0, Gimp

2.6.10, K3B 2.0, Scribus, OpenOffice, Amarok 2.3.1, kmymoney. Oczywi-ście nie zapomniano także o aktualizacji Firefoksa, Opery czy SeaMonkey.Kolejne zmiany to poprawki w instalatorze, który występuje w domyślnejwersji jako graficzny. Kernel wykorzystywany w tym wydaniu to 2.6.33.11.SOHO zawiera obsługę multimediów bez ingerencji użytkownika (out-of-box), takiej jak wyszukiwanie kodeków, by móc odtwarzać pliki multimedial-ne na swoim komputerze. Nowe wydanie jest już dostępne w sklepie inter-netowym dystrybucji VectorLinux.Źródło: http://www.osnews.pl 

Natywna implementacja DirectX 11 dla Linuksa

Gallium3D, biblioteka na bazie której tworzone są sterowniki grafiki 3D,wzbogaciła się o wstępną obsługę API DirectX 11. Umożliwi to natywną ob-sługę API DirectX 11 w systemie Linux - informuje Phoronix. Dzięki zmia-nom wprowadzonym do bibliotek Gallium3D możliwe stanie się uruchamia-nie gier zgodnych z interfejsem programowania DirectX 10/11 w środowiskuWine bez potrzeby konwertowania instrukcji Direct3D do formatu OpenGL.Obecnie Wine oferuje jedynie szczątkową obsługę DirectX 10. Twórcy im-plementacji podkreślają, że ich rozwiązanie zapewnia lepszą wydajność niżstosowanie API OpenGL - w przypadku Gallium3D konieczne jest bowiemnapisanie i skompilowanie dużo mniejszej ilości kodu. Natywna obsługa Di-rect3D 10/11 w systemie Linux wymagała dopisania do Mesa 3D około 26tysięcy linijek kodu. Choć nowa wersja bibiotek Gallium3D nie jest jeszczeukończona, użytkownicy mogą z ich pomocą przeprowadzić pierwsze testyDirectX 11 w systemie Linux. Biblioteka Gallium3D została napisana przezVMware, firmę znaną z produkcji oprogramowania do wirtualizacji. Autoremnajnowszych zmian wprowadzonych do Gallum3D jest Luca Barbieri.Źródło: http://www.dobreprogramy.pl 

Seabird – koncepcja telefonuopen source od MozilliMozilla już ponad rok temu urucho-miła witrynę, gdzie pomysłowi użyt-kownicy mogą proponować swoje

koncepcje unikalnych rozwiązań,które mogą w przyszłości ułatwićżycie milionom ludzi.W 2009 roku Billy May rozpoczął two-rzenie prezentacji telefonu przyszło-ści, który teraz można już podziwiaćw pełnej krasie. Urządzenie zwanepoczątkowo MozPhone, ewoluowałodo Seabird.Jedną z głównych innowacji, którejna razie nie znajdziemy w żadnymseryjnie produkowanym telefonie

  jest wirtualna klawiatura wyświetla-

na na płaskiej powierzchni obok tele-fonu. Pomysł nie jest nowy, jednak ze względu na duże zużycie ener-gii oraz konieczność wbudowywaniamikroprojektorów, producenci urzą-dzeń na razie niechętnie spoglądająw stronę takich innowacji. Warto teżzauważyć, że zwykle telefonu używa-my, trzymając go w ręku (nierzadko wruchu), a nie jak stojącego na biurkukomputera.Sam design jest natomiast bardzonowoczesny i ciekawy. Dodatko-

we funkcje mają sprawić, że telefonmógłby być swego rodzaju zamienni-kiem dla netbooka. Na razie pojawiasię jeszcze kilka barier natury tech-nicznej (na przykład słabe baterie czyograniczona wydajność), jednak jakokoncept, nie można mieć pretensji.Ciekawostką w tym przypadku jestfakt, że interfejs telefonu przypomi-na ten znany z Androida, natomiastpodczas korzystania z rzutnika wyraź-nie wyświetlano Windows 7 (choć tooczywiście jedynie wizualizacja).

Choć projekt ma bardzo otwarty cha-rakter, Mozilla przyznaje, że nie mazamiaru produkować telefonu. Całośćtraktuje bardziej jako ciekawostkęi pokaz siły swojej społeczności.Prezentację urządzenia można zoba-czyć tu: http://www.youtube.com/ watch?v=WvxKGDDCZrk&hd=1

  Źródło: http://www.ubucentrum.net/ 

Page 10: Podroz Do Wnetrza Systemu Linux 11-2010

5/12/2018 Podroz Do Wnetrza Systemu Linux 11-2010 - slidepdf.com

http://slidepdf.com/reader/full/podroz-do-wnetrza-systemu-linux-11-2010 10/4511/201010

AKTUALNOŚCIDział prowadzi Andrzej Jankowski 

Ile zarabiają firmy walczące z piractwem?Z materiałów, które przeciekły do Internetu, może wynikać, że walka z pi-

ractwem jest całkiem dochodowym zajęciem. ACS:Law to firma z Wielkiej

Brytanii zajmująca się walką z piractwem. Jej pracownicy zdobywają adre-

sy IP osób rozpowszechniających nielegalnie materiały w Internecie, a na-

stępnie wysyłają im listy z żądaniem zapłaty za naruszenie praw autorskich.

Zwykle firma liczy sobie 495 funtów za umorzenie sprawy. Jak donosi Tor-

rentFreak, do Sieci przeciekły materiały firmy, w dużej mierze dotyczące

działalności ACS:Law. Z dokumentów wynika, że około 40% oskarżonych

osób w ogóle nie odpowiada na żądania zapłaty za naruszenie praw au-

torskich. Kolejnych 30% nie uznaje przedstawionych im argumentów, a tyl-

ko około 30% oskarżonych internautów płaci karę naliczoną przez ACS:

Law. Pieniądze, które firma zyskała dzięki wysyłanym listom, dzielone są 

na trzy części. Zapłatę otrzymuje właściciel praw autorskich, firma dostar-

czająca adresy IP piratów i oczywiście ACS:Law. Zwykle prawnicy zabiera-

 ją od 37,5% do 52,5% od uzyskanej sumy. Tylko do 28 kwietnia tego roku

ACS:Law najprawdopodobniej zarobił w ten sposób ponad 630 tys. funtów.Warto jednak zauważyć, że materiały, któ-

re przeciekły do Sieci, nie pokazują pełne-

go obrazu dotyczącego sytuacji ACS:Law.

Może to być tylko wycinek działalności fir-

my. Mimo wszystko powinny wzbudzić zainte-

resowanie nie tylko opinii publicznej, ale przede

wszystkim władz. Wykorzystywanie walki z pi-

ractwem do zarabiania pieniędzy jest nie-

bezpiecznym procederem. Szybko może

przerodzić się na przykład w oskar-

żanie niewinnych osób.Źródło: http://www.dobreprogramy.pl 

Milionowy commit fundacji ApachePowszechnie wiadomo, że Apache Software Foundation pełni ważną ro-

lę w świecie Open Source. Znaczenie projektów nadzorowanych przez

ASF staje się dostrzegalne zwłaszcza teraz, gdy fundacja odnotowała mi-

lionowe wprowadzenie kodu do jednego z nadzorowanych projektów. Ten

szczególny commit dotyczy kodu projektu Lucene, a jego autorem jest

Yonik Seeley. Obecnie przeszło 300 członków fundacji oraz 2300 twór-

ców (committer) opiekuje się w ramach Apache Software Foundation pra-wie setką projektów – od popularnego serwera webowego Apache (httpd)

przez frameworki i narzędzia programistyczne, aż po elementy bardziej

złożonych infrastruktur informatycznych. Działalność ASF jest finansowa-

na przez rozmaite firmy, które przeważnie biorą aktywny udział w projek-

tach. Należą do nich między innymi AMD, Facebook, Google, HP, Micro-

soft, VMware i Yahoo!. Kolejnym źródłem finansowania są dobrowolne in-

dywidualne datki. Największym kapitałem fundacji jest jednak ochotnicza

praca wielu zaangażowanych w projekty programistów. Przy okazji warto

odnotować, że w dniach 1–5 listopada bieżącego roku społeczność Apa-

che’a spotka się w Atlancie na kon-

ferencji ApacheCon 2010.

Źródło: http://www.heise-online.pl 

Wydano Fedorę 14 betaPojawiła się wersja beta najnow-szego wydania systemu Fedora14. Finalne wydanie tej dystrybucjizostanie wprowadzone na początkulistopada.Wydanie wersji beta Fedory 14 ogło-szono na liście mailingowej Fedory.Po wyeliminowaniu największychbłędów i luk zostanie ona zapewnewprowadzona jako wersja nalna tejdystrybucji Linuksa. W najnowszymwydaniu pojawiło się sporo zmian jak choćby szybsze wczytywanie i zapisy-wanie plików JPEG. Kolejne poprawkidotyczą wirtualizacji - dostępna jestakceleracja graki 2D, a także odtwa-rzanie czy nagrywanie audio. Wszyst-ko dzięki wprowadzeniu frameworkuSpice. Pojawiła się też wersja 4.5 śro-dowiska gracznego KDE. Poza tymwprowadzono aktualizację Perla do5.12, obsługę Rakudo Star, jak rów-nież Pythona 2.7. Kompletna listazaaprobowanych zmian w Fedorze14 beta dostępna jest na stronachprojektu.Przypomnijmy, że Fedora 14 pojawisię nieco później, niż pierwotniezakładano. Według wcześniejszegoterminarza system w nalnej wersjimiał ukazać się pod koniec paździer-nika tego roku. Z powodów technicz-nych data premiery została przesu-nięta na początek listopada. Fedora14 będzie nosiła nazwę kodową Lau-ghin. Wersja alpha systemu dostępnabyła pod koniec zeszłego miesiąca.

  Źródło: http://dobreprogramy.pl 

Ankieta: programiści widząperspektywy dla AndroidaZdaniem programistów system ope-racyjny Android dla urządzeń przeno-śnych ma w dalszej perspektywie naj-większy potencjał wśród wszystkichpoważniejszych platform. Tak przy-najmniej wynika z sondażu przepro-wadzonego w połowie września przezanalityków rmy IDC oraz spółki App-celerator. Prawie 60 procent spośródokoło 2400 przepytanych autorówoprogramowania faworyzuje Andro-ida jako system operacyjny przyszło-ści dla sprzętu przenośnego. Konku-rencyjny Apple i jego iOS uzyskałyzaledwie 35 procent głosów. W po-dobnej ankiecie z czerwca dystansdzielący obie platformy był mniej-szy o 10 procent. 72 procent progra-mistów uważa Androida za najlep-szy system, jeśli chodzi o różnorod-ność obsługiwanych urządzeń; iOS

Page 11: Podroz Do Wnetrza Systemu Linux 11-2010

5/12/2018 Podroz Do Wnetrza Systemu Linux 11-2010 - slidepdf.com

http://slidepdf.com/reader/full/podroz-do-wnetrza-systemu-linux-11-2010 11/45

11

AktualnościDział prowadzi Andrzej Jankowski 

Red Hat zarobił więcej, niż oczekiwanoRed Hat, jedna z największych firm związanych z Linuksem, opublikował

wyniki finansowe za drugi kwartał roku obrachunkowego. Korporacja za-

notowała wzrost przychodów o około 20%. Przychody Red Hata wynio-

sły w drugim kwartale niemal 220 mln dolarów. Przewyższyły one nieco

przewidywania analityków, którzy spodziewali się, że wyniosą one w mi-

nionym kwartale około 211 mln. Zdaniem szefa Red Hata, Jima White-

hursta, to jeden z najlepszych okresów w ostatnich latach. Wysoki oka-

zał się też zysk operacyjny. Na sprzedaży takich produktów jak Red Hat

Enterprise Linux firmie udało się zarobić o 24% więcej niż w zeszłym ro-

ku, czyli 34 mln dolarów (według zasad GAAP). Natomiast zysk netto wy-

niósł prawie 24 mln dolarów. W sumie Red Hat posiada w gotówce 1 mld

dolarów. Stabilne wyniki finansowe firmy to pomyślna wiadomość dla ca-

łej społeczności Linuksa. Red Hat od lat wspiera liczne projekty jak choć-

by system Fedora czy ruch wolnego oprogramowania. Ponadto firma po-

siada udziały w kodzie jądra Linuksa, dzięki czemu może brać aktywny

udział w jego rozwoju. Wyniki finansowe Red Hata pokazują też, że Linuxmoże być efektywnie wykorzystywany w biznesie. Firma obecnie pracu-

 je nad rozwojem technologii chmury obliczeniowej. W czerwcu zaprezen-

towano pakiet narzędzi do obsługi tego typu rozwiązań – Red Hat Clo-

ud Foundations.

Źródło: http://www.dobreprogramy.pl 

Reklama

otrzymał w tym wypadku 25 procentpoparcia. Apple nadal prowadzi wewszystkich kategoriach dotyczącychmożliwości zarabiania największychpieniędzy na pisaniu programów.Pozostałe platformy (takie jak webOSrmy HP, BlackBerry RIM-a albo nowyWindows Phone 7) odgrywają tu mar-ginalną rolę.Jak się okazuje, dużym zaintereso-waniem wśród ankietowanych cieszysię możliwość tworzenia aplikacji dlaGoogle TV (44 procent) i Apple TV (40procent). Podobnie sprawy mają sięw przypadku programów na tabletyz Androidem. Ich pisaniem jest zain-teresowanych aż 62 procent progra-mistów, co mniej więcej odpowiadawynikowi ze stycznia bieżącego roku,kiedy 58 procent z nich deklarowałochęć tworzenia aplikacji dla debiutu-

 jącego dopiero iPada. Niewielkie zain-teresowanie budzą natomiast tabletyna bazie innych systemów opera-cyjnych: urządzeniami z webOS-emi BlackBerry OS-em chce się zająć 16procent ankietowanych.

 Źródło://http://www.heise-online.pl/ 

Pobierz nowy

numer HAKIN9

KLIKNIJ

Page 12: Podroz Do Wnetrza Systemu Linux 11-2010

5/12/2018 Podroz Do Wnetrza Systemu Linux 11-2010 - slidepdf.com

http://slidepdf.com/reader/full/podroz-do-wnetrza-systemu-linux-11-2010 12/45

11/201012

LINUX KERNEL

Jądro systemu operacyjnego odpowiada za wie-le funkcji, wśród których jedną z najważniejszych

 jest zarządzanie dostępem do zasobów sprzętu,na którym zostało uruchomione. Oprócz pamięci, jed-nym z najważniejszych zasobów jest czas proceso-ra – w celu zapewnienia współbieżnego wykonywa-nia zadań, jądro musi cyklicznie zmieniać stan wszyst-kich procesów obecnych w systemie. Za funkcje te od-powiada część jądra zwana schedulerem – o jej dzia-łaniu i rozmaitych rozwiązaniach stosowanych w ichbudowie Czytelnik może przeczytać w pierwszej czę-

ści cyklu.Kolejnym ważnym zagadnieniem związanym z budo-wą jądra systemu, jest mechanizm wywołań systemo-wych. Jest on obecny nie tylko w Linuksie, lecz rów-nież w jądrach wszystkich innych popularnych systemówoperacyjnych przeznaczonych dla komputerów PC. Jegopodstawowym zadaniem jest udostępnienie możliwościwykonania przez aplikacje przestrzeni użytkownika funk-cji, które wymagają działania w przestrzeni jądra. Funk-cje te muszą oczywiście zostać wcześniej odpowiedniozdefiniowane w sposób, który zostanie opisany w artyku-le. Zastanowimy się również, kiedy wykorzystanie wywo-łań systemowych jest uzasadnione oraz poznamy ogra-niczenia i potencjalne problemy, na które koniecznie po-winniśmy zwrócić uwagę.

W trzeciej części cyklu przedstawione zostały ma-kra pozwalające na przekazywanie parametrów przy

wczytaniu modułów jądra. Rozwiązanie takie doskona-le sprawdza się np. do przekazania pożądanych nazwurządzeń w katalogu /dev. Przy pomocy tego mechani-zmu nie jest możliwe wpływanie na działanie modułu,który został już włączony do jądra. W tym celu może-my jednak skorzystać z bardziej zaawansowanego roz-wiązania – wirtualnego systemu plików /proc, stanowią-cego dwukierunkowy interfejs komunikacyjny pomiędzyaplikacjami przestrzeni użytkownika a jądrem systemu.Przykładem wykorzystania tego mechanizmu jest plik/proc/cpuinfo, dostarczający informacji na temat proce-

sora, na którym działa jądro. Dane z plików w katalogu/proc mogą być odczytywane przy użyciu polecenia cat,np. cat /proc/cpuinfo.

W artykule zajmiemy się wszystkimi trzema opisanymipowyżej zagadnieniami. Dla systemu plików /proc przed-stawione zostaną przykłady modułów, ilustrujące zasto-sowanie tych mechanizmów. Czytelnikom, którzy jesz-cze nie zapoznali się z trzecią częścią cyklu, polecam jejlekturę – informacje w niej przedstawione mają kluczoweznaczenie dla zrozumienia zagadnień prezentowanychw tym oraz w następnych artykułach.

Procesy w jądrze LinuxJednym z najbardziej podstawowych zadań systemuoperacyjnego jest zapewnienie środowiska dla progra-mów użytkownika. Nowoczesne systemy operacyjnemuszą radzić sobie niejednokrotnie z dziesiątkami uru-

Linux Kernel: Podróż

do wnętrza systemu

W poprzedniej części cyklu zajęliśmy się podstawowymizagadnieniami związanymi z programowaniem modułów jądra.Na kilku prostych przykładach przekonałeś się, iż pisanie kodudziałającego w przestrzeni jądra nie jest wcale takie trudne, jeżelibędziemy stosować się do przedstawionych zaleceń. W tym numerzepoznasz kolejny mechanizm, niezbędny przy tworzeniu modułów,które mają mieć realne zastosowania – system plików /proc. Najpierw jednak przyjrzymy się zarządzaniu procesami w jądrze Linux orazobsłudze wywołań systemowych. Zapraszam do lektury!

Część czwarta (4/7): Zarządzanie procesami, wywołaniasystemowe oraz system plików /proc

Page 13: Podroz Do Wnetrza Systemu Linux 11-2010

5/12/2018 Podroz Do Wnetrza Systemu Linux 11-2010 - slidepdf.com

http://slidepdf.com/reader/full/podroz-do-wnetrza-systemu-linux-11-2010 13/45

Linux Kernel (4/7): Zarządzanie procesami, wywołania systemowe oraz system plików /proc

www.lpmagazine.org 13

sowej (IPC – Inter-Process Communication), takich jakkolejki komunikatów i semafory.

Tworzenie procesów i wątkówAplikacje wykonywane w przestrzeni użytkownika cha-

rakteryzują się zazwyczaj ograniczonym czasem życia.Nowe procesy w systemie Linux tworzone są przez wy-wołanie systemowe fork(), a ich działanie kończy siępo wywołaniu systemowym exit() lub otrzymaniu sy-gnału lub wyjątku, którego nie może obsłużyć lub zi-gnorować.

Każdy proces w systemie Linux posiada rodzica, oczy-wiście oprócz procesu init, który jest procesem stojącymnajwyżej w hierarchii.

Często wykorzystywane są również różne wywoła-nia z rodziny exec(), służące do zmiany obrazu proce-

su. Nowe procesy tworzone przez wywołanie systemo-we fork() zawierają kopię procesu rodzica. Rozwiąza-nie takie może wydawać się niewydajne, skoro zaraz poutworzeniu nowego procesu możemy zmienić wykony-wany w procesie potomnym kod przy pomocy wywoła-nia systemowego exec(). Jądro Linux wykorzystuje jed-nak w tym przypadku stronicowanie copy-on-write, po-legające na skopiowaniu danych dopiero przy ich mo-dyfikacji przez proces potomny.

Utworzenie nowego wątku odbywa się przy użyciuwywołania systemowego clone(). W przeciwieństwie

do wywołania fork(), umożliwia ono określenie ele-mentów kontekstu wykonania wspólnych z procesemrodzica. Przykłady flag wywołania clone() wraz z obja-śnieniami znajdują się w Tabeli Flagi wywołania syste-

mowego clone().

Usuwanie procesówZakończenie działania procesu odbywa się wskutek wy-wołania systemowego exit() albo otrzymania sygnałulub wyjątku, który nie może zostać obsłużony, ani zigno-rowany. Zakończenie działania procesu równoważne jest

ze zwolnieniem wszystkich zasobów przez niego wyko-rzystywanych.Większość funkcji związanych z usuwaniem zadań

zawarta jest w pliku kernel/exit.c. Czytelnikom chcą-cym w większym stopniu zapoznać się z dokładnym

chomionych jednocześnie aplikacji i demonów, co nie  jest zadaniem łatwym jeżeli weźmiemy pod uwagę ko-nieczność zachowania krótkiego czasu odpowiedzi napolecenia użytkownika.

Zajmiemy się teraz podstawowymi zagadnienia-

mi związanymi z obsługą procesów w systemie Li-nux. Temat ten będzie kontynuowany w kolejnych czę-ściach cyklu, w których opisane zostaną mechanizmyabstrakcji zasobów w systemie oraz zarządzanie pa-mięcią.

Czym jest proces w systemie Linux?Mówiąc krótko, proces w systemie Linux jest działają-cym egzemplarzem programu uruchomionego z dowol-nego nośnika wraz z całym niezbędnym do jego działa-nia środowiskiem umożliwiającym abstrakcję zasobów

sprzętowych.Każdy program do poprawnego działania wymaga

pełnego dostępu do procesora, zarówno jako jednostkiobliczeniowej, jak i zestawu rejestrów. Aplikacje nie po-siadają mechanizmów umożliwiających przerywanie ichwykonania i przekazanie procesora innym programom.Przerwanie wykonywania jednego programu i rozpo-częcie działania innej aplikacji wiązałoby się z nadpisa-niem zawartości rejestrów procesora, co miałoby fatal-ne skutki dla działania wstrzymanej aplikacji.

Aby zapewnić możliwość współbieżnego wykony-

wania wielu aplikacji, jądro musi stworzyć środowi-sko, w którym każdy program może działać tak, jakbymiał pełen dostęp do najważniejszych zasobów syste-mu. Środowisko takie uzyskuje się poprzez tzw. zapisy-wanie kontekstów wykonania każdego z procesów. Podpojęciem kontekstu wykonania rozumiemy m. in. za-wartość wszystkich rejestrów procesora.

Jak jednak jądro zarządza wykonaniem aplikacji wie-lowątkowych? Okazuje się, iż istnieje wiele rozwiązańtego problemu. W przypadku jądra Linux, każdy z wąt-ków aplikacji jest po prostu osobnym procesem, który

może jednak współdzielić zasoby z innymi wątkami tejsamej aplikacji. Każdy z wątków jest również niezależ-nie od innych wybierany przez scheduler do wykona-nia. Komunikacja pomiędzy procesami realizowana jestprzy użyciu mechanizmów komunikacji międzyproce-

Tabela 1. Flagi wywołania systemowego clone()

Flaga Znaczenie

CLONE_FILES Proces rodzica i proces potomny dzielą otwarte pliki.

CLONE_FS Proces rodzica i proces potomny dzielą informacje o systemie plików.

CLONE_NEWNS Proces potomny uz yskuje nową przestrzeń adresową.

CLONE_PARENT Proces potomny ma rodzica procesu nadrzędnego.

CLONE_SIGHAND Proces rodzica i proces potomny dzielą te same funkcje obsługi sygnałów oraz sygnały blokowane.

CLONE_STOP Proces potomny po utworzeniu jest w stanie TASK_STOPPED.

CLONE_VM Proces rodzica i proces potomny dzielą przestrzeń adresową.

Page 14: Podroz Do Wnetrza Systemu Linux 11-2010

5/12/2018 Podroz Do Wnetrza Systemu Linux 11-2010 - slidepdf.com

http://slidepdf.com/reader/full/podroz-do-wnetrza-systemu-linux-11-2010 14/45

11/201014

LINUX KERNEL

przebiegiem zakończenia procesu polecam jego prze-glądnięcie.

Struktury danych i funkcje jądraDane o procesach (zwanych również zadaniami) prze-

chowywane są przez jądro Linux w dwukierunkowej li-ście kołowej (ostatni element zawiera wskaźnik do pierw-szego elementu, zaś pierwszy do ostatniego).

Strukturą reprezentującą pojedynczy element listy pro-cesów jest task_struct (zdefiniowana w pliku kernel/

sched.h). Najważniejsze pola struktury wraz z objaśnie-niami zawarto w Tabeli Pola struktury task_struct . Jak wi-dać, w strukturze tej przechowywane są nie tylko pod-stawowe informacje, takie jak identyfikator procesu PID,lecz również informacje o wykorzystywanych zasobach,priorytet oraz stan procesu. Ponadto, w każdej strukturzetask_struct przechowywany jest wskaźnik do strukturytask_struct rodzica oraz wskaźnik do listy tych struktur procesów potomnych.

Każda struktura task_struct zawiera również struktu-rę thread_struct służącą do przechowywania informacjina temat procesu, charakterystycznych dla architekturysprzętu, na którym uruchomione jest jądro. Dla architek-tury x86 struktura ta zdefiniowana jest w pliku arch/x86/

include/asm/processor.h. Do pełnego zrozumienia funk-cji wszystkich jej pól konieczna jest dogłębna znajomośćarchitektury procesora i386, toteż nie będzie ona szerzej

omawiana. Do danych zawartych w tej strukturze należą informacje o rejestrach, wykorzystywane przy przełącza-niu aktywnych zadań.

Diagram stanów zadańKażde z zarejestrowanych przez jądro zadań znajduje sięw jednym z pięciu stanów, które przedstawione zostały nadiagramie. Wartości odpowiednich flag wykorzystywanesą przez scheduler przy przełączaniu aktywnych zadań.

Znaczenia poszczególnych stanów są następujące:

• TASK _ RUNNING – proces jest gotowy do wykonywa-nia. Stan ten oznacza, iż zadanie jest aktualnie wy-konywane przez procesor lub czeka w kolejce sche-

dulera;• TASK _ INTERRUPTIBLE   – proces jest uśpiony, czeka

na wystąpienie określonego zdarzenia, takiego jaknp. upłynięcie określonego czasu. Procesy uśpionenie są uwzględniane przez scheduler przy wyborzezadań do wykonywania dopóki nie przejdą do stanuTASK_RUNNING;

• TASK _ UNINTERRUPTIBLE – proces jest uśpiony, jednaknie nie zostanie odblokowany po odebraniu sygnału;

• _ _ TASK _ TRACED – proces jest śledzony, np. przyużyciu debuggera (stan pominięty na diagramie);

• _ _ TASK _ STOPPED – proces jest zatrzymany. W tymstanie proces nie będzie wykonywany (stan pominię-ty na diagramie).

Na diagramie przedstawionym na Rysunku 1 uwzględ-nione zostały również zdarzenia powodujące zmianęstanu procesu.

Aktualny stan procesu przechowywany jest w struktu-rze task_struct w polu state. Zmiany stanu można do-konać poprzez bezpośrednią zmianę wartości tego po-la, np. task->state = TASK_RUNNING. Często używa się

w tym celu funkcji set_task_state(), przyjmującej dwaparametry – wskaźnik do struktury task_struct orazidentyfikator stanu.

Wywołania systemoweW poprzednich częściach cyklu Czytelnik niejedno-krotnie spotkał się z pojęciem wywołania systemowe-go. Dotychczas było one wyjaśniane jedynie dość po-bieżnie, bez odwoływania się do praktycznych przy-

Tabela 2. Pola struktury task_struct 

Pole struktury task_struct Znaczenievolatile long state Aktualny stan zadania.

long counter Liczba tyknięć zegara systemowego pozostała do wywłaszczenia procesu.

long priority Prior ytet zadania. Pole to ma bezpośredni wpł yw na k want czasu przydzielony przez scheduler

procesowi.

unsigned long signal Nadchodzące sygnały (oznaczane w postaci ag).

unsigned long blocked Maska określająca blokowane sygnały.

unsigned long ags Flagi zadania (np. PF _ SUPERPRIV – proces z uprawnieniami superużytkownika, PF _ STARTING 

– proces w trakcie tworzenia),

int pid Identykator PID procesu.

int pgrp Identykator grupy procesu.

struct task_struct *next_task Wskaźnik do następnego zadania na liście.

struct task_struct *prev_task Wskaźnik do poprzedniego zadania na liście.

struct task_struct *next_run Wskaźnik do następnego zadania w kolejce do wykonania.

struct task_struct *prev_run Wskaźnik do poprzedniego zadania w kolejce do wykonania.

Page 15: Podroz Do Wnetrza Systemu Linux 11-2010

5/12/2018 Podroz Do Wnetrza Systemu Linux 11-2010 - slidepdf.com

http://slidepdf.com/reader/full/podroz-do-wnetrza-systemu-linux-11-2010 15/45

Linux Kernel (4/7): Zarządzanie procesami, wywołania systemowe oraz system plików /proc

www.lpmagazine.org 15

kładów. W tej części artykułu sytuacja ulegnie zmianie – wywołania systemowe (system call, często używa sięrównież skrótu syscall) zostaną omówione z punktu wi-dzenia programisty oraz architektury procesorów. Z po-przedniej części cyklu wiemy, iż programy użytkownika

(działające w obrębie ringu 3) nie mają bezpośredniegodostępu do sprzętu. W celu wykonania dowolnej opera-cji wymagającej uprawnień uzyskiwanych w przestrze-ni jądra, muszą one skorzystać z mechanizmu wywołańsystemowych.

Wywołania systemowe w jądrze LinuxSystemy operacyjne oparte na jądrze Linux posiada-

 ją stosunkowo niewiele wywołań systemowych – ponad300, podczas gdy np. systemy FreeBSD mają ich około500. Sama liczba obsługiwanych wywołań systemowych

nie przekłada się oczywiście w prosty sposób na funkcjo-nalność ani bezpieczeństwo systemu. Czytelnik przeko-na się jednak, iż wywołania systemowe powinny być wy-korzystywane z rozwagą, jako że duże możliwości wiążą się zawsze ze zwiększoną odpowiedzialnością.

Schemat działania wywołań systemowych znajdu- je się na Rysunku 2. Proces wykonywany w przestrze-ni użytkownika (ring 3 dla architektury x86) nie ma bez-pośredniego dostępu do sprzętu. W momencie, gdy za-istnieje potrzeba odwołania się do jakichkolwiek zaso-bów (np. plik na dysku twardym lub nośniku pamię-

ci) program skorzysta z odpowiedniej funkcji zawartejw bibliotece podstawowej języka C, która z kolei wyko-rzystuje wywołanie systemowe, przekazując do niegoodpowiednie parametry. Wywołanie systemowe działa

 już w przestrzeni jądra – możliwe jest jednak przesyła-nie i pobieranie danych z przestrzeni użytkownika przypomocy funkcji copy_to_user() oraz copy_from_user().

Po wykonaniu wszystkich niezbędnych operacji, proces jest kontynuowany.

W przypadku większości architektur procesorów, w ce-lu użycia wywołania systemowego proces ustawia odpo-wiednie wartości rejestrów (w architekturze x86 wyko-

rzystywany jest w tym celu rejestr eax) a następnie przyużyciu przerwania (0x80 dla architektury x86) dokonujeskoku pod określony adres w pamięci. Po jego wykona-niu znajdujemy się już w przestrzeni jądra, toteż kod wy-wołania nie podlega standardowym ograniczeniom.

Uważny Czytelnik zapyta z pewnością – skoro skokwykonywany jest zawsze pod ten sam adres, to w jakisposób jądro wie, które z wielu wywołań systemowychma zostać wykonane? Okazuje się, iż pod adresem tymznajduje się kod odpowiedzialny za wykorzystanie infor-macji zapisanych przez proces w rejestrach – tzw. nu-

meru wywołania systemowego – w celu przeszukaniatablicy wywołań systemowych zawierającej adresy funk-cji obsługujących poszczególne wywołania. Następnymkrokiem jest skok pod określony adres i wykonanie ko-du wywołania.

Wywołania systemowe działają w kontekście proce-su który je wywołał. Oznacza to, iż w kodzie funkcji ob-sługujących wywołania możemy korzystać ze wskaźnikacurrent wskazującego aktualnie wykonywane zadanie.

Zmiana wywołań systemowych

Jak zostało napisane, system Linux posiada ponad 300wywołań systemowych. Warto zastanowić się, co staniesię gdy zmienimy adresy funkcji odpowiadających po-szczególnym wywołaniom?

Dużym problemem pojawiającym się przy zastosowa-niu wywołań systemowych, jest konieczność zachowa-nia kompatybilności z istniejącymi aplikacjami. Ozna-

Rysunek 1. Diagram stanów zadań w jądrze Linux 

Page 16: Podroz Do Wnetrza Systemu Linux 11-2010

5/12/2018 Podroz Do Wnetrza Systemu Linux 11-2010 - slidepdf.com

http://slidepdf.com/reader/full/podroz-do-wnetrza-systemu-linux-11-2010 16/45

11/201016

LINUX KERNEL

Listing 1. Moduł prezentujący odczyt danych z pliku procfs

#include <linux/kernel.h>

#include <linux/module.h>

#include <linux/proc_fs.h>  /* plik naglowkowy do obslugi procfs */ 

/* nazwa pliku w katalogu /proc */ 

#dene le_name "procfs_counter"

MODULE_LICENSE("GPL");

MODULE_AUTHOR("R. Kulaga");

MODULE_DESCRIPTION("Pierwszy przyklad zastosowania procfs");

static struct proc_dir_entry *proc_le;

static unsigned  int read_counter = 0;

int procfs_read(char *buffer,

  char **buffer_location,

  off_t offset, int buffer_length, int *eof,  void  *data)

{  int retVal;

 

printk(KERN_INFO "Odczyt z pliku /proc/%s\n", le_name);

 

if(offset > 0)

  {

  retVal = 0;

  }

  else

  {

  read_counter++;

  retVal = sprintf(buffer, "Liczba odczytów z pliku: %d\n", read_counter);

  }

 

return retVal;

}

int init_module()

{

  proc_le = create_proc_entry(le_name, 0644, NULL);

 

if(proc_le == NULL)

  {

  remove_proc_entry(le_name, NULL);

  printk(KERN_ALERT "Utworzenie pliku /proc/%s nie powiodlo sie\n", le_name);

 

return -ENOMEM;  }

 

proc_le->read_proc = procfs_read;

  proc_le->owner  = THIS_MODULE;

  proc_le->mode  = S_IFREG | S_IRUGO;

  proc_le->uid  = 0;

  proc_le->gid  = 0;

  proc_le->size  = 37;

 

printk(KERN_INFO "Utworzono plik /proc/%s\n", le_name);

 

return 0;

}

 void  cleanup_module()

{

  remove_proc_entry(le_name, NULL);

  printk(KERN_INFO "Usunieto plik /proc/%s\n", le_name);

}

Page 17: Podroz Do Wnetrza Systemu Linux 11-2010

5/12/2018 Podroz Do Wnetrza Systemu Linux 11-2010 - slidepdf.com

http://slidepdf.com/reader/full/podroz-do-wnetrza-systemu-linux-11-2010 17/45

Linux Kernel (4/7): Zarządzanie procesami, wywołania systemowe oraz system plików /proc

www.lpmagazine.org 17

cza to, iż nie możemy naszemu wywołaniu przypisać jużzajętego numeru, ponieważ spowoduje to nieprawidło-we działanie wszystkich korzystających z niego aplika-cji. Zmiana funkcji obsługujących poszczególne wywoła-nia powoduje szczególnie duże problemy w sytuacji, gdy

 jest realizowana przez wiele modułów – w tym przypad-ku trzeba podjąć szczególne kroki w celu przywrócenia

 jej pierwotnej postaci przy odłączeniu modułu.Jak widać, zmiana funkcji obsługujących poszczegól-

ne wywołania systemowe jest nie tylko problematyczna,lecz może również skutkować obniżeniem bezpieczeń-stwa systemu lub utratą danych. Z tego względu, w wer-sji 2.6 jądra Linux zrezygnowano z eksportowania tabe-li sys_call_table. Możliwa jest jednak zmiana kodu jądraw taki sposób, aby tablica ta była eksportowana, a co zatym idzie – istniała możliwość manipulowania zawartymi

w niej mapowaniami. Czytelnikom, którzy naprawdę wie-dzą co robią, polecam wyszukanie odpowiednich infor-macji oraz patchy w internecie.

Warto również wspomnieć, iż zmiana funkcji obsługu- jących wywołania systemowe jest wykorzystywana przezdużą część rootkitów. Praktycznie wszystkie operacje re-alizowane przez aplikacje przestrzeni użytkownika wy-magają zastosowania wywołań systemowych, co po-zwala na przejęcie pełnej kontroli nad systemem ope-racyjnym na poziomie jądra poprzez podmianę funkcjiobsługujących wywołania systemowe. Wykrycie rootki-

ta jest w takich warunkach bardzo trudne i odbywa sięgłównie poprzez analizę zachowań systemu. Jest to jed-nak temat na osobny, obszerny artykuł.

Tworzenie nowych wywołań systemowychZajmiemy się teraz opisem tworzenia nowych wywołańsystemowych oraz ich wykorzystania w aplikacjach prze-strzeni użytkownika. Z racji niewielkiej praktycznej przy-datności tej procedury, nie będą prezentowane konkret-ne przykłady.

Pierwszym krokiem jest oczywiście zdefiniowanie ce-

lu stosowania wywołania systemowego – jakie ma przyj-mować parametry oraz jaki ma być skutek jego działania.W dużej części przypadków dojdziemy na tym etapie downiosku, że zamiast wywołania systemowego możemyw tym celu wykorzystać inne mechanizmy systemu.

Następnie, jeżeli zdecydowaliśmy się na wykorzysta-

nie wywołań systemowych, należy napisać odpowied-nią funkcję, wykorzystując w tym celu makro SYSCALL_

DEFINEX, gdzie X – liczba parametrów przyjmowanychprzez wywołanie systemowe. Kolejnym krokiem jestzarejestrowanie wywołania systemowego poprzez do-

danie odpowiedniego wpisu na końcu tabeli sys_call_

table (dla większości architektur znajduje się ona w plikuentry.S). Odpowiedni wpis należy również dodać w pli-ku asm/unistd.h.

Ostatnim krokiem jest umieszczenie utworzonej funk-cji w jednym z plików jądra – należy koniecznie pamię-tać, iż wywołania systemowe powinny być zawsze wbu-dowane w jądro.

Czytelnikom zainteresowanym tworzeniem własnychwywołań systemowych polecam wyszukanie odpowied-nich informacji w dokumentacji jądra oraz w internecie.

System plików /procTworząc moduły jądra mające praktyczne zastosowaniebardzo często spotykamy się z sytuacją, w której istnie-

 je konieczność udostępnienia informacji o pracy modułuprogramom działającym w przestrzeni użytkownika. Teo-retycznie, można w tym celu wykorzystać mechanizmwywołań systemowych, jednak jest to rozwiązanie, któ-rego za wszelką cenę powinniśmy unikać ze względów,

Listing 2. Plik Make�le dla modułów z listingów 

obj-m += procfs_read.o

obj-m += procfs_read_write.o

all:

make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules

clean:

make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean

Rysunek 2. Diagram stanów zadań w jądrze Linux 

Page 18: Podroz Do Wnetrza Systemu Linux 11-2010

5/12/2018 Podroz Do Wnetrza Systemu Linux 11-2010 - slidepdf.com

http://slidepdf.com/reader/full/podroz-do-wnetrza-systemu-linux-11-2010 18/45

11/201018

LINUX KERNEL

które zostały już opisane w tym artykule. W praktyce,najlepszym rozwiązaniem jest zastosowanie systemuplików /proc, pozwalającego na realizację dwukierunko-wej komunikacji pomiędzy jądrem, a procesami w prze-strzeni użytkownika.

Gdzie znajduje się system plików /proc?System plików /proc znajduje się jedynie w pamięci ope-racyjnej. Czasami można spotkać się z błędnymi stwier-dzeniami, iż jest on przechowywany na dysku twardymkomputera. System plików /proc jest przykładem potwier-dzającym popularne porzekadło, iż w Uniksie wszystko

 jest plikiem.

Funkcje systemu plików /procSystem plików /proc został opracowany jako mechanizm

służący udostępnianiu informacji o działających proce-sach. Jest on również wykorzystywany do dwukierunko-wego przesyłania danych pomiędzy jądrem a procesami.Fakt, iż dane zorganizowane są w nim w postaci plików,umożliwia kontrolę dostępu przy użyciu uprawnień.

Przykładowe zastosowania systemu plików /procobejmują:

• Eksport informacji o pracy modułów do przestrzeniużytkownika – dzięki wykorzystaniu systemu plików /proc możliwe jest informowanie procesów przestrze-

ni użytkownika o przebiegu wykonania modułu jądra;• Sterownie pracą modułów jądra przez procesy prze-

strzeni użytkownika – w przypadku, gdy konieczna jestmożliwość zmiany parametrów działania modułu jużpo jego załadowaniu, możemy tego dokonać poprzezodpowiednie wykorzystanie plików systemu /proc;

• Udostępnianie informacji o działających procesach  – jak zostało już napisane, podstawowym zada-niem systemu plików /proc jest dostarczanie infor-macji o działających procesach. Pliki odpowiadają-ce poszczególnym procesom znajdują się w katalo-

gach /proc/PID, gdzie PID jest identykatorem pro-cesu. Niektóre z udostępnianych informacji to: listautworzonych procesów potomnych (plik tasks), łą-cze symboliczne do pliku wykonywalnego, z któregowczytany został kod programu (plik exe) oraz infor-macje na temat stanu procesu i wykorzystania pa-mięci (plik status).

Procfs umożliwia jak widać realizację wielu funkcji, zaśkontrola dostępu realizowana w sposób charaktery-styczny dla plików pozwala na zabezpieczenie przednieuprawnionym dostępem.

Procfs kontra sysfsSystem plików /proc nie jest jedynym mechanizmemumożliwiającym komunikację pomiędzy jądrem systemu,a procesami przestrzeni użytkownika. Wraz z wersją 2.6

 jądra Linux wprowadzono alternatywę w postaci wirtual-nego systemu plików sysfs, którego głównym obszaremzastosowania jest udostępnienie informacji o sterow-nikach i urządzeniach podłączonych do systemu orazumożliwienie zmiany ich konfiguracji.

Zadaniem sysfs nie jest więc zastąpienie procfs, lecz jedynie przejęcie części jego funkcji oraz udostępnienieinterfejsu lepiej odpowiadającego potrzebom sterowni-ków urządzeń. Procfs znacznie lepiej sprawdza się w ro-li uniwersalnego łącznika pomiędzy przestrzenią jądraa przestrzenią użytkownika.

Więcej informacji na temat zastosowania systemu pli-ków wirtualnych sysfs zawartych zostanie w częściachcyklu poświęconych podstawom tworzenia sterownikówurządzeń dla jądra Linux.

Zastosowanie procfs w modułach jądraPo zapoznaniu się z podstawowymi informacjami na te-mat budowy, działania oraz zastosowań wirtualnego sys-temu plików procfs, zajmiemy się teraz jego praktycznymzastosowaniem w tworzonych modułach jądra.

Odczyt informacji z plików /procNa Listingu 1 zawarto kod modułu jądra przedstawiają-cego zastosowanie plików katalogu /proc do odczytu in-formacji. Przykład ten nie uwzględnia możliwości zapisudanych. Prześledźmy działanie tego kodu oraz znacze-

nie poszczególnych funkcji.Pierwszą zdefiniowaną przez nas funkcją jest procfs_

read(), przyjmująca sześć parametrów i zwracającawartość typu int. Służy ona do przekazywania informacjido przestrzeni użytkownika przy odczycie utworzonegoprzez nas pliku w katalogu /proc (np. przy użyciu polece-nia cat). Najważniejsze z argumentów wywołania to:

• char *buffer – wskaźnik do bufora zawierającegodane, które zostaną zwrócone aplikacji inicjalizującejodczyt danych z pliku procfs;

• off _ t offset – obecne położenie w pliku;• int buffer _ len – rozmiar bufora wskazywanegoprzez wskaźnik buffer;

• int *eof – zapisanie wartości 1 do tej zmiennej skut-kuje ustawieniem znacznika końca pliku EOF.

Argumenty buffer _ loc oraz data nie są wykorzysty-wane w większości przypadków, toteż nie będziemy ichomawiać.

W przypadku funkcji procfs_read() bardzo ważną rolępełni wartość zwracana – dopóki jest ona różna od zera,funkcja będzie wykonywana ponownie. W naszym przy-padku przedstawionym na Listingu, wszystkie informacjepodawane są w trakcie jednego wykonania funkcji, toteżgdy offset jest większy od zera, funkcja nie zostanie po-wtórnie wykonana. Skutkuje to pojedynczym przekaza-niem danych do przestrzeni użytkownika.

Page 19: Podroz Do Wnetrza Systemu Linux 11-2010

5/12/2018 Podroz Do Wnetrza Systemu Linux 11-2010 - slidepdf.com

http://slidepdf.com/reader/full/podroz-do-wnetrza-systemu-linux-11-2010 19/45

Linux Kernel (4/7): Zarządzanie procesami, wywołania systemowe oraz system plików /proc

www.lpmagazine.org 19

Listing 3a. Moduł prezentujący odczyt i zapis danych do plików procfs

#include <linux/kernel.h>

#include <linux/module.h>

#include <linux/proc_fs.h> /* plik naglowkowy do obslugi procfs */ 

#include <asm/uaccess.h> /* copy_from_user */ 

/* rozmiar bufora */ 

#dene BUFFER_SIZE 128

#dene le_name "procfs_buffer"

MODULE_LICENSE("GPL");

MODULE_AUTHOR("R. Kulaga");

MODULE_DESCRIPTION("Drugi przyklad zastosowania procfs");

static struct proc_dir_entry *proc_le;

static char procfs_buffer[BUFFER_SIZE];

static unsigned  long procfs_buffer_size = 0;

int procfs_read(char *buffer,

  char **buffer_location,

  off_t offset, int buffer_length, int *eof,  void  *data)

{

  int retVal;

 

printk(KERN_INFO "Odczyt z pliku proc/%s\n", le_name);

 

if(offset > 0)  {

  retVal = 0;

  }

  else

  {

  memcpy(buffer, procfs_buffer, procfs_buffer_size);

  retVal = procfs_buffer_size;

  }

 

return retVal;

}

int procfs_write(struct le *le, const char *buffer, unsigned  long count,

   void  *data)

{

  procfs_buffer_size = count;

 

if(procfs_buffer_size > BUFFER_SIZE)

  {

  procfs_buffer_size = BUFFER_SIZE;

  }

 

if(copy_from_user(procfs_buffer, buffer, procfs_buffer_size))

  {

  return -EFAULT;

  }

Page 20: Podroz Do Wnetrza Systemu Linux 11-2010

5/12/2018 Podroz Do Wnetrza Systemu Linux 11-2010 - slidepdf.com

http://slidepdf.com/reader/full/podroz-do-wnetrza-systemu-linux-11-2010 20/45

11/201020

LINUX KERNEL

W funkcji inicjalizującej modułu, przy pomocy funkcjicreate_proc_entry() utworzony zostaje nowy plik sys-

temu procfs. Funkcja ta zwraca wskaźnik do utworzonejstruktury typu proc_dir_entry lub wartość NULL w przy-padku wystąpienia błędu. Jako parametry przyjmuje ko-lejno: nazwę pliku w katalogu /proc, prawa dostępu orazkatalog nadrzędny (tworzeniem i obsługą katalogów zaj-miemy się w dalszej części artykułu).

W przypadku wystąpienia błędu przy utworzeniu nowe-go wpisu procfs, zostaje on usunięty przy użyciu funkcjiremove_proc_entry(), przyjmującej jako argumenty na-zwę pliku oraz katalog nadrzędny.

Następnym krokiem do uzyskania w pełni funkcjonal-nego pliku w katalogu /proc jest ustawienie odpowied-nich wartości najważniejszych pól struktury:

• read _ proc – wskaźnika do funkcji wywoływanejprzy próbie odczytu z pliku;

• owner – parametru określającego właściciela pliku;

• mode – parametru określającego uprawnienia dostę-pu do pliku;

• uid oraz gid – parametru określającego identyka-tor właściciela pliku oraz identykator grupy, do któ-rej należy;

• size – parametru określającego rozmiar pliku.

Pozostałe funkcje oraz makra wykorzystane w kodziezostały opisane w poprzedniej części cyklu.

Po kompilacji i wczytaniu modułu możemy już spraw-dzić jego działanie wydając polecenie cat /proc/use_

counter (plik Makefile znajduje się na Listingu 2). Odłą-czeniu modułu skutkuje usunięciem odpowiedniego pli-ku procfs.

Zapis do plików /procPrzykładowy moduł, opisany w poprzednim paragra-fie obsługiwał jedynie odczyt z pliku procfs. Próba za-pisu kończy się w jego przypadku wystąpieniem błę-

Listing 3b. Moduł prezentujący odczyt i zapis danych do plików procfs 

return procfs_buffer_size;

}

int init_module()

{

  proc_le = create_proc_entry(le_name, 0644, NULL);

 

if(proc_le == NULL)

  {

  remove_proc_entry(le_name, NULL);

  printk(KERN_ALERT "Utworzenie pliku /proc/%s nie powiodlo sie\n", le_name);

 

return -ENOMEM;

  }

 

proc_le->read_proc = procfs_read;

  proc_le->write_proc = procfs_write;

  proc_le->owner = THIS_MODULE;

  proc_le->mode = S_IFREG | S_IRUGO;

  proc_le->uid = 0;

  proc_le->gid = 0;

  proc_le->size = 37;

 

printk(KERN_INFO "Utworzono plik /proc/%s\n", le_name);

  return 0;

}

 void  cleanup_module()

{

  remove_proc_entry(le_name, NULL);

  printk(KERN_INFO "Usunieto plik /proc/%s\n", le_name);

}

Page 21: Podroz Do Wnetrza Systemu Linux 11-2010

5/12/2018 Podroz Do Wnetrza Systemu Linux 11-2010 - slidepdf.com

http://slidepdf.com/reader/full/podroz-do-wnetrza-systemu-linux-11-2010 21/45

Linux Kernel (4/7): Zarządzanie procesami, wywołania systemowe oraz system plików /proc

www.lpmagazine.org 21

RAFAŁ KUŁAGA Autor interesuje się bezpieczeństwem systemów informatycz-

nych, programowaniem, elektroniką, muzyką rockową, archi-

tekturą mikroprocesorów oraz zastosowaniem Linuksa w sys-

temach wbudowanych.

Kontakt z autorem: [email protected]

du wejścia/wyjścia. Dodanie tej funkcjonalności nie jesttrudne, zaś kod niezbędny do jej realizacji zawarto w ko-lejnym przykładowym module (Listing 3).

Tworzony przez nas moduł będzie pełnił funkcję buforaumożliwiającego przechowywanie do 128 znaków. Zapi-

su do pliku procfs można dokonać np. przy użyciu pole-cenia echo ”TEKST” >> /proc/procfs_buffer. Odczyt od-bywa się w taki sam sposób, jak w poprzednim przykła-dzie.

Kod z Listingu rozpoczyna się dyrektywami preproce-sora definiującymi nazwę pliku w katalogu /proc oraz roz-miar bufora. Następnie deklarujemy potrzebne zmiennei struktury. Funkcja służąca do odczytu danych z plikuprocfs jest bardzo podobna do zdefiniowanej w poprzed-nim listingu. Jedyna różnica polega na zastosowaniufunkcji memcpy() w celu skopiowania danych z utworzo-

nego przez nas bufora procfs_buffer() do bufora służą-cego wyprowadzeniu danych do przestrzeni użytkownika(wskazywanym przez wskaźnik buffer). Wartość zwra-cana przez funkcję procfs_read() równa jest liczbie ele-mentów znajdujących się w buforze.

Szerszego komentarza wymaga działanie funkcjiprocfs_write(). Zwraca ona wartość typu int i przyjmu-

 je cztery parametry:

• struct le *le – wskaźnik do struktury typu le,zazwyczaj nie jest on wykorzystywany;

• const char *buffer – wskaźnik do bufora zawiera-  jącego dane zapisane w pliku procfs. Znajdują sięone w przestrzeni użytkownika, toteż muszą zostaćskopiowane do przestrzeni jądra przy użyciu funkcjicopy _ from _ user();

• unsigned long count – zmienna przechowująca ilośćelementów w buforze wskazywanym przez wskaźnikbuffer;

• void *data – wskaźnik wykorzystywany przy obsłu-dze wielu plików przy użyciu jednej funkcji procfs _write().

Kopiując dane z przestrzeni użytkownika do przestrze-ni jądra, należy koniecznie pamiętać o sprawdzeniuich rozmiaru – pominięcie tego kroku może skutkowaćprzepełnieniem bufora, co w przypadku modułów jądramoże mieć fatalne konsekwencje. Przekopiowanie da-nych realizujemy przy użyciu funkcji copy _ from _ user() (plik nagłówkowy asm/uaccess.h). Znaczenie kolejnychparametrów jest takie samo jak w przypadku funkcjimemcpy(), z zastrzeżeniem, iż drugi argument wskazujena dane umieszczone w przestrzeni użytkownika.

Po zdefiniowaniu funkcji procfs_write() musimy jesz-cze wskazać ją jako callback dla obsługi odpowiedniejakcji poprzez edycję pola write_proc struktury typu proc_

dir_entry.Po skompilowaniu i załadowaniu modułu możemy

sprawdzić jego działanie np. przy użyciu polecenia echo.

Katalogi procfsPliki systemu procfs dla zachowania porządku mo-gą być umieszczane w katalogach. W celu utworze-nia nowego katalogu należy skorzystać z funkcji proc_mkdir(), przyjmującej jako argumenty nazwę katalogu

oraz wskaźnik do struktury typu proc_dir_entry będą-cej katalogiem nadrzędnym. W przypadku, gdy ma nimbyć /proc należy jako parametr wywołania przekazaćwartość NULL.

Usunięcie katalogu procfs odbywa się w taki samsposób jak usunięcie pojedynczego wpisu – wykorzy-stujemy w tym celu funkcję remove_proc_entry() prze-kazując jako argumenty nazwę katalogu oraz wskaź-nik do struktury proc_dir_entry reprezentującej kata-log nadrzędny.

PodsumowanieDotarliśmy do końca czwartej części cyklu, która poświę-cona była dość różnym zagadnieniom: obsłudze proce-sów w jądrze Linux, wywołaniom systemowym oraz two-rzeniu modułów jądra korzystających z wirtualnego sys-temu plików procfs.

W trakcie opisu obsługi procesów w systemie Linuxstarałem się przedstawić to, jakże złożone, zagadnie-nie w możliwie przystępny sposób. Zawarty w artykuleopis nie pretenduje jednak do miana kompletnego – maraczej na celu ukazanie Czytelnikowi związku pomię-

dzy aplikacjami przestrzeni użytkownika a jądrem orazprzedstawienie niskopoziomowych mechanizmów kry-

 jących się za funkcjami takimi jak fork() oraz exec().W drugiej części artykułu zajęliśmy się wywołania-

mi systemowymi oraz programowaniem modułów jądraz użyciem wirtualnego systemu plików procfs. Nie za-chęcam Czytelników do implementowania funkcji dzia-łających w przestrzeni jądra w postaci wywołań syste-mowych, chyba, że jest to absolutnie konieczne. Sys-tem plików procfs jest z kolei narzędziem komunikacjipomiędzy jądrem a procesami w przestrzeni użytkow-

nika, które wykorzystywane jest przez większość mo-dułów.W następnej części cyklu zajmiemy się tworzeniem

sterowników dla systemu Linux. Jest to bardzo szero-ki temat, głównie ze względu na ogromną liczbę urzą-dzeń, które obsługiwać musi nowoczesny system ope-racyjny, jednak zostanie przedstawiony w sposób zro-zumiały również dla Czytelników nie posiadającychszerokiej wiedzy na temat architektury komputerów. Dousłyszenia!

Page 22: Podroz Do Wnetrza Systemu Linux 11-2010

5/12/2018 Podroz Do Wnetrza Systemu Linux 11-2010 - slidepdf.com

http://slidepdf.com/reader/full/podroz-do-wnetrza-systemu-linux-11-2010 22/45

11/201022

ROZWIĄZANIA

Niekwestionowanym liderem systemów ERP typu

Open Source jest produkt stworzony przez hisz-

pańską firmę Openbravo – Openbravo ERP. Je-

go funkcjonalność nie odbiega od tej oferowanej przez

komercyjne rozwiązania – Openbravo ERP wspomaga

zarządzanie magazynem, produkcją, sprzedażą, zamó-

wieniami oraz finansami. Wszystkie moduły systemu są ze sobą zintegrowane, co pozwala na zachowanie spój-

ności danych oraz minimalizację ilości operacji wprowa-

dzania danych do systemu. Dlatego też tworząc jeden

dokument (np. fakturę zakupu), użytkownik jest w sta-

nie automatycznie utworzyć na jego podstawie dalsze

formularze (np. przyjęcie na magazyn itp.). Dodatkowo

przejrzysty interfejs systemu sprawia, iż jego obsługa

 jest wyjątkowo intuicyjna.

Openbravo ERP składa się z dziewięciu modułów,

z których każdy jest odpowiedzialny za zarządzanie od-

rębnym obszarem przedsiębiorstwa. Dostęp do modu-łów oraz transakcji jest kontrolowany za pomocą nada-

nia odpowiednich ról i uprawnień.

Zarządzanie głównym danymiPonieważ pewne dane systemu są współdzielone przez

wszystkie moduły, niezbędne było utworzenie takiego

obszaru, w którym użytkownik mógłby definiować naj-

istotniejsze z punktu widzenia przedsiębiorstwa infor-

macje. Takim obszarem jest moduł Zarządzanie głów-

nymi danymi. Jak sama nazwa wskazuje, pozwala on

na kompleksowe zarządzanie informacjami odnośnie

np. produktów, partnerów biznesowych oraz cenni-

ków. Struktura tych danych jest bardzo rozbudowana,

a dzięki tworzeniu dowolnych kategorii oraz powiązań

z innymi obiektami systemu, możliwe jest rejestrowanie

wszystkich niezbędnych informacji.

Zarządzanie zamówieniamiWspomaganie procesu zaopatrywania przedsiębior-

stwa w materiały stanowi kluczową rolę, szczegól-

nie w przypadku firm produkcyjnych. Openbravo ERP

umożliwia planowanie przyszłego zapotrzebowania

w oparciu o plan produkcji. Jeżeli na magazynie nie

znajduje się odpowiednia ilość wymaganych surowców,uprawnione osoby mogą automatycznie zgłosić zapo-

trzebowanie na nie. Następnie planista zapotrzebo-

wania zarządza procesem nabycia odpowiednich pro-

duktów. Funkcjonalność systemu wspiera użytkownika

również na tym etapie – w przypadku dokonania zaku-

pu w systemie gromadzone są wszystkie informacje od-

nośnie faktury zakupu. Następnie system automatycz-

nie generuje odpowiednie wpisy księgowe, dzięki cze-

mu nie muszą być one wprowadzane ręcznie. Na pod-

stawie faktury zakupu może także zostać wygenerowa-

ne przyjęcie na magazyn. Rozbudowane raporty po-zwalają na analizę takich zestawień jak zakupy, pokwi-

towania za materiały oraz faktury zakupu.

Gospodarka magazynowaStandardowa funkcjonalność modułu Gospodarka ma-

gazynowa Openbravo ERP jest na tyle bogata, iż speł-

nia podstawowe założenia systemu klasy WMS. Możli-

wość definiowania struktury dowolnej ilości magazynów

oraz dostęp do zawsze aktualnych informacji o ich sta-

nach pozwala na kompleksowe zarządzanie gospodar-

ką magazynową przedsiębiorstwa. Każdy z produktów

 jest zlokalizowany za pomocą współrzędnych X, Y, Z.

System umożliwia także ich śledzenie dzięki możliwości

integracji z czytnikiem kodów kreskowych oraz rejestro-

waniu wszelkich przesunięć magazynowych. Kolejną 

zaletą jest możliwość zarządzania zapasami w trans-

Funkcjonalność systemu

Openbravo ERPOtwarte systemy klasy ERP (Enterprise Resource Planning)odgrywają coraz większą rolę na światowych rynkach. Ideę OpenSource można śmiało nazwać milowym krokiem w ewolucjisystemów wspomagających kompleksowe zarządzanieprzedsiębiorstwem. Pozwala ona na znaczną redukcję kosztów

wdrożenia dzięki darmowej, nieograniczonej licencji. Dodatkowoogólnodostępny kod źródłowy umożliwia błyskawiczny rozwójproduktów w porównaniu do ich komercyjnych odpowiedników.

Page 23: Podroz Do Wnetrza Systemu Linux 11-2010

5/12/2018 Podroz Do Wnetrza Systemu Linux 11-2010 - slidepdf.com

http://slidepdf.com/reader/full/podroz-do-wnetrza-systemu-linux-11-2010 23/45

Funkcjonalność systemu Openbravo ERP

www.lpmagazine.org 23

 jest manualne definiowanie planu procesów produkcyj-

nych poprzez określanie jego poszczególnych etapów,

z uwzględnieniem produktów wejścia/wyjścia, a tak-

że czasu, kosztu i sposobu ich wytworzenia. Openbra-

vo ERP umożliwia kontrolę wykonywanej produkcji na

 jej dowolnym etapie. Ponadto możliwa jest także kon-

trola jakości wytwarzanych produktów oraz uwzględ-

nienie prac konserwacyjnych maszyn. Cały proces jest

zintegrowany z gospodarką magazynową, dzięki cze-

mu użytkownicy systemu mają dostęp do zawsze aktu-

alnych danych odnośnie stanów magazynowych. Dzię-

ki szczegółowym raportom produkcyjnym, takim jak:

dzienny raport zleceń produkcji, statusu wykonania pro-

dukcji, oczekujących zleceń itp., użytkownicy syste-

mu mogą na bieżąco kontrolować kwestie produkcyjne

przedsiębiorstwa.

Zarządzanie sprzedażą i zarządzanierelacjami z klientemMożliwość generowania dokumentów na podstawie

uprzednio wprowadzonych ma diametralny wpływ na

usprawnienie procesu zarządzania sprzedażą w Open-

bravo ERP. Faktury sprzedaży generowane są na pod-

stawie utworzonych zleceń sprzedaży, wysyłki na pod-

stawie zamówień, wpisy księgowe na podstawie prze-

prowadzonych operacji finansowych itp. Dzięki temu

użytkownik wykonuje pracę jednokrotnie, co znacznie

przyspiesza wykonanie procesu, a to pozwala zmini-malizować ilość błędnie wprowadzonych danych. Mo-

duł pozwala także na kompleksowe zarządzanie raba-

tami, cennikami oraz wypłatami prowizji. Szczegóło-

we raporty sprzedażowe pozwalają na analizę zleceń

sprzedaży, wysyłek, zwrotów, oczekujących sprzedaży

oraz faktur. W przypadku gdy przedsiębiorstwo oparte

 jest o sprzedaż detaliczną, Openbravo oferuje system

sprzedaży Openbravo POS, który jest w pełni zintegro-

wany z Openbravo ERP oraz specjalistycznymi urzą-

porcie – definiowanie tras, firm transportowych oraz

frachtu. Koszty transportu obliczane są automatycznie.

W przypadku przyjęcia towaru na magazyn użytkownik

może wygenerować i wydrukować odpowiedni doku-

ment. Na dalszym etapie przetwarzania surowców (wy-

konanie procesów produkcyjnych) stany magazynowe

są automatycznie uaktualniane, zgodnie ze zużyciem

istniejących i utworzeniem nowych produktów wejścia/

wyjścia. System umożliwia także wykonanie inwenta-

ryzacji produktów znajdujących się na magazynie oraz

modyfikację danych odnośnie stanów magazynowych

zgodnie z jej wynikiem. Rozbudowane raporty anali-

tyczne pozwalają na kontrolę magazynu, ofert, transak-

cji, stanów magazynowych, wysyłki itp.

Planowanie zapotrzebowania

materiałowego (MRP)Moduł MRP (Material Requirement Planning ) umożliwia

optymalne zarządzanie produkcją. Zapotrzebowanie

materiałowe jest obliczane za pomocą zdefiniowanej

metody planowania – w oparciu o oczekujące zlecenia

zakupu, sprzedaży, produkcji lub prognozę sprzedaży.

Algorytm systemu sugeruje użytkownikowi najbardziej

korzystną dla przedsiębiorstwa datę dokonania zakupu

towarów, rozpoczęcia procesu produkcyjnego oraz re-

alizacji sprzedaży. Uwzględniane są także poziomy za-

pasu bezpieczeństwa. Wynikiem działania algorytmu

 jest plan produkcji, który w razie potrzeby może zostaćdostosowany ręcznie przez użytkownika.

Zarządzanie produkcjąPlanowanie produkcji w Openbravo ERP może zostać

przeprowadzone na dwa sposoby. Pierwszy z nich za-

kłada wykorzystanie opisanego powyżej modułu MRP

(Material Requirement Planning ). Na podstawie otrzy-

manego w taki sposób planu produkcji system gene-

ruje plan procesów produkcyjnych. Innym sposobem

Rysunek 1. Ekran logowania

Page 24: Podroz Do Wnetrza Systemu Linux 11-2010

5/12/2018 Podroz Do Wnetrza Systemu Linux 11-2010 - slidepdf.com

http://slidepdf.com/reader/full/podroz-do-wnetrza-systemu-linux-11-2010 24/45

11/201024

ROZWIĄZANIA

dzeniami sprzedaży. Dodatkowo system został całko-

wicie dostosowany przez firmę eVolpe do polskich wa-

runków prawno-finansowych. Kolejnym produktem fir-

my eVolpe jest aplikacja dla przedstawicieli handlowych

mSales Openbravo ERP, w pełni zintegrowana z syste-

mem głównym.

Zarządzanie projektami i usługamiGdy działalność firmy opiera się w dużej mierze na

wykonywaniu projektów (zewnętrznych lub wewnętrz-

nych), istotnym zagadnieniem jest możliwość zarządza-

nia ich realizacją. Openbravo ERP oferuje w tej kwe-

stii funkcjonalność pozwalającą na zarządzanie dwoma

typami projektów: standardowym wielofazowym oraz

usługowym. Projekt wielofazowy znajduje swoje za-

stosowanie w przypadku tradycyjnych projektów, skła-

dających się z określonych faz oraz zadań do wykona-nia w ramach tych faz. Z każdą fazą (a nawet konkret-

nym jej zadaniem) można powiązać odpowiednie zaso-

by ludzkie oraz ustalenia czasowe i kosztowe ich reali-

zacji. Dodatkowo system umożliwia planowanie budże-

tu projektu: kosztów, wydatków, zwrotów z inwestycji.

Fazy oraz zadania mogą zostać powiązane z dowolny-

mi elementami systemu: partnerem biznesowym, ma-

gazynem, produktem, płatnościami, walutą itp. Projekty

usługowe wspomagają ponadto zarządzanie procesem

negocjacji kontraktów oraz ofertami partnerów bizneso-

wych. W ramach raportów dla każdego projektu jest ob-

liczany jego koszt, zyskowność, a także odnotowywany

 jest jego postęp.

Zarządzanie finansamiOpenbravo ERP umożliwia prowadzenie kompleksowej

księgowości dla przedsiębiorstw. Główną zaletą syste-

mu jest ograniczenie operacji księgowych. Wpisy do

księgi głównej generowane są na podstawie operacjiprzeprowadzanych na obszarze całego przedsiębior-

stwa - w przypadku sprzedaży, magazynowania, zaku-

Rysunek 3. Zarządzanie głównymi danymi - produkty 

Rysunek 2. MRP (Planowanie zapotrzebowania materiałowego)

Page 25: Podroz Do Wnetrza Systemu Linux 11-2010

5/12/2018 Podroz Do Wnetrza Systemu Linux 11-2010 - slidepdf.com

http://slidepdf.com/reader/full/podroz-do-wnetrza-systemu-linux-11-2010 25/45

Funkcjonalność systemu Openbravo ERP

www.lpmagazine.org 25

pów itp. Użytkownik ma także możliwość manualnego

wprowadzania wpisów. System pozwala także na kom-

pleksowe zarządzanie należnościami i zobowiązaniami

 – kontrolę zestawień bankowych, wpłaty i wypłaty do

kasy, zarządzanie płatnościami, ustalanie stawek oraz

zobowiązań podatkowych itp. Zakładowy plan kont mo-

że zostać zdefiniowany zgodnie z preferencjami klienta.

Firma eVolpe oferuje także całkowite dostosowanie mo-

dułu finansowego do polskich warunków prawno-finan-

sowych (standardowo system jest przystosowany do

realiów amerykańskich). Ponadto możliwe jest genero-

wanie bilansu, bilansu próbnego oraz rachunku zysków

i strat. Szczegółowe raporty księgowe, tj. raport księgi

głównej, raport podatkowy, bankowy, przepływów pie-

niężnych, środków trwałych itp. pozwalają na dokładną 

analizę sytuacji finansowej firmy.

Analityka biznesowaOpenbravo ERP nie jest jedynie systemem umożli-

wiającym gromadzenie danych – pozwala on także na

Rysunek 4. Zarządzanie sprzedażą

Rysunek 5. Zarządzanie zleceniem produkcji - okno pomocy 

Page 26: Podroz Do Wnetrza Systemu Linux 11-2010

5/12/2018 Podroz Do Wnetrza Systemu Linux 11-2010 - slidepdf.com

http://slidepdf.com/reader/full/podroz-do-wnetrza-systemu-linux-11-2010 26/45

11/201026

ROZWIĄZANIA

przeprowadzenie analiz dowolnego obszaru firmy. Do-

konanie analizy jest możliwe dzięki funkcjonalności ge-

nerowania rozbudowanych raportów. Raporty te są two-

rzone w oparciu o dowolne dane i dowolne kryteria (np.

„Wyświetl faktury sprzedaży tych partnerów bizneso-

wych, którzy zakupili produkt X w okresie Y”). Oprócz

wykorzystania standardowych raportów systemowych

przedsiębiorstwo ma możliwość zdefiniowania wła-

snych, które są wymagane do przeprowadzenia ana-

liz zgodnych ze specyfiką jego funkcjonowania. Jest to

bezsprzecznie podstawowe zagadnienie dla wspoma-

gania procesu decyzyjnego przedsiębiorstwa oraz wy-

boru odpowiedniej strategii.

Rozszerzenie funkcjonalnościz wykorzystaniem REST Web ServicesPodobnie jak w przypadku innych rozwiązań klasy ERP,podstawowa funkcjonalność systemu nie jest w sta-

nie spełnić wszystkich wymagań klienta. Dlatego też

w większości przypadków konieczne jest utworzenie

dodatkowych modułów oraz transakcji, aby rozwiązanie

zostało w pełni dopasowane do potrzeb przedsiębior-

stwa. Proces ten jest w dużej mierze zależny od archi-

tektury systemu. Pomimo swojego modularnego cha-

rakteru Openbravo ERP jest w pełni zintegrowanym

rozwiązaniem i na potrzeby wszystkich jego obszarów

wykorzystywany jest wspólny model danych. Dzięki te-

mu zachowana jest ich spójność dla całego przedsię-

biorstwa. Warstwa dostępu do danych (ang. Data Ac-

cess Layer) systemu Openbravo ERP oparta jest na

sprawdzonej już technologii Hibernate. Pozwala to na

uniezależnienie systemu od konkretnej implementacji

systemu bazodanowego.

Dodatkową zaletą rozwiązania jest pełne wsparcie

dla technologii REST Web Services (ang. Represen-tational State Transfer). Za pomocą odpowiednich in-

Rysunek 7. Zaawansowane raporty 

Rysunek 6. Zarządzanie �nansami 

Page 27: Podroz Do Wnetrza Systemu Linux 11-2010

5/12/2018 Podroz Do Wnetrza Systemu Linux 11-2010 - slidepdf.com

http://slidepdf.com/reader/full/podroz-do-wnetrza-systemu-linux-11-2010 27/45

Funkcjonalność systemu Openbravo ERP

www.lpmagazine.org 27

terfejsów programistycznych możliwy jest pełny dostęp

do danych systemu. Dzięki temu istnieje możliwość roz-

szerzenia jego funkcjonalności poprzez integrację z in-

nymi zewnętrznymi systemami.

W przeciwieństwie do architektur opartych na usłu-

gach (ang. Service Oriented Architecture), model

REST bazuje na zasobach, którymi zarządzenie moż-

liwe jest przy użyciu odpowiednich zapytań HTTP.

Główne zalety podejścia z wykorzystaniem modelu

REST to:

• wykorzystanie zapytań (GET, POST, PUT, DELE-

TE itp.), które w pełni odwzorowują akcje modelu

CRUD (ang. Create, Read, Update and Delete);

• łatwość implementacji i lekkość rozwiązania

z punktu widzenia architektury;

• wsparcie dla identykacji i adresacji zasobów;• możliwość wzajemnego powiązania zasobów lub

zbiorów zasobów.

System Openbravo ERP wykorzystuje pojęcie obiek-

tu biznesowego. W ogólności można przyjąć, że pod

tym terminem kryje się typ jednostki danych wykorzy-

stywany w biznesowych systemach informatycznych.

Przykładowo, obiekt biznesowy może opisywać poje-

dyncze rekordy (takie jak waluta, kraj itp.) lub bardziej

rozbudowane struktury składające się z podrzędnych

obiektów biznesowych. REST Web Services w Open-bravo ERP pozwala na kompleksowe zarządzanie

obiektami biznesowymi systemu.

Openbravo ERP umożliwia za pomocą odpowiednie-

go zapytania HTTP GET pobranie pliku XML reprezen-

tującego:

• pojedynczy obiekt biznesowy – np. obiekt kraj

o wartości ID równej 280 (Polska): http://localhost:

8080/openbravo/ws/dal/Country/280  

• listę obiektów biznesowych – np. listę wszystkich

krajów: http://localhost:8080/openbravo/ws/dal/ Country .

System pozwala również na wykonywanie standardo-

wych zapytań umożliwiających ltrowanie, stronicowa-

nie, sortowanie, także inne operacje związane z po-

bieraniem listy wyspecykowanych obiektów bizneso-

wych, np.:

• lista krajów posortowana po wartościach iBANCo-

de i regionName: http://localhost:8080/openbravo/ 

ws/dal/Country?orderBy=iBANCode,regionName

• lista dziesięciu krajów posortowana po wartościach

iBANCode i regionName począwszy od 19-go wy-

niku: http://localhost:8080/openbravo/ws/dal/Co-

untry?orderBy=iBANCode,regionName&frstResul-

t=19&maxResult=10.

Dodatkowo REST Web Services w systemie Open-

bravo ERP wspiera technologię Hibernate Query Lan-

guage. Dzięki temu możliwe jest tworzenie zaawan-

sowanych zapytań z wykorzystaniem dodatkowych

kryteriów, np. lista krajów, w których wartość curren-

cy równa się 102, a wartość iBANLength jest więk-

szy lub równy 23: http://localhost:8080/openbravo/ 

ws/dal/Country?where=currency='102' and iBAN-

Length>=23.

Możliwa jest także manipulacja danymi poprzez ich

wstawianie (POST, PUT) lub uaktualnianie (UPDA-

TE). W obu przypadkach oprócz podania adresu

HTTP obiektu biznesowego konieczne jest także do-

łączenie do nagłówka zapytania wiadomości w forma-

cie XML odpowiadającej obiektowi biznesowemu lub

grupie obiektów. Openbravo ERP udostępnia defini-

cję w postaci XML Schema opisującą kompletny mo-del danych wykorzystywany przez REST Web Servi-

ces. Jest ona dostępna pod adresem: http://localhost:

8080/openbravo/ws/dal/schema.

Usuwanie obiektów biznesowych możliwe jest po-

przez wysłanie zapytania DELETE, zawierającego ad-

res HTTP wskazujący na dany obiekt wyznaczony do

usunięcia.

W ogólności technologia REST Web Services pozwa-

la na manipulowanie danymi z całego obszaru systemu

za pomocą prostego interfejsu sieciowego bazujące-

go na zapytaniach HTTP. Pozwala to na dowolną, a conajważniejsze szybką rozbudowę oraz modyfikację roz-

wiązania zgodnie z wymaganiami klienta.

Standardowa funkcjonalność Openbravo ERP

bez wątpienia umożliwia kompleksowe zarządzanie

wszystkimi obszarami przedsiębiorstwa. Dzięki temu

procesy biznesowe w nim zachodzące mogą zostać

w pełni zoptymalizowane. Dodatkowo dobrze prze-

myślany przepływ informacji oraz powiązania pomię-

dzy danymi przyspieszają pracę użytkowników sys-

temu, co jeszcze bardziej wpływa na usprawnienie

funkcjonowania przedsiębiorstwa. Ponadto techno-logia Web Services znacznie upraszcza proces do-

stosowywania systemu do wymagań klienta. Zatem

biorąc pod uwagę także i redukcję kosztów wdroże-

nia nawet do 50% (brak opłat licencyjnych za opro-

gramowanie), system Openbravo ERP jest zdecydo-

wanie najkorzystniejszym rozwiązaniem informatycz-

nym klasy ERP.

BARTOSZ RYBICKI, MAGDALENA ZIĘBIŃSKABartosz Rybicki – Dyrektor ds. IT eVolpe Consulting Group.

Kontakt: [email protected] 

Magdalena Ziębińska – Dyrektor ds. Marketingu eVolpe Con-

 sulting Group.

Kontakt: [email protected] 

Page 28: Podroz Do Wnetrza Systemu Linux 11-2010

5/12/2018 Podroz Do Wnetrza Systemu Linux 11-2010 - slidepdf.com

http://slidepdf.com/reader/full/podroz-do-wnetrza-systemu-linux-11-2010 28/45

11/201028

ROZWIĄZANIA

Zagadnienia sztucznej inteligencji należą niewątpli-wie do najbardziej fascynujących zagadnień współ-czesnej informatyki. Osobiście gdyby przyszło mi

kiedyś programować komputer pokroju HAL-a wykorzy-stałbym do tego celu język Prolog. Jest to jeden z niewielu

 języków programowania, o którym można powiedzieć, żewystarczy w nim opisać problem aby maszyna sama zna-

lazła jego rozwiązanie.Prolog został stworzony w 1971 roku jako język pro-

gramowania służący do automatycznej analizy językównaturalnych. Jego autorami są Alain Colmeraurer i Phil-lipe Roussel. Prolog oparty jest o rachunek predykatówpierwszego rzędu.

Dzisiaj najwięcej uwagi poświęca się obiektowym języ-kom programowania. Obecnych jest wiele języków i ichspecyfikacji. Cechą wspólną języków takich jak Java,C++, C# a nawet PHP, Pyton czy Ruby on Raili jest to, żenadają się one dość dobrze do pewnych konkretnych za-

stosowań. Języki obiektowe robią dziś furorę jako narzę-dzie projektowania szeroko rozumianych aplikacji bizne-sowych, portali Web i oprogramowania użytkowego.

Są jednak takie dziedziny, w których paradygmat pro-gramowania obiektowego sprawdza się znacznie gorzej.Warto pomyśleć nad innymi dostępnymi rozwiązaniami.Często zaoszczędzimy bowiem zarówno na konieczno-ści pisania długiego kodu, jak i nieefektywności oblicze-niowej rozwiązania.

Jeśli zatem zajmujemy się zagadnieniami związany-mi z analizą i rozumieniem języka naturalnego, rozwią-zywaniem równań symbolicznych, logiką matematycz-ną, automatycznym projektowaniem, analizą struktur biochemicznych lub też innymi problemami z zakresusztucznej inteligencji winniśmy zastanowić się, czy za-stosowanie paradygmatu programowania w logice niebędzie dobrym wyborem.

Programowanie w Prologu znacząco różni się od pro-gramowania w językach obiektowych czy procedural-nych. Zamiast pisać algorytm, ukazujący kolejne krokido rozwiązania problemu programista zobowiązany jestdo dokładnego, sformalizowanego opisu na czym polegasam problem. Prolog sam wykona resztę. Programowa-nie w logice jest opisywaniem obiektów i łączących je za-

leżności (relacji). Gdy już tego dokonamy, będziemy mo-gli zwrócić się do naszego programu z zapytaniem o re-lacje i powiązania, których co prawda nie podaliśmy, jed-nak system jest w stanie wywnioskować je z wprowadzo-nych już danych.

Dostępne oprogramowanie i jego instalacjaJęzyk Prolog doczekał się wielu implementacji. Obecnieistnieją wersje działające między innymi w systemach Li-nux, Windows, MS-DOS i Macos X. Z bardziej znanychmożna wymienić GNU Prolog, SWI-Prolog, Visual Pro-

log będący produktem komercyjnym oraz tuProlog rozwi-  jany jako implementacja działająca na wirtualnej maszy-nie Javy.

Na potrzeby tego artykułu skorzystamy ze SWI-Pro-log, który jest dostępny dla większości dystrybucji Linu-xa w postaci prekompilowanych binariów. Chcąc zain-stalować SWI-Prolog w systemie Linux Ubuntu wystar-czy wydać w konsoli polecenie: sudo apt-get install

swi-prolog.Aby uruchomić przykładowe programy zamieszczone

poniżej w postaci listingów należy zapisać je wpierw w po-staci plików tekstowych z rozszerzeniem .pl  a następniewywołać poleceniem swipl nazwapliku.pl. Uruchomio-ny zostanie interaktywny interpreter Prologu, w którym bę-dziemy mogli wprowadzać zapytania. Ten sam efekt mo-żemy uzyskać także wywołując polecenie swipl, a następ-nie po uruchomieniu się interpretera wprowadzając na-

Prolog

W książce „2001: Odyseja kosmiczna” Arthura C. Clarke'a zainstalowanyna statku „Discovery 1” komputer pokładowy HAL 9000 sprawujenadzór nad przebiegiem misji. Zarządza wszelkimi aspektami lotu,a także jako jedyny zna prawdziwy cel wyprawy. Nie tylko przetwarzadane, aby udostępnić je załodze, lecz przede wszystkim samodzielnie

podejmuje decyzje. Wyprowadza wnioski z przesłanek. Dzięki temustaje się prawie równie inteligentny jak ludzie.

Zalety programowania w logice

Page 29: Podroz Do Wnetrza Systemu Linux 11-2010

5/12/2018 Podroz Do Wnetrza Systemu Linux 11-2010 - slidepdf.com

http://slidepdf.com/reader/full/podroz-do-wnetrza-systemu-linux-11-2010 29/45

Czyli o niekonwencjonalnym podejściu do rozwiązywania zagadek logicznych

www.lpmagazine.org 29

notujmy jeszcze kilka faktów odnoszących się do nasze-

go drzewa genealogicznego.Synem Mieszka I jest Bolesław Chrobry – syn(bo-

leslawChrobry, mieszkoI). Bolesław Chrobry ma sy-nów Bezpryma, Mieszka II i Otta – syn(bezprym,

boleslawChrobry).  syn(mieszkowi, boleslawChrobry).

syn(otto, boleslawChrobry). Żoną Mieszka II jest Ry-cheza – zona(rycheza, mieszkoII), Córką Mieszka II jestGertruda – corka(Gertruda, mieszkoII). Bratem Gertru-dy jest Kazimierz I – brat(kazimierzI, gertruda).

Poza zbiorem faktów program w Prologu powinien za-wierać jakieś reguły. Posłużą one do wyprowadzania no-

wych faktów poprzez wnioskowanie. Co prawda możnaby sobie wyobrazić program bez reguł, jednak z punktuwidzenia naszych rozważań byłby on mało interesujący.

Dodajmy na początek dwie bardzo proste reguły.ojciec(X,Y) :- syn(Y,X). oraz maz(X,Y) :- zona(Y,X). Duże litery X i Y reprezentują zmienne. Reguły odnoszą się bowiem do wielu obiektów i jak już mówiliśmy po-

zwalają wyprowadzać nowe fakty. Znak „:-” czy-tać będziemy „jeśli”, reprezentuje on tak zwanyfunktor odwrotnej implikacji wyrażanej zazwy-czaj w logice znakiem „→”. Wprowadzone przez

nas reguły przeczytamy odpowiednio „X jest oj-cem Y jeśli Y jest synem X” oraz „X jest mężemY jeśli Y jest żoną X”.

Zbiór opisanych dotąd faktów oraz reguł mo-żemy skomponować w program przedstawionyna Listingu 1.

Tak przygotowany program zapisujemy w pli-ku tekstowym nadając mu nazwę listing1.pl. Mo-żemy teraz uruchomić interpreter języka prologpodając jako parametr nazwę pliku źródłowego.Wpisujemy w linii poleceń swipl listing1.pl.Interpreter po załadowaniu wyświetla znak za-chęty. W tym momencie możemy sprawdzićdziałanie naszego prostego programu wysyła-

 jąc zapytania do systemu.Zapytanie w Prologu przybiera postać wyra-

żenia, w którym występuje co najmniej jedna

zwę pliku źródłowego, bez rozszerzenia, ujętą w nawia-sach kwadratowych i zakończoną kropką. Spowoduje towczytanie kodu programu do interpretera. Warto jeszczedodać, że wprowadzenie halt. spowoduje wyjście z trybuinteraktywnego do linii poleceń powłoki Linuxa.

Obiekty i relacjeJak wspomnieliśmy uprzednio programowanie w Prologupolega na opisaniu problemu w sposób sformalizowany. Toco musimy wykonać to: opisanie pewnych faktów o obiek-tach i łączących je wzajemnych relacjach oraz ewentualnepodanie reguł odnośnie wspomnianych. Następnie może-my zapytać system o obiekty i ich wzajemne relacje.

Przypuścimy, że tworzymy program, który będzie słu-żył analizom drzew genealogicznych sławnych rodów.Pragniemy aby nasz system „rozumiał” takie pojęcia jak

ojciec, matka, brat, siostra, dziadek i tym podobne. Pro- jektowany system miałby umożliwiać ustalenie wzajem-nych koligacji rodzinnych po wprowadzeniu danych. Jakzaprogramować tego problem w Prologu? Posłużmy siępraktycznym przykładem.

Analizie poddamy drzewo genealogiczne Piastówpolskich (patrz Rysunek 1). Jako pierwszy będziemychcieli zapisać fakt, że Mieszko I jest mężem Dobrawy.W Prologu możemy użyć do tego następującej składni:maz(mieszkoI, dobrawa). Warto już w tym miejscu za-znaczyć dwie rzeczy. W Prologu stałe zapisujemy roz-

poczynając od małej litery. W ten oto sposób musimy teżzapisać mieszkoI i dobrawa. Relacja bycia mężem nie

 jest relacją symetryczną. Fakty maz(mieszkoI, dobrawa). i maz(dobrawa, mieszkoI). oznaczają co innego i Pro-log traktuje je jako inne. Oczywiście od nas zależy jakbędziemy czytać daną relację. Musimy jednak zwrócićuwagę, że kolejność stałych ma istotne znaczenie. Za-

Listing 1. Pierwszy program w Prologu – Genealogia rodu Piastów 

maz(mieszkoI, dobrawa).

syn(boleslawChrobry, mieszkoI).

syn(bezprym, boleslawChrobr).

syn(mieszkoII, boleslawChrobry).

syn(otto, boleslawChrobry).

zona(rycheza, mieszkoII).

corka(gertruda, mieszkoII).

brat(kazimierzI, getruda).

ojciec(X,Y) :- syn(Y,X).

maz(X,Y) :- zona(Y,X).

Rysunek 1. Wybrany fragment drzewa genealogicznego rodu Piastów.

Page 30: Podroz Do Wnetrza Systemu Linux 11-2010

5/12/2018 Podroz Do Wnetrza Systemu Linux 11-2010 - slidepdf.com

http://slidepdf.com/reader/full/podroz-do-wnetrza-systemu-linux-11-2010 30/45

11/201030

ROZWIĄZANIA

zmienna. Interpreter po otrzymaniu takiego zapytanie sta-ra się ukonkretnić zmienne występujące w wyrażeniu po-przez stałe. W przypadku, gdy istnieje wiele rozwiązańdanego zadania, Prolog wyświetla pierwsze z nich, a na-stępnie czeka na reakcję ze strony użytkownika.

Na początek zadajmy pytanie dotyczące jakiegoś pro-stego faktu, który sami wprowadziliśmy.

Przykładowo: „Kto jest synem Mieszka I ?” – syn(X,

mieszkoI). System nie posiada informacji o innych sy-nach pierwszego władcy Polski. Po wciśnięciu klawi-sza [enter] otrzymujemy jednoznaczną odpowiedź:X=boleslawChrobry.

Spróbujmy teraz innego zapytania ojciec(X,

boleslawChrobry). Otrzymamy odpowiedź X=mieszkoI.Zwróćmy uwagę, że fakt ten został wywnioskowany z uży-ciem reguły ojciec(X,Y) :- syn(Y,X) ukazującej relację jaka

zachodzi pomiędzy ojcem a synem.Możemy dopisać do naszego pliku źródłowego na-

stępującą regułę dziadek(X,Z) :- ojciec(X,Y),

ojciec(Y,Z). Znak przecinka używany jest w Prologudla oznaczenia koniunkcji. Jest to odpowiednik operato-ra && w C++ czy „and” w Turbo Pascalu. Naszą nową re-gułę przeczytamy zatem „X jest dziadkiem Z jeśli X jestojcem Y i jednocześnie Y jest ojcem Z”.

W tym momencie możemy zapisać plik źródłowy i po-nownie uruchomić interpreter. Myślę, że spodziewacie się

  już jaką odpowiedź uzyskamy wprowadzając zapytanie

dziadek(X, otto) lub dziadek(X, bezprym). 

Aby dodać reguły pozwalające nam zdefiniować rela-cje takie jak bycie siostrą, bratem czy też bycie matką po-trzebne nam będą dodatkowe informacje w naszej logicz-nej bazie danych. Musimy mianowicie określić płeć każdejz osób. Zrobimy to wykorzystując jednoargumentowe pre-

dykaty. Fakt, że Mieszko I jest mężczyzną zapiszemy ja-ko mezczyzna(mieszkoI). Pozwoli to dokonać rozróżnieniamiędzy stosunkiem ojcostwa i macierzyństwa. Zmodyfiko-wany program wraz z kolejnymi dołączonymi faktami i re-gułami został podany w Listingu 2.

Możemy teraz zmodyfikować regułę ojciec(X,Y) :

- syn(Y,X), mezczyzna(X). Przeczytamy ją w następu-  jący sposób X jest ojcem Y jeśli Y jest synem X i zara-zem X jest mężczyzną. Jak zdefiniować stosunek macie-rzyństwa? X jest matką Y jeśli Y jest synem X (lub córką)i zarazem X jest kobietą. Wykorzystujemy w celu zapisu

dwie reguły matka(X,Y) :- syn(Y,X), kobieta(X). orazmatka(X,Y) :- corka(Y,X), kobieta(X).

Jeśli chcemy sprawdzić działanie zmodyfikowanegoprogramu należy uruchomić ponownie interpreter Pro-logu i wczytać kod zamieszczony jako Listing 2. Może-my sprawdzić teraz działanie takich zapytań jak matka(X,

boleslawChrobry). lub ojciec(X, gertruda). Zadanie jakzdefiniować relacje stosunku pokrewieństwa takie jak by-cie bratem lub siostrą zostawiamy jako pracę domową uważnym czytelnikom. Warto także poeksperymentowaćz programem dopisując własne fakty i reguły. Cennym

może okazać się zaczerpnięcie dodatkowej wiedzy z po-zycji książkowych polecanych w ramce z odnośnikami doliteratury omawiającej programowanie w Prologu.

Zagadka EinsteinaPragnąc ukazać wyższość Prologu nad innymi językamiprogramowania warto powołać się na przykład zadanianazywany „zagadką Einsteina”. Jest to znane zagadnie-nie programistyczne. Rozwiązanie tej zagadki można zna-leźć implementując odpowiedni algorytm w języku progra-mowania obiektowego lub proceduralnego. Problem jed-

nak leży w tym, że złożoność obliczeniowa zagadnieniapowoduje, że dobrze napisany program w C++ znajdujerozwiązanie dopiero po wielotygodniowych obliczeniach.Prolog radzi sobie z zagadką w mniej niż sekundę.

Autorstwo zagadki przypisuje się Albertowi Einsteino-wi. Podobno miał on powiedzieć kiedyś, że tylko 2% lu-dzi umie ją rozwiązać (mowa była zapewne o rozwiąza-niu bez użycia komputera). Niektórzy uważają natomiast,iż to nie Einstein lecz pisarz brytyjski, autor „Alicji w Kra-inie Czarów” Lewis Caroll pozostawił ludzkości ów pro-blem do rozwiązania.

Obecnie istnieje wiele możliwych sformułowań zagadkiEinsteina. Jedno z nich przytaczamy w Ramce 1. Stwo-rzenie efektywnego algorytmu rozwiązującego tak posta-wiony problem jest nie lada wyzwaniem. Warto uświa-domić sobie złożoność obliczeniową zagadnienia. Jeślizdecydowalibyśmy się używać nieoptymalnego algoryt-

Listing 2. Genealogia rodu Piastów – ciąg dalszy 

kobieta(dobrawa).

kobieta(rycheza).

Kobieta(gertruda).

mezczyzna(mieszkoI).

mezczyzna(boleslawChrobry).

mezczyzna(mieszkoII).

mezczyzna(kazimierzI).

maz(mieszkoI, dobrawa).maz(mieszkoI, dobrawa).

syn(boleslawChrobry, mieszkoI).

syn(bezprym, boleslawChrobr).

syn(mieszkoII, boleslawChrobry).

syn(otto, boleslawChrobry).

zona(rycheza, mieszkoII).

corka(gertruda, mieszkoII).

brat(kazimierzI, getruda).

ojciec(X,Y) :- syn(Y,X), mezczyzna(X).

matka(X,Y) :- syn(Y,X), kobieta(X).

ojciec(X,Y) :- corka(Y,X), mezczyzna(X).

matka(X,Y) :- corka(Y,X), kobieta(X).

maz(X,Y) :- zona(Y,X).

dziadek(X,Z) :- ojciec(X,Y), ojciec(Y,Z).

Page 31: Podroz Do Wnetrza Systemu Linux 11-2010

5/12/2018 Podroz Do Wnetrza Systemu Linux 11-2010 - slidepdf.com

http://slidepdf.com/reader/full/podroz-do-wnetrza-systemu-linux-11-2010 31/45

Czyli o niekonwencjonalnym podejściu do rozwiązywania zagadek logicznych

mu typu brute force generując wszystkie możliwe permu-tacje danych ich liczba wyniosłaby 24 miliardy.

Liczba możliwych kombinacji tworzy tabli-cę o pięciu rzędach odpowiednio (narodo-wość mieszkańca, kolor domu, preferowany

napój, rodzaj palonych papierosów, hodowa-ne zwierzę) i pięciu kolumnach (po jednej ko-lumnie dla każdego domu). Tablicę taką moż-na wypełnić na 5!5 = (1*2*3*4*5)5 = 1205 =24 883 200 000 sposobów. Następnie należa-łoby wybrać jedną permutację odpowiadającą rozwiązaniu zadania.

Implementacja programu rozwiązującegoomawianą zagadkę w Prologu zajmuje 21 li-nijek kodu. Na komputerze autora programwykonał się w niecałą sekundę. Nie będzie-

my tutaj przytaczać rozwiązania zagadki. Je-śli ktoś z czytelników jest ciekawy, który z męż-czyzn hoduje zebrę zachęcamy do przepisa-nia programu z Listingu 3 do pliku i samodziel-nego sprawdzenia. Po załadowaniu interprete-ra Prologu z parametrem w postaci nazwy pli-ku źródłowego należy w tym celu jako zapyta-nie wprowadzić ma_zebre(Ulica, Kto).

Listing programu prologowego rozwiązują-cego zagadkę Einsteina może wydawać sięna początku niezrozumiały. Tak naprawdę je-

go dokładne wytłumaczenie wiersz po wierszu wymaga-łoby więcej miejsca niż przewidziano w tym artykule. Pod-

Listing 3. Program rozwiązujący zagadkę Einsteina

obok(X, Y, List) :- po_prawej(X, Y, List).

obok(X, Y, List) :- po_prawej(Y, X, List).

po_prawej(L, R, [L | [R | _]]).

po_prawej(L, R, [_ | Rest]) :- po_prawej(L, R, Rest).

ma_zebre(Ulica, Kto) :-

Ulica = [_Dom1, _Dom2, _Dom3, _Dom4, _Dom5],

member(dom(czerwony, anglik, _, _, _), Ulica),

member(dom(_, szwed, pies, _, _), Ulica),

member(dom(zielony, _, _, kawa, _), Ulica),

member(dom(_, dunczyk, _, herbata, _), Ulica),

po_prawej(dom(zielony,_,_,_,_), dom(bialy,_,_,_,_), Ulica),

member(dom(_, _, slimak, _, old_gold), Ulica),

member(dom(zolty, _, _, _, kools), Ulica),

[_, _, dom(_, _, _, mleko, _), _, _] = Ulica,

[dom(_, norweg, _, _, _) | _] = Ulica,

obok(dom(_, _, _, _, chesterfelds), dom(_, _, lis, _, _), Ulica),

obok(dom(_, _, _, _, kools), dom(_, _, kon, _, _), Ulica),

member(dom(_, _, _, sok_pomaranczowy, lucky_strike), Ulica),

member(dom(_, japonczyk, _, _, parliaments), Ulica),

obok(dom(_, norweg, _, _, _), dom(niebieski, _, _, _, _), Ulica),

member(dom(_, Kto, zebra, _, _), Ulica).

 Wybierz swój nowy system, poznaj Linuksa krok po kroku!

T w o je pier w s z e   r ód�ow ied z  y  o Linuk sie w wortalu:

recenzje dystrybucji

porównanie funkcji

opis instalacji

i du o wi�cej

ponad � wier� milionaod wied zin miesic znie!

 jakilinux.org  kontakt / [email protected]

Reklama

Page 32: Podroz Do Wnetrza Systemu Linux 11-2010

5/12/2018 Podroz Do Wnetrza Systemu Linux 11-2010 - slidepdf.com

http://slidepdf.com/reader/full/podroz-do-wnetrza-systemu-linux-11-2010 32/45

11/201032

ROZWIĄZANIA

stawowa idea programu jest jednak bar-dzo prosta. Na początku wprowadzonodwie reguły definiujące trójargumento-wy predykat obok(X,Y,Lista). Dany domX znajduje się obok domu Y, jeśli dom

X jest po prawej stronie domu Y (pierw-sza reguła) lub też gdy dom Y jest po pra-wej stronie domu X (druga reguła). Al-ternatywa możliwości wyrażana jest tu-taj poprzez wprowadzenie dwu odręb-nych reguł.

Predykat po_prawej zdefiniowano przyużyciu operacji na listach. Jego definicjaskłada się z dwu reguł i jest oparta na re-kurencji.

Na cały dalszy kod programu składa się

definicja predykatu ma_zebre(Ulica, Kto) kolejne zdania zagadki stanowią kolejne elementy ko-niunkcji, które muszą być spełnione aby wspomniany pre-dykat został ukonkretniony i znalezione rozwiązanie.

PodsumowanieWiele osób będących doświadczonymi programistami za-uważy z pewnością, że Prolog łączy w sobie cechy nie tyl-ko języka programowania lecz również systemu automa-tycznego dowodzenia twierdzeń oraz narzędzia do two-rzenia systemów eksperckich.

Z punktu widzenia logika, Prolog nie stanowi syste-mu automatycznego dowodzenia twierdzeń. Ogranicze-nie zbioru rozpatrywanych formuł do klauzul Horna niepozwala na zapisywanie w postaci programów w Prolo-gu bardziej skomplikowanych teorii. Dotyczy to w szcze-gólności zdań asertywnych zawierających funktor negacji,czyli wyrażających, że jakaś relacja nie zachodzi.

W Prologu istnieje co prawda mechanizm stanowiącynamiastkę negacji. Możliwe jest wprowadzenie funkto-ra negacji interpretowanego w następujący sposób: jeśli

system nie jest w stanie udowodnić danej formuły, możnawtedy przyjąć, że zachodzi jej zaprzeczenie. Takie rozwią-zanie nie jest jednak uniwersalne i stosowanie go w pew-nych przypadkach może być przyczyną pojawienia się za-pętleń w trakcie ukonkretniania zapytania.

Pomimo wspomnianych niedoskonałości Prolog ma  jednak zaletę, której nie sposób pominąć. Jest on re-welacyjnie szybki. Cecha ta powoduje, że warto roz-ważyć użycie tego języka podczas rozwiązywania pew-nych zadań, być może nie tylko związanych z problema-

tyką sztucznej inteligencji. Wiele typowych algorytmów,które znane są z akademickich kursów programowaniaobiektowego można rozwiązać bardzo efektywnie tak-że w Prologu.

Czy warto uczyć się Prologu jako języka programowa-nia? Niewątpliwie tak, po pierwsze dlatego, że paradyg-mat programowania w logice zupełnie różni się od para-dygmatu projektowania obiektowego. Z tego też powodupodejmując się nauki, wyrobimy w sobie zupełnie noweformy abstrakcyjnego myślenia obce wielu programistom.

Rysunek 2. Interpreter SWI-Prolog uruchomiony w konsoli Linuxa.

Zagadka EinsteinaPięciu ludzi różnych narodowości zamieszkuje pięć domów w pięciu różnych kolorach. Każdy z nich pali papierosy jednej z pięciu

różnych marek i pija jeden z pięciu różnych napojów. Hodują zwierzęta pięciu różnych gatunków. Pytanie brzmi: który z nich ho-

duje zebrę?

1. Anglik mieszka w czerwonym domu.

2. Szwed hoduje psa.

3. W zielonym domu pija sie kawę.

4. Ukraińczyk pija herbatę.

5. Zielony dom stoi bezpośrednio po prawej stronie białego domu.

6. Palacz Old Goldów hoduje ślimaka.

7. Koolsy pali się w żółtym domu.

8. Mieszkaniec środkowego domu pija mleko.

9. Norweg zamieszkuje pierwszy dom.

10. Mężczyzna, który pali Chesterfeldy zamieszkuje dom obok hodowcy lisa.11. Koolsy pali się w domu znajdującym się obok domu, w którym trzymany jest koń.

12. Palacz papierosów marki Lucky Strike pija sok pomarańczowy.

13. Japończyk pali Parliamentsy.

14. Nor weg mieszka obok niebieskiego domu.

Page 33: Podroz Do Wnetrza Systemu Linux 11-2010

5/12/2018 Podroz Do Wnetrza Systemu Linux 11-2010 - slidepdf.com

http://slidepdf.com/reader/full/podroz-do-wnetrza-systemu-linux-11-2010 33/45

Czyli o niekonwencjonalnym podejściu do rozwiązywania zagadek logicznych

Jednocześnie zdobędziemy umiejętność implementacjiwielu złożonych problemów.

Wydaje się, że przyszłość informatyki będzie coraz moc-niej związana z szeroko rozumianą sztuczną inteligencją.Obecnie komputery służą nam najczęściej jako medium

dostępu do informacji. Jednocześnie jednak coraz bardziejwidoczne staje się to, że informacji docierającej do nas jestzbyt dużo, jesteśmy nią niemalże zalewani. Stąd prawdo-podobnym jest, że w niedalekiej przyszłości preferowanebędą te technologie, które pozwolą na dostarczanie użyt-kownikom tylko wybranych, w pełni spersonalizowanychtreści. Wtedy jednak, podstawowa rola oprogramowania,

którą aktualnie jest przetwarzanie danych zmieni się napodejmowanie decyzji jakie treści udostępnić końcowe-mu użytkownikowi, aby zadośćuczynić jego żądaniu. Po-

 jawią się inteligentne wyszukiwarki rozumiejące język na-turalny, analizujące kontekst wypowiedzi i udostępniające

w postaci wyników tylko te i dokładnie te informacje jakichpotrzebujemy. Być może przestrzeń Internetu coraz czę-ściej będą urozmaicać nam „rozumne” czaterboty, z któ-rymi będziemy mogli nie tylko poprowadzić zabawną kon-wersację, lecz wypytać o szczegóły oferty, poprosić o za-rezerwowanie biletu na koncert lub do teatru, jak też auto-matyczne przygotowanie raportu na wybrany temat.

Zagadnienia, przy których rozwiązywaniu istotna jestumiejętność wnioskowania wydają się mieć jednak tę ce-chę, że niezbyt dobrze są opisywalne w postaci algoryt-micznej. Programista musiałby znać bowiem nie tylko pro-

blem lecz również metodę krok po kroku prowadzącą dorozwiązania. Prolog natomiast nie wymaga znajomości jużna początku przepisu prowadzącego do odpowiedzi. Toczyni z niego język doskonały do omawianych zagadnień.

PIOTR ORZESZEKPiotr Orzeszek ma wykształcenie �lozo�czne. Pracuje jako na-

uczyciel akademicki na Uniwersytecie Kardynała Stefana Wyszyń-

 skiego w Warszawie. Linuksem interesuje się od ponad dziesięciu

lat i używa wspomnianego systemu operacyjnego na co dzień.

Kontakt z autorem: [email protected]

W Sieci

• http://www.swi-prolog.org/  – Witryna używanej w arty-

kule implementacji Prologu (en);

• http://www.learnprolognow.org/  – Kurs programowania

w Prologu w wersji online (en);

Polecana literatura

• W. F. Clocksin, C. S. Mellish, Prolog. Programowanie, He-

lion, Gliwice 2006.• I. Bratko, Prolog programing for arti�cial intelligence, Ad-

dison-Wesley, Harlow 2006.

Page 34: Podroz Do Wnetrza Systemu Linux 11-2010

5/12/2018 Podroz Do Wnetrza Systemu Linux 11-2010 - slidepdf.com

http://slidepdf.com/reader/full/podroz-do-wnetrza-systemu-linux-11-2010 34/45

11/201034

ROZWIĄZANIA

Takim rozwiązaniem jest program nmon. Aplikacja

znana jest administratorom systemów AIX. Dnia

27 lipca 2009 firma IBM udostępniła źródła pro-

gramu na licencji GPL. Od tego momentu, program do-

stępny jest również na Linuksa.

W jednym oknie, konsoli aplikacja potrafi poka-

zać procesory, użycie pamięci, obciążenie sieci, dys-

ki (wykresy obciążenia), zajętość systemu plików,top procesy, zasoby, informacje o systemie i wie-

le innych. Aplikację obsługuje się poprzez klawiatu-

rę. Wciskając odpowiedni guzik, włączamy lub wyłą-

czamy wykresy.

h = pomoc

r = bardzo ogólne informacje o systemie

c = obciążenie CPU per rdzeń

l = obciążenie CPU w długim czasie, wykres

m = statystyki pamięci

V = pamięć wirtualna oraz SWAP

k = ogólne liczniki Kernela

n = statystyki interfejsów sieciowych

N = statystyki NFS

d = wykresy I/O

D = statystyki I/O

o = mapa obciążenia I/O

p = statystyki partycji

b = tryb czarno-biały

. = tryb minimalny, tzn. tylko aktywne dyski i procesy

Program może pracować w dwóch trybach. Pierw-

szy z nich to live mode, kiedy na bieżąco pokazu-

  je dane na konsoli. W drugim trybie zbiera on dane

NmonW Linuksie istnieje wiele narzędzi do monitorowaniasystemu. Jeżeli chcemy sprawdzić zużycie pamięciczy obciążenie procesora sięgamy po program top.Nasłuchujące porty sprawdzamy poleceniem netstat.Często korzystamy z takich rozwiązań jak vmstat czy free.A teraz wyobraźmy sobie jedno narzędzie, które potrafi

monitorować te wszystkie parametry.

Rysunek 1. Nmon - okno główne programu

Page 35: Podroz Do Wnetrza Systemu Linux 11-2010

5/12/2018 Podroz Do Wnetrza Systemu Linux 11-2010 - slidepdf.com

http://slidepdf.com/reader/full/podroz-do-wnetrza-systemu-linux-11-2010 35/45

Nmon

www.lpmagazine.org 35

róbce przez np. nmonanalyser. Jest to arkusz kalku-

lacyjny, który zawiera Makra. Przetwarzają one plik

nmona i generują wykresy.

Przykładowy wykres i dane dostępne są w pliku mu-

szelka-nmon.ods.

i zapisuje do pliku. W tym drugim przypadku aplika-

cje należy uruchomić z parametrami np.: nmon -t -f

-s2 -c 30.

Parametr -t określa, że chcemy zbierać informacje

o procesorach, -f nakazuje zapisać dane do pliku, -s2

 jest informacją o tym, że dane będą zbierane co 2 se-

kundy, a -c 30 określa, że zostanie wykonane 30 po-brań danych. Aplikacja zostaje uruchomia w tle.

root@muszelka:/tmp# ps -efww | grep nmon

root 4576 1 0 06:36 pts/1 00:00:00 nmon -t -f -s2 -c 30

root 4612 4253 0 06:37 pts/1 00:00:00 grep nmon

Wygenerowany zostanie w ten sposób plik muszelka_ 

100602_0627.nmon, który można poddać dalszej ob-

Rysunek 2. Rysunek 3. Rysunek 4.

Rysunek 5. Nmon - wykres

KAMIL POREMBIŃSKI  Związany z portalemthecamels.org. Pasjonat piękna,

fotograf  i informatyk.

Prowadzi stronę: http://paszczak000.jogger.pl/ 

Page 36: Podroz Do Wnetrza Systemu Linux 11-2010

5/12/2018 Podroz Do Wnetrza Systemu Linux 11-2010 - slidepdf.com

http://slidepdf.com/reader/full/podroz-do-wnetrza-systemu-linux-11-2010 36/45

11/201036

DLA POCZĄTKUJĄCYCH

Skąd ten pomysł, żeby zajmować się „antyka-mi”? W dzisiejszych czasach dzieci rozpoczy-nają edukację z informatyki już od pierwszej kla-

sy szkoły podstawowej. Powszechnie znany jest fakt,że już uczniowie wiedzą, jak korzystać z Internetu orazszeregu komputerowych programów edukacyjnych,niekiedy lepiej niż dorośli. Z pewnością początkowymetapem zapoznawania się z komputerem są próby sił

w grach komputerowych, różnych kolorowych układan-kach i prostych łamigłówkach logicznych. Można zadaćpytania. Czy programowanie komputerów może byćrównie atrakcyjne jak nieograniczony świat globalnejsieci Internet? Czy podstawowe zasady tworzenia pro-stego oprogramowania będą stymulowały do dalszegorozwoju w kierunku poznania bardziej złożonych języ-ków programowania? Na początek trafnym wyboremmoże okazać się KTurtle i język Logo, który jest „straw-ny” dla uczniów w wieku wczesnoszkolnym. W czasachpoprzedniego systemu, gdzie dostępność do kompute-

rów była ograniczona, wielu zaczynało od tego języka,a nieprzespane noce pamiętają pewnie do dziś. Obec-nie język ten nie stosuje się w rozwiązaniach komercyj-nych, jednak świetnie nadaje się do zastosowań eduka-cyjnych i pierwszych kroków najmłodszych do roli pro-gramisty w projektach.

Witaj świecieInstalacja KTurtle nie powinna przysporzyć proble-mów nawet początkującym fanom Linuxa. Mając zde-finiowane podstawowe repozytoria, wystarczy wpisaćw programie Synaptic nazwę programu, a system samwyszuka niezbędne paczki do instalacji. Aplikacja in-staluje się w folderze Nauka menu głównego, a zna-lezienie jej i uruchomienie jest czynnością trywialną.Środowisko do tworzenia programów w Logo rów-nież przystosowane jest dla początkujących adep-

tów programowania. Na uwagę zasługuje edytor ko-mend w lewym górnym rogu ekranu oraz płótno, naktórym pojawia się główny bohater artykułu, czyli żółw.Spróbujmy napisać pierwszy prosty program graficz-ny w Logo. Narysujmy kwadrat. Do tego celu potrze-bujemy dwóch komend języka. Pierwsza forward (fw) odpowiedzialna jest za poruszanie się do przodu żół-wiem po płótnie, druga turnright (tr) umożliwi nam ob-

rót żółwia o zdefiniowany kąt. Do wykreślenia proste-go kwadratu należy cztery razy przesunąć żółwia o za-dany długość boku kwadratu oraz cztery razy obrócićgo o 90 stopni. Kod źródłowego tego trywialnego pro-gramu został zaprezentowany na Listingu 1, a wynikidziałania na Rysunku 1.

Przejdźmy do tytułowego programu „Witaj świecie”.Nie można zaprzeczyć, że program Hello World go-ścił na łamach Linux+ i Software Developers Journalwielokrotnie. Implementacje w wielu językach progra-mowania, np. Java, C++ lub Perl, na pewno każdy so-

KTurtle –

logo na linuxieLogo, kto o tym pamięta? Czy projekt ten jeszcze żyje?Czy pokolenie trzydziestolatków i starszych koleżanek i kolegów pamięta czasy wrocławskiego Elwro, ZX Spectrumi ówczesny marketing w szkołach promujący ten język programowania? Jeśli tak, to zapraszam do wstępu do logo

i współczesnej implementacji KTurtle.

Listing 1. Kwadrat w Logo – kod źródłowy 

fw 100

tr 90

fw 100

tr 90

fw 100

tr 90

fw 100

Listing 2. Witaj świecie w Logo

ccl

sh

print „Hello world”

Page 37: Podroz Do Wnetrza Systemu Linux 11-2010

5/12/2018 Podroz Do Wnetrza Systemu Linux 11-2010 - slidepdf.com

http://slidepdf.com/reader/full/podroz-do-wnetrza-systemu-linux-11-2010 37/45

Pierwsze kroki

www.lpmagazine.org 37

nego oraz gwarantują wykonanie bloku rozkazów po

spełnieniu warunku. W celu zademonstrowania dzia-łania prostej składni if można posłużyć się przykłademfragmentu kodu prostego kalkulatora. W matematycedzielenie przez liczbę zero nie jest dozwolone. W ta-

bie przypomina. Można założyć się o dużą colę, że im-plementacja w Logo jest całkowitą nowością i nietypo-wą wersją tego popularnego wstępniaka. Będąc pionie-rem implementacji funkcji Witaj świecie w Logo, zade-monstruję, jak ona wygląda. W celu wypisania napisu

na ekranie można posłużyć się funkcją  print . Wyczyść-my ekran z kwadratem funkcją clear (ccl), a następnieukryjmy żółwia, ponieważ w tym przykładzie nie będzienam on potrzebny. Komenda spritehide  (sh) sprawia,że żółw znika z ekranu. W edytorze wpiszmy sekwen-cję komend zamieszczoną na Listingu 2.

Napis „Hello world” drukowany jest za pomocą stan-dardowej czcionki. W celu poeksperymentowaniaz właściwościami czcionek i oknami, można polecić ko-mendy fontsize oraz message, które pozwalają upięk-szyć wydruk. Przejdźmy teraz do bardziej złożonych

konstrukcji, jakimi są instrukcje warunkowe i pętle. Im-plementacja Logo pod Linuxem wspiera również te ele-menty, co czyni zabawę bardziej atrakcyjną.

Zrobię to pod warunkiem …Implementacja KTurtle oprócz prostych operacji gra-ficznych wspiera również operacje arytmetyczne orazinstrukcje warunkowe. Zbiór działań arytmetycznychnie ogranicza się tylko to prostego dodawania, odej-mowania, mnożenia i dzielenia liczb. Programista dodyspozycji otrzymuje takie funkcje jak round – zwra-

cająca najbliższą liczbę całkowitą, funkcje trygono-metryczne – sinus, cosinus, tangens, oraz takie funk-cje jak pierwiastek kwadratowy z liczby sqrt . Instrukcjewarunkowe są podstawą każdego języka imperatyw-

Listing 3. Dzielenie przez zero

sh

$x = 10

$y = 0

if $y != 0 {

print $x / $y

}

else

{

print „Operacja nie jest dozwolona. Dzielnik = 0”

}

Listing 4. Prosta tabliczka mnożenia

ccl

sh

bw 500

for $x = 0 to 5 {

for $y = 0 to 5 {

print $x * $y

fw 10

}

}

Rysunek 1. Kwadrat w Logo – wyniki 

Page 38: Podroz Do Wnetrza Systemu Linux 11-2010

5/12/2018 Podroz Do Wnetrza Systemu Linux 11-2010 - slidepdf.com

http://slidepdf.com/reader/full/podroz-do-wnetrza-systemu-linux-11-2010 38/45

11/201038

DLA POCZĄTKUJĄCYCH

kim przypadku działanie polegające na podzieleniudwóch liczb będzie wykonywane tylko w przypadku,gdy dzielnik będzie cyfrą różną od zera. Logo pod Li-nuxem umożliwia sprawdzenie dowolnych warunków.Fakt ten prezentuje Listing 3.

Na płótnie pojawi się napis „Operacja nie jest dozwo-lona. Dzielnik = 0”. KTurtle pozwala również definio-wać zmienne, za pomocą których można przechowy-wać liczby. Interpreter umożliwia również interaktywnewprowadzanie cyfr. Składnia nie posiada popularnej in-strukcji then, a zbliżona jest do swojego odpowiedni-ka w języku Java. Kolejnym zagadnieniem umożliwia-

  jącym budowanie bardziej ciekawszych programóww Logo są pętle.

Pętle

Instrukcje iteracyjne, inaczej pętle są prostymi mecha-nizmami. Sterowanie zazwyczaj odbywa się w sposóbsekwencyjny i jest uzależnione od liczników w pętli.Można skonstruować bardziej wyszukane pętle. Na po-trzeby konkretnych zastosowań można skonstruowaćpętlę, która wykona się tylko raz i działa identycznie jakinstrukcja if . Logo i KTurtle udostępnia trzy rodzaje pętli.Pętlę repeat , while i for . Pętla while sprawdza warunekna początku, zanim wykona pierwszą iterację, pętla re-

 peat sprawdza warunek wyjścia z pętli na końcu. Pętlafor jest odpowiednikiem klasycznej pętli for z innych ję-

zyków programowania. Działanie pętli for można zapre-zentować na przykładzie programu drukującego skró-coną tabliczkę mnożenia (Listing 4).

Program tabliczka mnożenia jest prostym rozwiąza-niem, demonstrującym zasady działania pętli for . Wy-druk wyników zależy od aktualnej pozycji żółwia i pisa-ka na płótnie, dlatego konieczne jest zastosowanie ko-mend umożliwiających jego przemieszczanie. W prze-ciwnym wypadku wyniki zlewają się i nie będą widocz-ne na ekranie. Proponuję poeksperymentować same-mu z właściwościami wydruku. Logo udostępnia rów-

nież wiele innych funkcji, które odpowiedzialne są zawprowadzanie danych wejściowych do programu (ask ),tworzenie okien dialogowych (message) czy też definio-wanie własnych poleceń - funkcji (learn).

Złożona grafikaW sieci udostępniono liczne zasoby i przykładowe pro-gramy wraz z kodem źródłowym. Strona projektu KTur-tle zawiera odnośniki do stron trzecich, prezentującychźródła, które kreślą miłą dla oka zaawansowaną grafi-kę. Za pomocą Logo, używając wcześniej przedstawio-

nych mechanizmów, można narysować np. trójkąt Sier-pińskiego, który został przedstawiony na Rysunku 2.

Inne fraktale takie jak krzywa C Levy'ego (kalafior)czy też krzywa Kocha (płatek śniegu) wymagają więk-szej wprawy w posługiwaniu się KTurtle, zasad działa-nia wywołań rekurencyjnych i znajomości komendy le-

arn. Przytoczona instrukcja to nic innego jak własna de-finicja funkcji, do której można przekazywać parame-

try wejściowe oraz wywoływać je z poziomu innego blo-ku kodu źródłowego. Podręcznik użytkownika załączo-ny do środowiska KTurtle opisuje szerzej wszystkie do-stępne komendy w Logo oraz przytacza wiele przykła-dów ułatwiających rozpoczęcie pracy z programem.Czytelników zachęcam do dalszych, własnych ekspe-rymentów.

PodsumowanieKTurtle i język Logo są prostymi narzędziami, którychmożna się nauczyć w krótkim czasie. Dla osób zwią-

zanych zawodowo z informatyką, projekt nie będziewnosił zbyt wiele nowego do posiadanej wiedzy na te-mat programowania. KTurtle ma jednak jeden znaczą-cy walor. Za pomocą Logo można w sposób przyjemnyi bezbolesny rozpocząć stawianie pierwszych krokóww świecie własnych programów komputerowych.

W Sieci

• Projekt KTurtle – http://edu.kde.org/kturtle ;

• Logo Foundation http://el.media.mit.edu/logo-foundation/ 

Rysunek 2. Trójkąt Sierpińskiego

 ŁUKASZ LECHERT  Autor jest absolwentem specjalizacji Inżynieria Oprogramo-

wania Politechniki Wrocławskiej oraz Studium Podyplomowe-

go Zarządzanie Projektem na Poznańskim Uniwersytecie Eko-

nomicznym. Interesuje się inżynierią oprogramowania, za-

gadnieniami zarządzania projektem oraz oprogramowaniem

o otwartym kodzie.

Kontakt z autorem: [email protected]

Page 39: Podroz Do Wnetrza Systemu Linux 11-2010

5/12/2018 Podroz Do Wnetrza Systemu Linux 11-2010 - slidepdf.com

http://slidepdf.com/reader/full/podroz-do-wnetrza-systemu-linux-11-2010 39/45

 P O B I E R  Z  S D

 J  1 1/ 2 0 1 0

Page 40: Podroz Do Wnetrza Systemu Linux 11-2010

5/12/2018 Podroz Do Wnetrza Systemu Linux 11-2010 - slidepdf.com

http://slidepdf.com/reader/full/podroz-do-wnetrza-systemu-linux-11-2010 40/45

11/201040

RECENZJA

Na pierwszy ogień idzie obsługa pod pingwinem.

Sam testowałem tego pada, około 4 miesięcy

temu na Debianie aktualizowanym do gałę-

zi testing, i urządzenie jako takie jest rozpoznawalne,

co więcej, można z niego niemalże w pełni korzystać.

Do pełnej obsługi brakuje niestety wsparcia dla syste-

mu wibracji. Wygląda to tak, że przycisk odpowiedzial-

ny za ich działanie jest stale podświetlony, jego przy-ciskanie tego stanu rzeczy nie zmienia, natomiast wi-

bracje zwyczajnie nie działają. Niestety nie mogę po-

nowić testów na nowszych jądrach, bowiem nie jestem

 już w posiadaniu tego gamepada; tak się jednak skła-

da, że brak wsparcia dla systemu wibracji na syste-

mach linuksowych nie jest jedynym, co zdecydowanie

obniża jego atrakcyjność dla przeciętnego linuksowe-

go gracza.

Druga sprawa, to samo wykonanie urządzenia, któ-

re pomimo tego że pozytywnie zaskoczyło mnie mi-

łym w dotyku gumowym pokryciem, przyniosło za so-bą również wiele rozczarowań. Pierwsza sprawa to

krzyżak, który chociaż wizualnie sprawia dobre wraże-

nie, nie jest szczególnie wygodny w użytkowaniu. Ma-

ło tego; zdarzało mi się, że dziwnie reagował on na wy-

dawane polecenia, przez co rozumiem np. sytuację,

w której bohater gry nadal idzie w jakimś kierunku, mi-

mo że chwilę temu przestałem trzymać odpowiadają-

cy tej czynności kierunek. Dodam, że oceniając jakość

wykonania tak krzyżaka, jak i przycisków umieszczo-

nych po prawej stronie, średnio to dziwi, bowiem ła-

two można zauważyć pewny brak dbałości w wykona-

niu tychże elementów.

Inna rzecz to jakość wykonania nadajnika, za pomo-

cą którego podłączamy urządzenie do komputera. By-

łem naprawdę zaskoczony, gdy zobaczyłem, jakiej ja-

kości jest kabel USB z niego wychodzący. Jest on na

tyle cienki, że zdawałem sobie sprawę z tego, że naj-

dalej po kilku miesiącach konieczne będzie najpraw-

dopodobniej zareklamowanie urządzenia u producen-

ta (no, chyba że ktoś nie zamierza go wyjmować; na-

tomiast osoby podróżujące powinny mieć ten fakt na

uwadze) – sam na szczęście szybko opisywanego

dziś gamepada sprzedałem i nie musiałem przekony-

wać się o słuszności moich prognoz na własnej skó-

rze; może nowemu właścicielowi bardziej przypadnie

do gustu.

No właśnie, i teraz; czy warto było to urządzenie

sprzedawać? To jest właśnie sprawa dyskusyjna, po-

nieważ Media-Tech zrobił z jednej strony produkt cie-

kawy, z drugiej jednak wyraźnie niedbale wykonany,

chociaż pokrycie pada, tylne przyciski czy wygodna

klapka na baterie skutecznie to przy pierwszym kon-

Media-Tech

MT1503 – Rogue RFW zeszłym miesiącu przedstawiłem Wam dosyć obszerniekapitalnego gamepada od Manty. Dzisiaj pokrótce rzucimy okiem nabezprzewodowy kontroler sygnowany marką Media-Tech. Zastanawia,że jest to produkt bezprzewodowy, który, jeśli dobrze się rozejrzeć,można kupić za mniej niż 40zł (mowa tutaj o sklepach internetowych

bez wliczania kosztów wysyłki). Czy warto? Postaram się zwięźleodpowiedzieć na to pytanie.

Page 41: Podroz Do Wnetrza Systemu Linux 11-2010

5/12/2018 Podroz Do Wnetrza Systemu Linux 11-2010 - slidepdf.com

http://slidepdf.com/reader/full/podroz-do-wnetrza-systemu-linux-11-2010 41/45

www.lpmagazine.org

takcie ukrywają. Tak się bowiem składa, że pad ma

i swoje zalety, do których należy np. dobry zasięg.

Sam sprawdzałem go piętro niżej – działał bez proble-

mu, co jest istotne dla osób chcących korzystać z nie-

go jako swego rodzaju pilota do komputera (w czym

pomoże linuksowy programik QjoyPad – sprawdza-

łem). Do tego wbudowane wyjście słuchawkowe oraz

na mikrofon umieszczone z przodu pada – kapital-

na sprawa. Pamiętajcie tylko, aby odhaczyć ładowa-

nie się modułu odpowiedzialnego za obsługę kart mu-

zycznych na USB, jeśli urządzenie zacznie wam po

uruchomieniu komputera zastępować domyślną kar-

tę muzyczną – tak było w moim przypadku (wybra-

łem więc rezygnację z tej nowatorskiej funkcji produk-

tu MT). Daje to jednak masę możliwości, coś w rodza-

 ju przenośnej MP3 o zasięgu domowym czy przeno-

śnego zestawu do Skype.Jak widać, ciężko ocenić MT1503 dobrze lub źle.

Z pewnością sprawdzi się on jako „pilot” do kompu-

tera, natomiast jako urządzenie do gier z mojej stro-

ny zdecydowanie go odradzam. Cieszy, że w nowych

produktach, np. MT1505, jakby bardziej zadbano o wy-

konanie całości, chociaż oglądałem ten produkt jedy-

nie na stronie producenta – kto odważny, niech spraw-

dzi na własnej skórze.

Ocena: 4+/10 

MACIEJ MROZIŃSKIOd kilku lat, codzienny, domowy użytkownik GNU/Linuksa.

Entuzjasta rozwiązań alternatywnych i wolnego oprogramo-

wania.

Kontakt z autorem: [email protected] 

Tabelka „Za i przeciw”Za:

• niska cena• przyjemne w dotyku pokrycie urządzenia

• dobry zasięg komunikacji bezprzewodowej

• sprawdza się jako „pilot” do komputera

Przeciw:

• niedbałe wykonanie przekładające się na wadliwe nie-

kiedy funkcjonowanie urządzenia

• wyraźnie kiepska jakoś niektórych elementów wchodzą-

cych w skład zestawu

Szanowny Czytelniku,

Zapisując się na newsletter, dowiesz się:

• O czym przeczytasz w kolejnych numerach Linux+

a ponadto:

• Poinformujemy Cię o szczegółach organizowanych

konkursów

• Dowiesz się o konferencjach, wydarzeniach ze

świata IT

• Poznasz bieżące promocje dla czytelników Linux+

• Poinformujemy o aktualnych ofertach pracy.

i wiele więcej

Zapraszamy!

http://lpmagazine.org/pl/newsletter

Page 42: Podroz Do Wnetrza Systemu Linux 11-2010

5/12/2018 Podroz Do Wnetrza Systemu Linux 11-2010 - slidepdf.com

http://slidepdf.com/reader/full/podroz-do-wnetrza-systemu-linux-11-2010 42/45

42

KONKURS

11/2010

Zokazji udostępnienia publicznego API przez serwisspołecznościowy GG.pl wspólnie z Gadu-Gadu or-

ganizujemy wielki konkurs dla twórców aplikacji,

w którym główną nagrodą jest gotówka – aż 30 tysięcy

złotych. Wzięcie udziału w konkursie to duża szansa dla

developerów i dotarcie do milionów internautów – zwycię-

ska aplikacja znajdzie się w komunikatorze Gadu-Gadu

i w serwisie GG.pl, a więc korzystać z niej będzie jedna

z największych społeczności w polskim Internecie!

Czekamy na ciekawe aplikacje – tematyka niemal

nieograniczona, może to być gra z dodatkami płat-

nymi, aplikacje biznesowe, aplikacje biurowe, roz-rywkowe, multimedia, integracje z innymi usługami/

aplikacjami, które już są bardzo popularne w Interne-

cie, e-commerce. Możliwości jest bardzo wiele, nie ma

ograniczeń, otwieramy się na Wasze pomysły!

Konkurs skierowany jest do developerów, firm develo-

perskich, studentów i tych wszystkich, którzy zajmują się

tworzeniem aplikacji. Dla nich powstał specjalny serwis

http://rozwoj.gg.pl 

Konkurs potrwa od 12 października do 31 grudnia

2010 roku. Każda nadesłana aplikacja zostanie rozpa-

trzona przez jury. Kolejność zgłoszeń nie ma znaczenia,ale pamiętajcie, że macie czas do końca tego roku. Prze-

myślcie swoją koncepcję, napiszcie szkic i w kolejnych

dniach poprawcie go, doszlifujcie tak, aby miał jak naj-

większe szanse na nagrodę główną: 30

tysięcy złotych!

GG Network jako organizator przewidu-

 je również przyznanie nagradzanych wy-

różnień autorom najciekawszych aplika-

cji. Najlepszym zaproponowana zostanie

także możliwość zatrudnienia.

Upublicznienie APIPołączony z komunikatorem serwis GG.pl

upublicznia swoje API, co oznacza, że

twórcy aplikacji mogą dotrzeć ze swoimi

pomysłami do milionów internautów.

Upublicznienie API daje młodym firmom, start-upom

i osobom z pomysłami większą szansę na stworzenieaplikacji, która szybko dotrze do bardzo szerokiego gro-

na użytkowników. Dotarcie to problem większości start-

upów. Powstają pytania jak je zareklamować, wypromo-

KONKURS

Połączony z komunikatorem Gadu-Gadu serwis GG.plupublicznia swoje API, co oznacza, że twórcy aplikacji mogądotrzeć ze swoimi pomysłami do milionów internautów.Uruchomieniu API towarzyszy konkurs, w którym głównąnagrodą jest 30 tysięcy złotych.

Stwórz aplikację i wygraj 30 tysięcy złotych!

Serwis społecznościowy GG.plJest silnie zintegrowany z Gadu-Gadu, najpopularniejszym

komunikatorem w Polsce, z którego korzysta obecnie już

blisko 11 milionów użytkowników miesięcznie.

Osoby komunikujące się na co dzień przez Gadu-Gadu, uzy-

skują dzięki serwisowi GG.pl wiele nowych funkcjonalno-

ści. Użytkownicy mogą m.in. wymieniać się linkami, two-

rzyć prywatne konferencje ze znajomymi, słuchać muzyki,

komunikować się za pomocą poczty e-mail, komunikato-

ra, grać w ulubione gry. Wszystko to opiera się o relacje ze

znajomymi z listy kontaktów z komunikatora – są to zwykle

osoby bliskie, z którymi łączą nas codzienne sprawy, waż-

ną więc cechą serwisu GG.pl jest także wysoki stopień pry-watności. Użytkownicy, którzy cenią sobie osobisty charak-

ter rozmów przez komunikator, mają tu również zagwaran-

towaną tę prywatność. Serwis rozwija się w oparciu o suge-

stie, pomysły i oczekiwania użytkowników.

  „Bardzo uważnie słuchamy, czego chcą nasi użytkownicy. Od 

kiedy uruchomiliśmy serwis GG.pl, w kilka tygodni stworzyli-

śmy wiele funkcjonalności, o które nas prosili. Chcemy realizo-

wać serwisy głównie pod kątem oczekiwań polskich internau-

tów” – mówi Zbigniew Pieńkowski, CIO w GG Network S.A.

Page 43: Podroz Do Wnetrza Systemu Linux 11-2010

5/12/2018 Podroz Do Wnetrza Systemu Linux 11-2010 - slidepdf.com

http://slidepdf.com/reader/full/podroz-do-wnetrza-systemu-linux-11-2010 43/45

Stwórz aplikację i wygraj 30 tysięcy złotych!

43www.lpmagazine.org

bezpieczeństwa, dane udostępniane są aplikacji po

wyrażeniu zgody przez samego użytkownika.

KONKURS !Zaprojektuj aplikację dla milionów internautów Gadu-Ga-

du i wygraj 30 tys. złotych!

Jesteś zdolnym developerem? Myślisz kreatywnie?

Na co dzień tworzysz aplikacje, a projektowanie to Twoje

hobby i pasja? Zaproponuj swoją aplikację dla społecz-

ności Gadu-Gadu!

 Jak wziąć udział w Konkursie?1. Zaloguj się w serwisie http://rozwoj.gg.pl/konkurs  

swoim numerem Gadu-Gadu.

2. Wypełnij formularz rejestracji.

3. Zaakceptuj regulamin konkursu i platformy API GG.

4. Stwórz własną aplikację5. Zgłoś swoją aplikację.

Na zgłoszenia czekamy od 12 października 2010 do 31

grudnia 2010. Co miesiąc publikować będziemy na stro-

nie http://rozwoj.gg.pl/konkurs ranking najciekawszych

aplikacji typowanych przez nasze jury. Przez cały sty-

czeń 2011 zbierać będziemy statystyki nadesłanych

aplikacji – w ten sposób wpływ na ich ocenę będą mie-

li sami użytkownicy. Dodatkowo każdy pomysł poddany

będzie ocenie jury.

Zwycięzcę konkursu ogłosimy 15 lutego 2011.

Zwycięska aplikacja znajdzie się w głównym pasku apli-

kacji serwisu GG.pl i w pasku aplikacji w komunikatorze

Gadu-Gadu!

W konkursie obowiązuje pełna dowolność. Możesz

stworzyć grę społecznościową albo narzędzie pomocne

w codziennej pracy, czekamy na ciekawe aplikacje, które

będą gotowe do wykorzystania w serwisach GG.pl i Ga-

du-Gadu! Może właśnie z Twojego pomysłu będą korzy-

stać na co dzień miliony polskich internautów?

Patroni medialni konkursu:Software Developer’s, PC Format, Dziennik Internautów,

Blip.pl

 Jury konkursu:Łukasz Łopuszański – redakcja Software Developer’s

Journal

Paweł Bijata – redakcja PC Format

Marek Soból – CPO GG Network S.A.

Zbigniew Pieńkowski – CIO GG Network S.A

Marcin Jagodziński – bloger, twórca serwisu Blip.pl

Ocjalna strona konkursowa ruszy 12 października na

blogu developerów GG Network S.A. pod adresem:

http://rozwoj.gg.pl/konkurs  

wać i jak zapewnić odpowiedni ruch? GG.pl udostępnia

poprzez API narzędzie umożliwiające podłączenie się do

sieci Gadu-Gadu i dotarcie do użytkowników.

Głównym założeniem otwartego API jest tworzenie

ciekawych aplikacji dla społeczności GG.pl.  „Zwykle

największym problemem developerów jest możliwość 

w miarę szybkiego dotarcia ze swoją aplikacją do dużej 

grupy użytkowników – i to właśnie dostają od nas – do-

stęp do naszej sieci społecznej, potencjalną możliwości 

wywołania efektu wirusowego. Wszystko zależy od po-

mysłu i jakości samej aplikacji. Równie ważna jest możli-

wość skorzystania z naszego systemu płatności, bardzo

łatwego w integracji, połączonego z usługami Gadu-Ga-

du, dzięki niemu developer właściwie bez żadnych kosz-

tów administracyjnych i integracyjnych może stworzyć 

aplikację, która zawiera elementy płatne, i zarabiać na

niej, nie martwiąc się o problemy związane z bankami, przelewami, kartami kredytowymi, itp.” mówi Marek So-

ból, członek jury, CPO GG Network.

GGAPI udostępnione jest obecnie w wersji Beta.

Wszelkie informacje dotyczące konkursu i Platformy API

dostępne będą na blogu dla developerów http://dev.gg.pl  

( http://rozwoj.gg.pl ) oraz w dokumentacji.

Na platformę API GG składają się:

• GGAPI JS - biblioteka niezbędna do integracji apli-

kacji zewnętrznej działającej w serwisie GG.pl

• GGAPI REST - dostęp do zasobów poprzez proto-kół REST, który (po uprzedniej autoryzacji użytkow-

nika) pozwala na pobieranie/zapisywanie odpowied-

nich danych związanych z użytkownikiem. Powyż-

sza metoda interakcji może być użyta przez aplika-

cje działające w GG.pl, na innych stronach interneto-

wych lub w programach desktopowych.

Działanie aplikacjiPo wejściu na stronę http://www.gg.pl/#apps/ID aplika-

cja zewnętrzna jest uruchamiana w ramce (iframe), która

kieruje do adresu podanego przy rejestracji. W tym mo-mencie aplikacja ma ograniczone możliwości. Może wy-

świetlać użytkownikowi różne informacje jak każda stro-

na internetowa, jednak nie ma dostępu do żadnych da-

nych związanych z użytkownikiem, który wszedł na stro-

nę, nie może również zamieszczać żadnych informacji

w jego lifestream'ie.

• Prosta aplikacja zewnętrzna może ograniczać swo-

 je działanie tylko do publikowania danych w lifestre-

am'ie użytkownika, bez konieczności pobierania in-

formacji o nim. Do tego celu powinna implemento-

wać bibliotekę GGAPI JS.

• Zaawansowana aplikacja zewnętrzna, która potrze-

buje dostępu do danych użytkownika (informacje

z katalogu publicznego, lista znajomych, wpisy w li-

festream'ie) powinna GGAPI REST. Ze względów

Page 44: Podroz Do Wnetrza Systemu Linux 11-2010

5/12/2018 Podroz Do Wnetrza Systemu Linux 11-2010 - slidepdf.com

http://slidepdf.com/reader/full/podroz-do-wnetrza-systemu-linux-11-2010 44/45

Page 45: Podroz Do Wnetrza Systemu Linux 11-2010

5/12/2018 Podroz Do Wnetrza Systemu Linux 11-2010 - slidepdf.com

http://slidepdf.com/reader/full/podroz-do-wnetrza-systemu-linux-11-2010 45/45

Systemy bankowe, ISOFHEUTHES istnieje na rynku od 1989 r. Oboksystemów informatycznych dla banków, ofe-ruje nowoczesne oprogramowanie do obsługirm. System ISOF jest udostępniany klientomw trybie SaaS lub licencji. Pracuje na platfor-mie Linux i zawiera m.in. takie moduły jakCRM, DMS, Magazyn, Sprzedaż, Logistykaoraz Rachunkowość.http://www.isof.pl 

OFERTA SKIEROWANA DO FIRMWyślij do nas: logo rmy, dane kontaktowe i informacje o rmie.

Reklama przez 12 kolejnych numerów tylko za 600 PLN + VAT.

Skontaktuj się z nami:[email protected]  tel. 22 427 36 52

TTS Company Sp. z o.o.Sprzedaż i dystrybucja oprogramowania kom-puterowego. Import programów na zamówie-nie. Ponad 200 producentów w standardowejofercie. Chcesz kupić oprogramowanie i niemożesz znaleźć polskiego dostawcy? Skon-taktuj się z nami – sprowadzimy nawet pojedyn-cze licencje.www.OprogramowanieKomputerowe.pl 

Wyższa Szkoła InformatykiInformatyka, Ekonomia, Fizjoterapia (NO-WOŚĆ, Pedagogika, Wychowanie Fizyczne,Artystyczna Graka Komputerowa, Architek-tura Wnętrz (NOWOŚĆ) Studia na odległośće-learning (Informatyka II stopnia) Komplekssportowy w Łodzi (hala, basen, siłownia, sau-na). Wydziały zamiejscowe: Włocawek, Byd-goszcz, Opatówek.http://www.wsinf.edu.pl 

BetaSoft Sp. z o.o.Jednym z naszych autorskich rozwiązań jestsystem eDokumenty realizujący wymaganiaDMS i CRM. Pracuje on na platformach Li-nux oraz Windows i należy do najnowocze-śniejszych aplikacji webowych działającychw technologii AJAX. System jest zintegrowanyz OpenOfce, MS Ofce i programami ERP.www.betasoft.pl ,www.edokumenty.eu