You are on page 1of 84

Miesięcznik Linux+ (11 numerów w roku) jest wydawany

przez Software Press Sp. z o.o. SK


Prezes wydawnictwa:
W bieżącym numerze
Paweł Marciniak

Redaktor naczelny:
Tomasz Łopuszański tomasz.lopuszanski@software.com.pl Aktualności
Kierownik produkcji:
Andrzej Kuca, andrzej.kuca@software.com.pl
6 Justyna Sutkowska

Dział produkcji i kolportażu:


Alina Stebakow, alina.stebakow@software.com.pl
Opracowanie DVD: Opis płyty
Tomasz Kostro, tomasz.kostro@software.com.pl
Korekta:
Justyna Sutkowska
14 Fedora 12 Constantine
Damn Small Linux 4.4.10
Dział reklamy:
System RescueCD 1.3.3
reklama@lpmagazine.org, tel.: (22) 427 36 91
Obsługa prenumeraty: EuroPress Polska
software@europress.pl Urządzenia mobilne
pren@software.com.pl
Okładka:
Agnieszka Marchocka, Łukasz Pabian 16 Kontrolki wizualne w systemie Android cz.3
Grzegorz Madajczak
DTP:
Monika Grotkowska, monika.grotkowska@software.com.pl Artykuł ten stanowi kolejną część cyklu poświęconego programowa-
niu w systemie Android, a zarazem trzeci odcinek części tego cyklu,
Stali współpracownicy: omawiający zagadnienia związane z stosowaniem kontrolek wizual-
Roger Zacharczyk, Piotr Brzózka, Leszek Konka, nych (widgetów). Tym razem zajmiemy się tworzeniem i użytkowa-
Robert Romaniuk
niem menu opcji oraz menu podręcznego (kontekstowego). Dodatko-
Wydawca: wo artykuł poświęcony będzie tworzeniu podstawowych okien dialo-
Software Press Sp. z o.o. SK gowych.
ul. Bokserska 1, 02-682 Warszawa
e-mail: redakcja@lpmagazine.org, tel. (22) 427 36 91
22 Bezpieczeństwo w systemie Android
Grzegorz Madajczak
Redakcja dokłada wszelkich starań, aby publikowane w piśmie i na
towarzyszących mu nośnikach informacje i programy były poprawne, Należy pogodzić się z faktem, iż im bardziej skomplikowane systemy ope-
jednakże nie bierze odpowiedzialności za efekty ich wykorzystania. racyjne sterują urządzeniami typu telefon, czy PDA, tym większe prawdo-
podobieństwo, iż dane zgromadzone na takim urządzeniu mogą ulec utra-
Redakcja Linux+ pracuje na sprzęcie dostarczonym przez firmę cie, co może mieć poważne konsekwencje finansowe, a już na pewno jest
Device Polska
kłopotliwe. Dlatego też należy powziąć wszelkie środki ostrożności, aby
Płyty uszkodzone podczas wysyłki wymienia dział prenumeraty. uchronić się przed tym.

Wszystkie znaki firmowe zawarte w piśmie są własnością Rozwiązania


odpowiednich firm i zostały użyte wyłącznie w celach
informacyjnych.
28 SPARQL – Język zapytań dla semantycznych baz
Nakład: 10 000 egz. danych
Piotr Orzeszek
Redakcja używa systemu automatycznego składu Język zapytań SPARQL stanowi jeden z kluczowych standardów
w ramach technologii Semantic Web. Wdrożenie Semantic Web pozwo-
li na przejście od Internetu opartego na tekście, na rzecz Globalnej
Druk:
ArtDruk Sieci opartej na wiedzy i związkach semantycznych. Współczesne
www.artdruk.com nam wyszukiwarki umożliwiają przeszukiwanie dokumentów WWW
pod kątem zawartego tekstu. Semantic Web umożliwi zaś automatycz-
Płyty dołączone do magazynu przetestowano programem ne poszukiwanie i organizowanie zbiorów informacji. Językiem zapy-
AntiVirenKit firmy G DATA Software Sp. z o.o. tań na wzór SQL przeznaczonym dla semantycznych baz danych jest
Sprzedaż aktualnych lub archiwalnych numerów pisma po innej właśnie SPARQL.
cenie niż wydrukowana na okładce – bez zgody wydawcy – jest
działaniem na jego szkodę i skutkuje odpowiedzialnością sądową.
Linux ® jest zarejestrowanym znakiem towarowym należącym
32 Federacja – wirtualny dostęp do danych
Marcin Marczewski
do Linusa Torvaldsa.
We współczesnych firmach dane przechowywane są przy użyciu przeróż-
Pismo ukazuje się w następujących wersjach językowych: nych technologii. Mimo że jednolity sposób przechowywania informa-
polskiej , cji byłby wygodniejszy i wymagałby mniejszych nakładów, w tym także
francuskiej , tych na wiedzę i szkolenia pracowników, rozwiązanie takie jest szczegól-
hiszpańskiej , nie trudne do wdrożenia.
angielskiej .

4 luty 2010
Spis treści

Temat miesiąca Bazy Danych

– skoncentrowany, ustrukturalizowany i przejrzysty. Mind mapping,


technika tworzenia map myśli zalecana jest przed realizacją każdego
projektu, w celu lepszego zrozumienia problemu, zdefiniowania celów
oraz zidentyfikowania ewentualnych.

Recenzje

38 DataVision – raport z baz danych 72 Jets'n'Guns Gold


Paweł Wolniewicz Maciej Mroziński
Informacje znajdujące się w bazie danych nie przydadzą się na wiele, Opisywany tytuł należy do zdawać by się mogło wymierającego gatun-
jeśli nie skorzystamy z narzędzi pozwalających na ich analizę i genero- ku kosmicznych strzelanek typu side scrolling. Jest on w dodatku grą
wanie raportów. Tworzenie skomplikowanych zapytań SQL nie stano- komercyjną toteż aby pograć w pełną wersję gry trzeba ją wcześniej
wi optymalnego rozwiązania. Możemy natomiast wykorzystać dostęp- kupić. Z jakiegoś jednak powodu, mając do wyboru kilka tytułów
ny na licencji Open Source system tworzący raporty z baz danych, wybrałem właśnie ten i w żadnym razie nie żałuję swojej decyzji. Mało
a konkretnie aplikację DataVision tego, gra zgodnie z moimi przewidywaniami okazała się rzetelną, sta-
rannie wykonaną i naprawdę dopracowaną produkcją zapewniając mi
sporą ilość dobrej zabawy. Co więc takiego sprawia, że Jets'n'Guns jest
Sieci komputerowe szczególnie godna uwagi i szczerze mógłbym polecić ją każdemu gra-
czowi nie stroniącemu od gier czysto zręcznościowych?
46 Zostań administratorem sieci komputertowej
cz. 4 (4/9): Adresy , maski i routowanie
w systemie Linux
Rafał Kułaga R E K L A M A
W poprzedniej części kursu przedstawiona została metoda podziału
połączenia internetowego. Zastosowaliśmy w tym celu funkcję transla-
cji adresów (NAT) udostępnianą przez urządzenie dedykowane APPro
2405. W tej części cyklu zajmiemy się opisem procesu trasowania (ro-
utingu) pakietów oraz konfiguracją komputera z zainstalowanym sys-
temem Linux jako routera. Zapraszam do lektury!

Programowanie

56 Oracle Apex – Darmowe i szybkie tworzenie


aplikacji webowych
Andrzej Raczkowski
Producent bazy danych Oracle wie, że żeby dobrze wykorzystać moż-
liwości bazy danych, trzeba posiadać narzędzia umożliwiające stwo-
rzenie aplikacji dla użytkownika. W ofercie Oracle takie narzędzia są
dostepne niemal od początku istnienia ich bazy danych. Programiści
tworzący aplikacje działające na bazie danych Oracle często używa-
ją dedykowanych narzędzi, takich jak Oracle Designer, Oracle Forms
Builder czy Oracle Jdeveloper.Stosunkowo nowym produktem w tej
kategorii jest technologia Oracle APEX oraz narzędzie Oracle APEX
Application Builder.

Dla początkujących

66 Mind Mapping – uporządkuj pomysły na nowy rok


Łukasz Lechert
Każdy menedżer i konsultant w swojej codziennej pracy posługuje się
dużą ilością informacji. Mapy myśli to dobry sposób zapisu informacji
NE WS
aktualności
News dział prowadzi Justyna Sutkowska justynasutkowska@op.pl

Google publikuje kody Chromium Nowości w projekcie GRUB dziło spory niepokój wśród użytkowników
OS oraz ujawnia więcej szczegółów GRUB jest domyślnie dołączany do czoło- systemu oraz ekspertów, którzy zajmują się
Jak zapowiedzieli – tak zrobili. Google wych dystrybucji Linuksa. Działa on bardzo elektroniczną prywatnością. Dlatego też
ujawniło więcej informacji na temat Chro- stabilnie, ale mimo to, nadal jest rozwijany. Marc Rotenberg, dyrektor Electronics Pri-
mium OS. Dodatkowo, opublikowało także Przyjżyjmy się nowościom. vacy Information Center (EPIC), stwierdził,
cały kod, który dotychczas został stworzony Przede wszystkim, projekt zarządza- że możliwe jest, iż w zamian za współpra-
w ramach tego projektu. Do czasu premie- ny jest od niedawna systemem kontroli cę z NSA, Microsoft umieścił w Window-
ry Chrome OS (ma ona nastąpić w ostatnim wersji, którego rozwój sponsorowany jest sie backdoora, który posłuży Agencji do in-
kwartale 2010 roku), ma on być rozwija- przez firmę Cannonical Ltd. (firma ta spon- wigilowania podejrzanych o przestępstwa.
ny z udziałem społeczności oraz partnerów soruje również dystrybucję Ubuntu). Syste- Niektórzy, skrajnie zaniepokojeni użytkow-
technologicznych. Kod wraz z innymi ma- mem kontroli wersji, o którym mowa, jest nicy sądzą, że inwigilowani mogą być tak-
teriałami znaleźć można pod adresem http: oczywiście GNU Bazaar (korzystają z nie- że oni, nawet jeśli nie są o nic podejrzani.
//www.chromium.org/chromium-os. go między innymi również Ubuntu, Exaile, Z jednej strony trudno im się dziwić.
Czym ma być nowy system? Docelo- MySQL, Mailman). Wracając jednak do słów Marca – przy-
wo ma on być, a raczej – ma nim być bar- Poprawiane są także błędy, które znala- pomniał on przy okazji, że nie byłaby to
dzo rozbudowana przeglądarka internetowa zły się w poprzednich wydaniach, więc war- wcale pierwsza próba NSA mająca na celu
Chrome. Całośc powstaje w opraciu o De- to dokonywać aktualizacji. Nawet, jeśli ich wprowadzenie tylnej furtki do najpopular-
biana i wykorzystuje koncepcję Chmury nie zauważamy w codziennej pracy. W pro- niejszego od dawna systemu operacyjnego,
(Cloud Computing). Nie będzie możliwości jekcie znalazł się również framework umoż- bowiem w roku 1993 była zaangażowana w
uruchamiania własnych programów, a dane liwiający kryptografię haseł. budowę urządzenia kryptograficznego zna-
mają być przechowywane w sieci lub lokal- nego jako Układ Clipper. Miało ono ofero-
nie przy użyciu technologii Gears. GMail podpowie, wać silny algorytm szyfrujący i zapewniać
Podczas uruchamiania systemu, ma on czego używają rozmówcy jednocześnie agencjom rządowym nieskrę-
każdorazowo sprawdzać integralność kodu W GMail Labs pojawiła się nowa funkcjo- powany dostęp do wszelkich danych. Po
z wersją dostępną na serwerze i w przypadku nalność, która pozwala rozróżnić w oknie przetoczeniu się fali protestów, projekt ten
niezgodności, automatycznie się naprawić. komunikatora rozmówców korzystających został porzucony (przynajmniej oficjalnie).
Znacząco podwyższa to poziom bezpieczeń- z Androida od pozostałych. Ale czy sama pokusa dostępu do danych
stwa i obniża ryzyko narażenia na ataki ze Wszystko dzięki temu, że Google za- użytkowników również została odrzucona?
strony złośliwego oprogramowania. uważyło problem w tym, że pisząc wiado- Microsoft nie jest jednak jedyną fir-
Aplikacje uruchamiane w ramach mość z telefonu komórkowego, piszemy mą, która tego rodzaju mechanizmy mo-
Chrome OS działają w oddzielnych pia- zwykle wolniej niż na klawiaturze kompu- gła umieścić w swoim systemie. Cisco, naj-
skownicach (sandbox) oraz aktualizują się tera. Co raz więcej osób ma urządzenia mo- większy producent m.in. routerów, zgodziło
automatycznie. bilne, więc użytkownicy mogą się czasem się na dodanie do swoich urządzeń mecha-
System ma obsługiwać z góry narzuco- irytować, dlaczego druga osoba tak wol- nizmów umożliwiających organom ścigania
ną pulę urządzeń. Nie będzie można zdobyć no odpowiada. Google wyszło im na prze- dostęp do poszukiwanych danych (architek-
jego kopii w inny sposób, niżpoprzez zakup ciw wprowadzając oznaczenie zieloną ikon- tura Lawful Intercept), które dostępne są
sprzętu. Wspierane mają być architektury ką symbolizującą logo androida tych użyt- w systemie operacyjnym Cisco IOS.
x86 i ARM. Nie ma jednak się czym mar- kowników, którzy korzystają z tej właśnie Rzecznik Microsoftu jednak zaprzecza,
twić, bowiem z pewnością pojawią się rów- platformy. jakoby firma posunęła się do czegoś takie-
nież nieoficjalne dystrybucje Chrome OS, go, zapewniając, że nie tylko się to nigdy
które będzie można uruchomić na wielu in- Backdoor w Windows 7? nie zdarzyło, ale również nigdy się nie zda-
nych, niewspieranych przez Google, konfi- Richar Shaeffer, dyrektor jednego z wy- rzy. Znając jednak zdolności Microsoftu do
guracjach sprzętowych. działów NSA (amerykańska Agencja Bez- przewidywania przyszłości, na usta ciśnie
Czy taki model systemu i jego dystrybu- pieczeństwa Narodowego) ujawnił w trak- się tylko uśmiech, gdyż wszyscy doskona-
cji sprawdzi się? Czas pokaże. Jednak prze- cie przesłuchania odbywającego się w se- le pamiętamy szacunki, że 640 KB pamię-
glądarka będąca jednocześnie całym syste- nacie, że Agencja brała udział w tworze-
mem operacyjnym, to dość ciekawy pomysł. niu mechanizmów bezpieczeństwa wbu-
dowanych w najnowszy system Microso-
ftu – Windows 7. Jednym z tych mechani-
zmów ma być SCAP (Security Content Au-
tomation Protocol) o moduł Security Com-
pliance Management Toolkit – jest on zbio-
rem narzędzi przeznaczonych do zaawan-
sowanego modyfikowania ustawień bez-
pieczeństwa.
Współpraca twórcy Windowsa oraz
Rysunek 1. Logo Chromium OS firmy Google NSA, a dokładniej jej ujawnienie, wzbu- Rysunek 2. Logo Windows 7

6 luty 2010
NE WS
aktualności
dział prowadzi Justyna Sutkowska justynasutkowska@op.pl News

ci wystarczy każdemu oraz, że internet nie ku zmiany systemu operacyjnego oraz tym, ko flagowego Firefoksa, ale także innych
jest wart uwagi. Idąc dalej, trudno wierzyć że system i tak pochłania większość zaso- aplikacji, w tym Thunderbirda 3.
rzecznikowi co do umieszczania backdo- bów sprzętowych. A przykład chociażby fir-
orów w Windowsach. my Adobe pokazuje, że w poprawie wydaj- Google News dostępne
ności można wiele zdziałać nie tylko now- na Andoridzie, IPhone i Palm Pre
Polacy nie palą się szym sprzętem, ale także algorytmami. Znana skądinąd bardzo popularna usługa
do przejścia na Windows 7 Google News dostępna będzie na urządze-
2.69% – tyle według badań firmy Gemius Ubuntu Lucid Lynx bez Gimpa niach z Androidem, IPhone oraz Palm Pre.
wyniósł udział Siódemki w liczbe od- To prawda, ale tylko w oficjalnej wersji in- Na oficjalnym blogu Google pojawiła się in-
słon stron internetowych po trzech tygo- stalacyjnej. Gimp nadal będzie dostępny w formacja o zoptymalizowaniu Google News
dniach od premiery. Dla porównania, Vi- repozytoriach i będzie można go bez pro- pod kątem tych urządzeń. Wcześniej usługa
sta, by osiągnąć taki wynik, potrzebowała blemu doinstalować w taki sam sposób, jak dostępna była dla urządzeń mobilnych ko-
aż 26 tygodni. wiele innych aplikacji. rzystających z systemów Windows Mobile,
Badanie przeprowadzono wśród nastę- Taką decyzję podjęto podczas spotka- Blackberry OS oraz Symbian S60.
pujących krajów Europy: Austria, Bośnia nia developerów Ubuntu w Dallas. W do- Nowa wersja ma umożliwić korzystanie
i Hercegowina, Bułgaria, Białoruś, Chorwa- myślnym zestawie aplikacji ma być nato- z Google News w taki sam sposób, jak na
cja, Czechy, Dania, Estonia, Litwa, Łotwa, miast F-Spot. Uargumentowano to tym, że komputerze desktopowym. Zachowany ma
Polska, Rumunia, Rosja, Słowenia, Słowa- program posiada zbyt skomplikowany in- zostać podobny interfejs, przy większej ilości
cja, Ukraina, Węgry. terfejs, jego przeznaczeniem są zastosowa- wyświetlanych informacji. Uproszczono rów-
Do tego czasu, udział Windowsa XP nia profesjonalne, a miejsce zajmowane na nież dostęp do działu ulubione, do wyszuki-
wyniósł 75.61%. Na drugim miejscu zna- dysku to niemała ilość. Co więcej, niewie- warki oraz do odtwarzacza filmów, a zapisa-
lazła się Vista z wynikiem 19.25%. Naj- lu użytkowników go używa. Porównano go ne ustawienia mają być przenośne pomiędzy
większą popularność Windows 7 osiągnął do Photoshopa, który nie jest domyślnie do- urzędzenia w sposób przezroczysty.
na Słowenii, gdzie sięgała ona 4.66%, a naj- starczany z Windowsem czy Mac OS. Ciekawostką jest, że obecnie usługa do-
mniejszą w Polsce, bo zaledwie 2%. Oczywiście krytyka była duża, ale chy- stępna jest w blisko 70 edycjach oraz 29
Spodziewano się jednak, że Windows 7 ba niesłuszna. Doinstalowanie tej aplikacji wersjach językowych.
odmieni rynek IT, odwróci spadkowy trend nie jest problemem, a zaraz mogliby ode-
w sprzedaży sprzętu komputerowego. Mi- zwać się inni chcący domyślnie mieć Blen- OpenShot
crosoft wiązał z nim duże nadzieje, czemu dera i wiele innych ulubionych aplikacji. OpenShot (http://www.openshotvideo.com)
zresztą nietrudno się dziwić po ogromnej to stosunkowo nowy projekt mający na celu
porażce z Vistą. Według raportu przepro- Mozilla nie zamierza stworzenie w pełni funkcjonalnego, nieline-
wadzonego na zlecenie Microsoftu, Win- tworzyć systemu operacyjnego arnego edytora filmów. Na razie nie pojawi-
dows 7 ma zostać zainstalowany do końca Społeczność spodziewała się, że Mozilla po- ła się jeszcze żadna oficjalna wersja tej apli-
2010 roku na 1.5 miliona stacji roboczych stąpi podobnie, jak Google i stworzy własny kacji, jednak można ją już pobrać w posta-
pracowników europejskiej branży IT, czy- system operacyjny wzorowany na przeglądar- ci kodu źródłowego oraz binariów przezna-
li u około 18% wszystkich zatrudnionych ce internetowej. Nic z tych rzeczy – Mitchell czonych dla Ubuntu. Wsparcie dla FFmpeg
w branży IT strefy ekonomicznej Unii Eu- Baker, prezes fundacji Mozilla, zadeklarowała powoduje, że aplikacja obsługuje większość
ropejskiej. w wywiadzie udzielonym przy okazji opubli- podstawowych formatów audio/wideo.
Obecnie jednak w firmach dominuje kowania ostatniego raportu finansowego (któ- Interfejs programu oparty jest na biblio-
nawet nie Vista, a stary, poczciwy Windows ry wskazuje, że fundacja zanotowała zysk na tekach GTK i zintegrowany ze środowiskiem
XP. Uważa się, że póki domowi konsumen- poziomie 79 milionów dolarów), że myśli, iż GNOME (funkcja przeciągnij i upuść). Open-
ci nie zainteresują się aktualizacją syste- Mozilla będzie koncentrować się na internecie Shot pozwala na edycję wielu klipów jedno-
mu, dopóty nie nastąpi to w biznesie. Ale co i możliwościach jakie ze sobą niesie, zamiast cześnie, umożliwiając ich przycinanie oraz
w tym dziwnego? Ludzie są już zmęczeni inwestować w system operacyjny. tworzenie przejść. Dostępne są również efekty
koniecznością zmiany sprzętu w przypad- Prezes odniosła się także do planów wideo (ponad 20) oraz najważniejsze funkcje
zwiększenia ilości źródeł dochodów. Obec- służące do edycji obrazu (zmiany jasności, na-
nie większość związanych jest z umową re-
klamową zawartą z firmą Google. Otóż po-
czyniono pewne kroki w celu znalezienia
nowych źródeł. W Rosji zawarto umowę
z firmą Yandex. Prezes podkreśliła też, że
negocjując z firmami trzecimi, nie jest ne-
gocjowany kształt przeglądarki – rozwija-
na jest ona tylko i wyłącznię przez Mozille,
bez ingerencji firm trzecich.
Prezes uspokoiła też, że obecne docho-
Rysunek 3. Logo Ubuntu dy wystarczają do dalszego rozwoju nie tyl- Rysunek 4. Logo Mozilla Foundation

www.lpmagazine.org 7
NE WS
aktualności
News dział prowadzi Justyna Sutkowska justynasutkowska@op.pl

sycenia, palety barw i inne). Możliwa jest także Nowe wydanie Jetpack oznaczone jest Mozilla dobrze
zmiana prędkości odtwarzania kolejnych klatek numerem 0.6. Pojawiła się w nim możli- zarabia na Open Source
filmu i tworzenie spersonalizowanych przejść, wość dodawania i edycji systemów me- Na oprogramowaniu Open Source moż-
z maską określoną przez użytkownika. nu, a także obsługa preferencji użytkowni- na dobrze zarobić – twierdzi na swo-
Ważną zaletę aplikacji stanowi łatwość ka. Poza tym usunięto szereg błędów wy- im blogu Sean Michael Kerner (http:
wstawiania do klipu tekstu, podpisów oraz krytych we wcześniejszych wydaniach pa- //blog.internetnews.com/skerner/2009/11/
znaków wodnych. Pozwala na to między in- kietu. mozilla-earned-786-million-in.html). Przy-
nymi obsługa formatu SVG. Program posia- Wraz z nową wersją swoje podwoje chody producenta przeglądarki interneto-
da ponadto osobną funkcję służącą do two- otworzył też internetowy katalog rozsze- wej Firefox wyniosły bowiem w ubiegłym
rzenia przewijanych napisów. Gotowe filmy rzeń opartych na Jetpack (http://jetpackga roku aż 78,6 miliona dolarów amerykań-
można zapisać w formatach obsługiwanych llery.mozillalabs.com/). Liczba znajdują- skich. Nie oznacza to jednak ogromnego
przez FFmpeg. cych się w nim dodatków wzrasta z dnia na wzrostu w stosunku do lat poprzednich. W
OpenShot ma szansę stać się jednym dzień, prawdopodobnie w najbliższym cza- 2007 roku na konta Mozilli wpłynęło 75,1
z najbardziej lubianych edytorów wideo sie będzie można wybierać wśród kilkuset miliona dolarów, co stanowi sumę mniejszą
dla Linuksa. Na korzyść programu prze- wtyczek. Obok bardzo niewielkich narzędzi o zaledwie kilka procent.
mawia nie tylko zestaw funkcji, już teraz dostępne są także rozbudowane rozszerze- Większość przychodów uzyskano dzię-
pozwalający na wykorzystanie go na po- nia, takie jak klienty serwisów społeczno- ki współpracy z gigantami branży interneto-
trzeby prostej obróbki filmów. Pozytyw- ściowych (Social SlideBar, Jetstatus), a tak- wej, przede wszystkim z Google i Yahoo!,
ną rolę odgrywa także interfejs, bardzo po- że edytor grafiki (Image Editor). Najchęt- a także sklepami internetowymi i serwisami
dobny do Windows Movie Makera. Dzię- niej ściągane wtyczki służą między inny- aukcyjnymi (Amazon i eBay). Pozostawia-
ki temu OpenShot nie powinien mieć pro- mi do korzystania z usługi Google Trans- jąc domyślną stronę domową w przeglądar-
blemów z przyciągnięciem tych użytkow- lator oraz Wikipedii, a także do blokowa- ce Firefox wspieramy zatem jej producenta.
ników, którzy dopiero rozpoczynają migra- nia reklam. Część z pieniędzy wygenerowanych przez
cję na Linuksa. Wtyczki Jetpack mają w przyszło- internautów zasila bowiem konta Mozilli.
ści stać się standardowym formatem roz- Sean Kerner zwraca uwagę na fakt,
Mozilla Jetpack 0.6 szerzeń obsługiwanych przez przeglądar- że w odróżnieniu od organizacji nastawio-
Mozilla udostępniła nową wersję pakietu kę Firefox. Ich zaletą jest kompatybilność nych wyłącznie na finansowy zysk, Mozil-
Jetpack (https://jetpack.mozillalabs.com/). z kolejnymi wersjami programu, niska la nie zmierza do redukcji kosztów poprzez
Pozwala on na tworzenie rozszerzeń dla awaryjność i wysokie bezpieczeństwo. zmniejszenie liczby współpracowników.
przeglądarki Firefox z wykorzystaniem je- Nowe wtyczki dodawane są bez koniecz- Wręcz przeciwnie, przychody przeznaczane
dynie języka XHTML, wspomaganego ności restartu aplikacji. Duże znaczenie ma są na inwestycje, także w kadrę, co pozwala
skryptami JavaScript i arkuszami styli CSS. też prostota rozszerzeń. Mogą być one pi- na dalsze udoskonalanie produktów funda-
Dzięki temu wtyczki mogą pisać wszyscy sane i rozwijane przez osoby posiadające cji. Powoduje to pojawienie się dodatniego
użytkownicy, którzy posiadają podstawową jedynie podstawowe umiejętności progra- sprzężenia zwrotnego. Lepsze oprogramo-
wiedzę dotyczącą składni HTML-a. mistyczne. wanie przyciąga kolejnych użytkowników,

Rysunek 6. Grafika pakietu Mozilla Jetpack 0.6

Rysunek 5. Widok okna programu OpenShot Rysunek 7. Logo programu Mumble

8 luty 2010
NE WS
aktualności
dział prowadzi Justyna Sutkowska justynasutkowska@op.pl News

a oni generują większe przychody – wyja- woofera o wymiarach zbliżonych do sze- samej wysokości. Daje to efekt przelatywa-
śnia Kerner. ścianu (24 cm x 23 cm x 25,6 cm) stojący nia dźwięku przez głośnik, a nie wydobywa-
na czterech 2 cm nóżkach oraz z dwóch sa- nia się z niego. Niesamowite doświadcze-
Mumble – komunikator dla graczy telit (13,3 cm x 8,6 cm x 19,5 cm). Bardzo nie. Na prawej satelicie znajduje się również
Jednym z programów uhonorowanych dużą zaletą urządzenia jest fakt, iż można wyjście audio na słuchawki lub inne głośniki
w ostatnich miesiącach na portalu Sour- podłączyć do zestawu 3 urządzenia jedno- (3,5 mini jack), jednak nie dodatkowe, gdyż
ceforge tytułem Project of the Month było cześnie. O możliwościach podłączania róż- sygnał nie jest rozdzielany a przekazywa-
Mumble (http://mumble.sourceforge.net/). nych komponentów napiszę później, skupmy ny dalej. Niżej znajduje się gniazdo auxilia-
Celem projektu jest stworzenie aplikacji się w tej chwili na subwooferze. Jest czarny, ry in-put (3,5 mini jack). Podłączysz do nie-
VoIP przeznaczonej głównie dla graczy. Ma elegancki oraz posiada moc 21 watów. Nie- go iPoda. Teraz wszyscy fani tego urządzenia
ona pozwalać przede wszystkim na spraw- zwykle istotną sprawą jest materiał z które- nie muszą włączać komputera jeśli chcą po-
ne komunikowanie się podczas prowadze- go został zbudowany, jest to drewno (pły- słuchać swojej ulubionej muzyki, mają szyb-
nia rozgrywek sieciowych. Mumble można ta wiórowa). Na przedniej ściance zamon- ko dostęp do gniazda. Wystarczy, że głośni-
oczywiście wykorzystać także dla innych towany jest głośnik z 6,5 calową membra- ki podłączone są do prądu a dźwięk zabrzmi
celów, zwłaszcza że aplikacja oferuje wy- ną ciśnieniową, na której producent nadru- czysto i w błyskawicznym tempie. Na rynku
soką jakość dźwięku przy jednoczesnej sil- kował logo Logitech. Jak wiadomo, z subwo- istnieje wiele przejściówek z prawie każdego
nej kompresji. ofera nie wydobywa się dźwięk lecz bas tak gniazda słuchawkowego na mini jack. Moż-
Opracowanie komunikatora nie było ła- w pierwszej chwili ciężko jest ocenić skąd na podłączyć w ten sposób praktycznie każ-
twą kwestią. Jest on rozwijany od czterech ten bas dochodzi. Sprawia wrażenie jakby dy telefon komórkowy lub nawet prosty od-
lat, a historię aplikacji przybliżyli w wywia- dochodził zewsząd. Bas w subwooferze wy- twarzacz muzyczny. Bezpośrednio z prawe-
dzie dla Sourceforge członkowie zespołu dobywa się dołem, gdyż to na spodzie za- go głośnika wychodzi kabel z męską koń-
programistycznego (http://sourceforge.net/ montowana jest 4,5 calowa membrana. Ten cówką mini jack, który w naszym przypad-
community/potm-200911). Mumble ma ra- system nosi nazwę down-firing i powoduje, ku zakończony jest laptopem. Lewa satelita
dzić sobie z największymi problemami, na iż dźwięk rozchodzi się na 360 stopni. Bar- podłączona jest pojedynczym kablem bezpo-
jakie napotykają użytkownicy usług VoIP dzo dobry efekt uzyskuje się poprzez posta- średnio z subwoofer-em poprzez standardo-
– kiepską jakością dźwięku, niepożądanymi wienie głośnika na drewnianym meblu, któ- wy chinch. Również ma wbudowane 2 gło-
efektami (echo), dużymi opóźnieniami oraz ry będzie drgał razem z nim. Wyjściem typu śniki na takich samych zasadach co pierw-
przerywaniem połączenia na przeciążonych DB9, nie pomylić z autem z serii Aston Mar- sza. Cały zestaw ma moc 40 watów. Jeżeli
lub powolnych łączach. tin, kabel z subwoofera doprowadzany jest do chcielibyście podzielić się muzyką z sąsia-
Programiści Mumble nie zapomnieli prawej satelity. Jest czarna, wykonana z two- dami, to w zupełności mocy wam wystarczy.
o żadnej z wymienionych trudności. W pro- rzywa sztucznego. Na satelicie zamontowane Następnie na subwooferze znajduje się wej-
gramie zaimplementowano funkcje odszu- są 2 pokrętła do regulacji basów oraz głośno- ście audio na 2xchich. To gniazdo daje moż-
miające, filtry oraz opcję usuwania pogło- ści. W smukły kształt wbudowane są 2 gło- liwość podłączenia konsoli do gry Sony Play-
su. Sporą zaletę stanowią również stosun- śniki posiadające 2 calowe membrany. Pierw- Station, Xbox-a lub DVD Player. My użyje-
kowo niewielkie opóźnienia podczas prze- szy głośnik z przodu, drugi zaś z tyłu na tej my tu kabla 2x cinch z przejściem na kolej-
syłu materiału audio. Wymienione zale-
ty sprawiają, że Mumble dobrze sprawdza
się w sytuacjach, gdy konieczna jest szyb-
ka i pewna komunikacja za pośrednictwem
VoIP. Zakres zastosowań nie jest więc ogra-
niczony tylko do korzystania z gier siecio-
wych.
Mumble jest programem wieloplatfor-
mowym, opartym na bibliotekach Qt. Mo-
gą z niego skorzystać zarówno użytkow-
nicy Linuksa, jak i systemów Windows
i MacOS X. Na stronie domowej aplika-
cji zamieszczone są linki do binariów dla
najpopularniejszych dystrybucji (http:
//mumble.sourceforge.net/Installing_Mum-
ble). Oczywiście możliwe jest także pobra-
nie kodu źródłowego komunikatora.

Podłącz się do Logitech Z523


Firma Logitech wprowadziła we wrześniu,
ubiegłego roku na rynek głośniki z serii spe-
aker system Z523. Zestaw składa się z sub- Rysunek 8. Logitech speaker system Z523

www.lpmagazine.org 9
NE WS
aktualności
News dział prowadzi Justyna Sutkowska justynasutkowska@op.pl

ny mini jack. Teraz wtykamy kabel do gniaz- zrozumiałe, bardzo się zmieniło. Nie cho- wym i – prawdopodobnie – jak w przypad-
da w telewizorze „audio out”. I tak oto do ze- dzi tutaj tylko o wygląd i dostępne funkcje ku wszelkich tego typu decyzji, będzie ono
stawu Logitech Z523 podłączyliśmy 3 urzą- – zmianie ulegał rozmiar projektu, jego za- miało równą ilość zwolenników, co przeciw-
dzenia, z których dźwięk może lecieć jedno- kres, ilość dostarczanych aplikacji, a wresz- ników. Jeżeli jednak repozycjonowanie zo-
cześnie. W niektórych źródłach podają infor- cie stopień popularności. Dziś KDE jest naj- stanie przeprowadzone konsekwentnie, to
mację, iż zestaw wymaga systemu operacyj- popularniejszym środowiskiem graficznym z pewnością z czasem wszyscy do zmian
nego Windows XP/Vista/7oraz MAC/OS/X dla systemów GNU/Linux, a co ciekawe, przywykną i na dobre je zaakceptują. Ale
10.3.9 lub nowszy. Czyli na Linuksie nie pój- stanowi integralną część trochę mniej po- wydaje się, że propozycja ma sens, bo nazy-
dzie, a szkoda. Oczywiście to żarty, po pro- pularnych, ale ważnych, dystrybucji (przy- wanie KDE – K Desktop Environment – wy-
stu ktoś zapomniał dopisać Unix i jego po- najmniej, jeśli odnieść się do Ubuntu), ta- daje się drobnym nieporozumieniem i to od
chodne, Apple, DEC, IBM Symbian, Andro- kich jak np. Slackware GNU/Linux. Kil- co najmniej kilku lat. Co takiego proponują
id i wszelkie inne platformy które da się za- kanaście lat rozwoju i nieustannych zmian, deweloperzy KDE dokładniej?
instalować na urządzeniach w wyjściem au- a tymczasem, skrót KDE wciąż zwykliśmy Rozróżniane mają zostać następują-
dio. Głośniki rewelacyjnie sprawdzają się w tłumaczyć tak samo: K Desktop Environ- ce marki dla poszczególnych produktów
obsłudze kina domowego. Nawet w odbiorni- ment – od razu widać, że coś tutaj nie tak wchodzących w skład dzisiejszego KDE:
kach telewizyjnych produkowanych obecnie, (i koniecznie trzeba to zmienić).
głośniki montuje się jak najtańszym kosztem Trzeba pamiętać, że KDE to nie tylko • KDE – oznaczać będzie całość przed-
a ich moc często nie przekracza 5 watów na środowisko graficzne wraz z zestawem wy- sięwzięcia, ale ten skrót nie będzie już
sztukę. Proponuję wyciszyć telewizor, podłą- sokiej jakości aplikacji. To także rozległa rozwijany jako K Desktop Environ-
czyć głośniki i ustawić bas na cały regulator. globalna społeczność, dzięki której projekt ment.
Teraz nawet telenowela wydaje się fascynują- ten podlega ciągłej ewolucji. Być może więc • KDE będzie oznaczać przede wszyst-
ca. Osoby, które już od dawna korzystają z te- pomysł, aby podkreślić ten właśnie charak- kim dwie rzeczy: po pierwsze – spo-
go rozwiązania wiedzą o czym pisze. Sprzęt ter KDE i na dobre porzucić stare tłumacze- łeczność, która tworzy wszelkie roz-
jest dostępny w sprzedażny od września 2009 nie nazwy, a także wprowadzić kilka uści- wiązania sygnowane tą marką wraz
a jego cena na rynku zamyka się granicach od śleń w nazewnictwie jest jak najbardziej tra- z użytkownikami końcowymi; po dru-
370 zł do 450 zł. Producent na głośniki udzie- fiony? Wszystko opiera się bowiem na zmia- gie – będzie to parasol dla wszelkich
la 2 letniej gwarancji. nie pewnego podstawowego założenia: KDE marek i technologii, które są i zostaną
nie ma być pojmowane jako oprogramowa- opracowane przez społeczność KDE.
KDE bardziej nie tworzone przez ludzi, ale jako ludzie, któ-
dojrzałe... Marketingowo rzy tworzą oprogramowanie. W pewnym A to nie koniec zmian. W ramach KDE roz-
Ogólnie rzecz biorąc, można powiedzieć, że sensie, można więc powiedzieć, że zmiana różniane będą następujące marki dla już ist-
w świecie GNU/Linuksa i oprogramowa- dotychczasowego sposobu myślenia o tym niejących rozwiązań:
nia Open Source dominują dwa środowiska projekcie przypomina próbę repozycjono-
graficzne: KDE i Gnome (poza mniej po- wania marki, jaką jest dziś KDE. Ta zmia- • KDE Workspaces – będą odpowiednio
pularnymi, nie tak bardzo rozbudowanymi na ma podkreślać dojrzałość i globalny cha- odnosić się do KDE Plasma Desktop
rozwiązaniami, jak XFCE, czy Fluxbox). rakter przedsięwzięcia. Trudno jednoznacz- i KDE Plasma Netbook.
Pierwsze z tych środowisk rozwijane jest nie odpowiedzieć, czy to posunięcie ma ja- • Narzędzia i technologie KDE używane
już od prawie 13 lat i przez cały ten czas, co kieś głębsze uzasadnienie, poza marketingo- do tworzenia aplikacji będą nazywane
KDE Platform.
• Aplikacje KDE wciąż będą nazywane
KDE Applications – w końcu wszelka
zmiana w tym zakresie wydawać mogła-
by się sztuczna (aplikacje to aplikacje).

Ostania wersja KDE, o numerze 4.3, jest


w rzeczywistości kompilacją całości opro-
gramowania (czyli Workspaces, Applications
i Platform) i z tego względu, nadchodzące wy-
danie, które będzie oznaczone numerem 4.4,
otrzyma nazwę KDE Software Compilation.
Jakie to ma znaczenie dla nas? Wydaje
się, że żadne, dopóki nie oznacza pogorsze-
nia się jakości dostępnych dla użytkowni-
ków produktów. To prawda, ale nie sposób
zwrócić tutaj uwagi na bardzo ważny aspekt
całego wydarzenia. Wydaje się bowiem, że
Rysunek 9. KDE 4.3 rozwiązania z kręgu Open Source, które

10 luty 2010
NE WS
aktualności
dział prowadzi Justyna Sutkowska justynasutkowska@op.pl News

jeszcze 10 lat temu mogły być traktowane Mandriva 2010.0 i openSUSE 11.2 czenia dla biznesu. Zespół redakcyjny por-
przez zwolenników komercyjnego oprogra- Wśród nowych wersji popularnych dys- talu pragnie zebrać wszystkich zajmujących
mowania jako projekty amatorskie, pozba- trybucji wydanych w ostatnich tygodniach się podobną tematyką w jednym miejscu
wione sensownej dokumentacji, czy jakie- znalazła się Mandriva 2010.0. Odświeżo- i w miarę możliwości zbudować silną spo-
gokolwiek spójnego i merytorycznego mar- ny system zawiera wsparcie dla kolejnego łeczność specjalistów utrzymania centrów
ketingu, dziś zaczynają już funkcjonować środowiska graficznego (projekt Moblin), przetwarzania danych.
nie na zasadzie alternatywnych projektów a także KDE 4.3.2, GNOME 2.28 oraz Xfce W ostatnim czasie portal DCSerwis.pl
o zacięciu rewolucyjnym, a na typowo ryn- 4.6.1. Dystrybucja dostarczana jest z jądrem został patronem internetowym Seminarium
kowych zasadach. Pomimo, że rozwijane są w wersji 2.6.31. W systemie obecny jest pa- Eksperckiego 2009, poświęconego tematyce
na zasadach Open Source i rozprowadzane kiet biurowy OpenOffice.org 3.1.1. Oszczędnych Data Center, które organizowa-
na wolnościowych (mniej lub bardziej) li- W listopadzie doczekaliśmy się też no- ne jest przez firmę Emerson Network Power.
cencjach, to samodzielnie, w miarę rozwo- wej wersji dystrybucji openSUSE. Wyda- Portal współpracuje także z miesięcznikiem
ju, uzyskują taką świadomość rynkową, w nie oznaczone numerem 11.2 zawiera YaST Linux+ – w dziale materiały można odnaleźć
której oprócz funkcjonalności, jakości ko- oparty na bibliotekach Qt 4 i z dodatko- darmowy artykuł poświęcony budowie, eks-
du, czy dokumentacji użytkownika (zloka- wą funkcją zdalnej konfiguracji. Domyśl- ploatacji i zarządzaniu data center, który zo-
lizowanej, oczywiście) wymaga się... sen- nym środowiskiem graficznym jest KDE 4. stał napisany przez zespół redakcyjny porta-
sownego marketingu. A ten nakazuje, aby Przy okazji zmieniono nieco szatę graficz- lu i opublikowany we wrześniowym wydaniu
najpierw mieć świadomość własnej marki. ną. W wydaniu 11.2 zostały również zak- Linux+ (numer poświęcony Data Center).
Jak więc widać, KDE wykonuje wła- tualizowane programy wchodzące w skład Portal DCSerwis.pl zaprasza wszyst-
śnie istotny krok w swojej ewolucji, dzię- dystrybucji. Wyraźnie zauważalna jest mi- kich do wymiany informacji na temat eks-
ki czemu, przynajmniej marketingowo, sta- gracja do bibliotek Qt 4. Ciekawostkę sta- ploatacji i zarządzania serwerowniami na
je się bardzo dojrzałą marką. Musimy tak- nowi ponadto obecność dodatków ułatwia- łamach swojego forum, komentowania pu-
że zgodzić się, że proces ten dotyczy wie- jących korzystanie z popularnych serwisów blikowanych newsów i artykułów, a także
lu innych produktów – dobrymi przykła- społecznościowych. do zadawania wszelkich pytań. Na wszyst-
dami samoświadomości marki są np. Ope- kie pytania postarają się odpowiedzieć
nOffice.org, czy niektóre dystrybucje syste- DCSerwis.pl zaprasza eksperci współpracujący i współtworzą-
mu GNU/Linux (jedne bardziej – jak Ubun- DCSerwis.pl to portal grupy specjalistów cy DCSerwis.pl. Tematyka ta wciąż nie
tu, drugie mniej – jak np. Slackware, którego zawodowo zajmujących się problematy- jest szczególnie popularna w naszym kra-
cechą charakterystyczną, chyba na zawsze, ką budowy, utrzymania i zarządzania ser- ju, a jednak, trzeba przyznać, że nie ma mo-
pozostanie minimalna troska o marketing werowniami – tymi małymi, spotykanymi wy o świadczeniu wysokiej jakości usług,
– w rzeczywistości to jest właśnie marketing praktycznie wszędzie (np. na korytarzu lub w oparciu o dowolne oprogramowanie, je-
tej dystrybucji, który zapewnia popularność w wydzielonym pokoju w mniejszej firmie, śli najpierw nie zadbamy o wysoką jakość
Slackware u określonej grupy odbiorców). czy w domu) i tymi wielkimi, które stano- naszej infrastruktury technicznej. Czyli…
Tak czy inaczej widzimy tutaj wyraźną zmia- wią sens istnienia tzw. Centrów Przetwa- Jeżeli nie zatroszczymy się o serwerownię
nę w sposobie myślenia o projekcie Open rzania Danych. Jednym z celów działania właściwą dla potrzeb naszego biznesu.
Source – moment, w którym istotne stają się DCSerwis.pl jest popularyzacja wiedzy do- Centra przetwarzania danych to także
drobiazgi, jak zrozumienie własnej nazwy tyczącej IKS (tzw. Infrastruktury Krytycz- doskonałe miejsce do stosowania techno-
i czysta definicja zasięgu projektu. Pozostaje nej Serwerowi), centrów danych i ich zna- logii z nurtu Wolnego i Otwartego Opro-
się cieszyć, bo pod tym względem sporo po-
zazdrościć KDE mogą nawet niektórzy do-
stawcy komercyjnych rozwiązań (które – do
dziś, nie wiedzieć czemu – często nazywane
bywają profesjonalnymi produktami).
KDE można pochwalić za profesjonalne
podejście do siebie jako marki łączącej spo-
łeczność i produkty, będące efektem pracy tej
społeczności. Jeszcze niedawno nikt nie wi-
dział potrzeby przykładania wagi do takich
działań jak repozycjonowanie marki w świe-
cie Wolnego Oprogramowania. Kto w ogóle
myślałby w kontekście marek i marketingu?
Cóż... Ewolucja, a nie rewolucja! Poza umie-
jętnością programowania ważna jest umiejęt-
ność kreowania swojego wizerunku i troska
o rynek. Więcej szczegółów:
http://dot.kde.org/2009/11/24/repositioning-
kde-brand Rysunek 10. Widok okna Mandriva Live

www.lpmagazine.org 11
NE WS
aktualności
News dział prowadzi Justyna Sutkowska justynasutkowska@op.pl

gramowania i kolejna nisza, w której syste- jących się prywatnością i ochroną informacji, salny klucz, którym jest w stanie zdekodo-
my GNU/Linux mogą odgrywać nieocenio- a także wśród typowych użytkowników. Poja- wać każdą wiadomość. Dzięki temu, dostaw-
ne usługi (nie tylko służyć do redukcji kosz- wiła się nawet opinia, że w zamian za współ- ca rozwiązania w łatwy sposób może wejść
tów eksploatacyjnych). pracę z NSA, firma Microsoft umożliwiła w posiadanie wszelkich informacji, które
Redakcja portalu z wielką przyjemno- umieszczenie w kodzie systemu operacyjnego chronione są szyfrem. Trzeba przyznać, że
ścią wysłucha pomysłów i doświadczeń Windows 7 backdoora, który mógłby być uży- we wszelkiej maści wywiadowczych zasto-
Czytelników Linux+. wany do inwigilacji podejrzanych osób. Trze- sowaniach taka perspektywa musi wydawać
Więcej informacji: ba jednak przyznać, że jak to już bywa w tego się wyjątkowo smakowita. Jedyny problem
http://dcserwis.pl typu sprawach, wszelkie gdybania, mają cha- w tym, że takie rozwiązanie ma sens tylko
rakter wyłącznie spekulacji. Sprawa nie jest ła- wówczas, jeśli pozostanie całkowicie tajne.
Windows 7 i NSA, twa do udowodnienia – zarówno dla osób, któ- Jeżeli tylna furtka zostanie ujawniona,
czyli „jestem bezpieczny, re cokolwiek starają się zarzucać NSA i firmie oznacza to właściwie dwie rzeczy. Po pierw-
bo mam Linuksa?” Microsoft, jak i dla firmy Microsoft, która cał- sze, backdoor w krótkim czasie przestanie być
Niedawno, w Internecie rozpętała się dys- kowicie zaprzecza wszelkim plotkom. źródłem jakichkolwiek cennych informacji,
kusja, do której przyczynek stanowiła in- Czy dywagacje na ten temat mają sens? co oznacza, że wywiad będzie musiał poszu-
formacja o tym, że Agencja Bezpieczeń- Tak, ponieważ istnieje potencjalne ryzyko, kać nowego sposobu na pozyskiwanie wiedzy.
stwa Narodowego (ang. National Security że sytuacja mogła by mieć – hipotetycznie Po drugie, jeśli tego typu backdoor ujawniony
Agency, NSA) USA współpracowała z firmą – miejsce i to w przypadku dowolnego opro- zostałby w produkcie komercyjnie sprzeda-
Microsoft podczas opracowywania nowego gramowania. Ponadto, istnieją – jawne – roz- wanym na całym świecie, to... Zamiast ko-
systemu operacyjnego – Windows 7. wiązania takie jak np. architektura Lawful In- mercyjnego sukcesu mamy gwarantowany
Rzekomym źródłem tej nowiny miał być tercept, znajdująca się w systemie operacyj- globalny skandal, procesy, odszkodowania,
dyrektor jednego z wydziałów NSA, Richard nym IOS, działającym na urządzeniach Cisco. utratę pozycji rynkowej, a może nawet rynko-
Schaeffer, który miał w trakcie przesłuchania Jednak klucz do zrozumienia subtelnej różni- wą śmierć. Wydaje się więc, że o ile tego typu
odbywającego się w amerykańskim senacie cy między bezpieczeństwem, a naruszaniem rozwiązania, co zrozumiałe, mogą być atrak-
ujawnić rewelację, mówiącą o fakcie współ- prywatności zdaje się leżeć w tym przypadku cyjne dla szeroko rozumianych służb, to dla
pracy NSA i firmy Microsoft. Owocem tej pomiędzy słowami jawne, a tajne. dostawców komercyjnego oprogramowania
kooperacji mają być m.in. mechanizm SCAP Warto także pamiętać o tym, że pomysł są kategorycznie nie do przyjęcia. Przynajm-
(ang. Security Content Automation Protocol) dotyczący backdoorów nie jest nowy. Dosko- niej, jeśli mają pozostać tajne. Żaden produ-
oraz SCMT (ang. Security Compliance Ma- nałym przykładem może być tzw. kryptogra- cent, jeśli oprzeć się na zdrowej logice, nie za-
nagement Toolkit), czyli zbiór narzędzi po- fia trojańska, czy przypadek urządzenia kryp- ryzykuje przecież swojej pozycji i pieniędzy,
zwalających na zaawansowane modyfikowa- tograficznego Clipper, w którego budowę w aby ukryć przed użytkownikiem fakt obec-
nie ustawień bezpieczeństwa. 1993 roku zaangażowana była NSA. Zało- ności backdoorów dla NSA (czy jakichkol-
Co naturalne, ujawnienie wspomnia- żenie jest całkiem proste – otrzymujemy silny wiek innych instytucji związanych z bezpie-
nej współpracy momentalnie obudziło oba- algorytm szyfrujący, jednak skonstruowany czeństwem). Jednak co innego, jeśli tego typu
wy wśród wszelkiej maści ekspertów zajmu- w taki sposób, że dostawca posiada uniwer- rozwiązanie zostanie ujawnione – wówczas
użytkownik nie będzie mógł mieć pretensji
o to, że był lub jest inwigilowany, o ile w ogó-
le wykorzystanie backdoora będzie można na-
zwać w takim kontekście inwigilacją? Z całe-
go tego zamieszania, które wydaje się wcale
z GNU/Linuksem nie być związane wyłania
się jednak kilka ważnych refleksji.
Po pierwsze, co zresztą nie nowe, wszę-
dzie tam, gdzie mamy do czynienia z zamknię-
tym oprogramowaniem nie możemy być do
końca pewni, co otrzymujemy w tzw. pudeł-
ku. Jeśli nawet nasze obawy, co do prywatno-
ści, są nieuzasadnione, to już sam fakt, że się
pojawiają, powinien dawać nam do myślenia.
Po drugie, zwykle atakujemy firmę Microsoft
– często nie do końca uczciwie – za to, że jej
rozwiązania nie są bezpieczne. Zdajemy się za-
pominać, że oprogramowanie (np. system ope-
racyjny) jest na tyle bezpieczne, na ile o jego
bezpieczeństwo zadbał administrator (lub
– szerzej – użytkownik). Sam fakt korzysta-
Rysunek 11. www.dcserwis.pl nia z GNU/Linuksa nie gwarantuje nam bez-

12 luty 2010
NE WS
aktualności
dział prowadzi Justyna Sutkowska justynasutkowska@op.pl News

pieczeństwa, jeśli popełniać będziemy podsta-


wowe błędy, a w temacie wykażemy się całko-
witą niewiedzą. Trzeba też przyznać, że wszel-
kie inicjatywy firmy Microsoft, które mają na
celu podniesienie poziomu bezpieczeństwa jej
produktów powinny raczej zasługiwać na po-
chwałę, a nie naganę. A udział NSA w pracach
nad Windows 7? Cóż, nie sposób dziwić się,
że Agencja Bezpieczeństwa jednego z naj-
większych państw świata współpracuje z jed-
nym z największych producentów oprogramo-
wania. To raczej naturalne zjawisko. Dla wie-
lu osób, jak się wydaje, informacja ta wca-
le nie będzie ostrzeżeniem, a wręcz reklamą,
gwarancją bardzo szeroko rozumianego „bez-
pieczeństwa” nowego systemu operacyjnego.
Ot, taki paradoks. Wszystko zależy od osobi-
stego podejścia do kwestii wolności i prywat-
ności. I tutaj dotykamy sedna sprawy.
Zwolennicy oprogramowania Open So-
urce często – dość pochopnie – podkreślają,
że w przypadku rozwiązań o otwartym ko-
dzie źródłowym nie ma mowy o z

www.lpmagazine.org 13
opis DVD
DVD

Fedora 12 Constantine cie dla sieci PAN Bluetooth pozwala na skon- włoka Fluxbox i wiele aplikacji narzędzio-
Fedora jest liderem we wprowadzaniu no- figurowanie takiego połączenia za pomocą wych zajmuje ok. 50 Mb. Nowa wersja DSL
wych, innowacyjnych funkcji, co potwierdza- kilku kliknięć. zawiera niemal kompletne środowisko pracy.
ją nowości zawarte w dystrybucji. Dwunastka Rozszerzono bazę wspieranych kart gra- Znajdziemy w nim m.in przeglądarki Firefox
to nowa wersja dystrybucji. Nawiększą uwa- ficznych. Twórcy dodali eksperymentalną ob- , Links , Dillo , edytor tekstowy Vim, edy-
gę twórcy dystrybucji poświęcili funkcjonal- sługę akceleracji 3D kart AMD Radeon HD tor grafiki Xpaint, odtwarzacz audio XMMS
ności desktopowej, ale skupiono się także na serii 2400 i późniejszych oraz wprowadzili , arkusz kalkulacyjny SIAG, komunikator Na-
obsłudze netbooków, wirtualizacji i rozwoju obsługę Kernel Mode Settings. Poprawiono im, a także aplikację do nagrywania płyt czy
narzędzi administracyjnych. Poprawiono ob- obsługę kart graficznych Intela (DisplayPort), otwierania plików PDF . .Ponadto dystrybu-
sługę między innymi kamer internetowych, a także sterownik Nouveau. cja DSL zawiera dwa menadżery okien: JWM
kodeków wideo (Ogg Theora) oraz dźwięku, Nowe narzędzie Abrt pozwala na zgła- i fluxbox.
lepsze zarządzanie zasilaniem, wirtualizacji szanie twórcom błędów za pomocą kilku klik-
oraz bezpieczeństwa. Nowe funkcje dystry- nięć, co pozwoli na szybsze rozwiązywanie System RescueCD 1.3.3
bucji to narzędzie automatycznego zgłasza- problemów. Wprowadzono nowe narzędzie Jest bazującą na Gentoo minidystrybucją
nia błędów, dodano także usługę Bluetooth na do generowania ramdysku procesu Init o na- LiveCD . Jej zastosowanie to naprawa sys-
żądanie , która sprawdza kiedy Bluetooth jest zwie Dracut. temu oraz odzyskanie utraconych danych.
używany i włącza/wyłącza usługę, oszczędza- Narzędzie do zarządzania pakietami Dystrybucja może być również wykorzy-
jąc zasoby. – PackageKit – zostało wzbogacony o wtycz- stywana do zarządzania partycjami. W jej
Zredukowano rozmiar aktualizacji. ki, które umożliwiają instalację oprogramo- skład wchodzą takie aplikacje jak parted,
Opcjonalny w Fedorze 11 yum-presto stał wania prosto ze strony WWW, a także wyszu- partimage, fstools, Midnight Commander,
się domyślną wtyczką. Dzięki pakietom róż- kują brakujące programy, które użytkownik edytory tekstu, narzędzia sieciowe itp. Ją-
nicowym rozmiar aktualizacji może zmniej- wywołał z konsoli sugerując ich instalację. dro systemu wspiera większość najważ-
szyć się nawet o 90%. Zmieniono także ro- niejszych systemów plików (ext2/ext3, Re-
dzaj kompresji pakietów RPM z gzip do XZ Damn Small Linux 4.4.10 iserFS, XFS, JFS, VFAT, NTFS, ISO9660)
co jednocześnie nie przyniosło pogorszenia Damn small Linux to najpopularniejsza mi- i sieciowych (Samba i NFS). Dystrybucja
wydajności. nimalistyczna dystrybucja GNU/Linux na ta jest udostępniana w postaci bootowalne-
Dzięki ulepszonemu NetworkManager świecie. go pliku iso
łączenie się z siećmi bezprzewodowymi za DSL 4.4.10 to mała , uniwersalana i prze-
pomocą modemów GSM/UMTS/3G jest ła- nośna (pendrive czy inne małe nośniki da-
twiejsze. Rozszerzono obsługę IPv6. Wspar- nych), dystrybucja systemu Linux. Jądro , po-

14 luty 2010
Jeśli nie możesz odczytać
zawartości płyty CD/DVD,
a nie jest ona uszkodzona
mechanicznie, sprawdź ją na
co najmniej dwóch napędach CD/DVD

02/2010
Urządzenia mobilne
Kontrolki wizualne w systemie Android – część 3

Kontrolki wizualne
w systemie Android
część 3
Grzegorz Madajczak

Artykuł ten stanowi kolejną część cyklu poświęconego programowaniu w systemie Android, a zarazem
trzeci odcinek części tego cyklu, omawiający zagadnienia związane z stosowaniem kontrolek
wizualnych (widgetów). Tym razem zajmiemy się tworzeniem i użytkowaniem menu opcji oraz menu
podręcznego (kontekstowego). Dodatkowo artykuł poświęcony będzie tworzeniu podstawowych okien
dialogowych.

S
linux@software.com.pl

DK Android dostarcza narzędzia pozwalają- tivity, możliwe jest, aby każde z nich miało niezależne
ce na tworzenie trzech typów menu. Pierw- menu. Istnieje również taka możliwość, aby wszystkie
sze z nich określane mianem Menu Opcji do- obiekty Activity jednej aplikacji korzystały z tego sa-
stępne jest poprzez naciśnięcie sprzętowego mego menu, lecz i w tej sytuacji to jedno wspólne menu
przycisku Menu w telefonie. Drugi typ to menu kontek- musi zostać dodane do każdego Activity osobno. Dla-
stowe (tzw. popup menu) wywoływane jako efekt obsłu- czego tak się dzieje wyjaśnię w dalszej części artykułu.
gi zdarzenia onLongClick dla dowolnego obiektu klasy Na razie skupmy się na tworzeniu menu.
View. Ostatnia kategoria, która może być rozszerzeniem
dwóch poprzednich typów to menu potomne (submenu). Definicja menu
Posiada ono wszystkie te same metody co dwa poprzed- z poziomu dokumentu XML
nie typy menu, z wyłączeniem metod do tworzenia menu Dokument (dokumenty) definicji układu menu aplika-
potomnych. Wszystkie te trzy typy menu mogą być defi- cji zgromadzone są w folderze menu zasobów aplika-
niowane na dwa różne sposoby – z poziomu kodu JAVA cji. Przykładowa definicja rozbudowanego menu została
lub poprzez strukturę dokumentu XML. przedstawiona na Listingu 1.
Zanim zajmiemy się architekturą menu, klasami W dokumencie XML definiującym menu występu-
i metodami związanymi z tym obiektem, chciałbym wy- ją trzy elementy: <menu>, <group> oraz <item>. Istnieje
jaśnić, w jaki sposób ono działa, co jest niezbędne do kilka zasad ustalających zależności pomiędzy tymi trze-
dalszej lektury tego artykułu. Najważniejszym założe- ma elementami. Przede wszystkim głównym węzłem każ-
niem API tego obiektu jest fakt, iż jest on nierozerwalnie dego dokumentu (elementem root) zawsze musi być ele-
związany z pojedynczym obiektem Activity aplikacji ment <menu>. Z tego zaś wynika, iż wszystkie pozycje
(czym jest obiekt Activity pisałem w numerze 11/2009 (elementy <item>) oraz grupy pozycji (element <gro-
L+). Oznacza to, iż jeśli aplikacja składa się z kilku Ac- up>) zawsze muszą być dziećmi elementu <menu>. Jednak

16 luty 2010
Urządzenia mobilne
Kontrolki wizualne w systemie Android – część 3

element <menu> może być również dzieckiem Element <item> może zawierać wszystkie ustawienie interfejsu checkable dla całej gru-
elementu <item>. Zależność taka występuje atrybuty wymienione w przypadku elementu py pozycji z zastosowaniem metody setGroup-
w sytuacji, gdy pozycja definiuje dostęp do <group> poza checkableBehavior, któremu Checkable() wywołanej dla obiektu klasy Menu.
podmenu, co zostało przedstawione w wier- odpowiada atrybut checkable (dopuszczalne Metoda ta wymaga podania trzech argumentów:
szach 12-15 Listingu 1. wartości to true lub false), a także:
Wszystkie wymienione powyżej ele- • wartości typu int będącej identyfikato-
menty zawierają atrybuty, które powinny • title – określający etykietę (tytuł) pozy- rem grupy,
należeć do przestrzeni nazw android, przy cji menu; • wartości typu boolean, która ustala czy
czym pierwszy – <menu> może zawierać je- • titleCondensed – definiujący etykietę w pozycje grupy mają być checkable, czy
dynie deklarację przestrzeni nazw. Każdy in- sytuacji, gdy normalny tytuł jest za długi też nie,
ny atrybut jest zbędny. Element <group> gru- do wyświetlenia; • wartość typu boolean, która ustala, czy
puje pozycje menu, którym chcemy nadać ja- • icon – określający ikonę pozycji menu pozycje mają dziedziczyć zachowanie po
kieś wspólne cechy. Może on zawierać nastę- (poprzez odwołanie do zasobów @dra- RadioButton (tylko jedna pozycja mo-
pujące atrybuty: wable aplikacji); że być zaznaczona) – wartość false czy
• alphabeticShortcut – definiujący znak CheckBox (możliwe jest zaznaczenie wie-
• id – unikalny identyfikator grupy; dla literowego skrótu klawiszowego lu pozycji) – wartość true.
• menuCategory – wartość tego atry- (opcja niedostępna dla menu menu kon-
butu odpowiada stałym klasy andro- tekstowego); W odniesieniu do skrótów klawiaturowych
id.view.Menu.CATEGORY_*, które de- • numericShortcut – definiujący znak SDK Android udostępnia trzy metody:
finiują priorytet grupy pozycji (przyj- dla numerycznego skrótu klawiszowego
muje następujące wartości: conta- (opcja niedostępna dla menu menu kon- • setAlphabeticShortcut(char) – usta-
iner, system, secondary oraz alter- tekstowego); wiającą literowy skrót klawiaturowy,
native); • setNumericShortcut(int) – ustawiają-
• orderInCategory – wartość typu int Wszystkie zaprezentowane powyżej elementy cą liczbowy skrót klawiaturowy,
definiująca domyślną kolejność pozycji a także ich atrybuty mają swoje odpowiedni- • setShortcut(char, int) – będącą
w grupie; ki w klasach i metodach. Tak na przykład od- kompilacją obu powyższych metod.
• checkableBehavior – określa, czy po- powiednikiem atrybutu checkable jest meto-
zycje grupy są typu checkable – pozycje da setCheckable() wywoływana dla pozycji Skróty klawiaturowe ustawione jedną z trzech
menu będą miały wygląd przycisku ty- menu, jak na przykładzie poniżej. powyższych metod działają dopiero w mo-
pu radio (wartość single) lub checkbox mencie, gdy dane menu jest widoczne. Chciał-
(wartość all), wartość domyślna to none; menu.add(0, MENU_ITEM_ID, 0, "Tytuł bym jeszcze dodać, iż w przypadku skrótu lite-
• visible – określa, czy pozycje grupy opcji").setCheckable(true); rowego wielkość znaku nie ma znaczenia.
mają być widoczne, czy też nie (dopusz-
czalne wartości: true lub false); Możliwe jest również wymuszenie na danej po- Tworzenie i obsługa
• enabled – określa, czy pozycje grupy zycji jej stanu (zaznaczona lub nie) przy użyciu menu opcji w kodzie JAVA
mają być włączone, czy też nie (dopusz- metody setChecked(), której argumentem jest Do utworzenia menu opcji z poziomu JAVA
czalne wartości: true lub false); wartość typu boolean. Możliwe jest również wykorzystywana jest metoda onCreateOp-

Listing 1. Definicja menu w dokumencie XML


<menu xmlns:android="http://schemas.android.com/apk/res/android">

<item android:id="@+id/pozycja_menu_1''

android:title="Etykieta pozycji menu"

android:icon="@drawable/ikona_pozycji_menu" />

<group android:id="@+id/grupa_menu">

<item android:id="@+id/ pozycja_menu_2''

android:title="Etykieta 2"

android:icon="@drawable/ikona_pozycji_2_menu" />

</group>
<item android:id="@+id/pozycja_z_podmenu
android:title="Etykieta 3" >
<menu>
<item android:id="@+id/example_submenu_item
android:title="Etykieta 4" />
</menu>
</item>
Rysunek 1. Menu opcji z przyciskiem Więcej będą- </menu>
cym odwołaniem do podmenu

www.lpmagazine.org 17
Urządzenia mobilne
Kontrolki wizualne w systemie Android – część 3

tionsMenu(), klasy Activity wykonywa- MenuItem. Wymaga ona podania czterech ar- • Ostatni argument określa tytuł definio-
na gdy menu opcji jest po raz pierwszy wy- gumentów. Kolejno są to: wanej pozycji menu. Wartością tego ar-
woływane (poprzez naciśnięcie sprzętowe- gumentu może być zarówno odwołanie
go przycisku Menu w telefonie). W kodzie • Wartość typu int będąca identyfikato- do zasobów tekstowych (stała typu int
tej metody można odwołać się do definicji rem grupy, do której ma należeć dana po- z podklasy R.string), jak i obiekt klasy
menu w zasobach aplikacji lub też zbudo- zycja menu. Jeśli dana pozycja nie będzie CharSequence.
wać menu używając odpowiednich metod. przypisana do żadnej grupy argument ten
W pierwszym przypadku, gdy chcemy sko- będzie przyjmował wartość NONE lub po Na Listingu 3 tworzone pozycje menu mają
rzystać z menu zdefiniowanego w dokumen- prostu 0. także przypisane ikony poprzez wywołanie
cie XML, należy skorzystać z metody in- • Wartość typu int będąca identyfikato- dla tworzonego obiektu klasy MenuItem me-
flate() klasy android.view.MenuInflater. rem danej pozycji menu. Jeśli nie po- tody setIcon(), która wymaga argumentu
Metoda inflate() wymaga dwóch argumen- trzebujemy unikalnego ID dla danej po- – wartości typu int będącej odwołaniem do
tów: wartości typu int będącej identyfika- zycji, można zastosować wartość NONE identyfikatora obiektu z zasobów typu dra-
torem definicji menu w zasobach aplikacji lub 0. Jeśli jednak wartość ta będzie po- wable (stała z klasy R.drawable).
(stała podklasy R.menu) oraz obiektu klasy trzebna, powinna zostać uprzednio zdefi- Jak łatwo zauważyć w obu przypadkach
Menu do którego definicja ma być przypo- niowana. Powinna to być stała na pozio- menu z Listingów 2 i 3 brakuje kodu obsługu-
rządkowana. Kod realizujący tą technikę zo- mie klasy typu final static int. Tak jącego zdarzenie wyboru danej pozycji menu.
stał przedstawiony na Listingu 2. więc deklaracja identyfikatora (stałej Dzieje się tak dla tego, iż zdarzenie to obsługi-
Przyznaję szczerze, że w tworzonych klasowej) drugiej pozycji z menu zdefi- wane jest przez metodę przypisaną bezpośred-
przez siebie aplikacjach nigdy nie stosu- niowanego na Listingu 3 będzie wyglą- nio do Activity z którym powiązane jest da-
ję metody opisanej powyżej, to znaczy de- dać następująco: ne menu opcji.
finiowania menu w XML i jego wywołanie
jak na Listingu 2. Takie bowiem postępowa- static final int MENU_QUIT = 0; Obsługa zdarzeń w menu opcji
nie sprawia, iż marnowane są cenne zasoby Za obsługę wspomnianego powyżej zdarze-
systemowe. Dokument XML musi bowiem Drobna uwaga na koniec. Zdefiniowana nia odpowiedzialna jest metoda klasy Activi-
zostać załadowany, wirtualna maszyna Da- stała ID nie musi mieć unikalnej warto- ty onOptionsItemSelected() zwracają-
lvik musi uruchomić parser, a następnie zin- ści. Oznacza to, iż wszystkie stałe ID mo- ca wartość typu boolean w przypadku doko-
terpretować kod dokumentu. Wszystko to gą mieć przypisaną wartość np. 0, a i tak nania wyboru. Implementacja tej metody jest
wymaga ogromnych ilości kodu, z którego będą prawidłowo interpretowane, gdyż za niezwykle prosta i nie odbiega od schematu
obecności nawet nie zdajemy sobie sprawy, każdym razem mamy do czynienia z in- przyjętego dla innych metod tego typu. Kod
a co objawia się marnowaniem zawsze bra- nym obiektem. tej metody w odniesieniu do menu z Listin-
kujących zasobów systemowych. O wiele gu 3 został przedstawiony na Listingu 4. W za-
prościej jest stworzyć menu z poziomu ko- • Wartość typu int określająca kolejność sadzie kod przedstawiony na tym Listingu nie
du JAVA, co dla menu opcji przedstawia kod pozycji menu. Jeśli nie zważamy na ko- wymaga komentarza.
na Listingu 3. lejność poszczególnych pozycji, zosta- Kolejnym zdarzeniem obsługiwanym
W Listingu 3 wykorzystana została meto- nie ona ustalona na podstawie kolejności przez menu opcji jest zdarzenie onPrepare-
da add() klasy Menu, która zwraca obiekt typu w kodzie metody. W tym przypadku ten OptionsMenu(). Metoda ta wywoływana jest
argument powinien przyjąć wartość NONE za każdym razem, kiedy menu opcji jest wy-
lub 0. Wartość tę można odczytać wywo- woływane – wyświetlane po naciśnięciu przy-
łując metodę getOrder() dla obiektu po- cisku Menu w telefonie, w przeciwieństwie do
zycji menu (obiekt klasy MenuItem). omawianej wcześniej metody onCreateOp-

Listing 2. Kod tworzący menu opcji na podstawie definicji w dokumencie XML


public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.options_menu, menu);
return true;
}

Listing 3. Kod tworzący menu opcji z poziomu kodu JAVA


public boolean onCreateOptionsMenu(Menu menu) {
menu.add(0, MENU_POZ_1, 0, R.string.pozycja_1_text)
.setIcon(R.drawable.menu_icon);
menu.add(0, MENU_POZ_2, 0, "Etykieta pozycji 2 menu")
.setIcon(R.drawable.menu_icon_2);
return true;
}

Rysunek 2. Okno dialogowe klasy AlertDialog

18 luty 2010
Urządzenia mobilne
Kontrolki wizualne w systemie Android – część 3

tionsMenu(), która wywoływana jest jedno-


koncepcja jest podobna, do menu wywoły- sterForContextMenu(), której argumen-
razowo wraz z uruchomieniem Activity. Me-
wanego po naciśnięciu prawego przycisku tem jest obiekt klasy View, dla którego za-
toda ta może być stosowana na przykład w sy-
myszy na PC. Obsługa tego menu w syste- rejestrowane jest menu kontekstowe. Samo
tuacji, gdy chcemy dokonać zmian w już ist-
mie android związana jest ze zdarzeniem ty- menu kontekstowe tworzone jest, podobnie
pu long-press (naciśnięcie i przytrzymanie
niejącym menu – dodać lub ująć jakąś pozycję do menu opcji, w kodzie metody onCre-
np. w zależności od stanu aplikacji. obiektu przez około dwie sekundy) przypi- ateContextMenu() z klasy Activity. Nie
sanym do dowolnego obiektu klasy View. wiem czy dość wyraźnie wynika to z po-
Tworzenie i obsługa Powiązanie obiektu z menu kontekstowym przednich wierszy, lecz zasada tworzenia
menu kontekstowego odbywa się nieco od tyłu i nazywa się re- menu kontekstowego jest następująca. Menu
Android udostępnia również wspomnia- jestracją obiektu dla menu kontekstowego. tworzone jest raz dla Activity, niezależnie
ne uprzednio menu kontekstowe, którego Odbywa się to przy użyciu metody regi- od liczby zarejestrowanych obiektów View.
Dopiero w trakcie wywołania menu dla kon-
Listing 4. Obsługa zdarzenia wyboru pozycji menu opcji w metodzie onOptionsItemSelected() kretnego obiektu do raz utworzonego menu
public boolean onOptionsItemSelected(MenuItem item) { dodawane są pozycje (opcje) – różne w za-
switch (item.getItemId()) { leżności od obiektu lub to samo. Realizację
case MENU_POZ_1: opisanego powyżej rozwiązania przedsta-
wia Listing 5.
// kod realizowany po wystąpieniu zdarzenia Podobnie do menu opcji, obsługa zdarze-
nia wyboru pozycji w menu kontekstowym
return true; odbywa się za pomocą metody klasy Activi-
case MENU_POZ_2: ty – onContextItemSelected().
// kod realizowany po wystąpieniu zdarzenia
Tworzenie podmenu
return true; Ostatnia z form menu – podmenu (subme-
nu) może zostać dodane do każdego innego
} menu poza samym podmenu. To menu może
return false; być zastosowane na przykład w przypadku,
} gdy przewidujemy, iż menu (opcji lub kon-
tekstowe) będzie zawierać szczególnie dużo
Listing 5. Utworzenie menu kontekstowego dla dwóch obiektów pozycji, co może utrudnić korzystanie z nich.
public class Main extends Activity { W odniesieniu do menu opcji graniczną licz-
final static int POZ_1_CONTEXT_MENU_ITEM = 0; bą pozycji jest sześć. Więcej pozycji utrudni
final static int POZ_2_CONTEXT_MENU_ITEM = 1; korzystanie z menu. Do utworzenia nowego
final static int POZ_3_CONTEXT_MENU_ITEM = 3; podmenu stosujemy metodę addSubMenu()
final static int POZ_4_CONTEXT_MENU_ITEM = 4; wywoływaną dla danego menu. Argumen-
public void onCreate(Bundle savedInstanceState) { tem tej metody jest obiekt typu CharSequen-
super.onCreate(savedInstanceState); ce będący tytułem pozycji menu – odnośni-
setContentView(R.layout.main);
Button bttn_1 = (Button)findViewById(R.id.buttn_1);
Button bttn_2 = (Button)findViewById(R.id.buttn_2);
registerForContextMenu(bttn_1);
registerForContextMenu(bttn_2);
}
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
switch(v.getId()) {
case R.id.buttn_1:
menu.add(0, POZ_1_CONTEXT_MENU_ITEM, 0, "Pozycja 1");
menu.add(0, POZ_2_CONTEXT_MENU_ITEM, 0, "Pozycja 2");
break;
case R.id.buttn_2:
menu.add(0, POZ_3_CONTEXT_MENU_ITEM, 0, "Pozycja 3");
menu.add(0, POZ_4_CONTEXT_MENU_ITEM, 0, "Pozycja 4");
break;
}
}
} Rys. 3. Okno dialogowe klasy ProgressDialog ze
wskaźnikiem nieokreślonego postępu

www.lpmagazine.org 19
Urządzenia mobilne
Kontrolki wizualne w systemie Android – część 3

ka otwierającego menu potomne. Metoda ta Obsługa obiektów klasy Intent jące w tle, odpowiadające linuksowym de-
zwraca obiekt klasy android.view.SubMe- Dotychczas nie wspominałem o obiektach monom) oraz obiekty klasy android.con-
nu, w stosunku do którego wywołuje się opi- klasy Intent, gdyż nie było takiej potrze- tent.BroadcastReceiver odbywa się za
saną wcześniej metodę add(), dodającą po- by. Jednak jest to ważne przy prawidło- pomocą specjalnych komunikatów. Tymi
zycje menu. Dalsze postępowanie z menu po- wym zrozumieniu obsługi pozycji menu. komunikatami są właśnie obiekty klasy
tomnym jest takie same, jak w obu uprzednio Wcześniej jednak wspominałem, iż jed- Intent. Za pomocą tych obiektów możli-
opisanych przypadkach. nym z podstawowych komponentów apli- we jest uruchomienie innego Activity, jak
Dosyć częstym sposobem wykorzy- kacji Android jest obiekt klasy Activi- i za ich pośrednictwem odbywa się obsłu-
stania podmenu jest zastosowanie przyci- ty będący odzwierciedleniem okna apli- ga zewnętrznych aplikacji systemu Andro-
sku Więcej w menu opcji, w sytuacji, gdy kacji. Komunikacja pomiędzy poszczegól- id, np. poczty elektronicznej, map, wyświe-
przewidujemy użycie większej liczby po- nymi obiektami Activity tej samej a także tlanie stron internetowych.
zycji (Rysunek 1). W tej sytuacji pozycja innych aplikacji, jak i innymi komponen- Jest całkiem naturalne i zrozumiałe, iż
ta będzie nie obiektem klasy MenuItem lecz tami tych aplikacji, jakimi są obiekty kla- za pomocą jednego z wyżej wymienionych
SubMenu. sy android.app.Service (obiekty działa- menu istnieje możliwość otwierania innych
okien aplikacji (obiektów Activity). Zada-
Listing 6. Uruchomienie nowego Activity aplikacji po wybraniu pozycji menu nie to może być zrealizowane przy użyciu
MenuItem itm = menu.add(0, MENU_POZ_1, 0, "Etykieta"); metody setIntent() wywołanej dla obiektu
itm.setIntent(new Intent(this, PhotoPicker.class)); klasy MenuItem we wnętrzu metody onCre-
ateOptionsMenu() lub onCreateContext-
Listing 7. Kod okna dialogowego klasy AlertDialog Menu(), co zostało przedstawione na Listin-
AlertDialog.Builder builder = new AlertDialog.Builder(context); gu 6. Wspomniana metoda setIntent() jako
argument wymaga obiektu klasy Intent, kró-
builder.setTitle("Tytuł okna dialogowego") rego konstruktor z kolei wymaga podania bie-
żącej klasy, z której wysyłany jest komunikat
.setMessage("Dokonaj wyboru") oraz klasy docelowej – reprezentującej obiekt
Activity.

.setPositiveButton("Tak", new DialogInterface.OnClickListener(){ Oprócz komunikatów – obiektów klasy


Intent, za pomocą pozycji menu można uru-
public void onClick(DialogInterface dialog, int which) {} chamiać wiele innych działań, mechanizmów,
}) obiektów – na przykład można uruchamiać
.setNegativeButton("Nie", new DialogInterface.OnClickListener(){ okna dialogowe.
public void onClick(DialogInterface dialog, int which) {}
}) Okno dialogowe
.setNeutralButton("Anuluj", new DialogInterface.OnClickListener( klasy AlertDialog
){ Okna dialogowe są to małe okna pojawiające
public void onClick(DialogInterface dialog, int which) {} się na przodzie aktywnego Activity w ten
sposób, iż traci ono fokus na korzyść okna
}); dialogowego (czyli mają charakter okien mo-
dalnych). SDK Android dostarcza kilka pod-
builder.create().show(); stawowych typów okien dialogowych, któ-
re to wszystkie dziedziczą po klasie andro-
Listing 8. Kod utworzenia okna dialogowego z paskiem postępu id.app.Dialog: AlertDialog, Progress-
ProgressDialog progressDialog = new ProgressDialog(getContext()); Dialog, DatePickerDialog, TimePicker-
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); Dialog. Oczywiście API klasy Dialog do-
progressDialog.setMax(50); starcza narzędzi do stworzenia własnego
progressDialog.setMessage("Kopiuję..."); okna dialogowego. Ponadto istnieje możli-
progressDialog.setCancelable(false); wość stworzenia okna dialogowego na pod-
progressDialog.show(); stawie klasy Activity, co jest nieco bardziej
skomplikowanym zadaniem lecz daje dużo
Listing 9. Utworzenie okna dialogowego typu custom dialog więcej możliwości. Sposób ten zostanie opi-
Context mContext = getApplicationContext(); sany w następnym artykule – w kolejnym nu-
Dialog dialog = new Dialog(mContext); merze magazynu Linux+.
dialog.setContentView(R.layout.custom_dialog); Okno dialogowe klasy AlertDialog
dialog.setTitle("Custom Dialog"); (Rysunek 2) tworzone jest za pomocą kon-
TextView text = (TextView) dialog.findViewById(R.id.text); struktora z klasy AlertDialog.Builder,
text.setText("Hello, this is a custom dialog!"); które wymaga podania argumentu – obiektu
ImageView image = (ImageView) dialog.findViewById(R.id.image); klasy Context (Listing 7). Następnie dla te-
image.setImageResource(R.drawable.android); go konstruktora wywoływane są poszczegól-
ne metody nadające ostateczny kształt okna.

20 luty 2010
Urządzenia mobilne
Kontrolki wizualne w systemie Android – część 3

Tytuł okna dialogowego ustawiany jest nim artykule magazynu Linux+ (01/2010). tivity. Należy jednak pamiętać, iż w odnie-
z użyciem metody setTitle(), komuni- Oznacza to, że elementami wyświetlonej li- sieniu do tej klasy w przypadku przycisków,
kat ustawia metoda setMessage(). Z pew- sty mogą być inne dowolne obiekty, na przy- czy tez innych obiektów klasy View stosu-
nością warto pamiętać o trzech metodach kład obrazki. je się interfejs DialogInteface.OnClickLi-
setPositiveButton(), setNegativeBut- stener, nie zaś android.view.View.OnC-
ton() oraz setNeutralButton(), które do- Okno dialogowe lickListener. To samo dotyczy się interfej-
dają do okna dialogowego przyciski o wła- klasy ProgressDialog su OnKeyListener. Deklarację prostego okna
ściwościach zgodnych z nazwą metody. Okno dialogowe klasy ProgressDialog dialogowego przedstawia Listing 9.
W najprostszej formie metody te wymagają ma za zadanie wyświetlanie postępu wy-
podania kolejno obiektu klasy CharSequen- konywania jakiejś czynności (wątku), któ- Podsumowanie
ce będącego etykietą przycisku, a następnie ry może mieć z góry określony koniec, jak Wszystkie przedstawione powyżej metody
obiektu klasy DialogInterface.OnClic- i jego zakończenie może być nieokreślone. zostały zawarte w projekcie testowej aplika-
kListener będącego implentacją interfejsu W pierwszym przypadku okno dialogowe cji, której spakowane źródła (plik TestPro-
OnClickListener – obsługującego zdarze- zawierać będzie pasek postępu, natomiast ject.zip) znajdują się na płycie DVD dołączo-
nie pojedynczego krótkiego kliknięcia przy- w drugim – charakterystyczne dla Andro- nej do egzemplarza Linux+ w folderze urza-
ciskiem. Gotowe okno dialogowe przed wy- ida koło kręcące się po obwodzie. Domyśl- dzenia_mobilne, podkatalogu kontrolki_cz3.
świetleniem należy zainicjować do czego ne okno ProgressDialog to okno postępu Zapisany tam plik należy rozpakować w do-
służy metoda create(). Metoda ta zwraca bez zdefiniowanego końca. Jeśli chcemy wolnym miejscu na dysku, a następnie utwo-
właściwy obiekt klasy AlertDialog, za wy- uzyskać okno z poziomym paskiem, obiek- rzyć w Eclipse nowy projekt na podstawie źró-
świetlenie którego odpowiedzialna jest me- towi Progres Dialog należy przypisać war- deł, wskazując rozpakowany folder o nazwie
toda show(). Zamknięcie okna dialogowego tość typu int ProgressDialog.STYLE_HO- TestProject.
można wymusić wywołując dla niego meto- RIZONTAL przy zastosowaniu metody set- Zastosowanie przedstawionych w ar-
dę dismiss() lub cancel(), przy czym ta ProgressStyle(). Dla tego typu okna po- tykule metod tworzenia i użytkowania me-
druga metoda wywołuje powstanie zdarze- stępu wartość minimalna to zawsze 0, nato- nu i okien dialogowych znacząco poprawia
nia nasłuchiwanego przez obiekt klasy an- miast wartość maksymalną można ustawić jakość aplikacji poprzez wprowadzenie in-
droid.content.DialogInterface.OnCan- metodą setMax(). Zmianę postępu uzysku- terakcji, co prawie zawsze jest pozytywnie
celListener. Kompletny kod utworzenia je się wywołując metodę setProgress(). odbierane przez użytkownika aplikacji. Na-
i wyświetlenia dialogowego klasy Alert- Za wyświetlenie tego okna dialogowego leży jednak pamiętać, aby nie przesadzić
Dialog prezentuje kod na Listingu 7. odpowiedzialna jest metod show(). Kod z ilością okien dialogowych, gdyż wyskaku-
Okno dialogowe uprzednio omawianej utworzenia okna dialogowego z paskiem jący co chwilę komunikat może jedynie zde-
klasy zamiast komunikatu z odpowiedziami postępu prezentuje Listing 8. nerwować.
w formie przycisków może wyświetlać listę, Wadą okien dialogowych opisanych
w której zaznaczenie pozycji będzie równo- Custom Dialog w tym artykule jest jednak bardzo ogra-
znaczne z dokonaniem wyboru. Lista ta może Jeśli żadna z zaprezentowanych powyżej klas niczony poziom interakcji, ze względu na
mieć zarówno charakter listy łańcuchów tek- nie spełnia naszych oczekiwań, istnieje możli- ograniczenia narzucone przez API klasy
stowych, jak i przycisków typu radio. W celu wość zbudowania własnego okna dialogowego android.app.Dialog. Nie jest możliwe,
dodania listy do okna dialogowego dla obiek- od podstaw. Czynności niezbędne do realizacji na przykład proste stworzenie, za pomo-
tu klasy AlertDialog.Builder wywołuje się tego celu nie są w cale bardziej skomplikowane cą metod przedstawionych powyżej, okna
metodę odpowiednio: od tych zaprezentowanych uprzednio. dialogowego zwracającego łańcuch teksto-
Najlepszym sposobem zbudowania ta- wy wprowadzony przez użytkownika. Ist-
• setItems(CharSequence[], Dialo- kiego okna dialogowego jest użycie definicji nieje na to jednak sposób, który zostanie
gInterface.OnClickListener) lub układu (layout) w dokumencie XML, zgod- przedstawiony w kolejnym artykule po-
• setSingleChoiceItems(CharSequen- nie z tymi samymi zasadami, jak w przypadku święconym programowaniu dla systemu
ce[], int domyslny_wybor, Dialo- obiektu Activity. Tak więc elementem głów- Android.
gInterface.OnClickListener). nym układu musi być obiekt dziedziczący po
klasie ViewGroup, np. któryś z obiektów okre-
Nic nie stoi na przeszkodzie, aby okno dia- ślających układ, np. LinearLayout. Dalszym
logowe zawierało zarówno listę, jak i przy- krokiem będzie utworzenie obiektu klasy Dia-
ciski, jak zaprezentowano to na Rysunku 3. log. Konstruktor tej klasy jako podstawo- O autorze
Aby uzyskać takie rozwiązanie należy dla wy argument wymaga obiektu klasy Context
Grzegorz Madajczak jest z wykształce-
obiektu klasy AlertDialog.Builder wy- (jak wszystkie kontrolki graficzne). Następnie,
nia lekarzem weterynarii i mikrobiolo-
wołać zarówno metodę np. setSingleCho- w odniesieniu do nowo utworzonego obiektu
giem. Linuksem i ogólnie oprogramowa-
iceItems(), jak i jedną z metod dodającą Dialog wywołujemy poznaną wcześniej me-
niem OpenSource pasjonuje się od 2001
przycisk. Wspomniana już dwukrotnie me- todę setContentView(), której argumentem
roku. Na co dzień używa Linuksa zarówno
toda setSingleChoiceItems() ma alter- będzie na przykład wartość typu int – identy-
w pracy, jak i w domu. Jego ulubione dys-
natywną wersję do zaprezentowanej, w któ- fikator zasobu zawierającego definicję układu
trybucje to Gentoo i Slackware.
rej to tablica obiektów CharSequence jest (stała z podklasy R.layout). Dalsze postępo-
Kontakt z autorem:
zastąpiona obiektem klasy ListAdapter, wanie niczym nie różni się w porównaniu do
madajczak@gmail.com
o którym to pisałem więcej w poprzed- obsługi definicji układu dla obiektu klasy Ac-

www.lpmagazine.org 21
Urządzenia mobilne
Bezpieczeństwo w systemie Android

Bezpieczeństwo
w systemie Android
Grzegorz Madajczak

Należy pogodzić się z faktem, iż im bardziej skomplikowane systemy operacyjne sterują urządzeniami
typu telefon, czy PDA, tym większe prawdopodobieństwo, iż dane zgromadzone na takim urządzeniu
mogą ulec utracie, co może mieć poważne konsekwencje finansowe, a już na pewno jest kłopotliwe.
Dlatego też należy powziąć wszelkie środki ostrożności, aby uchronić się przed tym.

D
linux@software.com.pl

o bezpieczeństwa danych zgromadzo- uwadze nie tylko funkcjonalność programu, czy ogól-
nych w telefonie z systemem Andro- ne wrażenie typu bo się podoba, lecz także to czy stoi za
id należy podejść dwojako. Po pierwsze nim duża, znana na rynku firma, czy też pojedynczy de-
za bezpieczeństwo danych odpowiedzial- weloper. Nie chcę przez to powiedzieć, iż aplikacje po-
ny jest sam użytkownik, zarządzający ryzykiem zwią- chodzące od deweloperów-amatorów są niebezpiecznie,
zanym z przechowywaniem na tym urządzeniu jakich- a marka firmy gwarantem braku zagrożenia. Chciałbym
kolwiek dla niego krytycznych danych. Druga płasz- jedynie zwrócić uwagę, iż statystycznie rzecz ujmując
czyzna bezpieczeństwa związana jest z zabezpiecze- amatorskie aplikacje częściej sprawiają kłopoty, niż te
niami samego systemu i jakością dodatkowych apli- firmowe. Takie podejście ma szczególne znaczenie przy
kacji. Tak więc rozpoczynając dyskusję o bezpieczeń- braku kontroli ze strony Google nad jakością programów
stwie danych w systemie Android, przyjrzyjmy się, co w Markecie, co przerzuciło cały ciężar odpowiedzial-
może zrobić sam użytkownik, a następnie za co odpo- ności za jakość umieszczanego tam oprogramowania na
wiedzialny jest programista. twórców i użytkowników. Sprawia to, iż firmy, zwłasz-
cza w odniesieniu do płatnych aplikacji, kładą więk-
Na początku jest Market szy nacisk na jakość publikowanego oprogramowania,
Przede wszystkim, na telefonie z Androidem (jak na wiedząc że od tego zależą ich zyski. Programista ama-
każdym innym komputerze) aby zapewnić sobie stabil- tor – twórca drobnej aplikacji nie ma odpowiednich za-
ną pracę urządzenia z Androidem, należy instalować je- sobów na przetestowanie swojego programu (czynność
dynie sprawdzone aplikacje, pochodzące od godnych za- tą często przerzuca na użytkowników, wypuszczając na
ufania dostawców i oczywiście legalne. Tak więc podej- przykład wersje beta oprogramowania). Jednak należy
mując decyzję o zakupie (???) czy pobraniu darmowej od razu dodać, iż w obu kategoriach twórców zdarzają
aplikacji z Marketu lub innego źródła należy mieć na się chlubne i niechlubne wyjątki.

22 luty 2010
Urządzenia mobilne
Bezpieczeństwo w systemie Android

Jak więc rozeznać się w gąszczu tysięcy Zrootowany telefon cji zainstalowanych na karcie pamięci w ra-
aplikacji opublikowanych w Markecie, wie- Nadzór nad wspomnianymi uprzednio mach App2SD. Pomimo tych kilku nieznacz-
dząc, iż potencjalnie każda z nich, a zwłasz- uprawnieniami aplikacji jest szczególnie nych wad, generalnie rzecz ujmując jest to
cza ta nieznana, niesie ze sobą zagrożenie? istotny w przypadku programów wyko- podstawowa aplikacja dla każdego, kto dba
W ocenie sytuacji bardzo pomocne będą ran- rzystujących dostęp do konta administra- o bezpieczeństwo, a w szczególności jeśli do-
kingi aplikacji i komentarze zamieszczane tora (w zrootowanym Androidzie). Na ca- konuje mniej lub bardziej częstych update-
w Markecie. Jednak czytając te wypowie- łe szczęście tu z pomocą przychodzi znany ów systemu.
dzi nie sposób oprzeć się wrażeniu, że do- chyba wszystkim, posiadającym złamanego Pewnych wad programu Nandroid pozba-
świadczenia związane z ocenianym progra- Androida, program superuser, który zarzą- wiona jest aplikacja Backup for root users do-
mem mają charakter czarno-biały, co mnie dza uprawnieniami administratora w stosun- stępna za darmo w Markecie. W założeniu
wcale nie dziwi. Użytkownik zada bowiem ku do aplikacji wymagają. Przy pierwszym aplikacja ta powinna tworzyć kompletne zrzu-
sobie trud wklepania tych kilku słów tylko uruchomieniu aplikacji program ten bę- ty z systemu – zapisywać nie tylko kontakty
w sytuacji silnych emocji – negatywnych lub dzie pytał się czy wyrazić zgodę na korzy- czy zdarzenia z kalendarza, lecz także zapisa-
też pozytywnych – nigdy obojętnych. Nie za- stanie z tego typu uprawnień dla danej apli- ne wiadomości, ustawienia i aplikacje z karty
wsze więc uda się znaleźć tam obiektywną kacji. Raz przydzielone na stałe prawa moż- SD. Mam jednak wrażenie, poparte doświad-
opinię na temat aplikacji. Myślę, że dobrym na w każdej chwili odwołać. Ja jednak po- czeniami ze strony innych użytkowników te-
wskaźnikiem oceniającym aplikacje, lecz je- stawię w tej sytuacji dość przekorne pyta- go programu, iż opisywana aplikacja popraw-
dynie płatne, byłby stosunek pobrań do zwro- nie – ilu z użytkowników zastanawia się nad nie radzi sobie jedynie z kontaktami oraz za-
tów. Market ma bowiem tą zaletę, iż pozwa- tym procesem? Myślę, że większość machi- pisem aplikacji – z ich odtworzeniem jest już
la na zwrot zakupionej aplikacji (i odzyska- nalnie naciska przycisk always allow w ogó- problem. Dlatego też nie szczególnie polecam
nie zapłaconych za nią pieniędzy) w ciągu 24 le nie zastanawiając się nad konsekwencja- tą aplikację.
godzin od dokonania transakcji. Z drugiej zaś mi tego co robi. Zdecydowanie lepiej sprawuje się aplika-
strony wskaźnik ten byłby jedynie miarą za- cja MyBackup dostępna za darmo w Marke-
dowolenia z aplikacji, nie koniecznie zaś jej Backup cie w wersji 30-dniowej. Aplikacja ta (rysu-
bezpieczeństwa. danych w systemie Android nek 2) pozwala na zapisanie zgromadzonych
Tak więc, jak widać użytkownik jest cał- Podstawową metodą ochrony danych zgro- danych i aplikacji zarówno na karcie SD, jak
kowicie osamotniony, jeśli chodzi o koniecz- madzonych na telefonie jest odpowiednio i na serwerze dostawcy programu. Aplikacja
ność podjęcia decyzji przed zakupem. Póź- częsty ich backup. W zależności od zakresu dobrze radzi sobie ze wszystkimi elementa-
niej jest już nieco lepiej. Jeśli aplikacja stwa-
ochrony danych użytkownik ma do dyspozy- mi systemu – prawidłowo je odtwarzając.
rza jakiekolwiek potencjalne zagrożenie dla cji różne programy. Pierwszym i podstawo- Dodatkowo program, w przeciwieństwie do
użytkownika, na przykład poprzez dostęp do wym rozwiązaniem, z którego może skorzy- Nandroid daje możliwość dostosowania za-
zgromadzonych danych, czy zasobów (za- stać każdy użytkownik jest oczywiście syn- kresu archiwizowanych danych, wykonywa-
równo sprzętowych, jak i programowych), chronizacja z kontem Google. Pozwala to nia backupów zgodnie z ustalonym harmono-
na pierwszym etapie instalacji użytkownik jednak jedynie na archiwizację kontaktów, gramem, a także zarządzania zapisanymi bac-
zostanie o tym poinformowany (Rysunek 1) wiadomości z konta GMail oraz pozycji ka- kupami. MyBackup jest aplikacją jak najbar-
oraz musi wyrazić zgodę na te działania. lendarza. Nie ma możliwości backupowania dziej godną polecenia – wartą tych niecałych
innych danych. 5 $, które trzeba zapłacić za pełną wersję (za-
Dla zrootowanego systemu najbardziej kupu można dokonać także poza Marketem).
przydatnym programem archiwizującym jest Wadą programu jest fakt, iż do działania wy-
Nandroid Backup – obecnie w wersji 2.2, któ- maga połączenia z siecią – aplikacja bowiem
ry to jest standardowym składnikiem cyano- przy każdym uruchomieniu przez sieć spraw-
gen recovery 1.4. Zaletą Nandroid Backup dza swą legalność, łącząc się z serwerem do-
jest to, że tworzy on kompletny obraz sys-
temu – zawierający zapis wszystkich danych
systemowych, ustawień, danych użytkowni-
ka zapisanych w pamięci telefonu. Wadą te-
go rozwiązania jest fakt, iż działa on z po-
ziomu recovery, co dla niektórych użytkow-
ników może być trudne do wykonania. Z dru-
giej zaś strony, wychodzę z założenia, że jeśli
ktoś podjął się zrootowania systemu – nawet
metodą one click, bez problemu da sobie radę
z semigraficznym menu cynaogen recovery.
Drugą wadą programu jest to, że użytkownik
tworząc kolejne backupy nie ma możliwo-
ści wybrania konkretnego obrazu do odtwo-
rzenia, gdyż Nandroid Backup odtwarza sys-
Rysunek 1. Ostrzeżenie dotyczące bezpieczeństwa tem jedynie na podstawie najnowszego zapi-
podczas instalacji programu MeridianPlayer su. Program ten również nie zapisuje aplika- Rysunek 2. Główne okno programu MyBackup

www.lpmagazine.org 23
Urządzenia mobilne
Bezpieczeństwo w systemie Android

stawcy. Dla osób o limitowanym transferze wia, iż zawsze jest wiadomo, kto jest twór- free oraz rozszerzoną płatną wersję progra-
danych może to być kłopotliwe. cą aplikacji. mu pro. Wersja darmowa pozwala na ska-
Brak wirusów w Androidzie nie prze- nowanie pakietów, zgromadzonych mediów,
Wirusy w systemie Android szkadza jednak niektórym w sprzedaży a także całego systemu. Co ciekawe pro-
Zawsze jako przykład wyższości systemu oprogramowania antywirusowego na tą gram ten skanuje również ustawienia, wy-
Linux nad innymi OSami podaję brak wi- platformę. Przykładem na to może być pro- szukując za pewne ich niebezpieczne mody-
rusów dla tego systemu. Pomimo pojawia- gram SMobile Anti-Theft and Identity Pro- fikacje. W moim G1 znalazł on jedno takie
jących się od czasu do czasu doniesień na tection oferowany przez firmę SMobile – zgodę na instalację pakietów spoza Marke-
ten temat, jak na razie możemy sytuację tą Systems (http://www.smobilesystems.com). tu (unknown sources). Program oczywiście
uznać za prawdziwą. Nie biorę tu bowiem Pomimo starań nie udało mi się znaleźć proponował mi rozwiązanie tego problemu
pod uwagę na przykład wirusów w makrach informacji przed jakimi wirusami chroni (Rysunek 3). Doprawdy żałosne... Również
OpenOffice.org, gdyż te są niezależne od użytkownika ta apikacja. Na stronie starto- i w tym programie, pomimo usilnych starań
systemu na którym ten pakiet jest zainsta- wej portalu firmowego czytamy o ochronie nie udało mi się ustalić, przed jakiego rodza-
lowany. Należy więc odpowiedzieć sobie, przed wirusami i programami szpiegujący- ju wirusami uzyskujemy zabezpieczenie in-
czy tak samo można powiedzieć o systemie mi. Jednak szukając głębiej znajduje się już stalując aplikację antiVirus.
Android – kuzynie Linuksa z PC, zwłaszcza informację, iż program ten chroni przed Kolejną firmą która stara zarobić się na za-
w kontekście pojawiających się co chwila tzw. szkodliwymi programami (maleware) gadnieniach bezpieczeństwa w systemie An-
doniesień o wirusach na Windows Mobile, i utratą danych w wyniku kradzieży apara- droid jest Mocana (http://www.mocana.com),
czy Symbiana. W przypadku tego ostatnie- tu. Trudno jest więc mówić o ochronie an- która udostępnia pakiet Mocana’s Device Se-
go sam doświadczyłem szkodliwego działa- tywirusowej... curity Framework. Jest to komplet biblio-
nia aplikacji na Nokii, która za wszelką cenę Wspomniana firma wypuściła rów- tek opracowanych dla urządzeń mobilnych,
chciała się łączyć z zagranicznym numerem, nież program o nazwie VirusGuard na w tym dla systemu Android dostarczających
narażając mnie na poważne konsekwencje platformę G1, który to zgodnie z infor- takie elementy jak biblioteka algorytmów
finansowe. Czy taka sytuacja jest możliwa macją producenta chroni przed ponad szyfrowania Mocana FIPS Certified Crypto
w Androidzie? 400 szkodliwymi programami, np. wiru- Libraries, dostarczająca między innymi ta-
Jak na razie z całą stanowczością na- sy, trojany (informacje za AndroidGear kie algorytmy jak RSA, AES, Blowfish, Dif-
leży przyznać, iż Android jest obecnie naj- – http://www.androidgear.com/en/eur/pro- fie-Hellman, 3DES, DSA, takie programy jak
bezpieczniejszym systemem na urządzenia duct.html?prodid=1379151&prodtab=deta- klient SSH, klient SSL, menadżer certyfika-
mobilne. Dzieje się tak za sprawą opisa- ils). Niestety producent już nie pokusił się tów, program chroniący system przed złośli-
nego uprzednio mechanizmu piaskownicy, o podanie bardziej szczegółowych informa- wym oprogramowaniem, czy obsługę WPA2.
który oznacza, że aplikacja może uszkodzić cji na temat zawartości bazy. Ja osobiście Trzeba przyznać, że to, co oferuje Mocana
co najwyżej siebie samą. Zaletą jest rów- podzielam zdanie Johna Herrmana – autora w porównaniu do do poprzednio opisywanych
nież to, iż wszelkie niebezpieczne działa- artykułu na stronach portalu Gizmodo (http: firm brzmi rozsądnie. Firma nie oferuje gru-
nia, wykraczające poza wspomniany me- //gizmodo.com/5078158/oh-thank-good- szek na wierzbie, lecz konkretne rozwiązania,
chanizm muszą uzyskać zezwolenie jesz- ness-someone-made-an-antivirus-app-for- które mogą poprawić bezpieczenstwo systemu
cze na etapie instalacji. Tak więc nie spo- android) poświęconego temu programowi. Android. Dobrym przykładem na to może być
sób jest stworzenie aplikacji, która po kry- Wspomniany autor wyraża opinię, iż pro- wchodzący w skład opisywanego pakiety pro-
jomu wprowadzi niekorzystne dla użyt- gram ten jest kompletnie bezużyteczny. Po-
kownika modyfikacje w systemie. Jedyną dobną opinię można było znaleźć na wielu
teoretyczną możliwością, stwarzającą po- innych portalach internetowych poświęco-
tencjalne niebezpieczeństwo, jest instala- nych Androidowi i nie tylko. Myślę, że sa-
cja natywnych aplikacji (nie działających ma firma SMobile Systems zrozumiała brak
za pośrednictwem DVM) w systemie, które sensu istnienia (a tym bardziej sprzedaży)
nie podlegają ograniczeniom mechanizmu programu VirusGuard, gdyż wycofała się
piaskownicy. Jednak działanie takie prze- z jego rozpowszechniania.
kracza możliwości przeciętnego użytkow- Fakt braku istnienia wirusów dla sys-
nika Androida. Dodatkowym zabezpiecze- temu Android nadal nie przyjmuje do
niem przed wirusami jest konieczność pod- wiadomości firma DroidSecurity (http:
pisywania aplikacji, o czym napiszę więcej //www.droidsecurity.com/), która proponuje
w dalszej części artykułu. Wymóg ten spra- między innymi darmowy program antiVirus

Listing 1. Kod przykładowego znacznika <uses-permisions> z manifestu aplikacji Android, wnioskują-


cego o uprawnienia do odczytu nadchodzących SMSów

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.android.app.myapp" >
<uses-permission android:name="android.permission.RECEIVE_SMS" />
</manifest> Rysunek 3. antiVirus free znalazł u mnie niebez-
pieczne ustawienie...

24 luty 2010
Urządzenia mobilne
Bezpieczeństwo w systemie Android

gram NanoBoot, który pozwala na sprawdze- kownika (takich jak kontakty czy e-ma- mentów <uses-permission> wnioskują-
nie przed startem systemu, czy nie uległ on il), a także funkcje wejścia/wyjścia danych cych o uprawnienia na potrzeby aplikacji.
zmianie od poprzedniego razu, co mogłoby z lub do innych aplikacji czy plików. Do- Przykładowy kod tego znacznika, wnio-
wskazywać na atak. myślnie aplikacje nie mają również możli- skujący o możliwość odczytu nadchodzą-
Jednak uczciwie trzeba zaznaczyć, iż wości łączenia się z siecią, czy też budze- cych SMSów został zaprezentowany na li-
część z oferowanych rozwiązań już wchodzi nia urządzenia ze stanu uśpienia. Ponad- stingu 1. Zakres uprawnień aplikacji okre-
w skład zrootowanego lub może być z łatwo- to proces każdej aplikacji jest zamknię- ślany jest wartością atrybutu android:na-
ścią doinstalowana w postaci dodatkowych ty w tak zwanej piaskownicy (ang. sand- me, która to zawsze składa się z pierw-
pakietów. Przykładem na to jest klient SSH, box), czyli wydzielonym obszarze systemu szej części android.permissions, a następ-
który jest standardowym elementem Termi- Android, dzięki czemu nie wpływa na pra- nie kodu uprawnienia po kropce. Ze wzglę-
nala w systemie Android lub może występo- cę innych aplikacji. Wyjątkiem są sytuacje, du na znaczną długość listy tychże kodów,
wać w postaci niezależnej aplikacji Connect- w których wyraźnie określone uprawnienia nie będę umieszczał ich na łamach tego ar-
Boot. Podobnie ma się rzecz z innymi klienta- rozszerzają możliwości aplikacji – wykra- tykułu. Zainteresowanych odsyłam do do-
mi: SSL, TSL. Co prawda w ulotce reklamo- czające poza reguły piaskownicy. Upraw- kumentacji SDK. Szczegółowa lista kodów
wej firma przechwala się, że ich implementa- nienia te nadawane są zwykle automatycz- znajduje się również pod adresem http://
cje OpenSource-owych programów są stabil- nie na podstawie certyfikatów przyznanych developer.android.com/reference/android/
niejsze i zdecydowanie szybsze, niż darmo- aplikacji lub poprzez zgodę użytkownika. Manifest.permission.html.
we odpowiedniki, dzięki zastosowaniu opa- Wniosek o przyznanie tych uprawnień (wy- Jeśli lista uprawnień, o które wnioskuje
tentowanej technologii Mocana Accelera- kraczających poza piaskownicę) wymaga- aplikacja jest niewystarczająca, istnieje moż-
tion Harness, która zgodnie z zapewnienia- nych przez aplikację zgłaszany jest w trak- liwość stworzenia nowego – na bazie zdefinio-
mi producenta, na niektórych platformach cie instalacji i nie ma możliwości, aby ule- wanego przez twórców systemu. Służy do tego
daje 400% wzrost wydajności w porówna- gły one później zmianie. znacznik <permission>. Składnię tego znacz-
niu do OS-owych rozwiązań. Chciałbym to Dodatkowo plik każdego zainstalowane- nika przedstawia Listing 2.
zobaczyć... Bo na razie tylko wątpię w te za- go pakietu Android posiada własny unikalny Pierwszy z atrybutów znacznika <per-
pewnienia. identyfikator użytkownika (znany z Linuksa mission> – android:name – zawiera na-
Generalnie rzecz ujmując, jak na razie UID), który jest niezmienny przez cały okres zwę uprawnienia, która powinna składać się
wszelkie programy antywirusowe dla systemu bytności aplikacji na danym urządzeniu. z nazwy pakietu tworzonej aplikacji i z na-
Android są niczym innym, jak wyciąganiem Konsekwencją tego jest fakt, iż kod dwóch zwy szczegółowej uprawnienia. Kolejny
od potencjalnych nieświadomych użytkowni- różnych aplikacji nie może działać w ramach atrybut – android:label – określa etykie-
ków pieniędzy. Każdy, kto cokolwiek wie na jednego procesu, do czego wymagany jest tę uprawnienia. Wartość tego atrybutu mo-
temat Linuksa, a tym bardziej systemu Andro- ten sam UID. Możliwe jest jednak wymu- że być odwołaniem do zasobów lub też łań-
id, zdaje sobie sprawę, że programy te to nic szenie na systemie nadania tego samego UID cuchem tekstowym. Podobnie rzecz ma się
innego, jak obiecywanie gruszek na wierzbie, dwóm lub więcej pakietom, poprzez skorzy- z atrybutem android:description – za-
albo sprzedawanie w Afryce ubezpieczenia na stanie w manifeście pakietu (dokument An- wierającym opis uprawnienia. Atrybut an-
wypadek śnieżycy. droidManifest.xml) ze znacznika <sharedU- droid:permissionGroup odwołuje się do
serId>. W ten to sposób dwa pakiety będą zdefiniowanych grup uprawnień (więcej
Bezpieczeństwo miały te same uprawnienia – nadane podczas na ten temat http://developer.android.com/
aplikacji w systemie Android instalacji pierwszej z nich na podstawie jed- reference/android/Manifest.permission_
Głównym założeniem architektury bezpie- nego wniosku group.html). Ostatni z atrybutów andro-
czeństwa w systemie Android jest to, iż Wszystkie informacje na temat upraw- id:protectionLevel – jedyny wymagany
żadna aplikacja, domyślnie nie ma upraw- nień, o które wnioskuje aplikacja w trak- – określa poziom uprawnień. System An-
nień do wykonywania jakichkolwiek dzia- cie instalacji zawarte są w jej manifeście droid definiuje cztery poziomy uprawnień
łań, które mogłyby mieć negatywny wpływ – dokumencie AndroidManifest.xml, two-
na inne aplikacje, sam system operacyjny rzonym przez dewelopera na etapie prac
lub jakiekolwiek dane użytkownika. Ogra- nad programem. Aby korzystać z chronio-
niczenie to obejmuje uprawnienia do od- nych funkcji urządzenia, należy uwzględ-
czytu i zapisu prywatnych danych użyt- nić w manifeście jeden lub więcej ele-

Listing 2. Kod przykładowego znacznika <permission>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.me.app.myapp" >
<permission android:name="com.moja_aplikacja.DEADLY_ACTIVITY"
android:label="@string/permlab_deadlyActivity"
android:description="@string/permdesc_deadlyActivity"
android:permissionGroup="android.permission-group.COST_MONEY"
android:protectionLevel="dangerous" />
</manifest> Rysunek 4. Okno kreatora klucza prywatnego
wchodzącego w skłąd wtyczki

www.lpmagazine.org 25
Urządzenia mobilne
Bezpieczeństwo w systemie Android

– normal, dangerous, signature, signature- cę. Należy również zwrócić uwagę, iż apli- rzony), czy też ma utworzyć nowy. Jeśli
OrSystem. Pierwszy z nich określa upraw- kacja w czasie tworzenia przed jej instala- dotychczas nie stworzyliśmy klucza, nale-
nienia, o niskim stopniu ryzyka dla innych cją na czas testów jest również podpisywa- ży zaznaczyć opcję Create new key i przejść
aplikacji, systemu, czy użytkownika. Po- na, lecz przez klucz generowany przez SDK dalej do kreatora (Rysunek 4). W kreatorze
ziom dangerous prezentuje wyższe ryzyko, – w tak zwany trybie debug_mode. Niedo- należy wprowadzić obowiązkowo takie da-
polegające na umożliwieniu aplikacji dostę- puszczalne jest publikowanie tak podpisa- ne, jak alias klucza (wykorzystywany do
pu do prywatnych danych użytkownika lub nych aplikacji, choć ich instalacja będzie późniejszej jego identyfikacji przy powtór-
urządzenia, co może wpłynąć negatywnie nadal możliwa. nym zastosowaniu), hasło, które należy po-
na użytkownika. Poziom signature stoso- Jak wspomniałem, deweloper na eta- twierdzić oraz czas ważności klucza (zaleca-
wany jest w sytuacji, gdy aplikacja odwołu- pie tworzenia aplikacji nie musi martwić się ny czas to 25 lat). Pozostałe dane, takie jak
je się do danych drugiej aplikacji o tym sa- o jej podpisywanie, gdyż proces ten jest cał- imię i nazwisko, nazwa organizacji, czy lo-
mym UID. Ostatni z poziomów – signatu- kowicie zautomatyzowany i przeprowadza- kalizacja, nie są wymagane. Proces podpisy-
reOrSystem oznacza, iż aplikacja może od- ny przez wtyczkę ADT w Eclipse. Jednak, wania aplikacji zakańczamy podając lokali-
woływać się do danych innej aplikacji o tym gdy aplikacja jest już gotowa do publikacji zację gotowego pakietu.
samym UID lub do danych zgromadzonych należy podpisać ją w trybie release_mode.
w plikach systemowych. Po więcej informa- Aby dokonać tego można posłużyć się na- Podsumowanie
cji na temat poziomów uprawnień odsyłam rzędziami wchodzącymi w skład SDK, naj- Jak widać zapewnienie bezpieczeństwa
do dokumentacji SDK Android lub pod ad- pierw generując certyfikat, a następnie pod- w systemie Android jest procesem złożo-
res http://developer.android.com/reference/ pisując nim aplikację – wszystko z linii po- nym, wymagającym uwagi zarówno ze
android/R.attr.html#protectionLevel. leceń. Chociaż jestem zapalonym konso- strony twórcy aplikacji, jak i jej końcowe-
lowcem to nie widzę powodu, aby nie po- go użytkownika. Obowiązkiem dewelopera
Podpisywanie aplikacji służyć się o wiele wygodniejszym w użyciu jest takie napisanie aplikacji, aby nie stwa-
Kolejnym poziomem bezpieczeństwa sys- narzędziem do eksportowania gotowej apli- rzała ona zagrożeń, a jeśli potencjalnie ta-
temu Android to wymóg podpisywania kacji (Export Wizard) wchodzącym w skład kowe istnieją – poinformowanie o tym użyt-
wszystkich instalowanych aplikacji za po- wtyczki ADT Eclipse. Narzędzie to uru- kownika poprzez system uprawnień okre-
mocą certyfikatu, którego klucz prywatny chamiamy poleceniem Export z menu File. ślonych w manifeście. Deweloper powinien
jest w posiadaniu twórcy aplikacji. System Z rozwijanej listy w oknie kreatora eksportu ponadto pamiętać, iż prawidłowe określe-
Android korzysta z certyfikatu jako sposo- należy wybrać pozycję Export Android Ap- nie uprawnień w manifeście aplikacji, zgod-
bu na identyfikację autora aplikacji oraz po- plication z folderu Android. Uruchomi to nie z opisanym pokrótce powyżej schema-
zwala na ustanowienie relacji zaufania po- kreatora, który przeprowadzi użytkownika tem jest istotne z tego względu, iż błędy mo-
między aplikacjami. Certyfikat natomiast przez kolejne kroki utworzenia certyfikatu, gą skutkować wystąpieniem wyjątku klasy
nie jest używany do sprawowania kontroli, jego podpisania oraz podpisania nim aplika- java.lang.SecurityException w sytu-
nad uprawnieniami użytkownika do instala- cji. W pierwszym kroku należy wybrać pro- acji, gdy aplikacja odwoła się do nieupraw-
cji pakietów. Ważne jest to, iż certyfikat nie jekt, który chcemy eksportować. Następnie nionych zasobów. To zaś, jak łatwo się do-
musi być podpisany przez urząd certyfikacji. kreator zapyta się, czy będziemy chcieli po- myśleć może przerwać działanie aplikacji.
System Android akceptuje certyfikaty typu służyć się już istniejącym kluczem prywat- Również używanie właściwego certyfika-
self-signed – tj. podpisane przez jego twór- nym (jeśli takowy został uprzednio utwo- tu (release_mode) podnosi poziom bezpie-
czeństwa poprzez możliwość odtworzenia
autora aplikacji.
Tworzenie klucza prywatnego i podpisywanie aplikacji w konsoli Natomiast użytkownik powinien pamię-
Do utworzenia klucza prywatnego z poziomu konsoli służy narzędzie keytool wchodzą- tać, iż nawet najlepiej napisana aplikacja, po-
cego w skład JDK. Podstawowa składnia tego polecenia wygląda następująco: keyto- chodząca od najbardziej zaufanego dostaw-
ol -genkey -v -keystore klucz-prywatny.keystore -alias alias_klucza -keyalg cy jest na tyle bezpieczna, na ile pozwoli jej
RSA -validity 10000. Flaga -genkey oznacza, że chcemy utworzyć klucz. Flaga -key- użytkownik i nic nie zwalnia go z obowiąz-
store wskazuje na plik, w którym będzie przechowywany klucz. Wartość flagi -alias to ku z systematycznej archiwizacji gromadzo-
alias klucza pozwalający na jego identyfikację. Flaga -keyalg określa algorytm szyfrowa- nych danych.
nia klucza (dostępny jest DSA oraz zalecany silniejszy RSA). Ostatnia z użytych flag -va-
liditi określa ważność klucza w dniach (zalecana wartość to 10000 i więcej).
Do podpisania aplikacji należy posłużyć się narzędziem jarsigner, będącym również stan- O autorze
dardowym składnikiem JDK. Podstawowa składnia tego polecenia wygląda następują-
Grzegorz Madajczak jest z wykształce-
co: jarsigner -verbose -keystore my-release-key.keystore my_application.apk
nia lekarzem weterynarii i mikrobiolo-
alias_name.
giem. Linuksem i ogólnie oprogramowa-
Ostatecznie podpisany pakiet należy zoptymalizować przy zastosowaniu narzędzia zi-
niem OpenSource pasjonuje się od 2001
palign, tym razem wchodzącego w skład SDK Android (w folderze tools), nie zaś, jak po-
roku. Na co dzień używa Linuksa zarówno
przednie – JDK. Polecenie to wygląda następująco: zipalign <alignment> infile.apk
w pracy, jak i w domu. Jego ulubione dys-
outfile.apk, gdzie to podpisany pakiet, a outfile.apk to zoptymalizowany pakiet, nato-
trybucje to Gentoo i Slackware.
miast <alignment> jest liczbą całkowitą, która określa bajt graniczny wyrównania. Mu-
Kontakt z autorem:
si to być zawsze 4.
madajczak@gmail.com

26 luty 2010
Rozwiązania
SPARQL

SPARQL
Język zapytań
dla semantycznych baz danych
Piotr Orzeszek
Język zapytań SPARQL stanowi jeden z kluczowych standardów w ramach technologii Semantic
Web. Wdrożenie Semantic Web pozwoli na przejście od Internetu opartego na tekście, na rzecz
Globalnej Sieci opartej na wiedzy i związkach semantycznych. Współczesne nam wyszukiwarki
umożliwiają przeszukiwanie dokumentów WWW pod kątem zawartego tekstu. Semantic Web umożliwi
zaś automatyczne poszukiwanie i organizowanie zbiorów informacji. Językiem zapytań na wzór SQL
przeznaczonym dla semantycznych baz danych jest właśnie SPARQL.

C
linux@software.com.pl

hcąc przybliżyć czytelnikom Linux+ czym umożliwienie maszynowego przetwarzania abstrak-


jest SPARQL (ang. SPARQL Protocol and cyjnych opisów zasobów w sposób automatyczny, co
RDF Query Language) należałoby rozpo- w założeniu ma pozwolić na rozumienie przez kom-
cząć od tego, że jest to strukturalny język putery znaczenia treści udostępnianych w Interne-
zapytań. Co niektórzy z Was zapewne znają dobrze in- cie. RDF może więc służyć zarówno do wyszukiwa-
ny język zapytań – powszechnie wykorzystywany SQL nia danych udostępnianych poprzez sieć, jak i śledze-
(ang. Structured Query Language). SPARQL podobnie nia informacji na dany temat. W tym sensie globalna
jak SQL jest językiem zapytań do baz danych. Nie są to sieć może być określana jako gigantyczna semantycz-
jednak dobrze znane nam bazy danych działające w mo- na baza danych.
delu relacyjnym i implementowane z wykorzystaniem Czym jest semantyczna baza danych? Można ją opi-
produktów takich jak MySQL, PostgreSQL czy systemu sać jako dynamicznie tworzoną strukturę rozproszonych
baz danych firmy Oracle. zasobów informacyjnych, w której opis zasobu odbywa
Warto zaznaczyć, że SPARQL używa podobnego ze- się za pomocą wyrażenia składającego się z trzech ele-
stawu słów kluczowych jak SQL. Istotną natomiast róż- mentów: podmiotu, predykatu i obiektu.
nicą jest to, iż jest językiem zapytań do semantycznych Co nader interesujące, zależności te rozumiane są
baz danych. nie tylko przez człowieka, ale także przez maszynę. Se-
SPARQL jest językiem zapytań i protokołem dla mantyczne struktury danych można tworzyć i publiko-
plików RDF (ang. Resource Description Framework). wać w postaci dokumentów RDF, OWL, a nawet od-
Standard RDF stanowi specyfikację modelu metada- powiedniego otagowania w kodzie HTML. Tworzy się
nych, implementowaną zazwyczaj w języku XML słu- również ontologie, czyli zbiory twierdzeń zapisanych na
żącą udostępnianiu tych danych między innymi za przykład w RDF, definiujące relacje pomiędzy pojęciami
pośrednictwem sieci Internet. Założeniem RDF jest oraz wyznaczające logiczne reguły wnioskowania. Dzię-

28 luty 2010
Rozwiązania
SPARQL

ki temu komputer jest w stanie, nie tylko od- semantyczną wersję Wikipedii – http: historii Polaków, w tym rodzimych poetów.
powiadać na zapytania do bazy danych, lecz //www.dbpedia.org/. Pokażę pokrótce jak for- Następnie należałoby samodzielnie zebrać
samodzielnie wyprowadzać wnioski. mułować zapytania w języku SPARQL by wszystkie te daty i na przykład w arkuszu
Warto zaznaczyć, że tak rozumiana ba- wydostać dane, które byłyby trudne do od- kalkulacyjnym wykonać niezbędne podsu-
za danych nie musi być przechowywana na nalezienia z użyciem konwencjonalnych wy- mowanie. Czy naprawdę nie ma prostsze-
konkretnym serwerze i związana z jedną szukiwarek. Znalezienie ich za pomocą po- go sposobu?
określoną lokalizacją. Należy ją raczej rozu- wszechnie używanego interfejsu Wikipedii Szkoda, że nie można od tak po prostu
mieć jako chmurę uporządkowanych danych byłoby natomiast z pewnością procesem nad zapytać Globalnej Sieci «Którzy z polskich
rozproszoną w wielu serwisach. Choć za- wyraz mozolnym. poetów urodzili się po 1736 roku w Krako-
sadniczo dane w formie dokumentów RDF Załóżmy, że poszukujemy informacji wie?», a następnie uzyskać po kilku sekun-
udostępniane są poprzez indywidualne ser- o polskich poetach. Popularne wyszuki- dach odpowiedzi. Czy aby na pewno nie
wisy to tworzone przez nas zapytania w ję- warki internetowe bardzo dobrze spełnią można? Spróbujemy sformułować powyższe
zyku SPARQL wcale nie muszą ograniczać swoją rolę tylko wtedy, gdy wprowadzimy zapytanie z użyciem języka SPARQL.
się do pojedynczych witryn. W tym kontek- w treści zapytania nazwisko konkretnej
ście technologie takie jak RDF czy SPARQL osoby (jak chociażby Mickiewicz) lub gdy Pierwsze kroki
nawiązują do wizji Internetu określanej ja- szukając frazy poeci polscy trafimy na od- Nie chcąc rozpoczynać od pobierania i na-
ko Web 3.0. powiednią listę przygotowaną przez kogoś uki skomplikowanego, wyposażonego w wie-
Web 3.0 to koncepcja takiego tworzenia na stronie WWW. Wyszukiwarki interneto- le niepotrzebnych nam opcji specjalistyczne-
zawartości stron WWW, aby możliwe by- we działają bowiem na zasadzie przeszuki- go oprogramowania wykorzystamy do formu-
ło ich przetwarzanie przez różne aplikacje, wania stron internetowych pod kątem kon- łowania zapytań interfejs SPARQL Explorer
nie ograniczające się tylko do przeglądarek, kretnych fraz, które na tych stronach wy- udostępniony pod adresem http://dbpedia.org/
w tym systemy wykorzystujące sztuczną in- stępują lub nie. snorql/.
teligencję, rozwiązania semantyczne oraz Co jednak w sytuacji, gdy chcielibyśmy Po przejściu pod podany adres naszym
oprogramowanie pozwalające wizualizować precyzyjnej odpowiedzi na bardziej złożone oczom ukazuje się strona, której głównymi
oraz przetwarzać dane. Strony Web 3.0 mają pytanie? Przykładowo pragniemy wiedzieć, elementami są okno służące do formułowa-
też być w założeniach zdolne do rozpoznania którzy ze wspomnianych polskich poetów nia zapytań SPARQL, rozwijane pole com-
zamiarów internauty na podstawie kontek- urodzili się po 1736 roku w Krakowie. Mu- bo z którego możemy wybrać format zwraca-
stu przekazu danych. Ułatwi to i przyśpieszy simy zdać sobie sprawę, że nikt zapewne nie nych wyników oraz tylko dwa przyciski [Re-
uzyskanie potrzebnych informacji. przygotowywał takich opracowań i tym sa- set] i [Go!].
Przedstawienie pełnej specyfikacji i moż- mym nie są one dostępne w Internecie. Zna- Rozpocznijmy naukę od praktycznego
liwości technologii RDF oraz języka SPA- lezienie tej informacji poprzez wyszukiwar- prostego przykładu, wprowadzając od razu
RQL na pewno przerasta miary ograniczo- ki jest więc mało prawdopodobne, jeśli nie pierwsze zapytanie (Listing 1) a następnie
ne formą niniejszego artykułu. Pragnę przede niemożliwe. Nie ma w sieci interesującego klikając przycisk [Go!].
wszystkim poprzez umiejętnie dobrane przy- nas zestawienia danych, stąd konwencjo- W efekcie została wyświetlona strona
kłady pokazać możliwości opisywanych nalne wyszukiwarki nie są w stanie odna- z pozycjami dziesięciu rozwiązań przedsta-
technologii i zachęcić czytelnika do szersze- leźć potrzebnych nam informacji. Oczywi- wiona na (Rysunek 1).
go zainteresowania się tematem. ście na poszczególnych stronach, w tym we Poświęćmy chwilę czasu, aby przyjrzeć
W niniejszym artykule przedstawię ser- wspomnianej Wikipedii możemy odszukać się naszemu pierwszemu zapytaniu w SPA-
wis udostępniający dane w postaci RDF: daty urodzin większości ważnych w naszej RQL (Listing 1). Po słowach kluczowych
od razu widać związek składni z tą znaną
Listing 1. Pierwsze zapytanie w SPARQL nam uprzednio z SQL. Konstrukcja SELECT
SELECT ?poeta WHERE … WHERE {…} służy jak można się domyślić
{ do pobrania danych. Wyrażenia rozpoczyna-
?poeta <http://www.w3.org/2004/02/skos/core#subject> <http://dbpedia.org/ jące się od znaku zapytania jak ?poeta re-
resource/Category:Polish_poets> . prezentują zmienne. Nazwy zmiennych mo-
}
ORDER BY ?poeta LIMIT 10

Listing 2. W tym zapytaniu uzyskujemy dane o imionach i datach urodzenia.


SELECT ?imie ?urodzony ?zmarl WHERE
{
?poeta <http://www.w3.org/2004/02/skos/core#subject> <http://dbpedia.org/
resource/Category:Polish_poets> .
?poeta <http://xmlns.com/foaf/0.1/name> ?imie .
?poeta <http://dbpedia.org/ontology/birthdate> ?urodzony .
}
ORDER BY ?imie LIMIT 10

Rysunek 1. Wynik pierwszego zapytania w SPARQL

www.lpmagazine.org 29
Rozwiązania
SPARQL

żemy ustalać dowolnie sami, ważne jednak etów, które są zawarte w dbpedia.org. Do- osób urodzonych w Warszawie. Ostatnim jest
by konsekwentnie trzymać się ich w całym wiemy się także, że każdy zasób jest opisa- klauzula FILTER, w której w nawiasach okrą-
zapytaniu. ny w ontologii poprzez predykat subject. głych umieściliśmy warunek związany z za-
Zapytanie składa się zasadniczo z dwu Jednym słowem każdy z poetów jest pod- kresem zmiennej ?urodzony.
części: klauzula SELECT identyfikuje zmien- miotem (z ang. subject) kategorii polskich Efekt wykonania zapytania z (Listing
ne mające wystąpić w rezultacie zapytania. poetów. 3) zwrócił w wyniku niewiele nazwisk. By
Klauzula WHERE podaje wzór grafu jaki zo- Podobnie pojedynczy zasób jak cho- sprawdzić którzy z poetów mieszczą się
stanie dopasowany do grafu danych. W na- ciażby http://dbpedia.org/page/Adam_Mic- w zakresie poprawnej odpowiedzi na nasze
szym przypadku klauzula WHERE ogranicza kiewicz posiada predykaty opisane poprzez pytanie można zapoznać się z (Rysunek 3).
się do jednej trójki uporządkowanej zakoń- określone ontologie. W kontekście rozwa- Kiedy analizujemy treść ostatniego zapy-
czonej kropką. Takich trójek mogłoby wy- żanego pytania szczególnie interesują nas tania (Listing 3) zwraca naszą uwagę specjal-
stąpić w zapytaniu wiele, o czym napiszę birthdate oraz name. Wiedząc o ich istnie- ny sposób zapisu daty. Czym jest xsd:da-
dalej. Pierwsza pozycja naszej trójki odno- niu możemy zmodyfikować nasze uprzed- te? To nic innego jak odwołanie się do za-
si się do wyświetlanej zmiennej – ?poeta. nie zapytanie w sposób ukazany na (Li- sobu ontologii gdzie znajduje się sformalizo-
Drugą pozycję stanowi URI ontologii opi- sting 2). wana informacja czym jest data. Występuje tu
sującej czym sam w sobie jest dany zasób. Łatwo zauważyć, że dodaliśmy zmien- zapis skrótowy, z którego do tej pory nie ko-
Trzecią URI zasobu kategorii polskich po- ne ?urodzony oraz ?imie i to o ich warto- rzystaliśmy, czemu jednak nie mielibyśmy te-
etów w dbpedia.org. ści dla możliwych rozwiązań pytamy. Zo- go uczynić.
Rozszerzenie składni zapytania o ORDER stały dopisane też dwie kolejne trójki upo- W ostatnim zapytaniu zamiast pisać <http:
BY ?poeta spowoduje uporządkowanie al- rządkowane. Wszystkie rozpoczynają się od //www.w3.org/2001/XMLSchema#date> napi-
fabetyczne zwróconych wyników, natomiast zmiennej ?poeta, której zadaniem jest wią- saliśmy xsd:date. Mogliśmy to uczynić ponie-
użycie LIMIT 10 umożliwi ograniczenie ich zanie całego wyrażenia. Kolejną pozycją w waż SPARQL Explorer dołącza do naszego za-
liczby do dziesięciu rozwiązań. każdej trójce uporządkowanej jest odwoła- pytania specjalne nagłówki PREFIX odnoszące
Rozwiązanie to zwraca URI dziesięciu nie do odpowiedniej ontologii by następnie się do powszechnie używanych ontologii. Jeśli
zasobów opisujących polskich poetów wy- na pozycji trzeciej odwołać się do wprowa- na początku zapytania zdecydujemy się umie-
branych w kolejności alfabetycznej. dzonych zmiennych ?imie, ?urodzony z któ- ścić nagłówek
rymi zostaną związane predykaty name, bir-
Piszemy złożone zapytanie thdate. Efekt wywołania tak zmodyfikowa- PREFIX xsd: <http://www.w3.org/2001/
Za chwilę przejdziemy do sformułowa- nego zapytania przedstawiony został na (Ry- XMLSchema#>
nia kolejnego zapytania. Pragnę zwrócić sunek 2).
tylko uwagę czytelnika, że wchodząc na Pora dodać ostatnie elementy naszego za- to w treści zapytania możemy dalej pisać
stronę zasobu http://dbpedia.org/resource/ pytania (Listing 3). Jednym z nich jest trójka już xsd:nazwa_zasobu przykładowo xsd:
Category:Polish_poets otrzymamy peł- z predykatem birthPlace odnoszącym się date.
ną listę zasobów opisujących polskich po- do zasobu Warsaw, co ogranicza wyniki do W ten sposób wykorzystując w nagłów-
ku PREFIX możemy znacznie uprościć spo-
Listing 3. Zapytanie z warunkiem nałożonym na zmienną sób zapisu naszego zapytania. Po zmianach
SELECT ?imie ?urodzony WHERE będzie ono wyglądać tak jak zostało to przed-
{ stawione na (Listing 4).
?poeta <http://www.w3.org/2004/02/skos/core#subject> <http://dbpedia.org/ W ten sposób przy pomocy dość proste-
resource/Category:Polish_poets> . go zapytania w SPARQL uzyskaliśmy odpo-
?poeta <http://dbpedia.org/property/birthPlace> <http://dbpedia.org/ wiedź na pytanie, której w Internecie nie by-
resource/Warsaw> . ło zamieszczonej na żadnej ze stron WWW.
?poeta <http://xmlns.com/foaf/0.1/name> ?imie .
?poeta <http://dbpedia.org/ontology/birthdate> ?urodzony .
FILTER (?urodzony > "1736-01-01"^^xsd:date)
}

Listing 4. Końcowe zapytanie po dokonanej optymalizacji


PREFIX dbo: <http://dbpedia.org/ontology/>
SELECT ?imie ?urodzony WHERE
{ Rysunek 2. Dane o polskich poetach oraz ich da-
?poeta skos:subject <http://dbpedia.org/resource/Category:Polish_poets> . tach urodzenia i śmierci
?poeta dbpedia2:birthPlace :Warsaw .
?poeta foaf:name ?imie .
?poeta dbo:birthdate ?urodzony .
FILTER (?urodzony > "1736-01-01"^^xsd:date)
}
Rysunek 3. Tak przedstawia się odpowiedź na po-
stawione przez nas pytanie

30 luty 2010
Rozwiązania
SPARQL

Wykorzystaliśmy interfejs Wikipedii pozwa- we jest też wykorzystanie języka SPARQL i współpraca wielu użytkowników staje się
lający formułować zapytania SPARQL by ze- w budowaniu aplikacji mających służyć motorem napędowym społeczności. Pra-
brać dane z wielu stron (całej kategorii pol- surfowaniu po sieci, nie mających jednak gnę zauważyć, że podobnie może stać się
skich poetów) i dokonać na tych danych pew- charakteru przeglądarek internetowych. w przypadku otwartego dostępu do danych,
nych operacji (filtrowania w zakresie miejsca Określa się je mianem inteligentnych agen- czyli udostępniania tychże danych (cho-
i daty urodzenia). tów. Ich zadaniem mogłoby być śledzenie ciażby poprzez RDF) na podobnych zasa-
informacji pojawiających się w pewnych dach jak dzieje się to z kodem źródłowym.
Przyszłość serwisach WWW i informowanie nas lub Jeśli prowadzimy przykładowo sklep inter-
i zastosowania SPARQL wręcz samodzielne wykonywanie uprzed- netowy sprzedający jakiś rodzaj produk-
Coraz więcej stron udostępnia w tej chwi- nio zleconych działań. tów, czemu nie mielibyśmy nie zacząć udo-
li interfejs SPARQL. Przykładowe z nich stępniać danych o aktualnej ofercie w RDF.
zostały wymienione w sekcji linki, znaj- Podsumowanie Warto to zrobić w taki sposób by nie tylko
dującej się pod koniec artykułu. Oczywi- Idea Web 3.0, która już rozpoczęła kształ- człowiek wchodzący na witrynę naszego
ście każdy z nas może również samemu tować Globalną Sieć niesie ze sobą moż- sklepu mógł się z nimi zapoznać, lecz rów-
publikować dane w postaci RDF. Nie jest liwości, których często dziś nie jesteśmy nież by dane te były możliwe do przetwo-
to trudne do opanowania. Jeśli ktoś jest w stanie sobie wyobrazić. Pomyślmy tyl- rzenia przez systemy wyszukiwarek, inteli-
w stanie nauczyć się pisać strony internetowe ko co można osiągnąć gdy nauczymy kom- gentnych agentów i aplikacji.
w HTML to z powodzeniem nauczy się, jak putery rozumieć treści stron WWW. Język Strategię tę realizuje w tej chwili już
wykorzystywać XML i RDF do publikowa- SPARQL jest jedną z technologii, która za- wiele serwisów takich, jak Amazon czy
nia danych w sieci. Jakiego rodzaju mogą to pewne będzie mieć udział w zbliżającej się Flickr. Interfejs SPARQL poza opisaną
być dane? Informacje o adresie firmy, godzi- przemianie oblicza Internetu, warto więc DBpedią udostępnia między innymi ser-
nach obsługi klientów, dane dotyczące ofe- poznać pewne jego założenia. Mam na- wis BBC.
rowanych produktów, jak ceny, dostępne dzieję, że ten artykuł zachęci wielu z czy-
rozmiary itd. telników do zainteresowania się opisanymi
Opisana tu technologia pozwala na wy- tu zagadnieniami i do współtworzenia se-
mianę tego typu informacji pomiędzy ser- mantycznego Internetu. Słowa te kieruję
wisami WWW. Możliwe jest też użycie jej do czytelników Linux+ jeszcze z jednego
do tworzenia inteligentnych wyszukiwarek, względu. Przedstawiciele społeczności ru-
zwracających tylko te informacje, które są chu Open Source, do której należą użyt-
wprost odpowiedzią na zapytanie użytkow- kownicy systemu Linux wiedzą jak waż-
O autorze
nika. Dziś w natłoku informacji byłoby ne jest to by dzielić się kodem źródłowym
to, trzeba przyznać, bardzo cenne. Możli- oprogramowania. To właśnie otwarty kod Piotr Orzeszek ma wykształcenie filozo-
ficzne. Pracuje jako nauczyciel akade-
micki na Uniwersytecie Kardynała Stefa-
W Sieci na Wyszyńskiego w Warszawie. Linuk-
sem interesuje się od ponad dziesięciu
• http://www.w3.org/TR/rdf-sparql-query/ – SPARQL Query Language for RDF (en);
lat i używa wspomnianego systemu ope-
• http://dbpedia.org/ – The DBpedia Knowledge Base (en);
racyjnego na co dzień.
• http://dbpedia.org/snorql/ – The DBpedia SPARQL interface (en);
Kontakt z autorem: piotr@orzeszek.com
• http://bbc.openlinksw.com/sparql – BBC SPARQL endpoint (en);

Słowniczek pojęć
• XML (ang. Extensible Markup Language) to uniwersalny język znaczników przeznaczony do reprezentowania różnych danych
w strukturalny sposób. Pozwala użytkownikom na definiowanie i używanie własnych znaczników.
• RDF (ang. Resource Description Framework) jest standardem, który pozwala na zapis danych w postaci grafu skierowanego.
W grafie tym dane zawarte są w wierzchołkach a relacje pomiędzy nimi i własności tychże znajdują się w krawędziach.
• OWL jest standardem pozwalającym na definiowanie klas na podstawie własności danych, a także na definiowanie logicznych
charakterystyk relacji. OWL jest więc standardem formalnie zapisującym ontologie.
• Ontologie to zbiory stwierdzeń zapisanych na przykład w RDF, definiujące relacje pomiędzy pojęciami oraz wyznaczające reguły
wnioskowania. Z ich pomocą komputery będą w stanie zrozumieć semantyczną zawartość dokumentów WWW.
• SPARQL (ang. SPARQL Protocol And RDF Query Language) jest językiem zapytań i protokołem dla plików RDF. Pozwala wycią-
gać z nich dane zawężone według kryteriów określonych poprzez predykaty RDF.
• URI (ang. Uniform Resource Identifier) jest standardem internetowym umożliwiającym łatwą identyfikację zasobów w sieci. URI
jest zazwyczaj łańcuchem znaków, zapisanym zgodnie ze składnią określoną w standardzie. Łańcuch ten określa nazwę lub adres
zasobu, który dany URI identyfikuje. Szczególnym przypadkiem URI jest URL, który oprócz identyfikacji zasobu wskazuje również
sposób dostępu do niego.

www.lpmagazine.org 31
Rozwiązania
Federacja

Federacja – wirtualny
dostęp do danych
Marcin Marczewski

We współczesnych firmach dane przechowywane są przy użyciu przeróżnych technologii. Mimo że


jednolity sposób przechowywania informacji byłby wygodniejszy i wymagałby mniejszych nakładów,
w tym także tych na wiedzę i szkolenia pracowników, rozwiązanie takie jest szczególnie trudne do
wdrożenia.

W
linux@software.com.pl

iele z aplikacji wykorzystywanych w dzi- wykorzystującej mechanizmy federacji jest ujednolicenie


siejszych organizacjach narzuca odgórnie interfejsu oraz optymalizacja dostępu do zdalnych zasobów,
wymóg używania określonych rozwią- co jest bardzo trudne do realizacji przy użyciu własnoręcz-
zań, w tym wybranych serwerów baz da- nie napisanego kodu.
nych. Napisanie aplikacji, która wykorzystuje jakiś uniwer- Federacja baz danych to doskonałe rozwiązanie, które
salny interfejs (np. JDBC) i ma dostęp do wielu baz danych, może być wykorzystywane w środowiskach raportowych,
nie jest jeszcze tak bardzo skomplikowane (choć może być do wspomagania zasilania hurtowni czy budowy aplikacji
uciążliwe), ale optymalizacja dostępu do rozproszonych zaso- internetowych.
bów jest już zadaniem niezwykle trudnym. Co zatem zrobić W tym artykule przybliżę zagadnienia dotyczące sto-
w takiej sytuacji? W jaki sposób zintegrować dane pochodzą- warzyszonych (sfederowanych) systemów baz danych i po-
ce z różnorodnych systemów, zapewniając jednocześnie jed- każę, jakie możliwości w tym temacie dostarcza nam DB2.
nolity i wydajny sposób pracy z tymi systemami? Omówione zostaną także poszczególne etapy konfiguracji
Jednym z rozwiązań jest możliwość wirtualnego do- systemy sfederowanego.
stępu do danych przy użyciu stowarzyszonych systemów
baz danych (ang. federated systems), umożliwiających do- System sfederowany – co to takiego?
stęp do danych zarządzanych przez różne serwery baz da- Jedną z podstawowych funkcji systemu zarządzania relacyj-
nych. W powszechnym użyciu wykorzystuje się także okre- nymi bazami danych, jakim jest DB2, jest obsługa lokalnie
ślenie system sfederowany. Federacja wykorzystywana jest przechowywanych danych. W ramach lokalnej bazy DB2 ist-
między innymi w hurtowniach danych IBM InfoSphere Wa- nieje możliwość udostępnienia zdalnych tabel, tak aby były
rehouse (opartych o DB2) jako podstawowy mechanizm za- widoczne tak samo jak lokalne obiekty. Zdalne tabele mogą
pewniający dostęp do systemów źródłowych. Zdalne tabe- pochodzić nie tylko od DB2, ale także od innych systemów
le widoczne są jak lokalne obiekty, a zadaniem bazy danych zarządzania bazami danych, takich jak Oracle, Informix czy

32 luty 2010
Rozwiązania
Federacja

Microsoft SQL Server. DB2 w takiej konfigura- Każde źródło danych zawiera nie tylko infor- sób transparentny. Oznacza to, że w przypadku
cji pełni funkcję systemu sfederowanego (ang. macje o połączeniu, ale także jest opisane spe- gdy nasz stowarzyszony system składa się z bazy
federated system). Użytkownik odwołuje się do cjalnymi parametrami, które brane są pod uwa- danych DB2, Oracle i SQL Server (lub innych),
obiektów, które są zarządzane przez zdalne ba- gę przy optymalizacji (np. wydajność proceso- dla użytkownika końcowego cały system wi-
zy danych, dokładnie w taki sam sposób jak do rów, systemu dyskowego, połączenia sieciowe- doczny jest jako pojedyncza baza danych DB2.
lokalnych tabel. DB2 komunikuje się ze zdalny- go, preferencje dotyczące obciążenia danego
mi bazami danych, wykorzystując natywnych systemy, tzw. analizy pushdown). Architektura Serwer stowarzyszony
klientów danej bazy oraz posługuje się dialektem IFS została przedstawiona na Rysunku 1. W DB2 funkcję serwera stowarzyszonego pełni
SQL tych baz. Zadaniem DB2 jest nie tylko tłu- instancja DB2, która umożliwia realizację zapy-
maczenie różnych języków, ale także podejmo- Jak realizowane tań zgłaszanych do jednego bądź więcej źródeł
wanie decyzji optymalizacyjnych. są zapytania w systemach danych, którymi mogą być bazy danych DB2
Problem optymalizacji i sposobu wykona- stowarzyszonych DB2? lub inne, takie jak Oracle, SQL Server, Informix
nia zapytań, które odnoszą się nie tylko do bazy Zapytania do danych dostarczanych przez sto- itp. Rolą instancji jest między innymi nawiązy-
lokalnej, ale także do źródeł zdalnych, jest bar- warzyszoną bazę danych DB2 zgłaszane są w wanie połączeń do zdalnych baz czy realizacja
dzo istotny z punktu widzenia wydajności całego dialekcie SQL używanym przez DB2, nawet je- dwufazowego zatwierdzania.
systemu. Serwer stowarzyszony (a dokładniej je- śli system składa się z elementów zarządzanych To serwer stowarzyszony jest odpowie-
go komponent odpowiadający za optymalizację) przez menedżerów baz danych innych produ- dzialny za przekazywanie części lub całości
musi zdecydować, w jaki sposób zapytanie bę- centów. Jeżeli zapytania SQL odnoszą się do da- zapytań do zdalnych źródeł danych. Serwerem
dzie realizowane – które z elementów mogą być nych przechowywanych w innej bazie niż DB2, stowarzyszonym może być już istniejąca in-
zrealizowane lokalnie, a które jest szybciej zre- stowarzyszony serwer DB2 sam przetłumaczy je stancja lub instancja DB2 stworzona specjal-
alizować po stronie zdalnego źródła danych (np. na dialekt języka SQL używany w bazie doce- nie w tym celu.
grupowanie czy filtrowanie danych). Stowarzy- lowej. Wcześniej jednak każde zapytanie jest W odróżnieniu od tradycyjnej instancji
szone systemy baz danych oparte na DB2 umoż- optymalizowane przez DB2, a następnie prze- DB2, instancja, która funkcjonuje jako serwer
liwiają realizację zapytań w sposób asynchronicz- kazywane do odpowiednich źródeł danych. Da- stowarzyszony, komunikuje się z innymi in-
ny, dzięki czemu poszczególne składowe zapyta- ne zwrócone przez poszczególne źródła są zbie- stancjami DB2 przy użyciu DRDA (ang. Di-
nia mogą być wykonywane na kilku źródłach da- rane, przetwarzane i ostatecznie przekazywane stributed Relational Data Access), wykorzystu-
nych równocześnie, tym samym dostarczając re- użytkownikowi końcowemu. jąc protokół TCP/IP. Co więcej, w celu komuni-
zultat końcowy szybciej. Inną zaletą rozwiązania Do tabel i widoków pochodzących z innych kacji ze źródłami danych instancja DB2 będąca
opartego na DB2 jest możliwość realizacji trans- baz danych (np. Oracle czy SQL Server) odnosi- serwerem stowarzyszonym wykorzystuje klien-
akcji z użyciem protokołu dwufazowego zatwier- my się przy użyciu pseudonimów (ang. nickna- tów natywnych dla tych źródeł danych. Na przy-
dzania zapewniającego spójność wykonywanych mes) – lokalnych nazw identyfikujących zdalne kład, aby skomunikować się z bazą SQL Server,
operacji w środowisku rozproszonym. obiekty. Systemy sfederowane umożliwiają re- będziemy wykorzystywać sterownik Microsoft
W systemach stowarzyszonych przy uży- alizację zapytań do różnych baz danych w spo- SQL Server ODBC Driver.
ciu pojedynczego zapytania SQL możemy od-
pytywać różne źródła danych oparte na kon-
kurencyjnych systemach baz danych takich jak
��� ���
Oracle, Informix, Microsoft SQL Server, Syba-
se czy Teradata. Przykładowo, za pomocą poje- ���
dynczego zapytania SQL możemy tworzyć złą-
������������
�����������

�������

�������

������

��������������������������
czenia (zapytania typu JOIN), które odwołują się
do lokalnych tabel DB2 oraz zdalnych tabel za-
rządzanych przez system Oracle.
����������������������
������������������
InfoSphere Federation Server
Do zbudowania własnego systemu sfederowa-
nego można wykorzystać serwer danych sfe- ���
�������������������� �����������������������
derowanych InfoSphere Federation Server (IFS,
znany także pod wcześniejszą nazwą WebSphe- �������������� �������������� ������������
re Federation Server), który pozwala zintegro-
wać nie tylko bazy relacyjne, ale także bazy
hierarchiczne czy pliki zapisane w różnych for- ���
matach. IFS w rzeczywistości jest bazą danych ���

DB2 Enterprise, poszerzoną o biblioteki dostę-


powe do zewnętrznych źródeł danych (relacyj- ���
nych i nierelacyjnych), tzw. opakowania (ang.
wrappers). Tabele z zewnętrznych systemów �������������
widoczne są tak samo jak obiekty lokalne. Opty-
malizator zapytań został dodatkowo wyposażo-
ny w techniki analizy rozproszonych zapytań. Rysunek 1. IBM InfoSphere Federation Server

www.lpmagazine.org 33
Rozwiązania
Federacja

Domyślnie opcja serwera stowarzyszonego dują się nie tylko dane dotyczące wykorzysty- Jak konfigurujemy stowarzyszo-
dla instancji DB2 jest wyłączona. Aby włączyć wanych nazw kolumn i typów danych tabel, ale ny system baz danych?
tę opcję dla instancji DB2, należy zmienić war- także dane o indeksach możliwych do wyko- Mając odpowiednio skonfigurowaną instancję
tość parametru Obsługa stowarzyszonych syste- rzystania w trakcie realizacji zapytań. Informa- DB2 (parametr FEDERATED), możemy przystą-
mów baz danych – FEDERATED w pliku kon- cje te wykorzystywane są między innymi przez pić do konfiguracji pozostałych elementów. Za-
figuracji instancji na YES. W tym celu w oknie Optymalizator DB2, dzięki czemu zapytania re- łóżmy, że chcemy zbudować stowarzyszony
poleceń tekstowych DB2 wpisujemy polecenie alizowane przez stowarzyszone systemy zbudo- system w oparciu o lokalną bazę danych DB2
(wymaga restartu instancji): wane w oparciu o różnorodne bazy danych mo- umożliwiającą wirtualny dostęp do zdalnej ba-
gą być zrealizowane w optymalny sposób. zy danych Informix.
db2 update dbm cfg using FEDERATED YES Konfiguracja takiego systemu jest bardzo
Źródła danych łatwa i wymaga realizacji zadań takich jak:
Teraz możemy przystąpić do skonfigurowania w systemach stowarzyszonych
pozostałych elementów stowarzyszonego sys- W systemach stowarzyszonych baz danych • konfiguracja połączeń baz zdalnych z bazą
temu baz danych. źródłami danych są zazwyczaj instancje rela- stowarzyszoną;
cyjnych baz danych. Możemy zbudować swój • stworzenie definicji zdalnego serwera;
Stowarzyszona stowarzyszony system baz danych, umożliwia- • odwzorowanie użytkowników;
baza danych DB2 jąc wirtualny dostęp do danych zarządzanych • stworzenie pseudonimów.
Każdy system stowarzyszony oparty na in- przez bazy danych DB2, Informix, Microsoft
stancji DB2 wymaga utworzenia stowarzyszo- SQL Server, Sybase, Teradata i inne. Należy Konfiguracja połączenia
nej bazy DB2 działającej w obrębie tej instan- pamiętać, że wszystkie te bazy wykorzystywa- ze zdalną bazą danych
cji (lokalnej bazy dla tej instancji). Jest to baza ne jako źródła danych w systemie stowarzyszo- Pierwszym krokiem konfiguracyjnym jest
danych, w której przechowywane są informa- nym działają w sposób autonomiczny. Oznacza stworzenie i zdefiniowanie połączeń zdalnych
cje identyfikujące wykorzystywane źródła da- to, że inne aplikacje, nie mające wiele wspól- źródeł danych z serwerem stowarzyszonym.
nych i umożliwiające komunikację z tymi źró- nego z systemem stowarzyszonym, mogą także W przypadku gdy źródłem danych będzie ba-
dłami danych. Wśród istotnych informacji znaj- pracować z tymi źródłami danych. za danych DB2, należy ją odpowiednio skatalo-
gować (polecenie catalog). W przypadku baz
Tabela 1. Predefinowane nazwy opakowań innych niż DB2 należy najpierw zainstalować
Źródło danych Nazwa opakowania odpowiedniego klienta danej bazy, umożliwia-
1 DB2 9.x LUW DRDA jącego zdalną komunikację. Następny krok to
2 DB2 Universal Database dla z/OS DRDA skonfigurowanie połączenia pomiędzy bazą da-
nych DB2 a Informix.
3 DB2 Universal Database dla iSeries DRDA
4 DB2 Server dla VM i VSE DRDA
Tworzenie
5 Informix INFORMIX definicji zdalnego serwera
6 Microsoft SQL Server MSSQLODBC3 Kolejny krok w konfiguracji stowarzyszonego
7 ODBC ODBC systemu baz danych to stworzenie definicji ser-
8 OLE DB OLEDB wera instancji zdalnej bazy danych. Serwer ten
9 Oracle NET8 to nic innego jak powiązanie tzw. opakowania
(ang. wrapper) ze zdalnym źródłem danych.
10 Sybase CTLIB
Opakowanie to biblioteki umożliwiające
11 Tedadata TERADATA
komunikację, zawierające między innymi ze-
staw funkcji wykorzystywanych przy nawiązy-
waniu połączeń umożliwiających realizację za-
pytań do źródeł danych. Biblioteki te odpowie-
dzialne są także za odpowiednie przekształcenie
języka SQL wykorzystywanego przez DB2 do
odpowiedniego dialektu SQL wykorzystywane-
go przez źródło danych.
Opakowania zawierają także informacje
dotyczące mapowania typów danych DB2 na
typy danych źródła danych.
W systemie stowarzyszonym opartym na
DB2 należy zarejestrować jedno opakowanie
dla każdego typu źródła danych. Przykłado-
wo, jeśli projektowany system stowarzyszony
wykorzystuje dwie tabele bazy danych Infor-
mix oraz tabele z dwóch baz DB2, musimy za-
rejestrować jeden wrapper dla Informix oraz je-
Rysunek 2. Tworzenie opakowania den dla DB2.

34 luty 2010
Rozwiązania
Federacja

Po zarejestrowaniu opakowania w stowa- W trakcie tworzenia definicji serwera (Ry- Po utworzeniu definicji serwera dla instancji
rzyszonej bazie danych może być ono wykorzy- sunek 5) należy podać szereg informacji – mię- zdalnej należy także stworzyć odwzorowanie dla
stywane do definiowania źródeł danych. dzy innymi o typie źródła danych (na przykład identyfikatora użytkownika lokalnego DB2 na
Aby zarejestrować opakowanie dla bazy dla DB2: DB2/UDB, DB2/zOS itd.), wersji (na identyfikator użytkownika instancji zdalnej. Od-
danych DB2 w stowarzyszonej bazie danych, przykład dla DB2: 9.7, 9.5, 9.1 itd.), a także po- wzorowanie to określa, w jaki sposób informacje
w oknie poleceń tekstowych DB2 wpisujemy dać dane użytkownika wymagane do uwierzy- dotyczące uwierzytelniania będą przekazywane
polecenie: telnienia. Jeżeli zdalne źródło danych zarządza do wskazanych źródeł zdalnych. Dzięki temu
więcej niż jedną bazą danych, musimy podać podczas nawiązywania połączenia ze zdalnym
CREATE WRAPPER DRDA LIBRARY nazwę bazy danych, która ma być częścią sys- źródłem danych serwer stowarzyszony przekaże
'db2drda.dll'; temu stowarzyszonego (opcja DBNAME w za- właściwy identyfikator użytkownika i hasło, wy-
kładce Ustawienia – Rysunek 5). magane przez to źródło danych, a nie identyfika-
Możemy także użyć jednej z kilku zdefiniowa- Dla każdego źródła danych, które ma być tor i hasło wykorzystywane w celu uzyskania do-
nych nazw opakowań (Tabela 1) W przypadku częścią systemu stowarzyszonego, należy stwo- stępu do serwera stowarzyszonego.
użycia skróconej formy polecenia, np: rzyć osobną definicję serwera. Oznacza to, że je- Jeżeli lokalny użytkownik to ‘db2admin’,
żeli chcemy stowarzyszyć ze swoją bazą DB2 a jego hasło to ‘haslo’, natomiast użytkownik
CREATE WRAPPER INFORMIX dwie bazy danych działające na serwerze Infor- zdalny to ‘user1’ z hasłem ‘abc123’, to w celu
mix, musimy utworzyć dwie definicje serwera stworzenia odwzorowania w oknie poleceń tek-
DB2 automatycznie użyje odpowiedniej biblio- dla baz Informix. stowych DB2 wpisujemy polecenie:
teki, odpowiedniej dla systemu operacyjnego,
na którym pracujemy. Opakowanie możemy
także zarejestrować przy użyciu narzędzi gra-
ficznych – Centrum Sterowania.
Jeśli chcemy wykorzystywać opakowania,
które nie są dostępne w DB2 – należy skontak-
tować się z przedstawicielem IBM w celu uzy-
skania dostępu do innych bibliotek.
Następny etap to stworzenie, przy uży-
ciu polecenia CREATE SERVER, definicji serwe-
ra wykorzystującego wcześniej zarejestrowane
opakowanie. W ten sposób nastąpi powiązanie
zarejestrowanego opakowania ze zdalnym źró-
dłem danych (przypisanie określonej biblioteki
z określoną bazą danych). W tym miejscu nale-
ży podać szereg dodatkowych parametrów, ta-
kich jak typ i wersja używanego oprogramowa-
nia źródła danych oraz metadane wykorzysty-
wane podczas nawiązywania połączeń.
Aby utworzyć definicję serwera dla zdalnej
bazy danych Informix wykorzystującej zareje- Rysunek 3. Tworzenie definicji serwera dla źródła danych
strowane opakowanie INFORMIX, w oknie pole-
ceń tekstowych DB2 wpisujemy polecenie:

CREATE SERVER Informix1


TYPE INFORMIX
VERSION 9
WRAPPER INFORMIX

gdzie Informix1 jest wybraną przez nas nazwą


identyfikującą to źródło danych.
Możemy także wykorzystać narzędzia
graficzne i wykonać tę operację przy pomocy
Centrum Sterowania (Rysunek 3) a następnie,
przechodząc przez zakładkę Wprowadzenie
i wybraniu zdefiniowanego wcześniej opako-
wania w zakładce Opakowania ,dochodzimy
do etapu tworzenia definicji serwera. Po klik-
nięciu przycisku Utwórz pojawi się okno dia-
logowe, za pomocą którego możemy utworzyć
definicję serwera (przycisk Dodaj): Rysunek 4. Tworzenie definicji serwera dla źródła danych – definicja

www.lpmagazine.org 35
Rozwiązania
Federacja

CREATE USER MAPPING FOR DB2ADMIN gdzie <baza> jest nazwą zdalnej bazy danych. nia – kolejna zakładka Utwórz odwzorowania
SERVER <baza> OPTIONS W podobny sposób możemy stworzyć odwzo- użytkowników, klikamy przycisk Utwórz. Po-
( ADD REMOTE_AUTHID 'user1', ADD rowania dla innych użytkowników. jawi się okno dialogowe, w którym w pierw-
REMOTE_PASSWORD 'abc123'); Odzworowania użytkowników można szej zakładce Użytkownicy wybieramy identy-
utworzyć także z poziomu Centrum Sterowa- fikator użytkownika lokalnego, który będzie-
my odwzorowywać na identyfikator użytkow-
nika zdalnego. W drugiej zakładce Ustawienia
podajemy identyfikator użytkownika zdalnego
(opcja REMOTE_AUTHID) oraz hasło (opcja RE-
MOTE_PASSWORD) – tak jak na Rysunku 6. To
już prawie koniec konfigurowania systemu
stowarzyszonego. Został już tylko ostatni krok
– stworzenie pseudonimów.

Stworzenie pseudonimów
Pseudonim (ang. nickname) to nic innego jak
lokalna nazwa dla obiektu (tabeli lub wido-
ku) znajdującego się w zdalnej bazie danych
(w źródle danych). Dla każdej tabeli i wido-
ku pochodzącego ze stowarzyszanych źródeł
danych, który chcemy wykorzystywać, mu-
simy utworzyć pseudonim. Nazwa pseudo-
nimu, podobnie jak nazwa innych obiektów
DB2, składa się z dwóch części: schematu
i nazwy właściwej obiektu, na przykład USE-
Rysunek 5. Tworzenie definicji serwera dla źródła danych – ustawienia dodatkowe R1.TABELA1.
To właśnie psuedonimy są wykorzysty-
wane w zapytaniach SQL odnoszących się do
obiektów znajdujących się w zdalnych źró-
dłach danych.
Aby utworzyć pseudonim, wykorzystujemy
polecenie CREATE NICKNAME. Załóżmy, że baza
danych Informix, dla której zarejestrowaliśmy
odpowiednie opakowanie oraz utworzyliśmy
definicję serwera o nazwie Informix1, prze-
chowuje dane w tabeli SCHEMA1.TABELA1. Aby
utworzyć pseudonim o nazwie USER1.TABELA1
dla tej tabeli (która jest dostarczana przez źródło
Rysunek 6. Tworzenie odwzorowania użytkowników INFORMIX1), w oknie poleceń tekstowych DB2
wpisujemy polecenie:

Listing 1. Przykładowe zapytanie SQL realizo-


wane w systemie sfederowanym
SELECT
e.MGRNO,
s.NAME,
SUM(p.PRSTAFF) as total
FROM
MMARCZEWSKI.DEPARTMENT e,
MMARCZEWSKI.STAFF s,
INFORMIX1.PROJECT p,
WHERE
e.DEPTNO=p.DEPTNO
AND s.ID=e.MGRNO
GROUP BY
e.MGRNO,
s.NAME
ORDER BY total;
Rysunek 7. Tworzenie pseudonimów w Centrum Sterowania

36 luty 2010
Rozwiązania
Federacja

CREATE NICKNAME USER1.TABELA1 wypadku możemy napotkać różnego rodzaju tworzyć skomplikowane zapytania, które będą
FOR INFORMIX1.SCHEMA1.TABELA1 błędy związane z dostępem do tego obiektu. odwoływały się do różnych obiektów zarządza-
nych przez różne systemy bazodanowe. Jednak
Pseudonimy możemy także stworzyć, wyko- Tryb „pass-through” z punktu widzenia użytkownika będzie to nadal
rzystując Centrum Sterowania (Rysunek 7). W każdej chwili można się także odwoływać do jedno zapytanie napisane w jednym dialekcie
Wybranie opcji Wykryj wyświetli listę wszyst- danych dostarczanych przez każde ze źródeł da- SQL – DB2.
kich tabel i widoków zdalnego źródła danych, nych w ich oryginalnym dialekcie SQL – w spe- Do realizacji swoich zadań możesz nadal
dla których możemy utworzyć pseudonim. Do- cjalnym trybie pass-through. W takim przypad- wykorzystywać te same narzędzia co do tej po-
datkowo możemy zdefiniować schemat oraz ku, zakładając, że jednym z elementów naszego ry. Na przykład, jeżeli interesuje Cię plan wyko-
nazwę lokalną pseudonimu (opcja Właściwo- systemu jest baza danych Informix, DB2 prze- nania zapytania będącego złączeniem tabel znaj-
ści). Teraz, po nawiązaniu połączenia do swo- śle zapytanie do bazy danych Informix, odbie- dujących się w dwóch różnych bazach, wystarczy
jej bazy danych DB2, możemy odczytywać da- rze rezultat i przekaże go użytkownikowi koń- uruchomić narzędzie Visual Explain, aby spraw-
ne przechowywane w bazie danych Informix cowemu. Aby zrealizować zapytanie w trybie dzić, czy jest ono napisane w sposób optymalny.
w tabeli SCHEMA1.TABELA1 przy pomocy tra- pass-through na bazie Informix, dla której wcze- Mając zapytanie – Listing 1. – gdzie tabela
dycyjnego SQL-a wykorzystywanego w DB2. śniej rejestrowaliśmy serwer Inform1, należy PROJECT znajduje się w zdalnej bazie danych In-
Na przykład: użyć następującego polecenia: formix, a tabele DEPARTMENT i STAFF w lokalnej
bazie danych DB2, przykładowy plan zapytania
SELECT * FROM USER1.TABELA1 SET PASSTHRU credit_server; może wyglądać tak:
SELECT * FROM USER1.TABELA1; Na Rysunku 8 część danych będących ele-
Należy pamiętać, że podczas tworzenia pseu- SET PASSTHRU RESET; mentem wyniku zadanego zapytania pochodzi
donimów do katalogu systemowego bazy da- z tabeli INFORMIX1.PROJECT, która znajduje się
nych DB2 dodawane są także metadane o two- Powyższe zapytanie nie będzie analizowane w zdalnej bazie danych będącej częścią systemu
rzonym obiekcie – wraz z informacjami o opa- przez optymalizator DB2, ale zostanie bezpo- stowarzyszonego. Blok SHIP oznacza, że część
kowaniu. Jeżeli tabela źródłowa (np. TABELA1 średnio przekazane do bazy danych Informix realizacji zapytania jest wykonana na zdalnym
w bazie Informix) zostanie zmodyfikowana i tam wykonane. serwerze – a dokładniej serwer stowarzyszony
w taki sposób, że na przykład dodana zostanie wysyła instrukcję SQL SELECT lub XQuery SE-
jedna kolumna lub zmieni się jej typ danych, Co dalej? LECT do zdalnego źródła danych w celu pobra-
odpowiadający jej pseudonim powinien zostać Teraz możemy rozpocząć pracę ze swoim sto- nia wyniku zapytania.
usunięty i ponownie utworzony. W przeciwnym warzyszonym systemem baz danych. Możemy
Podsumowanie
DB2 umożliwia budowanie stowarzyszonych
������������������������ systemów baz danych składających się z różno-
rodnych źródeł danych, w tym tradycyjnych re-
lacyjnych baz danych oraz plików.
������������������������
Dla użytkownika końcowego cały system
widoczny jest jako pojedyncza baza danych.
Takie rozwiązanie może być doskonałym uła-
���������������������� twieniem w wykonywaniu codziennych obo-
wiązków związanych z procesami integracji
danych, przy niskim nakładzie pracy ograni-
����������������������� czającym się do konfiguracji takiego systemu.
Dodatkowo to serwer stowarzyszony podejmu-
je decyzje optymalizacyjne dotyczące realiza-
���������������������
cji zapytań odwołujących się do różnorodnych
źródeł danych.

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

O autorze
���������������������� ����������������� Marcin Marczewski jest pracownikiem La-
boratorium Oprogramowania IBM Polska
w Krakowie od 2005 roku. Pracuje przy
������������������������ rozwoju narzędzi z rodziny IBM Optim
i prowadzi szkolenia z DB2 na Uniwersy-
����������������������� ����������������������� tecie im. Adama Mickiewicza w Poznaniu.
Posiada certyfikaty IBM z zaawansowanej
administracji DB2.
���������������������� �����������������
Kontakt z autorem:
marcin.marczewski@pl.ibm.com
Rysunek 8. Federacja: plan zapytania

www.lpmagazine.org 37
Rozwiązania
DataVision – raporty z baz danych

DataVision
– raporty z baz danych
Paweł Wolniewicz

Informacje znajdujące się w bazie danych nie przydadzą się na wiele, jeśli nie skorzystamy z narzędzi
pozwalających na ich analizę i generowanie raportów. Tworzenie skomplikowanych zapytań SQL nie
stanowi optymalnego rozwiązania. Możemy natomiast wykorzystać dostępny na licencji Open Source
system tworzący raporty z baz danych, a konkretnie aplikację DataVision.

N
linux@software.com.pl

arzędzie to zostało napisane w języku Ja- Aby umożliwić pobieranie danych z serwera MySQL
va, a zatem jest wieloplatformowe. Zda- należy zainstalować pakiet Connector/J [3]. Na stronie pro-
niem głównego programisty projektu jektu dostępne są zarówno binaria, jak i kod źródłowy. Po-
DataVision [1] ma stanowić alternaty- nadto wiele popularnych dystrybucji pozwala na zainstalo-
wę dla oprogramowania Crystal Reports. To porówna- wanie Connector/J za pomocą menedżera pakietów. Trzeba
nie jest jednak zdecydowanie na wyrost, gdyż jak prze- jedynie ustalić nazwę potrzebnej paczki. W systemie Open-
konamy się niebawem, stworzenie naprawdę efektow- SuSE jest nią przykładowo pakiet mysql-connector-java.
nych raportów może wymagać skorzystania z dodatko- Zanim rozpoczniemy korzystanie z DataVision trzeba
wych aplikacji. Mimo to DataVision pozwoli nam na jeszcze wykonać proste czynności konfiguracyjne. Sprowa-
szybkie przygotowanie gotowych do wydruku zesta- dzają się one do zmiany pojedynczego wpisu w pliku data-
wień danych. vision.sh, znajdującego się w katalogu powstałym po roz-
pakowaniu archiwum zawierającego DataVision. Przejdź-
Instalacja DataVision my do linijki dvclasspath="". Zastąpmy ją ciągiem zna-
Program możemy pobrać ze stron serwisu Sourcefor- ków dvclasspath=:/usr/share/java/mysql-connec-
ge [2]. Nie wymaga on instalacji, a jedynie rozpakowa- tor-java.jar, modyfikując w razie potrzeby ścieżkę do
nia. Powinniśmy natomiast upewnić się, że posiadamy na pakietu Connector/J. Po zapisaniu zmian można urucho-
dysku potrzebne pakiety, czyli wirtualną maszynę Java w mić edytowany skrypt, komendą ./datavision.sh lub
wersji co najmniej 1.4 oraz sterowniki JDBC. W tym ar- podwójnym kliknięciem w menedżerze plików.
tykule będziemy korzystali z systemu zarządzania baza-
mi danych MySQL, ale DataVision pozwala również na Kontakt z bazą danych
analizowanie informacji zgromadzonych między innymi DataVision zgłasza się okienkiem pozwalającym na utwo-
w bazach Oracle i PostgreSQL. rzenie nowego lub wskazanie istniejącego raportu. Po

38 luty 2010
Rozwiązania
DataVision – raporty z baz danych

pierwszym uruchomieniu konieczne jest sko- mendą Report>Select Records. Po opróżnieniu z których dwie skrajne zawierają nazwy pól,
rzystanie z opcji Start a New Report. Pole- pola edycyjnego znajdującego się w tym oknie a środkowa – operatory porównania. Wymie-
cenie to przeniesie nas do okienka Databa- zatwierdźmy zmiany przyciskiem OK. niane są tam wyłącznie pola należące do tabel,
se Connection. Powinniśmy wprowadzić W tym momencie możemy już rozpocząć które zostały wcześniej włączone do raportu.
w nim informacje pozwalające na połączenie generowanie raportu. Dokonujemy tego pole- Jeżeli zatem do głównego okna przeciągnęli-
się z bazą danych. Wartość parametru Driver ceniem Report>Run oraz kombinacją klawi- śmy tylko jeden element z okienka Fields, to
Class Name zależy od wykorzystywanego ser- szy Ctrl+R. Jeśli zapytanie SQL będzie posia- wybór będzie bardzo ograniczony. W takim
wera. W przypadku bazy MySQL należy wpi- dało nieprawidłową składnię, to program po- wypadku należy sprawić, by w tworzonym ra-
sać w to pole tekstowe ciąg znaków com.my- wiadomi nas o tym komunikatem błędu. W ta- porcie znalazły się pola reprezentujące obie łą-
sql.jdbc.Driver. Z kolei parametr Connec- kiej sytuacji możemy sprawdzić treść polece- czone przez nas tablice.
tion Info powinien zawierać adres serwera nia wysłanego do bazy danych. Służy do te- Trzecia z rozwijanych list, znajdująca
oraz nazwę bazy, przykładowo jdbc:mysql: go polecenie Database>SQL Query Text. Wy- się pomiędzy dwiema pozostałymi służy do
//localhost/nazwa_bazy. Pozostałe trzy po- świetla ono w osobnym, niewielkim okien- wskazania operatora pozwalającego na po-
la tekstowe pozwalają nam na ponowne okre- ku treść zapytania. Nie możemy w tym miej- równanie zawartości dwóch pól. DataVision
ślenie nazwy (Database Name), użytkownika scu zmienić nic w kodzie SQL. Wszystkie po- stosuje dziesięć operatorów, w tym równości,
(User Name) oraz hasła (Password). Po wpro- prawki należy wprowadzić za pomocą narzę- większości bądź mniejszości oraz komendy IN
wadzeniu wszystkich danych można kliknąć dzi wbudowanych w program. oraz LIKE. Jeżeli chcemy połączyć dwie tabele
OK. DataVision zapamięta wszystkie usta- używając pola zawierającego numer porząd-
wienia. Podczas kolejnego logowania w sys- Tworzymy pierwszy raport kowy będący kluczem głównym, to z rozwi-
temie zarządzania bazami danych zostaniemy Wygenerowany przez nas raport nie zawiera janej listy wybierzmy =. Następnie uaktywnij-
jednak ponownie poproszeni o podanie hasła na razie oczywiście żadnych wartościowych my połączenie zaznaczając przycisk znajdują-
dostępowego. informacji – to po prostu zwykły listing wy- cy się na lewo od rozwijanych list i kliknijmy
Jeśli określone przez nas ustawienia bę- świetlający zawartość wybranego pola. Aby Apply. Po wskazaniu OK i powrocie do głów-
dą poprawne, to po kliknięciu OK na ekra- przeprowadzić sensowną analizę danych nale- nego okna będziemy mogli ponownie wyge-
nie pojawi się główne okno programu (Data- ży połączyć informacje z wielu tabel, a także nerować raport. Tym razem powinniśmy zoba-
Vision Report Designer). Zawiera ono nowy, określić reguły sortowania i filtrowania. Roz- czyć informacje łączące dane z dwóch tabel,
pusty raport. Rozpocznijmy pracę od wsta- pocznijmy od pierwszego z tych zadań. Załóż- to jest przedstawiające zarówno ogólne dane
wienia do niego tych pól, które zamierzamy my, że dane dotyczące badanych przedmiotów dotyczące badanych obiektów, jak i konkretne
uwzględnić w analizie. W tym celu wydajmy znajdują się w kilku tablicach, z których jedna wartości numeryczne.
polecenie Insert>Database Field. Na ekranie zawiera identyfikatory i opisy obiektów, nato- Kolejnym krokiem może być pogrupowa-
pojawi się niewielkie okienko Fields. Roz- miast pozostałe gromadzą szczegółowe po- nie rezultatów analiz oraz ograniczenie zakre-
wińmy w nim listę All Database Fields. Zo- miary poszczególnych wartości. Na potrzeby su wyników za pomocą filtrów. Pierwsze z za-
baczymy w nim pełne zestawienie tabel znaj- tego artykuły wykorzystano testową bazę bio- dań jest zdecydowanie prostsze. Wymaga ono
dujących się w bazie danych. Poszczególne metryczną zawierającą około 1,8 miliona zli- wydania polecenia Raport>Sort By, otwie-
pola są zagnieżdżone głębiej. Po odnalezie- czeń morfometrycznych. Każdy z okazów, dla rającego okienko Record Sorting. Zobaczy-
niu tego, które jest nam potrzebne, przecią- których wykonano pomiary, jest w niej repre- my w nim dwie listy. Po lewej stronie znaj-
gnijmy je do głównego okna programu i upu- zentowany przez pojedynczy rekord w tabeli duje się zestawienie wszystkich pól wcho-
śćmy w sekcji Detail. Wartości wskazanego specimens. Zawiera ona numer porządkowy,
pola zostaną włączone do treści raportu. Do- identyfikator, a także informacje o miejscu po-
datkowo aplikacja automatycznie wstawi je- chodzenia, oznaczenia gatunkowe oraz wska-
go nazwę do tytułu strony. zówki pomocnicze. Dane te trzeba połączyć
Teraz powinniśmy przystąpić do tworzenia z wartościami liczbowymi zgromadzonymi
zapytań do bazy oraz łączenia poszczególnych w kilkudziesięciu innych tabelach. W rezulta-
tabel. Najpierw usuńmy standardowy kod SQL cie pozwala to na uzyskanie streszczeń opisu-
mający na celu uwzględnienie wszystkich rekor- jących poszczególne okazy.
dów. Może on znajdować się w okienku pozwa- Aby połączyć tabelę specimens z danymi
lającym na określenie warunków dołączanych biometrycznymi należy skorzystać z okna Ta-
do klauzuli WHERE. Nie jest on potrzebny, a nie- ble Linker wywoływanego poleceniem z me- Rysunek 1. Okno powitalne programu DataVision
kiedy nawet powoduje problemy w trakcie two- nu Database. Początkowo jest one puste. No-
rzenia raportu. Skasujmy zatem zapytanie poja- wą regułę tworzymy przyciskiem Add. Powo-
wiające się w osobnym okienku otwieranym ko- duje on pojawienie się trzech rozwijanych list,

Listing 1. Plik parameters.xml


<?xml version="1.0" encoding="UTF-8"?>
<parameters>
<parameter id="1"><value>F1b%</value></parameter>
<parameter id="2"><value>0.003</value></parameter>
</parameters> Rysunek 2. Przed rozpoczęciem pracy z aplikacją
należy uzyskać dostęp do bazy danych

www.lpmagazine.org 39
Rozwiązania
DataVision – raporty z baz danych

dzących w skład tabel, które wykorzystywane Pola tekstowe można dowolnie prze- mogli określić dopuszczalne wartości tworzo-
są na potrzeby raportu. Zaznaczenie jednego mieszczać w obrębie sekcji Detail, która za- nego parametru.
z nich i kliknięcie klawisza ze strzałką spowo- wiera informacje przeznaczone do umiesz- Program obsługuje cztery podstawowe ty-
duje przeniesienie go na prawą listę. Od tej po- czenia w ciele strony. Jeżeli zapytanie zwraca py danych – logiczny (Yes/No), tekstowy (Text),
ry rezultaty zwracane w trakcie generowania wiele rekordów, to są one oczywiście wymie- liczbowy (Number) oraz datę (Date). Parametry
raportu będą sortowane (klauzula ORDER BY). niane po kolei, a wynikowy dokument może mogą należeć do jednego z nich. Oprócz tego
Wyniki mogą pojawiać się w porządku rosną- mieć kilka, kilkanaście lub więcej stron. Pola użytkownik określa sposób wprowadzania da-
cym lub malejącym. Decydują o tym przełącz- tekstowe można umieszczać pomiędzy rezul- nych. Domyślnym jest Single. Tworzy on po-
niki Ascending oraz Descending, znajdujące tatami z bazy danych. Dopuszczalne jest tak- le edycyjne pozwalające na wprowadzenie do-
się po prawej stronie okienka Record Sorting. że ich skalowanie. Niekiedy skorzystanie z tej wolnego ciągu znaków. Drugi z typów (Ran-
Program pozwala także na sortowanie danych funkcji jest konieczne, gdyż zbyt długie pola ge) umożliwia ustalenie minimalnej oraz mak-
z uwzględnieniem kilku pól. W takiej sytuacji tekstowe mogą przysłaniać siebie nawzajem. symalnej wartości. Poza tym DataVision oferuje
możliwe jest określenie kolejności pól, za po- Natomiast zbyt krótkie pojemniki na wyniki z dwa rodzaje list. Pierwsza z nich – Single Cho-
mocą przycisków Move Up i Move Down. bazy danych spowodują, że nie wszystkie da- ice – pozwala na wybranie pojedynczej wartości
Wszystkie zmiany, które wprowadzamy ne będą widoczne na wydrukach. z predefiniowanego zestawu. Druga (Multiple)
w tym oraz w innych okienkach, znajdują umożliwia wskazanie wielu spośród nich. We
swoje odzwierciedlenie w zapytaniu SQL kie- Parametry raportów wszystkich przypadkach konieczne jest ustale-
rowanym do bazie danych. Możemy je na bie- Kolejnym typem pól obsługiwanym przez Da- nie domyślnych wartości. Pozwalają na to po-
żąco śledzić za pomocą znanego nam już okna taVision jest Parameter Field. Pozwala on na la pojawiające się po prawej stronie okienka Pa-
Database>SQL Query Text. każdorazowe określanie wartości wybranych rameter. O ile w przypadku typów Single i Ran-
Oprócz sortowania rezultatów możliwe parametrów. To z kolei umożliwia wielokrot- ge sprawa jest prosta (wystarczy wprowadzić
jest także wygodne grupowanie danych. Służy ne wykorzystywanie raportów przy jednocze- odpowiednio jedną wartość lub dwie skrajne),
do tego okienko Report>Group By. Jego wy- snej zmianie niektórych z ustawień. Wartości o tyle listy wymagają nieco więcej pracy.
gląd oraz zasady działania są identyczne, jak wprowadzane są w osobnych okienkach, a za- W trakcie projektowania raportu trzeba bo-
w przypadku narzędzia służącego do sortowa- tem znajomość składni języka SQL w trakcie wiem wpisać wszystkie dopuszczalne warto-
nia wyników. generowania raportów z gotowych szablonów ści, za każdym razem klikając przycisk Add to
Do tej pory umieszczaliśmy w raporcie jest zbędna. Nie trzeba również orientować się List. Niepotrzebne wpisy usuwamy klawiszem
jedynie wartości pobrane z poszczególnych w strukturze bazy danych. Po jednorazowym Remove Selected from List. Stworzenie listy jest
pól bazy danych. Oczywiście możliwe jest zaprojektowaniu raportu może on zostać bły- bardziej pracochłonne niż poprzestanie na po-
także wprowadzenie innych informacji. Ob- skawicznie wygenerowany przez każdego. lach Single i Range, ale uniemożliwia wpisanie
sługiwane typy danych wymienione są w me- Konieczne jest tylko określenie poprawnych niepoprawnych wartości. A zatem powinniśmy
nu Insert. Najbardziej podstawowym z nich wartości parametrów. decydować się na użycie właśnie tych typów pa-
jest Text. Polecenie to wstawia do raportu po- Parametry dodajemy poleceniem Inser- rametrów, oczywiście jeśli pozwalają na to ana-
le tekstowe, które można wypełnić dowolną t>Parameter Field. Nie musimy go wykony- lizowane przez nas dane.
treścią. DataVision oferuje ponadto podsta- wać, jeśli wcześniej otwaorzyliśmy już okien- W górnej części okienka Parameter znajdu-
wowy pakiet funkcji formatujących, które nie ko Fields. W takiej sytuacji po prostu od- ją się dwa dodatkowe pola, które służą do okre-
są wprawdzie bardzo wygodne w obsłudze, najdźmy na znajdującej się w nim liście ka- ślania nazwy ustawienia (Name) oraz treści py-
ale pozwalają na poprawienie wyglądu gene- talog Parameters. Następnie wybierzmy ko- tania, które zostanie zadane użytkownikowi
rowanych dokumentów. Kwestią tą zajmiemy mendę New Parameter z menu Field. Otwo- w trakcie wykonywania raportu (Question).
się w dalszej części tego artykułu. rzy ona osobne okienko, w którym będziemy Pierwsze z nich jest istotne, gdyż do parametrów
będziemy się odwoływać właśnie za pomocą
nazwy. Działanie tego mechanizmu wypróbu-
jemy już za moment. Tymczasem zatwierdźmy
wprowadzone zmiany przyciskiem OK. Nowo
utworzony parametr zostanie umieszczony na li-
ście znajdującej się w okienku Fields.
W tej chwili wydanie polecenia generują-
cego raport (Report>Run) spowoduje przekie-
rowanie nas do okna zawierającego przygoto-
wane przez nas wcześniej pytanie. Po wpisa-
niu wartości parametru lub wybraniu jej z li-
sty raport zostanie wygenerowany i wyświe-
tlony na ekranie. Na razie jednak jego treść
nie jest zależna od ustawień wprowadzonych
przez użytkownika. Aby parametr stał się rze-
czywiście przydatny i mający wpływ na uzy-
skiwane wyniki konieczne jest wbudowanie go
w skład poleceń SQL. Dokonamy tego za po-
Rysunek 3. Główne okno programu z widocznym projektem raportu mocą okienka Record Selection Criteria, wy-

40 luty 2010
Rozwiązania
DataVision – raporty z baz danych

woływanego poleceniem Report>Select Re- pełnienie dopuszczalnych wartości parametru Formuły i skrypty
cords. Okno to zawiera jedynie puste pole tek- o znak procenta (%). Pozwoli to na popraw- DataVision oferuje także bardziej rozbudo-
stowe, do którego możemy wprowadzić frag- ne wykonanie zapytania SQL. Jeżeli w trakcie wane mechanizmy pozwalające na stero-
ment zapytania SQL. Zostanie on dołączony do przygotowywania skomplikowanych reguł po- wanie procesem tworzenia raportów. Pole-
pełnego polecenia wysyłanego przez DataVi- pełnimy błąd, to po rozpoczęciu procesu genero- gają one na tworzeniu skryptów, domyślnie
sion do bazy danych, za klauzulą WHERE. Mo- wania raportu zostaniemy o tym powiadomieni w języku Ruby. Są one dołączane do projek-
żemy wpisać cały kod ręcznie, ale szybszym komunikatem aplikacji. Szczęśliwie DataVision tu w postaci formuł. Nowe formuły tworzy-
rozwiązaniem będzie przejście do listy Fields umożliwia tworzenie bardzo skomplikowanych my za pomocą polecenia Field>New For-
i odnalezienie pola, którego wartość zamierza- zapytań, obciążając użytkownika wyłącznie ko- mula, dostępnego w menu okienka Fields.
my filtrować, a następnie przeciągnięcie go do niecznością częściowo samodzielnego złożenia Pozwala ono na określenie nazwy skryp-
modułu Record Selection Criteria. Kolejnym fragmentu następującego po klauzuli WHERE. Je- tu. Po jej utworzeniu formuła pojawi się
krokiem powinno być wskazanie utworzonego żeli zdecydujemy się na skorzystanie z dwóch w oknie Fields, w katalogu Formulas. Po-
przez nas wcześniej parametru. Znajduje się on lub większej liczby parametrów, to powinni- dwójnie kliknięcie na nazwie otworzy osob-
na tej samej liście, w katalogu Parameters. Je- śmy połączyć właściwie poszczególne warunki ne pole edycyjne pozwalające na wprowa-
go także należy przeciągnąć do okienka Record (AND lub OR). W takiej sytuacji po uruchomieniu dzenie kodu skryptu. W górnej części tego
Selection Criteria. Pojawi się on tam w postaci generatora raportu użytkownik będzie musiał okienka znajduje się rozwijana lista Scrip-
ciągu znaków {?nazwa_parametru}. Jeśli za- określić kilka ustawień. Pytania wprowadzone ting Language. Umożliwia ona wskazanie ję-
tem zdecydujemy się na ręczne wprowadzenie przez nas w okienku służącym do tworzenia pa- zyka, w którym zamierzamy napisać skrypt.
zawartości klauzuli WHERE, to powinniśmy po- rametrów (pole Question) pojawią się na liście. Standardowo DataVision oferuje jedynie
przedzić nazwę parametru znakiem zapytania, Wskazanie jednego z jej parametrów uaktywni wsparcie dla Ruby. Języki skryptowe są ob-
a całość umieścić w nawiasach klamrowych. pole pozwalające na określenie potrzebnej war- sługiwane za pomocą BSF (Bean Scripting
Podobną notację stosujemy wstawiając pola tości. Konieczne jest właściwe skonfigurowanie Framework), co pozwala na dodanie kolej-
z tabel bazy danych. W tym przypadku należy wszystkich ustawień raportu. W przeciwnym nych. Dokonujemy tego za pomocą okienka
jednak pominąć znak zapytania. Nie wystarczy wypadku zapewne nie uda nam się uzyskać Formula Languages, otwieranego za pomocą
natomiast wprowadzenie samej nazwy pola, z bazy danych potrzebnych informacji. menu Report. Należy tam wpisać nazwę no-
trzeba poprzedzić ją kropką oraz identyfikato- Mechanizm parametrów okaże się naj- wego języka oraz odpowiedniej klasy. Zmia-
rem odpowiedniej tabeli. Procedura ta nie różni prawdopodobniej kluczowy podczas wielo- ny zatwierdzamy przyciskiem Add/Modify
się zatem wiele od tworzenia zwyczajnych ty- krotnego tworzenia raportów dotyczących te- Language. Dodatkowo warto sprawdzić, czy
powych zapytań SQL. go samego źródła danych. O ile sam proces DataVision rozpoznaje nowy język. W tym
Podczas przeciągania pól i parametrów do przygotowywania zapytań do bazy wymaga celu naciśnijmy klawisz Test Language. Jeśli
okienka Record Selection Criteria program au- choć podstawowej znajomości składni SQL, wprowadzone przez nas ustawienia okażą się
tomatycznie dopisuje w nim odpowiednie na- o tyle zestawienie z już istniejącego projektu poprawne, to na ekranie pojawi się komuni-
zwy. O umieszczenie operatorów w zapytaniu może zostać wygenerowane przez każdą oso- kat Language's class was found.
musimy jednak zadbać już sami. Pomiędzy na- bę. Wymagane jest jedynie wprowadzenie po- Listę obsługiwanych języków znaleźć
wiasami klamrowymi zawierającymi identyfi- prawnych wartości parametrów. można na stronach internetowych projek-
kator pola oraz parametru powinniśmy wpro-
wadzić jeden z operatorów pozwalających
na porównywanie. Oprócz znaków równości
i większości/mniejszości możemy korzystać
także z LIKE oraz IN. W pierwszym przypad-
ku konieczne będzie najprawdopodobniej uzu-

Rysunek 5. Łączenie tabel w DataVision

Rysunek 4. Okienko Fields pozwala na wskazanie


tabel oraz pól bazy danych, a także na dodawanie
parametrów i formuł Rysunek 6. Sortowanie rezultatów wyświetlanych w raporcie

www.lpmagazine.org 41
Rozwiązania
DataVision – raporty z baz danych

tu BSF (http://jakarta.apache.org/bsf/). Tam Formatowanie raportu Umieszczając w treści raportu wiele ele-
także znajdziemy jego pełną dokumentację. Utworzenie raportu zawierającego wszystkie mentów napotykamy niekiedy na problemy
W skryptach odwołujemy się do poszczegól- potrzebne nam dane to jeszcze nie wszystko. związane z odpowiednim ich rozłożeniem na
nych tabel, pól oraz parametrów w sposób opi- Trzeba również zadbać o właściwą prezenta- stronie. Możemy oczywiście przenosić każde
sany wcześniej, korzystając w tym celu z na- cję wyników pracy. Pod tym względem Da- z pól za pomocą myszy. Po zaznaczeniu jednego
wiasów klamrowych i znaków zapytania. taVision nie ma nam wiele do zaoferowania. z nich DataVision pozwoli nam także na zmia-
W menu Field znajdującym się w okienku Umiejętne wykorzystanie narzędzi dostęp- nę jego rozmiarów. To jednak może nie wystar-
Fields pojawia jeszcze jeden typ danych – ko- nych w programie pozwoli jednak na osią- czyć, jeśli zależy nam na precyzji. W takiej sy-
lumny definiowane przez użytkownika (User gnięcie przyzwoitych rezultatów. W razie po- tuacji należy zaznaczyć wybrane pole i wydać
Columns). Dodajemy je poleceniem New Co- trzeby sięgniemy ponadto po zewnętrzne na- polecenie Format>Position and Size. Trafimy
lumn Name. Tak jak w przypadku parametrów rzędzia, eksportując do nich dokumenty wy- wówczas do niewielkiego okienka, w którym
i formuł koniecznie jest wpisanie nazwy nowe- generowane przez DataVision. będziemy mogli wskazać położenie elementu na
go obiektu. Następnie trafimy do okienka, któ- Standardowy raport składa się z nagłówka stronie (X i Y) oraz jego wysokość i szerokość.
re pozwoli nam na określenie, jakie dane ma- (Raport Header), stopki (Report Footer) oraz DataVision posiada proste funkcje pozwa-
ją znaleźć się w utworzonej kolumnie. Zawiera treści (Detail). Jest on ponadto podzielony na lające na formatowanie tekstu wyświetlanego w
ono pojedyncze pole edycyjne. Wprowadzane strony. Ich wielkość zależy od ustawień znaj- poszczególnych polach. Umożliwia to polecenie
w nim zmiany zatwierdzamy przyciskiem OK. dujących się w podmenu File>Paper Size. Do- Format>Format Field. Jest ono aktywne jedy-
W odróżnieniu od parametrów (które myślnie program może zastosować format in- nie wtedy, gdy jedno z pól pozostaje zaznaczo-
pojawiają się w zapytaniu SQL po klauzuli ny niż A4. Warto zatem upewnić się zawcza- ne. W okienku Field Format znajdują się dwie
WHERE) kolumny użytkownika wprowadzane su, czy ustawienia są poprawne. Każda stro- zakładki. Pierwsza z nich (Format) pozwala na
są za poleceniem SELECT. Dzięki temu moż- na zawiera własny nagłówek (Page Header) ustalenie właściwości tekstu, natomiast druga
liwe jest umieszczenie w raporcie informacji oraz stopkę (Page Footer). Podczas przecią- (Border) – na określenie rodzaju ewentualnego
innych niż pochodzące bezpośrednio z bazy gania dowolnego pola z okienka Fields do tre- obramowania. Dostępne są funkcje umożliwia-
danych. Poza tym kolumny użytkownika po- ści raportu DataVision automatycznie umiesz- jące zastosowanie pogrubienia, kursywy i pod-
zwalają na wygodne skorzystanie z funkcji cza jego nazwę w sekcji Page Header. Identy- kreślenia, a także zawijania linii, wyrównania
oferowanych przez system zarządzania ba- fikator tabeli wraz z następującą po nim krop- oraz barwy tekstu. Oczywiście znajdziemy rów-
zami. Proste operacje, arytmetyczne lub na ką jest usuwany. Może się zdarzyć, że standar- nież opcję służącą do zmiany wykorzystywanej
tekście, są możliwe do wykonania za pomo- dowe ustawienia okażą się w zupełności wy- czcionki i jej wielkości. Z kolei zakładka Border
cą kodu SQL. Przykładowo wpisanie do ko- starczające, o ile zależy nam tylko na tym, by umożliwia obramowanie o dowolnym kolorze
lumny polecenia 2 *({tabela.pole}) spo- w nagłówku strony pojawiały się jedynie na- i grubości, znajdujących się na wszystkich lub
woduje podwojenie wartości numerycznych. zwy wykorzystywanych pól. wybranych krawędziach pola.
Sposób uzyskiwania dostępu do pól nie róż-
ni się od stosowanego w przypadku parame-
trów oraz formuł, czyli polega na stosowaniu
nawiasów klamrowych.
Poza opisanymi funkcjami DataVision
oferuje niewiele więcej sposobów uzyski-
wania dostępu do danych i ich obróbki. Si-
łę programu stanowi wsparcie dla języków
skryptowych, co pozwala na rozbudowywa-
nie prostych raportów. Dodatkowo możli-
we jest osadzenia DataVision we własnych
projektach, w tym aplikacjach interneto-
wych. Przykładowe rozwiązanie tego ty-
pu zostało przedstawione w artykule Repor-
ting For The Web With DataVision, dostęp-
nym na stronach Franka Zammettiego (http:
//www.zammetti.com/articles/rftwwdv/).

Rysunek 7. DataVision pozwala na stosowanie pa-


rametrów, których wartości określane są przez użyt-
kownika w momencie generowania raportu Rysunek 8. Przykładowy, niesformatowany raport z bazy danych

42 luty 2010
Rozwiązania
DataVision – raporty z baz danych

Aplikacja została wyposażona w kilka do- one, to rozwiązaniem jest rezygnacja z wydru- DataVision pozwala na przejrzenie całego do-
datkowych narzędzi pozwalających na zmia- ku wygenerowanych dokumentów bezpośred- kumentu w osobnym oknie, a zatem nie nara-
nę domyślnego formatowania. Są one dostęp- nio z programu i przekazanie ich do innych żamy się na niebezpieczeństwo przeoczenia
ne w menu Format. Oprócz zmiany wyglądu aplikacji. W tym celu program oferuje bogate jakichś poważnych błędów w treści i forma-
raportu konieczne będzie zapewne wstawie- opcje eksportu. Są one realizowane za pomocą towaniu. Alternatywne rozwiązanie stanowi
nie dodatkowych informacji ogólnych w je- funkcji Export z menu Report. Także po wyge- eksport do pliku PDF. Możemy również sko-
go nagłówku i stopce. W tym momencie przy- nerowaniu raportu możemy zdecydować o for- rzystać ze wsparcia dla LaTeX-a oraz HTML.
dadzą się nam pola specjalne. Definiujemy je macie, w którym powinien on zostać zapisa- Jednak w większości przypadków najprost-
z poziomu okienka Fields i znajdującego się ny. Służy do tego komenda Report>Export do- szym rozwiązaniem jest zapis jako PDF. Do-
w nim katalogu Special Fields. Pola specjal- stępna w okienku z gotowym dokumentem. kładną listę wszystkich wspieranych forma-
ne pozwalają na określenie tytułu raportu, jego DataVision obsługuje pliki CSV, DocBook, tów wraz z informacjami dotyczącymi spo-
opisu, daty, a także informacji o autorze. Po- HTML, LaTeX, PDF, XML, a także XLS. Jeśli sobu zachowywania danych w tych plikach
za tym umożliwiają one stosowanie numeracji więc raport nie spełnia naszych wymagań doty- znaleźć można w dokumentacji programu
stron. Pola specjalne przeciągamy myszą do czących formatowania, ale znajdujące się w nim (http://datavision.sourceforge.net/DataVision/
głównego okna. Natomiast ich edycja wymaga dane są poprawne, to najlepszym rozwiązaniem le.html#list).
wydania polecenia Report>Summary. Otwiera jest skorzystanie właśnie z opcji eksportu. Warto Zachowanie wygenerowanych raportów
ono osobne okienko, w którym określamy ty- zdecydować się na użycie formatu CSV, wybie- w postaci plików CSV może okazać się ko-
tuł i nazwę raportu, a także jego opis i nazwi- rając w tym celu z rozwijanej listy funkcję Com- nieczne nie tylko w celu poprawienia forma-
sko autora. Pojawią się one w treści gotowego ma-Separated. Dzięki temu aplikacja zapisze towania. DataVision nie pozwala na stosowa-
dokumentu po wstawieniu odpowiednich pól dane bez zbędnego formatowania, które niekie- nie zaawansowanych technik analizy danych,
do nagłówka bądź stopki raportu. dy jedynie psuje efekt. Konieczne może okazać w tym wizualizacji. Jeśli planujemy wzboga-
DataVision pozwala na tworzenie zesta- się przesunięcie niektórych nagłówków, a tak- cenie raportu o takie właśnie elementy, to nie-
wień o bogatszej strukturze, niż domyślna. że usunięcie zbędnych wierszy. Sytuacja kom- zbędne będzie sięgnięcie po zewnętrzne narzę-
Możliwe jest utworzenie wielu sekcji, zarów- plikuje się, gdy w treści raportu pojawia się wie- dzia. W prostszych zastosowaniach sprawdzi
no znajdujących się w ciele strony, jak i na- le grup. W takim wypadku lepiej jest unikać za- się arkusz kalkulacyjny. W sytuacjach wyma-
główków oraz stopek. Aby to uczynić należy pisu dokumentu w pliku Excela. gających zaawansowanego przetwarzania in-
zaznaczyć jedno z pól umieszczonych wcze- Poprawnie sformatowane raporty może- formacji powinniśmy skorzystać raczej z na-
śniej w tym fragmencie raportu, który zamie- my wydrukować bezpośrednio z programu. rzędzi do eksploracji danych. One również
rzamy skopiować. Wskazanie zawartości sek-
cji Detail i wydanie polecenia Insert>Section
spowoduje dodanie kolejnego elementu stano-
wiącego treść raportu. Otrzyma on nazwę De-
tail (b). W analogiczny sposób możemy utwo-
rzyć dodatkowe nagłówki i stopki. Zawartości
wszystkich sekcji będą sumowane i ukażą się
łącznie w ostatecznej wersji raportu.
Tworzone dokumenty można rozbudować
jeszcze bardziej. Pozwala na to funkcja sub-
raportów, służąca do zagnieżdżania kolejnych
dokumentów. Poza tym DataVision umożliwia
również stosowanie tak zwanych grup. Dzię-
ki nim uwypuklimy w raporcie zestawy da-
nych charakteryzujące się takimi samymi war-
tościami wybranego pola, sortując je zarazem
i wstawiając czytelny nagłówek. Grupy two-
rzymy za pomocą polecenia Insert>Group.
Otwiera ono niewielkie okienko, w którym
możemy wskazać odpowiednie pole, a tak-
że określić sposób sortowania wyników. Na-
główek grupy jest automatycznie umieszcza-
ny powyżej sekcji Detail, w treści raportu.
Nie musimy wykonać żadnych dodatkowych
czynności. Od razu po dodaniu grupy możemy
przystąpić do generowania dokumentu.

Eksport rezultatów analiz


Opisane funkcje stanowią większość narzędzi
dostępnych w DataVision i służących do for- Rysunek 9. Gotowy raport można wyeksportować do arkusza kalkulacyjnego i tam poprawić jego forma-
matowania raportów. Jeśli nie wystarczą nam towanie

www.lpmagazine.org 43
Rozwiązania
DataVision – raporty z baz danych

mogą łączyć się z systemami bazodanowymi. Większość z tworzonych przez nas rapor- czas prośba o określenie wartości parametrów.
Dobrym rozwiązaniem jest użycie systemu tów posiada zapewne zestaw parametrów, któ- Następnie aplikacja wygeneruje gotowy raport
statystycznego R, opisywanego już w takich re zmieniają się podczas kolejnych uruchomień i przedstawi go w osobnym okienku – tak jak
właśnie zastosowaniach w Linux+ 2/2008. aplikacji. One również muszą zostać wprowa- podczas normalnej pracy z DataVision.
dzone w linię poleceń. Niestety, nie dokonu- Kompletny opis parametrów linii pole-
DataVision w trybie tekstowym jemy tego w prosty i szybki sposób. DataVi- ceń aplikacji znaleźć można na jej stronie in-
Do tej pory korzystaliśmy z DataVision jedy- sion wymaga od nas utworzenia osobnego pli- ternetowej (http://datavision.sourceforge.net/
nie w trybie graficznym. Jest to ważne w trak- ku XML, zawierającego wartości poszczegól- DataVision/rundv.html#runcmd). DataVision
cie przygotowywania raportów. Natomiast sa- nych parametrów. Przykładowy dokument te- nie oferuje jednak o wiele więcej poza komen-
mo generowanie dokumentów z istniejących go typu jest załączony w pakiecie z progra- dami, które zostały przedstawione w tym arty-
już projektów nie wymaga użycia wielu funk- mem (examples/parameters.xml). W pliku kule.
cji znajdujących się w graficznym interfejsie. muszą zostać wymienione wszystkie parame- Bardziej zaawansowani użytkownicy mogą
Tak naprawdę wystarczy nam jedynie polece- try potrzebne w trakcie generowania raportu. pokusić się także o ręczne modyfikowanie pro-
nie Report>Run. DataVision zapyta nas wów- Przykładowy wpis może wyglądać następu- jektów. DataVision zapisuje je w postaci plików
czas o wartości parametrów i utworzy doku- jąco: <parameter id="2"><value>0.003</ XML o prostej składni. Większość ich zawarto-
ment gotowy do wydruku. value></parameter>. Utrudnienie stanowi ści stanowią informacje dotyczące formatowa-
Zautomatyzujemy teraz proces generowa- fakt, że parametry są identyfikowane nie na nia raportów, których zapewne i tak nie zechce-
nia raportów. Jeśli posiadamy już gotowe pro- podstawie nazw, ale numerów. Fragment kodu my zmieniać bezpośrednio w kodzie. Powinny
jekty zapisane w postaci plików XML (polece- zamknięty tagiem <value> wskazuje wartość nas natomiast zainteresować znaczniki <user-
nie File>Save), to możemy na ich podstawie danego elementu. W deklaracji pojedynczego cols>, <parameters> oraz <formulas>, które
utworzyć dokumenty bezpośrednio w linii po- parametru może on pojawiać się wielokrotnie definiują odpowiednio kolumny użytkownika,
leceń. Oszczędzi to czas potrzebny na urucho- – dotyczy to list wielokrotnego wyboru. W po- parametry oraz formuły. Ich składnia jest sto-
mienie programu, a w razie potrzeby pozwo- zostałych przypadkach należy wpisać jeden sunkowo przejrzysta. Nieco więcej problemów
li na periodyczne tworzenie zestawień z infor- tag <value>. Treść przykładowego pliku pa- sprawiają znaczniki <field>, odpowiedzialne za
macji znajdujących się w bazie danych. rameters.xml, pozwalającego na utworzenie pojawienie się poszczególnych pól. Tym nie-
Korzystanie z DataVision w linii poleceń raportu zawierającego dwa parametry została mniej wprowadzenie ręcznych zmian w kodzie
sprowadza się do uruchomienia skryptu da- zamieszczona na załączonym Listingu. jest możliwe. Ta elastyczność i dostępność sta-
tavision.sh z odpowiednim zestawem para- Polecenie służące do generowania doku- nowi ważną zaletę programu, tak jak opcje wbu-
metrów. Obowiązkowe jest wskazanie ścież- mentu może posiadać następującą składnię: ./ dowywania aplikacji we własne narzędzia służą-
ki do pliku XML zawierającego przygotowa- datavision.sh -f plik.pdf -p haslo -r ce do analizy danych oraz wykorzystywania jej
ny wcześniej raport. Poza tym należy określić parameters.xml /home/user/raport1.txt. w środowisku internetowym.
format pliku wyjściowego, wartości poszcze- Po jego wykonaniu nie zobaczymy interfejsu Mimo wszystko jednak porównanie Da-
gólnych parametrów, a także wpisać poprawne aplikacji, natomiast w katalogu bieżącym po- taVision z Crystal Reports wypada na nie-
hasło do bazy danych. Pierwszą z tych infor- jawi się dokument PDF zawierający gotową do korzyść tego pierwszego. Szczęśliwie część
macji dostarczamy za pomocą jednego z kilku druku wersję raportu. Zmiana domyślnych war- ograniczeń można nadrobić z wykorzysta-
przełączników. Przykładowo, wygenerowanie tości parametrów będzie oczywiście wymagała niem innych aplikacji. Poza tym w przypad-
dokumentu PDF wymaga wpisania w linii po- w takiej sytuacji ręcznej edycji pliku konfigu- ku mniej zaawansowanych czynności sięgnię-
leceń -f nazwa_pliku. Parametr -c sprawi, racyjnego parameters.xml. Istnieje możliwość cie po prostszy, ale przenośny program okaże
że utworzony zostanie plik CSV. Domyślnie ominięcia tego ograniczenia, jednak wymaga on się na pewno rozsądnym rozwiązaniem.
kolejne komórki arkusza rozdzielane są za po- uruchamiania interfejsu graficznego DataVision. Użytkownicy zamierzający rozpocząć
mocą przecinka. Możliwe jest jednak określe- Powinniśmy tylko wzbogacić standardowe po- pracę z DataVision powinni również wziąć
nie innego znaku, za pomocą przełącznika -s. lecenie ./datavision.sh o hasło do bazy da- pod uwagę powolne tempo rozwoju aplika-
Dostęp do bazy danych wymaga podania nych oraz ścieżkę dostępu do pliku zawierają- cji. W ostatnich miesiącach prace zostały
hasła. Nie jest ono zapisywane w pliku XML za- cego raport. Komenda ./datavision.sh -p wręcz zamrożone. Tym niemniej narzędzie
wierającym projekt. Konieczne jest zatem każ- haslo /home/user/raport1.xml lub zbliżo- to w obecnym stanie nadaje się do wykorzy-
dorazowe jego wprowadzenie. Dokonujemy te- na otworzy główne okno DataVision, pomijając stania na potrzeby tworzenia raportów z baz
go parametrem -p hasło. Rozwiązanie to zmu- przy tym jednak etap wybierania projektu. Po- danych. O przydatności DataVision najlepiej
sza nas do wpisywania hasła podczas kolejnych za tym użytkownik nie zostanie zapytany o ha- świadczą pozytywne wypowiedzi jego użyt-
uruchomień programu, jednak z drugiej strony sło dostępowe do bazy danych. W takiej sytu- kowników, zamieszczane na stronach interne-
uzyskujemy dzięki temu pewność, że kod dostę- acji wystarczające okaże się naciśnięcie tuż po towych programu.
powy do bazy danych nie zostanie umieszczony otwarciu głównego okna programu kombinacji
w niezaszyfrowanym pliku z projektem. klawiszy Ctrl+R. Na ekranie pojawi się wów-

O autorze
W Sieci Autor korzysta z Linuksa od ponad dzie-
sięciu lat, zajmuje się wdrażaniem opro-
• DataVision – http://datavision.sourceforge.net/;
gramowania Open Source.
• DataVision w Sourceforge – http://sourceforge.net/projects/datavision/;
Adres kontaktowy: pawelw@innodevel.net.
• Connector/J – http://www.mysql.com/products/connector/;

44 luty 2010
Sieci komputerowe
Sieci komputerowe: część czwarta

Zostań administratorem
sieci komputerowej
Część czwarta (4/9): Adresy,
maski i routowanie w systemie Linux
Rafał Kułaga

W poprzedniej części kursu przedstawiona została metoda podziału połączenia internetowego.


Zastosowaliśmy w tym celu funkcję translacji adresów (NAT) udostępnianą przez urządzenie dedykowane
APPro 2405. W tej części cyklu zajmiemy się opisem procesu trasowania (routingu) pakietów oraz
konfiguracją komputera z zainstalowanym systemem Linux jako routera. Zapraszam do lektury!

W
linux@software.com.pl

spółczesne sieci komputerowe wy- Jednym z najważniejszych zadań związanych z bu-


korzystywane m.in. w środowiskach dową i administracją złożonymi sieciami komputero-
korporacyjnych charakteryzują się wymi jest konfiguracja trasowania pakietów (routingu).
złożoną, wielopoziomową strukturą. Pomimo zastosowania niekiedy bardzo złożonych me-
Liczba węzłów w takich sieciach może sięgać nawet kil- tod i protokołów, jest to proces, którego działanie jest
kunastu tysięcy, rozlokowanych w różnych krajach i po- zrozumiałe niemalże intuicyjnie. W trakcie lektury te-
łączonych w tzw. intranet – korporacyjną sieć kompu- go artykułu dowiesz się, w jaki sposób możliwe jest do-
terową, pozwalającą na łatwy dostęp do zasobów infor- starczenie pakietu do dowolnego komputera podłączo-
macyjno-sprzętowych. Czytelnik z pewnością ma świa- nego do internetu jedynie na podstawie znajomości je-
domość, iż budowa oraz zarządzanie taką infrastrukturą go adresu IP. Szczegółowo omówimy również znacze-
stanowi nie lada wyzwanie nawet dla doświadczonych nie masek podsieci oraz ich zastosowanie w celu wy-
ekspertów sieciowych. dzielenia podsieci, pozwalających na zwiększenie bez-
Informacje zawarte w trzech pierwszych częściach pieczeństwa i wydajności tworzonego przez nas roz-
cyklu pozwalają na przystąpienie do budowy niewiel- wiązania.
kiej sieci lokalnej, obsługującej od kilkunastu do kil- System Linux słynie z dostępności doskonałych na-
kudziesięciu komputerów. Z racji niewielkiego rozmia- rzędzi, służących do konfiguracji funkcji związanych
ru, nie było potrzeby wprowadzania podziału na podsie- z trasowaniem. Część z Czytelników z pewnością ucie-
ci, zaś konfiguracja połączeń z innymi sieciami ograni- szy wiadomość, iż dostępne są specjalizowane dystrybu-
czała się do wykorzystania techniki NAT (Network Ad- cje, niejednokrotnie przewyższających funkcjonalnością
dress Translation) w celu podziału połączenia z interne- tańszy sprzęt sieciowy. Decydując się na wykorzystanie
tem, dostępnego za pośrednictwem interfejsu w standar- komputera jako routera, musimy jednak pamiętać o ogra-
dzie Ethernet. niczeniach wydajnościowych i problemach związanych

46 luty 2010
Sieci komputerowe
Sieci komputerowe: część czwarta

z bezpieczeństwem – w artykule zajmiemy sieci. Są one 32-bitowymi liczbami całkowi- fizyczną. Okazuje się, iż w trakcie wysyła-
się również tymi zagadnieniami. tymi, dla wygody zapisywanymi w postaci nia pakietu adres odbiorcy porównywany jest
Informacje zawarte w tej części kursu kropkowo-dziesiętnej (np. 255.255.255.0). z adresem sieci, w której znajduje się nadaw-
pozwolą Czytelnikowi na lepsze zrozumie- Jeżeli masz już jakieś doświadczenie w pra- ca. W przypadku gdy oba węzły znajdują się
nie działania sieci komputerowych, realiza- cy z sieciami komputerowymi, to z pew- w tej samej sieci, nie ma potrzeby przesyła-
cji zadań warstwy sieciowej modelu OSI oraz nością zauważyłeś charakterystyczny roz- nia pakietu za pośrednictwem routera – wy-
przeprowadzenie konfiguracji statycznych kład bitów w maskach podsieci. Po zapisa- starczy w tym celu sieć fizyczna. Wykorzy-
i dynamicznych metod routingu w systemie niu w postaci binarnej, mają one bowiem stanie trasowania jest zatem konieczne jedy-
Linux. Należy jednak pamiętać, iż nie są to postać ciągu jedynek, dopełnionego zerami nie w przypadku, gdy komputery znajdują się
kompletne rozwiązania, gotowe do zastoso- do rozmiaru 32 bitów. Przykładową parę ad- w różnych sieciach.
wania na sprzęcie działającym w sieciach fir- res IP-maska podsieci przedstawiono na Ry-
mowych. Bez odpowiedniego wzmocnienia sunku 1. Adres sieci stanowią bity, którym Wyznaczanie
bezpieczeństwa systemu, nasz router stałby w masce podsieci odpowiadają jedynki. Po- adresu sieci i identyfikatora hosta
się bowiem łakomym kąskiem dla osób o nie- została część adresu IP stanowi identyfika- Wyjaśnienia może wymagać sposób wyzna-
cnych zamiarach. Tematem zwiększania bez- tor hosta. czenia adresu sieci oraz identyfikatora ho-
pieczeństwa sieci komputerowych oraz budo- Obliczenie, ile adresów IP w każdej sta. Dla osób obeznanych z algebrą Boole-
wy firewalli zajmiemy się szczegółowo w na- z podsieci możemy wygenerować przy za- 'a jest to z pewnością oczywiste, jednak dla
stępnej części cyklu. danej masce nie jest trudne. Dla ustalenia pewności przedstawimy tu algorytm postę-
uwagi przyjmijmy, iż interesująca nas ma- powania.
Adresy IP ska podsieci ma wartość 255.255.255.128. Przed przystąpieniem do wyznaczenia
i maski podsieci a routowanie W celu weryfikacji poprawności, zapiszemy adresu sieci oraz identyfikatora hosta, należy
Do tej pory, przypisując adresy IP kompute- ją w postaci binarnej: 11111111.11111111. adres IP oraz maskę podsieci zapisać w po-
rom w naszej sieci lokalnej, dokonywaliśmy 11111111.10000000. Widzimy, iż po ciągu staci binarnej. Następnie wykonujemy ope-
dużego uproszczenia. Wszystkie kompute- 25 jedynek następuje 7 zer, wyznaczających rację logiczną AND na odpowiadających bi-
ry podłączone do sieci lokalnej znajdowały bity odpowiadające identyfikatorowi hosta. tach adresu IP oraz maski podsieci (wartości
się w tej samej podsieci, co mogło mieć nie- Teoretyczna liczba identyfikatorów hostów podstawowych funktorów logicznych zosta-
korzystny wpływ na jej wydajność oraz bez- w takiej sieci wynosi 128. Liczba użytecz- ły zebrane w tabeli Podstawowe funktory lo-
pieczeństwo. Możemy temu zaradzić poprzez nych adresów (takich, które można przy- giczne), wyznaczając tym samym adres sie-
wybór odpowiednich masek podsieci, wyzna- pisać węzłom) wynosi 126. Mniejsza licz- ci. Pozostała część adresu IP stanowi identy-
czającej linię podziału pomiędzy częścią ad- ba adresów użytecznych spowodowana jest fikator hosta.
resu IP odpowiedzialną za identyfikację sieci zarezerwowaniem pierwszego i ostatniego Wyznaczanie adresu sieci oraz identyfi-
a częścią określającą numer hosta. identyfikatora hosta na potrzeby adresu sie- katora hosta jest bardzo proste, dostępnych
ci oraz adresu broadcast. O transmisji bro- jest również wiele programów wyręczają-
Adres IP a maska podsieci adcastowej powiemy więcej w dalszej czę- cych nas w tym zadaniu. Jednym z podstawo-
Jak z pewnością pamiętasz, adres IP jest 32- ści artykułu. wych narzędzi jest kalkulator adresów IP ip-
bitową dodatnią liczbą całkowitą, dla wygo- Uważny Czytelnik z pewnością zada te- calc,w postaci skryptów na stronach interne-
dy zapisywaną w notacji kropkowo-dziesięt- raz pytanie: No dobrze, ale co daje nam zna- towych (Rysunek 2).
nej (np. 192.168.1.1). Rownież w rozległych jomość adresu sieci? W jaki sposób podział
sieciach, takich jak internet, do określenia adresu IP jest wykorzystywany w trakcie tra- Klasy adresów
odbiorcy pakietu wykorzystywany jest je- sowania?. Odpowiedź na to pytanie wymaga IP oraz routowanie bezklasowe
dynie adres IP. W związku z tym, koniecz- przyjrzenia się działaniu sieci lokalnej oraz W jednej z pierwszych części cyklu powie-
ne jest zapisanie w nim informacji, pozwa- zastanowieniu się, kiedy pakiet opuszcza sieć dzieliśmy, iż w początkach internetu korzy-
lających na odpowiednie skierowanie pa-
kietu do celu. Zwróć uwagę, iż w celu prak- Tabela 1. Podstawowe funktory logiczne
tycznego wykorzystania adresu IP w proce- p q p AND q p OR q NOT p p XOR q
sie trasowania, konieczne jest zrezygnowa- 1 1 1 1 0 0
nie z płaskiego modelu 32-bitowej puli ad- 1 0 0 1 0 1
resów. Można to zilustrować poprzez analo-
0 1 0 1 1 1
gię do życia codziennego – niemożliwe jest
0 0 0 0 1 0
szybkie odnalezienie budynku jedynie na
podstawie znajomości jego numeru (identy-
fikator hosta), nawet jeżeli byłby on unikal- Tabela 2. Klasy adresów IP
ny w skali obszaru poszukiwań. Jeżeli jed- Klasa Pierwszy oktet Zakres pierw- Liczba Liczba hostów Typ sieci
nak znamy położenie ulicy, na której znaj- szego oktetu sieci
duje się dany budynek (adres sieci), to je- A 0XXXXXXX 1 - 126 126 16.777.214 Bardzo duże
go odnalezienie nie będzie stanowić dla nas
B 10XXXXXX 128 - 191 16.384 65.534 Średniej wiel-
problemu.
kości
W celu rozdzielenia adresu sieci oraz
identyfikatora hosta stosuje się maski pod- C 110XXXXX 192 - 223 2.097.152 254 Małe

www.lpmagazine.org 47
Sieci komputerowe
Sieci komputerowe: część czwarta

stano z tzw. klas adresów IP. Podział adresów sposób zapisuj maski sieciowej do nowej me- kich komputerów w podsieci. Jednym
IP na klasy pozornie upraszczał budowę sie- todologii, przyjęto formę zapisu adres_ip/N, z głównych zastosowań transmisji broadca-
ci komputerowych, znacznie utrudniał jed- gdzie N oznacza liczbę bitów maski określa- stowej są aplikacje oraz protokoły wyma-
nak efektywne zagospodarowanie puli adre- jących adres sieci. gające informacji o strukturze sieci. Teore-
sów. Wraz z rozwojem internetu pomysł ten Opis szczegółów metodologii CIDR tycznie możliwe byłoby ręczne wprowadza-
został porzucony na rzecz bardziej efektyw- znacznie wykracza poza zakres tego artyku- nie odpowiednich danych przez użytkow-
nego rozwiązania umożliwiającego przypisy- łu – do pełnego zrozumienia informacji za- nika, jednak byłoby to rozwiązanie bardzo
wanie dowolnych masek podsieci. Wykorzy- wartych w następnych paragrafach wystarczy nieefektywne oraz podatne na błędy. Pro-
stanie routowania bezklasowego przyczyniło ogólne zrozumienie znaczenia masek podsie- ces ten możemy usprawnić, rozgłaszając za-
się również do zmniejszenia tempa wyczer- ci oraz wprowadzanego przez nie podziału pytanie a następnie przetwarzając odpowie-
pywania się puli 32-bitowych adresów IPv4 przestrzeni adresów. dzi pochodzące od hostów. Jednym z przy-
oraz uproszczenia tablic routowania przecho- kładów wykorzystania transmisji rozgłosze-
wywanych na routerach (więcej na temat ta- Adresy niowej na poziomie warstwy sieciowej mo-
blic routingu powiemy w dalszej części ar- i komunikacja broadcast/multicast delu OSI są protokołu wymiany informacji
tykułu). Tworząc podział na podsieci powinniśmy pa- o trasowaniu, wykorzystywane w routingu
Bezklasową metodę adresacji oraz wy- miętać, iż użyteczna liczba identyfikatorów dynamicznym.
korzystującą ją metodologię routingu okre- jest mniejsza od liczby teoretycznej. Jest to Zwróćmy uwagę, iż przesyłanie dużych
śla się skrótem CIDR (Classless Inter-Do- spowodowane wykorzystaniem pierwszego ilości pakietów broadcastowych może przy-
main Routing). Głównym założeniem meto- adresu puli jako adresu sieci oraz ostatnie- czynić się do znacznego spadku wydajno-
dologii CIDR jest stosowanie masek podsie- go adresu jako adresu broadcast, wykorzysty- ści sieci – każdy pakiet musi bowiem zo-
ci o dowolnej liczbie bitów określających ad- wanego w transmisji rozgłoszeniowej. Czym stać odebrany i przetworzony przez każdą
res sieci. Jest to przeciwieństwo adresowania jest oraz w jakim celu stosowana jest transmi- z maszyn znajdujących się w danej podsie-
klasowego, w którym maska podsieci składa sja rozgłoszeniowa? ci. Zwiększenie wydajności oraz zmniejsze-
się z 8-bitowych bloków (definiujących kla- Wiele protokołów i aplikacji wyma- nie nadmiarowego ruchu jest jedną z przy-
sy adresów: A, B oraz C). Aby dostosować ga możliwości wysłania pakietu do wszyst- czyn wydzielania podsieci. Dzięki odpo-
wiedniej konfiguracji routerów (którą zaj-
miemy się w następnych paragrafach), bę-
dziemy mogli ograniczyć komunikację po-
����������� �������� między podsieciami do wymaganych usług
i protokołów.
��������������������������������������������������������������������������������
Wyznaczanie adresu broadcast na pod-
stawie zapisu binarnego maski podsieci oraz
��� adresu IP jest bardzo proste – na adresie IP
wykonujemy bitowe OR (lub) z zanegowaną
����� ������������������������������������������������������������������� (NOT) maską sieciową. Upraszczając, moż-
��������� ���
na powiedzieć, iż w adresie IP zamieniamy
wszystkie bity odpowiadające identyfikato-
������������������������ rowi hosta na 1, pozostawiając część odpo-
������������� wiadającą adresowi sieci bez zmian. Widać
więc, że adres rozgłoszeniowy jest najwyż-
szym identyfikatorem hosta w danej pod-
sieci.
Rysunek 1. Przykładowa para adres IP – maska podsieci Protokół IP dopuszcza również przesy-
łanie danych do wielu odbiorców przy wy-
korzystaniu multicastu. W przeciwieństwie
do transmisji rozgłoszeniowej, w transmisji
multicastowej dane odbierane są tylko przez
odpowiednio skonfigurowane hosty. Istnieje
wiele metod pozwalających na realizację ta-
kiego przesyłu danych, brak jest jednak ja-
sno określonych i uznanych standardów. Za-
gadnienia związane z transmisją multicasto-
wą znacznie wykraczają poza zakres kursu,
tak więc nie będziemy się nimi dłużej zaj-
mować.

Routowanie – podstawy
Po zapoznaniu z podstawowymi informacja-
Rysunek 2. Jedno z narzędzi typu ipcalc, dostępne poprzez przeglądarkę internetową mi dotyczącymi struktury adresów IP, ma-

48 luty 2010
Sieci komputerowe
Sieci komputerowe: część czwarta

sek podsieci oraz metodologii bezklasowej uterów. Dlaczego więc zrezygnowano z ich co innym typem mostu zapoznamy się w czę-
CIDR, możemy przystąpić do omówienia wykorzystania? Okazuje się, że mosty nie ści cyklu poświęconej sieciom bezprzewodo-
podstawowych zagadnień związanych z pro- zapewniają dostatecznej kontroli nad pracą wym). Warto jednak zapoznać się z zasadą
cesem trasowania pakietów. sieci oraz utrudniają jej rozbudowę i ograni- ich działania, ponieważ pozwala to na lepsze
O dużej złożoności routowania najlepiej czają skalowalność. zrozumienie routowania.
świadczy obszerność publikacji omawiają- Zastanówmy się, co stanie się, gdy do
cych to zagadnienie. Informacje zawarte mostu dotrze ramka wysłana w trybie bro- Przebieg routowania
w tym artykule nie wyczerpują nawet pod- adcastowym. Ramki tego typu będą zawsze i śledzenie pakietów
staw trasowania – ich zadaniem jest raczej przesyłane pomiędzy segmentami. Powodu- W sieciach opartych o protokół IP, każde
stworzenie płaszczyzny, na której możliwe je to powstanie dużej ilości nadmiarowego urządzenie podejmuje decyzje o routowa-
będzie zrozumienie działania przykładów za- ruchu, mogącego drastycznie obniżyć wy- niu samodzielnie. Oznacza to, iż droga pa-
wartych w dalszej części artykułu. Osobom dajność sieci. Obecnie mosty sieciowe mają kietu od nadawcy do adresata składa się
zainteresowanym szczegółami routingu oraz znaczenie jedynie historyczne – zostały nie- z wielu przeskoków, odpowiadających prze-
działaniem protokołów wymiany informacji mal całkowicie wyparte przez routery (z nie- słaniu przez odrębne węzły. Najważniejszym
o trasach polecam zapoznanie się z informa-
cjami zawartymi na stronach wymienionych Listing 1. Konfiguracja iptables do podziału łącza poprzez translację adresów
w ramce W Sieci oraz odpowiednimi doku- #!/bin/sh
mentami RFC. WAN_INTERFACE = "eth0"

Dlaczego konieczne #załadowanie modułów jądra


jest trasowanie pakietów? modprobe ip_tables
Zanim przejdziemy do opisu oraz konfigu- modprobe iptable_filter
racji routingu w systemie Linux, zastano- modprobe iptable_nat
wimy się dlaczego trasowanie pakietów jest modprobe ip_conntrack
niezbędne w celu budowy wydajnych i bez- modprobe iptable_mangle
piecznych sieci komputerowych. W pierw- modprobe ipt_MASQUERADE
szej części cyklu omówiliśmy bowiem pod- modprobe ipt_nat_ftp
stawowe urządzenia wykorzystywane w sie- modprobe ipt_nat_irc
ciach komputerowych, wśród których znaj- modprobe ip_conntrack_ftp
dował się most (network bridge), również modprobe ip_conntrack_irc
służący do łączenia sieci. Pomimo iż urzą-
dzenia tego typu są obecnie bardzo rzadko #usunięcie istniejących reguł i łańcuchów
wykorzystywane, warto zapoznać się z za- iptables -F
sadą ich działania. Jakie są więc podstawo- iptables -t nat -F
we różnice pomiędzy trasowaniem a mostko- iptables -t mangle -F
waniem sieci? iptables -X
Przewaga pierwszego z wymienionych iptables -t nat -X
rozwiązań okaże się oczywista, gdy przypo- iptables -t mangle -X
mnimy sobie zasadę działania mostów. Jak
z pewnością pamiętasz, są one urządzenia- #akceptujemy wszystkie przychodzące pakiety
mi warstwy drugiej modelu OSI, wykorzy- iptables -P INPUT ACCEPT
stującymi adresy fizyczne w procesie podej- iptables -P FORWARD ACCEPT
mowania decyzji o przekazywaniu ramek. iptables -P OUTPUT ACCEPT
Po odebraniu ramki Ethernet przez most, iptables -t nat -P OUTPUT ACCEPT
sprawdzany jest jej adres przeznaczenia iptables -t nat -P PREROUTING ACCEPT
– jeżeli odbiorca znajduje się w tym samym iptables -t nat -P POSTROUTING ACCEPT
segmencie sieci co nadawca, most ignoru- iptables -t mangle -P PREROUTING ACCEPT
je ją. Jeżeli odbiorca znajduje się w innym iptables -t mangle -P POSTROUTING ACCEPT
segmencie, most przesyła ją dalej. Po ode-
braniu oraz przetworzeniu ramki przez od- #konfiguracja dla interfejsu lo
biorcę, most przekazuje odpowiedź do sie- iptables -A INPUT -i lo -j ACCEPT
ci w której znajdował się interfejs sieciowy iptables -A OUTPUT -i lo -j ACCEPT
nawiązujący połączenie. W trakcie opisywa-
nego procesu tworzona jest tzw. tabela mo- #konfiguracja NAT dla adresu przyznanego przez DNS
stowania, wykorzystywana w trakcie podej- iptables -t nat -A POSTROUTING -o $WAN_INTERFACE -j MASQUERADE
mowania decyzji o przekazywaniu pakietów #konfiguracja NAT dla adresu stałego
pomiędzy segmentami. Przekazywanie pa- iptables -t nat -A POSTROUTING -o $WAN_INTERFACE -j SNAT –to-source
kietów przy pomocy mostów jest znacznie adres_ip
szybsze niż w przypadku średniej klasy ro-

www.lpmagazine.org 49
Sieci komputerowe
Sieci komputerowe: część czwarta

z urządzeń odpowiadających za przesyłanie gują ruch o znacznie mniejszym natężeniu, je komunikat o błędzie pochodzący od dru-
pakietów jest router, którego rolę może peł- niż routery znajdujące się w obrębie rdzenia giego routera. Adresy IP kolejnych route-
nić zarówno specjalistyczny sprzęt, jak i stan- sieci. Umożliwia to dobranie sprzętu najle- rów przekazujących pakiet są wyświetla-
dardowe komputery PC, wyposażone w od- piej odpowiadającego wymaganiom danego ne na ekranie. Czasami zdarza się jednak,
powiednią liczbę interfejsów sieciowych oraz obszaru sieci. iż konfiguracja któregoś z routerów nie ze-
oprogramowanie. Mówi się, że jeden obraz oznacza wię- zwala na odpowiadanie na pakiety genero-
Przy wysłaniu pakietu, komputer po- cej niż tysiąc słów – w takim razie sprawdź- wane przez program traceroute – w takim
dejmuje decyzje o sposobie jego trans- my, jak w praktyce wygląda trasa pakietu przypadku adres routera nie zostanie wy-
misji. Jeżeli adres odbiorcy znajduje się od naszego komputera do dowolnego z ser- świetlony.
w tej samej sieci, co nadawca (określo- werów internetowych. Możemy w tym celu
nej według zasad podanych we wcześniej- wykorzystać program traceroute, dostępny Tablice routingu
szych paragrafach), pakiet przesyłany jest standardowo w każdej dystrybucji Linuksa. – ich tworzenie i zastosowanie
bez udziału routera – do jego dostarcze- Działanie tego narzędzia opiera się na umie- Po odebraniu pakietu, router określa adres
nia wystarcza sieć fizyczna. Wykorzysta- jętnym wykorzystaniu protokołu ICMP (In- następnego urządzenia sieciowego, do któ-
nie routera ma miejsce wtedy, gdy nadaw- ternet Control Message Protocol), służące- rego powinien zostać przesłany pakiet. Może
ca i odbiorca znajdują się w różnych sie- go do przesyłania wiadomości kontrolnych nim być kolejny router lub interfejs sieciowy
ciach – w takim przypadku pakiet jest prze- (m.in. komunikatów o błędach). Traceroute odbiorcy pakietu. Informacje wykorzystywa-
syłany na adres tzw. domyślnej bramy. Jej wykorzystuje komunikaty typu ICMP Echo ne w trakcie trasowania pakietów zapisane są
funkcje pełni router znajdujący się najbli- Request, czyli takie same jak program ping. w tzw. tablicach routowania.
żej nadawcy w topologii fizycznej sieci. Po Różnica polega na wartościach czasu ży- Tablica routowania zawiera adresy IP ro-
odebraniu pakietu, router podejmuje decy- cia pakietu (TTL – Time To Live), określa- uterów pod które należy przesyłać pakiety
zje o trasowaniu w bardzo podobny sposób jących maksymalną liczbę routerów, przez skierowane do określonych odbiorców. Wi-
– w tablicy routowania odnajdywany jest które przejść może pakiet zanim zostanie on dać więc, iż w tablicy tej adres IP odbior-
wpis odpowiadający adresowi następnego porzucony (co zapobiega powstawaniu tzw. cy służy jako klucz przy wyszukiwaniu ad-
routera, do którego pakiet powinien zostać pętli routowania). Pierwszy pakiet wysyła- resu następnego skoku. Każda z tablic zawie-
skierowany. ny przez traceroute (z wartością TTL rów- ra również tzw. adres domyślny, wskazujący
Dzięki takiemu przebiegowi procesu ną 1) zostaje odebrany przez naszą bramę na router posiadający pełniejszą tablicę ro-
routingu możliwe jest znaczne uproszcze- domyślną, następuje zmniejszenie wartości utingu – wykorzystywany jest on w sytuacji,
nie tablic routowania (więcej informacji na TTL, porzucenie pakietu i wysłanie komu- gdy nie odnaleziono wpisu odpowiadającego
temat tablic routowania znajdziesz w na- nikatu o błędzie TTL Exceeded (przekrocze- sieci docelowej.
stępnym paragrafie) oraz struktury sieci. nie czasu życia pakietu). Program tracero- Zastanawiasz się teraz pewnie nad tym,
W przypadku dużych sieci możemy bowiem ute odbiera ów komunikat i wysyła następ- w jaki sposób tworzone są tablice routowa-
dostrzec wyraźną hierarchizację – routery ny pakiet, tym razem z TTL równym 2. Pa- nia – czy wpisy wprowadzane są przez admi-
znajdujące się najbliżej końcówek siecio- kiet ten dociera jeden skok bliżej celu niż nistratora sieci, czy też tworzone są w sposób
wych (czyli interfejsów sieciowych) obsłu- pakiet pierwszy, po czym odebrany zosta- automatyczny w trakcie pracy sprzętu (po-
dobnie jak w przypadku mostów)? Okazu-
je się, iż wykorzystywane są obydwie z tych
metod: statyczna oraz dynamiczna.
W routingu statycznym, tablica routowa-
��������������������� nia wprowadzana jest w całości przez admi-
nistratora sieci. Dzięki temu uzyskujemy pe-
łen determinizm trasowania, a co za tym idzie
������������������������������������� – większą wydajność i łatwiejsze rozwiązy-
�������������������������������������� wanie problemów. W routingu statycznym
każdy z routerów podejmuje decyzje o tra-
sowaniu w pełni samodzielnie – routery nie
��� ���
���������������������������������� wymieniają się informacjami o stanie łącz, co
�����������������������
uniemożliwia tworzenie rozwiązań korzysta-
jących z redundancji.
��������������������������� ��� ��������������������������� W routingu dynamicznym, routery wy-
������� ��������� mieniają się informacjami o trasowaniu (wy-
korzystywane są w tym celu tzw. protokoły
���
wymiany informacji o trasowaniu). Dzięki
���������������������� temu możliwe jest tworzenie łącz redundant-
���������
nych, zapewniających łączność w sytuacjach
awaryjnych. Jednym z najważniejszych pro-
blemów, pojawiających się przy zastosowa-
niu routingu dynamicznego jest indetermi-
Rysunek 3. Algorytm routingu w metodologii CIDR nizm, wynikający z faktu, iż router polega na

50 luty 2010
Sieci komputerowe
Sieci komputerowe: część czwarta

informacjach otrzymanych od innych route- System Linux jako router • Wysoki poziom bezpieczeństwa – odpo-
rów działających w sieci. W dużych przedsiębiorstwach rolę route- wiednio skonfigurowany system Linux
Warto zastanowić się, kiedy uzasadnione rów i firewalli pełnią zazwyczaj odpowiednie charakteryzuje się bardzo wysokim po-
jest stosowanie każdej z wymienionych me- urządzenia, gwarantujące wysoką niezawod- ziomem bezpieczeństwa;
tod. Najczęściej podawana reguła mówi, że ność oraz wydajność. Oprócz tego, niewąt- • Wysoka wydajność – oczywiście zależna
routing dynamiczny powinien być stosowa- pliwą zaletą sprzętu dedykowanego jest ła- od zainstalowanego sprzętu, liczby ob-
ny tam, gdzie jest to konieczne, w pozosta- twość obsługi oraz duże możliwości konfigu- sługiwanych komputerów oraz rozmiaru
łych routerach zalecana jest konfiguracja tra- racji. Sprzęt producentów takich jak np. CI- tablic routowania;
sowania statycznego. SCO może być również łatwo łączony w kla- • Łatwość rozbudowy i aktualizacji – ak-
stry i montowany w tzw. rackach. tualizacja oprogramowania zainstalowa-
Algorytm routingu Bardzo często wydajność sprzętu nie jest nego na serwerze jest znacznie prostsza
Routery w trakcie kierowania pakietów re- jednak priorytetem – w przypadku niewiel- niż uaktualnienie firmware urządzenia
alizują ściśle określony algorytm, którego kich przedsiębiorstw znacznie większe zna- wbudowanego;
uproszczona wersja przedstawiona została czenie może mieć cena urządzenia lub kosz- • Możliwość uruchomienia dodatkowych
na Rysunku 3. ty ewentualnej rozbudowy sieci. W środowi- usług – oprócz obsługi routowania,
Po odebraniu pakietu, router przeszuku- skach tego typu sprawdzą się proste urzą- nasz serwer może być jednocześnie fi-
ję tablicę routingu w cel odnalezienia adre- dzenia wbudowane pełniące funkcję route- rewallem oraz np. serwerem LDAP lub
su następnego skoku, odpowiadającego sieci ra lub komputery z zainstalowanym syste- WWW. Ze względów bezpieczeństwa
w której znajduje się adres odbiorcy. Przy mem Linux. nie jest to jednak polecane rozwiązanie.
wyborze trasy mogą być brane pod uwagę do- W systemach korzystających z jądra Li-
datkowe kryteria, takie jak np. obciążenie da- nux, za podstawowe funkcje związane z ob- Wykorzystanie systemu Linux jako routera
nych tras. W tym kroku możliwe jest również sługą sieci odpowiada jądro systemu. Kon- nie jest jednak pozbawione wad, spośród któ-
wykorzystanie łączy redundantnych (zapaso- figuracja tych mechanizmów kernela odby- rych najpoważniejsze to:
wych), umożliwiających zapewnienie ciągło- wa się przy pomocy narzędzi działających
ści działania sieci. w przestrzeni użytkownika, takich jak np. • Konfiguracja trudniejsza niż w przypad-
Jeżeli odnaleziony zostanie wpis odpo- iptables. Część bardziej zaawansowanych ku urządzeń dedykowanych;
wiadający sieci odbiorcy, pakiet przesyłany funkcji, jak np. obsługa protokołów routingu • Konieczność ciągłej aktualizacji opro-
zostaje do zdefiniowanego routera. W przy- dynamicznego odbywa się w dużym stopniu gramowania (niezbędna w celu utrzy-
padku gdy nie odnaleziono adresu następne- w przestrzeni użytkownika. mania należytego poziomu bezpieczeń-
go routera, pakiet wysyłany jest na adres ro- Chciałbym teraz zwrócić Twoją uwagę, stwa);
utera domyślnego (bramy domyślnej) – jest drogi Czytelniku, na zalety i wady zastoso- • Wydajność niższa niż urządzeń dedyko-
nią zazwyczaj router posiadający większą wania systemu Linux jako routera. Do naj- wanych.
wiedzę na temat struktury sieci. Jeżeli brak ważniejszych zalet takiego rozwiązania mo-
jest zdefiniowanej trasy domyślnej, pakiet zo- żemy z pewnością zaliczyć: Dzięki odpowiedniej konfiguracji oprogra-
staje odrzucony, po czym do nadawcy zosta- mowania możemy zniwelować powyższe
je wysłany komunikat o błędzie (Destination • Niski koszt – ponosimy jedynie koszt niedogodności. Dodatkowo dostępne są spe-
Unreachable). sprzętu komputerowego – wszelkie nie- cjalizowane dystrybucje Linuksa, dostosowa-
zbędne oprogramowanie jest darmowe; ne do pełnienia funkcji routera.
Określanie umiejscowienia routerów
Jednym z największych problemów, jakie na- Listing 2. Konfiguracja demonów Quagga - /etc/quagga/daemons
potykają początkujący konstruktorzy sieci zebra=yes
komputerowych, jest określenie odpowied- bgpd=no
niego położenia routerów w sieci. Nie jest to ospfd=no
bynajmniej proste zadanie, ponieważ wyma- ospf6f=no
ga od nas dobrej znajomości charakteru i na- ripd=yes
tężenia komunikacji pomiędzy węzłami pod- ripngd=no
łączonymi do naszej sieci. isisd=no
Zanim przystąpimy do określenia roz-
mieszczenia routerów w strukturze naszej Listing 3. Konfiguracja demona Zebra – /etc/quagga/zebra.conf
sieci, koniecznie powinniśmy dokonać po- hostname router
działu na podsieci zgodnie z informacjami password haslo
zawartymi w poprzednich paragrafach. Kom- enable password haslo
putery, które często wymieniają ze sobą da- service advanced-vty
ne powinny znajdować się w jednej podsieci, log file /var/log/quagga/zebra.log
te zaś powinny być łączone ze sobą poprzez access-list localhost permit 127.0.0.1/32
zastosowanie odpowiednio skonfigurowa- access-list localhost deny any
nych routerów. Więcej informacji na ten te- line vty
mat znajdziesz w paragrafie Routing pomię- access-class localhost
dzy podsieciami.

www.lpmagazine.org 51
Sieci komputerowe
Sieci komputerowe: część czwarta

Specjalizowane lacji na dysku twardym. Zaletą dystry- towymi i wysokim poziomem bezpieczeń-
dystrybucje Linuksa bucji Freesco jest bardzo wysoki poziom stwa. Dystrybucje te są również przystoso-
Najważniejsze funkcje sieciowe systemów bezpieczeństwa oraz ekstremalnie małe wane do uruchamiania z kart pamięci flash,
Linuksowych realizowane są przez jądro, co wymagania sprzętowe. Najnowszą wer- co pozwala na budowę wydajnych urządzeń
pozwala na skonfigurowanie dowolnej dys- sję Freesco znajdziesz na stronie http: sieciowych o niskim poborze prądu.
trybucji do pracy jako router. Należy jednak //www.freesco.org/; W dalszej części artykułu zapoznamy się
pamiętać, iż w celu optymalnego wykorzysta- • Pyramid Linux – minidystrybucja Li- z przebiegiem konfiguracji funkcji routingu
nia możliwości sprzętu oraz zapewnienia na- nuksa przeznaczona do zastosowania w w systemie Linux. Nie będziemy odwoły-
leżytego poziomu bezpieczeństwa i stabilno- sieciowych (w szczególności bezprze- wali się do konkretnych dystrybucji (chyba,
ści, konieczne jest dokonanie dużych zmian wodowych) systemach wbudowanych że będzie to konieczne), lecz przedstawimy
w systemie. Oprócz najprostszych czynno- kompatybilnych z architekturą x86. Jed- uniwersalne rozwiązania. Osobom zaintere-
ści związanych z hardeningiem systemu, ta- ną z największych zalet Pyramid Linuk- sowanym budową routera w oparciu o mini-
kich jak wyłączenie niepotrzebnych usług, sa jest kompatybilność z Ubuntu – ozna- dystrybucje polecam zapoznanie się z infor-
monitorowanie stanu portów oraz zastoso- cza to, iż instalacja dodatkowych pakie- macjami zawartymi na ich stronach interne-
wanie systemów IPS/IDS (Intrusion Protec- tów nie będzie sprawiać problemów. Ob- towych – często zawierają one narzędzia uła-
tion System/Intrusion Detection System), ko- razy dystrybucji (przeznaczone do zapi- twiające konfigurację funkcji routingu. Je-
nieczne jest zazwyczaj dokonanie rekompila- sania np. na karcie CF wykorzystywanej żeli jednak opanujesz konfigurację routerów
cji jądra oraz wielu innych, często niełatwych w routerze) znajdziesz na stronie http: za pomocą poleceń opisanych w dalszej czę-
czynności. //dl.metrix.net/support/dist/; ści artykułu, to ich wykorzystanie będzie dla
Na internetowych listach dyskusyjnych • Endian Firewall – minidystrybucja Li- Ciebie bardzo proste.
często zadawane jest pytanie, która dystry- nuksa przeznaczona do zastosowania
bucja Linuksa nadaje się najlepiej do zasto- jako firewall oraz router. Na szczegól- Niezbędne pakiety
sowania jako router. Nie istnieje jedna od- ną uwagę zasługuje bardzo wygodny, Większość dystrybucji Linuksa zawiera pod-
powiedź na to pytanie. Wszystko zależy bo- przeglądarkowy interfejs użytkowni- stawowe pakiety niezbędne do obsługi traso-
wiem od indywidualnych wymagań danego ka oraz oferta urządzeń wbudowanych wania w domyślnej instalacji. Przed przystą-
środowiska oraz wiedzy administratora. Ist- z zainstalowanym systemem Endian Fi- pieniem do wykonywania czynności opisa-
nieje jednak grupa specjalizowanych minidy- rewall. Więcej informacji na temat tej nych w następnych paragrafach, powinieneś
strybucji, pozwalających szybko skonfiguro- dystrybucji znajdziesz na stronie http: upewnić się, że w Twoim systemie zainstalo-
wać nawet bardzo zaawansowane funkcje fil- //www.endian.com/en/; wane są następujące narzędzia:
trowania i routowania pakietów. Najpopular- • IPCop – minidystrybucja Linuksa prze-
niejsze z nich to: znaczona do zastosowania jako fire- • net-tools – pakiet zawierający podsta-
wall oraz router. Zawiera wygodny in- wowe narzędzia służące do konfiguracji
• Freesco – jedna z najstarszych minidy- terfejs konfiguracyjny obsługiwany podsystemu sieciowego jądra;
strybucji Linuksa, przeznaczona do peł- przez przeglądarkę. W dystrybucji IP- • iproute2 – pakiet zawierający ulepszo-
nienia funkcji routera. Nazwa Freesco Cop bardzo ciekawie rozwiązano przy- ne wersje narzędzi zawartych w pakiecie
oznacza, iż ambicją deweloperów tej dzielanie funkcji interfejsom – określa- net-tools oraz dodatkowe programy, słu-
dystrybucji jest zapewnienie wolnej al- ne są one przy pomocy tzw. kolorów in- żące do obsługi funkcji QoS, kształtowa-
ternatywy dla sprzętu sieciowego CI- terfejsu. Najnowszą wersją dystrybu- nia ruchu sieciowego itp.;
SCO (Free + (CI)SCO). Podstawowa cji IPCop znajdziesz na stronie http: • Quagga – pakiet zawierający implemen-
wersja Freesco mieści się na dyskiet- //www.ipcop.org/. tację protokołów routingu dynamicznego
ce, dodatkowe moduły możemy wczy- (m.in. RIP i OSPF).
tać po uruchomieniu systemu; dostęp- Wszystkie z wymienionych dystrybucji cha-
na jest również wersja służąca do insta- rakteryzują się niskimi wymaganiami sprzę- Nie będziemy tu opisywać procesu instalacji
poszczególnych pakietów – są one bowiem
Listing 4. Konfiguracja demona RIPD – /etc/quagga/ripd.conf dostępne w repozytoriach wszystkich dystry-
hostname router bucji. Jeżeli zdecydujesz się na własnoręczne
password haslo budowanie aplikacji ze źródeł, to bardzo wie-
enable password haslo le przydatnych informacji znajdziesz w ich
router rip dokumentacjach.
network eth0
redistribute static Konfiguracja bramy domyślnej
redistribute connected Zanim przystąpimy do opisu konfigura-
service advanced-vty cji routera, zastanówmy się, w jaki spo-
log file /var/log/quagga/ripd.log sób komputery znajdujące się w naszej sie-
access-list loaclhost permin 127.0.0.1/32 ci będą wiedziały, które urządzenie pełni
access-list localhost deny any jego funkcje. Ma to niebagatelne znacze-
line vty nie, ponieważ nadawca pakietu musi znać
access-class localhost adres urządzenia, pod które pakiet zosta-
nie przekazany.

52 luty 2010
Sieci komputerowe
Sieci komputerowe: część czwarta

Każdy z interfejsów, jeżeli ma mieć wiednich wpisów do tablic routingu. Możesz Konfiguracja translacji adresów
możliwość komunikacji z adresami spo- użyć w tym celu narzędzia route: W trzeciej części cyklu pokazaliśmy, w jaki
za sieci lokalnej, musi posiadać określony sposób skonfigurować usługę NAT przy uży-
adres domyślnej bramy (default gateway), route add -net adres_sieci/maska gw ciu urządzenia dedykowanego APPro 2405.
określający router, do którego wysyłane bę- adres_ip_interfejsu nazwa_interfejsu W tym paragrafie dowiemy się, jak uzyskać
dą pakiety skierowane do adresów spoza sie- ten sam efekt poprzez zastosowanie progra-
ci lokalnej. W systemie Linux, w celu okre- Znaczenie poszczególnych opcji może wyma- mu iptables.
ślenia adresu domyślnej bramy należy wy- gać objaśnienia. Parametr -net adres_sieci/ Skrypt dokonujący odpowiedniej konfi-
dać polecenie maska określa adres sieci docelowej wraz z jej guracji przedstawiony został na Listingu 1.
maską. Parametr gw adres_ip_interfejsu Pomimo znacznej objętości, jego działanie
route add default gw 192.168.1.1 określa adres IP interfejsu routera, za pomo- jest bardzo proste. W pierwszej części skryp-
eth0 cą którego przekazywane będą pakiety; na- tu definiujemy zmienną oznaczającą nazwę
zwa_interfejsu oznacza symboliczną nazwę interfejsu WAN, za pomocą którego wysyła-
gdzie 192.168.1.1 jest adresem routera, interfejsu (np. eth2). Usunięcie zdefiniowanych ne będą pakiety. Następnie wczytujemy nie-
eth0 – nazwą interfejsu sieciowego. Należy tras sprowadza się do wydania polecenia route zbędne moduły jądra. Jeżeli masz pewność,
mieć na uwadze fakt, iż adres routera musi del -net adres_sieci/maska. że wymienione moduły są wbudowane w wy-
należeć do tej samej podsieci, co nasz inter- Zmiany wprowadzone za pomocą pole- korzystywane przez Ciebie jądro, to możesz
fejs. Zmiany wprowadzane przy użyciu na- cenia route add obowiązują do czasu ponow- pominąć ten krok.
rzędzia route nie są jednak trwałe – obowią- nego uruchomienia systemu. Aby trwale zde- Kolejnym krokiem jest usunięcie istnie-
zują do czasu ponownego uruchomienia sys- finiować tabelę routingu, należy wprowadzić jących reguł i łańcuchów (chains). Dokład-
temu. Trwałą zmianę adresu bramy można zmiany w plikach konfiguracyjnych odpo- nym opisem tych struktur zajmiemy się w na-
uzyskać poprzez dodanie linii wiednich interfejsów sieciowych. Nową tra- stępnej części artykułu, która w dużej mierze
sę dodajemy za pomocą linii poświęcona zostanie firewallom. Na chwilę
gateway 192.168.1.1 obecną, wystarczy nam wiedza, iż w progra-
up route add -net adres_sieci/ mie iptables łańcuchy są zestawami reguł de-
w plikach konfiguracyjnych interfejsów (ich maska gw adres_ip_interfejsu nazwa_ finiujących operacje wykonywane na pakie-
położenie różni się w zależności od dys- interfejsu tach. Standardowo, w podstawowej tabeli fil-
trybucji; dla Debiana jest to /etc/network/ trującej pakiety (filter) dostępne są trzy pod-
interfaces). Możliwe jest również użycie na- Znaczenie opcji konfiguracyjnych jest takie stawowe łańcuchy:
rzędzi graficznych dostarczanych przez dys- samo jak powyżej. W zależności od dystry-
trybucję. bucji, położenie plików konfiguracyjnych • INPUT – zawierający reguły obsługi pa-
oraz składnia poleceń może się różnić. Po- kietów przychodzących;
Routing pomiędzy podsieciami wyżej podany został opis dla dystrybucji De- • FORWARD – zawierający reguły obsługi
Jedną z najczęściej spotykanych konfi- bian. W internecie znajdziesz wiele dodatko- pakietów routowanych przez hosta;
guracji jest router z wieloma interfejsami wych informacji na temat konfiguracji routin- • OUTPUT – zawierający reguły obsługi
sieciowymi, z których każdy znajduje się gu w innych dystrybucjach. pakietów wychodzących.
w odrębnej sieci (mogą to być np. róż-
ne sieci lokalne). W takiej sytuacji jest on Listing 5. Konfiguracja demona OSPFD – /etc/quagga/ospfd.conf
zazwyczaj wykorzystywany do trasowa- hostname router
nia pakietów pomiędzy podsieciami. Aby password haslo
umożliwić komunikację pomiędzy siecia- enable password haslo
mi, wystarczy odpowiednie skonfiguro- log file /var/log/quagga/ospfd.log
wanie bram domyślnych dla komputerów
z poszczególnych podsieci oraz aktywowa- interface eth0
nie przekazywania pakietów na routerze. ip ospf authentication message-digest
Przekazywanie pakietów można aktywo- ip ospf message-digest-key 1 md5 haslo
wać za pomocą polecenia
router ospf
echo 1 > /proc/sys/net/ipv4/ip_ ospf router-id 192.168.1.1
forward network 192.168.1.0/0 area 0
redistribute connected
Jeżeli chcemy, aby przekazywanie pakietów redistribute static
było aktywowane przy uruchomieniu kompu- area 0.0.0.0 authentication message-digest
tera, do pliku /etc/sysctl.conf należy dodać li-
nijkę ip.ipv4.ip_forward = 1. access-list localhost permit 127.0.0.1/32
Konfiguracja routera jest nieco bardziej access-list localhost deny any
skomplikowana w sytuacji, gdy podsieci nie line vty
są podłączone do tego samego routera. W ta- access class localhost
kim przypadku, konieczne jest dodanie odpo-

www.lpmagazine.org 53
Sieci komputerowe
Sieci komputerowe: część czwarta

• W tabeli szczególnie interesującej nas szości sieci powinniśmy rozważyć zastoso- Konfiguracja demona zebra odpowia-
z punktu widzenia tego akapitu, a mia- wanie protokołów wymiany informacji o ro- dającego za obsługę podstawowych funk-
nowicie nat, istnieją trzy łańcuchy: utingu. Pozwoli to na przyspieszenie konfigu- cji pakietu Quagga została przedstawiona
• PREROUTING – zawierający reguły ob- racji sieci oraz zapewni aktualność tablic ro- na Listingu 3. Parametr hostname zawiera
sługi pakietów przed routowaniem; utingu wszystkich urządzeń. nazwę naszego routera (może ona być róż-
• OUTPUT – zawierający reguły obsługi na od nazwy hosta na którym pakiet Quag-
pakietów wychodzących; Protokół RIP ga został uruchomiony). Wiersze password
• POSTROUTING – zawierający reguły Protokół RIP (Routing Information Protocol) oraz enable password powodują ustawie-
obsługi pakietów po routowaniu. jest najprostszym protokołem wymiany in- nie hasła i jego aktywację. Poprzez ustawie-
formacji o trasach. Najlepiej nadaje się do za- nie opcji service advanced-vty uzysku-
Oprócz tego, dostępna jest tablica mangle, stosowania w sieciach korporacyjnych o nie- jemy większą funkcjonalność linii komend
która umożliwia dodanie reguł modyfikują- wielkiej liczbie komputerów. pakietu Quagga, zaś parametr log file de-
cych nagłówki pakietów. O jej zastosowaniu Routery z obsługą protokołu RIP rozgła- finiuje plik logów. Dodanie linii rozpoczy-
powiemy więcej w następnej części cyklu. szają informacje o zawartości tablic traso- nających się od frazy access-list definiuje
Następnym etapem działania naszego wania co 30 sekund, przez co w przypadku nową klasę dostępu do wiersza poleceń de-
skryptu jest ustawienie domyślnych reguł ob- zmiany konfiguracji sieci routery zaktualizu- mona Zebra: zezwalającą na logowanie je-
sługi. Wszystkie połączenia są akceptowane ją swoją konfigurację dopiero po upłynięciu dynie z komputera lokalnego. Ostatnie dwie
przez nasz router – jest to dobry punkt wyj- tego czasu. RIP posiada również ogranicze- linie powodują ustawienie obowiązującej
ścia do dalszej konfiguracji. Powinniśmy nie co do ilości przeskoków – ich maksymal- klasy dostępu.
również pamiętać o dodaniu linii odpowia- na liczba wynosi 15. Nie jest to jednak pro- Przykładowa konfiguracja demona RIPD
dających konfiguracji interfejsu lo, będącego blemem nawet w przypadku złożonych sie- przedstawiona została na Listingu 4. Znacze-
programową pętlą zwrotną, służącą do testo- ci lokalnych. nie części opcji konfiguracyjnych jest takie
wania oprogramowania sieciowego. samo jak w przypadku demona Zebra. Dyrek-
Ostatnim krokiem skryptu jest ustawie- Obsługa protokołu tywa router rip informuje, że chcemy ko-
nie właściwej translacji adresów. Składnia RIP w Linuksie – Quagga rzystać z protokołu RIP. Interfejsy na których
tego polecenia może wymagać wyjaśnie- Zarówno protokół RIP, jak i opisany w na- nasłuchiwać ma RIPD dodajemy po opcji ne-
nia, tak więc omówimy znaczenie poszcze- stępnym paragrafie OSPF mają swoje im- twork (w przypadku nasłuchiwania na wielu
gólnych parametrów. Parametr -t nat ozna- plementacje przeznaczone dla systemu Li- interfejsach należy umieścić je w osobnych
cza, iż ma zostać zmieniona konfiguracja ta- nux. Zostały one zawarte w pakiecie Quag- liniach). Opcja redistribute static spo-
beli nat. Parametry -A POSTROUTING oraz ga, wraz z bardziej złożonymi protokołami woduje wysyłanie informacji o trasach zde-
-o $WAN_INTERFACE informują program ip- jak np. BGP (Border Gateway Protocol), któ- finiowanych statycznie, zaś redistribu-
tables, że zmiany mają mieć miejsce po ro- rych z racji złożoności nie będziemy opisy- te connected – informacji o wszystkich sie-
utowaniu, dla pakietów wychodzących in- wać w tym artykule. ciach, do których podłączony jest router. Zde-
terfejsu sieciowego o nazwie zdefiniowanej Pakiet Quagga jest dostępny w repozy- finiowanie ścieżki dostępu do pliku z logami
w zmiennej WAN_INTERFACE. Dodanie opcji toriach wszystkich popularnych dystrybucji. jest możliwe przy użyciu opcji log file.
-j MASQUERADE aktywuje obsługę pakietów Czytelnikom chcącym własnoręcznie doko- Konfiguracja demona RIPD jest już pra-
poprzez mechanizm maskarady. Jeżeli inter- nać kompilacji polecam odwiedzenie stro- wie ukończona. Należy jeszcze zmienić wła-
fejs podłączony do sieci rozległej ma przypi- ny projektu http://www.quagga.net/. Znajdu- ściciela plików ripd.conf i zebra.conf na qu-
sany stały adres IP, powinieneś użyć alterna- ją się tam informacje dotyczące kompilacji, agga za pomocą polecenia
tywnej opcji, przedstawionej w skrypcie. Jed- instalacji i konfiguracji pakietu.
na z opcji musi oczywiście zostać usunięta chown quagga:quagga zebra.conf
przed wykonaniem skryptu (lub oznaczona Konfiguracja protokołu ripd.conf
jako komentarz za pomocą znaku #). RIP w pakiecie Quagga
W omawianym skrypcie nie stosuje- Zanim routery w naszej sieci będą w stanie Demona RIPD uruchamiamy poleceniem
my filtrowania pakietów – wszystkie dane wymieniać między sobą informacje o trasach,
są przez nasz router akceptowane. Należy oszczędzając nam tym samym żmudnej kon- /etc/init.d/quagga start.
pamiętać, iż takie rozwiązanie nie jest bez- figuracji, musimy poświęcić chwilę na skon-
pieczne – doskonale nadaje się jednak do ce- figurowanie obsługi protokołu RIP w pakie- Przedstawiony opis dotyczy dystrybucji De-
lów testowych. Więcej na temat zwiększania cie Quagga. bian. Użytkownikom innych dystrybucji pole-
bezpieczeństwa routera i filtrowania pakie- Konfigurację powinniśmy rozpocząć cam zapoznanie się z informacjami zawartymi
tów powiemy w następnej części. od dokonania zmiany w pliku /etc/quagga/ na stronie głównej pakietu Quagga. Postać pli-
daemons, powodującej aktywowanie proto- ków konfiguracyjnych pozostaje oczywiście
Routing dynamiczny kołu RIP (Zebra jest demonem zarządzają- taka sama, niezależnie od zastosowanej dys-
z zastosowaniem protokołu RIP cym). Zmiany przedstawione zostały na Li- trybucji. Ewentualne zmiany mogą dotyczyć
Przykłady konfiguracji przedstawione w po- stingu 2. zmian w plikach konfiguracyjnych systemu.
przednich paragrafach mają jedną wspólną Następnym krokiem jest utworzenie pli-
cechę – korzystają z routingu statycznego. ków zawierających konfiguracje demonów: Bezpieczeństwo protokołu RIP
O ile w pewnych przypadkach takie rozwią- zebra.conf i ripd.conf. Powinny się one zna- Wszelka komunikacja pomiędzy routerami
zanie jest niemalże konieczne, o tyle w więk- leźć w katalogu /etc/quagga/. obsługującymi protokół RIP odbywa się bez

54 luty 2010
Sieci komputerowe
Sieci komputerowe: część czwarta

uwierzytelniania i szyfrowania. Aby zwięk- dajnością oraz brakiem ograniczenia do 15 Monitorowanie pracy protokołu OSPF
szyć bezpieczeństwo routera, należy dodać przeskoków. Ponadto, okresowe komuni- Monitorowanie pracy demona OSPFD odby-
do pliku /etc/quagga/ripd.conf linie katy aktualizacyjne wysyłane są co 30 mi- wa się w sposób bardzo podobny, jak w przy-
nut, co ma niebagatelne znaczenie w przy- padku demona RIPD. Jedyną różnicą jest in-
key chain siec padku sieci o dużej liczbie routerów, ponie- ny port na którym należy nawiązać połącze-
key 1 waż zmniejsza ilość ruchu rozgłoszeniowe- nie poprzez klienta telnet:
key-string haslo go. OSPF umożliwia również podział sie-
interface eth0 ci na tzw. obszary, podłączone do wspólnej telnet localhost 2604
ip rip authentication mode md5 sieci szkieletowej.
ip rip authentication key-chain Opis dostępnych komend znajdziesz w doku-
localnet Konfiguracja protokołu mentacji demona OSPFD (man ospfd).
OSPF w pakiecie Quagga
Spowodują one włączenie prostego uwierzy- Protokół OSPF jest obsługiwany przez pakiet Podsumowanie
telniania routerów, co znacznie utrudni zada- Quagga – nie ma potrzeby instalacji żadne- Tym sposobem dotarliśmy do końca czwar-
nie potencjalnemu włamywaczowi. go dodatkowego oprogramowania. Jego kon- tej części cyklu. Omówiliśmy w niej najważ-
figuracja przebiega w sposób podobny, jak niejsze zagadnienia związane z adresami IP,
Monitorowanie pracy protokołu RIP protokołu RIP. maskami podsieci oraz trasowaniem statycz-
Po skonfigurowaniu protokołu RIP, nie po- Zanim utworzymy pliki konfiguracyjne nym i dynamicznym. Dowiedziałeś się rów-
zostaje nam nic innego, jak tylko sprawdzić dla demona OSPFD, upewnij się, że został nież, w jaki sposób skonfigurować dowol-
jego działanie. Możemy tego dokonać przy on aktywowany poprzez dodanie linii w pliku ną dystrybucję Linuksa do pracy w charak-
użyciu klienta telnet /etc/quagga/daemons terze routera.
Po zapoznaniu się z informacjami zawar-
telnet localhost 2602 ospfd=yes tymi w tej części cyklu potrafisz już zaprojek-
tować i zbudować średnich rozmiarów sieć
Po zalogowaniu się możemy już sprawdzić Następnym krokiem jest utworzenie pliku komputerową, określić podział na podsieci
działanie demona RIPD poleceniami: show konfiguracyjnego demona OSPFD: /etc/ oraz umiejscowienie routerów w topologii
ip rip, show ip rip status oraz show quagga/ospfd.conf (Listing 5). Część opcji sieci. Czytelnikom zainteresowanym dodat-
work-queues. Więcej informacji na temat za- konfguracyjnych ma takie samo znacznie jak kowymi informacjami na ten temat polecam
stosowania wiersza poleceń demona RIPD w przypadku demona Zebra i RIPD. Dyrek- zapoznanie się z dokumentacją wykorzysty-
znajdziesz w dokumentacji pakietu Quagga. tywa interface eth0 powoduje dokonanie wanych aplikacji oraz dokumentami RFC
zmian w obrębie konfiguracji interfejsu eth0. opisujących wykorzystane przez nas proto-
Routing dynamiczny Opcje ip ospf authentication message- koły routingu dynamicznego. Wiele przydat-
z zastosowaniem protokołu OSPF digest oraz ip ospf message-digest-key nych informacji znajdziesz również w doku-
Protokół RIP sprawdza się doskonale w przy- 1 md5 haslo zwiększają bezpieczeństwo po- mentacji wymienionych przez nas dystrybu-
padku sieci do których podłączona jest nie- przez zastosowanie prostego uwierzytelnia- cji – ich zastosowanie może niejednokrotnie
wielka liczba komputerów. W przypadku nia hasłem haslo. Dyrektywa router ospf znacznie przyspieszyć konfigurację sieci oraz
większych sieci, obsługiwanych przez dzie- powoduje aktywację protokołu OSPF; pole- ułatwić rozwiązywanie problemów pojawia-
siątki lub setki routerów, zastosowanie proto- cenie ospf router-id służy do ustawienia jących się na etapie eksploatacji.
kołu RIP może się okazać rozwiązaniem nie- identyfikacji routera na podstawie adresu IP. W następnej części cyklu zajmiemy się
efektywnym. W takim przypadku powinieneś Za pomocą opcji network 192.168.1.0/0 zagadnieniami związanymi z zapewnieniem
skorzystać z możliwości, jakie daje protokół area 0 dodajemy nową sieć do konfiguracji bezpieczeństwa naszej sieci. Omówimy kon-
OSPF (Open Shortest Path First). routera oraz oznaczamy ją jako część obszaru figurację firewalli, wirtualnych sieci prywat-
0. Konfiguracja uwierzytelniania w obrębie nych VPN. Dowiesz się również, w jaki spo-
Protokół OSPF obszaru została zmieniona za pomocą pole- sób należy zadbać o bezpieczeństwo systemu
Protokół OSPF jest protokołem stanu łą- cenia area 0.0.0.0 authentication mes- serwera. Do usłyszenia!
cza (link-state protocol) – oznacza to, iż sage-digest.
oprócz okresowych komunikatów aktuali- Włączenie demona OSPFD odbywa się
zacyjnych, informacje rozsyłane są w przy- w sposób opisany w paragrafie poświęco-
padku zmiany struktury sieci. W porówna- nym protokołowi RIP. Po chwili od urucho-
niu do protokołu RIP, OSPF charakteryzu- mienia protokołu OSPF możesz sprawdzić O autorze
je się lepszą skalowalnością, większą wy- dodane trasy.
Autor interesuje się bezpieczeństwem
systemów informatycznych, programo-
waniem, elektroniką, muzyką rockową,
W Sieci
architekturą mikroprocesorów oraz za-
• Dokumenty RFC – http://www.rfc-editor.org/ stosowaniem Linuksa w systemach wbu-
• Ipcalc – http://www.jodies.de/ipcalc dowanych.
• Strona główna pakietu Quagga – http://www.quagga.net/ Kontakt z autorem: rl.kulaga@gmail.com

www.lpmagazine.org 55
Programowanie
Oracle APEX

Oracle APEX
darmowe i szybkie tworzenie aplikacji
webowych
Andrzej Raczkowski
Producent bazy danych Oracle wie, że żeby dobrze wykorzystać możliwości bazy danych, trzeba
posiadać narzędzia umożliwiające stworzenie aplikacji dla użytkownika. W ofercie Oracle takie
narzędzia są dostępne niemal od początku istnienia ich bazy danych. Programiści tworzący aplikacje
działające na bazie danych Oracle często używają dedykowanych narzędzi, takich jak Oracle
Designer, Oracle Forms Builder czy Oracle JDeveloper. Stosunkowo nowym produktem w tej kategorii
jest technologia Oralce APEX oraz narzędzie Oracle APEX Application Builder.

W
linux@software.com.pl

artykule tym zaprezentuję jak zainsta- cation Builder) zostało napisane w technologii APEX
lować darmową bazę danych Oracle, i aplikacje tworzone w tym środowisku również są
najnowszy pakiet Oracle APEX oraz w tej technologii (podobnie jak Eclipse, w którym mo-
wszystkie narzędzia, które będą po- żemy rozwijać aplikacje Javy został napisany w Javie).
mocne przy tworzeniu naszej pierwszej aplikacji. Po insta- Aplikacje webowe działają w przeglądarkach interne-
lacji otrzymamy kompletne środowisko developerskie, w towych, nie inaczej jest z aplikacjami APEX. Cały pro-
którym będziemy mogli tworzyć webowe aplikacje dzia- ces tworzenia oraz korzystania z aplikacji odbywa się
łające na bazie Oracle. Będziemy mogli za darmo uży- w przeglądarce internetowej. Oficjalnie wspierane są
wać wszystkich narzędzi do wykonywania aplikacji (tak- IE w wersji 6+ oraz Firefox w wersji 2+, ale aplikacje
że komercyjnych), które zostaną przez nas zainstalowane działają praktycznie w każdej przeglądarce, która jest
łącznie z bazą. Następnie wykonamy przykładową, prostą zgodna ze standardami. Za pomocą przeglądarki wy-
aplikację i na koniec powiemy o możliwościach dalszej jej wołujemy przez bramkę PL/SQL funkcje na bazie, któ-
rozbudowy w technologii APEX. ra zwraca do przeglądarki treść w HTML, CSS i Java-
Przed instalacją bazy danych oraz wszystkich skła- Script. Dlatego po stronie klienta nie trzeba nic instalo-
dowych, które będą nam potrzebne w naszym środowi- wać ani konfigurować. Wystarczy mieć w przeglądarce
sku developerskim wypada powiedzieć, co się kryje pod włączoną obsługę JavaScript oraz cookie i możemy ko-
skrótem APEX. rzystać z aplikacji APEX.
Pełna nazwa APEX to Oracle APplication EXpress.
Z opisu Oracle który znajduje się na ich stronie interne- Instalacja składowych
towej można wywnioskować, że jest to webowa tech- środowiska developerskiego
nologia oraz narzędzie developerskie zintegrowane Pakiet Oracle APEX może być zainstalowany na każdej
z bazą danych. Całe środowisko developerskie (Appli- platformie sprzętowej współpracującej z serwerem bazo-

56 luty 2010
Programowanie
Oracle APEX

danowym Oracle. W najnowszej wersji Orac- Instalacja serwera bazy tać na stronie internetowej Oracle. Dla działają-
le 11g pakiet ten może być domyślnie insta- danych Oracle Express Editio cych produkcyjnie systemów, zasoby sprzętowe
lowany podczas instalacji serwera bazodano- Instalację przeprowadzimy w systemie Ubun- oczywiście zależą od ilości danych, ilości aplika-
wego. Tak jak pisałem wcześniej, tworzenie tu. Na początek upewnijmy się, że mamy wy- cji oraz ilości jednocześnie pracujących użytkow-
aplikacji odbywa się przez przeglądarkę in- starczającą ilość pamięci oraz miejsca na dysku, ników. Ja do środowiska developerskiego zale-
ternetową, więc można powiedzieć, że jest o wymaganiach sprzętowych możemy przeczy- całbym dual CPU oraz minimum 1 GB pamięci.
to technologia całkowicie niezależna sprzę-
towo. Listing 1. Instalacja Oracle XE w Ubuntu
Zaczniemy od instalacji serwera bazy da-
nych – do naszych celów użyjemy darmowej ubuntu@ubuntu:~$ sudo apt-get install oracle-xe
wersji bazy Oracle eXpres Edition (w skrócie Reading package lists... Done
Oracle XE). Baza ta ma już zainstalowany pa- Building dependency tree
kiet APEX, ale my zaktualizujemy go do naj- Reading state information... Done
nowszej dostępnej wersji. The following extra packages will be installed:
Serwer Oracle XE jest dostępny do po- libaio
brania za darmo na stronach Oracle, może- The following NEW packages will be installed:
my go wykorzystywać bez żadnych opłat libaio oracle-xe
nawet w komercyjnych aplikacjach. Brzmi 0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
to trochę utopijnie, ale jakby się temu nie Need to get 221MB of archives.
przyglądać to trzeba przyznać, że faktycz- After this operation, 405MB of additional disk space will be used.
nie tak jest. Są jednak pewne ogranicze- Do you want to continue [Y/n]? y
nia, które za chwilę opiszę. Informacje Get:1 http://oss.oracle.com unstable/non-free oracle-xe 10.2.0.1-1.1
o ograniczeniach sprzętowych (ilość pro- [221MB]
cesorów, pamięci i wielkość plików bazo- ...
danowych) możemy znaleźć na stronie in-
ternetowej Oracle. Warto też wiedzieć, że Listing 2. Konfiguracja Oracle XE
w Oracle EX nie mamy zintegrowanej ma-
szyny wirtualnej Javy w bazie, czyli nie mo- Oracle Database 10g Express Edition Configuration
żemy składować w bazie jednostek progra- -------------------------------------------------
mowych Javy. This will configure on-boot properties of Oracle Database 10g Express
Jest też utrudniony dostęp do ściąga- Edition. The following questions will determine whether the database
nia poprawek. Jeżeli nie mamy identyfika- should
tora z innego (komercyjnego) produktu to be starting upon system boot, the ports it will use, and the passwords
nie możemy się zalogować na stronie inter- that
netowej Oracle Metalink, na której oferowa- will be used for database accounts. Press to accept the defaults.
ne jest wsparcie dla technologii Oracle. Nie Ctrl-C will abort.
mamy też wglądu w źródła bazy danych ani
pakietu APEX (ciała pakietów są wrapowa- Specify the HTTP port that will be used for Oracle Application Express
ne). Nie wiemy też, jak długo produkt bę- [8080]: [Enter key]
dzie darmowy. Pracownicy Oracle na fo-
rach, szkoleniach i prezentacjach zapewnia- Specify a port that will be used for the database listener [1521]:[Enter
ją, że w historii Oracle nie było jeszcze ta- key]
kiej sytuacji, żeby zmienić licencje na bar-
dziej restrykcyjną dla produktu i brać opła- Specify a password to be used for database accounts. Note that the same
ty za coś, co było za darmo. Strategia Orac- password will be used for SYS and SYSTEM. Oracle recommends the use of
le polega na udostępnieniu darmowej wersji different passwords for each database account. This can be done after
firmom. Firmy mogą wykonać w tej techno- initial configuration:******
logii system, a jak zaczną się rozwijać i będą Confirm the password:*****
potrzebowały więcej zasobów sprzętowych,
to wtedy kupią licencję na wersję Profesio- Do you want Oracle Database 10g Express Edition to be started on boot
nal czy Enterprise. (y/n) [y]:y
Dla wielu czytelników może nie jest to
idealne rozwiązanie, ale pamiętajmy, że baza Starting Oracle Net Listener...Done
danych to ogromna ilość kodu, którego utrzy- Configuring Database...Done
manie i rozwój kosztuje. Strategia, którą wy- Starting Oracle Database 10g Express Edition Instance...Done
brał Oracle działa już od wielu lat i ja osobi- Installation Completed Successfully.
ście nie martwię się tym jak to będzie licen- To access the Database Home Page go to "http://127.0.0.1:8080/apex"
cjonowane w przyszłości tylko korzystam z te-
go, co jest teraz.

www.lpmagazine.org 57
Programowanie
Oracle APEX

Jeśli mamy mniej niż 1 GB pamię- • aktualizujemy naszą bazę pakietów, wpi- jako nazwę użytkownika: System, oraz ha-
ci możemy utworzyć przestrzeń wymia- sując w konsoli: sło, które wpisaliśmy wcześniej. Po zalogowa-
ny. W tym celu w Ubuntu uruchamiamy niu się nasza strona powinna wyglądać tak jak
konsolę i wykonujemy w niej następują- $ sudo apt-get update na Rysunku 1.
ce komendy:
• i instalujemy serwer Oracle, wydając Instalacja najnowszej dostępnej
$ sudo dd if=/dev/zero of=/swpfs1 w konsoli polecenie: wersji pakietu Oracle APEX
bs=1M count=1000 Oracle Database 10g Express Edition zawie-
$ sudo mkswap /swpfs1 $ sudo apt-get install oracle-xe ra Oracle Application Express w wersji 2.1.
$ sudo swapon /swpfs1 Najnowsza dotychczas wydana wersja APEX
Na wyjściu z konsoli powinniśmy otrzymać ma numer 3.2.1. Zajmiemy się teraz uaktual-
Do instalacji Oracle XE użyjemy standardo- następujący tekst – Listing 1. nieniem pakietu APEX w naszej bazie Orac-
wego systemowego instalatora. Czynności jak Instalacja może zająć sporo czasu (zależ- le XE. W wersji 3.2.1, w stosunku do 2.1, jest
to zrobić opiszę krok po kroku: nie od prędkości połączenia z Internetem, ja- sporo nowych funkcjonalności, które ułatwią
kim dysponujemy), ponieważ wymaga ścią- nam późniejszą pracę.
• najpierw zmodyfikujemy plik /etc/apt/ gnięcia 221 MB danych. Na początek ze strony internetowej Orac-
sources.list. W konsoli wpisujemy pole- le ściągamy najnowszą wersję APEX (rozmiar
cenie: Konfiguracja po instalacji OK 107 MB, żeby pobrać plik będziemy się
Teraz musimy skonfigurować port TCP/IP musieli zarejestrować). Pobrany plik rozpako-
$ sudo gedit /etc/apt/sources.list na serwerze Oracle oraz ustawić inne pa- wujemy do folderu TEMP. Następnie w kon-
rametry. W tym celu wpisujemy w konso- soli przechodzimy do tego katalogu, wpisu-
• następnie w edytorze gedit na końcu pli- li komendę: jąc komendę:
ku dopisujemy poniższą linię:
$ sudo /etc/init.d/oracle-xe configure $ cd /TEMP/APEX
deb http://oss.oracle.com/debian
unstable main non-free Proponuję zatwierdzić Enter-em domyślne pa- Teraz uruchamiamy konsolę SQL Plus pole-
rametry i podać hasło dla użytkownika SYS ceniem:
• zapisujemy plik i zamykamy edytor, na- oraz SYSTEM. Po wykonaniu powyższego
stępnie importujemy klucz GPG; w tym powinniśmy otrzymać następujący tekst na $ /usr/lib/oracle/xe/app/oracle/
celu w konsoli wpisujemy: wyjściu Listing 2. product/10.2.0/server/config/scripts/
Po zakończeniu konfiguracji może- runsqlplus.sh
$ wget http://oss.oracle.com/el4/RPM- my przejść do strony startowej bazy danych.
GPG-KEY-oracle -O- | sudo apt-key W przeglądarce wpisujemy adres URL: http: w konsoli SQL Plus łączymy się z serwe-
add - //127.0.0.1:8080/apex. Następnie podajemy rem bazodanowym, jako użytkownik SYS
i podając hasło, które ustawiliśmy podczas
konfiguracji serwera. W tym celu w konso-
li SQL Plus wpisujemy: connect sys as
sysdba
po połączeniu z serwerem uruchamia-
my skrypt instalacyjny. W tym celu wydaje-
my w konsoli SQL Plus następującą komendę:
@apexins SYSAUX SYSAUX TEMP /i/
Po zakończeniu instalacji zmieniamy ha-
sło na konto administratora APEX. W tym ce-
lu w SQL Plus uruchamiamy skrypt: @apxch-
pwd.sql
Następnie wpisujemy wybrane przez nas
hasło (które oczywiście zapamiętujemy).
Żeby zakończyć cały proces uaktualnie-
nia APEX musimy uruchomić jeszcze jeden
skrypt. W konsoli SQL Plus wpisujemy ko-
mendę: @apxldimg.sql /tmp/
Jeśli wszystko przebiegło bez błędów,
możemy przejść do aplikacji administrują-
cej pakietem APEX: APEX_ADMIN. W prze-
glądarce wpisujemy adres: http://localhost:
8080/apex/apex_admin i logujemy się na użyt-
kownika admin z hasłem, które wcześniej po-
Rysunek 1. Oracle XE, strona startowa bazy danych daliśmy. System każe nam zmienić hasło, no-

58 luty 2010
Programowanie
Oracle APEX

we musi mieć wymaganą długość i zawierać który umożliwia interakcyjną pracę z bazą atorze do kolejnego kroku (Next). Następ-
znaki specjalne. Po zmianie hasła i ponownym danych Oracle, czyli wydawanie poleceń nie dodajmy (Add Page) jedną pustą stronę
zalogowaniu się powinniśmy zobaczyć stronę SQL oraz PL/SQL, wykonywanie skryp- (typ Blank), nazwijmy ją Strona Domowa
jak na Rysunku 2. tów, wygodne oglądanie słownika bazy da- (pole Name) i przejdźmy dalej. Dla uprosz-
Pozostańmy w aplikacji APEX_ADMIN nych, tworzenie nowych obiektów oraz ge- czenia nasza aplikacja nie będzie posiada-
i dodajmy przestrzeń roboczą dla naszej nerowanie poleceń DDL dla istniejących ła zakładek. W tym celu na stronie kreato-
pierwszej aplikacji. w bieżącym schemacie obiektów. ra dotyczącym zakładek (Tabs) wybiera-
Kolejny komponent to Utilities. Można my pierwszą opcję (No Tabs) i przechodzi-
Stworzenie przestrzeni w nim eksportować dane do/z bazy danych. my do kolejnego kroku. Na etapie wybo-
roboczej i konta dla developera Źródłem mogą być pliki tekstowe, pliki XML ru współdzielonych komponentów (Shared
Przestrzenie robocze może tworzyć admi- oraz dane pobrane z arkuszy roboczych, np. components) pozostawiamy wybraną opcję
nistrator APEX. W każdej przestrzeni robo- z programu Excel. Można też generować nie kopiowania współdzielonych kompo-
czej musi istnieć przynajmniej jeden użyt- DDL, raportować oraz przeglądać widoki w nentów z innych aplikacji (Copy Shared
kownik, który jest administratorem tej prze- pakiecie APEX. Components from Another Application:
strzeni. Application Builder to najważniejszy No) i przechodzimy do ustawienia atrybu-
Administrator przestrzeni roboczej i najbardziej złożony komponent wchodzą- tów naszej aplikacji. W schemacie autenty-
to nie to samo, co administrator pakietu cy w skład pakietu APEX. Z jego pomocą kacji (Authentication Scheme) wybierzmy
APEX. Uprawnienia administratora prze- tworzymy aplikacje. Cały komponent to bar- brak konieczności logowania (No Authen-
strzeni roboczej ograniczają się tylko do dzo rozbudowany kreator, zawierający sporą tication). Możemy też zmienić język (Lan-
jego przestrzeni, podczas gdy administra- ilość predefiniowanych elementów interfej- guage) na Polski i przejść do wyboru wy-
tor APEX zarządza całym pakietem. Każ- su użytkownika. To właśnie w Application glądu naszej aplikacji. Teraz wybierzmy
da przestrzeń robocza tworzona jest w ra- Builder stworzymy naszą aplikację. ostatni predefiniowany motyw (Theme 20)
mach wybranego schematu bazodanowe- Będąc zalogowanym do naszej prze- i przejdźmy do ostatniego etapu kreatora,
go. Można użyć schematu już istniejące- strzeni roboczej (DEV) uruchommy apli- w którym zatwierdzimy utworzenie naszej
go lub też zlecić utworzenie odpowiednie- kację do tworzenia aplikacji APEX (Ap- aplikacji (Create).
go schematu w czasie tworzenia przestrzeni plication Builder), a następnie żeby dodać W tej chwili możemy już uruchamiać
roboczej, my wybierzemy ten drugi sposób. nową aplikację naciśnijmy przycisk Cre- naszą pierwszą stronę aplikacji. W tym ce-
W tym celu, będąc połączonym do aplikacji ate. W ten sposób uruchomiliśmy kreator lu wystarczy nacisnąć przycisk uruchom
APEX_ADMIN jako administrator, wybieramy nowej aplikacji, w pierwszym kroku wy- (Run). Mamy już pierwszą aplikację, do
Manage Workspaces -> Create Workspace bieramy metodę tworzenia aplikacji. Sko- której mamy dostęp bez logowania, i któ-
następnie podajemy nazwę przestrzeni ro- rzystajmy z pierwszej opcji – Create Ap- ra w tej chwili ma jedną stronę z jednym
boczej, np. DEV i przechodzimy dalej na- plication. Do zapoznania się z podstawo- pustym regionem o nazwie Strona Domo-
ciskając przycisk Next. W kolejnym kroku wymi możliwościami pakietu, zaczniemy wa. Na dole strony widzimy dodatkową
podajemy nazwę schematu bazodanowego tworzyć aplikacje do wystawiania faktur, ramkę z kilkoma linkami, Home, Applica-
oraz hasło do tego schematu. Dla naszych dlatego w drugim kroku podajmy nazwę tion 102, Edit Page 1, Create, Session Ac-
potrzeb niech to będzie schemat FAKTURA, aplikacji Fakturowanie. Resztę pozostaw- tivity, Debug, Show Edit Links, które słu-
hasło również FAKTURA (żeby było nam je my domyślnie i przejdźmy w naszym kre- żą do przechodzenia w odpowiednie miej-
łatwiej zapamiętać), resztę zostawiamy do-
myślnie i przechodzimy dalej. Teraz do-
damy administratora przestrzeni roboczej.
Zostawmy login podpowiadany domyśl-
nie: ADMIN, podajmy hasło, imię, nazwisko
oraz adres email i przejdźmy do ostatniej
strony kreatora, gdzie zatwierdzimy stwo-
rzenie przestrzeni roboczej DEV admini-
strowanej przez ADMIN. Do naszych po-
trzeb wystarczy jedno konto w przestrzeni
roboczej, dlatego możemy się już wylogo-
wać z aplikacji APEX_ADMIN i zalogować do
naszej nowo utworzonej przestrzeni robo-
czej DEV. W tym celu w przeglądarce wpi-
sujemy adres http://localhost:8080/apex/
i logujemy się podając następujące dane
– workspace: DEV, user: ADMIN, password:
hasło, które ustawiliśmy.
APEX składa się z 3 komponentów słu-
żących do wykonywania określonych za-
dań w procesie tworzenia aplikacji. Jed-
nym z komponentów jest SQL Workshop, Rysunek 2. Aplikacja do administracji pakietem APEX

www.lpmagazine.org 59
Programowanie
Oracle APEX

Listing 3. Skrypt SQL tworzący model danych


/*************** CENA_JEDNOSTKOWA NUMBER,
Usuniecie obiektow CONSTRAINT TOWAR_PK PRIMARY KEY(ID)
***************/ );
drop table POZYCJA_FAKTURY;
drop table FAKTURA; -- 4. Vat
drop table KONTRAHENT; create table VAT
drop table ADRES; (
drop table TOWAR; ID NUMBER,
drop table VAT; NAZWA VARCHAR2(200),
STAWKA NUMBER,
drop SEQUENCE ADRES_SEQ; CONSTRAINT VAT_PK PRIMARY KEY(ID)
drop SEQUENCE KONTRAHENT_SEQ; );
drop SEQUENCE TOWAR_SEQ;
drop SEQUENCE VAT_SEQ; -- 5. Faktura
drop SEQUENCE FAKTURA_SEQ; create table FAKTURA
drop SEQUENCE POZYCJA_FAKTURY_SEQ; (
ID NUMBER,
NUMER VARCHAR2(200) not null,
/*************** ID_FIRMY NUMBER not null,
Tworzenie tabel ID_SPRZEDAWCY NUMBER not null,
***************/ ID_NABYWCY NUMBER not null,
-- 1. Adres ID_ADRES_WYSTAWIENIA NUMBER not null,
create table ADRES DATA_WYSTAWIENIA DATE default sysdate not null,
( DATA_SPRZEDAZY DATE default sysdate not null,
ID NUMBER, DATA_PLATWNOSCI DATE default sysdate+14 not
MIEJSCOWOSC VARCHAR2(200), null,
ULICA VARCHAR2(200), CONSTRAINT FAKTURA_PK PRIMARY KEY(ID),
NUMER_DOMU VARCHAR2(200), CONSTRAINT FAKTURA_ID_FIRMY_FK FOREIGN KEY(ID_
NUMER_MIESZKANIA VARCHAR2(200), FIRMY)
KOD_POCZTOWY VARCHAR2(200), REFERENCES KONTRAHENT(ID),
POCZTA VARCHAR2(200), CONSTRAINT FAKTURA_ID_SPRZE_FK FOREIGN KEY(ID_
TELEFON VARCHAR2(200), SPRZEDAWCY)
CONSTRAINT ADRES_PK PRIMARY KEY(ID) REFERENCES KONTRAHENT(ID),
); CONSTRAINT FAKTURA_ID_NABY_FK FOREIGN KEY(ID_
NABYWCY)
-- 2. Kontrahent REFERENCES KONTRAHENT(ID),
create table KONTRAHENT CONSTRAINT FAKTURA_ID_ADRES_FK FOREIGN KEY(ID_
( ADRES_WYSTAWIENIA)
ID NUMBER, REFERENCES ADRES(ID),
NAZWA VARCHAR2(200) not null, CONSTRAINT FAKTURA_NUMER_UQ UNIQUE (NUMER)
NIP NUMBER not null, );
REGON NUMBER,
ID_ADRES NUMBER not null, -- 5. Pozycja Faktury
NAZWA_BANKU VARCHAR2(200), CREATE TABLE POZYCJA_FAKTURY
NUMER_KONTA VARCHAR2(200), (
CONSTRAINT KONTR_PK PRIMARY KEY(ID), ID NUMBER,
CONSTRAINT KONTR_ID_ADRES_FK FOREIGN KEY(ID_ADRES) ID_FAKTURA NUMBER,
REFERENCES ADRES(ID) ID_TOWAR NUMBER,
); ID_VAT NUMBER,
ILOSC NUMBER,
-- 3. Towar CONSTRAINT POZ_FAKT_PK PRIMARY KEY(ID),
create table TOWAR CONSTRAINT POZ_FAKT_ID_FAKT_FK FOREIGN KEY(ID_
( FAKTURA)
ID NUMBER, REFERENCES FAKTURA(ID),
NAZWA VARCHAR2(200), CONSTRAINT POZ_FAKT_ID_TOWAR_FK FOREIGN KEY(ID_
JEDNOSTKA VARCHAR2(200), TOWAR)
SWW VARCHAR2(200), REFERENCES TOWAR(ID),

60 luty 2010
Programowanie
Oracle APEX

sca w pakiecie APEX i są dostępne, jeśli szą aplikację wpisując w przeglądarce jej Aplikacje w technologii APEX podczas
uruchomiliśmy naszą aplikację będąc za- adres http://localhost:8080/apex/f?p=102 działania najczęściej korzystają z obiektów
logowanym jako developer do APEX. Jeśli to dodatkowych linków nie będziemy wi- umieszczonych w bazie danych. Oczywi-
wylogujemy się z APEX i uruchomimy na- dzieli. ście da się wykonać aplikacje w APEX,

Listing 3. Skrypt SQL tworzący model danych


CONSTRAINT POZ_FAKT_ID_VAT_FK FOREIGN KEY(ID_VAT) END IF;
REFERENCES VAT(ID) END;
); /
CREATE OR REPLACE TRIGGER "KONTRAHENT_PK_TRG"
/****************** BEFORE INSERT ON KONTRAHENT
Tworzenie Sekwencji FOR EACH ROW
******************/ BEGIN
create sequence ADRES_SEQ IF :NEW.ID IS NULL THEN
minvalue 1 SELECT KONTRAHENT_SEQ.NEXTVAL INTO :NEW.ID FROM
maxvalue 999999999999999999999999999 DUAL;
start with 1 END IF;
increment by 1; END;
/
create sequence KONTRAHENT_SEQ CREATE OR REPLACE TRIGGER "TOWAR_PK_TRG"
minvalue 1 BEFORE INSERT ON TOWAR
maxvalue 999999999999999999999999999 FOR EACH ROW
start with 1 BEGIN
increment by 1; IF :NEW.ID IS NULL THEN
SELECT TOWAR_SEQ.NEXTVAL INTO :NEW.ID FROM DUAL;
create sequence TOWAR_SEQ END IF;
minvalue 1 END;
maxvalue 999999999999999999999999999 /
start with 1 CREATE OR REPLACE TRIGGER "VAT_PK_TRG"
increment by 1; BEFORE INSERT ON VAT
FOR EACH ROW
create sequence VAT_SEQ BEGIN
minvalue 1 IF :NEW.ID IS NULL THEN
maxvalue 999999999999999999999999999 SELECT VAT_SEQ.NEXTVAL INTO :NEW.ID FROM DUAL;
start with 1 END IF;
increment by 1; END;
/
create sequence FAKTURA_SEQ CREATE OR REPLACE TRIGGER "FAKTURA_PK_TRG"
minvalue 1 BEFORE INSERT ON FAKTURA
maxvalue 999999999999999999999999999 FOR EACH ROW
start with 1 BEGIN
increment by 1; IF :NEW.ID IS NULL THEN
SELECT FAKTURA_SEQ.NEXTVAL INTO :NEW.ID FROM
create sequence POZYCJA_FAKTURY_SEQ DUAL;
minvalue 1 END IF;
maxvalue 999999999999999999999999999 END;
start with 1 /
increment by 1; CREATE OR REPLACE TRIGGER "POZYCJA_FAKTURY_PK_TRG"
BEFORE INSERT ON POZYCJA_FAKTURY
/******************* FOR EACH ROW
Tworzenie Wyzwalaczy BEGIN
*******************/ IF :NEW.ID IS NULL THEN
CREATE OR REPLACE TRIGGER "ADRES_PK_TRG" SELECT POZYCJA_FAKTURY_SEQ.NEXTVAL INTO :NEW.ID
BEFORE INSERT ON ADRES FROM DUAL;
FOR EACH ROW END IF;
BEGIN END;
IF :NEW.ID IS NULL THEN /
SELECT ADRES_SEQ.NEXTVAL INTO :NEW.ID FROM DUAL;

www.lpmagazine.org 61
Programowanie
Oracle APEX

która będzie działała i nie będzie korzysta- cji bazującej na obiektach bazodanowych. nym, pozwoli nam to jednak zapoznać się
ła z żadnej tabeli ani pakietu bazodanowe- W tym celu musimy stworzyć obiekty na z obiektami, które tworzymy.
go umieszczonego na schemacie, z którym naszym schemacie bazodanowym. Żeby Instrukcja uruchomienia skryptu dołączo-
powiązany jest nasz obszar roboczy. Taką dodać te obiekty możemy uruchomić w nego do gazety na płycie:
właśnie aplikację wykonaliśmy, ale trze- SQL Plus skrypt, który jest do pobrania ze Uruchamiamy konsolę w Ubuntu i wpisu-
ba przyznać, że nie jest to zbyt użyteczna strony internetowej http://www.sviete.pl/ jemy w niej polecenie uruchamiające konso-
aplikacja. W dalszej części naszego pozna- home/art/pliki/faktura_ddl.sql lub też lę SQL Plus:
wania pakietu APEX zajmiemy się wyko- ręcznie przepisać instrukcje z Listingu 1.
rzystaniem tego środowiska zgodnie z jego Ręczne przepisanie instrukcji w konso- $ /usr/lib/oracle/xe/app/oracle/
przeznaczeniem, czyli do budowy aplika- li SQL Plus jest zadaniem dość monoton- product/10.2.0/server/config/scripts/
runsqlplus.sh
Listing 4. Zapytanie SQL zwracające listę wartości z adresami
select w konsoli SQL Plus łączymy się z serwe-
MIEJSCOWOSC || ' ' || ULICA || ' ' || NUMER_DOMU display_value, rem bazodanowym jako użytkownik FAKTU-
ID return_value RA i podając hasło FAKTURA, czyli w konsoli
from ADRES SQL Plus wpisujemy connect FAKTURA as
order by 1 FAKTURA. Po połączeniu wykonujemy polece-
nie uruchamiające skrypt tworzący model da-

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

�����������

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

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

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

�����������

Rysunek 3. Model danych aplikacji Faktura

62 luty 2010
Programowanie
Oracle APEX

nych. W tym celu wpisujemy w konsoli SQL i dodajmy w aplikacji strony, które będą słu- my do kolejnego kroku, gdzie zatwierdza-
Plus @ddl.sql żyły do zarządzania danymi w tych tabe- my domyślne wartości dla kolejnej stro-
Alternatywnie możemy uruchomić lach. Wróćmy w APEX do Application Bu- ny z formularzem do wprowadzania/edycji
skrypt w APEX za pomocą aplikacji słu- ilder, wybierzmy naszą aplikację Fakturo- danych do tabeli Adres. Zatwierdzenie po-
żącej do interaktywnej pracy z serwerem wanie i dodajmy nową stronę (Create Pa- lega na przejściu dalej. W kolejnym kro-
bazodanowym (SQL Workshop). Do SQL ge). Tym razem wybierzmy typ strony (Pa- ku APEX domyśla się, że główny klucz dla
Workshop mamy dostęp z głównej stro- ge type), formularz (Form), następnie musi- tabeli Adres to ID, potwierdzamy to prze-
ny APEX (Home). Po uruchomieniu apli- my określić typ formularza. Do naszych ce- chodząc dalej. Teraz trzeba podać, co jest
kacji SQLWrokshop wybieramy w niej lów dobrze będzie, jeśli będziemy mieli ra- źródłem danych dla kolumny ID – w na-
opcję SQL Scripts a następnie importujemy port, na którym widać wszystkie rekordy szym przypadku jest to istniejący wyzwa-
nasz skrypt tworzący obiekty bazodanowe w tabeli słownikowej oraz jest możliwe lacz (Existing trigger). Ta opcja jest rów-
(Upload). Wybieramy lokalizację skryp- przejście do formularza z dodawaniem no- nież domyślna, więc przechodzimy do ko-
tu SQL znajdującego się na płycie dołą- wego rekordu lub zmianą/usuwaniem już lejnego etapu. Na tym formularzu wybie-
czonej do gazety (Browse…) następnie po- istniejącego. Do tego idealny będzie typ ramy kolumny, które mają być dostępne
twierdzamy import (Upload). Teraz klika- formularza z tabelą i raportem na tej tabeli do dodawania/edycji w naszym formula-
my na ikonę ze skryptem i możemy już go (Form on a Table with Report). rzu. Przytrzymując klawisz Shift wybiera-
uruchomić (Run). Teraz przejdziemy krok po kroku przez my wszystkie kolumny z listy i idziemy da-
Możemy też już sprawdzić, czy wyko- proces tworzenia formularza – zróbmy to lej (Next). Na kolejne pytanie, jakie proce-
nanie przebiegło poprawnie. W tym celu dla tabeli Adres. W pierwszym kroku za- sy mają być dostępne dla naszej tabeli, od-
w aplikacji, w której uruchamialiśmy twierdzamy właściciela tabeli, czyli w na- powiadamy jak zwykle domyślnymi warto-
skrypt w regionie z zadaniami (Tasks), szym przypadku FAKTURA i przechodzimy ściami, ponieważ chcemy mieć możliwość
znajdującym się po prawej stronie, wystar- dalej (Next). W kolejnym kroku wybiera- dodawania, edycji i usuwania danych ad-
czy kliknąć na informacje o rezultatach wy- my z listy lub wpisujemy nazwę tabeli: Ad- resowych. Przechodząc dalej docieramy do
konania skryptu (Manage Results). Skrypt res i przechodzimy do kolejnego formula- ostatniej strony kreatora gdzie zatwierdza-
tworzący obiekty może być wykonywa- rza. Teraz należy podać kilka cech naszej my wykonanie wszystkich wcześniej wy-
ny wielokrotnie. Na początku po urucho- nowotworzonej strony, takich jak: jej na- branych kroków (Finish).
mieniu usuwa obiekty a następnie je two- zwa, tytuł, typ raportu (który ma być uży- Dla reszty tabel słownikowych (Vat, To-
rzy. Jeśli dodaliśmy obiekty wpisując in- ty), itp. Proponuję pozostawić wszyst- war, Kontrahent) trzeba wykonać te same
strukcje ręcznie lub uruchamiając skrypt ko domyślnie, a zmienić jedynie ostat- kroki, co dla tabeli Adres.
przy pomocy SQL Plus, możemy urucho- nią rzecz – ustawmy, że chcemy używać Po wprowadzeniu wszystkich tabel
mić go jeszcze raz w aplikacji SQL Work- na stronie linków nawigacyjnych (Bred- słownikowych musimy jeszcze edytować
shop celem zapoznania się z tą funkcjonal- cumb) i podajmy w nazwie rodzica dla na- pole adres na formularzu do wprowadza-
nością w APEX. Jeśli uruchamiamy skrypt szej nawigacji (Parent Entry) stronę pierw- nia kontrahenta (tak żeby adres można by-
po raz pierwszy i nie mamy jeszcze utwo- szą – Strona Domowa; możemy to zrobić ło wybierać z listy). W tym celu w Applica-
rzonych obiektów bazodanowych, to otrzy- przez kliknięcie na link z listy, która nam tion Builder przechodzimy do edycji stro-
mamy informację, że skrypt wykonał się się pojawiła na dole formularza. Po tym ny z formularzem dla kontrahenta (Form
z błędami. Jeśli przyjrzymy się tym błę- możemy już kontynuować (Next). Na py- on KONTRAHENT), odszukajmy na stronie
dom, to zobaczymy, że dotyczą one usuwa- tanie czy używać zakładek na naszej stro- region z polami formularza (Items) i żeby
nia nie istniejących obiektów, tak więc ty- nie odpowiadamy tak jak jest domyślnie, przejść do edycji jego właściwości klikamy
mi błędami nie przejmujemy się. czyli że nie (Do not use tabs) i przechodzi- na polu tekstowym ID_ADRES. Zmienia-
Jeśli skrypt wykonał się poprawnie to my do kolejnego kroku. Teraz należy wy- my typ pola z pola tekstowego (Text) na po-
na naszym schemacie FAKTURA otrzymamy brać kolumny, które mają być widoczne na le typu lista wyboru (Select List), następnie
obiekty przedstawione na Rysunku 3. raporcie. Wybierzmy wszystko oprócz ID, zjeżdżamy suwakiem na stronie do regio-
Mając już obiekty bazodanowe, możemy można to zrobić klikając na kolumny z li- nu, w którym możemy ustawić właściwo-
wrócić do naszej aplikacji, gdzie przy użyciu sty z przytrzymanym klawiszem Shift. Po ści listy wartości (List of Values). W pole
kreatorów będziemy tworzyć nowe elementy wybraniu kolumn przechodzimy dalej i za- z definicją listy wartości (List of values de-
aplikacji bazując na naszych tabelach. twierdzamy domyślną ikonę jaka ma się finition) wpisujemy zapytanie SQL przed-
Zacznijmy od tabel tak zwanych słow- wyświetlać w kolumnie, w której możemy stawione na Listingu 2, zwracające adresy
nikowych (Vat, Towar, Adres, Kontrahent) wybierać wiersze do edycji. Przechodzi- z tabeli Adres.

Na Skróty
Aplikacje APEX można w łatwy sposób eksportować z przestrzeni roboczej i importować do przestrzeni roboczej. Możemy pobrać
aplikację Faktura ze strony http://www.sviete.pl/home/art/pliki/faktura_app.sql a następnie zaimportować ją do naszej przestrzeni
roboczej. W tym celu wystarczy w Application Builder wybrać przycisk Import a następnie podać lokalizację ściągniętego pliku fak-
tura_app.sql, przejść dalej wciskając przycisk Next i zatwierdzić instalacje przyciskiem Install. Aplikacja do poprawnego działania
wymaga obiektów bazodanowych. Do tworzenia tych obiektów można użyć skryptu faktura_ddl.sql. Instrukcja jak to wykonać zo-
stała dokładnie opisana wcześniej.

www.lpmagazine.org 63
Programowanie
Oracle APEX

Zatwierdzamy wprowadzone zmiany twierdzić tworzenie regionu (Create List Re- wiązań otwarto źródłowych takich jak Ja-
(Apply Changes) i możemy już uruchomić gion). Teraz możemy już uruchomić naszą sperReports, BIRT czy Apache Cocoon)
stronę z formularzem (Run) i sprawdzić jak 1 stronę, z której mamy dostęp do innych • integracja z zewnętrznymi bibliotekami Ja-
działa wybór z listy. stron w aplikacji poprzez nasze nowo utwo- vaScript (takimi jak jQuery, ExtJS, DOJO)
Żeby umożliwić poruszanie się po apli- rzone menu. • wykresy w Flash i integracja z Anychart
kacji na Stronie Domowej dodajmy linki do Pozostało nam jeszcze zdefiniowanie wsparcie dla WEB Serwisów
poszczególnych stron aplikacji. Możemy do strony z fakturami i ich pozycjami. Nie bę- • możliwość tworzenia własnych tematów
tego użyć specjalnego typu regionu, który dę już opisywał całego procesu, podpowiem interfejsu użytkownika
oczywiście jest już zdefiniowany w APEX. tylko, że żeby otrzymać stronę z raportem • stosowanie rozszerzeń w przeglądarkach
W Application Builder przejdźmy do edycji z faktur i możliwością podglądu pozycji fak- internetowych ułatwiających pracę deve-
1 strony aplikacji. Na pierwszej stronie po- tury po jej wybraniu, najłatwiej przy tworze- lopera aplikacji APEX.
winien być automatycznie dodany (podczas niu nowej strony wybrać typ formularza Ma-
tworzenia strony) pusty region Strona Do- ster Detail Form i wypełniać kolejne pola Ciekawym zagadnieniem jest też dość nowa
mowa. Przejdźmy do edycji (poprzez klik- w kreatorze. koncepcja wykorzystania APEX w modelu
nięcie jego nazwy) tego regionu i go usuń- Jeśli sprawi to komuś problem to można SaaS (oprogramowanie jako usługa). APEX
my (Delete). zaimportować wykonaną aplikacje i ją edy- się do tego idealnie nadaje. Oracle udostępnia
Teraz w obszarze po prawej stornie tować w Application Builder, zainteresowa- taką darmową usługę tylko dla niekomercyj-
z listami (Lists) klikamy w ikonę z dodawa- nych tą formą nauki APEX odsyłam do ta- nych aplikacji. Ciekawie wygląda też komer-
niem treści (Create), co spowoduje urucho- belki Na Skróty gdzie jest wyjaśnione jak cyjna oferta Amazon - EC2 Cloud.
mienie kreatora definiowania listy. Podaje- to zrobić. Jeśli spodobał Ci się APEX, to proponu-
my nazwę dla listy np.: L_MENU, jako typ Na tym kończymy wprowadzenie do ję zaopatrzyć się w dobrą myszkę i pozna-
pozostawiamy domyślną wartość i zatwier- Oracle APEX. Temat jest oczywiście bardziej wać go tworząc aplikacje. Polecam też od-
dzamy tworzenie listy (Create). Teraz bę- obszerny, w większych systemach informa- wiedzenie witryn internetowych, których
dziemy dodawać pozycje listy, w tym celu tycznych aplikacje APEX są integrowane adresy są podane w ramce W Sieci. Można
wybieramy dodawanie pozycji listy (Create z wieloma innymi komponentami czy aplika- też zapoznać się z nowymi możliwościami
List Entry) i wypełniamy wymagane pola. cjami. Na osobne artykuły zasługiwałyby ta- (kto wie czy nie rewolucyjnymi) jakie bę-
W pole etykieta (Label) wpisujemy Kon- kie tematy powiązane z Oracle APEX jak: dą dostępne w nowej wersji APEX 4.0 (któ-
trahent, a w pole z numerem strony (Page) ra prawdopodobnie ukaże się wcześniej niż
wybieramy wartość z listy dla strony z ra- • generowanie raportów (dedykowanym ten artykuł).
portem kontrahentów (Report on KONTRA- rozwiązaniem jest Oracle BI Publisher, ale Wydajnego i satysfakcjonującego kodo-
HENT). To samo wykonujemy dla pozosta- bardzo łatwo możemy skorzystać z roz- wania.
łych stron, które wcześniej dodaliśmy tj.
Vat, Towar i Adres.
Teraz w obszarze z regionami kliknij- O autorze
my małą ikonę z obrazkiem dodawanej tre- Autor tego artykułu posiada certyfikat Oracle Certified Professional. Jest pasjonatem idei
ści (Create), spowoduje to oczywiście uru- Open Source oraz technologii informatycznych. Z Oracle zawodowo pierwszy raz miał do
chomienie odpowiedniego kreatora do do- czynienia w 2005 roku podczas wdrażania hurtowni danych w jednym z większych polskich
dawania nowego regionu na stronę domową. banków. Pierwsze produkcyjne wykorzystanie przez autora technologii Oracle APEX mia-
Typ regionu – wybieramy listę (List) i prze- ło miejsce w 2008 roku w firmie WINUEL S.A., w której jako Architekt Techniczny zajmował
chodzimy dalej (Next). W kolejnym kroku, się projektowaniem i budowaniem systemu logistycznego. Jedną ze składowych tego sys-
w tytule (Title) wpisujemy Nawigacja, a ja- temu jest aplikacja wykonana w Oracle APEX. Obecnie autor jest właścicielem firmy SVIE-
ko typ regionu wybieramy raport typu lista TE, współpracuje z firmą SIEMENS SP Z.O.O oraz z firmą WINUEL S.A.
(Report List). Po przejściu dalej należy wy- Kontakt z autorem: araczkowski@gmail.com
brać utworzoną wcześniej listę L_MENU i za-

W Sieci
• http://www.oracle.com/technology/products/database/application_express/index.html – Strona główna Oracle APEX (en);
• http://forums.oracle.com/forums/forum.jspa?forumID=137 – Forum Oracle APEX (en);
• http://apexblogs.info/pls/apex/f?p=113 – Aggregator Blogów o Oracle APEX (en);
• http://apex.oracle.com/pls/otn/f?p=59652 – Prezentacje z konferencji Oralce APEX (en);
• http://apex.oracle.com/i/index.html – Darmowy serwis typu SaaS oferujący oprogramowanie APEX jako usługę.
• http://www.oracle.com/technology/products/database/application_express/apex_sod.html – Kierunek rozwoju Oracle APEX, tu
możemy zobaczyć, czego się możemy spodziewać w kolejnej wersji pakietu.
• http://www.sviete.pl/home/art/pliki/faktura_ddl.sql – skrypt z definicją obiektów bazodanowych używanych w aplikacji faktura
opisanej w artykule
• http://www.sviete.pl/home/art/pliki/faktura_app.sql – skrypt z definicją aplikacji faktura

64 luty 2010
Dla początkujących
Mapy myśli

Mind mapping
uporządkuj pomysły na nowy rok
Łukasz Lechert

Każdy menedżer i konsultant w swojej codziennej pracy posługuje się dużą ilością informacji. Mapy
myśli to dobry sposób zapisu informacji – skoncentrowany, ustrukturalizowany i przejrzysty. Mind
mapping, technika tworzenia map myśli zalecana jest przed realizacją każdego projektu, w celu
lepszego zrozumienia problemu, zdefiniowania celów oraz zidentyfikowania ewentualnych zagrożeń.

C
linux@software.com.pl

zynność sporządzania notatek towarzyszy Szczypta historii


każdemu przez całe życie. Bierzemy udział Koncepcja map myśli narodziła się w latach siedem-
w wykładach, czytamy książki, notujemy dziesiątych XX wieku. Twórcą teorii jest Tony Buzan.
przepis na smaczną potrawę, którą ugoto- Prekursor mind mappingu, czyli techniki wyrażania
wali znajomi i podali na swoich urodzinach. W więk- myśli i pomysłów za pomocą map myśli. Jest twórcą
szości przypadków notujemy w sposób odtwórczy, czy- Światowych Mistrzostw w Szybkim Czytaniu, współ-
li bierny. Pozwala to uporządkować informacje przeka- twórcą Olimpiady Gier Umysłowych oraz Memoriady
zane przez innych. Zdarzają się przypadki, kiedy notatki – mistrzostw świata w zapamiętywaniu. Tony Buzan ja-
sporządzane są w sposób twórczy. Oprócz przekazanych ko autorytet z dziedziny badań nad mózgiem oraz tech-
informacji, do tekstu dodawane są własne przemyślenia nik uczenia się jest autorem wielu książek poświęco-
i skojarzenia, które w przyszłości pozwolą szybciej od- nych inteligencji, kreatywności oraz umiejętnościom
czytać i przypomnieć sobie notowany materiał. Każdy posługiwania się umysłem. Drugą postacią, która za-
może posiadać własny styl notowania. Jedni notują, po- sługuje na wyróżnienie jest brat Toniego, Barry Bu-
sługując się wyłącznie tekstem, inni dodają proste rysun- zan. Obaj panowie od roku 1970 poświęcili się bada-
ki, diagramy i relacje pomiędzy częściami tekstu. Notat- niom nad zastosowaniem i upowszechnieniem mind
ki w postaci list i punktów trudno jest rozbudowywać. mappingu. Wiosną 1974 roku mapy myśli po raz pierw-
Niekiedy dają fałszywe odczucie, że są zamknięte i kom- szy zostały zaprezentowane w książce Rusz głową. Był
pletne. W konsekwencji umysł nie wykracza poza grani- to pierwszy krok do dalszej pracy i rozwoju koncep-
cę listy, co tłumi nowe pomysły. Oprócz tradycyjnych cji, która trwa do dziś. W 1981 roku rozpoczęły się pra-
linearnych form notowania można wykorzystać nowe ce nad materiałem do książki Mapy Twoich myśli, któ-
techniki, które pobudzają ludzką kreatywność. Są nimi ra jest syntezą wiedzy na temat stosowania techniki
mind mapping i mapy myśli. oraz przewodnikiem jak ją stosować w praktyce. To-

66 luty 2010
Dla początkujących
Mapy myśli

ny Buzan jest założycielem i liderem fun- Element centralny jest tematem mapy. zastosować pogrubienie, efekt trójwymiaro-
dacji Brain. Z upływem czasu powstały po- Jest najważniejszym i najbardziej widocz- wości lub zapisać informację za pomocą od-
chodne mind mappingu wykorzystywane nym elementem mapy myśli. Tworząc cen- powiedniego koloru. Przekaz powinien być
w biznesie. Do nich można zaliczyć bussi- trum mapy na środku kartki, można posłu- przejrzysty, wyraźny np. w postaci liter dru-
nes mapping oraz concept mapping. Busi- żyć się rysunkiem, kolorowym tekstem oraz kowanych oraz łatwy do zapamiętania.
ness mapping jest opracowywaniem opisów symbolami. Ważnym zaleceniem jest, że- Symbole, czyli odpowiedniki prostych
dotyczących procesów biznesowych przed- by element ten był widoczny, jasno wyrażał pojęć stosuje się do zastępowania jedne-
siębiorstwa za pomocą map myśli. Concept sens i odróżniał się od pozostałych. go dłuższego pojęcia innym, bardziej wy-
mapping opracowana przez Josepha Nova- Od elementu centralnego odchodzą ra- razistym, lepiej oddającym jego naturę.
ka, może zostać zastosowana w procesie za- miona. Ilość ramion głównych, czyli tych W praktyce stosuje się wiele symboli. Prost-
rządzania projektami do prezentacji celów, które odchodzą od centrum mapy może być sze np. pentagram jako symbol doskonałości
ról, harmonogramu oraz nowych pomysłów dowolna. Ważnym zaleceniem jest, żeby za- lub złożone i mniej znane np. symbol ziemi
i relacji zachodzących między nimi. Rysun- chować porządek oraz wyrazistość całej ma- zwany krzyżem słonecznym (koło z krzy-
ki i notatki podobne do map myśli powstały py. Na poszczególnych ramionach można żem w środku). Główną zasadą warunku-
już o wiele wcześniej. Z tym twierdzeniem umieszczać tekst, kolejne rysunki, symbo- jącą stosowanie symboli jest znajomość ich
można odnieść się nawet do XV wieku. Po- le oraz je zagnieżdżać np. budując kolejny semantyki. Znaki utrwalone, często używa-
stać Leonarda Da Vinci jest znana każdemu. poziom skojarzeń. Ramiona mogą zostać ze ne praktycznie okażą się przydatne oraz po-
Słynny włoski malarz, architekt, filozof, od- sobą połączone w taki sposób, żeby wyrazić zwolą też ukrywać część znaczenia informa-
krywca i wynalazca w swojej pracy posługi- relacje zachodzące pomiędzy poszczególny- cji zawartej na mapie myśli.
wał się notatkami w postaci rysunków, któ- mi elementami. Relacje mogą zostać dodat- Żyjemy w świecie barw, które wpływają
re można uznać za przodków współczesnych kowo opisane za pomocą tekstu. na całe otoczenie. Kolory dzielimy na zimne
map myśli. Zastosowanie rysunków pozwala wizu- i ciepłe. Zimnymi kolorami są np. niebieski
alizować własne przemyślenia. Jest to me- i zielony. Do kolorów ciepłych można zali-
Mapy myśli chanizm szczególnie użyteczny dla wzro- czyć żółty i czerwony. Kolor czerwony dzia-
Mapy myśli podobnie jak języki obce, któ- kowców, dla których liczą się obrazy i sko- ła pobudzająco. Jest on pomocny gdy czuje-
rymi posługujemy się na co dzień lub też jarzenia z nimi związane. Częste wykorzy- my się źle, zmęczeni, brakuje energii, a nie-
języki programowania posiadają własną stanie rysunków pozwoli w dużej mierze po- kiedy jesteśmy w depresji. Działa w sposób
składnię. Składnia definiuje elementy i kon- zbyć się przekonania, że mogą one być nie- ożywiający, pobudza oraz rozgrzewa. Nad-
strukcje, którymi można się posługiwać mó- zgrabne i kiepskie. W naturze ludzkiej zako- miar czerwonego koloru może prowadzić do
wiąc lub opracowując program komputero- rzeniona jest zasada podejmowania nowych rozdrażnienia. Kolor żółty to kolor słońca.
wy. W parze ze składnią występuje seman- prób i doświadczania sukcesów. Dlatego na- Wpływa on pozytywnie na psychikę ponu-
tyka, czyli znaczenie poszczególnych ele- wet jeśli na początku rysunki są niedoskona- raków, dodając pewności siebie. Żółty przy-
mentów oraz reguły ich zastosowania. Mapy łe, bądź po prostu brzydkie, można wytłu- nosi nadzieję oraz daje poczucie bezpie-
myśli nie są językiem przekazu, który jest maczyć ten fakt, że znajdują się w pierw- czeństwa. Jest lekarstwem na stres, kłopoty
ściśle zdefiniowany. Do tej pory nie pojawi- szym stadium rozwoju od którego zaczy- z koncentracją, stosowany w rozsądnych
ła się żadna formalna specyfikacja przemy- na się stały proces doskonalenia tej umie- dawkach przynosi stany spokoju i stabil-
słowa dotycząca mind mappingu. W dużej jętności. ności. Zielony jest kolorem uzdrawiającym,
mierze odbiega on od języków programowa- Tekst pisany, domena notatek linearnych kolorem przyrody. Wprowadza harmonię do
nia, ponieważ mind mapping nie jest narzę- z powodzeniem można stosować tworząc ciała i umysłu. Ostatni z przykładowych ko-
dziem służącym do dialogu z maszynami cy- mapy myśli. Krótki tekst, słowa klucze na- lorów to niebieski. Niebieski uspokaja, wy-
frowymi, lecz metodą na wyrażanie siebie, leży rozmieszczać wzdłuż ramion. Dodatko- cisza wewnętrznie, działa niekiedy nasen-
własnych przemyśleń i skojarzeń. Mimo ta- wo wyrażając priorytet danej notatki można nie. Przydaje się często do zwalczania na-
kiego stwierdzenia wyróżnia się elementy,
które powtarzają się w wielu mapach oraz
można uznać je jako kluczowe, którymi po-
Wybrane zasady mind mappingu
winien posługiwać się twórca map. • ułóż kartkę A4 poziomo,
• element centralny umieść na środku kartki,
• nad ramionami definiuj pojedyncze słowa kluczowe,
• używaj minimum trzech kolorów,
• stosuj możliwie dużo rysunków na ramionach,
• używaj efektu trójwymiaru,
• łącz strzałkami podobne elementy mapy dla wyrażania relacji i zależności między nimi,
• pisz drukowanymi literami,
• stosuj hierarchię pojęć od ogółu do szczegółu,
• używaj skojarzeń,
• nie bój się absurdu i eksperymentów,
• na każdym z ramion pisz jedno słowo kluczowe,
Rysunek 1. Przykład mapy myśli sporządzonej od- • wypracuj własny styl.
ręcznie

www.lpmagazine.org 67
Dla początkujących
Mapy myśli

pięcia i bólu. Stosowanie kolorów wzbogaca sporządzania notatek oraz umożliwią przej-
notatek, a skończywszy na zarządzaniu pro-
mapy, umożliwia uwypuklanie wybranych ście na poziom nieświadomej kompetencji.
jektami i wsparciu dla analizy ryzyka. Każdy
informacji oraz wprowadza entuzjazm do Adaptacja odnosi się do ustawicznego rozwo-
entuzjasta map myśli może wybrać dowolną
codziennego życia. Przykładowa mapa my- ju własnych zdolności w obszarze mind map-
z dziedzin i doskonalić umiejętności w tym
śli, która zawiera opisywane elementy zosta- pingu. Będąc na poziomie nieświadomej kom-
zakresie. Za pomocą map myśli możemy or-
ła zaprezentowana na Rysunku 1. petencji, można adaptować własne rozwiąza-
ganizować każdy dzień pracy, czynności za-
nia i szablony map do różnych obszarów i sy-
planowane na dany miesiąc lub też cele, które
Technika tuacji życiowych. Oprócz składni i znaczenia
mają zostać osiągnięte w danym roku. Grupa
Posiadając informację na temat elemen- elementów map myśli mind mapping dostar-
map może pełnić rolę osobistego organizera,
tów map myśli, punkt ten jest etapem wyj- cza zasady, które należy przestrzegać oraz sto-
który może okazać się pomocny w codzien-
ściowym do doskonalenia umiejętności po- sować w praktyce. Wybrane zasady zostały za-
nej pracy zawodowej oraz być wydajniejszy
sługiwania się mind mappingiem. Dodatko- mieszczone w ramce. i atrakcyjniejszy od zwykłych terminarzy.
wo proces uczenia można wzbogacić zasa- Oprócz zasad technicznych istnieją rów-
Mapa obrazująca cele roczne może zostać
dą ASA. Skrót ten pochodzi od słów Akcep- nież zalecania odnoszące się do otoczenia,
sporządzona mniej szczegółowo.
tuj, Stosuj i Adaptuj. Akceptując należy uwol- przygotowania do tworzenia map oraz po- Detale jakie będzie zawierać mogą zostać
nić się od wszelkich założeń na temat gra- zytywnych postaw i zachowań jednostki.przestawione ogólnie, ponieważ ich uszcze-
nic swoich zdolności i możliwości umysło- W ramce zostały zamieszczone najważniej-
góławianie może następować na poziomie
wych. W tym wypadku chodzi o kreatywność sze zalecenia mind mappingu. planów miesięcznych i planu dnia. Wska-
oraz możliwość swobodnego tworzenia map Zdobytą wiedzę można zastosować i do-
zane jest używanie kolorów i symboli, pod-
i czerpania zadowolenia z własnych prac. Dru- skonalić w każdym obszarze własnej aktyw-
kreślających ważność i priorytety poszcze-
gi etap to doskonalenie umiejętności. Zaleca- ności. Mapy myśli są prostym i elastycz-
gólnych celów. Plan miesięczny jest dokład-
ne jest systematyczne tworzenie map myśli, nym narzędziem, które można wykorzystać
niejszą rozszerzoną wersją planu rocznego.
stosowanie w praktyce kiedy jest to niezbęd- w wielu dziedzinach codziennego życia.W tym przypadku możemy podzielić kartkę
ne. Eksperymenty z mapami pozwolą wytwo- na poszczególne miesiące w roku. Również
rzyć własny, indywidualny styl. Z czasem na- Zastosowania dla przejrzystości, dla poszczególnych mie-
biera się wprawy, a mapy staną się naturalnym Spektrum zastosowań mind mappingu jest sięcy można przygotować oddzielne mapy
sposobem porządkowania myśli, pomysłów, bardzo szerokie. Począwszy od sporządzania obrazujące cele do osiągnięcia w danym mie-
siącu. Plany na dany rok i poszczególne mie-
siące są doskonałą podstawą do okresowych
Wybrane zalecenia mind mappingu przeglądów postępów prac oraz do wyzna-
czania celów na przyszłość. Wyszukiwanie
• bądź wypoczęty,
podobieństw, błędów oraz niepowodzeń w re-
• bądź wytrwały,
alizacji dzięki mapom myśli staje się łatwiej-
• ćwicz systematycznie i konsekwentnie,
sze. Plan dnia można przedstawiać za pomo-
• nie zrażaj się,
cą jednej mapy myśli. Dobrym rozwiązaniem
• nastaw się pozytywnie,
jest posługiwanie się tarczą zegara, ponieważ
• wierz w siebie i potęgę swojego umysłu,
ludzki mózg w większym stopniu zapamiętu-
• regularnie wracaj i przeglądaj swoje mapy myśli,
je obrazy, które są znane i wcześniej zostały
• pracuj przy świetle naturalnym,
trwale zakodowane. Dobrą techniką jest po-
• pracuj w wywietrzonym pomieszczeniu,
dział dnia na części. Każda z części będzie
• pracuj przy ulubionej muzyce.
odnosić się do spraw, które należy załatwić w
czasie pracy, w czasie wolnym uwzględnia-
jąc nie tylko obowiązki, ale również przerwy,
relaks, sport i rozrywkę. Zaletami prowadze-
nia nielinearnego dziennika jest spojrzenie na
własne życie w mikro i makroperspektywie.
Z jednej strony mapy myśli stosowane do or-
ganizacji czasu są dokumentacją przeszłości,
z drugiej zapisem przyszłych zamierzeń. Po-
zwalają kontrolować obszary życia, które są
dla danej osoby najważniejsze.
Ciekawym zastosowaniem mind map-
pingu jest organizacja spotkań oraz pre-
zentacje przy pomocy map myśli. Podczas
przygotowywania agendy można wykorzy-
stać mapę rysując w centrum kartki sym-
bol definiujący temat spotkania. Tak spo-
rządzony temat staje się centralnym punk-
Rysunek 2. Pierwsza wersja mapy myśli tem mapy, a główne problemy, które ma-

68 luty 2010
Dla początkujących
Mapy myśli

ją zostać omówione mogą odpowiadać od- ziomu menedżera pakietów Synaptic. Praca ikonkę z listy po lewej stronie okna narzę-
chodzącym ramionom. Podczas trwania ze- i kreślenie map myśli jest intuicyjne. Tworze- dziowego. Efekty pierwszych prac nad mapą
brania można dopisywać i uzupełniać rysun- nie map myśli można przećwiczyć posługując zostały przedstawione na Rysunku 2.
kami poszczególne ramiona oraz tworzyć się przykładem odręcznej mapy, która została Program Freemind umożliwia użytkow-
nowe odgałęzienia, które przedstawiać bę- zaprezentowana wcześniej w artykule. Za po- nikowi tworzenie odnośników do zasobów
dą nowe propozycje i dane pojawiające się mocą funkcji New>File otwieramy nowy pro- sieciowych. Gdy chcemy, żeby odgałęzie-
podczas dyskusji. jekt. Na środku płótna zostanie automatycznie nia zawierały odnośniki do stron www, kli-
Analogicznie mapy mogą zostać wyko- utworzony element centralny. Początkowo za- kamy prawym przyciskiem na słowo kluczo-
rzystane do projektowania przebiegu pre- wiera on standardowy napis New Mindmap. we, które ma być linkiem i wybieramy pozy-
zentacji i wystąpień. Główną zaletą opisy- Klikając na ten element możemy wprowadzić cję Node>Set Link (Textfield). Następnie wpi-
wanego zastosowania jest zwiększenie wy- własną nazwę. Wpisujemy tekst Mapa Myśli. sujemy adres strony internetowej do której
dajności współpracy w grupie. W dowolnym Edycję możemy wywołać również po wci- użytkownik zostanie przeniesiony po klik-
momencie prezentacji lub zebrania można śnięciu klawisza F2. Do tak utworzonego cen- nięciu wybranego węzła z odnośnikiem. Lin-
włączać do mapy nowe sugestie i pomysły, trum mapy możemy następnie dodać odgałę- ki można tworzyć też do plików oraz do in-
które wpływają pozytywnie na całokształt zienia. Klikając na element centralny oraz pra- nych węzłów, które powiązane są znaczenio-
wystąpienia. wym klawiszem myszy rozwijamy menu kon- wo z wybranym elementem struktury. Taką
Ostatnim z proponowanych przeze mnie tekstowe, a następnie wybieramy funkcję New relację możemy zaznaczyć strzałką. Klika-
zastosowań to zarządzanie ryzykiem. Ryzy- child node. Kolejno wprowadzamy całą hie- my prawym przyciskiem na słowo kluczo-
ko istnieje w każdym przedsięwzięciu, a je- rarchię gałęzi ze wzorcowej mapy. Czynność we, z którego ma wychodzić strzałka i prze-
go minimalizacja jest jednym z głównych tą możemy wykonać szybciej za pomocą kla- ciągamy wskaźnik nad słowo kluczowe na
celów osób realizujących projekt. Chcąc w wisza Insert. Dodawanie kolejnych poziomów które chcemy wskazać. Gdy puścimy prawy
świadomy sposób kontrolować oraz zapo- odgałęzień (potomków) odbywa się analo- przycisk myszy pojawi się strzałka. Jej poło-
biegać ryzykom, konieczny jest odpowied- gicznie. Podświetlamy interesujące nas odga- żenie możemy modyfikować klikając lewym
ni proces zarządzania. Planowanie procesu łęzienie i wciskamy ponownie klawisz Insert. przyciskiem myszy i przeciągając w wybrane
zarządzania ryzykiem jest przygotowaniem W ten sposób powstaje cała struktura ma- miejsce. Dla naszego przykładu można utwo-
kompleksowych czynności w kontekście py myśli. W razie potrzeby, możemy zwinąć rzyć relację pomiędzy węzłami Notatka i Na-
realizowanego projektu. Celem tego etapu część mapy. Jest to przydatne zwłaszcza wte- uka. W celu wyróżnienia niektórych węzłów
jest stworzenie infrastruktury, metod i wy- dy, gdy mamy już bardzo rozbudowaną struk- można zastosować chmurki. Element ten
bór narzędzi, które będą służyć do sprawne- turę, a pracujemy tylko nad jej fragmentem. można wykorzystać do podkreślenia faktu,
go i efektywnego zarządzania problemami. Klikając na element centralny oraz na po- że niektóre węzły mapy muszą zostać jesz-
W etapie identyfikacji ryzyk celem jest wy- szczególne odgałęzienia, możemy w prosty cze dopracowane lub wymagają modyfikacji.
krycie źródeł i poszczególnych ich rodza- i wygodny sposób zwijać i rozwijać ich za- Jeżeli chcemy upiększyć mapę za pomocą tej
jów, które mogą zaistnieć podczas trwania wartość. funkcjonalności, wybieramy węzeł który nas
projektu. Ze względu na ograniczone moż- Tak utworzoną strukturę można upięk- interesuje, a następnie za pomocą menu kon-
liwości przewidywania przyszłych zdarzeń, szyć za pomocą ikon. Wystarczy kliknąć tekstowego oraz funkcji Node>Style>Cloud
czynności tego etapu przeprowadzane są prawym przyciskiem myszy na interesują- wstawiamy chmurkę. Alternatywą jest skrót
również podczas późniejszych faz trwania cy nas element mapy myśli, z menu kontek- klawiaturowy Ctrl+Shift+B. Następnie mo-
projektu np. fazy realizacji. Podczas sesji stowego wybrać pozycję Icons, a następnie żemy zmienić jej kolor, klikając Node>Style-
identyfikacji można wykorzystać mapy my- ikonkę, która nam w danym momencie przy- >Cloud Color. Praca z kolorami w programie
śli notując pomysły uczestników oraz spo- padnie do gustu. Ten sam efekt uzyskamy Freemind jest bardzo urozmaicona. Można
rządzać recepty wyeliminowania poszcze- podświetlając fragment mapy i wybierając zmieniać kolory gałęzi, tła oraz kroje czcio-
gólnych zagrożeń. Na koniec nie pozostaje
nic innego jak zachęcić do refleksji dotyczą-
cej innych obszarów zastosowań.

Freemind i kreślenie map


Program Freemind jest produktem o otwartym
kodzie i jest udostępniany bez opłat. Umożli-
wia kreślenie i zapis map m.in. w formatach
XML oraz JPG. Dokumenty mogą być w ła-
twy sposób przenoszone pomiędzy systema-
mi i konwertowane do innych formatów. Fre-
emind posiada wsparcie społeczności wolne-
go oprogramowania oraz dobrą dokumentację
w postaci map myśli. Program bazuje na plat-
formie Java. Do uruchomienia aplikacji nie-
zbędne jest środowisko uruchomieniowe jre
javy. Freemind oraz wszystkie zależności
można w łatwy sposób zainstalować z po- Rysunek 3. Finalna mapa myśli

www.lpmagazine.org 69
Dla początkujących
Mapy myśli

nek pisma. Chcąc zmienić kolor napisu znaj- z JavaScriptem oraz dodatkowo rysunkiem schematem Gantta przyszłego projektu. Ko-
dujący się w konkretnym węźle wybieramy mapy z linkami. Użytkownik może w szyb- lejne poziomy węzłów po skonwertowaniu
preferowany element, następnie uruchamia- ko wybrać dowolny węzeł i rozwinąć go kli- stają się zadaniami i podzadaniami projektu.
my Node>Node Color i uruchamiamy okno kając na obrazek. Wygenerowany kod strony Funkcja ta jak dotąd dostępna jest niestety
dialogowe Choose Node Color. Z dostępnej webowej, może zostać również opublikowa- poza samym Freemidem i wymaga dodatko-
palety kolorów możemy wybrać ulubiony de- ny na własnej stronie www. wej konfiguracji. Przytoczone przykłady in-
seń. W podobny sposób zaznaczając wciśnię- Bardzo przydatna może okazać się in- tegracji opisywanego narzędzia nie opisują
tym klawiszem Ctrl całą hierarchię, można tegracja z narzędziami do pracy biurowej. wszystkich opisywanych przez autorów na
zmienić za pomocą jednej operacji kolor kil- W prosty sposób można zintegrować mapę stronie możliwości. Program udostępniany
ku węzłów. Prezentowana aplikacja umożli- z klientem pocztowym. Tworząc odnośni- jest na licencji GNU GPL i każdy z czytel-
wia również formatowanie tekstu. Powięk- ki opisywane wcześniej w artykule, może- ników może przyczynić się do jego rozwoju,
szanie napisów realizuje się w sposób try- my dodać do adresu mail przedrostek mail- do czego gorąco zachęcam.
wialny klikając funkcję Node>Font Larger to, definiując w ten sposób polecenie uru-
Font lub Smaller Font. Chcąc przyspieszyć chomienia klienta pocztowego i okna do Podsumowanie
pracę można użyć skrótów [Ctrl+L] i [Ctr- edycji nowej wiadomości. Aplikacja dys- Oprogramowanie otwarte staje się coraz
l+M]. Zwolenników pogrubień i kursywy za- ponuje również specjalną funkcją ekspor- bardziej popularne i użyteczne. Przykła-
dowolą kombinacje klawiszy [Ctrl+I] i [Ctr- tu mapy do formatu dokumentu aplikacji dem jest prezentowany Freemind. Proble-
l+B]. Końcowy efekt ćwiczenia można obej- Open Office Writer, która zapisuje projekt mem dla organizacji komercyjnych są uwa-
rzeć na Rysunku 3. w formacie sxw. Możliwość ta pojawiła się runkowania licencyjne oraz brak często pro-
Prezentacja nie wyczerpuje wszyst- od wersji 0.8.0 oraz może okazać się po- fesjonalnego wsparcia ze strony producen-
kich możliwości Freeminda, a prezentowa- mocną przy tworzeniu dokumentacji pro- tów. Niektóre licencje nakazują udostępnia-
ny przykład można urozmaicać i rozbudo- jektowej. Program posiada również minu- nie własnych rozszerzeń i modyfikacji spo-
wywać według własnego uznania i pomy- sy. Rozczarowuje integracja map z aplika- łeczności np. GNU GPL. Dla sporej liczby
słowości. Można zauważyć, że mapa myśli cją Open Office Impress. W tym przypad- przedsiębiorców oferujących oprogramowa-
sporządzona komputerowo różni się diame- ku należały użyć arkusza xslt i przekształ- nie o zamkniętym kodzie fakt ten jest nie do
tralnie od tej, która wykonana została ręcz- cić plik xml do postaci akceptowanej przez zaakceptowania. Nie jest to regułą. Adapta-
nie. Programy komputerowe wyręczają użyt- Impress. Z uwagi na fakt, że w dużej mie- cja darmowego, otwartego oprogramowania
kowników, wprowadzają prostotę i automaty- rze mind mapping może być wykorzysty- jest coraz powszechniejsza w projektach,
zację prac nad notatkami. Dla niektórych jest wany w prezentacjach, wskazane jest doda- a Freemind używany jest przez duże orga-
to zaleta, dla innych wada. Niepodważalnym nie tej funkcji, na przykład obok eksportu nizacje w codziennej pracy. Swoboda oraz
jest fakt, że mapy myśli tworzone kompute- do formatu Open Office Writer. Dla mniej nieskrępowane wyrażanie własnych myśli
rowo zabierają przyjemność tradycyjnego ry- zaawansowanych użytkowników pozosta- są elementami, które przemawiają za zwró-
sowania oraz sprawiają, że proces ten staje je tez możliwość bezpośredniego osadze- ceniem uwagi na mind mapping. Mapy my-
się z czasem mechaniczny. Na uwagę zasłu- nia pliku jpg z mapą w Impressie. Optymi- śli mogą okazać się pomocne w codzien-
guje również system pomocy programu. Do- styczną wiadomością jest informacja o za- nym życiu. Jest to technika, która jest no-
kumentację stanowi jedna duża mapą myśli, mieszczeniu tego problemu na liście przy- wą jakością. Dla początkujących adeptów
sporządzona w języku angielskim. Integracja szłych rozszerzeń Freeminda. mind mappingu, program Freemind jest do-
z funkcjami wyszukiwania aplikacji umożli- Na stronie aplikacji zamieszczony jest brą propozycją, ponieważ istnieje wiele wy-
wia szybkie i wygodne nawigowanie po wę- link do konwertera map do formatu plików dań dla różnych dystrybucji systemu opera-
złach systemu pomocy oraz opisami. programu do zarządzania projektami Gantt- cyjnego Linux. Ostateczną ocenę i wybór
Project. Konwerter ten może być pomocny chciałbym jednak pozostawić końcowym
Integracja podczas tworzenia mapy, będącej później użytkownikom.
Mapy myśli domyślnie zapisywane są w for-
macie xml. Format ten umożliwia przekształ-
cenie utworzonego zasobu do dowolnego in- O autorze
nego formatu wymaganego przez system
docelowy. Zatem możliwości integracji na Autor jest absolwentem specjalizacji Inżynieria Oprogramowania Politechniki Wrocław-
pierwszy rzut oka wyglądają bardzo opty- skiej oraz Studium Podyplomowego Zarządzanie Projektem na Poznańskim Uniwersyte-
mistycznie. W aplikacji znajdują się funk- cie Ekonomicznym. Interesuje się systemami wspierającymi procesy logistyczne, zagad-
cje eksportujące mapy np. do formatu HTML nieniami zarządzania projektem oraz oprogramowaniem o otwartym kodzie.
oraz XHTML. Czynność tworzenia prezen- Kontakt z autorem: lukasz.lechert@gmail.com
tacji HTML jest trywialna. Należy urucho-
mić funkcje File>Export, a następnie wybrać
opcję Export As HTML. Aplikacja zapiszę
stworzoną mapę w postaci hierarchii rozwi-
W Sieci
janych węzłów. Dodatkowo zostaną dodane • Mistrzostwa Świata w Zapamiętywaniu – http://www.worldmemorychampionships.com
przyciski zwijające i rozwijające całą struktu- • Fundacja Mózg – http://www.braintrust.org.uk/
rę (All+ i All-). Freemind umożliwia ekspor- • Freemind – http://freemind.sourceforge.net
towanie map do formatu XHTML do wersji

70 luty 2010
���������������

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

CYKL SZKOLEŃ
Z OBSZARU
ZARZĄDZANIA
BEZPIECZEŃSTWEM IT


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

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

������������������
������������������������������
����������������������
Recenzje
Jets'n'Guns Gold

Jets'n'Guns Gold
Maciej Mroziński

O
pisywany tytuł należy do zda- sji na platformę MacOS X, zaś 30 stycznia 2009 trzonych dodatkowo sporą ilością tekstu. Tak,
wać by się mogło wymierające- roku za sprawą Linux Game Publishing doczeka- przyznam szczerze, że mnie samemu niekiedy
go gatunku kosmicznych strze- ła się natywnej wersji linuksowej. nie chciało się czytać wszystkiego co tam twór-
lanek typu side scrolling. Jest on W grze wcielamy się w postać najemnika cy powypisywali. Zdając sobie jednak sprawę, że
w dodatku grą komercyjną toteż aby pograć w wykonującego zlecenia od kogo popadnie, by- warto mieć pojęcie o co w grze chodzi jeśli bę-
pełną wersję gry trzeba ją wcześniej kupić. Z ja- leby tylko jakoś utrzymać się w interesie z na- dzie się ją recenzować dzielnie przedłużałem od-
kiegoś jednak powodu, mając do wyboru kilka dzieją; że kolejne będą chociaż trochę mniej par- stępy między kolejnymi salwami pocisków posy-
tytułów wybrałem właśnie ten i w żadnym razie szywe od poprzednich. Zaraz po rozpoczęciu gry łanych w stronę wroga i czytałem. Mogę szcze-
nie żałuję swojej decyzji. Mało tego, gra zgod- skontaktują się z nami ekolodzy, mający niemały rze powiedzieć, że jeśli przeklikacie sobie lekką
nie z moimi przewidywaniami okazała się rze- kłopot z gangiem mutantów o pseudonimie The ręką komiks naprawdę sporo stracicie, dlacze-
telną, starannie wykonaną i naprawdę dopraco- Chemical Brothers. Zmutowani założyli kolo- go? Przede wszystkim dlatego, iż w dużej czę-
waną produkcją zapewniając mi sporą ilość do- nię w sektorze zleceniodawców robiąc przy tym ści buduje on klimat tej produkcji, co zawdzię-
brej zabawy. Co więc takiego sprawia, że Jet- szemrane interesy z groźnymi chemikaliami. Do- czamy zwłaszcza ciemnej tonacji obrazków oraz
s'n'Guns jest szczególnie godna uwagi i szcze- myślacie się pewnie, że to właśnie my zostajemy toczącym się tam dialogom w które nierozerwal-
rze mógłbym polecić ją każdemu graczowi nie poproszeni o wykurzenie kłopotliwych gości. Po nie wpleciona jest spora dawka charakterystycz-
stroniącemu od gier czysto zręcznościowych? uporaniu się z tym zadaniem będziemy potrzebni nego dla tego tytułu humoru. Muszę przyznać, że
Już wyjaśniam. do roztrzaskania w pył bazy przemytników oraz klimat potrafi się w tym konkretnym wypadku
Na początek kilka słów o samej grze. Stwo- eskorty konwoju grupy żeńskich naukowców do udzielić graczowi. Sam po pierwszym wieczorze
rzona przez czeski Rake in Grass do dziś jest jed- laboratorium. Po wykonaniu kilku takich zadań spędzonym z Jets'n'Guns widziałem łóżko jako
ną z ich najbardziej znanych gier, jest również od przypadkowych zleceniodawców niespodzie- bagażownię mojego samolotu, gdzie odzyskuję
sztandarowym tytułem dla wszystkich miłośni- wanie skontaktuje się z nami nasz dawny dowód- siły powierzywszy sterowanie autopilotowi. Sta-
ków tego typu zabawy. Wydana w 2004 roku ca – pułkownik Troubleman. Rzecz jasna perso- ry chłop, a zdaje mu się, że sypia w bagażowni;
szybko zyskała sobie szerokie grono wielbicieli. na takiej rangi jak Troubleman zleci nam już kon- cóż jeśli oddamy się zabawie w długi, spokojny
Trudno się temu dziwić bowiem gra wnosiła po- kretniejsze zadanie, w które zamieszany okaże wieczór takie mogą być jej rezultaty. Dokładnie
wiew świeżości do gatunku, który już wtedy la- się jeden z najnikczemniejszych galaktycznych czytając wszystkie komiksy można dowiedzieć
ta swojej świetności miał dawno za sobą. Praw- łotrów – dyktator Xoxx. Co planuje? Nic odkryw- się kilku ciekawych rzeczy. Przykładowo, od-
dopodobnie spory sukces sprawił, że po trzech czego, podobnie jak setki złoczyńców chce znisz- puszczając sobie lekturę nigdy nie dowiedzieli-
latach od premiery światło dzienne ujrzała wer- czyć wszechświat na co my oczywiście nie mo- byście się, że zdarzyło Wam się dokować przy
sja Gold, zdecydowanie bardziej rozbudowana żemy pozwolić. Aby zrealizować swój szatański pordzewiałym, dryfującym gdzieś w przestrzeni
od edycji podstawowej. Do zmian wprowadzo- plan Xoxx ma zamiar wykorzystać wielkich roz- wraku stacji kosmicznej Robinson 14 z nadzie-
nych w edycji rozszerzonej zaliczyć można po- miarów działo kwantowe w którego budowę za- ją na darmowe zaopatrzenie. Nie traficie tam bo-
dwojenie liczby poziomów (z 21 do 42), 70 no- angażowany jest profesor von Hamburger. Nie- wiem w żadnej misji, a wspomina o tym właśnie
wych przeciwników, 7 nowych samolotów oraz wiele myśląc łotrzyk porywa naukowca, a z na- jedna z przygotowanych grafik.
17 nieznanych wcześniej broni. Dodano rów- mi kontaktuje się córka uprowadzonego – nieja- Wypadałoby teraz przyjrzeć się samej roz-
nież masę ukrytych rzeczy obejmujących dodat- ka Erecta von Hamburger. Zanim odnajdziemy grywce. Zanim jednak rzucicie się w ogień wal-
kowe samoloty, poziomy oraz elementy uzbro- profesora i odkryjemy położenie maszyny znisz- ki będziecie musieli zapoznać się ze sklepem
jenia. Zwiększono także rozdzielczość w jakiej czenia, noszącej nazwę Lord Chaos Mk 1 cze- w którym dokonacie wszystkich istotnych mo-
pracuje program do 800x600 (wersja podstawo- ka nas sporo pomniejszych zadań, które pomogą dyfikacji; jeszcze wcześniej jednak trzeba wy-
wa działała w 640x480), wprowadzono system w doprowadzeniu gracza do celu. Do tych cie- brać jeden z trzech początkowych poziomów
odznaczeń, praktycznie od nowa przygotowano kawszych zaliczyć można wyprowadzenie sa- trudności: Too Fat To Die, Normal lub Hard
wątek fabularny. Teraz opowiadany jest z uży- molotu bojowego TMiG-226 z silnie strzeżone- (a nie są to wszystkie stopnie trudności dostępne
ciem wysokiej jakości grafika w komiksowym go kompleksu laboratoriów FeX czy też niespo- w grze). Decyzja ta ma wbrew pozorom ogrom-
stylu. Poszerzono również ścieżkę dźwiękową dziewany udział w masakrycznym show organi- ne znaczenie. Dlaczego? Już wyjaśniam. Nale-
o 6 nowych utworów. Sporo tego i jeśli trochę zowanym przez prywatną stację telewizyjną Car- ży w tym miejscu wziąć pod uwagę dwie rze-
gracie pewnie wiecie, że naprawdę rzadko moż- nage TV. Historia, jak wspomniałem w poprzed- czy, stan naszych finansów i wyzwanie jakie sta-
na spotkać się z sytuacją gdy edycja rozszerzona nim akapicie opowiadana jest na zasadzie komik- nowić będą kolejne poziomy. W Jets'n'Guns bo-
dodaje do gry niemalże drugie tyle; a tak właśnie su. Forma ta w praktyce sprawdza się po prostu wiem po zakończeniu gry na poziomie łatwym
było w przypadku opisywanego dziś tytułu. Jet- wyśmienicie, tym bardziej, że nie jest to w żad- rozpoczniecie zabawę od nowa na normalnym
s'n'Guns wydana najpierw tylko na systemy z ro- nym razie kilka pasków rysowanych na kolanie; i tak dalej. Osobiście, jeśli chcecie się przy tym
dziny Windows w 2006 roku ukazała się w wer- a ponad 50 porządnie wykonanych ekranów opa- tytule po prostu dobrze bawić radzę zacząć od

72 luty 2010
Recenzje
Jets'n'Guns Gold

poziomu najłatwiejszego. Sam męczyłem się ter, Time Compressor, Carnage TV Transmi- wiedzialnego za zapewnianie optymalnej tempe-
z demem gry na poziomie Hard, bo nie ucho- tion Set, Bount Hunter Licence, Atarix i Camo- ratury dział. Jeśli dojdzie do przegrzania będzie-
dzi przecież grać na najłatwiejszym. Raz, że nie uflage. Sporo tego i łatwo się pogubić. Spróbu- my musieli poczekać aż sprzęt trochę ostygnie,
uchodzi, a dwa, że może nas wiele rzeczy omi- ję więc po kolei nieco bardziej Wam je naświe- a co za tym idzie – nie będziemy mogli się bro-
nąć, kto gra ten wie jak to niekiedy bywa. Wie- tlić i pokrótce omówić każdy z nich. Pierwsza nić. Kolejny – Engine, odpowiada za prędkość
dząc natomiast po przygodzie z wersją demon- pozycja – Federal Hero License – wyświetli na- z jaką poruszamy się po ekranie. Powershield
stracyjną, że kolejne poziomy mnie nie ominą, szą legitymację kosmicznego bohatera oraz kilka tworzy ochronną otoczkę pochłaniającą część ob-
a rozpoczynał je będę z dużo bardziej podpako- podstawowych informacji w rodzaju ilości ukoń- rażeń. Nanomachines to zestaw narzędzi umożli-
wanym pojazdem lekką ręką wybrałem Too Fat czeń gry, uzyskanej liczby punktów czy odnale- wiający automatyczne naprawianie się maszyny
To Die. Wybór ten do dziś bardzo sobie chwa- zionych M.I.A. (Missing In Action, tutaj wystę- w momencie gdy system odprowadzania ciepła
lę – polatałem, postrzelałem, bez niepotrzeb- pujących pod postacią galaktycznych autostopo- jest całkowicie wychłodzony. Ofensywny Circu-
nych nerwów, a kolejne poziomy rozpoczyna- wiczów, brzmi znajomo?). Hull Integrity to na- lus wygeneruje kule orbitujące wokół nas, sku-
łem z kilkoma dodatkowymi milionami w port- tomiast nic innego jak poziom opancerzenia na- teczne przeciw słabszym przeciwnikom. Magne-
felu co zapewniło mi, jakże cenny, spokój du- szego pojazdu, zaś General Cooling System in- to Gravi-Pad z kolei osłoni pojazd przed obraże-
cha. Inna sprawa to PenguinPlay, swego rodzaju formuje o skuteczności układu chłodzenia odpo- niami związanymi z uderzeniem o podłoże i sta-
bonus dla linuksowych graczy, którego o ile mi
wiadomo nie uświadczymy w wersjach dla po-
zostałych systemów operacyjnych. Jest to wyna-
lazek Linux Game Publishing – wydawców gry,
polegający na dodawaniu do swoich produktów
różnych opcji sieciowych. Jako, że Jets'n'Guns
to nie żaden RPG, czy coś w tym rodzaju, Pen-
guinPlay umożliwia nam jedynie wysłanie uzy-
skanych wyników na serwer. Wygląda to może
niezbyt ciekawie, ale ja np. próbuję pobić aktu-
alny rekord, w czym bardzo pomaga mi posia-
danie bardziej podrasowanego sprzętu niż mógł-
bym mieć rozpoczynając grę na jednym z cięż-
szych poziomów. Wszystko zależy więc od tego
czy chcecie się sprawdzić, czy po prostu dobrze
bawić – ja wybrałem to drugie.
Gra właściwa obejmuje dwa wspomniane
już wcześniej etapy: podrasowywanie naszej ma-
szyny w warsztacie oraz samą rozgrywkę. Roz-
pocznijmy od tego pierwszego. Ekran sklepu czy
jeśli ktoś woli – warsztatu, składa się z modelu
naszego pojazdu, dolnego panelu (tam znajdu- Rysunek 1. Grooman G-3 Goblin – nasza pierwsza maszyna w akcji
ją się wszystkie posiadane przez nas przedmio-
ty, odznaczenia itd.), oraz panelu prawego za po-
mocą którego nabywać będziecie nowe zabaw-
ki i tym podobne. Sam model pełni dość istot-
ne funkcje. Po pierwsze pokazuje nam jak wy-
gląda nasz środek transportu, i po drugie – po-
siada sloty w które wkładamy nowe uzbrojenie
i akcesoria (np. dodatkowe chłodzenie), bądź
też ulepszamy te już posiadane. I chociaż mo-
del zajmuje znaczną część interfejsu sklepu nie
jest jedynym co się tam poza panelami znajdu-
je. Pod obrazkiem samolotu znajdziemy specjal-
ną grupę ikonek o nazwie Special Devices. Rów-
nież one odgrywają na tym ekranie ważną ro-
lę, a prawie każda z nich odpowiada za dodat-
kowe właściwości, systemy czy elementy opan-
cerzenia naszej maszyny do których należą: Fe-
deral Hero License, Hull Integrity, General Co-
oling System, Engine, Powershield, Nanoma-
chines, Circulus, Magneto Gravi-Pad, Jet-Pack
Rescue System, Weapon Sets Controller, Rota-
ry Cage, RemCon, Boss Detector, Mission Me- Rysunek 2. Oprawa graficzna wyraźnie skłania do ciągłego ulepszania posiadanego uzbrojenia

www.lpmagazine.org 73
Recenzje
Jets'n'Guns Gold

łe elementy otoczenia. Jet Pack Rescue System leniu. Jeden z ostatnich – Atarix – system łama- datna rzecz. Inną użyteczną pozycją jest ikoną
to bardziej ciekawostka niż faktycznie przydatne nia 4 cyfrowych haseł zabezpieczających zbiera- z pionową strzałką w dół zdejmująca narzędzia
akcesorium. Jeśli nasz wehikuł ulegnie zniszcze- ne po drodze ładunki, któremu jako narzędziu ze wszystkich slotów rozmieszczonych na mo-
niu będziemy mogli kontynuować grę siedząc bardziej zawiłemu w obsłudze należy się kilka delu i przenosząca je do ładowni, której funkcję
w fotelu pilota co prawdę mówiąc na niewiele się słów. Procedura odblokowywania zawartości pa- pełni jak pisałem dolny panel. Myślę, że same
zdaje gdy gramy na wyższych poziomach trud- kunków może odbywać się automatycznie (Au- panele nie wymagają szerszego omówienia. Do-
ności. Weapon Set Controller pozwala na posia- to crack) bądź ręcznie (Manual crack). Pierw- dam tylko, że za pomocą prawego oprócz zaku-
danie kilku zestawów uzbrojenia; w praktyce jest sza opcja nie jest niestety szczególnie skuteczna pu akcesoriów i broni dokonujemy również pod-
to średnio przydatne, gdyż aby zapełnić wszyst- jeśli wcześniej sami nie pobawimy się we wła- miany aktualnie posiadanej maszyny.
kie sloty dobrym sprzętem w chociaż jednym mywacza. Wynika to z faktu, że im więcej pa- W kwestii samej rozgrywki Jets'n'Guns
z układów trzeba dysponować naprawdę spo- czek rozpracujemy samodzielnie tym większe również ma się czym pochwalić. Chociaż zwy-
rą ilością gotówki. Rotaty Cage wykorzystu- będzie prawdopodobieństwo udanego złamania kle skupieni jesteśmy na roztrzaskiwaniu wszyst-
je funkcję obrotu niektórych broni umożliwia- hasła przez automat. Pamiętajcie, że jeśli zada- kiego w pył, aby uzbierać jak najwięcej środków
jąc nam ustawianie ich pod wybranym kątem nie to powierzymy maszynie, a ta zawiedzie – ła- na lepsze opancerzenie, tudzież uzbrojenie nie
co pozwala na atak w różnych kierunkach. Rem- dunek eksploduje. Zdecydowanie warto trochę sposób nie zauważyć nieustającej wrzawy do-
Con służy do łamania zabezpieczeń różnego ro- pobawić się ręcznie, tym bardziej, że nie jest to okoła. Ogólnie rzecz biorąc mamy tu do czynie-
dzaju urządzeń. Pozwala np. zmieniać nadawa- trudne, a daje sporo frajdy. Całość polega na po- nia z klasyką gatunku, nie obyło się natomiast
ne stacje radiowe jeśli skierujemy go na anteny daniu 4 cyfr po czym zostaną one określone jed- bez pewnych urozmaiceń. Klasycznie, zwykle
lub odpalić sporych rozmiarów wywrotkę, która nym z trzech kolorów: czerwonym, żółtym lub podążać będziemy za przesuwającym się w pra-
na krótkim odcinku pomoże uporać się z piecho- zielonym. Czerwony oznacza, że dana cyfra nie wą stronę obrazem. Nie zawsze natomiast wy-
tą – pomysłowe. Boss Detector wyświetli infor- występuje w kodzie, żółty – że znajduje się na in- starczy lecieć przed siebie i siać zniszczenie po-
macje o poziomie energii bossów lub poszcze- nej pozycji, natomiast zielony informuje nas, iż śród hord wrogów, gdyż niektóre plansze posia-
gólnych ich części, nie każda gruba ryba będzie wprowadzona liczba jest poprawna i znajduje się dają dodatkowe zadania bez których wykonania
się bowiem składać tylko z jednego elementu. na właściwej pozycji. Każde udane złamanie za- się nie obejdzie. Kilka przykładów podałem już
Mission Meter – prosty i przydatny, pokaże ile bezpieczeń zwiększa szansę powodzenia opera- wcześniej, abyście jednak nie myśleli, że tego ro-
procent planszy przelecieliśmy. Time Compres- cji przez Atarix o 5%. Pora na ostatnią pozycję dzaju misji jest niewiele przywołam dodatkowo
sor natomiast wzorem Bullet Time zwolni bieg z grupy Special Devices – Camouflage, umoż- poziom w którym bierzemy udział w specyficz-
wydarzeń dzięki czemu będziemy mieli większą liwiającą darmowe przemalowanie samolotu na nym wyścigu mającym po prawdzie ze swoją
kontrolę nad tym co dzieje się na ekranie. Carna- jeden z kilku dostępnych wariantów. Warto wie- nazwą niewiele wspólnego. Całość polegać bę-
ge TV Transmission Set to specjalne urządzenie dzieć, że tak ilość Special Devices jak i możliwo- dzie raczej na przelatywaniu przez bramki kon-
popularnej stacji telewizyjnej transmitujące na- ści ulepszania niektórych z nich zależą od indy- trolne przy czym, aby pomyślnie ukończyć za-
sze poczynania na antenę dzięki czemu będzie- widualnych cech każdej z maszyn. Powyżej wy- danie nie możemy opuścić żadnej z nich. Oprócz
my nagradzani za co większe sieczki z udziałem mieniłem tylko te występujące w większości po- tego wiele plansz zawiera pomniejsze cele, po-
żywych przeciwników. Bounty Hunter License jazdów. Radzę też zwrócić uwagę na umieszczo- legające np. na konieczności zniszczenia obiek-
podświetli nieprzyjaciół poszukiwanych przez ny pod ikonami przycisk z literą T, pozwalający tów określonego typu, zbieraniu fragmentów ko-
wymiar sprawiedliwości, co z kolei przyniesie przetestować aktualne wyposażenie przed rozpo- du DNA nieznanych organizmów czy wymogu
dodatkowe korzyści po ich szczęśliwym ustrze- częciem poziomu – niezwykle wygodna i przy- zrównania z ziemią konkretnego obiektu znajdu-
jącego się w wykopanym pionowo w ziemi tune-
lu. Ogólne wrażenie z zabawy jest bardzo pozy-
tywne. Dodatkowo, w grze pomagają podpowie-
dzi umieszczone na niektórych obrazkach. Infor-
mują nas one np. jak używać określonego narzę-
dzia (Atarix), czy zwiększyć poziom posiadane-
go uzbrojenia. Często też zawierają przydatne in-
formacje o zbliżającym się etapie sugerując np.
wyposażenie samolotu w bomby z racji tego, że
spotkamy w nim sporo piechoty i dział naziem-
nych. Również tereny, które zwiedzimy podczas
gry są dość urozmaicone i ciężko narzekać tu na
monotonię. Oprócz przestrzeni kosmicznej trafi-
cie do nowoczesnej metropolii, na powierzchnię
płynącej lawą planety, w środek ociekającej wil-
gocią dżungli, grupy asteroidów na których za-
lęgły się koszmarne stwory, a nawet pod wodę.
Warto wiedzieć, że w niektórych poziomach au-
torzy postanowili pozbawić nas własnego we-
hikułu. I tak wydobywając wspomniany wcze-
śniej samolot bojowy TMiG-226 będziemy
Rysunek 3. Elegancki Crocker Cr-2 w warsztacie mieli do dyspozycji tylko skafander kosmiczny

74 luty 2010
Recenzje
Jets'n'Guns Gold

i Jet-Pack, natomiast uczestnicząc w wyścigu po- poszukiwaczy. TMiG-310 Atomic Emu to jak ła- Grupę tą rozpoczyna WanderWurst W-1 – po-
sadzeni zostaniemy za sterami rozpadającego się two się domyśleć następca TMiG-226. Z różnic jazd firmy fast-foodowej WanderWurst ze spo-
wraku. Podczas zabawy niejednokrotnie natrafi- wizualnych można zauważyć sporych rozmia- rej wielkości parówką zamocowaną na dachu.
my na różnego rodzaju przedmioty. Jedne popra- rów dziób świadczący o większej wydajności Z racji tragicznej sterowności kiepski z niego po-
wią stan naszego zdrowia, inne sprawią, że na montowanego właśnie tam systemu odprowa- jazd dla kosmicznego najemnika, natomiast pod
krótką chwilę działka przestaną się grzać czy też dzania ciepła. Nieco mniej Special Devices wca- względem parametrów jest to bliski kuzyn Go-
zwielokrotniona zostanie nasza siła ataku. Naj- le mu nie umniejsza, gdyż zniknęły z tej grupy blina wyposażony dodatkowo w slot na ogonie
częściej jednak spotykać będziecie sztabki zło- np. modyfikacje dotyczące np. wydajności ukła- i miejsce dla rakiet; w zamian za co pozbawio-
ta przekładające się na dodatkowe finanse. Tu dów chłodzenia zupełnie niepotrzebne jako, że no go slotu dla bomb. Następnie mamy ZZ Rolls
i ówdzie natrafimy też na tzw. sekrety występu- Atomic Emu pod tym względem jest ponad dwu- Super Deluxe – maszynę niejakiego Mr. Perfec-
jące pod postacią kaczek bądź ryb. Rozumiem, krotnie lepszy od starszego brata. Jedynym co ta z którym zmierzymy się podczas gry. Coś po-
że gumowa kaczka może być śmieszna, ale ry- można mu zarzucić to mniejsza zwrotność niż ta między Crockerem a Koala Killer. Moim zda-
ba? Jak dla mnie to po prostu jeden z dziwnych którą prezentował TMiG-226. Poza pojazdami niem niezbyt ciekawy pojazd, wyróżniający się
pomysłów twórców. I chociaż całość nie wpro- standardowymi w grze występuje również sze- tylko tym, że jest to jedna z pierwszych maszyn
wadza nie wiadomo jakich rewolucji do gatun- reg maszyn specjalnych, przeważnie ukrytych. posiadająca dwa sloty na ogonie czym z pojaz-
ku kosmicznych strzelanek to trudno się tutaj do
czegoś pod względem przebiegu zabawy przy-
czepić. Element zręcznościowy wykonany został
naprawdę przyzwoicie, a dodatkowe urozmaice-
nia zauważalnie uatrakcyjniają zabawę i myślę,
że właśnie taki efekt chcieli osiągnąć panowie
z Rake in Grass.
Przyjrzyjmy się teraz maszynom, które
przyjdzie nam prowadzić. Rozpoczynając za-
bawę z Jets'n'Guns do naszej dyspozycji odda-
ny zostanie Grooman G-3 Goblin – pierwszy sa-
molot większości kosmicznych łowców nagród
i drobnych łotrów. Jak głosi hasło reklamowe te-
go modelu – Znajdź tańszy a damy ci go za dar-
mo. Oczywistym jest więc, że najlepsze co mo-
żemy z nim zrobić to jak najszybciej zmienić na
lepszy. Prawdę mówiąc szkoda, bo jest to też je-
den z przyjemniej wyglądających na moje oko
pojazdów dostępnych w grze. Następny – Croc-
ker Cr-2, zdecydowanie różni się od poprzedni-
ka przede wszystkim wizualnie przypominając
samoloty z niedawnych wojen. Pod względem Rysunek 4. Jeden z komiksowych ekranów opowiadających fabułę gry
użyteczności nieco bardziej funkcjonalny od
Goblina dzięki dodatkowemu slotowi na dzio-
bie, możliwości wyposażenia samolotu w rakie-
ty oraz znacznie większej liczbie narzędzi z gru-
py Special Devices. Kolejny z modeli standar-
dowych to przywoływany wcześniej TMiG-226
Koala Killer. Nieco wytrzymalszy od Crockera
i zauważalnie mniej podatny na przegrzanie sys-
temu chłodzenia; oraz jako pierwszy z tych po-
wszechnie dostępnych – wyposażony w slot na
ogonie. Airworm Hypercopter – chyba jedyny
w grze helikopter, ukryty wewnątrz posągu na
jednej z plansz. I prawdę mówiąc tylko moc sil-
nika jest podobna do tej z którą mieliśmy do
czynienia w przypadku Koala Killer. Wszystko
pozostałe diametralnie się różni, oczywiście na
korzyść Airworma. Niesamowicie zwrotny, za-
opatrzony w system chłodzenia sporej mocy po-
siada przy tym dwa razy więcej miejsc na rakie-
ty niż TMiG-226 oraz jeden dodatkowy slot na
dziobie (co łącznie daje nam możliwość zamon-
towania tam aż 4 dział) – prawdziwa gratka dla Rysunek 5. TMiG-226 Koala Killer – jeden z najlepszych samolotów jakie przyjdzie Wam prowadzić

www.lpmagazine.org 75
Recenzje
Jets'n'Guns Gold

dów standardowych pochwalić może się dopie- model. Przyznam, że sam jestem ciekaw co bę- bitmapa, która w efekcie końcowym pozostawia
ro TMiG-310. Enchanced Jet-Pack to coś po- dzie nagrodą po jego ukończeniu cicho licząc na pewien niesmak. Szkoda, że nikt nie pokusił się
dobnego do ratunkowego fotela na którym mo- równie zwrotnego jak starszy brat następcę Ato- rysowanie tego rodzaju efektów programowo
żemy uciec ze zniszczonego pojazdu jeśli jest on mic Emu. – mogłoby to dać zauważalnie lepsze rezultaty.
wyposażony w Jet Pack Rescue System. Niezbyt Teraz pora na kilka słów odnośnie opra- Druga kwestia to wyraźnie pikselowaty wygląd
użyteczny, posiadający niewiele Special Devies wy audio-wizualnej gry. Pod względem grafi- niektórych, nazbyt powiększonych przeciwni-
i jedynie dwa przednie sloty. Następny to mój ki jest bardzo dobrze. I nie mówię tutaj tylko ków. Obie te rzeczy nie umniejszają jednak ca-
zdecydowany faworyt wśród mniej poważnych o wyglądzie gry właściwej – na pochwałę zasłu- łości. W końcu to tylko jeden efekt i dosłownie
maszyn – Transporter. Jest to statek towarowy guje również staranne i czytelne wykonanie in- kilku z dziesiątków dostępnych wrogów.
którym uciekamy z grupy asteroidów w jednej terfejsu. Poruszając się po ekranie warsztatu nie W kwestii oprawy muzyczno-dźwiękowej
z ostatnich misji. Uwagę w jego wypadku zwra- będziecie mieli problemów z dokonywaniem jest nawet lepiej niż w przypadku grafiki, co
ca obiecujące hasło reklamowe – Fighter of the usprawnień czy zakupem nowego towaru, a je- samo w sobie jest już sporą pochwałą. Za mu-
year! Fast & Reliable, mające oczywiście nie- go wygląd dobrze dopasuje się do klimatu ca- zyczną otoczkę gry odpowiedzialna jest przede
wiele wspólnego z rzeczywistością. W prakty- łości pozostając przy tym przyjemnym dla oka. wszystkim szwedzka grupa Machinae Suprema-
ce średnio użyteczny. Na koniec jeszcze kilka Dodatkowo, cieszą drobiazgi w stylu zmienia- cy grająca alternatywny rock i metal ze wstaw-
słów o pojazdach, które otrzymujemy po zakoń- jących się obrazków modeli gdy np. usprawni- kami w klimatach komputerów z dawnych lat.
czeniu gry na niektórych poziomach trudności. my system chłodzenia (dziób wyraźnie urośnie Jeśli zaś mówimy o grze w wersji Gold, to no-
Pierwszy - Coffinator 500B – maszyna jednego w przypadku niektórych pojazdów) czy zmie- we utwory są autorstwa Hubnester Industries;
z bossów. Brzydki i niezbyt poręczny, wyposa- nimy ułożenie skrzydeł naszego TMiG-226. mającego swoją drogą bardzo wiele wspólnego
żony natomiast w sporą ilość miejsc na uzbro- Oczywiście zmiany te zaobserwujemy również z grupą ze Szwecji. A jak to wypada w grze?
jenie i akcesoria. Drugi z tej grupy – SpaceHog podczas gry na poszczególnych poziomach. Je- Dość dobrze, chociaż prawdę mówiąc wiele za-
– pierwszy pojazd bonusowy na który pomyśla- śli zaś chodzi o samą grę jest równie dobrze, je- leży od gustu. Pomimo faktu, że gatunki pod
łem aby się przesiąść z Atomic Emu. Niestety, śli nie lepiej. Świetne wykonanie wybuchów, które podchodzi muzyka panów z Machinae Su-
z braku istotnych Special Devices niezbyt wy- podobnie jak i ataku niektórymi broniami za- premacy nie są mi obce tak naprawdę tylko kil-
trzymały, a co za tym idzie – nieprzydatny w obserwować możecie na dołączonych do re- ka kawałków jakoś szczególnie wpadło mi w
grze na serio. Do tej pory wymieniłem jak być cenzji obrazkach. Oba wyglądają naprawdę do- ucho. Nie sposób jednak przyczepić się do jako-
może zauważyliście 11 maszyn przy czym au- brze i cieszą oko za każdym razem, gdy kolej- ści nagrań, ta stoi na bardzo wysokim poziomie.
torzy na stronie domowej gry mówią o 12 róż- nego przeciwnika zmienimy w dopalające się Podobnie ma się sprawa z otoczką dźwiękową
nych pojazdach, które możemy prowadzić. Jest zgliszcza. Niestety, nawet Jets'n'Guns nie jest gry. Jeśli ktoś jest ciekawy co słyszymy latając
to zastanawiające, ponieważ jeśli po uruchomie- całkiem wolna od rzeczy rażących oko. Pierw- w Jets'n'Guns zapraszam na oficjalną stronę gru-
niu gry wciśniecie ~ otwierającą konsolę zauwa- sza sprawa to chwalone chwilę temu wybuchy. py, a konkretniej pod adres http://www.machin
życie linijkę o treści Loaded 17 hero ship mo- Chociaż sprawiają ogólnie dobre wrażenie to je- aesupremacy.com/jetsnguns.php gdzie możecie
dels. Tym samym ciężko mi powiedzieć ile tak śli trafi wam się eksplozja z obrazowaną białym legalnie pobrać pełną ścieżkę dźwiękową z gry
naprawdę modeli możemy prowadzić. Osobi- kołem falą uderzeniową zauważycie, że w miarę na którą składa się 29 utworów. Jeśli adres może
ście jestem w połowie gry na poziomie Extre- jak będzie rosła obręb okręgu odsłaniać zacznie ulegnie zmianie radzę szukać na stronie głów-
me, na który dostajemy się po przejściu cało- coraz to większe piksele. Dzieje się tak dlatego, nej, w dziale Downloads. Mnie osobiście moż-
ści na Hard i z niecierpliwością czekam na 12 że jest to prawdopodobnie stale powiększana liwość pobrania za darmo ścieżki dźwiękowej
bardzo przypadła do gustu, jest to z całą pewno-
ścią krok w dobrą stronę.
Na koniec pokrótce przyjrzymy się wadom
i zaletom Jets'n'Guns. Jako, że większość z nich
omówiłem już wcześniej, a recenzja z racji ogra-
niczonej liczby znaków zbliża się nieuchronnie
ku końcowi wymienię tylko parę o których jesz-
cze nie wspomniałem. Jeśli idzie o plusy należy
z całą pewnością powiedzieć o stałych cenach
skupu i odsprzedaży. Jest naprawdę komforto-
wą sytuacją, gdy nie musimy obawiać się, że je-
śli kupimy broń która nam się nie spodoba sprze-
damy ją za powiedzmy 20% ceny. Nic z tych rze-
czy, tutaj zawsze zwracając zakupione wcześnie
towary otrzymacie pełen zwrot kosztów. Mało
realne? Być może, za to zdecydowanie przyczy-
nia się to do spokojnej atmosfery zakupów. Na
pochwałę zasługują też podpowiedzi dla gracza
zamknięte w niektórych ładunkach, informujące
nas gdzie konkretnie szukać ukrytych broni i tym
podobnych. Cieszy też możliwość grania za po-
Rysunek 6. Kolorowo i z klasą, a do tego masa dobrej zabawy mocą klawiatury, myszki bądź gamepada. Rów-

76 luty 2010
Recenzje
Jets'n'Guns Gold

nież nastawienie ekipy Rake In Grass do otwar- dów. Po pierwsze, jesteśmy wtedy już tak wy- niżej 10 roku życia powinni raczej trochę pocze-
tości kodu jest warte uwagi. I chociaż nie doty- posażeni, że absolutnie żaden przeciwnik nie sta- kać, zwłaszcza jeśli znają angielski. Jeśli ktoś
czy ono samej gry, może mieć niebagatelne zna- nowi dla nas wyzwania. A po drugie, przyczy- chciałby wyłączyć obecną w całkiem sporych
czenie dla osób, które na grę spojrzały krzywym nia się do tego niemalże identyczny przebieg za- ilościach krew wystarczy, że w pliku game.cfg
okiem tylko z racji tego, że nie jest darmowa bawy. Wrogowie na cięższych poziomach są co położonym w katalogu ~/.lgp/jets pozycji blo-
i posiada zamknięte źródła. Radzę zajrzeć na prawda wytrzymalsi, ale nie zauważyłem żeby od_disabled przypisze wartość 1.
stronę domową firmy, a jeśli dobrze poszukacie było ich jakoś zauważalnie więcej . Warto wie- A skoro już mowa o obecnym w grze hu-
zobaczycie, że autorzy udostępniają kody źró- dzieć, że podstawowa wersja gry spotkała się morze, z całą pewnością zaliczającym się do
dłowe niektórych swych dzieł. Żyć z czegoś mu- z pewną krytyką wynikającą z małej ilości pozio- atutów tego tytułu warto dodać, iż nie tylko pod-
szą, ale jak widać nie odwracają się całkowicie mów oraz drobnych błędów językowych w an- teksty seksualne zostały tutaj ubrane w żarto-
od społeczności. Pewnego rodzaju plusem gry są gielskiej wersji programu. Długość gry powięk- bliwą otoczkę. W grze spotkamy odniesienia
zastosowane w niej zabezpieczenia autorstwa Li- szona została w opisywanej dziś wersji Gold tak do całej masy elementów popkultury. Począw-
nux Game Publishing. Konkretnie, podobają mi więc zarzut ten na chwilę obecną jest bez pokry- szy od gier komputerowych, przez znanych ar-
się tutaj dwie rzeczy. Pierwsza to możliwość po- cia, zwłaszcza jeśli do podwojonej ilości pozio- tystów, na muzyce kończąc. Szczerze mówiąc
brania obrazu gry ze strony LGP jeśli zniszczy mów dodamy wszystkie inne nowości wprowa- grając w opisywany tytuł nieraz na myśl przy-
nam się zakupiona płyta; druga natomiast to ko- dzone w edycji rozszerzonej. Co zaś tyczy się chodził mi legendarny Fallout ze swoim baga-
nieczność ustanowienia dla gry hasła, wymaga- błędów w angielskiej wersji językowej. Mnie żem całkiem niezłych Easter Eggów.
nego do jej uruchomienia. I chociaż przy Jet- się żadne szczególnie rażące w oczy nie rzuci- I jeszcze mała ciekawostka. Pamiętacie jak
s'n'Guns nie ma to wielkiego znaczenia to pomy- ły, a nawet jeśli były jakieś drobne nie zwróci- wspominałem o obecnej w grze konsoli przy
ślcie jakie byłoby to przydatne gdybyśmy straci- łem na nie uwagi. Uważam, że nawet jeśli wy- okazji omawiania dostępnych w modeli samo-
li kopię dajmy na to niezłego sieciowego RPGa stępują nie są na tyle problematyczne, aby utrud- lotów? Z tego co zauważyłem mowa tam rów-
czy też sieciowej gry FPP. Nikt nie mógłby grać nić zrozumienie głównego wątku. Swoją drogą nież o aktywnym edytorze poziomów. Nieste-
na naszym koncie, ponieważ nie posiadałby wy- fakt tych domniemanych byków językowych ty, z racji braku listy komend oraz informacji na
myślonego przez nas hasła; oczywiście warun- mnie osobiście nawet cieszy. Niemalże każdy ten temat w Internecie nie jestem w stanie po-
kiem jest tutaj zachowanie przy sobie pudełka dzisiejszy program ma angielską wersję doszli- wiedzieć czy tego rodzaju narzędzie rzeczywi-
z kluczem do gry, ale to inna sprawa. Jest to na- fowaną w najdrobniejszych szczegółach; miło ście zostało dołączone, a tym bardziej czy jest
tomiast plus tylko częściowy bowiem mechani- więc czasem zobaczyć takich właśnie Szwedów ono praktycznie użyteczne. Nie udało mi się bo-
zmy zastosowane przez Linux Game Publishing robiących tłumaczenie po swojemu bez pomocy wiem znaleźć polecenia odpowiadającego za je-
są dość toporne i często robią problemy. Ja np. jak sądzę zawodowych i drogich tłumaczy. Swe- go uruchomienie.
po awarii dysku twardego i utracie części danych go rodzaju minusem, chociaż nie dotyczącym ja- Na zakończenie chciałbym ogromnie po-
nadal nie mogę uruchomić gry pomimo posiada- kości wykonania programu jest granica wieko- dziękować Panu Leszkowi Stańczykowi z fir-
nia hasła i klucza. Aktualnie czekam na odpo- wa docelowego odbiorcy. Niemiecki USK ozna- my Wupra za udostępnienie gry do recenzji.
wiedź ze strony pomocy technicznej LGP. I cho- czył grę jako odpowiednią dla graczy od 12 ro- Dla osób, którym nazwa Wupra jest zupełnie
ciaż sądzę, że sprawa się wyjaśni to myślę, że je- ku życia, co jest chyba całkiem trafionym pro- obca krótkie wyjaśnienie. Założona przez Pa-
śli strona generuje dla mnie klucz to nie powinien giem wiekowym, bo tak naprawdę nie ma tutaj na Leszka jest pierwszą firmą zajmującą się
on być odrzucany przez program weryfikujący, niczego szczególnie szokującego. Krew jest baj- sprzedażą komercyjnych tytułów na systemy
który sam mnie na tą stronę skierował. kowa, przekleństwa stosunkowo lekkie, a obec- linuksowe w naszym kraju. Tam też możecie
Jeśli zaś idzie o minusy wymienić moż- ny w grze swego rodzaju humor o podtekstach zakupić Jets'n'Guns Gold w cenie 70zł do cze-
na tutaj np. fakt, że po kilkakrotnym ukończe- seksualnych – stonowany, nagość w grze nie wy- go szczerze zachęcam. Adres sklepu to http:
niu gra zaczyna się nudzić. W prawdzie nic stępuje toteż osobiście uważam, że USK dobrze //www.wupra.com. Na stronie gry w sklepie
w tym dziwnego co najmniej z dwóch powo- oceniło Jets'n'Guns. Tak czy inaczej, gracze po- znajdziecie również link do dema opisywane-
go dziś tytułu tak więc istnieje możliwość prze-
testowania gry przed zakupem. Z mojej strony
Za i przeciw chciałbym dodatkowo pogratulować Panu Lesz-
Za: kowi odwagi niezbędnej, aby wejść na dopiero
raczkujący rynek oraz życzyć wielu sukcesów
• porządnie wykonana oprawa audiowizualna w prowadzeniu firmy i jeszcze więcej zadowo-
• sporo samolotów, broni, przedmiotów i bonusów lonych klientów.
• 41 poziomów zapewniających sporo dobrej zabawy Ocena gry: 8/10
• swoisty humor i masa odniesień do popkultury
• szerokie możliwości konfiguracji sterowania
• niska cena
• integracja wersji linuksowej z PenguinPlay
O autorze
Od kilku lat, codzienny, domowy użyt-
Przeciw: kownik GNU/Linuksa. Entuzjasta rozwią-
zań alternatywnych i wolnego oprogra-
• toporność narzędzi zabezpieczających grę
mowania.
• śladowe niedoróbki w oprawie graficznej
Kontakt z autorem: maciej_mrozinski@o2.pl
• zaczyna się nudzić po kilkukrotnym ukończeniu

www.lpmagazine.org 77
Klub PRO

BetaSoft Sp. z o.o. CPU-Service A. i Z.


Jednym z naszych autorskich rozwiązań jest Maryniak spółka jawna
system eDokumenty realizujący wymaga- Warszawska spółka, posiadająca również od-
nia DMS i CRM. Pracuje on na platformach działy w Berlinie i Lwowie dostarcza korpora-
Linux oraz Windows i należy do najnowocze- cyjny sprzęt komputerowy firm: IBM, EMC, Hi-
śniejszych aplikacji webowych działających tachi do profesjonalnego zastosowania tj. ser-
w technologii AJAX. System jest zintegrowany wery klasy „mainframe”, pamięci masowe typu
z OpenOffice, MS Office i programami ERP. „Enterprise”, wysokonakładowe systemy dru-
kujące, terminale i urządzenia sieciowe.
www.betasoft.pl, www.edokumenty.eu http://www.cpuservice.pl

OMEGA SOFT Sp. z o.o.


Oprogramowanie: Zintegrowany System Wspo-
magania Zarządzania „Omega”. Platforma: Li-
nux, Windows. Baza danych: PostgreSQL.
Usługi: Outsourcing sprzętu i oprogramowa-
nia. Sieci: Projektowanie i instalacja sieci kom-
puterowych, systemów CCTV, DVR, RCP, KD
i centrali telefonicznych.
http://www.omega-soft.pl
Systemy bankowe, ISOF TTS Company Sp. z o.o.
HEUTHES istnieje na rynku od 1989 r. Obok Sprzedaż i dystrybucja oprogramowania kom-
systemów informatycznych dla banków, ofe- puterowego. Import programów na zamówie-
ruje nowoczesne oprogramowanie do obsługi nie. Ponad 200 producentów w standardowej
firm. System ISOF jest udostępniany klientom ofercie. Chcesz kupić oprogramowanie i nie
w trybie SaaS lub licencji. Pracuje na platfor- możesz znaleźć polskiego dostawcy? Skon-
mie Linux i zawiera m.in. takie moduły jak taktuj się z nami – sprowadzimy nawet pojedyn-
CRM, DMS, Magazyn, Sprzedaż, Logistyka cze licencje.
oraz Rachunkowość. www.OprogramowanieKomputerowe.pl
http://www.isof.pl

WSISiZ w Warszawie Wyższa Szkoła Informatyki


INFORMATYKA ZARZĄDZANIE Informatyka, Ekonomia, Fizjoterapia (NO-
studia stopnia I i II (stacjonarne i niestacjonar- WOŚĆ, Pedagogika, Wychowanie Fizyczne,
ne) specjalności: inżynierskie, magisterskie Artystyczna Grafika Komputerowa, Architek-
i licencjackie. Szczegółowe plany studiów, tura Wnętrz (NOWOŚĆ) Studia na odległość
opisy poszczególnych specjalności – zapra- e-learning (Informatyka II stopnia) Kompleks
szamy na stronę uczelni. sportowy w Łodzi (hala, basen, siłownia, sau-
http://www.wit.edu.pl na). Wydziały zamiejscowe: Włocawek, Byd-
goszcz, Opatówek.
http://www.wsinf.edu.pl

OFERTA SKIEROWANA DO FIRM


Jeżeli Twoja firma jest prenumeratorem Linux+ DVD,
za comiesięczną dopłatą 50 PLN + VAT możesz dodatkowo otrzymać reklamę.
Wyślij do nas: logo firmy, dane kontaktowe i informacje o firmie.
Reklama przez 11 kolejnych numerów tylko za 550 PLN + VAT.
Jeżeli nie posiadasz prenumeraty, możesz ją zamówić w atrakcyjnej cenie.

Skontaktuj się z nami:


linux@software.com.pl tel. 22 427 36 52
Roczna prenumerata

tylko
219,-
Linux+DVD jest przeznaczony dla początkujących
i zaawansowanych użytkowników Linuksa. Nasi
czytelnicy to w większości użytkownicy Linuksa, jak
również specjaliści IT, technicy, a także ci, którzy szukaj
alternatywy dla MS Windows. Są oni zainteresowani
bieżącymi nowościami ze świata Linuksa, m.in. jądrem
Linuksa, Debianem i Mandrakelinuksem. Dużym
zainteresowaniem wśród czytelników cieszą się stale działy
pisma: Dla Początkujących, Dla Programistów i Sprzęt.

UWAGA!
Oprócz nich, w każdym wydaniu znajdują się informacje
dotyczące typowego użycia Linuksa: bezpieczeństwa,
multimediów, narzędzi naukowych, programowania czy
poczty elektronicznej.
Zmiana danych
kontaktowych
Kontakt
Software Press Sp. z o.o. Spółka Komandytowa
1. Telefon
(022) 427 37 59
2. Fax
(022) 244 24 59
3. Online
pren@software.com.pl
4. Adres
Software Press Sp. z o.o. Spółka Komandytowa
ul. Bokserska 1
02-682 Warszawa
Prenumerujesz
– zyskujesz
l oszczędność
pieniędzy
l szybka dostawa
l prezenty
l bezpieczna płatność
on–line

Zadzwoń
9
+48 22 427 37 5
lub
zamów
mailowo!

Ilość Od
Ilość zama- numeru
Tytuł nume- wianych
rów
pisma
prenume- lub mie-
Cena

rat siąca
Linux+DVD (płyta
DVD) 219
12
Miesięcznik o sys- PLN
temie Linux
W marcu tematem przewodnim magazynu Linux + DVD będzie:

Sprzęt
pod Linuxem

W numerze tym planujemy zamieścić między innymi takie artykuły jak:

• Linux Kernel : Podróż do wnętrza systemu cz. 3

• Sterowanie liniami GPIO procesora spod systemu Linux

• Pingwin w jabłku

• Zostań administratorem sieci komputerowej cz.5

• Kamera internetowa w praktyce

Numer w sprzedaży od 20 lutego

Redakcja zastrzega sobie możliwość zmiany zawartości pisma.

You might also like