50
Numer 18 – 2008 Przepis na system Jak i po co zbudować swój system, skąd czerpać wiedzę na ten temat. Calość na stronie 5 Licencje wolnego świata O licencjach, różnicach pomiędzy ni- mi, ograniczeniach i pozwoleniach. Calość na stronie 9 Z dzienniczka administra- tora Zapiski administratora na pudelku od pendrive. Calość na stronie 32 Dlaczego nie lubię Linuksa Większość osób ze środowiska linuk- sowego rozglasza wszem i wobec, ja- ki to Linux jest fajny, super i w ogóle lepszy od innych OS. Jednakże, system ten także ma wady i to czasami dość poważne (a raczej dość poważnie iry- tujące), które należaloby przedstawić i pokazać w świetle dziennym Calość na stronie 47

Licencjewolnegoświatadraco.org.pl/wp-content/uploads/Dragonia/dragonia_nr18.pdf · 2017. 9. 3. · Wstępniak DrodzyCzytelnicy Z nowym rokiem nowym krokiem! Nowo-roczna zmiana w

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Licencjewolnegoświatadraco.org.pl/wp-content/uploads/Dragonia/dragonia_nr18.pdf · 2017. 9. 3. · Wstępniak DrodzyCzytelnicy Z nowym rokiem nowym krokiem! Nowo-roczna zmiana w

Numer 18 – 2008

Przepis na systemJak i po co zbudować swój system,skąd czerpać wiedzę na ten temat.

Całość na stronie 5

Licencje wolnego świataO licencjach, różnicach pomiędzy ni-mi, ograniczeniach i pozwoleniach.

Całość na stronie 9

Z dzienniczka administra-toraZapiski administratora na pudełku odpendrive.

Całość na stronie 32

Dlaczego nie lubię LinuksaWiększość osób ze środowiska linuk-sowego rozgłasza wszem i wobec, ja-ki to Linux jest fajny, super i w ogólelepszy od innych OS. Jednakże, systemten także ma wady i to czasami dośćpoważne (a raczej dość poważnie iry-tujące), które należałoby przedstawići pokazać w świetle dziennym

Całość na stronie 47

Page 2: Licencjewolnegoświatadraco.org.pl/wp-content/uploads/Dragonia/dragonia_nr18.pdf · 2017. 9. 3. · Wstępniak DrodzyCzytelnicy Z nowym rokiem nowym krokiem! Nowo-roczna zmiana w

WstępniakDrodzy Czytelnicy

Z nowym rokiem nowym krokiem! Nowo-roczna zmiana w Dragonii, to skład pismaza pomocą systemu LATEX. Zmiana miała nacelu nie tylko uproszczenie procesu składu,ale również podniesienie jego jakości i uła-twienie Wam przeglądania Dragonii.Staramy się pisać artykuły dla Was ciekawei interesujące, dlatego z przyjemnością za-chęcam Was do przeczytania artykułu JanaKoprowskiego pt. Z dzienniczka administrato-ra. Jest to garść prostych, a przy tym przy-datnych pomysłów, jak wykorzystać dostęp-ne w zasięgu ręki narzędzia, by uprościć so-bie pracę.Udaną próbą przystępnego opisu zasadi ograniczeń licencji jest artykuł Karola Ko-zioła p.t. Licencje Wolnego Świata.ZachęcamWas do lektury całego numeru, bojest o czym czytać, a wymienione powyżejartykuły to tylko szczypta tego, co możeciew Dragonii przeczytać.

Tomasz Łuczak – p. o. redaktora naczelnego

Wszystkie publikowane materiały są objęte pra-wem autorskim na zasadach licencji CreativeCommons CC-BY. Nie ponosimy odpowiedzial-ności za treść ogłoszeń. Nazwy firm, nazwy han-dlowe i znaki towarowe, użyto w publikacji jedy-nie w celach informacyjnych i są własnością po-szczególnych podmiotów.

Spis treściSystemDebian krok po kroku . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3Przepis na system . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

SoftwareLicencje Wolnego Świata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9O różnych ustawieniach przy kompilacji kernela . . . . . . . . . . . . . . . . . . . . . . . 13Xfce 4.4.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17Baza pod kontrola konsoli część V . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18Zaawansowana konfiguracja serwera WWW, część IV . . . . . . . . . . . . . . . . . . . . . 22LATEX – kilka słów o tekście . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

HardwareMacBook Pro i Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

ProgramowanieZ dzienniczka administratora – część pierwsza. . . . . . . . . . . . . . . . . . . . . . . . 32Bash, część 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36Łączymy Qt z MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

WywiadRozmowa z Marcinem Zalickim Country Manager firmy Amazis.net sp. z o.o. . . . . . . . . . . . . . 44

FelietonDlaczego nie lubię Linuksa? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

LiteraturaKsiążki wydawnictwa Helion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49Książki wydawnictwa PWN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

Piotr Krakowiak – redaktor naczelny, założyciel, koordynacja, skład,Tomasz Łuczak – p.o. redaktora naczelnego, skład,Rafał Domeracki – sekretarz redakcji, opieka nad hostingiem,Paulina Budzoń – korekta, skład,Michał Rzepka – korekta,Karol Kozioł – organizacja konkursów, opieka nad forum,Katarzyna Myrek – opieka nad serwisem www,Piotr Szewczuk – opieka nad hostingiem,Krzysztof Biskup, Łukasz Ciesielski, Tomasz Czunko, Rafał Topolnicki.Współpracujący: Szymon Godlewski, Gabriela Grusza,Jan Koprowski, Keyto, Krzysztof Ołowski, Bartosz Pyrek.

www: http://www.dragonia.plforum: http://forum.dragonia.ple-mail: [email protected]

Skład za pomocą systemu LATEX fontami LatinModern i TeXGyrePierwowzór layoutu Dragonia Magazine przygotował m4c

numer 18 – 2008 2

Page 3: Licencjewolnegoświatadraco.org.pl/wp-content/uploads/Dragonia/dragonia_nr18.pdf · 2017. 9. 3. · Wstępniak DrodzyCzytelnicy Z nowym rokiem nowym krokiem! Nowo-roczna zmiana w

System

Debian krok po krokuŁukasz Ciesielski

Debian stanowi kwintesencję tego, co najlepsze w systemachtypu Linux: stabilność, solidność i funkcjonalność. Przeglądającfora internetowe związane z Debianem, natknąłem się na całemnóstwo wypowiedzi, z których wynikał następujący wniosek –Debian nie jest dla początkujących, jest zbyt trudny. Nic bardziejbłędnego. Rzeczywiście, nie jest tak uproszczony, jak np. Ubuntu,jednak poniższym artykułem udowodnię, że przy odrobinie chęcikażdy może przygotować Debiana dla własnych potrzeb. Dobrzeskonfigurowany system może posłużyć nam przez kilka lat. Od-powiedź na pytanie, czy warto, jest oczywista.

Debian ma za sobą długą historię. System powstał 16 sierpnia 1993 roku.Jego autorem jest Ian Murdock. Każda kolejna wersja nazywana jest imieniempostaci z filmu animowanego Toy Story. Aktualnie dostępnej wersji stabilnej(wydanej 15 sierpnia 2007 roku) nadano nazwę Etch oraz numer 40r1. Kolejnawersja, która jest teraz wersją testową, to Lenny. Warto wspomnieć jak wyglądadroga systemu do momentu ogłoszenia danej wersji stabilną. Początkowo, każ-dą nową wersję oznacza się jako Sid. Znajdują się tam pakiety niestabilne lub niedo końca przetestowane. Po określonych testach wersja zostaje przemianowanana Testing. Pakiety są tam już częściowo sprawdzone, lecz jeszcze w fazie testów.Ostatecznie po około 1,5-3 lat testowana wersja zostaje „zamrożona” i otrzymujehonorowe miano Stable. Istnieje również gałąź Experimental. Zamieszcza się tampakiety, które mogą być niebezpieczne dla stabilności systemu. Artykuł zostałoparty na Debianie Etch (stable). Istnieje możliwość instalacji wersji testing, czyliDebian Lenny. W większości wypadków nie powinno to sprawiać kłopotów,gdyż wersja testing została już wielokrotnie testowana i dużą część błędówwyeliminowano. Nie oznacza to jednak, że błędów nie będzie. Proponuję więcwersję stabilną. Będziemy mieli gwarancję, że system spełni nasze oczekiwania.

Jak zdobyć swojego Debiana?Najprościej jest pobrać obrazy *.iso ze strony projektu: www.debian.org.

Oprócz środowiska graficznego, mamy możliwość wyboru nośnika (CD lubDVD). Dla samej instalacji nie ma znaczenia, co wybierzemy. Różnica polega natym, że DVD są 3, natomiast CD jest aż 22. Dlaczego Debian znajduje się na tylupłytach? Otóż ogromnym plusem tego systemu (zwłaszcza dla osób, które niemają dostępu do Internetu) jest kompletne repozytorium na płytach. Nie trzeba

jednak pobierać wszystkich obrazów, ponieważ system bazowy i podstawowainstalacja znajdują się na pierwszej płycie CD i DVD.

InstalacjaJeśli mamy już Debiana nagranego na CD lub DVD, przystępujemy do in-

stalacji. Odpalamy komputer z CD-ROMu. Naszym oczom ukaże się ekranpowitalny instalatora. Jeśli chcemy, aby instalacja przebiegała w trybie graficz-nym, klikamy ENTER. Jeżeli jednak oczekujemy instalacji w trybie graficznymwpisujemy polecenie expertgui i potwierdzamy to klawiszem ENTER. Kolej-nym krokiem jest wybór języka i układ klawiatury. Oczywiście, wybieramypolski. Teraz instalator spróbuje automatycznie skonfigurować sieć za pomocąDHCP. Jeżeli nie uda się ustawić sieci automatycznie, pojawi się menu, z któ-rego wybieramy Konfiguruj sieć ręcznie lub Nie konfiguruj sieci teraz. Zaleca sięjednak konfigurować połączenie sieciowe. Wybieramy zatem konfigurację ręcz-ną. Wpisujemy wymagane parametry (IP, Maska, Brama, DNS). Kolejnym kro-kiem jest ustalenie nazwy hosta i domeny. Jeżeli komputer jest podłączony dojakiejś sieci lokalnej, podajemy odpowiednie nazwy. Jeżeli jednak tak nie jest,to zostawiamy pola puste lub wpisujemy dowolną nazwę.

Partycjonowanie dyskuDalszą częścią instalacji jest właśnie partycjonowanie. W menu są dostępne

cztery możliwości. Najrozsądniej jest wybrać partycjonowanie całego dysku.Instalator sformatuje cały dysk, a następnie odpowiednio go podzieli. Jednakjeśli wybierzemy Manual, będziemy musieli przygotować wszystko sami.

Manual, jak to zrobić?Przede wszystkim postępuj zgodnie z tym, co jest napisane w oknach! Jeżeli

dysk twardy jest pusty, lub są na nim niepotrzebne dane, kasujemy wszystko.Teraz wybieramy Utwórz nową partycję lub Automatycznie partycjonuj wolnąprzestrzeń (kiedy nie chcemy kasować naszych danych). Podajemy rozmiar no-wej partycji (można podać go w procentach, np.: 20% wolnej przestrzeni). Teraz,wskazujemy, czy partycja ma być podstawowa, czy logiczna (podstawowa, jeśliformatowaliśmy cały dysk, natomiast logiczna gdy Debian nie jest jedynym sys-temem). Wybieramy lokalizację (początek lub koniec dysku). Ostatnią fazą jest

numer 18 – 2008 3

Page 4: Licencjewolnegoświatadraco.org.pl/wp-content/uploads/Dragonia/dragonia_nr18.pdf · 2017. 9. 3. · Wstępniak DrodzyCzytelnicy Z nowym rokiem nowym krokiem! Nowo-roczna zmiana w

System

wybór typu plików np. ext3, oraz punku montowania. Analogicznie wyglądasytuacja w przypadku partycji swap. Jedyna różnica polega na tym, że zamiasttypu plików wybieramy przestrzeń wymiany. Teraz kończymy partycjonowaniei zapisujemy wszystkie wprowadzone zmiany. Partycjonowanie w trybie Ma-nual wygląda na bardzo skomplikowane. Osobiście polecam początkującympartycjonowanie całego dysku z przewodnikiem.

Co dalej?Jeżeli udało Ci się przebrnąć przez poprzedni etap, to na pocieszenie do-

dam, że teraz będzie już prosto. Najpierw podajemy hasło roota, następnienazwę nowego użytkownika, oraz jego hasło. Zostanie zainstalowany systembazowy. Po drodze zostaniemy zapytani, czy chcemy używać serwera lustrza-nego do aktualizacji zabezpieczeń (opcja ta będzie działać jeśli wcześniej skon-figurowaliśmy połączenie sieciowe). Wybieramy kraj, oraz serwer (najlepiejftp.pl.debian.org). Dalej instalator zapyta o serwer pośredniczący. Jeżeli takiegonie posiadasz to zostaw pole puste. W tym momencie naszym oczom ukażesię informacja dotycząca pakietu popularity-contest. Odpowiadamy twierdzą-co. Pakiet ten wysyła raz w tygodniu informację, których pakietów najczęściejużywasz w swoim Debianie. Dane potrzebne są do tworzenia statystyk, orazdostarczenia informacji developerom o popularności określonych pakietów.

Teraz zostaniemy poproszenie o wskazanie oprogramowania, które ma zo-stać zainstalowane. Do wyboru mamy:

[*] Środowisko graficzne[_] Serwer WWW[_] Serwer druku[_] Serwer DNS[_] Serwer plików[_] Serwer pocztowy[_] Laptop[*] System podstawowy

Aby zaznaczyć do instalacji określone pakiety, używamy spacji. Zaznaczymyjedynie System podstawowy oraz Środowisko graficzne. Oczywiście można za-instalować jedynie podstawowy system, a później doinstalować resztę. Uwa-żam jednak, że tak jest wygodniej. Na koniec potwierdzamy jedynie instalacjęGRUB’a. Teraz system zostanie po raz pierwszy uruchomiony.

Skoro wreszcie staliśmy się posiadaczami Debiana, przydałoby się go odpo-wiednio skonfigurować. Zacznijmy od ustawienia odpowiednich repozytoriów.Najpierw dodajemy płyty za pomocą komendy: apt-cdrom add. Należy jednak

pamiętać, że najpierw musimy przejść na uprawnienia root’a: su. Teraz edytu-jemy plik repozytoriów:gedit /etc/apt/sources.list

Dodajemy wpisy:

##WWW.DEBIAN-MULTIMEDIA.ORGdeb http://www.debian-multimedia.org etch maindeb-src http://www.debian-multimedia.org etch main## OPERAdeb http://deb.opera.com/opera/ stable non-free## SKYPEdeb http://download.skype.com/linux/repos/debian/ stable non-free## PICASAdeb http://dl.google.com/linux/deb/ stable non-free## BACKPORTdeb http://www.backports.org/debian etch-backports main contrib \non-free## WINEdeb http://wine.budgetdedicated.com/apt etch main## VIRTUALBOXdeb http://www.virtualbox.org/debian etch non-free## UNOFICIALdeb http://ftp.debian-unofficial.org/debian/ etch main contrib \non-free restricted

Teraz zapisujemy zmiany i wydajemy polecenie

apt-get update

Zostaniemy poinformowani, że musimy pobrać odpowiednie klucze. Robimyto wpisując kolejno:

gpg --keyserver subkeys.pgp.net --recv-keys numer_kluczagpg --armor --export numer_klucza | sudo apt-key add -

Od tej pory nasz Debian ma już pełne wsparcie. Możemy instalować naszeulubione aplikacje. Jeżeli udało się dotrwać do końca instalacji, to jesteś nadobrej drodze do opanowanie tego wyjątkowego systemu operacyjnego. Życzęmiłej zabawy, bo stabilność i solidność już otrzymaliście od Debiana.

numer 18 – 2008 4

Page 5: Licencjewolnegoświatadraco.org.pl/wp-content/uploads/Dragonia/dragonia_nr18.pdf · 2017. 9. 3. · Wstępniak DrodzyCzytelnicy Z nowym rokiem nowym krokiem! Nowo-roczna zmiana w

System

Przepis na systemKeyto

Jak zapewne wiedzą wszyscy sympatycy wol-nego oprogramowania, założony przez LadislavaBodnara serwis distrowatch.com to swoiste kom-pendium wiedzy na temat wszelkich wolnych sys-temów operacyjnych. Można zaryzykować stwier-dzenie, że każdy liczący się na świecie system z ro-dziny Linux czy BSD jest choćby wspomniany najego stronach. Znaleźć tu więc można środowiskapracy maści wszelakiej, od najmniejszych, szyb-kich dystrybucji przenośnych, po ogromne, któ-rych wszystkich pakietów nie ogarniają już chybanawet ich ojcowie założyciele. Spójrzmy na kilkaprzykładów: oto mały DSL, którego obraz iso dopobrania z oficjalnej strony, do której link znajdu-je się w tabelach distrowatch, „waży” zaledwie 49megabajtów. Najnowsza edycja Slackware w wersjiDVD, to obraz jednej płyty, zajmujący 3.7 gigabaj-ta. Debian. . . To istne ekstremum. Trzy płyty DVDwypełnione po brzegi, w sumie 12.9 gigabajta pa-czek instalacyjnych. GoboLinux – jedna płyta CD,„ważąca” 640 megabajtów. Dystrybucja Linux FromScratch – plik pdf, ponad 250 stron. . .

Osoba pragnąca, aby na jej komputerze zago-ścił system GNU/Linux, zazwyczaj decyduje się naktórąś ze znanych dystrybucji. Następnie, po po-braniu obrazów płyt, nagraniu ich na odpowiednienośniki, instaluje system, którego wstępną konfigu-rację „wzięli na siebie” jego twórcy. Jest to proste,łatwe i nawet przyjemne przedsięwzięcie, o ile –rzecz jasna – uda się je doprowadzić do szczęśliwe-go finału. Doświadczeni entuzjaści, nierzadko de-cydują się jednak na tak zwane dystrybucje budo-wane ze źródeł (ang. source based). Są to na przy-kład: powszechnie znany Gentoo oraz jego mniejpopularni „koledzy”: Lunar, T2 SDE, Sorcerer czy

Source Mage. Dystrybucje te, w odróżnieniu odtych popularnych, zawierających rozwiązania kom-pletne, mają za zadanie pomóc w zbudowaniu wła-snego systemu z kodów źródłowych poszczegól-nych aplikacji. Nawet na tym tle Linux From Scratchjest wydaniem szczególnym. Jest to bowiem książ-ka (a właściwie kilka książek) zawierająca prze-pis na własną dystrybucję systemu GNU/Linux.W chwili obecnej nad tym szczególnym projektempracuje ponad 20 osób, a z nazwiska wspomniećnależy zamieszkałego w Kanadzie pomysłodawcę:Gerarda Beekmansa.

Główne części projektu to:1. Linux From Scratch (LFS) – główna książka, za-

wierająca procedurę, która prowadzi do stwo-rzenia systemu bazowego.

2. Beyond Linux From Scratch (BLFS) – opis rozsze-rzenia systemu, powstałego na podstawie LFSo środowisko graficzne i oprogramowanie użyt-kowe.

3. Automated Linux From Scratch (ALFS) – narzę-dzia do automatyzacji pracy opisanej w LFSi BLFS.

4. Cross Linux From Scratch (CLFS) – informa-cje na temat tworzenia systemów innych niżGNU/Linux.

5. Hardened Linux From Scratch (HLFS) – przepisna zwiększenie poziomu bezpieczeństwa na-szego systemu.Będący tematem przewodnim tego artykułu

tom LFS, zawiera – jak wspomniano wyżej – prze-pis na uzyskanie działającego systemu. Cóż jednakoznacza działający system? Jest to po prostu kom-pleksowe środowisko, w którym możemy kompi-lować i instalować kolejne aplikacje. Uzyskujemyzatem własną dystrybucję GNU/Linux, pracującąwyłącznie w trybie tekstowym, która zawiera opro-gramowanie podstawowe, między innymi kompi-lator gcc, elementarne edytory (vim, sed), interpre-ter języka perl czy podręcznik man.

Co dalej? o tym za parę linijek, teraz jednakw naturalny sposób nasuwa się pytanie ile takaprzyjemność stworzenia własnego systemu kosz-tuje? Nie pieniędzy oczywiście, a czasu (choć mó-wi się, że czas to pieniądz. . . ), Trudno powiedzieć,zależne jest to bowiem tak od komputera, na któ-rym pracujemy, jak i od operatora, który system ówbuduje. Sam czas kompilacji bowiem nie jest z re-guły nawet połową tego, który doprowadza nas doszczęśliwego finału. Osoba rozważająca poświęce-nie tego biegnącego wciąż naprzód zasobu potrze-buje jednak jakiegoś punktu zaczepienia, choćbypo to, aby wiedzieć, czy czas ów mierzymy w go-dzinach (wtedy może zdecyduje się na tę zabawę),czy może tygodniach (wtedy raczej nie). Czysto

numer 18 – 2008 5

Page 6: Licencjewolnegoświatadraco.org.pl/wp-content/uploads/Dragonia/dragonia_nr18.pdf · 2017. 9. 3. · Wstępniak DrodzyCzytelnicy Z nowym rokiem nowym krokiem! Nowo-roczna zmiana w

System

orientacyjne dane, zmierzone przeze mnie na kom-puterze uzbrojonym w procesor P4 / 3GHz / 1GBRAM to ogólny czas 10 godzin, z czego kompilacjai testy stanowią około połowę. W deszczowy week-end można sobie więc pozwolić na budowę syste-mu, czyli przerobienie książki „od deski do deski”.Podkreślam jednak raz jeszcze – LFS jest przepisemna uzyskanie systemu podstawowego. Bez grafiki,bez przeglądarki Firefox i oczywiście bez OpenOf-fice.org. Aby wyposażyć nasz system w te apli-kacje, należy przy pomocy drugiego tomu, czyliBLFS, popracować znacznie dłużej. Dla przykładu,wspomniany OpenOffice.org na tym samym kom-puterze kompilował się nieco dłużej niż wszyst-kie programy z LFS razem wzięte. Na pocieszeniezaznaczyć jednak należy, że żaden inny popular-ny program nie kompiluje się aż tak długo. Czasykompilacji „lżejszych” programów biurowych, ta-kich jak AbiWord czy Gnumeric, zbliżone są doczasu budowy kernela (około 3–4 minut na wspo-mnianym sprzęcie).

Po co?Na pierwszy rzut oka wydawać by się mo-

gło, że LFS to pozycja przeznaczona wyłącznie dlakomputerowych geeków i profesjonalistów. Wręczoczywiste jest, że przeciętny użytkownik PC-ta niezdecyduje się na budowanie systemu „ręcznie”,kiedy do dyspozycji ma kilkaset gotowych rozwią-zań. Jest to zrozumiałe, ale też niekoniecznie wła-ściwe podejście. LFS jest bowiem przede wszyst-kim doskonałym podręcznikiem dla każdego, ktoobeznawszy się z systemem GNU/Linux, chciał-by zgłębić tajniki jego działania. Nie jest to drogałatwa, dlatego też, na ogół odradza się ją począt-kującym. Z drugiej strony jednak takie „ćwicze-nie”, polegające na budowaniu systemu na bazieLFS, jest dużo prostsze, niż się to wielu osobomzdaje. Nie potrzeba do tego bowiem profesjonalnejwiedzy z dziedziny programowania i budowy sys-

temów operacyjnych. Wystarczy średnio zaawan-sowana znajomość administrowania systemem (zapomocą narzędzi konsolowych – rzecz jasna), pod-stawowa na temat kompilacji oprogramowania, kil-kaset megabajtów wolnego miejsca na dysku, tro-chę wolnego czasu i przede wszystkim chęć po-znania systemu „od kuchni”. Niestety, jest jesz-cze jedno wymaganie, a mianowicie średnia przy-najmniej znajomość języka angielskiego, chociaż. . .Wersja 5 podręcznika została przełożona na językpolski przez pana Jerzego Iwaniuka i jest dostęp-na w internecie. Książka zawiera naprawdę wie-le wskazówek i opisów odnoście skryptów, i po-wiązań między poszczególnymi składnikami, tak,że osoba z niej korzystająca nie musi być od razukomputerowym guru. Z drugiej strony, aby pozo-stać uczciwym, trzeba się nastawić na pewien trud,a niekiedy – szukanie pomocy w sieci globalnej.

Warto w tym miejscu podkreślić, że jeśli przy-świeca nam cel wyłącznie „naukowy”, budowadziałającego systemu nie koniecznie musi zakoń-czyć się pełnym sukcesem. Można się naprawdęwiele nauczyć przerabiając jedynie część podręcz-nika i jeśli po drodze natrafimy na barierę nie doprzebycia, nie należy załamywać rąk. Okazać siębowiem może, że i tak wygraliśmy – system jestorganizmem złożonym i można przecież pozna-wać go stopniowo, a jeśli szukamy wiedzy, a niedziałającego produktu, nic się nie stanie, jeśli niewszystkie jego elementy uda się utworzyć.

Obok czysto dydaktycznego, są także inne po-wody, dla których warto skorzystać z LFS. Przy-kładem może być chęć uzyskania wyspecjalizo-wanego systemu (autor wspomina we wstępieo 5-megabajtowym systemie z działającym serwe-rem www), systemu wbudowanego lub na przy-kład systemu skrojonego dokładnie na miarę wła-snego sprzętu i potrzeb – system taki może być naprawdę bardzo szybki, stabilny i ma się rozumieć:jedyny w swoim rodzaju.

Jeśli nie mamy czasu ani chęci na zabawęw kompilację, a interesujemy się Linuksem, się-gnięcie po podręcznik LFS i tak nie jest po-zbawione sensu. Studiując jego zawartość moż-na dowiedzieć się dużo na temat samego syste-mu GNU/Linux a także systemów operacyjnychw ogólności. Omówiona jest w nim bowiem zawar-tość pakietów (sekcje: Contents of. . . w poszczegól-nych podrozdziałach), skryptów sterujących dzia-łaniem systemu i, co chyba najważniejsze, to, jakąrolę spełniają w systemie poszczególne komponen-ty i jakie są między nimi zależności.

Szkoleniowy plac budowyNo dobrze, decydujemy się na budowę. Powsta-

je jednak pytanie: jak tego najprościej dokonać. Za-cznijmy od tego, że do zbudowania systemu napodstawie LFS konieczny jest jakiś inny działającysystem GNU/Linux. Mówiąc inaczej: nasz systemGNU/Linux budujemy w środowisku Linux. Mo-że to być dowolna dystrybucja spełniająca warunkiprzedstawione we wstępie książki. Co jednak zro-bić, gdy nie posiadamy odpowiedniego systemu?z pomocą przychodzą nam autorzy, którzy przygo-towali płytę LFS LiveCD. Ze strony projektu pobraćmożna plik w formacie iso zawierający kompletnei odpowiednio przystosowane środowisko, książ-ki LFS i BLFS w formacie html, pakiety z kodemźródłowym, które posłużą do wygenerowania po-szczególnych aplikacji, potrzebne skrypty oraz ele-mentarne programy narzędziowe. Po wypaleniu napłycie mamy wszystko, co jest potrzebne do bu-dowy systemu. Czasem jednak pojawia się trochęwiększy problem.

Co zrobić w przypadku, kiedy jesteśmy użyt-kownikiem bez większego doświadczenia w tegotypu przedsięwzięciach i obawiamy się o stan na-szego komputera po próbie zmierzenia się z LFS?

numer 18 – 2008 6

Page 7: Licencjewolnegoświatadraco.org.pl/wp-content/uploads/Dragonia/dragonia_nr18.pdf · 2017. 9. 3. · Wstępniak DrodzyCzytelnicy Z nowym rokiem nowym krokiem! Nowo-roczna zmiana w

System

Co zrobić, kiedy mimo wszystko chcemy spróbo-wać swoich sił, a nie posiadamy akurat wolnej par-tycji na dysku? i jeszcze drobiazg, a mianowiciefakt, że kompilacja systemu operacyjnego trochętrwa. Wielu użytkowników nie bierze pod uwagęmozolnej ścieżki kompilacji, gdyż nie chcą, bądź teżnie mogą pozbawiać się swobodnego dostępu dokomputera na kilkanaście, czy nawet kilkadziesiątgodzin w przypadku rozszerzania systemu na pod-stawie tomu BLFS. Odpowiedź na to i poprzedniepytania jest prosta – wirtualizacja.

W chwili obecnej mamy do dyspozycji kilka do-brych programów, takich jak na przykład: VMWa-re Server, innotek VirtualBox czy Qemu. Pozostajetylko zainstalować jeden z nich, pobrać obraz płytyLFS LiveCD ze strony projektu, skonfigurować ma-szynę wirtualną i możemy bez obaw testować sys-tem w bezpiecznym, wirtualnym laboratorium. Dlamniej zaawansowanych użytkowników najbardziejprzyjaznym zdaje się być VirtualBox. Przy dość so-lidnym działaniu jest prosty w obsłudze, i, co niebez znaczenia, dostępny na wszystkie popularne

systemy. Zwróćmy uwagę, że programy do wirtu-alizacji posiadają jedną, bardzo przydatną w tymprzypadku cechę, jaką jest możliwość „zamroże-nia” działania maszyny wirtualnej w dowolnymniemal momencie. Dzięki temu możliwe jest kom-pilowanie naszego systemu „po kawałku” i w do-godnym czasie. Pomocnym w planowaniu czasujest fakt, że opis „obróbki” każdego pakietu zawie-ra orientacyjny czas, jaki zajmie jego kompilacja.Autorzy używają tu wymyślonej przez siebie jed-nostki: SBU. Ponieważ nie są w stanie podać ile ówbędzie wynosić na konkretnej maszynie, (trzeba bychyba sporządzić tabelę dla wszystkich konfigura-cji sprzętowych świata) posłużyli się następującąmetodą: jeden z pierwszych pakietów, jaki kompi-lujemy, to binutils. Jeśli zmierzymy czas jego two-rzenia, będzie on równy 1 jednostce SBU. Czasy„produkcji” pozostałych pakietów są mniej więcejproporcjonalne, więc jeśli na naszej maszynie bi-nutils kompiluje się 1 minutę, to pakiet coreutils,dla którego SBU wynosi 0.5, będzie się kompilowałokoło 30 sekund. Na zakończenie rozważań o bu-dowie systemu – trochę ciekawostek:

GNU/Linux bez GNUTrywializując, system GNU/Linux to system ope-racyjny Linux oraz oprogramowanie użytkoweGNU. Stąd zresztą nazwa. Jak zapewne wszyscywiedzą, system GNU, od początków swojego ist-nienia w roku 1993, miał być rozwiązaniem auto-nomicznym. Kiedy całość oprogramowania użyt-kowego osiągnęła należytą stabilność, pozostałyproblemy z systemem operacyjnym, czyli kernelemHurd, tak bowiem nazywa się natywne rozwiąza-nie systemu GNU. Jeśli spojrzymy na listę plikówniezbędnych do budowy LFS, widać, że większośćz nich pochodzi ze stron Free Software Foundation– nieosobowego twórcy tego systemu.Czy jest jednak możliwe zbudowanie i uruchomie-nie LFS bez tych źródeł?

numer 18 – 2008 7

Page 8: Licencjewolnegoświatadraco.org.pl/wp-content/uploads/Dragonia/dragonia_nr18.pdf · 2017. 9. 3. · Wstępniak DrodzyCzytelnicy Z nowym rokiem nowym krokiem! Nowo-roczna zmiana w

System

Oczywiście tak. Jakieś przykłady? Proszę bar-dzo:Jednym z podstawowych komponentów naszegonowego systemu jest kompilator języka C. Z je-go to pomocą możemy zbudować w pełni funk-cjonalny system. Oczywiście sam kompilator wrazze wszystkimi potrzebnymi bibliotekami jest sztan-darową częścią projektu GNU. i ciekawostka: ErikAnderson rozwija wersję podstawowej bibliotekijęzyka C (dokładnie – libc) wchodzącej w składprojektu GNU. Biblioteka Andersona o nazwieuClibc stosowana jest najczęściej w tak zwanychsystemach wbudowanych. Dlaczego? Po prostu jesto wiele mniejsza niż jej pierwowzór, a działająna niej niemal wszystkie aplikacje współpracującez „oryginalną” libc.

Ciekawszym dla przeciętnego użytkownika za-miennikiem części programów GNU jest programBusyBox. Autorzy nazywają go „uniwersalnymscyzorykiem dla wbudowanego Linuksa”. Busy-Box jest bowiem programem, który posiada funk-cjonalność całego niemal pakietu coreutils. (Coreu-tils to zbiór najczęściej chyba używanych progra-mów Linuksowej konsoli: cat, chown, mv, uname,who, cp, ln czy edytor vim – to wszystko programywchodzące w jego skład). Najciekawsze jest skądBusyBox – jeden program – „wie” jaką funkcjo-nalność ma zapewnić w danym momencie. Inny-mi słowy, kiedy ma stać się edytorem, a kiedy naprzykład kopiować pliki. Zależy to mianowicie odnazwy, pod jaką został wywołany. Po prostu: jeślizmienimy nazwę pliku z BusyBox na vim – będzieedytorem, jeśli zmienimy ją na ln – będzie tworzyłdowiązania symboliczne. Na szczęście nie trzebakażdorazowo tworzyć kopii programu, co z resztązupełnie mijałoby się z celem. Należy posłużyć sięmechanizmem dowiązań symbolicznych. W syste-mie plików umieszczamy jedną kopię programu,a resztę jego „kopii” tworzymy przy pomocy po-lecenia „ln”. Polecenie ln, nawiasem mówiąc, jest

jednym z potężniejszych mechanizmów w syste-mach z rodziny UNIX. Jeśli przeanalizujemy cho-ciażby budowę systemu GoboLinux. . . a propos –GoboLinux został stworzony na bazie książki LinuxFrom Scratch.

GNU/Linux bez. . . LinuxPopatrzmy teraz na sprawę z drugiej stro-

ny. Czy jest możliwe zbudowanie systemuGNU/Linux bez programu Linux? Analogiczniedo powyższych rozważań – odpowiedź jest twier-dząca, a zważywszy, że (jak już napisałem) na-tywnym rozwiązaniem systemu GNU jest kernelHurd, pytanie można w zasadzie uznać za reto-ryczne. Próby uruchomienia systemu GNU bazu-jącego na kernelu Hurd nie zakończyły się wrazz nadejściem Linuksa. Na stronach projektu De-bian możemy odnaleźć link do projektu DebianGNU/Hurd, niestety – ciągle nie jest to rozwią-zanie stabilne. Podobne próby trwają na przykładz kernelem SunOS (Solaris). Najważniejsze projek-ty to Shillix, Belenix i Nexenta, ale. . . to już tematna osobny artykuł.

Ważna uwaga (Mini Słowniczek)System operacyjny – według powszechnie przy-

jętej definicji jest to jeden program, który działa

w komputerze nieustannie od momentu urucho-mienia systemu, aż do jego wyłączenia (bądź re-startu). Wszystkie inne programy są programamiużytkowymi. Można postawić znak równości po-między słowem kernel, a technicznym pojęciemsystemu operacyjnego.

Powszechnie określenia „System Operacyjny”używa się też dla wszystkich programów dostar-czanych przez producenta w odpowiedzi na za-mówienie na środowisko pracy. Stąd też przyjęłosię mówić Linux na całość systemu, choć nazwata oznacza w istocie sam kernel. W niniejszym ar-tykule „system operacyjny” oznacza kernel, nato-miast całość oprogramowania określana jest krótkojako system.

Odnośniki[1] Strona LFS – http://www.linuxfromscratch.org/[2] Strona z przekładem LFS w wersji 5 – http://www.

loz.republika.pl/lfs/[3] serwis distrowatch – http://distrowatch.com/[4] VirtualBox – http://www.virtualbox.org/[5] GNU – http://www.gnu.org/home.pl.html[6] BUSYBOX – http://www.busybox.net/[7] uClibc – http://www.uclibc.org/[8] Systemy wbudowane/osadzone – http:

//pl.wikipedia.org/wiki/System_osadzony[9] Debian GNU/Hurd – http://www.debian.org/

ports/hurd/

numer 18 – 2008 8

Page 9: Licencjewolnegoświatadraco.org.pl/wp-content/uploads/Dragonia/dragonia_nr18.pdf · 2017. 9. 3. · Wstępniak DrodzyCzytelnicy Z nowym rokiem nowym krokiem! Nowo-roczna zmiana w

Software

Licencje Wolnego ŚwiataKarol Kozioł

Ogólnie, licencje „wolnego świata” dzielą się nalicencje oprogramowania oraz na licencje wolnejtreści (dokumentacja, obraz, dźwięk).

Licencji wolnego oprogramowa-nia/dokumentacji jest mnóstwo. Oto najważniejszez nich:1. Licencje GNU

a) GNU GPLb) GNU LGPLc) GNU FDL

2. Licencje typu BSDa) Pierwotna licencja BSD (4-punktowa)b) Zmodyfikowana licencja BSD (3-punktowa)c) Licencja FreeBSD (2-punktowa)

3. Licencja X114. Licencje Creative Commons (CC)5. Design Science License (DSL)6. Apache Licence7. Artistic License8. Mozilla Public Licence (MPL)9. Common Development and Distribution Licen-

se (CDDL)Większość podanych tu licencji to licencje opro-

gramowania. Licencjami wolnej zawartości są tyl-ko: 1.3, 4 oraz 5.

RMS i copyleftCopyleft jest systemem licencjonowania opro-

gramowania, stworzonym przez Richarda Mat-thew Stallmana w połowie lat osiemdziesiątych.Określa on, w jaki sposób należy zastrzec pra-wa autorskie, aby umożliwić maksimum swobo-dy użytkownikowi. Copyleft jest często stawiany

w opozycji do copyright, który zawęża prawa użyt-kowania, a nie, jak copyleft, je poszerza.

Rysunek 1. Logo Copyleft

Proces udostępniania w stylu copyleft polegana:— zastrzeżeniu praw autorskich danego dzieła,— pozwoleniu na dystrybucję i redystrybucję oraz

modyfikację dzieła dla wszystkich zaintereso-wanych,

— zastrzeżeniu, aby prace pochodne od udostęp-nianej pracy również były objęte licencjamizgodnymi z copyleft.

Na podwalinie copyleft wyrosły licencje GNU.

Licencje GNUGNU General Public License (GNU GPL)

Czyli Powszechna Licencja Publiczna GNU.Najpopularniejsza wolna licencja oprogramowa-nia, zalecana dodatkowo przez Free Software Fo-undation. Na licencji GPL jest publikowane np.jądro Linux. Została sformułowana w 1988 rokuprzez Richarda Stallmana i Ebena Moglena.Pozwala na:— Kopiowanie i dystrybucję kodu, a także pobie-

ranie opłat za tę dystrybucję.— Modyfikację kodu i rozprowadzanie zmodyfi-

kowanej wersji programu.

— Analizę kodu, udoskonalanie programu i do-stosowanie go do własnych potrzeb.

Wymaga:— Dołączenia do kodu programu informacji o li-

cencji i prawach autorskich.— Aby zmodyfikowana wersja programu również

była rozprowadzana na tej licencji.— W wypadku rozprowadzania programu w wer-

sji binarnej, należy dać odbiorcom możliwośćpobrania źródeł na żądanie.

Zabrania:— Łączenia kodu publikowanego na licencji GPL

z kodem publikowanym na innych licencjach(z pewnymi wyjątkami; w szczególnych wyjąt-kach trzeba spytać FSF).W trzeciej wersji licencji (GPL v3) zostały do-

dane następujące zaostrzenia:— Niemożność łączenia programów opartych na

GPL z mechanizmami ograniczeń cyfrowych(DRM).

— Podstawowa ochrona przez polityką patento-wą – rozpowszechnianie utworu chronionegopatentem i opartego na programie na GPLv3 oznacza udzielenie licencji patentowej nawszelkie działania określone w GPL v3.

Rysunek 2. Logo GNU

Ze względu na powyższe zmiany, uważane zazawężania wolności programisty, nie wszyscy zga-dzają się z GPL v3. Na przykład, Linus Torvalds

numer 18 – 2008 9

Page 10: Licencjewolnegoświatadraco.org.pl/wp-content/uploads/Dragonia/dragonia_nr18.pdf · 2017. 9. 3. · Wstępniak DrodzyCzytelnicy Z nowym rokiem nowym krokiem! Nowo-roczna zmiana w

Software

zapowiedział, że jądro Linuksa będzie nadal pu-blikowane na licencji GPL v2.

Ciekawostka: na licencji GPL udostępniane sąnie tylko programy. W zasadzie można udostępnićwszystko, dla czego można zdefiniować pojęcie ko-du źródłowego. Na przykład. . . przepis na drinka.Do zapoznania się tu [14].

GNU Lesser General Public License (GNULGPL)

Czyli Pomniejsza Powszechna Licencja Publicz-na GNU. Jej zastosowaniem są głównie bibliotekiprogramowe oraz programy składające się z wie-lu współdzielonych bibliotek (np. pakiet biurowyOpen Office). LGPL dopuszcza stosowanie wol-nych bibliotek (publikowanych jako LGPL) w pro-gramach na dowolnej licencji, także zamkniętej.Tak więc nakłada obowiązek stosowania zasad co-pyleft dla pojedynczych składników programu, alenie dla całego programu.

GNU Free Documentation License (GNUFDL)

Licencja GNU Wolnej Dokumentacji. Jest prze-znaczona dla dokumentacji, podręczników użyt-kownika i innych tekstów użytkowych.Pozwala na:— Kopiowanie i dystrybucję dzieła oraz modyfi-

kacje (tłumaczenie dzieła jest także jego mody-fikacją) i publikację zmodyfikowanego dzieła,także dla celów komercyjnych.

Wymaga:— Zamieszczenia informacji o autorze i licencji,

także jeśli dokumentacja jest w postaci dru-kowanej (co automatycznie zwiększa wielkośćdruku) oraz o zmianach w dokumencie.

— w przypadku dużych dokumentów (ponad 100stron) wymagana jest strona okładkowa stwo-rzona według odpowiednich wzorców.

Uwaga: o ile GNU FDL jest dość dobrą licencjądla dokumentacji, to do użytku ogólnego dla róż-nych dokumentów chyba jednak lepsza jest licencjaDSL lub CC.

Licencje typu BSDSą to dość liberalne licencje, proste w stosowa-

niu, chociaż nieopierające się na systemie copyleft.Na tych licencjach udostępniane są systemy opera-cyjne z rodziny BSD (FreeBSD, OpenBSD, NetBSD)oraz m. in. OpenSSH i PostgreSQL.Pozwalają na:— Kopiowanie i modyfikację kodu.— Rozprowadzanie go zarówno w postaci źródło-

wej, jak i tylko w postaci binarnej.— Włączenie kodu do programów zamkniętych,

bez podania kodu do publicznego wglądu.

Pierwotna licencja BSD (4-punktowa)Zwana 4-punktową, gdyż warunki dystrybucji

kodu są ujęte właśnie w czterech punktach.Wymaga:— W przypadku dystrybucji programu w posta-

ci źródłowej – umieszczenia notatki o prawachautorskich lub ich zrzeczeniu się.

— W przypadku dystrybucji programu w posta-ci binarnej – umieszczenia notatki o prawachautorskich lub ich zrzeczeniu się oraz innychwarunkach dystrybucji.

— W przypadku materiałów reklamowychi promocyjnych – podziękowania programi-ście/firmie za stworzenie produktu. Jest to takzwana klauzula ogłoszeniowa. Problem zaczy-na się dopiero wtedy, gdy wiele programówna pierwotnej licencji BSD zostanie złożonychw jedną całość (np. system operacyjny). Klauzu-la ogłoszeniowa rozrasta się wtedy do bardzodużych rozmiarów (trzeba w końcu podzięko-wać tylu osobom. . . ), co nieco utrudnia sprawę.

— Nazwiska programistów nie mogą być umiesz-czone na materiałach promocyjnych dla pro-duktów pochodnych bez pisemnego zezwole-nia.

Zmodyfikowana licencja BSD(3-punktowa)

Po kłopotach z klauzulą ogłoszeniową posta-nowiono ją usunąć. Tak powstała zmodyfikowanawersja licencji BSD.— W przypadku dystrybucji programu w posta-

ci źródłowej – umieszczenia notatki o prawachautorskich lub ich zrzeczeniu się.

— W przypadku dystrybucji programu w posta-ci binarnej – umieszczenia notatki o prawachautorskich lub ich zrzeczeniu się oraz innychwarunkach dystrybucji.

— Nazwiska programistów nie mogą być umiesz-czone na materiałach promocyjnych dla pro-duktów pochodnych bez pisemnego zezwole-nia.

Licencja FreeBSD (2-punktowa)Jeszcze bardziej uproszczona wersja licencji,

a przez to jeszcze bardziej liberalna.— W przypadku dystrybucji programu w posta-

ci źródłowej – umieszczenia notatki o prawachautorskich lub ich zrzeczeniu się.

— W przypadku dystrybucji programu w posta-ci binarnej – umieszczenia notatki o prawachautorskich lub ich zrzeczeniu się oraz innychwarunkach dystrybucji.

Licencja X11Zwana też często, aczkolwiek niezbyt popraw-

nie, licencją MIT. Jest również bardzo liberalna.Pozwala na:— Nieograniczone użytkowanie, dystrybucję (po-

bieranie na własny użytek, ale i sprzedaż), mo-

numer 18 – 2008 10

Page 11: Licencjewolnegoświatadraco.org.pl/wp-content/uploads/Dragonia/dragonia_nr18.pdf · 2017. 9. 3. · Wstępniak DrodzyCzytelnicy Z nowym rokiem nowym krokiem! Nowo-roczna zmiana w

Software

dyfikację programu (źródłowego lub binarne-go).

Wymaga:— Zachowania warunków licencyjnych we

wszystkich wersjach programu (pierwotneji zmodyfikowanej) oraz podania informacjio autorze.Na licencji X11 publikowano m. in. starsze wer-

sje serwera X11 oraz platformę programistycznąMono.

Licencje Creative Commons (CC)Są to licencje stosowane dla tekstu, muzyki, ob-

razów lub innych dzieł, które podlegają ochroniepraw autorskich, jednak nie są przeznaczone dostosowania w przypadku oprogramowania.

Rysunek 3. Logo Creative Commons

Istnieją cztery podstawowe warunki udzielenialicencji (stosowane w rożnych kombinacjach):Uznanie Autorstwa (Attribution – BY) pozwala na

kopiowanie, dystrybucję, użytkowanie i mody-fikowanie dzieła, pod warunkiem umieszczeniainformacji o twórcy dzieła.

Użycie Niekomercyjne (Noncommercial – NC)pozwala na kopiowanie, dystrybucję, użytko-wanie i modyfikowanie dzieła, ale tylko doużytku niekomercyjnego.

Bez Utworów Zależnych (No Derivative Works– ND) pozwala na kopiowanie, dystrybucjei użytkowanie dzieła, ale nie pozwala na mo-dyfikację i tworzenie dzieł pochodnych.

Na Tych Samych Warunkach (Share Alike – SA)pozwala na kopiowanie, dystrybucję, użytko-wanie i modyfikowanie dzieła, pod warunkiemudostępnienia zmodyfikowanego dzieła na tejsamej licencji.

Na aktualną wersję Creative Commons (czyli2.0) składa się sześć licencji:BY uznanie autorstwa.BY-ND uznanie autorstwa, bez utworów zależ-

nych.BY-NC-ND uznanie autorstwa, użycie niekomer-

cyjne, bez utworów zależnych.BY-NC uznanie autorstwa, użycie niekomercyjne.BY-NC-SA uznanie autorstwa, użycie niekomer-

cyjne, na tych samych warunkach.BY-SA uznanie autorstwa, na tych samych warun-

kach.Dodam tylko, że na licencji BY-ND publikowanajest Dragonia Magazine.

Licencja DSLczyli Design Science License. Jest zgodna z co-

pyleft i przeznaczona do licencjonowania wolnejtreści, takiej jak muzyka, tekst, obrazy.Pozwala na:— Kopiowanie i dystrybucję dzieła oraz modyfi-

kację i publikację zmodyfikowanego dzieła podpewnymi zastrzeżeniami.

Wymaga:— Udostępnienia dzieła pochodnego na tej samej

licencji.— Udostępnienia dzieła pochodnego pod nową,

inną nazwą.— Informacji o autorze dzieła pierwotnego (ale za-

chowuje się prawa autorskie do zmian w dzie-le).

Apache LicencePod tą licencją udostępniane są programy Apa-

che Software Fundation (np. serwer Apache). Niejest zgodna z GPL.Pozwala na:— Użytkowanie, kopiowanie, dystrybucję, mody-

fikację oraz dystrybucję zmodyfikowanej wersji

programu. Nie wymaga, aby zmodyfikowanewersje programu były publikowane na tej samejlicencji.

Wymaga:— Dla zmodyfikowanego kodu udostępnienia in-

formacji o tym, że kod pierwotny był wydanyna licencji Apache.

Artistic Licenseczyli Licencja Artystyczna, zwana czasami Li-

cencją Twórczą. Krytykowana za swoją niejedno-znaczność, aczkolwiek w wersji 2.0 jest zgodnaz GPL. Niezbyt popularna, używana głównie dlamodułów Perla.Pozwala na:— Wszelką dystrybucję i modyfikację dzieła.Wymaga:— Aby modyfikacje kodu zostały udostępnione je-

go pierwotnym autorom, zaś zmodyfikowanawersja powinna mieć zmienioną nazwę. Do-datkowo, należy zachęcać użytkowników doużywania (kopiowania, modyfikacji) zmienio-nej wersji.

Mozilla Public LicenceZostała opracowana przez firmę Netscape na

potrzeby projektu Mozilla (m. in. Firefox korzystaz tej licencji).Pozwala na:— Kopiowanie, dystrybucję i modyfikację kodu.

Łączenie kodu na licencji MPL z kodem na in-nych licencjach.

Wymaga:— Zamieszczenia notatki o licencji i prawach au-

torskich oraz aby zmodyfikowana wersja pro-gramu/kodu również była publikowana na li-cencji MPL.

numer 18 – 2008 11

Page 12: Licencjewolnegoświatadraco.org.pl/wp-content/uploads/Dragonia/dragonia_nr18.pdf · 2017. 9. 3. · Wstępniak DrodzyCzytelnicy Z nowym rokiem nowym krokiem! Nowo-roczna zmiana w

Software

Common Development and Distribution Li-censeStworzona została przez firmę Sun, na podstawie MPL. Na tejlicencji udostępniany jest system operacyjny Open Solaris orazśrodowisko programistyczne NetBeans.Pozwala na:— Używanie, kopiowanie, modyfikację i redystrybucję progra-

mu. Łączenie kodu publikowanego w CDDL z innymi licen-cjami.

Wymaga:— Umieszczenia tekstu licencji w dystrybuowanym kodzie.

Umieszczenia wzmianki o różnicach zmodyfikowanego pro-gramu w stosunku do oryginalnego dzieła, wzmianki o pra-wach autorskich i znakach towarowych.

Oczywiście, licencje tu wymienione to tylko drobna część wszyst-kich wolnych licencji. Jednakże, postarałem się wymienić te naj-ważniejsze. Polecam także zajrzenie na stronę [15], gdzie wymie-nione są licencje i interpretowane z punktu widzenia GNU.

Odnośniki[1] http://www.gnu.org/licenses/gpl.txt[2] http://www.gnu.org/licenses/lgpl.html[3] http://www.gnu.org/licenses/fdl.html[4] http://www.xfree86.org/3.3.6/COPYRIGHT2.html#6[5] http://www.xfree86.org/3.3.6/COPYRIGHT2.html#5[6] http://www.freebsd.org/copyright/freebsd-license.html[7] http://www.opensource.org/licenses/mit-license.php[8] http://creativecommons.pl/[9] http://www.gnu.org/licenses/dsl.html[10] http://www.apache.org/licenses/LICENSE-2.0[11] http://dev.perl.org/perl6/rfc/346.html[12] http://www.mozilla.org/MPL/MPL-1.1.html[13] http://www.sun.com/cddl/cddl.html[14] http://jaqque.sbih.org/OpenCola.html[15] http://www.gnu.org/philosophy/license-list.pl.html

numer 18 – 2008 12

Page 13: Licencjewolnegoświatadraco.org.pl/wp-content/uploads/Dragonia/dragonia_nr18.pdf · 2017. 9. 3. · Wstępniak DrodzyCzytelnicy Z nowym rokiem nowym krokiem! Nowo-roczna zmiana w

Software

O różnych ustawieniach przy kompilacji kernelaMichał Rzepka

Niezależnie od tego, jakiej dystrybucji się używa, w większościprzypadków jesteśmy zmuszeni do stosowania jądra systemu, któ-ry był konfigurowany w sposób gwarantujący działanie na jak naj-większej ilości maszyn, a nie jak najlepsze funkcjonowanie w kon-kretnym środowisku.

Chociaż często mamy do wyboru kilka kerneli, różniących się nieco zesta-wem wkompilowanych opcji i sterowników, to jednak nie jest to kod „skrojony”na miarę naszych potrzeb.

Powstaje pytanie, jak wielkie znaczenie mają te ustawienia dla rzeczywistejwydajności komputera w typowych zastosowaniach. Dlatego, w niniejszym tek-ście przetestuję kilka konfiguracji kernela za pomocą serii benchmarków – taksyntetycznych, jak i aplikacyjnych, i postaram się wykazać ewentualne różnice.

Środowisko testoweWszystkie testy wykonywano na dystrybucji KateOS 3.6 z kernelem w wer-

sji 2.6.21.4 (z włączoną obsługą wielu procesorów), kompilowanym ze źródeł,dostępnych w repozytorium dystrybucji. Użyto nieco już starszego, dwupro-cesorowego komputera o następujących parametrach:Płyta główna ASUS CUV4X-DSL (chipset VIA Apollo Pro133),Procesor(y) 2 x Pentium III 800MHz,Pamięć 384 MB SDRAM 133MHz (odświeżanie: 2-2-2-5),Karta grafiki nVidia Vanta (32 MB pamięci),Wersja sterownika graficznego 71.86.01,Dysk twardy Samsung SV2042H (20 GB),System plików reiserfs 3.6

Sposób testowaniaPonieważ w domyślnym kernelu nie była włączona opcja dodawania kon-

figuracji jądra do katalogu /proc, zacząłem od pliku ustawień dołączonychdo pakietu z kodem źródłowym. Po wykonaniu serii pomiarów, zmieniałemkolejno poszczególne rozpatrywane w artykule opcje, przekompilowywałemkernel i ponownie uruchamiałem benchmarki. Wszystkie były uruchamiane po

3–5 razy, a przedstawione wartości to ich średnie. Na komputerze pracowałytylko procesy niezbędne (do których nie zalicza się środowisko graficzne).

Wydajność obserwowałem za pomocą następujących wskaźników:1. program ab – sprawdzający szybkość serwera Apache, konkretnie badano

ilość wykonanych zapytań na sekundę komendą:ab -c 500 -n 10000 http://localhost/Oznacza to symulację wykonania 10000 zapytań od 500 klientów jednocze-śnie.

2. pakiet wielowątkowych benchmarków sysbench, a w nim:— test CPU – generator zadanej ilości liczb pierwszych, mierzy głównie

wydajność samego procesora. Użyta w teście komenda to:sysbench --num-threads=10 --test=cpu --cpu-max-prime=10000 run

— test MySQL – podprogram pakietu sysbench mierzący wydajność ser-wera MySQL; tu przedmiotem zainteresowania była ilość transakcji nasekundę, wykonana na testowej bazie z milionem rekordów:sysbench --num-threads=10 --test=oltp \\--mysql-host=localhost --mysql-user=<user> \\--mysql-password=<haslo> --oltp-table-size=1000000

— test fileIO – prędkość wykonywania operacji dyskowych, w rozpatrywa-nym przypadku chodziło o średnią przepustowość podczas losowychoperacji zapisu i odczytu na plikach o łącznej wielkości 1GB:sysbench --num-threads=10 --test=fileio \\--file-total-size=1G --file-test-mode=rndrw

3. czas startu systemu – rozbieżność pomiędzy tymi szybkościami międzykernelem „grubym” (z dodaną na stałe obsługą wielu urządzeń), a „odchu-dzonym”.

Niektóre ciekawsze opcje kernelaPo wydaniu polecenia make menuconfig czy make xconfig mamy do dys-

pozycji całą masę opcji konfiguracyjnych. Mnie najbardziej w kontekście tegoartykułu interesowały działy General setup, Block layer oraz Processor type andfeatures.

numer 18 – 2008 13

Page 14: Licencjewolnegoświatadraco.org.pl/wp-content/uploads/Dragonia/dragonia_nr18.pdf · 2017. 9. 3. · Wstępniak DrodzyCzytelnicy Z nowym rokiem nowym krokiem! Nowo-roczna zmiana w

Software

W tym pierwszym znajdują się takie opcje jak:— Optimize for size – kompilacja z opcją -Os zamiast -O2 – kod będzie opty-

malizowany prawie tak, jak w przypadku -O2, ale nie zostaną wykonanezabiegi mogące zwiększyć ilość kodu (m. in. -falign-loops), dodatkowo prze-prowadzone będą próby zmniejszenia ilości kodu wynikowego;

— Load all symbols for debugging/ksymoops (w podsekcji configure standard kernelfeatures) – włącza bardziej szczegółowy wydruk w przypadku krytycznychbłędów, kosztem wielkości kernela;

— jeśli nie planujemy używania systemów jak SELinux, możemy wyłączyćopcję auditing support,. Podobnie, warto przyjrzeć się innym potencjalnieniepotrzebnym funkcjom, jak na przykład tworzenie przestarzałych linkówsysfs;

W sekcji Block layer można zaś znaleźć takie opcje jak:— support for Large Block Devices – potrzebujemy tej opcji tylko, jeśli planujemy

podłączenie urządzenia o pojemności większej niż 2 TB;— support for Large Single Files – potrzebujemy, jeśli planujemy pracować z pli-

kami większymi niż 2TB, co w typowych zastosowaniach powszechnym niejest;

— IO Schedulers – schedulery decydują o tym, jak rozplanować operacje za-pisu i odczytu na dysk twardy. Bez kolejkowania, jądro zlecałoby operacjedyskowe w kolejności ich otrzymywania, co niekoniecznie jest wygodnedla samego dysku. Scheduler CFQ stara się przydzielić tyle samo przepu-stowości wszystkim procesom, co przydaje się, gdy na maszynie pracujewiele osób. Deadline i Anticipatory są podobne w działaniu, przy czymten pierwszy jest nieco prostszy i ma sprawować się lepiej przy niektórychzastosowaniach – jak bazy danych.

Kolejną interesującą sekcją jest Processor type and features:— Symmetric multi-processing support – włącza obsługę wielu procesorów w sys-

temie, to dotyczy również procesorów z 2 rdzeniami w 1 gnieździe;— Processor family – docelowa architektura procesora, na którym kernel ma

pracować. Warto wybrać odpowiedni procesor, aby upewnić się, że zostanąwykorzystane specyficzne dla danego modelu optymalizacje;

— Generic x86 support – oprócz optymalizacji dla procesora wybranego w opcjipowyższej, dołącza też typowe optymalizacje dla innych procesorów. Przy-datne tylko, jeśli zamierzamy uruchamiać kernel na wielu różnych proce-sorach;

— SMT (Hyperthreading) scheduler support – generalnie, usprawnia podejmo-wanie decyzji przez Pentiumy z Hyperthreadingiem;

— multi-core scheduler support – ma „w pewnych przypadkach” poprawiać po-dejmowanie decyzji przez procesor posiadający więcej niż 1 rdzeń;

— Preemption model (model wywłaszczania, czyli sposób przełączania proce-sora między poszczególnymi zadaniami) – do wyboru: tradycyjny no forcedpreemption (dobra latencja, ale mogą się pojawić „przycięcia” spowodowanezbyt wolnym przechodzeniem między zadaniami. Gwarantuje dobrą mocprzerobową w serwerach czy aplikacjach naukowych kosztem czasu reakcji),voluntary kernel preemption (zmniejsza latencję, pozwalając aplikacjom zrzecsię czasu procesora nawet wtedy, gdy akurat wykonują wywołania systemo-we) oraz preemptible kernel (gwarantuje najniższą latencję, kosztem ogólnejprzepustowości);

— preempt the Big Kernel Lock – dalej obniża latencję kernela, pozwalając nawywłaszczanie również nieco przestarzałego już (ale wciąż stosowanegoprzez niektóre programy) BKL;

— timer frequency – zwiększenie tej wartości do 1000Hz powinno uczynić jądronieco bardziej responsywnym, ale może owocować m. in. większym zuży-ciem procesora. Do pracy z multimediami rekomendowane jest również300Hz; niektórzy z kolei twierdzą, że zwiększenie wartości do 1000 zlikwi-dowało problemy z opóźnieniami przy pracy z tunerami TV czy profesjo-nalnej pracy z dźwiękiem. 100Hz zaś poleca się przy serwerach i maszynacho wielu procesorach (gdzie zbyt duża liczba przerwań może niepotrzebniespowalniać pracę).

Standardowa wersja, a kompilacja pod konkretny pro-cesor

Konfiguracja, od której zaczęliśmy, miała ustawioną architekturę docelową386, włączoną opcję generic x86 support, model wywłaszczania preemptible kernel(najmniejsza latencja) i wartość timer frequency ustawioną na 250Hz. Skompre-sowany obraz kernela miał wielkość 1.53MB. Pliki konfiguracyjne z niektórymiużytymi konfiguracjami zostały dołączone do katalogu z tym numerem Dra-gonii. Wystarczy wrzucić je do katalogu /usr/src/linux pod nazwą .config(wcześniej należy gdzieś skopiować oryginalny plik .config!). Jeśli mamy jużzainstalowane źródła jądra, można wydać polecenie make oldconfig (aby przy-stosować format configu do aktualnie posiadanej wersji źródła). Potem możnajuż wpisać make menuconfig i przeglądać konfiguracje.

numer 18 – 2008 14

Page 15: Licencjewolnegoświatadraco.org.pl/wp-content/uploads/Dragonia/dragonia_nr18.pdf · 2017. 9. 3. · Wstępniak DrodzyCzytelnicy Z nowym rokiem nowym krokiem! Nowo-roczna zmiana w

Software

Wyniki pomiarów przedstawiły się następująco:

Test WynikApache 426 zapytań/sek.MySQL 47.50 transakcji/sek.FileIO 3.79 MB/sStart systemu 46 sekundTest CPU 62.97 sek.

Następnie, przestawiono architekturę docelową na Pentium-III/Celeron(Coppermine)/Pentium-III Xeon, nie zmieniając przy okazji żadnych innych opcji.Wyniki:

Test WynikApache 504 zapytań/sek.MySQL 48.1 transakcji/sek.FileIO 3.96 MB/sStart systemu 46 sekundTest CPU 62.97 sek.

Jak widać, dość wyraźnie wzrosła szybkość serwera HTTP. Jednakże, trzebatu wspomnieć, że testy programem ab (Apache benchmark) wykazywały siędużą rozbieżnością wyników pomiędzy kolejnymi sesjami – w pewnych kon-figuracjach wynik „skakał” od około 350 do prawie 600 obsłużonych zapytańna sekundę i ciężko było zidentyfikować zależności, nawet usuwając te skrajnewartości.

Bardziej wiarygodne wydawały mi się wyniki osiągane przez MySQL i, jakwidać, nieco wzrosły, wraz ze zoptymalizowaniem kodu jądra pod procesor.

Usunięcie wkompilowanych sterowników do chipsetów, kontrolerów dys-ków twardych, itp. sprawiło, że skompresowany obraz kernela schudł z około1.55MB do 1.33MB, a czas startu systemu skrócił się o 3 sekundy – do 43 se-kund. Nie wpłynęło to jednak wyraźnie na wydajność w omawianych testach,o czym będzie dalej.

Schedulery wejścia/wyjściaNieco później, na lekko zmienionej konfiguracji przeprowadziłem testy czte-

rech IO Schedulerów jądra. Jak wspomniałem wyżej, moduły te starają się naj-wydajniej jak to możliwe planować proces zapisu na dysk twardy.

Wyniki były następujące:

MySQL Apache CPU File I/O(zapyt./sek.) (zapyt. /sek.) (sek.) (MB/sek.)

CFQ 44.62 504 62.97 3.64Anticipatory 45.1 490 62.97 3.86Deadline 46 508 62.97 3.76Noop 46.6 487 62.97 3.60

Aktualnie działający w systemie scheduler możemy sprawdzić, podglądajączawartość pliku /sys/block/sda/queue/scheduler. Przykładowa zawartość:noop anticipatory [deadline]

Oznacza, że mamy wkompilowany/załadowany moduł obsługi scheduleraDeadline oraz Anticipatory i że ten pierwszy jest akurat aktywny. Poleceniem:

echo anticipatory > /sys/block/sda/queue/scheduler

Zmienimy bieżący scheduler dla urządzenia sda. Jeśli w w/w pliku nie wi-dzimy interesującego modułu, to zapewne nie jest on wkompilowany i należygo załadować. w moim przypadku nazwy tych modułów to np. cfq-iosched.ko.

Wynik dla aplikacji mocno zależnej od wydajności procesora nie zmieniłsię wcale na przestrzeni kolejnych pomiarów, co można było przewidzieć. Po-jawiło się jednak parę anomalii, jak względnie dobry wynik przy teoretycznienajgorszej opcji – noop. Mimo to, widać dość wyraźnie, że najlepiej wydaje sięradzić sobie inny scheduler – Deadline.

Następnie, przyjrzałem się innej ciekawie wyglądającej opcji – wyżej już po-krótce opisanemu modelowi wywłaszczania. Do testu wykorzystałem tą samąkonfigurację co przy wcześniejszym teście (scheduler: deadline).

MySQL Apache CPU File I/O(zapyt./sek.) (zapyt. /sek.) (sek.) (MB/sek.)

Server 48.22 505 62.97 3.92Desktop 47.9 493.3 62.97 3.74Low latency desktop 45.9 508 62.97 3.76

Po raz kolejny, różnice nie są szczególnie znaczne. Szczególnie między kon-figuracjami Desktop i Low latency desktop; ustawienie server za to wydaje sięspełniać swoje zadanie, gdyż wyraźnie poprawiła się ogólna wydajność ope-racji plikowych oraz ilość transakcji na sekundę serwera MySQL. Ponieważnie miałem okazji dłużej pracować z poszczególnymi ustawieniami w różnychwarunkach, mogę jedynie przypuszczać (i sugerować się poradami w doku-mentacji), że ten skok szybkości rzutuje negatywnie na responsywność – cobywa zwykle odczuwalne w zastosowaniach „biurkowych”.

numer 18 – 2008 15

Page 16: Licencjewolnegoświatadraco.org.pl/wp-content/uploads/Dragonia/dragonia_nr18.pdf · 2017. 9. 3. · Wstępniak DrodzyCzytelnicy Z nowym rokiem nowym krokiem! Nowo-roczna zmiana w

Software

Następnie zainteresowałem się ustawieniem Timer frequency, do tej poryustawionej na wartość 250Hz. Na podstawie opisów znalezionych tu i ówdziedoszedłem do wniosku, że w praktyce oznacza to częstotliwość przełączaniasię pomiędzy kolejnymi zadaniami.

Nie zmieniając innych ustawień względem poprzedniego testu, zmieniłemwartość Timer Frequency na najwyższą – 1000Hz.

Wyniki przedstawiły się następująco (model wywłaszczania desktop):

MySQL Apache CPU File I/O(zap./sek.) (zap. /sek.) (sek.; mniej = lepiej) (MB/sek.)

250Hz 47.9 493.3 62.97 3.741000Hz 47.71 475.2 63.05 3.70

Tu wątpliwości można mieć mniej, gdyż po zwiększeniu tej wartości wszyst-kie testy wypadły odrobinę gorzej (rozważamy tu różnice rzędu np. kilku set-nych sekundy dla testu CPU) i znowu kosztem czasu reakcji. Słowem, wszystkiezadania wykonują się ze zbliżoną prędkością, ale w związku z tym żadne szcze-gólnie szybko – również dlatego, że zmiana kontekstu kosztuje. Należy wziąćpod uwagę fakt, że osiągnięta w ten sposób niska latencja nie jest bez znaczenia– oprogramowanie do pracy z dźwiękiem, takie jak Rosegarden, w przypadkuzbyt niskich wartości Timer frequency wydrukuje wręcz ostrzeżenie.

Na początku wspomniałem, że usunięcie zbędnych sterowników z jądrawcale nie uczyniło jakiejś specjalnie wielkiej różnicy. Nasuwa się więc pytanieo zależność wielkość – wydajność. Postanowiłem więc wyłączyć opcję optimizefor size, która w praktyce sprawiła, że skompresowany kernel zaczął „ważyć”1.80MB zamiast w/w około. 1.50.

I po raz kolejny wyniki testów:

MySQL Apache CPU File I/O(zap./sek.) (zap. /sek.) (sek.) (MB/sek.)

-O2 46.14 505 62.97 3.94-Os 48.22 505 62.97 3.92

Liczby wydają się mówić same za siebie. Ta kilkuset kilobajtowa różnica,o którą często walczymy, nie ma aż tak wielkiego znaczenia, przynajmniej niew rozważanych testach. Wyjątkiem jest jedynie podejrzanie większa wydajnośćlżejszego kernela w teście MySQL.

Moje wnioskiJak widać, wszystkie te „przełączniki”, jakie powierzyli nam ludzie od ker-

nela, faktycznie mają mierzalny wpływ na prędkość niektórych aplikacji. Wyda-je się jednak jednocześnie, że wpływ ten nie jest tak znaczny, jak byśmy chcieli,żmudnie konfigurując po raz wtóry system. Testy, takie jak mój, posiadają jed-nakże jedną fundamentalną wadę: testują pewien tylko wycinek zastosowańi sytuacji, w jakich znajdują się systemy operacyjne w różnych środowiskach.Ponadto, nie zawsze jest możliwe dokładne określenie jak dana konfiguracjaradzi sobie „w rzeczywistości” – tj. jak szybko przegra nam się film z płytyna dysk, podczas gdy jednocześnie będziemy konwertować muzykę do mp3i oglądali inny film. To chyba każdy musi sprawdzić sam, by znaleźć idealnądla siebie konfigurację. Zaryzykuję jednak stwierdzenie, że nawet jeśli kogośzupełnie nie interesuje jaki jego Linux ma „model wywłaszczania”, to zapewnewiększość użytkowników niewiele z tego tytułu traci.

Rysunek 1. Ekran konfiguracji jądra, wersja menu konsolowego

numer 18 – 2008 16

Page 17: Licencjewolnegoświatadraco.org.pl/wp-content/uploads/Dragonia/dragonia_nr18.pdf · 2017. 9. 3. · Wstępniak DrodzyCzytelnicy Z nowym rokiem nowym krokiem! Nowo-roczna zmiana w

Software

Xfce 4.4.2Rafał Topolnicki

2. grudnia została wydana nowa wersja Xfce– lekkiego środowiska graficznego. Jego możliwo-ści oraz sposoby instalacji prezentowałem w ar-tykule Środowisko graficzne XFCE w 11. nume-rze Dragonii. Śledząc listę wprowadzonych zmian,można czuć lekki niedosyt, szczególnie uwzględ-niając fakt, że na nowe wydanie czekaliśmy bli-sko osiem miesięcy. Zwykły użytkownik, pracu-jący na platformie 32-bitowej, może nie zauwa-żyć jakiejkolwiek równicy pomiędzy wersją 4.4.1a 4.4.2. Co więc zmieniło się w najnowszym wy-daniu? Po pierwsze, dodano i poprawiono wie-le tłumaczeń, co jednak nie ma dla nas kluczo-wego znaczenia. Poprawiono opcję ./configure–disable-menu-editor, która pozwala na zainsta-lowanie Xfce bez edytora menu. Naprawiono błąddotyczący informacji o plikach na pulpicie. Xfce za-pisuje informacje o położeniu plików na pulpiciew /.config/xfce4/desktop/icons.screen0.rcw postaci:[nazwa pliku]row=rzadcol=kolumna

Dotychczas po usunięciu pliku z pulpitu infor-macja o nim pozostawała. Wpływało to ujemnieprzede wszystkim na wydajność, jak również naprywatność.

Wśród drobnych poprawek należy wymienić –odświeżanie zegarka co minutę, a nie co sekundę,gdy czas podawany jest z dokładnością do minutczy używanie gnome-screensaver w wypadku bra-ku xsceensaver. Poprawiono również kilka błędów,

związanych z wyciekami pamięci oraz współpracąz Gtk+ 2.11.x.

Razem z Xfce 4.4.2 światło dzienne ujrzał Thu-nar 0.9.0. W nim również poprawiono jedynie kil-ka błędów, dodając tylko jedną nową opcję – daterenamer plugin. Po pierwsze, nowy Thunar po-winien bezproblemowo kompilować się na platfor-mach amd64 oraz NetBSD. Poprawiono błąd zwią-zany z tworzeniem przez menadżer plików minia-turek (ang. thumbnails). Thunar tworzy miniaturkiplików graficznych i wyświetla je podczas przeglą-dania katalogu. Tworzenie miniaturek za każdymrazem, gdy żądaliśmy dostępu do katalogu, byłobywysoce nieefektywne. Dlatego też, wszystkie mi-niaturki przechowywane są na dysku, w katalo-gu /.thumbnails. Zajmują one jednak przestrzeńoraz poniekąd obniżają prywatność. Jedyną me-todą uniknięcia tworzenia miniaturek jest odebra-nie temu katalogowi prawa do zapisu. Dotychczasjednak powodowało to 100% obciążenie proceso-ra – Thunar bowiem w nieskończoność próbowałtworzyć miniaturki i ciągle nie uzyskiwał dostę-pu. Błąd został naprawiony. Poprawiono równieżbłędnie zaznaczaną nazwę katalogu, która zawierakropkę, podczas zmiany tej nazwy (rys.1).

Podświetlona powinna być cała nazwa, a nie je-dynie jej część do rozszerzenia, jak ma to miejscew wypadu katalogów. Thunar zaczął również po-prawnie rozpoznawać pliki .ogg jako pliki audio.

Widać więc, że poprawione błędy to w więk-szości przypadków czysta kosmetyka. Wydaje się,że na poważne zmiany przyjdzie nam poczekać dowydania wersji 4.6, a wszystkie zmiany w stabilnej

linii 4.4 będą ograniczały się jedynie do drobnychpoprawek i kolejnych tłumaczeń. Żądni nowościużytkownicy powinni zainteresować się rozwojo-wą linią 4.5.

Rysunek 1. Domyślne zaznaczenia nazwy katalogutest.txt przy próbie zmiany jego nazwy

numer 18 – 2008 17

Page 18: Licencjewolnegoświatadraco.org.pl/wp-content/uploads/Dragonia/dragonia_nr18.pdf · 2017. 9. 3. · Wstępniak DrodzyCzytelnicy Z nowym rokiem nowym krokiem! Nowo-roczna zmiana w

Software

Baza pod kontrola konsoli część VKrzysztof Biskup – Irish

W kolejnej części cyklu, dotyczącego baz danych MySQL,przedstawię kilka parametrów SELECT. Przedstawię, w jaki spo-sób poprawić czytelność wyszukanych informacji. Omówimy teżsposoby sortowania i porcjowania wyników.

Aby jednak te wszystkie metody można było przedstawić, na początek stwo-rzymy nową, znacznie większą liczbę danych w zupełnie nowej tabeli. Abyułatwić ten proces czytelnikom, przygotowałem specjalny plik, zawierający od-powiednie zapytania do bazy (został on dołączony do katalogu z numerem).

Nowa tabela o nazwie katalog ma pola id, adres, tytul, opis, slowa_klucz, autor,jezyk, data_dodania. Aby stworzyć taką właśnie nową tabelę, wydajemy polece-nie:

CREATE TABLE katalog(adres CHAR(50),tytul CHAR(50),opis CHAR(250),slowa_klucz CHAR(250),autor CHAR(35),jezyk CHAR(3),data_dodania DATE,id INT NOT NULL AUTO_INCREMENT,

PRIMARY KEY(id));

Rysunek 1. Struktura poprawnie dodanej tabeli

Dane do tabeli dodajemy, wydając kolejno polecenia znajdujące sięponiżej. Materiały, wykorzystane do przygotowania tych tabel, pochodząz www.dragonia.pl.INSERT INTO katalog VALUES("http://dragonia.pl/","Dragonia Magazine","Elektroniczny magazyn poświęcony systemowi Linux","dragonia, magazine, czasopismo, gazeta, linux, linuks, mandriva, debian,slackware, suse, ubuntu",NULL,"pl","2007-12-01",NULL);

INSERT INTO katalog VALUES("http://www.4programmers.net/","Programowanie - 4programmers.net","Serwis 4programmers.net poświęcony jest programowaniu w językach Delphi,PHP, C++. Posiadamy największe forum dykusyjne","Delphi, C++, C\#, .NET, PHP, Perl, Turbo Pascal,HTML, XHTML, algorytmy, kody źródłowe, poradniki,podręczniki, tutorial",NULL,"pl","2007-12-03",NULL);

INSERT INTO katalog VALUES("http://www.kiernek.yoyo.pl/","KiErNeK - Programowanie w~Qt4 i~KDE4","Programowanie w~Qt4 i~KDE4","Qt4, programowanie Qt4, Qt4 programming, KDE4,KDE, Linux, programowanie, windows qt4",NULL,"pl","2007-12-04",NULL);

INSERT INTO katalog VALUES(

numer 18 – 2008 18

Page 19: Licencjewolnegoświatadraco.org.pl/wp-content/uploads/Dragonia/dragonia_nr18.pdf · 2017. 9. 3. · Wstępniak DrodzyCzytelnicy Z nowym rokiem nowym krokiem! Nowo-roczna zmiana w

Software

"http://www.unixy.pl/","Unixy.pl :: ","linux \& unix","linux,bsd,unix,programy,sieci,spotkania,hacking,mobile,grafika,programowanie,news,open source",NULL,"pl","2007-12-05",NULL);

INSERT INTO katalog VALUES("http://linuxnews.pl/","Linux News Nowości ze świata WolnegoOprogramowania","LinuxNews.pl jest częścią wortalu jakilinux.org: informacje odystrybucjach Linuksa, programach na platformę Linux, artykuły i~recenzje.","Linux, jakilinux, jaki linux, Polska, news, informacje, jabber,ubuntu, fedora, opensuse, yoper, oprogramowanie, Open Source,dystrybucje, dystrybucja","Borys Musielak","pl","2007-12-06",NULL);

INSERT INTO katalog VALUES("http://linux.pl/","Linux w~Polsce - Polish Linux Site","Linux w~Polsce - Polish Linux Site","linux, linuks, informacje, nowości, konfiguracja,instalacja, howto, oprogramowanie, programy, news,software, download, downloads, free, community,forum, kernel, open, open source, opensource,freesoftware, free software, gnu, gpl","Arkadiusz Bednarczyk","pl","2007-12-08",NULL);

INSERT INTO katalog VALUES("http://www.mandriva.pl/","Mandriva Linux - przyjazny system operacyjny - Strona główna","Mandriva Linux - Przyjazny system operacyjny","Mandriva Linux, Linux, Xtreme2, Powerpack 2008",NULL,"pl",

"2007-12-09",NULL);

INSERT INTO katalog VALUES("http://www.opensuse.org/","openSUSE.org",NULL,NULL,NULL,"en","2007-12-10",NULL);

INSERT INTO katalog VALUES("http://ubuntu.pl/","UBUNTU.PL - Polskie forum użytkowników Ubuntu Linux.","Polskie forum użytkowników Ubuntu Linux.", "ubuntu, pl, forum,ubuntu.pl, kubuntu, edubuntu, linux, debian",NULL,"pl","2007-12-11",NULL);

INSERT INTO katalog VALUES("http://www.us.debian.org/","Debian -- The Universal Operating System","Debian GNU/Linux is a free distribution of the GNU/Linux operatingsystem. It is maintained and updated through the work of many users whovolunteer their time and effort.","debian, GNU, linux, unix, open source, free,DFSG",NULL,"en","2007-12-12",NULL);

INSERT INTO katalog VALUES("http://xandros.pl/","Xandros - system operacyjny dla rozwiązań domowych i~serwerowych","Xandros dostarcza gotowy system operacyjny dla rozwiązań domowych,biznesowych i~edukacyjnych. Ściągnij dystrybucję Xandros uruchamianąz~płyty CD, kup wersję komercyjną","Linux system operacyjny, linux os, linux, linux download, dystrybucja,pobieranie, linux desktop, linux, iso, linux dla domu, linux dla biznesu,łatwy i~przyjazny linux",

numer 18 – 2008 19

Page 20: Licencjewolnegoświatadraco.org.pl/wp-content/uploads/Dragonia/dragonia_nr18.pdf · 2017. 9. 3. · Wstępniak DrodzyCzytelnicy Z nowym rokiem nowym krokiem! Nowo-roczna zmiana w

Software

NULL,"pl","2007-12-13",NULL);

INSERT INTO katalog VALUES("http://www.fedora.pl/","Fedora.pl - Portal",NULL,NULL,NULL,"pl","2007-12-14",NULL);

INSERT INTO katalog VALUES("http://team-tl.livenet.pl/","TeaM-TL - TeXLive w~LinuxLive","TeaM-TL czyli LinuxLive z~TeXLive","TeaM-TL,TeX, LaTeX, TeXLive, Linux, Slackware, GUST, emacs, vim","TeaM-TL","pl","2007-12-15",NULL);

Aby wstawić powyższą zawartość do tabeli, otwórz plik dane.mysql znaj-dujący się w katalogu mysql i skopiuj jego zawartość do konsoli MySQL. Mniejleniwym polecam jednak przepisanie przykładu samodzielnie, dzięki czemunabierzemy wprawy w budowaniu zapytań do bazy danych. Przygotowanatabela będzie nam służyć za poligon doświadczalny w wielu kolejnych przy-kładach.

Po tym wstępie przejdźmy do sedna naszego problemu. Domyślnie, danesą wypisywane w kolejności takiej, w jakiej zostały dodane do bazy. Jednaktaki sposób prezentacji nie zawsze jest najodpowiedniejszy. Znacznie lepiej jestposortować dane, według którejś z kolumn, zawierającej dla nas najistotniejszedane.

SELECT adres,tytul FROM katalog ORDER BY adres;

Oto przykład (Rys. 2) polecenia ukazujący nam jak możemy sortować dane.

Rysunek 2.

Możemy też uzyskać dane posortowane w odwrotnej kolejności, dodając nakoniec polecenia parametr DESC. Całe takie zapytanie ma postać:SELECT adres,tytul FROM katalog ORDER BY adres DESC;

Rysunek 3.

Można też sortować według daty:SELECT adres,tytul, data_dodania FROM katalog ORDER BY data_dodania;

numer 18 – 2008 20

Page 21: Licencjewolnegoświatadraco.org.pl/wp-content/uploads/Dragonia/dragonia_nr18.pdf · 2017. 9. 3. · Wstępniak DrodzyCzytelnicy Z nowym rokiem nowym krokiem! Nowo-roczna zmiana w

Software

Rysunek 4.

i w kolejności odwróconej:SELECT adres,tytul, data_dodania FROM katalog ORDER BY data_dodania DESC;

Rysunek 5.

Możemy, oczywiście, wyświetlić tylko część danych, lub podzielić ich wy-świetlanie na kilka etapów. Przydatna w takich sytuacjach jest klauzula LIMIT,

określająca ilość danych do wyświetlenia, lub ich przedział. Oto przykład, którywyświetli tylko 5 pierwszych wierszy danych posortowanych:

SELECT adres,tytul FROM katalog ORDER BY adres LIMIT 5;

Czasem zachodzi potrzeba wyświetlania kolejnych, niekoniecznie pierw-szych wierszy. Wtedy klauzula LIMIT przyjmuje postać rozszerzoną. Piszemypo niej 2 liczby, gdzie pierwsza z nich określa numer pierwszego wiersza dowyświetlenia, a druga liczbę wierszy:

SELECT adres,tytul FROM katalog ORDER BY adres LIMIT 3, 4;

Rysunek 7.

ZakończenieW kolejnej części omówię pełną składnię zapytania SELECT, a teraz już

dziękuję za te kilka chwil poświęconych na lekturę kolejnej części moich arty-kułów.

numer 18 – 2008 21

Page 22: Licencjewolnegoświatadraco.org.pl/wp-content/uploads/Dragonia/dragonia_nr18.pdf · 2017. 9. 3. · Wstępniak DrodzyCzytelnicy Z nowym rokiem nowym krokiem! Nowo-roczna zmiana w

Software

Zaawansowana konfiguracja serwera WWW, część IVKrzysztof Biskup – Irish

W poprzednim numerze Dragonii do-kończyłem opis pliku konfiguracyjnegoprogramu Apache i zapowiedziałem, żekolejna część artykułu dotyczyć będziegraficznego narzędzia do konfiguracji ser-wera. Przyszła więc pora zrealizowaćobietnice i przedstawić nieco prostszysposób zmiany wielu ustawień serweraWWW. Z pomocą w tym celu przyjdzienam program Webmin.

Aby wykorzystać to przydatne narzędzie, mu-simy je najpierw zainstalować. Jeśli nasza dystry-bucja nie posiada takiego pakietu, najnowszą wer-sję programu można pobrać ze strony projektu:http://www.webmin.com. W zależności od dys-trybucji Linuksa, proces instalacji przebiega róż-nie, dlatego nie będę się tu nim zajmował, a jedy-nie przedstawię sam program i sposób jego uży-cia. Webmin to aplikacja napisana w Perlu, którąuruchamiamy na serwerze, co pozwala na zdalnąkonfigurację za pomocą przeglądarki internetowej.Aby uruchomić aplikację lokalnie, w przeglądarcewpiszemy: https://localhost:10000. Łatwo zauwa-żyć, że w adresie mamy do czynienia z protokołemszyfrowanym, a praca odbywa się na porcie 10000(numer portu możemy zmienić). Jeżeli chcemy łą-czyć się z naszym serwerem zdalnie, zamiast lo-calhost wpiszemy publiczny adres IP serwera albojego nazwę domenową. Po uruchomieniu progra-mu, pierwszym domyślnym oknem jest formularzlogowania.

Rys. 1 przedstawia okno Webmin uruchomionew systemie Mandriva Linux 2007.1 po zalogowa-niu. Pierwszą czynnością, jaką możemy wykonać,jest zmiana ustawień programu, wybierając We-bmin Configuration, a następnie zmienić język.

Rysunek 1.

W tym celu wybieramy Language (rys. 2). Powybraniu z listy języka polskiego, zatwierdzamywybór wybierając Change Language (rys. 3).

Rysunek 2.

Po tych zabiegach, większość komunikatów będziew języku polskim, ale niestety niektóre w dalszymciągu są w języku narodowym informatyki (czytaj:angielskim).

Rysunek 3.

Teraz omówię pokrótce do czego właściwie służyWebmin. Podstawowym zadaniem programu We-bmin jest umożliwienie zdalnej administracji sys-temami Linux lub Unix. Do podstawowych opcjiprogramu możemy zaliczyć możliwości konfigura-cji systemu operacyjnego, serwerów, sieci, sprzę-tu, klastra oraz sporo innych czynności związanychz administrowaniem systemem serwerowym zdal-nie. Wszystkie te wymienione grupy opcji, dostęp-ne są w górnej części menu.

Po wybraniu którejś z nich, w dolnej części wy-świetlają się dostępne opcje. Interesujące nas opcjedotyczące konfiguracji serweraWWW, mieszczą sięw grupie Serwery, a jest to pozycja Serwer WWWApache (rys. 4).

Nietrudno zauważyć, patrząc na tę kartę, jakwiele różnych możliwości daje to narzędzie konfi-guracyjne. My jednak skupmy swą uwagę na tylkojednej z tych opcji – dotyczącej Apache. Wybierająctę opcję, pojawia się kolejny zbiór pozycji, podzie-lony na trzy części. Pierwsza grupa opcji (rys. 5)zawiera podstawowe ustawienia serwera – wśródnich jest też możliwość samodzielnej edycji plikukonfiguracyjnego.

numer 18 – 2008 22

Page 23: Licencjewolnegoświatadraco.org.pl/wp-content/uploads/Dragonia/dragonia_nr18.pdf · 2017. 9. 3. · Wstępniak DrodzyCzytelnicy Z nowym rokiem nowym krokiem! Nowo-roczna zmiana w

Software

Rysunek 4.

Rysunek 5.

Drugi blok ustawień dotyczy – omawianychprzeze mnie w ostatnim numerze Dragonii – ser-werów wirtualnych (rys. 6), a w szczególności ze-stawu wartości dla wszystkich niezdefiniowanychjawnie opcji serwerów wirtualnych.

W ostatniej, trzeciej (rys. 7) części, mamy dodyspozycji kreator, umożliwiający dodawanie no-wych serwerów wirtualnych.

Powróćmy do samej góry, czyli pierwszegobloku ustawień serwera i przeanalizujmy każdez ustawień szczegółowiej. Zaczniemy więc od Pro-cesy i ograniczenia (rys. 8).

Rysunek 6.

Rysunek 7.

Rysunek 8.

W dziale tym został zebrany zestaw opcji, określa-

jących maksymalne ilości procesów serwera, dłu-gości zapytania, ilości zapytań, ilości nagłówkóww zapytaniu, itp. Dla mniej egzotycznych konfigu-racji, zalecane jest zostawienie tych opcji ustawio-nych na wartość domyślną.

Kolejna opcja, Sieć oraz adresy (rys. 9), dotyczyoczywiście ustawień sieciowych.

Rysunek 9.

W pozycji tej mamy możliwość zmiany adresówIP i portów, które obsługuje serwer. Jest to bardzoprzydatna opcja, w szczególności, gdy nasz Apa-che pracuje na komputerze wyposażonym w kil-ka interfejsów sieciowych, lub gdy wymagana jestpraca na niestandardowych portach, czyli HTTP naporcie innym niż 80, a HTTPS na porcie innym niż443. Oprócz tego, możemy w tym formularzu po-dać czas połączenia, długość kolejki, ilość zapytańdla pojedynczego połączenia oraz rozmiar buforanadawczego.

Nieco mniej opcji daje nam kolejna pozycja– Użytkownicy i grupy (rys. 10). Mamy tu możli-wość określenia użytkownika i grupy sytemu ope-racyjnego, któremu będzie przypisany uruchomio-ny proces Apache. Wybrać odpowiednie pozycjemożemy przez wskazanie nazwy lub identyfikato-ra.

Następna pozycja, o dość niewiele mówiącej na-zwie Różne (rys. 11), zawiera dodatkowe opcje ser-

numer 18 – 2008 23

Page 24: Licencjewolnegoświatadraco.org.pl/wp-content/uploads/Dragonia/dragonia_nr18.pdf · 2017. 9. 3. · Wstępniak DrodzyCzytelnicy Z nowym rokiem nowym krokiem! Nowo-roczna zmiana w

Software

wera, dotyczące ustawień numeru procesu Apa-che, lokalizacji katalogu zrzutu pamięci oraz pli-ków blokady serwera i pamięci współdzielonej.

Rysunek 10.

Rysunek 11.

Kolejna opcja Skrypty CGI (rys. 12) jest już znaczniebardziej czytelna. Znajdziemy tu opcje umożliwia-jące zmianę lokalizacji skryptów logowania CGI,maksymalny rozmiar logu CGI oraz przesyłanychdanych.

Rysunek 12.

W pozycji Pliki opcji dla katalogów (rys. 13) możemywskazać lokalizację pliku z regułami dostępu dokatalogów. Domyślnie plik ten nosi nazwę .htac-cess. Możemy tu także wskazać, z jakiego kataloguma być rozpoczęte przeszukiwanie.

Rysunek 13.

Kolejna pozycja konfiguracyjna – Rekonfiguruj znanemoduły (rys. 14) umożliwia nam określenie, któremoduły – spośród znanych przez Webmin – są uru-chamiane przy starcie Apache. Jeśli zainstalowali-śmy moduł i chcemy, aby został on uruchomiany,a nie jest zaznaczony, należy go zaznaczyć. Analo-gicznie, jeżeli chcemy, aby jakiś moduł nie zostałzaładowany przez serwer inie wykorzystujemy godo niczego, to możemy go odznaczyć.

Przedostatnia pozycja z tego bloku – Zmień zde-finiowane parametry (rys. 15) zawiera formularz, da-jący możliwość wprowadzania dodatkowych

Rysunek 14.

parametrów, które są ładowane podczas urucha-miania Apache, aby Webimin mógł je uwzględnićpodczas wyświetlania ustawień.

Rysunek 15.

Ostatnia ikona z tego bloku – Edit config files (rys.16) daje możliwość edytowania pliku konfiguracyj-nego, w tymmiejscu można wykorzystać materiałypoznane w poprzednich częściach tego artykułu.Jak już wcześniej pisałem, nie wszystko jest spo-lszczone, a chyba najlepszym przykładem jest tawłaśnie pozycja.

Rysunek 16.

w kolejnej, a zarazem ostatniej części z tego cyklu,omówię dwa pozostałe bloki opcji oraz przedsta-wię sposób tworzenia i konfigurowania serwerówwirtualnych.

numer 18 – 2008 24

Page 25: Licencjewolnegoświatadraco.org.pl/wp-content/uploads/Dragonia/dragonia_nr18.pdf · 2017. 9. 3. · Wstępniak DrodzyCzytelnicy Z nowym rokiem nowym krokiem! Nowo-roczna zmiana w

Software

LATEX – kilka słów o tekścieGabriela Grusza, Tomasz Łuczak

W artykułach o pisaniu pracy magisterskiej pominęliśmy za-gadnienia typograficzne dotyczące samego tekstu, starając się sku-pić na strukturze tekstu i poszczególnych jej elementach. Tym ar-tykułem uzupełniamy nasz kurs LATEX-a.

Ze względu na możliwości ilustracji przykładów, jakie daje namwykorzystanie systemu LATEX jako narzędzia składu naszego pi-sma, niniejszy artykuł zawiera fragment poprzedniego artykułu.

Spacje w tekścieJednoliterowe spójniki na końcu wiersza nie wyglądają dobrze i należy się

ich pozbyć. LATEX ich samodzielnie nie przenosi do nowego wiersza, bo nie ro-zumie tekstu, dlatego należy mu pomóc w jego interpretacji. Podczas pisanianależy wstawiać niełamliwe spacje pomiędzy jednoliterowe spójniki (a, i, o , u,w, z) a następny wyraz. Niełamliwe spacje to po prostu znak tyldy „~” czyli:

A~ku ku

Wstawione podwójne spacje pomiędzy wyrazami wyglądają również brzyd-ko, ale tu TEX sam wie co robić i niezależnie ile zwykłych spacji wstawimy po-między wyrazy – to on zostawi tylko jedną. Pojedynczy znak nowego wierszatraktowany jest również jako odstęp.

Nie do pogardzenia jest również możliwość wstawianie komentarzy. Tekstpocząwszy od znaku „%” do końca wiersza, wraz ze znakiem końca wierszatraktowany jest jako komentarz i nie jest przetwarzany.

Piszmy jak nam wygodnie,TeX i~takzłożytekst %możemy nawet wstawić komentarz!dobrzez~jednakowymi odstępami pomiędzy wyrazami.

Piszmy jak nam wygodnie, TeXi tak złoży tekst dobrze z jednako-wymi odstępami pomiędzy wyra-zami.

Pusty wiersz, czyli dwa znaki końca wiersza, to dopiero znak zakończeniajednego akapitu i rozpoczęcia następnego.

WyliczeniaLATEX oferuje nam trzy rodzaje wyliczeń: numerowane, nienumerowane

i opis. Pierwsze dwa to znane już nam środowiska enumerate i itemize.

Ostatnie zaś, to odmiana wyliczenia nienumerowanego, gdzie zamiast znakuwyliczenia znajduje się tekst, który dalej opisujemy. Środowisko to nazywa siędescription. Każde wyliczenie zaczyna się od polecenie \item.

Wyliczenie numerowane\begin{enumerate}\item Pierwsze.\item Drugie.\item Trzecie.\end{enumerate}

1. Pierwsze.2. Drugie.3. Trzecie.

Wyliczenie nienumerowane\begin{itemize}\item pierwsze,\item drugie,\item trzecie.\end{itemize}

— pierwsze,— drugie,— trzecie.

Domyślny znak wyliczenia zależy od klasy dokumentu i można go zmienić.

Wyliczenie opisowe\begin{description}\item[Żelazo] -- pierwiastek.\item[Stal] -- stop żelaza,\item[Kawa z mlekiem] -- mieszanina.\end{description}

Żelazo – pierwiastek.Stal – stop żelaza,Kawa z mlekiem – mieszanina.

Kreski poziomeKlawiatura pozwala na bezpośrednie wprowadzenie jedynie jednej kreski

w połowie wysokości wiersza i jednej na linii tekstu. LATEX udostępnia namnastepujące kreski poziome:łącznik do łączenia wyrazów, np. niebiesko-czarny: „-” -,półpauza zwana myślnikiem: „–” --,pauza stosowana w dialogach: „—” ---,minus stosowany w wyrażeniach matematycznych: „−” $-$,znak podkreślenia stosowany do łączenia nazw plików: „_” \_.

W praktyce wystarczy nam łącznik, półpauza i w szczególnych wypadkachznak podkreślenia.

numer 18 – 2008 25

Page 26: Licencjewolnegoświatadraco.org.pl/wp-content/uploads/Dragonia/dragonia_nr18.pdf · 2017. 9. 3. · Wstępniak DrodzyCzytelnicy Z nowym rokiem nowym krokiem! Nowo-roczna zmiana w

Software

Znaki specjalneW LATEX-u występują znaki specjalne, których nie możemy używać wprost,

ponieważ mają specjalne znaczenie, np. są znakiem polecenia, środowiska ma-tematycznego itp. W tabeli poniżej umieściliśmy te znaki wraz ze sposobemich zapisu.Znak \ % $ & # [ ] { } _ ^ ~Zapis \textbackslash \% \$ \& \# {[} {]} \{ \} \_ \^ \~

Wielkość pismaWielkość bazową pisma określamy w opcjach klasy dokumentu i może ona

być równa 10pt, 11pt lub 12 pt. W stosunku do tych wielkości, możemy propor-cjonalnie zwiększać lub zmniejszać rozmiar pisma. Służą do tego następującepolecenia:\tiny Przykład rozmiaru pisma

\scriptsize Przykład rozmiaru pisma

\footnotesize Przykład rozmiaru pisma\small Przykład rozmiaru pisma\normalsize Przykład rozmiaru pisma\large Przykład rozmiaru pisma\Large Przykład rozmiaru pisma\LARGE Przykład rozmiaru pisma\huge Przykład rozmiaru pisma\Huge Przykład rozmiaru pismOdmiany i kroje pisma

Oprócz zmiany stopnia pisma możemy zmieniać:— krój (ang. family):

szeryfowy Królowa Margot \textrm{Królowa Margot}bezszeryfowy Królowa Margot \textsf{Królowa Margot}maszynowy Królowa Margot \texttt{Królowa Margot}

— serię (ang. series):pogrubiona Królowa Margot \textbf{Królowa Margot}

— odmianę (ang. shape):proste Królowa Margot \textup{Królowa Margot}kursywa Królowa Margot \textit{Królowa Margot}pochyła Królowa Margot \textsl{Królowa Margot}kapitalik Królowa Margot \textsc{Królowa Margot}

Domyślnym fontem jest font o kroju szeryfowym, w odmianie prostej.

W zależności od fontu, pewne odmiany, kroje, serie lub ich kombinacjemogą nie istnieć lub mogą istnieć dodatkowe.

Można stosować kombinacje, zagnieżdżając jedno polecenie w drugim:\textbf{\textit{Królowa Margot}} Królowa MargotPolecenia zmiany kroju, serii czy odmiany pisma tj. zaczynające się od

\textxx posiadają jeden argument podawany w nawiasie. Argument ten możezawierać co najwyżej jeden akapit.

Wyróżnienia w tekścieWyróżnienia w tekście należy dokonywać za pomocą kursywy, odmiany

pochyłej lub pisma bezszeryfowego lub maszynowego.Nie stosuje się podkreśleń tekstu, ponieważ utrudnia czytanie przekreśla-

jąc ogonki i dolne wydłużenia liter. Zwyczaj podkreślania pochodzi z czasówmaszyn do pisania i pisma odręcznego, gdzie nie ma możliwości zmiany krojupisma.

Podobnie, do wyróżnienia fragmentu nie należy stosować tekstu wytłusz-czonego, ze względu na zakłócenie duktu czytania. Wynika to stąd, że wszarym prostokącie tekstu pojawia się czarny element, który odciąga uwagęnaszych czytelników od tekstu.

CudzysłowyCudzysłowy mogą być różne, w zależności od języka i stopnia zagnieżdże-

nia cytatu. W języku polskim stosujemy— „cytat” otrzymuje się, wpisując ,,’’,— „cytat »zagnieżdżony«” otrzymuje się, wpisując >> <<.

Znaki interpunkcyjne, odnoszące się do całego zdania z cytatem, umiesz-czamy za kończącym cudzysłowem, czyli:Pomyślał o sobie „Jestem świetny”.

PrzypisyNierzadko, chcemy dodać do tekstu głównego wyjaśnienie, którego nie

chcemy umieszczać w nawiasach. Wówczas należy umieścić je w przypisie.

tekst \footnote{przypis} głównyteksta główny

a przypis

ZakończenieMamy nadzieję, że zebranie w jednym artykule informacji o modyfikacjach

składu tekstu będzie dobrym uzupełnieniem artykułów o pisaniu pracy magi-sterskiej.

numer 18 – 2008 26

Page 27: Licencjewolnegoświatadraco.org.pl/wp-content/uploads/Dragonia/dragonia_nr18.pdf · 2017. 9. 3. · Wstępniak DrodzyCzytelnicy Z nowym rokiem nowym krokiem! Nowo-roczna zmiana w

Hardware

MacBook Pro i LinuxKatarzyna Myrek

Niedawna ankieta w serwisie MyApple.pl potwierdziła, ze liczba użytkow-ników komputerów firmy Apple w Polsce rośnie. Komputery te są zazwyczajdopracowane, odporne na uszkodzenia i posiadają bardzo elegancki design.Ich cena systematyczne maleje, dzięki temu widok iBooka, PowerBooka czyMacBooka już tak nas nie dziwi.

Główną dewiza Apple’a jest sformułowanie Out of the box. Oznacza to, zegdy kupujemy komputer, możemy go wyjąc z pudelka i zacząć normalnie z nie-go korzystać. Całe oprogramowanie jest preinstalowane przez producenta.

Applowski system operacyjny Mac OS X bazuje na Unixie. Wiele narzę-dzi zaczerpnięto od FreeBSD. Jednak zdażają się sytuacje, gdy potrzebujemyzainstalować Linuksa bądź (co gorzej dla niektórych) Windowsa. W moim wy-padku była to po części ciekawość i tęsknota za widokiem KDE. Tak, wiem,że KDE 4.0 można będzie skompilować na Darwinie, oraz ze istnieje fink. . .ale to nie to samo. Dlatego postanowiłam przeznaczyć część swojego wolnegoczasu na odnalezienie distra takiego, które będzie wymagało mało czasu do„zbudowania” i będzie się z niego wygodnie korzystało.

Metoda, którą zaraz przedstawię została przetestowana na MacBooku Proz konfiguracją:— CPU: Core 2 Duo 2,16 GHz,— RAM: 1GB,— Karta graficzna: Ati Radeon XT 1600,— Dysk twardy: 120GB,— Karta sieciowa: Marvel Yukon E8053 10/100/1000BASE-T Gigabit Ethernet,— Wifi: AirPort Extreme 54Mb/s (802.11g) [Atheros],— Bluetooth: 2.0+EDR built-in,— Kamerka: iSight video camera.

Na początku roku 2006 Apple zmieniła rodzinę procesorów, z którychkorzystają wszystkie nowsze jej produkty. Starsze modele były wyposażonew procesory z rodziny PowerPC. Uniemożliwiało to zainstalowanie systemówWindows, a wybór miedzy dystrybucjami Linuksa też był ograniczony. Jednymz najbardziej popularnych distro na PPC jest Debian. Jednakże, po instalacji te-go systemu, występuje problem z ograniczoną ilością gotowych pakietów na tąplatformę. . . i wszystko trzeba sobie zapewnić samemu (czyli jest to zabawa wstylu Gentoo). Procesory Core 2 Duo otwierają więc dla Maców wielki kufer in-nych systemów operacyjnych. Od teraz, mitem będzie stwierdzenie, że na Macu

nie da się pograć w gry (potwierdzam działanie najnowszego Need for SpeedPro Street!), pracować na MS Word czy tez szybko i bezstresowo zainstalowaćLinuksa.

Przygotowanie do instalacji/uruchomienia Linuksa nakomputerze Mac

Posiadany przeze mnie model MacBooka Pro ma dysk o pojemności 120GB.Nie jest to bynajmniej rekord, ale do postawienia dwóch, czy nawet trzechsystemów operacyjnych wystarczy. Pierwsza rzeczą, jaką musimy zrobić, toprzepartycjonować dysk. Jeśli chcemy ustawić triple boot (Mac OS X, Linux,Windows), należy dla każdego przeznaczyć po jednej partycji. Na szczęście,Leopard (Tiger też) ma już wbudowane automatyczne defragmentowanie pli-ków, wiec możemy bezproblemowo zmienić wielkość systemowej partycji. Jeślijednak chcemy być pewni, że nie utracimy żadnych plików, można użyć apli-kacji iDefrag.

PartycjonowanieW Tigerze musimy mieć aktywne konto roota. Otwieramy terminal i wyko-

nujemy polecenie:

diskutil list

Ukaże nam się lista partycji. Domyślnie powinny być dwie: jedna dla EFIi jedna dla systemu. Po zapoznaniu się z ilością dostępnego miejsca, wykonu-jemy polecenie:

sudo diskutil resizeVolume disk0s2 XX

gdzie za XX wpisujemy, jaką wielkość ma mieć teraz partycja systemowa. (Uwa-ga! Przed wykonaniem polecenia, należy sprawdzić, czy system na pewno jestzainstalowany na partycji 2.)

Istnieje dość dobra nakładka graficzna na diskutil - DiskUtility. Aby ją uru-chomić z możliwością zmiany rozmiaru i układu partycji, bootujemy komputerz płyty instalacyjnej systemu, potem wykonujemy wszystko graficznie. Niestety,jest to czasochłonna metoda. Zajmuje średnio 2–3 razy dłużej, niż ta pierwsza.

numer 18 – 2008 27

Page 28: Licencjewolnegoświatadraco.org.pl/wp-content/uploads/Dragonia/dragonia_nr18.pdf · 2017. 9. 3. · Wstępniak DrodzyCzytelnicy Z nowym rokiem nowym krokiem! Nowo-roczna zmiana w

Hardware

Bootowanie i rEFItJako że Maci nie mają programu do edycji ustawień BIOSu, zabootowanie

systemu z USB jest kłopotliwe. Aby to zrobić, należy posiadać specjalna płytkę,która to umożliwia. Jej obraz jest dostarczany tylko w komplecie z dystrybucjaMandriva. Dzięki temu, podczas bootowania można używać programu rEFIt,przytrzymać klawisz alt lub menu na pilocie, aby uruchomić system z pendri-ve’a.

Testowane distra— Sabayon,— Debian,— Mandriva Xtreme 2 wersja USB 4GB,

Wyniki po okołu miesiącu testów:— Mandriva,— Debian,— Sabayon.

SabayonZaczynając od wielkiego przegranego – Sabayona. System w ogóle nie był

w stanie się zainstalować wspólnie z innym systemem Linuksowym. Dokład-niej oznacza to, że niemożliwy był triple boot oraz trzeba było ponownie syn-chronizować układ partycji przez menagera w rEFIcie. A jeśli system już sięuruchomił, nie wykrywał w ogóle karty sieciowej, wifi ani klawiatury. Nieste-ty, jest to system, który przysporzy zbyt wiele problemów, a przyniesie zerokorzyści.

Jego krewniak, Gentoo, spisuje się jednak o wiele lepiej. Ale przy instalacjitekstowej i specjalnej kompilacji kernela (według wiki systemowego).

Więcej na temat MacBooka Pro (niestety, inne linie Maców maja zupełnieinny sprzęt i ten poradnik na wiele się nie zda posiadaczom np. iMacow)http://www.odi.ch/prog/macbookpro/index.php.

DebianInstalacja przebiegła bezproblemowo, jednak nie została wykryta karta sie-

ciowa, dźwiękowa oraz wystąpiły problemy z Xem). Jednakże, po około dwóchgodzinach doprowadziłam system do stanu używalności przy KDE.

numer 18 – 2008 28

Page 29: Licencjewolnegoświatadraco.org.pl/wp-content/uploads/Dragonia/dragonia_nr18.pdf · 2017. 9. 3. · Wstępniak DrodzyCzytelnicy Z nowym rokiem nowym krokiem! Nowo-roczna zmiana w

Hardware

MandrivaEdycja Xtreme 2 USB zdeklasowała rywali. Po zabootowaniu się komputera,

większość sprzętu została wykryta poprawnie (nie działa tylko AirPort, ale tojest problem wszechobecny we wszelkich dystrybucjach).

Dostarczona przez Mandrive dystrybucja jest zainstalowana na pendrive’ie4GB. Jak zwykle, jest on podzielony na 2 partycje, z czego do bezpośredniejdyspozycji mamy ok. 2GB.

[olivia@localhost ~]$ df -TSystem plików Typ rozm. użyte dost. %uż. zamont. nanone unionfs 2,9G 1,3G 1,6G 45% //dev/sda1 vfat 975M 20M 955M 3% /mnt/Share

WyglądDruga wersja Xtreme prezentuje się wprost genialnie. Ciemny styl systemu

nie męczy nawet przy pracy w nocy, przy maksymalnym oświetleniu matrycy(w Makach można to regulować).

Rysunek 1. Domyślna tapeta systemu

Do podstawowego systemu została dodana superkaramba. Nie jest to w su-mie nic wielkiego, ale dla użytkownika systemów Windows jest to całkowita

nowość – oczywiście, jeśli nie miał przed tym Visty, która w Polsce chybanie jest zbyt popularna, z powodu ogromnych wymagań sprzętowych. Nieste-ty, Applowskie czujniki temperatury nie zostały poprawnie wykryte, przez cosekcja temperatura jest pusta (widoczne są tylko opisy).

Wykrywalność sprzętuDźwięk

W Mandrivie, już od pierwszego uruchomienia karta muzyczna jest po-prawnie wykrywana, działają dźwięki w KDE. Duża ilość wolnego miejsca napendrivie pozwala na wgranie dużej ilości muzyki. Dodatkowo, dźwięk niebrzmi sztucznie, co jest często słyszalne przy sterownikach applowskich dlaVisty. Jest to przydatne dla ludzi, lubiących pracować przy dobrze brzmiącejmuzyce.

Rysunek 2. Domyślnym playerem w Mandrivie 2008 Xtreme jest amarok 1.4.3

Rozdzielczość i karta graficznaJak to zawsze bywa przy Radeonach, trzeba samodzielnie zmienić sterow-

nik na inny, aby uzyskać standardowa rozdzielczość (1440x900). Aby to zrobić,należy:1. Wejść do Konfiguracji komputera.

numer 18 – 2008 29

Page 30: Licencjewolnegoświatadraco.org.pl/wp-content/uploads/Dragonia/dragonia_nr18.pdf · 2017. 9. 3. · Wstępniak DrodzyCzytelnicy Z nowym rokiem nowym krokiem! Nowo-roczna zmiana w

Hardware

2. Wejść w zakładkę sprzęt.3. Uruchomić harddrake (Przegląd i konfiguracja systemu).4. W zakładce karta graficzna kliknąć na ‘uruchom narzędzie konfiguracyjne.5. W polu karta graficzna wybrać: ATI Radeon (fglrx); Monitor: Flat panel

1024x768; Rozdzielczość: 1440x900 24 bpp.6. Kliknąć zakończ. System automatycznie zapyta nas, czy chcemy się przelo-

gować, aby zastosować zmiany.

GładzikJak wiadomo, Gładzik Macowy ma tylko jeden przycisk (oczywiście ma też

inną nazwę - angielską - Trackpad, zamiast touchpad). Dlatego nie mamy moż-liwości użycia „drugiego” przycisku. Aby zmienić ustawienia, trzeba edytowaćxorg.conf lub po prostu podłączyć mysz zewnętrzną.

KlawiaturaNowsza seria MacBooków Santa Rosa ma mieć prawy klawisz Alt. Niestety,

nie miałam okazji sprawdzić jeszcze tego, iSpoty mają do tej pory na wysta-wie jedynie starsze modele. Ale, na podstawie zdjęć najnowszej klawiaturyzewnętrznej Apple można potwierdzić tą informacje. Nie działa też podświe-tlenie klawiszy, ale na to chyba już nie ma lekarstwa. Chociaż w Debianie niechciało ono w ogóle zgasnąć, nawet w ciągu dnia. Bardzo to przeszkadzałoi niepotrzebnie skracało czas pracy na baterii.

KernelNiestety nie jest on najnowszy:

[olivia@localhost ~]$ uname -aLinux localhost 2.6.17-5mdvlegacy #1 SMP Wed Sep 13 14:40:00 EDT 2006i686 Intel(R) Core(TM)2 CPU T7400 @ 2.16GHz GNU/Linux

WifiKarta Wifi nie została wykryta. Ale ci bardziej wytrwali na pewno skierują

swój wzrok na MadWifi.

Praca na baterii i chłodzenieMacBook wytrzymał bez dodatkowego zasilania około godziny, mocno się

grzejąc. Przy oglądaniu Youtube’a włączyły się oba wiatraczki i to na maksy-malną prędkość, było je słychać.

PodsumowanieNajodpowiedniejszym Linuksem dla komputerów Mac wydaje się Mandri-

va oraz jej pochodne. Najlepiej w moim mini-teście wypadła wersja MandrivyXtreme 2 USB. Na szczęście, większa część boksu, to cena samego pendrive’a.Sam system kosztuje tylko 70 zł.

Uwaga!Artykuł został napisany na podstawie doświadczeń własnych autora. Litery,

oznaczające partycje oraz konfiguracja sprzętową mogą się różnić w zależnościod modelu. A co z tym idzie, inne problemy mogą wystąpić nawet w tej samejserii Maców kupionych w innym czasie.

Wyniki konkursuZ nadesłanych odpowiedzi wybraliśmy zgodnie z re-gulaminem konkursu następujące osoby, które otrzy-mują nagrody:

Irena Grajcarek z Katowic – zestaw Novell-a,

Przemysław Kawa z Tarnowa – dystrybucja Xandros,

Marcin Borkowski z Sierpca – Box Xtreme II.

Gratulujemy!

Nagrody zostały wysłane pocztą.

numer 18 – 2008 30

Page 31: Licencjewolnegoświatadraco.org.pl/wp-content/uploads/Dragonia/dragonia_nr18.pdf · 2017. 9. 3. · Wstępniak DrodzyCzytelnicy Z nowym rokiem nowym krokiem! Nowo-roczna zmiana w
Page 32: Licencjewolnegoświatadraco.org.pl/wp-content/uploads/Dragonia/dragonia_nr18.pdf · 2017. 9. 3. · Wstępniak DrodzyCzytelnicy Z nowym rokiem nowym krokiem! Nowo-roczna zmiana w

Programowanie

Z dzienniczka administratora – część pierwszaJan Koprowski

Dzienniczek3 Styczeń 2007 roku

Wczoraj znowu zmieniałem coś na koncie użytkownika root i nie pamiętamco to było. Szlag :/ Muszę zacząć logować to co robię, bo inaczej zginę w tymsystemie.

johny@falcon:~% su -Password:root@falcon:~# mkdir logroot@falcon:~# script log/johny-24.11.2007.txtScript started, file is log/johny-24.11.2007.txtroot@falcon:~# userdel malinaroot@falcon:~# userdel lukaszroot@falcon:~# userdel krzysroot@falcon:~# tail /etc/passwd..root@falcon:~# [CTRL]+[D]Script done, file is log/johny-24.11.2007.txt

Trzeba kazać robić to wszystkim chłopakom, svn to za mało.

Loguj wszystko, co robisz, w konsoli na koncie użytkownika root – później zapro-centuje to mniejszą ilością czasu, poświęconego na ustalanie co zrobiło się źle, gdycoś przestanie działać, szczególnie, jeżeli w systemie jest większa ilość adminów. Możewarto rozważyć nawet umieszczenie „scriptu” w plikach startowych powłoki konta root.

10 Luty 2007 rokuTrzeba sprawdzić, jak idą prace nad skryptami administracyjnymi:

johny@falcon:~% svn co svn://www.serwer.pl/projekty/nimda/trunk nimda..johny@falcon:~% cd nimdajohny@falcon:~/nimda% less nimda.cpp#include <iostream>^M

#include <string>^M#include "script.h"^M#include "credentials.h"^M#include "system.h"^M

using namespace std;^M..switch (script->getFirstParam()) {^Mcase ADD_SYSTEM_ACCOUNT: {^Mif (credentials->check()) {^Mtry {^Msystem->add_system_account(script->getParams());^M}^Mcatch (system_error e)^M{ cout << "Exception: " << e->getErrorMessage() << "\n"; \\

exit SYSTEM_ADD_ACCOUNT_ERROR;^M}^Mcatch(...)^M{ cout << "Exception: " << e->getErrorMessage() << "\n"; \\

exit SYSTEM_UNKNOWN_ERROR;^M}^M}^M

Bisior znowu bawił się jakimś *DOS-owym edytorem. . .

johny@falcon:~/nimda% dos2unix *

I dlaczego Ci ludzie nie robią wcięć?!

johny@falcon:~/nimda% indent *.cpp *.hjohny@falcon:~/nimda% cd rubyjohny@falcon:~/nimda/ruby% cat nimda.rb..johny@falcon:~/nimda/ruby% vim nimda.rb:filetype indent on

numer 18 – 2008 32

Page 33: Licencjewolnegoświatadraco.org.pl/wp-content/uploads/Dragonia/dragonia_nr18.pdf · 2017. 9. 3. · Wstępniak DrodzyCzytelnicy Z nowym rokiem nowym krokiem! Nowo-roczna zmiana w

Programowanie

:set smartindent shiftwidth=4gg=G:wq

Muszę im napisać, żeby zmieniali tabulatory na spacje. Kudłaty, siedząc naMac-u, musi dostawać białej gorączki.

indent nadaje się – tak naprawdę – tylko do robienia wcięć do programów pisanychw C. Dodatkowo styl, w jakim formatuje kod, mnie na przykład w ogóle nie odpowiada.Znacznie lepiej, moim zdaniem i pod moje gusta – robi to vim.

Radzę poczytać o wcięciach w rozdziale 30.2 i dalszych pomocy programu vim.Zajrzyj też do manuala programu indent.

Jeżeli istnieje prawdopodobieństwo, że kiedykolwiek z naszym programem będziepracował ktoś na MAC-u, zamieniajmy znaki tabulacji na spacje. Będzie to dla tejosoby ogromnym ułatwieniem (u mnie jeden tabulator to cztery spacje).

21 Luty 2007 rokuTrzeba w końcu przejść na unicode :) i wziąć się za te źle zakodowane pliki.

Zobaczmy.

johny@falcon:~projekt/% iconv -f iso8859-2 -t utf-8 *//@todo: NaprawiĂ kodowanie we wszystkich moĚźliwych miejscach.

nie to nie iso8859–2

johny@falcon:~projekt/% iconv -f iso8859-1 -t utf-8 *//@todo: NaprawiĂÂ kodowanie we wszystkich moĂÂźliwych miejscach.

to również nie iso8859–1

johny@falcon:~projekt/% iconv -f cp1250 -t utf-8 *//@todo: Naprawić kodowanie we wszystkich możliwych miejscach.

bingo :)

johny@falcon:~projekt/% vim:set fileencoding=utf-8:set encoding=cp1250:wq

iconv jest prostym narzędziem. Czasami jego funkcjonalność zupełnie wystarcza.Jednakże, znacznie „wygodniejszym” narzędziem (zależnie od gustów) może okazać sięvim.

W vim występują zmienne, odpowiedzialne za kodowanie. Powinno się wiedziećo trzech z nich:

fileencoding – zmienna mówi o tym, jak obecnie kodowany jest plik (tak powinno sięją ustawić),

encoding – ustawiasz, jak chcesz, aby plik był kodowany. Podczas zapisywania dokonasię konwersja pomiędzy fileencoding a encoding lub pomiędzy encoding a fileenco-ding.

termencoding – ustawia kodowanie terminala. Jeżeli ustawisz je źle, to pomimo tego,że plik będzie kodowany poprawnie, w terminalu zobaczysz krzaczki.

Poczytaj o zmiennej encoding w vim.

1 Marca 2007 rokuBajbus narzekał, że mu coś na stronce „nie chodzi”. Sprawdźmy, co może

być nie tak.

root@falcon:~# cd /var/log/apache2root@falcon:~# splitvtroot@falcon:~# tail -f access_log[CTRL]+[W]root@falcon:~# tail -f error_log

Jak to była jego stronka. . . http://www.serwer.pl/ bajbus/ I zobaczmy co tusię dzieje w logach. . .

Używaj +verb+splitvt+ jeżeli potrzebujesz „dwóch terminali” na jednym ekraniena przykład: u góry REDME.txt albo INSTALL.txt na dole, robisz krok po krokuinstalację korzystając z opisu zawartego w pliku.

tail -f przyda się zawsze tam, gdzie chcesz obserwować na bieżąco zmiany dopi-sywane do pliku. Będziesz go używał prawdopodobnie do monitorowania pliku logów.Aby zamknąć spiltvt wybieramy [CTRL]+[o] [q] [ENTER]

9 Marca 2007 rokuUpgrade skończony :) Teraz zrobię jeszcze restart, żeby „łyknęły” go pliki

konfiguracyjne.

root@falcon:~# wallZa piętnaście minut nastąpi restart serwera związany \\z uaktualnieniem systemu. Proszę się na niego przygotować.[ENTER] [CTRL]+[d]root@falcon:~# sleep 15m ; reboot

Nie ma nic bardziej denerwującego, niż zmiany na serwerze, które mogą spowo-dować, że coś „przestanie działać”. Każdy upgrade pakietów, każdy restart, przerwa

numer 18 – 2008 33

Page 34: Licencjewolnegoświatadraco.org.pl/wp-content/uploads/Dragonia/dragonia_nr18.pdf · 2017. 9. 3. · Wstępniak DrodzyCzytelnicy Z nowym rokiem nowym krokiem! Nowo-roczna zmiana w

Programowanie

w działaniu, każda zmiana, która może wpłynąć na zmianę sposobu pracy serwe-ra, powinna być ogłoszona z kilkutygodniowym wyprzedzeniem oraz niedługo przedwprowadzeniem zmian. Użytkownik ma prawo wiedzieć, że coś może działać „nie tak”lub nie będzie działało wcale. Krótka notka uratuje nas przed irytacją zaskoczonychużytkowników i utratą klientów.

16 Marca 2007 rokuDostałem nowe konto shellowe! Super! Tylko po co pamiętać kolejne hasło?

johny@falcon:~% ssh-keygen -t dsaGenerating public/private dsa key pair.Enter file in which to save the key (/home/johny/.ssh/id_dsa):Enter passphrase (empty for no passphrase):Enter same passphrase again:Your identification has been saved in /home/johny/.ssh/id_dsa.Your public key has been saved in /home/johny/.ssh/id_dsa.pub.The key fingerprint is:54:71:54:c3:97:1e:12:70:fd:ee:3c:e9:4b:0b:1f:09 johny@falconjohny@falcon:~% cd .sshjohny@falcon:~/.ssh% scp ./id_dsa.pub \\

[email protected]:~/.ssh/falcon.pubPassword:johny@falcon:~/.ssh% ssh [email protected]:johny@nowyserwer:~% cd .sshjohny@nowyserwer:~/.ssh% cat falcon.pub >> authorized_keysjohny@nowyserwer:~/.ssh% chmod 0700 .johny@nowyserwer:~/.ssh% chmod 0600 authorized_keys falcon.pub[CTRL]+[d]johny@falcon:~/.ssh% ssh [email protected]@nowyserwer:~%

I po haśle!

Kiedy jesteśmy proszeni o podanie hasła podczas generowania klucza, nie wpisujemynic. Od teraz systemy będą się identyfikować podczas logowania na podstawie klucza(publicznego – prywatnego). Jeżeli używasz klucza bez hasła NIGDY nie zostawiajotwartej sesji SSH, nawet tej zabezpieczonej poleceniem blokującym konsolę – możnato sprytnie obejść.

22 Marca 2007 rokuNa nowym serwerze postawili nowe KDE! Warto wypróbować!

Prawdziwa konsola – terminal, a nie pseudo-terminal:

johny@falcon:~% xinit -- :1..johny@falcon:~% ssh [email protected]@nowyserwer:~% startkde

No, i mamy zdalne KDE po SSH :)Polecenie xinit /usr/bin/xterm - :1 może zachowywać się różnie – w za-

leżności od zawartości plików konfiguracyjnych. Między innymi, ~.xinitrxi ~.xsession. Tutaj chodziło o uzyskanie efektu x-term, a w „czystych” X-ach bezżadnego dodatkowego menadżera.

Możemy dużo lepiej operować uruchamianiem zdalnych X-ów (metoda przez SSHjest wolna). Osoby zainteresowane tematem powinny zapoznać się z poleceniem xhost.

Dodatkowo, klient i serwer ssh w plikach konfiguracyjnych muszą mieć ustawionąopcję:

ForwardX11 yes

A firewall musi przepuszczać port 6000.Często możemy uruchamiać zdalnie okna pojedyńczych aplikacji, a nie tylko całe

menadżery. W tym celu należy zapoznać się bliżej ze zmienną DISPLAY. Ciężko jestpodać recepturę na „zdalne X-y”, ponieważ bardzo wiele zależy od konfiguracji urzą-dzeń sieciowych, przepuszczanego ruchu w sieci oraz ustawień samego systemu Linux,więc podana przed chwilą lista kroków może wymagać małych modyfikacji u każdegoz Was.

1 Kwietnia 2007 rokuJakiś script kiddie znowu próbował włamać się do systemu. Muszę zablo-

kować ludziom dostęp do kompilatorów i interpreterów:

root@falcon:~# cat >> /etc/profilealias perl="Nie kombinuj!"alias g++="Tutaj nie kompilujemy!"alias gcc="Pamiętaj! Jedenaste - nie kompiluj!."alias ruby="Gdzie z łapami!"[CTRL]+[d]

I mniej doświadczeni użytkownicy z głowy ;)„Zabezpieczenie” to bardzo łatwo obejść (podając całą ścieżkę do programu), ale

jeżeli usuniesz dodatkowo katalogi zawierające kompilatory ze ścieżki PATH, to za-bezpieczysz się przed włamami do systemu dokonywanymi z uporem maniaka przez

numer 18 – 2008 34

Page 35: Licencjewolnegoświatadraco.org.pl/wp-content/uploads/Dragonia/dragonia_nr18.pdf · 2017. 9. 3. · Wstępniak DrodzyCzytelnicy Z nowym rokiem nowym krokiem! Nowo-roczna zmiana w

Programowanie

kompilujących wszystkie możliwe exploity ludzi, nie mających właściwie pojęcia o Li-nuksie.

7 Kwietnia 2007 rokuChłopaki znowu grzebali na koncie roota i nie wiem dlaczego teraz nie

działa apache :/. Coś trzeba z tym zrobić.

svnadmin create --fs-type fsfs /mnt/backup_disk/administrationsvn import /etc file:///mnt/backup_disk/administration/etc \\-m ,,Initial Import"

rm -fr /etcsvn co file:///mnt/backup_disk/administration/etc /etc

I z głowy. Muszę tylko dopilnować, żeby „commitowali” wszystkie zmiany jaknależy.

Trzymanie swoich plików konfiguracyjnych w systemie kontroli wersji jest naprawdębardzo dobrym pomysłem, szczególnie, jeżeli skrzętnie komitujesz najdrobniejszą zmia-nę. Pozwala uratować przed „nie pamiętam co zmieniałem – a teraz system nie działa”.Można używać innego systemu kontroli wersji (np. darcs, git, bazar). Zabezpiecz dostępdo repozytorium SVN hasłem i daj do niego dostęp tylko rootowi.

13 Kwietnia 2007 rokuDziś pracowaliśmy wspólnie na screenie. Gadu-Gadu padło, skype zaczął

się wieszać i nie mieliśmy jak gadać. Na szczęście Orek wpadł na otwarciew jednym z okien screena małego czatu:

root@falcon:~# cat > /dev/nullMamy czat!Ano :)

Istnieją lepsze „czaty” takie jak talk czy ytalk. Musimy tylko ustawić odbieraniekomunikatów (mesg y). Możemy też pisać do siebie poleceniem write.

PodsumowanieUżywaj błyskotliwych komend. Łącz je w potoki i strumienie tak, abyś uzy-

skiwał zawsze zamierzony przez siebie efekt. Czasami użycie ich może byćkompletnie „nietypowe”, a przy całej swojej oryginalności stanowić szaleniesprytne rozwiązanie problemu. Bardzo dobrze jest poznać mechanizmy Linuk-sa i jego polecenia. Czytaj strony manuali. Wiele z nich jest dostępnych popolsku. Rozmawiaj z innymi i staraj się jak najwięcej używać konsoli. Spróbujwysłać spod niej e-maila. Wczytać źródła jakiejś strony internetowej do pliku.

Porozmawiać na Gadu-Gadu albo Jabberze. Skonfigurować sobie pod konsoląIRC-a i czat Onetu. To bardzo rozwija. Wiele można nauczyć się pisząc skryptysystemowe w bashu (albo innym języku powłokowym) czy też – w końcu –myszkując po „buildach” takich systemów jak Slackware czy KateOS. Spróbujzamienić jednym poleceniem we wszystkich plikach w danym drzewie katalo-gów słowo „Mama” na „Tata” albo wszystkie znaki małe na duże i na odwrót.Nawet tak proste ćwiczenia pozwalają nam nauczyć się bardzo wiele o syste-mie. Mi bardzo pomogła książka Biblia Systemu UNIX V Polecenia i programyużytkowe oraz UNIX Administracja systemu. Chociaż żadna z nich, szczególniepierwsza, nie jest młoda, zawierały one szalenie użyteczne informacje. Dlatego,jeżeli masz gdzieś kurzącą się starą książkę o UNIXie, zajrzyj do niej. Pomimoswoich lat kryje w sobie informacje, które być może Cię zainteresują.

Co będzie w drugiej części tego artykułu? To już zależy tylko od Ciebie! Tak,nie pomyliłem się – od Ciebie! Do Ciebie należy napisanie drugiej części tegoartykułu. Jeżeli w codziennej pracy z Linuksem, używasz komend, które mogąkomuś ułatwić życie lub myślisz, że znasz jakieś ciekawe zakamarki, które kryjąw sobie narzędzia Linuksa, napisz o tym. Niech będzie to tylko jeden dzień, aleto właśnie on może sprawić, że Pingwinek stanie się dla kogoś przyjaźniejszy.Często nie zdajemy sobie nawet sprawy, że to, co wykorzystujemy, dla kogośinnego może być zbawieniem myśląc: Nie wiedziałeś, że tak można? To przecieżnormalne! Dlatego nie myśl, że napiszesz o banałach, że to przecież wszyscywiedzą! Być może Twoje zdolności okażą się dla kogoś bardzo użyteczną wie-dzą. Zarazem proponuję rozwiązać kilka zagadnień, które pojawiły się w treścipodsumowania. Być może to one staną się podstawą do dalszych poszukiwańi zainspirują Cię do napisania kolejnego artykułu.

Jak łatwo zauważyć, artykuł nie stanowi „pełnego kompendium” wiedzy.Nie tłumaczę czym jest SVN, co robić, gdy jakiś element nie zadziała, czyjak działają poszczególne polecenia. Być może ten stan artykułu sprawia, żewydaje się on artykułem dla bardziej zaawansowanych użytkowników. Tymsamym chcę czytelników zachęcić, aby sami w granicach własnych możliwościzapoznali się z elementami, z którymi jeszcze się nie zetknęli. Często wiedzazdobyta samodzielnie pozwala na najlepsze dla siebie zrozumienie tematu,którego nie poznałoby się dzięki żadnemu tłumaczeniu. Mam więc nadzieję,że zainspirowany nim poświęcisz choć troszkę czasu na poznanie nowych,nieznanych Ci, a podpatrzonych w tym artykule narzędzi. Jeżeli tak, to bardzosię z tego cieszę. Powodzenia!

numer 18 – 2008 35

Page 36: Licencjewolnegoświatadraco.org.pl/wp-content/uploads/Dragonia/dragonia_nr18.pdf · 2017. 9. 3. · Wstępniak DrodzyCzytelnicy Z nowym rokiem nowym krokiem! Nowo-roczna zmiana w

Programowanie

Bash, część 5Rafał Topolnicki

Zapraszam do lektury kolejnej częścikursu basha. Tym razem zajmiemy się pro-cesami oraz obsługą parametrów naszychskryptów.

ProcesyTa część może być interesująca dla wszystkich

użytkowników systemów Uniksowych. Wieloza-daniowość wydaje się czymś oczywistym z punktuwidzenia zwykłego użytkownika. W rzeczywisto-ści, jeżeli pracujemy na komputerze wyposażonymw jeden procesor (rdzeń), w danej chwili przetwa-rzany jest tylko jeden program, a jądro systemu– w oparciu o priorytety – decyduje o kolejnościdostępu i czasu wykonywania się poszczególnychprocesów. W momencie utworzenia nowego proce-su, system automatycznie nadaje mu numer, zwa-ny identyfikatorem procesu – PID. W tym samymczasie w systemie może działać maksymalnie je-den proces o danym identyfikatorze. Gdy proceszakończy swe działanie, jego numer zostaje zwol-niony i po pewnym czasie może być wykorzystanyponownie, na potrzeby innego procesu.

Oprócz PID (Process ID) istnieje również jesz-cze jednak liczba charakteryzująca proces – jest niąPPID (Parent Process ID) – identyfikator rodzica,czyli procesu, który utworzył dany proces. Każ-dy proces, z wyjątkiem pierwszego uruchamiane-go w systemie – o numerze 0 – posiada swojegorodzica (proces nadrzędny). Wyróżnionym proce-sem jest również proces o numerze 1 – init.

Każdy proces może tworzyć inne procesy, swo-je dzieci i dobrym zwyczajem jest zamknąć (brzmiładniej niż „zabić”) je wszystkie przed zakończe-niem działania. Gdy jednak się tak nie stanie, czyliz różnych przyczyn rodzić zakończy swe działanie

przed czasem i nie zdąży pozamykać swoich pro-cesów potomnych, te pozostaną sierotami, zaś sys-tem przydzieli im jako rodzica właśnie proces init.Gdy wyłączamy komputer, zamykane są po koleiwszystkie procesy, a ostatnim z zatrzymywanychjest właśnie init.

Jeżeli zakończymy polecenie znakiem „&”, po-włoka zwróci w nowej linii identyfikator utworzo-nego procesu, a sam proces odeśle w tło. Przykła-dowo, działanie polecenia find jest czasochłonne,dlatego odsyłając go w tło możemy pracować da-lej bez czekania na zakończenie działania. Wynikprzekierujemy do pliku:

$ find (parametry) > wynik.txt &[1] 2619$

W tym wypadku identyfikatorem jest 2619. Liczba[1] jest to z kolei numer zadania przypisany przezpowłokę. Numer zadania odnosi się więc jedyniedo zadań drugoplanowych, działających w bieżą-cej powłoce, w przeciwieństwie do identyfikatoraprocesu, który dotyczy wszystkich procesów ak-tualnie działających w systemie. Pomiędzy zada-niami działającymi w tle możemy się przełączaćza pomocą poleceń fg i bg. Włączmy więc jeszczertorrenta:

$ rtorrent &[2] 2701$

Aby wyświetlić listę procesów działającychw tle, używamy polecenia jobs, którego wynikw tym wypadku będzie następujący:

[1]- Running find (parametry) > wynik.txt[2]+ Stopped rtorrent

find działa w tle (o czym świadczy stan Running),rtorrent natomiast jest zatrzymany i czeka na użyt-kownika. Znak „+” za numerem zadania oznacza,że rtorrent jest ostatnim odesłanym w tło procesem,znak „-” natomiast, że find przedostatnim.

Opcja -l polecenia jobs zwróci dodatkowoidentyfikatory procesów, -r zawęzi wynik jedyniedo procesów aktualnie wykonywanych (running),natomiast -s do tych zatrzymanych i oczekującychna użytkownika – czyli na wprowadzenie znakówz klawiatury.

jobs posiada jeszcze jeden parametr: -x, powo-dujący wykonanie polecenia, do którego możnaprzekazać argument w postaci identyfikatora pro-cesu, tak więc:

jobs -x echo %2 >> proc.txt

Dopisze do pliku proc.txt linijkę 2701, czyli iden-tyfikator rtorrenta. Gdy wyszukiwanie dobiegniekońca, w trzeciej kolumnie pojawi się słowo Done.Za pomocą kombinacji [Ctrl]+[Z] możemy odesłaćzadanie pierwszoplanowe w tło. Do odsyłanegoprocesu zostanie wysłany sygnał TSTP, ale o tympóźniej. Zadanie przywracamy za pomocą fg:

$ fg %numer_zadania

Tak więc fg %2 przywróci rtorrenta. Można rów-nież odwołać, się do nazwy programu:

$ fg %find

Przy takim jednak odwołaniu wymagane jestwskazane nazwy, która jednoznacznie wskaże pro-ces. Użycie fg bez parametru przywróci ostatnieodesłane zadanie.

Listę działających w systemie procesów wyge-nerujemy za pomocą polecenia ps. Jest to jedenze szczególnie często używanych programów, co

numer 18 – 2008 36

Page 37: Licencjewolnegoświatadraco.org.pl/wp-content/uploads/Dragonia/dragonia_nr18.pdf · 2017. 9. 3. · Wstępniak DrodzyCzytelnicy Z nowym rokiem nowym krokiem! Nowo-roczna zmiana w

Programowanie

przyczyniło się do powstanie licznych odmian, róż-nie formatujących wynik i przyjmujących inne pa-rametry. Wyróżniamy dwie konwencje – System V(Linux) oraz BSD. My skupimy się na pierwszejz nich. Zgodnie z nią, najczęściej używane opcjeto:-e – wyświetla wszystkie procesy uruchomione

w systemie,-l – więcej szczegółów,-f – szczególnie użyteczny, wyświetla procesy

łącznie z ich argumentami.Aby uzyskać więcej informacji na temat zasobów(zużycia procesora, pamięci) należy posłużyć sięprogramem top. Ponieważ niewiele ma on wspól-nego z bashem, pozostaje odesłać zainteresowa-nych do dokumentacji lub pod adres [1] gdzie znaj-duje się wiele cennych informacji – nie tylko o pro-gramach top i ps.

Z działającymi procesami można się porozu-miewać, wysyłając do nich sygnały. Robi się toprzeważnie w sytuacji, gdy proces zachowuje sięniezgodnie z oczekiwaniami lub „powiesił się”. Sy-gnał wysyłamy również naciskając [Ctrl]+[C], jaki [Ctrl]+[Z].

Każdy system obsługuje pewną ilość sygnałów(Linux 2.6 – 64), listę wszystkich poda kill -l. Zupeł-nie inną sprawą jest wiedza, co dany sygnał ozna-cza. Jak wiadomo, naciśnięcie [Ctrl]+[C] nakazujepowłoce przerwanie bieżącego programu, poprzezwysłanie do niego sygnału INT (ang. interrupt –przerwanie). Jest to łagodna prośba, która daje pro-gramowi możliwość posprzątania po sobie – czylinp. zamknięcia wszystkich otwartych plików lubzapisania edytowanych (patrz: edytory tekstu). Je-śli mimo to proces nie reaguje, można wysłać doniego za pomocą [Ctrl]+[\] silniejsze żądanie za-kończenia pracy – sygnał QUIT. Jeżeli i to nie po-maga, z procesem rozprawiamy się ostatecznie zapomocą sygnału KILL, który nakazuje systemowi(a nie samemu procesowi) zabić uciążliwy proces.Należy go stosować jednak jedynie w wypadku,

gdy dwie poprzednie metody zawiodły. Do wysy-łania sygnałów używamy wbudowanego poleceniapowłoki – kill, którego opcją jest numer lub nazwasygnału, a niezbędnym parametrem identyfikatorprocesu. Przykładowo,kill 2701

wyśle to rtorrenta domyślny sygnał TERM, działa-jący podobnie jak INT, a ten powinien zakończyćdziałania. Jeśli jednak się tak nie stanie, w ostatecz-ności „killujemy”, czyli wysyłamy sygnał KILL:kill -KILL 2701

Często można spotkać się z podawaniem nume-ru sygnału zamiast jego nazwy, dlatego zamienniemożna było zastosować:kill -9 2071

Za pomocą sygnałów możemy nie tylko zamy-kać procesy, ale również zatrzymywać je, a następ-nie przywracać, tak aby kontynuowały pracę odmiejsca gdzie skończyły. Przykładowo, załóżmy, żeskr.sh jest skryptem wykonującym jakieś mało waż-ne, lecz bardzo obciążające zadanie. Możemy za-trzymać taki skrypt za pomocą sygnału STOP:$ ps -e | grep skr.sh5723 pts/0 00:00:23 skr.sh$ kill -STOP 5723

Obciążenie momentalnie spadanie, a gdy zajdzietaka potrzeba, za pomocą sygnału CONT wznowi-my zadanie od punktu, gdzie zostało ono przerwa-ne. W wielu źródłach można spotkać się z poprze-dzaniem nazwy sygnału słowem SIG, tak więc po-wyższy przykład realizowany jest za pomocą wy-syłania sygnałów SIGSTOP i SIGCONT. Obie nota-cje są poprawne.

Zawodowy morderca . . .. . . czyli program killall. Jako parametr przyj-

muje nazwę procesu, a nie jego identyfikator. Ta-kie uogólnianie pociąga za sobą zabicie wszystkich

procesów, których nazwa pasuje do podanej jakoparametr.

killall obsługuje wyrażenia regularne oraz kilkaciekawych opcji takich jak:-u użytkownik – zabija wszystkie procesy danego

użytkownika,-i – pyta o potwierdzenie przed zabiciem.

Przechwytywanie sygnałówSkupmy się teraz na przechwytywaniu sygnału.

Co stanie się, gdy użytkownik naciśnie [Ctrl]+[C]podczas działania poniższego skryptu:while true; dodone

Program true jest ciekawym tworem; nie robi nicpoza zwróceniem kodu zakończenia 0. Dzięki te-mu, warunek pętli będzie zawsze spełniony i wy-konywać się ona będzie w nieskończoność. Analo-gicznie do true działa polecenie false. Naciśnięcie[Ctrl]+[C] zakończy działanie skryptu.

Mówiliśmy o tym, że niektóre programy prze-chwytują i przetwarzają docierające do nich sygna-ły, a na ich podstawie podejmują konkretne zada-nie. Do przechwytywania sygnałów będziemy uży-wać polecenia trap o następującej składni:trap polecenie sygnał1 sygnał2 (...)

Jeżeli zostanie odebrany sygnał znajdujący się napodanej liście sygnałów, to zostanie wykonane po-lecenie, które może być zarówno programem, jaki np. funkcją, a następnie skrypt będzie kontynu-ował wykonywane zadanie. Wszelkie pułapki (ang.trap – pułapka) należy – dla większej czytelności -zastawiać na początku skryptu, tak więc dodanie:trap "echo ’Nie zatrzymasz mnie’" INT

spowoduje wyświetlenie komunikatu, a nie za-mknięcie skryptu po naciśnięciu [Ctrl]+[C]. Jeżelipo odebraniu komunikatu ma zostać wykonanychkilka instrukcji, najlepiej utworzyć specjalną funk-cje:

numer 18 – 2008 37

Page 38: Licencjewolnegoświatadraco.org.pl/wp-content/uploads/Dragonia/dragonia_nr18.pdf · 2017. 9. 3. · Wstępniak DrodzyCzytelnicy Z nowym rokiem nowym krokiem! Nowo-roczna zmiana w

Programowanie

zatrzymanie{instrukcje na wypadek zatrzymania}trap zatrzymanie INT TERM

Zastawione pułapki będą obowiązywać rów-nież we wszystkich funkcjach obecnych w skryp-cie. Działa to też odwrotnie: zastawienie pułapkiw funkcji sprawi, że będzie ona obecna w całymskrypcie po wywołaniu tejże funkcji. Warto zazna-czyć, że dwukrotne zastawienie różnych pułapekna ten sam sygnał sprawi, że obowiązywać będzieostatnia z nich.

Widzimy więc, jak ogromny potencjał drzemiew umiejętnej obsłudze procesów. Kilka dodatko-wych zdań na ich temat poruszymy w kolejnej czę-ści kursu, będzie tam również między innymi nie-co o priorytetach i procesach równoległych.

Przetwarzanie parametrówW poprzednich częściach kursu wspominali-

śmy o parametrach, z którymi uruchomiony zostałskrypt. Wiemy, że są one przechowywane przezzmienne 0, 1, 2, 3, (. . . ) oraz, że istnieją zmiennespecjalne, takie jak na przykład: $* czy $# (liczbaparametrów).

Wiemy również, że zmienne o identycznych na-zwach pozwalają na uruchamianie funkcji z od-powiednimi argumentami. Problem zaczyna się,gdy chcemy, aby nasz skrypt obsługiwał wiele –w tym również opcjonalnych – parametrów (opcji).W zdecydowanej większości wypadków, po uru-chomieniu skryptu następuje sprawdzenie wszyst-kich jego opcji oraz przypisane odpowiednich war-tości zmiennym, które w reszcie skryptu sygnali-zują, iż został on uruchomiony z daną opcją, przy-kładowo:

if [$1 = "-v"]; thenverbose=1

Przeważnie opcja -v odpowiada za „gadatliwy”tryb pracy programu. Oznacza to, że program wy-

świetla więcej informacji, niż normalnie. W dalszejczęści powyższego skryptu wystarczy więc spraw-dzać, jaką wartość ma zmienna verbose i w zależ-ności od tego podejmować odpowiednie działania.Zupełnie innym rozwiązaniem jest analizowanieparametrów na bieżąco, co nie zawsze jest jednakmożliwe, a niewątpliwie prowadzi do rozrastaniai „zamydlania” kodu.

Wróćmy do naszego przykładu. Już na pierw-szy rzut oka widać jego niedoskonałość. Nie mo-żemy bowiem zakładać, że opcja -v będzie pierw-szą z wprowadzonych, mało tego: nie możemy za-kładać, że będzie ona w ogóle obecna. Nie wcho-dzi w grę sprawdzanie, czy każdej z zmiennych 1,2, 3 . . . nie zostały przypisane wszystkie z możli-wych opcji. Sprawa dodatkowo komplikuje się, gdyuwzględnimy, że niektóre opcje mają swoje argu-menty, tak, jak na przykład polecenie cut – którypo opcji -d przyjmuje separator.

Pierwszym pomysłem, jaki przychodzi do gło-wy, jest sprawdzanie wyłącznie zmiennej 1, a na-stępnie przesunięcie wszystkich zmiennych pozy-cyjnych o jedno miejsce do przodu i powtórzeniesprawdzania zmiennej 1. Pojawia się jednak pe-wien problem, zmienne 1, 2, 3, . . . są wyłączniedo odczytu, tak więc jawne przypisanie:

1=$22=$3

zakończy się błędem. Bash udostępnia wbudowa-nie polecenie shift, realizujące takie właśnie przy-pisanie. Przykładowo:

1 while [ $# -gt 0 ]2 do3 case $1 in4 -v) verbose=15 ;;6 -a) all=17 ;;8 -l) plik_logow=$29 shift

10 ;;11 -*) echo $1: nieznana opcja >&212 ;;13 esac14 shift15 done

Zgodnie z założeniem, zmiennym verbose i all zo-stanie przypisana wartość 1, która może być uży-ta w dalszej części skryptu. Jako, że nazwy opcjizaczynają się od myślnika, wiersz 11 umożliwiazwrócenie na stderr odpowiedniego komunikatuw wypadku użycia nieznanej opcji. W naszym czy-sto hipotetycznym skrypcie, opcja -l wymusza po-danie pliku, do którego mają być zapisywane lo-gi. Ponieważ plik podawany jest bezpośrednio poopcji, wymagane jest dodatkowe przesunięcie opcji(wiersz 8).

Przytoczone powyżej rozwiązanie sprawdza siędobrze w wypadku prostych skryptów, obsługują-cych niewiele opcji. Nie pozwala jednakże na łącze-nie kilku opcji po pojedynczym myślniku, przez coużytkownik nie może stosować zapisu -av lecz jestzmuszony podawać parametry osobno: -a -v.

Powłoka udostępnia wbudowane polecenie ge-topts, pozwalające na proste i efektywne przetwa-rzanie parametrów. getopts przyjmuje dwa argu-menty. Pierwszy z nich to lista dostępnych opcji,drugim jest nazwa zmiennej, zawierająca literę roz-poznanej opcji. Przepiszmy powyższy przykład:

1 while getopts avl: opt; do2 case $opt in3 a~) all=1 ;;4 v ) verbose=1;;5 l ) plik_logow=$OPTARG ;;6 ecas7 done8 shift $((OPTIND -1))

Wywołujemy getopts w warunku pętli. Programzwraca wartość 1 tak długo, jak długo znajdujeopcje do przetworzenia.

numer 18 – 2008 38

Page 39: Licencjewolnegoświatadraco.org.pl/wp-content/uploads/Dragonia/dragonia_nr18.pdf · 2017. 9. 3. · Wstępniak DrodzyCzytelnicy Z nowym rokiem nowym krokiem! Nowo-roczna zmiana w

Programowanie

Argumentem getopts jest lista właściwych opcji nasze-go skryptu. Użycie dwukropka po lwskazuje, że opcja-l przyjmuje dodatkowy argument (w postaci nazwypliku), który zostaje przypisany do zmiennej OPTARG,patrz wiersz 5. Warto zaznaczyć, że wzorców instruk-cji case nie należy poprzedzać myślnikiem, jak byłoto wcześniej. Uruchomienie skryptu z nieznaną opcją,powiedzmy -b, zakończy się niewiele mówiącym błę-dem:./opcje.sh: illegal option – bJeżeli pierwszy argument getopts poprzedzimy dwu-kropkiem, damy sobie możliwość zdefiniowania wła-snego komunikatu. Wtedy po napotkaniu niedozwo-lonej opcji, getopts nada zmiennej opt wartość ?, którąmy w prosty sposób przechwycimy w dodatkowymwzorcu instrukcji case:while getopts :avl: opt; do[...]’?’ ) echo ’Nieznana opcja!’ >& 2exit 1[...]Zmienna OPTIND przechowuje numer następnego ar-gumentu podlegającego przetworzeniu. Polecenie shiftprzyjmuje argument, mówiący o ile parametrów ma„przeskoczyć” – domyślnie 1. Ostatnia linia usuwawięc przetworzone opcje z listy parametrów pozycyj-nych, pozostawiając jedynie „prawdziwe parametry”.Na tym zakończymy piątą część kursu. Zapraszam dolektury następnej.

Odnośniki[1] http://jakilinux.org/konsola/

procesy-w-linuksie/

numer 18 – 2008 39

Page 40: Licencjewolnegoświatadraco.org.pl/wp-content/uploads/Dragonia/dragonia_nr18.pdf · 2017. 9. 3. · Wstępniak DrodzyCzytelnicy Z nowym rokiem nowym krokiem! Nowo-roczna zmiana w

Programowanie

Łączymy Qt z MySQLMichał Rzepka

W poprzednich numerach Dragonii ukazał się cykl tekstów obibliotekach Qt, przeznaczonych do szybkiego tworzenia wsze-lakiego rodzaju aplikacji z GUI i doskonale znanych wszystkimużytkownikom KDE. W tym numerze zajmiemy się łączeniemaplikacji Qt z bazą MySQL.

Wszystkich niezorientowanych w pracy z Qt, zachęcam do przeczytania wy-żej wspomnianego kursu, ale mimo to postaram się opisać zawarte w tekścieprzykłady kodu na tyle, na ile to możliwe, aby nie było to niezbędne.

Pisanie aplikacji zaczniemy od utworzenia jakiegoś katalogu, na przykładprzegladarka. To w tym katalogu będziemy umieszczać pliki z kodem źródło-wym. Kompilacja ogranicza się zwykle do wydania poleceń:

qmake -projectqmake

powyższe dwa na początku pracy, tworzą one projekt qmake i przekształcająmakra Qt do kodu C++; właściwa kompilacja

make

w katalogu z kodem. Jeśli kompilacja powiedzie się, pojawi się tam równieżnasza aplikacja w formie wykonywalnej.

Przykładowy problemZałóżmy, że posiadamy kolekcję kilkuset filmów, a płyty z nimi mamy po-

umieszczane w kilku lub kilkunastu segregatorach czy innych etui. Ponieważciężko utrzymywać taką zmieniającą się kolekcję w porządku alfabetycznym,niekiedy czasochłonne staje się znalezienie jakiegoś określonego pliku.

Najprościej więc płyty i etui podpisać, aby skrócić czas szukania, zawężającgo w najgorszym razie do konkretnego etui. Potem, niestety, konieczne jestwprowadzenie danych o naszym zbiorze do bazy – w omawianym przypadkuniech będzie to MySQL – co byłoby najnudniejszym etapem projektu.

Etap dodawania informacji do bazy pominę, gdyż – podobnie jak progra-mowanie w Qt – również był opisywany na łamach Dragonii.Skupmy się na samym rozwiązaniu; zaproponować można następujący sche-mat prostej bazy danych:

Rysunek 1.

Każde etui może mieć wiele płyt, zaś na każdej płycie może znajdować sięwiele filmów lub innych plików.

Zacznijmy od stworzenia obiektu, który będzie reprezentował połączeniez bazą danych i wykonywał kilka niezbędnych czynności (jak samo otwarciepołączenia).

Plik polaczenie.h:

#include <qsqldatabase.h>#include <qsqlquery.h>

class polaczenie: public QSqlDatabase {public:

polaczenie();};

Na początku dołączamy definicję klasy QSqlDatabase, zajmującej się obsługąpołączeń z bazami danych. Klasa ta dba o szczegóły związane z transakcjami,a także oferuje kilka sterowników, obsługujących najpopularniejsze systemyzarządzania bazami danych, jak: ODBC, Oracle, SQLite. Qt traktuje różne bazydanych w uniwersalny sposób, zwalniając z pamiętania wielu detali.

Dołączamy też definicję klasy QSqlQuery, zajmującej się tworzeniem i wy-konywaniem zapytań SQL.

Nasza klasa polaczenie będzie dziedziczyć po wyżej wymienionej QSqlDa-tabase, wzbogacimy ją jednakże tak, by wykonała kilka typowych czynności.Poniżej implementacja – plik polaczenie.cpp:

1 #include <polaczenie.h>2

3 polaczenie::polaczenie(): QSqlDatabase("QMYSQL3","polaczenie",0) {4 this->setDatabaseName("plyty"); /* nazwa bazy */5 this->setHostName("localhost");

numer 18 – 2008 40

Page 41: Licencjewolnegoświatadraco.org.pl/wp-content/uploads/Dragonia/dragonia_nr18.pdf · 2017. 9. 3. · Wstępniak DrodzyCzytelnicy Z nowym rokiem nowym krokiem! Nowo-roczna zmiana w

Programowanie

6 this->setUserName("UZYTKOWNIK");7 this->setPassword("HASLO");8 if(this->open()==FALSE){9 qDebug("nie ma polaczenia z baza");

10 } else {11 QSqlQuery ustawZnaki("SET NAMES LATIN2",this);12 if(ustawZnaki.exec()==FALSE) {13 qDebug("Kodowanie nie ustawione!");14 }15 }16 }

W trzecim wierszu odwołujemy się do konstruktora klasy nadrzędnej, przeka-zując nazwę sterownika, jakiego potrzebujemy (QMYSQL3).

Dalej, ustawiamy konieczne do zestawienia połączenia dane, takie jak adreshosta, login, hasło MySQL oraz nazwę bazy danych.Funkcja open() podejmuje próbę łączenia, a jeśli się ono nie powiedzie, to nakonsolę wyprowadzany zostaje komunikat (funkcją qDebug).Jeśli połączenie się uda (funkcja open() zwróci wtedy prawdę), to wykonywanejest nasze pierwsze zapytanie – włączające dla aktywnego połączenia obsługękodowania latin2 (czyli iso-8859-2, gdyż akurat takiego użyłem w swojej baziefilmów). Jak w każdym programie, potrzebujemy jakiejś funkcji main, od którejzacznie się wykonywanie kodu.

Plik main.cpp:

#include <qapplication.h>#include <qsqldatabase.h>#include "glowne_okno.h"

int main(int argc, char** argv) {QApplication aplikacja(argc, argv);glowneOkno okno;okno.show();return aplikacja.exec();

}

Wśród dołączanych plików znajduje się definicja klasy glowneOkno, którąwkrótce się zajmiemy. W kontekście funkcji main() warto wiedzieć, że tworzy-my tam główny „widget” (czyli obiekt GUI aplikacji), w naszym przypadku –główne okno, z paskiem menu, itp.

Aby interfejs był widoczny na ekranie, musimy wywołać jego funkcję show().Wszystkie obiekty podłączane do okna głównego (jak wyżej wymienionymmenu) również się wówczas pojawią. Zajmijmy się więc oknem głównym.

Plik glowne_okno.h:

#include <qmainwindow.h>#include <qmenubar.h>#include <qtextcodec.h>#include "przegladarka_plyt.h"#include <qlabel.h>#include <qlayout.h>

class glowneOkno : public QMainWindow {protected:

QMenuBar* menu;przegladarka* przegladarkaPlyt;QLabel* infoLabel;QGridLayout* siatka;

public:glowneOkno();

};

Oprócz dołączania w nim kilku plików nagłówkowych z definicjami wid-getów, których użyjemy, definiujemy klasę, dziedziczącą po obiekcie QMain-Window, reprezentującej okna główne aplikacji, do których możemy podpinaćmenu, okna z otwartymi dokumentami, paski narzędzi, itp.

Potrzebujemy też klasy QTextCodec, aby ustawić odpowiednie kodowaniedalej, w konstruktorze. Plikiem przegladarka_plyt.h zajmiemy się wkrótce.

Implementacja klasy glowneOkno w pliku glowne_okno.cpp:

#include "glowne_okno.h"#include <qapplication.h>

glowneOkno::glowneOkno(){//ustawiamy wymiary w pikselach dla okna programu:this->resize(600,400);//ustawiamy kodowanie ISO8859-2 (baza jest w Latin2)QtextCodec::setCodecForCStrings(QTextCodec::codecForName("ISO8859-2"));/* tworzymy obiekt QgridLayout, który działa jako siatka, porządkująca

elementy interfejsu na ekranie. Ustalamy jej 1 kolumnę i 2 rzędy */siatka=new QgridLayout(this,1,2,30,20,"Layout");/* tworzymy widget, który będzie pozwalał na przeglądanie i edycję

numer 18 – 2008 41

Page 42: Licencjewolnegoświatadraco.org.pl/wp-content/uploads/Dragonia/dragonia_nr18.pdf · 2017. 9. 3. · Wstępniak DrodzyCzytelnicy Z nowym rokiem nowym krokiem! Nowo-roczna zmiana w

Programowanie

rekordów w bazie danych */przegladarkaPlyt=new przegladarka(this,"przegladarka");/* tworzymy zalązek menu aplikacji */menu=new QMenuBar(this,"menu");/* dodajemy menu ’Plik’, trudno wyobrazić sobie aplikację bez niego! */QPopupMenu* menuPlik=new QpopupMenu(this);/* Umieszczamy 2 elementy dla menu Plik -- zakończ, oraz ’policz filmy’,

który w przyszłości pobierze z bazy ilość filmów i wyświetli ją naekranie. Podłączamy więc akcję wyboru do odpowiednich slotów */

menuPlik->insertItem("Policz filmy",przegladarkaPlyt,SLOT(policzFilmy()),0,-1,0);menuPlik->insertItem("Zakoncz",qApp,SLOT(quit()),0,-1,0);menu->insertItem("&Plik",menuPlik);/* qApp to globalny wskaźnik do obiektu reprezentującego aplikację*//* obiekt Qlabel wyświetla tekst statyczny w GUI, posłuży nam do

wyświetlania różnorakich informacji. Dalej, umieszczamy oba widgetyw siatce. */

infoLabel=new QLabel(this,"info");infoLabel->resize(150,50);infoLabel->setText("Przegladarka plyt!");siatka->addWidget(przegladarkaPlyt,0,0,0);siatka->addWidget(infoLabel,1,0,0);

}

Dokładny opis działania użytych obiektów i metod można znaleźć w doku-mentacji Qt [1, 2].

Nadszedł czas na najważniejszy i ostatni widget – klasę przegladarka, dzie-dziczącą po klasie QDataTable. Tutaj większość roboty została już za nas zro-biona przez programistów z Trolltech, więc definicja klasy ograniczy się doparu wierszy:

Plik przegladarka_plyt.h:

#include <qdatatable.h>#include <qsqldatabase.h>#include "polaczenie.h"#include <qsqlcursor.h>

class przegladarka: public QDataTable {Q_OBJECTprotected:

polaczenie* baza;QSqlCursor* kursor;

public:przegladarka(QWidget* parent,const char* nazwa);

public slots:int policzFilmy();

};

W klasie przechowamy wskaźnik do połączenia z bazą oraz wskaźnik dokursora, czyli obiektu służącego, m. in. do iterowania przez rekordy, zwraca-ne przez zapytania SQL. Klasa QDataTable potrzebuje kursora, skojarzonego zkonkretną tabelą w bazie, aby móc pobrać zeń dane i móc nimi manipulować.Zmiana zawartości danych oraz usuwanie i dodawanie nowych rekordów jestzaimplementowane w klasie nadrzędnej, więc tworzymy ostatni już plik.

przegladarka_plyt.cpp:

1 #include "przegladarka_plyt.h"2 przegladarka::przegladarka(QWidget* parent,const char* nazwa) :3 QDataTable(parent,nazwa)4 {5 baza=new polaczenie;6 kursor=new QSqlCursor("filmy",TRUE,baza);7 this->setSqlCursor(kursor,TRUE);8 this->refresh();9 }

10

11 int przegladarka::policzFilmy()12 {13 QSqlQuery zapytanie( "SELECT count(*) FROM14 ( SELECT DISTINCT nazwa FROM filmy ) as filmy", baza );15 QString wynik="?";16 while ( zapytanie.next() ) {17 wynik = zapytanie.value(0).toString();18 }19 emit(znalezionoIloscFilmow(wynik));20 }

Wskaźnik parent służy nam do oznaczenia nadrzędnego widgeta. Wartopilnować tej hierarchii, gdyż od tego może zależeć m. in. poprawne zwalnianiepamięci przy usuwaniu zbiorów obiektów. W naszym przypadku, podłączamyobiekt klasy przegladarka do „rodzica” – obiektu klasy oknoGlowne. Wówczas,

numer 18 – 2008 42

Page 43: Licencjewolnegoświatadraco.org.pl/wp-content/uploads/Dragonia/dragonia_nr18.pdf · 2017. 9. 3. · Wstępniak DrodzyCzytelnicy Z nowym rokiem nowym krokiem! Nowo-roczna zmiana w

Programowanie

destruktor tej klasy, poprawnie rozwiąże też problem usuwania podrzędnychwidgetów.

Inicjalizując zmienną kursor, musimy podać nazwę tabeli, jaką ma się zaj-mować ten bufor. Drugi parametr, gdzie przekazujemy TRUE, określa własnośćautopopulate kursora. Włączenie tej opcji (co jest zresztą ustawieniem domyśl-nym) sprawi, że informacje o polach utworzą się same. Wiersz 6 skojarzy naszarkusz z kursorem, zaś 7 odświeża dane w tabelce (wczytuje dane).

Funkcja policzFilmy() wymaga nieco głębszego spojrzenia. Mamy tu (na po-czątku) tworzenie zapytania pobierającego ilość unikalnych nazw filmów. Możebyć bowiem tak, że trzymamy jeden film na kilku płytach, na przykład jakokopię. Skoro nie chcemy liczyć tychże duplikatów, to dodajemy też słowo klu-czowe DISTINCT do zapytania.

Dalej znajduje się pętla while, przechodząca przez rekordy, zwrócone przezzapytanie. Spodziewamy się tylko jednego rekordu – z wynikiem liczenia –ale przykład ten, ilustruje ogólną koncepcję pobierania też większej liczby re-kordów. Wynik przechowujemy w zmiennej typu QString, po czym emitujemysygnał informujący o zakończeniu poszukiwań (właściwe Qt słowo kluczoweemit).

Pora coś zrobić z tym sygnałem. Najpierw zadeklarujmy go w plikuprzegladarka_plyt.h; na końcu definicji klasy dodajmy:

signals:void znalezionoIloscFilmow(QString ilosc);

Ponieważ nasz tekst statyczny reprezentujący status jest elementem oknagłównego, dodajmy do definicji tejże klasy (glowne_okno.h) następujący slot:

public slots:void ustawInfo(QString komunikat);

I zaimplementujmy go następująco (plik glowne_okno.cpp):

void glowneOkno::ustawInfo(QString komunikat){infoLabel->setText(komunikat);

}

Teraz, trzeba połączyć sygnał informujący o znalezieniu ilości filmów, zeslotem wyświetlającym komunikaty. W tym samym pliku, ale wyżej – na końcukonstruktora – należy dodać następującą linijkę:

connect(przegladarkaPlyt,SIGNAL(znalezionoIloscFilmow(QString)),this,SLOT(ustawInfo(QString)));

Rysunek 2. Okno stworzonej aplikacji, menu do manipulacji zbiorem pojawiasię pokliknięciu prawym guzikiem myszy. Uwaga: aktualizacje wykonane w tabeli

modyfikują rzeczywiste dane w bazie!

W ten sposób, utworzyliśmy prostą i typową aplikację korzystającą z bazydanych, sami skorzystaliśmy zaś z widgeta QDataTable, niewiele martwiąc się(przynajmniej w omawianym, prostym przypadku) o szczegóły komunikacjiz bazą. Wszystkie pliki z kodem źródłowym zostały dołączone do kataloguz numerem. Przykład tworzony był za pomocą Qt w wersji 3.3.8 oraz MySQLw wersji 5.0.37.

Odnośniki[1] http://doc.trolltech.com/3.3/classes.html – Klikalny spis klas Qt[2] http://doc.trolltech.com/3.3/database.html – Spis klas bazodanowych Qt

numer 18 – 2008 43

Page 44: Licencjewolnegoświatadraco.org.pl/wp-content/uploads/Dragonia/dragonia_nr18.pdf · 2017. 9. 3. · Wstępniak DrodzyCzytelnicy Z nowym rokiem nowym krokiem! Nowo-roczna zmiana w

Wywiad

Rozmowa z Marcinem Zalickim Country Manager firmyAmazis.net sp. z o.o.Paulina BudzońPaulina Budzoń: Amazis jest przedstawicielemMandrivy w Polsce od 2003 roku. Jakie były po-czątki tej współpracy?Marcin Zalicki: Chcieliśmy zająć się tworzeniemrozwiązań linuksowych. Mieliśmy już doświadcze-nie w biznesie i informatyce, a open source byłonaszą pasją. Postanowiliśmy to połączyć i zająć sięwprowadzaniem na rynek rozwiązań otwartych.Wybór padł na Mandrivę, ponieważ była bardzodobrze spolonizowana, miała dobrą markę wśróddystrybucji linuksowych i z jako jedną z nielicz-nych mogliśmy współpracować na zasadach ko-mercyjnych, a przecież na tym opiera się biznes.

Początki były trudne. Mieliśmy wiele barier dopokonania i wiele ścieżek do wydeptania. Naszzespół był bardzo mały, rynek nie przygotowanydo biznesowego traktowania Linuksa. Włożyliśmywiele pracy we wprowadzenie Mandrivy na polskirynek i mogę powiedzieć, że udało się to bardzodobrze. Jesteśmy najmocniejszym partnerem Man-drivy na całym świecie, co potwierdza nagroda ja-ką otrzymaliśmy w kwietniu we Francji.P.B.: Czym poza tą współpracą zajmuje się Waszafirma?M.Z.: Mandriva to nasz pierwszy partner techno-logiczny. Wkładamy dużo pracy w rozwój polskiejedycji tego sytemu czyli Xtreme, którą kierujemydo polskich użytkowników i producentów kom-puterów. Ale to nie wszystko, czym się zajmujemy.Coraz mocniej zajmujemy się rozwiązaniami dlabiznesu – serwery, systemy pocztowe i komunika-cyjne. Sprzedajemy, przystosowujemy do polskie-go rynku rozwiązania Xandros, O3Spaces, Zimbra,Axigen, NoMachine, Scalix. Współpracujemy z ta-

kimi firmami jak Telekomunikacja Polska, Orange,Polska Telefonia Cyrfrowa, Polkomtel, NTT Sys-tem, Optimus.

P.B.: Jak można zostać pracownikiem MandrivyPoland?M.Z.: Należy śledzić nasze strony www, gdzie za-mieszczamy ogłoszenia o pracę.

P.B.: Czy na tym etapie zaawansowania systemuLinux jest możliwość przejścia, np. całych firm, naten system? Jeśli tak, to czy znacie jakieś przykła-dy?M.Z.: Linux i systemy pracujące na platformie li-nuksowej są gotowe do zastosowania w firmach.Zarówno na serwerach jak i na komputerach biur-kowych. Nie można jednak zapominać o specyficefirm. Firmy nie wdrażają systemów dla idei. Wdra-żają je, bo chcą osiągnąć korzyści w postaci lepszejsprawności, wydajności, jakości obsługi klientówitd. Dlatego zawsze patrzą najpierw na efekty, ja-kie mogą osiągnąć dzięki oprogramowaniu. Efek-ty, jakie mogą osiągnąć dzięki Linuksowi, są corazwiększe, co skutkuje większym zainteresowaniemfirm. Bardzo duże znaczenie w tym zakresie marozwój komercyjnych systemów operacyjnych. Fir-my tworzące takie rozwiązania dobrze rozumiejąpotrzeby biznesu i potrafią dostarczać to czego po-trzeba klientom.

Dla odbiorców coraz większe znaczenie zysku-je niezależność od dostawcy oprogramowania, do-stęp do kodu źródłowego oraz możliwości w za-kresie interoperacyjności. Na tym polu Linux i wogóle Open Source wprowadza nową jakość narynku rozwiązań biznesowych, wyznacza kierunki

rozwoju i wpływa na firmy dostarczające zamknię-te rozwiązania. Po prostu sprzyja konkurencji z ko-rzyścią dla wszystkich klientów.

Można wskazać sporo firm, które w pracują naLinuksie. Jest też bardzo wiele przykładów, w któ-rych 100% infrastruktury sieciowej i komunikacyj-nej działa na Linuksie. Jest wiele przykładów firmi instytucji, w których Linux zagościł na dużymprocencie komputerów biurkowych. Jest też bardzodużo firm korzystających z Linuksa na części ma-szyn. Sytuacja taka wynika z faktu, że w firmachdziała bardzo wiele różnych systemów, bo różnekomórki realizują bardzo różne zadania. w przy-szłości spodziewamy się większego zróżnicowaniaplatform systemowych w obrębie środowisk infor-matycznych w firmach. Różne systemy operacyjnei komunikacyjne będą pracowały obok siebie i będąze sobą współpracowały. Linux zajmie dużą częśćtych środowisk.

P.B.: Jak można zastąpić programy kadrowe, pła-cowe czy choćby Płatnika pod Linuksem?M.Z.: Istnieją systemy kadrowe i płacowe dla Li-nuksa. Przykładów jest wiele. Przykładowe to Pro-bit, Trawers, LeftHand, Isof. Płatnika nie da sięjeszcze skutecznie zastąpić, ale w związku ze zmia-ną sytuacji prawnej wokół tego programu, spodzie-wamy się pojawienia niezależnych wersji, równieżdla Linuksa.

P.B.: Co Wy sami sądzicie o Mandrivie jako dys-trybucji (bądźcie obiektywni)?M.Z.: Mandriva to bardzo dobra dystrybucja biur-kowa. Jest dobrze zaprojektowana i zbudowana.Daje użytkownikom bardzo duże możliwości, dzię-

numer 18 – 2008 44

Page 45: Licencjewolnegoświatadraco.org.pl/wp-content/uploads/Dragonia/dragonia_nr18.pdf · 2017. 9. 3. · Wstępniak DrodzyCzytelnicy Z nowym rokiem nowym krokiem! Nowo-roczna zmiana w

Wywiad

ki ukierunkowaniu właśnie na grupę odbiorcówindywidualnych. Oczywiście nic nie jest doskona-łe, więc i Mandriva wymaga ciągłej pracy, aby sta-wała się coraz lepsza. Wersje serwerowe dla firmw ostatnim czasie mocno się rozwijają. Już wkrót-ce będzie dostępny produkt Pulse2 umożliwiającysprawną administrację serwerami i desktopami li-nuksowymi w firmie. To długo oczekiwany pro-dukt Mandrivy.

P.B.: Mandriva oferuje bardzo dużo produktów –skąd więc pomysł na Xtreme?M.Z.: Xtreme powstał specjalnie dla polskich użyt-kowników. Jest wiele dystrybucji Linuksa, ale tylkoXtreme zawiera „w standardzie” programy, z któ-rych korzystamy w Polsce. Nie trzeba nic doinsta-lowywać, czy szukać w internecie. To po pierw-sze. a po drugie, nie mniej ważne – chcieliśmyprzygotować system dla ludzi, którzy chcą korzy-stać z komputera łatwo i przyjemnie. Tak po pro-stu? Ma działać i dawać nowe możliwości. Aby toosiągnąć, wyposażyliśmy Xtreme w unikalny ze-staw dodatkowego oprogramowania, sterownikówi usług pomocy technicznej. Dzięki temu nie maograniczeń, jeżeli chodzi o wykorzystanie interne-tu, multimediów czy gier. Dzięki programowi Ce-dega nie trzeba już posiadać Windowsa, aby po-grać w ulubione gry. Przetestowaliśmy wszystkienajpopularniejsze gry dla systemu Windows. Zna-komita większość z nich działa bardzo dobrze.

Nie ma też problemu z filmami. w Xtreme wbu-dowaliśmy wszystkie wtyczki i kodeki, które mogąsię przydać. Zaraz po uruchomieniu systemu mo-żesz oglądać filmy DVD, Divx, Xvid, MPEG, WMV,filmiki na YouTube, Onet, TVN24 i co tam jeszczesobie zażyczysz. Możesz słuchać radia interneto-wego, słuchać muzyki z Jamendo, z plików mp3,ogg, wma i innych.

Niedawno zakończyliśmy prace nad przygoto-waniem programów Drakneo i Drakumts, dziękiktórym użytkownicy mogą się szybko i łatwo łą-czyć z internetem przez usługi Neostrada tp, Blu-

econnect, Orange Free i inne, dostępne na rynku.Połączenie z internetem stało się banalnie proste.Prostsze niż w Windows!P.B.: Do kogo jest skierowana Xtreme? Do „zwy-kłych” użytkowników czy raczej do osób, które ce-nią ładny wygląd i ciekawe efekty?M.Z.: Do jednych i drugich. Dla „zwykłych” ma-my certyfikowane przez TP, Erę i Orange kreatorypołączeń internetowych (łatwe połączenia z neo-stradą, Bluconnect, Orange Free i iPlus), zestawwtyczek i kodeków, gry i łatwy dostęp do progra-mów multimedialnych dzięki Centrum Rozrywki.i oczywiście pomoc techniczną.

Osoby ceniące sobie ładny wygląd i efek-ty zapewne polubią Compiz-Fuzion i nowy wy-gląd Xtreme. Dla każdego coś dobrego. Na szczę-ście, system można dostosować do swoich potrzebi mieć dokładnie taki, jakiego się chce, więc niktnie jest skazany na jedno rozwiązanie.P.B.: Jak przebiega proces rozwoju Xtreme?M.Z.: Zaczynamy od wysłuchania opinii użytkow-ników. Pytamy o ich potrzeby na forum, rozma-wiamy z nimi osobiście. Analizujemy także pro-blemy zgłaszane do pomocy technicznej. w lipcuzorganizowaliśmy konkurs Mój wymarzony system.Nadesłane prace były bardzo ciekawe. Zaczerpnę-liśmy z nich kilka pomysłów. Bardzo wiele rzeczy,o których użytkownicy pisali w swoich pracach,jest już w Xtremie.

Po zebraniu informacji od użytkownikówi partnerów biznesowych przystępujemy do pro-jektowania systemu. Ustalamy, jakie programy sięznajdą w wydaniu ostatecznym i jakie nowe narzę-dzia powinny powstać. Później zabieramy się dopracy. Cykl wydawniczy jest bardzo podobny dotego stosowanego w Mandrivie. Działamy w tymsamym czasie. Podczas tworzenia Xtreme 2 wyda-liśmy wersję testową do publicznego użytku. Po-dobnie zrobimy przy kolejnej wersji. Każdy będziemógł sprawdzić, jak działa Xtreme i wziąć udziałw jego tworzeniu na razie w charakterze testera.

P.B.: Mandriva jest oskarżana o słaby kontakt zeSpołecznością. Ostatnio dużo mówi się o „zwrociew jej stronę”. Czy Mandriva Poland też podjęła ja-kieś kroki w tym kierunku?M.Z.: Oczywiście. Zwrot w stronę społeczności tow jakimś stopniu nasza zasługa. Od dawna rozma-wialiśmy z Francją o konieczności wprowadzeniazmian w każdym aspekcie tworzenia dystrybucji.

Zmniejszenie kontaktu ze społecznością wyni-ka po części ze zmniejszenia liczby użytkowników.To zostało spowodowane w dużej mierze skutecz-ną ekspansją Ubuntu. Niektóre wersje Mandrivysą sprzedawane. Wiele osób zrezygnowało z Man-drivy właśnie ze względu na komercyjny charakterdziałań firmy. a przecież wersję FREE (Wolną) wy-dajemy od zawsze i nadal jest wydawana. Bezpłat-nie dostępna jest także wersja One. Ale tutaj za-wiodła komunikacja. Po odejściu Duvala, powstałapewna luka w komunikacji ze społecznością. Lu-ka ta spowodowała kryzys, którego efektem jestspadek popularności Mandrivy na świecie. Co cie-kawe, w Polsce jest lepiej, niż średnio na świecie,a sonda przeprowadzona przez PC World wykaza-ła, że użytkownicy uważają Mandrivę za najlepszysystem operacyjny.

Po kryzysie, związanym z odejściem Duvalaw kwietniu tego roku, rozpoczęły się zmiany. Napierwszy ogień poszły procedury tworzenia dys-trybucji i testowania. Niezależni programiści zy-skali większe możliwości – łatwiejszy dostęp do in-frastruktury Mandrivy, możliwość budowania wła-snych edycji, itp. Jest jeszcze do zrobienia sporow zakresie komunikacji z użytkownikami i reali-zacji wspólnych przedsięwzięć.

P.B.: Skąd pomysły na ostatnie zmiany w PolskimKlubie Mandrivy?M.Z.: Zmian w ostatnich miesiącach było wiele –zmieniliśmy trochę wygląd Klubu, dodaliśmy no-we poziomy członkostwa, dodaliśmy nowe usługi,jak pocztę klubową i klubowe repozytorium pakie-tów, uruchomiliśmy dział Lab.

numer 18 – 2008 45

Page 46: Licencjewolnegoświatadraco.org.pl/wp-content/uploads/Dragonia/dragonia_nr18.pdf · 2017. 9. 3. · Wstępniak DrodzyCzytelnicy Z nowym rokiem nowym krokiem! Nowo-roczna zmiana w

Wywiad

Poczta klubowa działa w oparciu o system Zim-bra, która ma bardzo wygodnego klienta poczty.Zresztą był on ostatnio opisywany na łamach Dra-gonii. Każdy klubowicz dostaje konto w dome-nie mandrivaclub.pl. Może ją sprawdzać bezpłat-nie przez 14 dni. Klubowicze, którzy mają poziomII lub III mają dostęp do pełnej wersji tej usługi,z kontem o rozmiarze 1 GB lub 2 GB.

Założyliśmy specjalne klubowe repozytoriumpakietów, bo staramy się wychodzić naprzeciwużytkownikom, dodając nowe programy. Repozy-torium zastąpiło starą farmę pakietów, która niebyła zbyt wygodna w obsłudze. Teraz członko-wie Klubu mogą dodać nasz serwer jako nośnikw Rpmdrake i instalować dodatkowe programyprosto z internetu.

Dział Lab powstał po to, aby na bieżąco prze-kazywać informacje na temat prac naszego labo-ratorium. Tutaj publikujemy informacje na temattestowanego sprzętu i nowych pakietów. Pojawiąsię także informacje na temat systemu, jego kon-figuracji i wywiady z osobami zaangażowanymiw rozwój Mandrivy.

P.B.: Jakie Mandriva Poland ma plany na przy-szłość? Kolejne dystrybucje? Rozwój Klubu?M.Z.: Nadal będziemy rozwijać Xtreme, jako na-szą lokalną wersję Mandrivy, dostosowaną do po-trzeb polskich użytkowników. Ale nie tylko – Xtre-me wyjdzie poza granice Polski. Pracujemy nadnowym projektem, który powinien być dużą nie-spodzianką na rynku OEM. Szczegóły podamyw styczniu 2008.

W przyszłym roku z operatorami telekomuni-kacyjnymi i dostawcami sprzętu nadal będziemywspółpracować nad certyfikacją rozwiązań orazdostarczaniem Mandrivy Xtreme z komputeramii innymi urządzeniami.

Chcielibyśmy więcej czasu poświęcić na pracęze społecznością. Nie zawsze mamy tyle czasu, ilebyśmy chcieli, ale zapewniam, że cały czas słucha-my głosu użytkowników i mamy dużo pomysłów.

Jednakże, ich realizacja wymaga czasu i środków,a niestety nie mamy bogatego sponsora (centrali)i musimy zarobić na wszystko sami ;-)

P.B.: Czy znacie jakiś „złoty środek”, aby prze-konać ludzi (pracowników, użytkowników) do Li-nuksa?M.Z.: Złoty środek? Chyba nie ma takiego. Każdyma inne potrzeby i oczekiwania w stosunku do sys-temu operacyjnego i środowiska, w którym pracu-je. Moim zdaniem problem nie polega na przeko-naniu ich do Linuksa, a bardziej na stworzeniu wa-runków, w których mogliby bez przeszkód przesia-dać się na Linuksa.

Po pierwsze, konfiguracja systemu musi byćmożliwie prosta i automatyczna, po drugie, musządziałać urządzenia, po trzecie: gry i programy, doktórych są przyzwyczajeni, lub po prostu którychmuszą używać (np. Płatnik). w tych aspektach bar-dzo wiele się dzieje.

Konfiguracja systemu staje się przyjemniejszaz każdym wydaniem Mandrivy. Ostatnio pojawiłosię nowe narzędzie do migracji danych z Windows(transfungdrake), nowe centrum sieciowe i uspraw-nienia w Rpmdrake. Zmiany w Rpmdrake ułatwia-ją zarządzanie oprogramowaniem. Dużym kro-kiem naprzód jest ułatwienie dodawania serwe-rów z pakietami. Jest prawie całkiem automatyczne– wystarczy kliknąć jeden przycisk, żeby systemsam zainstalował dodatkowe repozytoria. Ważnejest także to, że udostępniono bezpłatnie wszyst-kie repozytoria również z oprogramowaniem za-mkniętym (non-free), które można bez przeszkóddoinstalować przez sieć.

Sami prowadzimy bardzo dużo testów sprzętu(m. in. dla NTT System) i tworzymy specjalne wer-sje jądra dla zestawów komputerowych po to, żebydziałały od razu – bez zbędnych kombinacji.

Jeżeli chodzi o gry, to promujemy Cedegę. Te-stujemy gry i sprzedajemy ten program. Płacimyfirmie Transgaming za sprzedane licencje. Dziękitemu, zyskują oni środki na dalszy rozwój i ulep-

szanie możliwości w zakresie obsługi gier – czylidalsze zmniejszanie barier.

Jeżeli chodzi o programy, które są pod Win-dows, a nie ma dla Linuksa, to rozmawiamy z pro-ducentami i namawiamy ich do wydawania wersjidla Linuksa. Firmy głównie obawiają się o przycho-dy, uznając, że użytkownicy Linuksa nie są skłon-ni do płacenia za oprogramowanie. Udowadniamyim, że to się zmienia, przekonując ich do poniesie-nia kosztów niezbędnych do przygotowania pro-gramu dla Linuksa.

Podsumowując. Złotego środka nie ma. Jest zato dużo ciężkiej pracy w aspektach, które wymie-niłem. Efekty widać – Linux powolutku przebijasię, ale nadal pozostaje dużo do zrobienia.

P.B.: Co sądzicie o Naszym czasopiśmie – Drago-nia Magazine?M.Z.: Jest super! Bardzo fajna inicjatywa, którawnosi całkiem nową jakość wśród wydawnictwpoświęconych Open Source.

Osobiście bardzo się cieszę, że powstało takiepismo dla użytkowników Linuksa, tworzone przezsamych użytkowników. Czujemy się zaszczyceni,że możemy współpracować.

Moim zdaniem Dragonię czeka jeszcze wielesukcesów. Tak trzymać!

P.B.: Dziekuję za rozmowę.

numer 18 – 2008 46

Page 47: Licencjewolnegoświatadraco.org.pl/wp-content/uploads/Dragonia/dragonia_nr18.pdf · 2017. 9. 3. · Wstępniak DrodzyCzytelnicy Z nowym rokiem nowym krokiem! Nowo-roczna zmiana w

Felieton

Dlaczego nie lubię Linuksa?Karol Kozioł

Esej ten powstał pod wpływem silnych emocjizwiązanych z kolejnym padem systemu.

Większość osób ze środowiska linuksowegorozgłasza wszem i wobec, jaki to Linux jest faj-ny, super i w ogóle lepszy od innych OS. Jednak-że, system ten także ma wady i to czasami dośćpoważne (a raczej dość poważnie irytujące), którenależałoby przedstawić i pokazać w świetle dzien-nym.

Koronkowa robota, czyli co zrobićgdy oczko puści, albo o piekle za-leżności

Zaczyna się dość niewinnie. Chcąc zainstalo-wać jakiś mały programik, ruszamy machinę insta-lacyjną, która jako zależności pokazuje nam kilka-naście/kilkadziesiąt innych pakietów. Nic to. Dlaświętego spokoju uruchamiamy dalej machinę in-stalacyjną i idziemy robić coś innego. W między-czasie okazuje się jednak, że któryś z pakietów byłkrytyczny dla działania systemu i zaczyna spra-wiać kłopoty. A to aktualizacja hald/dbus spowo-duje, że system nie wykrywa niektórych urządzeń(na czele z kartą sieciową, czyli koniec z pomocąvia internet). Albo instalacja jednej biblioteki, którawymaga później przekompilowania kilkudziesię-ciu pakietów, w tym takich molochów, jak X.Orgi KDE (moje ostatnie osiągnięcie w psuciu Gen-too). Że też ledwie wspomnę o takich banalnychproblemach, jak kłopoty ze sterownikami do kartgraficznych, czy osławiony kernel panic po wła-snoręcznej kompilacji jądra. Zaprawdę powiadamwam: nie zna życia ten, kto nigdy jądra nie kom-pilował. Oczywiście zdarzają się też osoby, które

nigdy nie miały z Linuksem żadnych problemów.Prawdopodobnie korzystają one z zasady: „Nigdy,a to przenigdy, nie ruszaj działającego systemu”.

Dlaczego tak się dzieje? Dlaczego oczka pusz-czają? Dlaczego niewinna aktualizacja potraficzasami nieźle uprzykrzyć życie? Otóż systemGNU/Linux nie jest systemem monolitycznym.Jest to zlepek różnych programów i idei, połączo-nych poplątaną siecią zależności. Zazwyczaj działato dobrze, nawet bardzo dobrze. Gorzej, gdy któreśz ogniw łańcucha pęknie.

A wspomniane wcześniej piekło zależności?Otóż jest to termin ukuty dawno temu, gdy za-rządcy pakietów nie byli jeszcze tak dobrzy w tymco robią, jak teraz (co nie znaczy, że teraz jestidealnie, ani nawet dużo lepiej). Wtedy, instalu-jąc program, mogliśmy mieć pecha i spowodować,że zarządca pakietów uzna, że należy zainstalo-wać dodatkowo jeszcze kilkanaście pakietów, dru-gie tyle aktualizować, kilka usunąć, a dodatko-wo aktualizowane pakiety pewnie wejdą z kon-flikt z jakimiś innymi, które trzeba będzie usu-nąć/upgrade’ować/downgrade’ować (niepotrzeb-ne skreślić).

Sterowników nie ma na płytce,czyli szukamy w internecie

Nie jest to poniekąd wina samego systemu,a raczej wypadkowa wina niekomercyjnej ideiGNU i niechęci producentów sprzętu do wspiera-nia niszowego systemu operacyjnego. O ile więk-szość sprzętu działa dobrze i bezproblemowo nasterownikach wbudowanych w jądro, to jednakz niektórymi nie jest tak łatwo. Sterowniki 3D do

kart nVidii są, ale trzeba je oddzielnie ściągać z in-ternetu. A co mają robić ludzie, którzy takowegodostępu do sieci nie mają (a są jeszcze tacy)? Chybaczekać na Nouveau. Inny przykład; kilka miesięcytemu zacząłem się łączyć z internetem za pomocąkarty sieciowej na USB. Jądro ją wykryło, tylko dopoprawnego działania potrzebne były pliki firm-ware. Plików owych oczywiście nie ma na żadnejpłycie z dystrybucją, ani na płycie dołączanej dokarty, są za to w internecie. Tylko jak je ściągnąćz internetu, skoro się nie ma z nim połączenia?Pomocny okazał się pendrive, za pomocą któregoprzeniosłem odpowiednie pliki z komputera po-siadającego internet, do komputera potrzebującegointernetu. Idąc dalej – skaner. Też potrzebuje firm-ware. Tym razem mam już internet, więc pójdziemi łatwiej.

Nie rozumiem, skoro dystrybucje pozwalają nainstalację zamkniętego oprogramowania (AcrobatReader, Real Player), a OpenSUSE posiada nawetspecjalną płytkę nonOSS, to dlaczego nie da sięzrobić jakiejś dodatkowej płyty z firmware’ami doprzydatnych urządzeń (a szczególnie do kart sie-ciowych :-) )? Bo skoro odpowiednie firmware jesti można je bezpłatnie ściągnąć z internetu, to dla-czego nie dogadać się z producentami i nie umie-ścić go na jakiejś osobnej płycie, by pliki były odrazu gotowe do użytku? Wyżej opisane postępowa-nie jest korzystne dla obu stron, użytkownicy ma-ją firmware od zaraz do użytku, natomiast firmyhardware’owe poszerzają krąg nabywców swoichproduktów (bo częstą w środowisku linuksowymbyła sytuacja, że przy kupnie nowego urządzeniapytało się na forach, czy to działa od razu, a jeślinie, to się przerzucało na produkty innej firmy).

numer 18 – 2008 47

Page 48: Licencjewolnegoświatadraco.org.pl/wp-content/uploads/Dragonia/dragonia_nr18.pdf · 2017. 9. 3. · Wstępniak DrodzyCzytelnicy Z nowym rokiem nowym krokiem! Nowo-roczna zmiana w

Felieton

Nie takie Wine/Cedega jest wspa-niałe

Wielbiciele Linuksa, na pytania w stylu „a czyna Linuksie będę mógł zagrać w swoją ulubio-ną grę?” (w domyśle chodzi oczywiście o gręna Windowsa) odpowiadają, że jest przecież Wi-ne/Cedega i że nie ma problemu. W rzeczywisto-ści nie jest tak dobrze. Wprawdzie Wine i Cedegapotrafią emulować środowisko (tak, słyszałem, żeWine Is Not Emulator, ale zawsze uważałem to zaplotkę ;-) ) dla wielu programów i gier, ale nie dlawszystkich. Może okazać się, że akurat aplikacja,na której nam bardzo zależy, po prostu nie będziedziałać (albo będzie działać po tylu zabiegach, poktórych instalacja Gentoo wyda się nam pestką).i niekoniecznie musi być to najnowsza wersja gry.Swego czasu, próbowałem skorzystać z elektro-nicznej wersji książki telefonicznej (aktualnej wersjipapierowej nie miałem, a wersja elektroniczna na-patoczyła się z jakimś czasopismem) przeznaczo-nej, oczywiście, dla systemu Windows. Programikbył prosty, w zasadzie składał się z prostego menui wyszukiwarki. Jednakże, na Linuksie wspoma-ganym Cedegą się nie uruchomił. Więc włączammój wiekowy Windows 2000 (tak, jestem dwa Win-dowsy do tyłu, nawet nie miałem XP), by korzystaćz niego w sumie z kwadrans. i jak tu zerwać defi-nitywnie z Windowsem, skoro przydaje się w naj-bardziej niespodziewanych sytuacjach?

GNOME i KDE w (nie)jednym sta-li domu

GNOME i KDE to najpopularniejsze środowi-ska graficzne na GNU/Linuksa. Środowiska gra-ficzne – znaczy to, że oprócz menedżera okiendostajemy także wiele wyspecjalizowanych aplika-cji (menedżer plików, archiwizer, a czasami tak-że pakiet biurowy), dedykowanych określonemu

środowisku. Dedykowany, to znaczy korzystają-cy obficie z bibliotek lub innych komponentówKDE/GNOME. i tu jest problem. Otóż gdy korzy-stamy z KDE w normalnej pracy, ale chcielibyśmyzainstalować jakiś program dedykowany GNOME,to często okazuje się, że musimy zainstalować do-datkowo pół GNOME (oprócz Gtk często potrzeb-ny jest gnome-desktop, gnome-panel czy gconf).Podobnie jest w drugą stronę (instalując Amaro-ka pod GNOME musimy zainstalować także Qt,kdelibs i często kdemultimedia czy arts). Docho-dzi do tego, że na forach linuksowych częste sąpytania w stylu „czy znacie program służący do. . .dla KDE/GNOME” (w zależności od środowiskagraficznego, którego używa pytający). Dodatkowonależy zaznaczyć, że w KDE programy dedyko-wane GNOME zazwyczaj działają wolniej, niż naswoim natywnym środowisku. Zazwyczaj też go-rzej wyglądają. Może wypada pomyśleć o jakimśzunifikowanym zestawie procedur dla środowiskgraficznych?

A tak naprawdę. . .. . . to autor bez bicia przyznaje się, że jednak

mimo wszystko lubi Linuksa i chociaż czasami naniego trochę się wścieknie i ponarzeka, to wcze-śniej czy później mu przechodzi.

Miejsce na Twoją reklamę

numer 18 – 2008 48

Page 49: Licencjewolnegoświatadraco.org.pl/wp-content/uploads/Dragonia/dragonia_nr18.pdf · 2017. 9. 3. · Wstępniak DrodzyCzytelnicy Z nowym rokiem nowym krokiem! Nowo-roczna zmiana w

Literatura

Książki wydawnictwa HelionPHP5. Zaawansowane tworzenie stron WWW. Szybkistart

Larry Ullman

PHP to dziś jeden z najpopularniejszych językówprogramowania stosowanych do tworzenia aplikacjii witryn internetowych. Za jego pomocą powstały set-ki tysięcy blogów, galerii, portali, sklepów interne-towych, serwisów społecznościowych i innych stronWWW. PHP jest prosty, ma czytelną składnię i dużemożliwości, a jego najnowsza wersja – PHP5 – umożli-wia wykorzystanie wszystkich zalet, jakie płyną z pro-gramowania obiektowego. Skrypty PHP łatwo połą-czyć z bazami danych i stosować razem z innymi tech-nologiami, np. z zyskującym coraz większe uznanieAjaksem.

Książka PHP5. Zaawansowane tworzenie stron WWW. Szybki start to wprowa-dzenie do rozwiązywania przy użyciu tego języka bardziej złożonych zagad-nień programistycznych. Czytając ją, poznasz zasady programowania obiekto-wego, komunikacji z bazami danych, zabezpieczania aplikacji i poprawy ichwydajności. Dowiesz się, jak projektować złożone aplikacje sieciowe i tworzyćdokumentację projektową. Przeczytasz o interakcji skryptów PHP z serweremi technikach uruchamiania ich z poziomu wiersza poleceń. Znajdziesz tu takżeinformacje o tworzeniu aplikacji e-commerce. Ostatni rozdział został poświę-cony technologii Ajax w skryptach PHP.

Zawartość:— Projektowanie aplikacji i dokumentowanie kodu.— Przechowywanie danych sesji w bazie.— Zabezpieczanie aplikacji WWW.— Tworzenie elementów sklepów internetowych.— Komunikacja z innymi witrynami WWW.— Interakcja z serwerem.— Uruchamianie skryptów PHP z wiersza poleceń.— Korzystanie z repozytorium PEAR.— Technologia Ajax w PHP.

Pokonaj kolejny etap w PHP i zostań ekspertem w dziedzinie programowa-nia!

OpenOffice 2.0 PL. Funkcje arkusza kalkulacyjnego.Leksykon kieszonkowy

Bartosz Gajda

Arkusz kalkulacyjny Calc to jeden ze składnikówdostępnego nieodpłatnie pakietu biurowego OpenOf-fice 2.0. Podobnie jak jego komercyjne odpowiedniki,Calc posiada ogromne możliwości w zakresie prze-prowadzania nawet najbardziej złożonych obliczeń. Je-go użytkownicy mogą tu wykorzystać nie tylko two-rzone przez siebie formuły, ale także rozbudowanyzbiór predefiniowanych funkcji. Funkcje te, podzie-lone na kategorie, wymagają jedynie odpowiedniegozdefiniowania argumentów – i to właśnie stanowi czę-sto przeszkodę w ich wykorzystaniu. W wielu przy-padkach trudno zorientować się, czy argumentem jestpojedyncza komórka, czy też zakres komórek. Lakoniczny opis wyświetlanypo wybraniu funkcji w programie rzadko okazuje się pomocny.

OpenOffice 2.0 PL. Funkcje arkusza kalkulacyjnego. Leksykon kieszonkowy zawie-ra zestawienie opisów wszystkich opcji, jakie oferuje swoim użytkownikomaplikacja OpenOffice Calc. W każdym rozdziale znajdziesz omówienie innejkategorii funkcji. Dowiesz się, jakie jest zastosowanie każdej z nich, poznaszliczbę i znaczenie argumentów funkcji oraz typ i interpretację zwracanej war-tości. Każdy opis zawiera także przykład zastosowania funkcji, co znaczącoułatwia zrozumienie zadania przez nią realizowanego.

Zawartość:— Funkcje bazodanowe.— Funkcje operujące na datach i godzinach.— Funkcje finansowe i informacyjne.— Funkcje matematyczne i macierzowe.— Funkcje logiczne i statystyczne.— Funkcje arkusza kalkulacyjnego.— Funkcje tekstowe.— Inne funkcje.

Usprawnij i przyspiesz swoją pracę z arkuszem kalkulacyjnym!

numer 18 – 2008 49

Page 50: Licencjewolnegoświatadraco.org.pl/wp-content/uploads/Dragonia/dragonia_nr18.pdf · 2017. 9. 3. · Wstępniak DrodzyCzytelnicy Z nowym rokiem nowym krokiem! Nowo-roczna zmiana w

Literatura

Książki wydawnictwa PWNAkademia sieci Cisco. CCNA semestr 2. Routery i pod-stawy routingu

Wendell Odom, Rick McDonald

Nowe wydanie oficjalnego podręcznikaAkademii Sieci Cisco przeznaczonego na drugisemestr kursu CCNA v3.1.1. Autorzy napisaliksiążkę całkiem na nowo, aby zapewnić świe-że spojrzenie na kurs dostępny on-line w sieci.Publikacja obejmuje wszystkie tematy szkoleniauzupełnione o dodatkowe przykłady i przedsta-wia alternatywne podejście do niektórych za-gadnień. Wszystko to ma pomóc w zrozumie-niu tematyki związanej z pojęciami i technolo-giami sieci.

Nowe elementy książki pomagają w naucew ramach tego kursu:— Cele rozdziału – przegląd podstawowych

pojęć zawartych w rozdziale, przedstawionyw postaci pytań.

— Ważne terminy – odwołania do uaktualnionej listy pojęć wprowadzanychw rozdziale ze wskazaniem ich definicji w tekście.

— Słownik terminów – nowy słownik pojęć liczący ponad 400 terminów.— Sprawdzian nabytej wiedzy, pytania i odpowiedzi – na końcu rozdziału

znajduje się zestaw pytań sprawdzających stopień opanowania poruszanejtematyki. Pytania podane są w postaci zgodnej z treścią kursu on-line. Nakońcu książki umieszczone są odpowiedzi.

— Pytania i zadania problemowe – zestaw pytań i czynności do wykonaniaw postaci przypominającej złożone pytania wchodzące w skład egzaminówCCNA. w dodatku podano odpowiedzi na wszystkie pytania.

— Dodatkowe zadania praktyczne – dodatkowe opisy procesów i wzory opi-sujące praktyczne problemy z zakresu sieci są zgromadzone w dodatku C.

Ponadto w treści rozdziałów wyróżniono kolejne kroki wykonywanychdziałań, ćwiczenia wykonywane z użyciem programu Packet Tracer oraz od-wołania do ćwiczeń laboratoryjnych.

Jak stworzyć najlepszy blog. WordPress 2.0Paweł Lipiec, Łukasz Sosna

Książka przedstawia skrypt WordPress, któ-ry jest – nie tylko zdaniem autorów – najlep-szym z gotowych rozwiązań na rynku. Skryptjest bezpłatny, można więc go stosować w do-wolnym miejscu zarówno do użytku prywat-nego, jak i komercyjnego. Dzięki dostępowi doźródła programu czytelnik, który zna się naprogramowaniu w języku PHP, może go do-wolnie modyfikować i dostosować do swoichpotrzeb.

Oprócz opisu samego skryptu książka za-wiera porady na temat tego, jak stworzyć wła-sny blog, który będą odwiedzali czytelnicy z ca-łego świata i znajdą na nim interesujące ich tre-ści. Dzięki poradom czytelnik dowie się także,jakie czynniki wpływają na odpowiednie pozy-cjonowanie blogu w wyszukiwarce.

numer 18 – 2008 50