Vezérfonal

Programvadászat

KOffice KFormula - képletszerkesztõ Linux alatt már megszokhattuk az al- A KOffice hátrányaként említhetõ az kalmazások bõ választékát, legyen szó import/export szûrõk hiányosságai. bármilyen feladatról. Nem kivétel ez A http://www.koffice.org oldalon sok © Kiskapu Kft. Minden jog fenntartva alól az irodai munka területe sem. kiegészítõ alkalmazást találunk, amelyekkel teljesebbé tudjuk tenni irodai környezetünket.

Abiword Ez egy igazán remek szövegszerkesztõ. Kis erõforrásigényének köszönhetõen nagyon hatékonyan használható régeb- bi gépeken, ahol az OpenOffice.org Mindhárom program jelenleg elér- már számításba sem jöhet. A korongra hetõ legfrissebb változata került fel a Fedora Core1, Fedora Core2, RedHat 9 a mellékletre. csomagok kerültek fel, telepítésük az Akitõl megkérdezik, hogy milyen iro- rpm-i csomagnév paranccsal könnyedén Magazin dai programcsomagot használ, az nagy elvégezhetõ. valószínûséggel az OpenOffice.org-ot ALSA fogja említeni. Ez egy igen népszerû, Rendszermag Az ALSA hangrendszer programozása nagytudású program, amivel szinte Természetesen felkerültek koron- cikkhez tartozó példakódok, doku- mindent meg tudunk oldani a szöveg- gunkra a jelenlegi legfrissebb rend- mentáció, és a legfrissebb ALSA prog- szerkesztéstõl, a táblázatkezelésen ke- szermagok is. (2.4.27, és a 2.6.8.1). ramok a Magazin/ALSA könyvtárban resztül a bemutatók készítése. Hátrá- A 2.6-os rendszermagsorozat las- kaptak helyet. nya viszont az igen nagy mérete, ami san elér abba az állapotba amikor a mai gépeken nem jelenthet gondot mindenféle környezetben bátran Fogadó egy régebbi konfigurációnak azonban használhatjuk. Hasonlóan a 2.2-rõl Marcel által írt cikkben szereplõ játé- már meggyûlhet vele a baja. Ugyan- a 2.4-re történõ váltáshoz, sokan kok telepíthetõ formában és forrás- ilyen feladatokra készített csomag most is halogatják ezt a lépést. kódban érhetõek el a Magazin/Fogado a KDE-vel szervesen együttélõ (azon- Ez fõként az asztali rendszereknél könyvtárban. ban anélkül is használható) KOffice . jelenthet gondot az újabb hard- Ebben is megtalálható minden alkótó- verelemek támogatása miatt (ilyen Moodle elem, kisebb erõforrásigényének kö- lehet például a Serial ATA vezérlõk Ezzel a hatékony e-learning szönhetõen azonban kevesebb memó- meghajtója). Sok meghajtónak léte- rendszerrel mindenki könnyen riával szerelt gépeken is futtatható. Bár zik úgynevezett backportja, ami elérhetõvé tudja tenni az elektroni- ha KDE alatt szeretnénk használni ak- a 2.6-os rendszermagból átkerült kusan oktatható tananyagokat, lehe- kor azt hiszem az igénye megegyezik a 2.4-es sorozatba. tõség van a tudás ellenõrzésére is. az OpenOffice.org memóriaigényével. A legnagyobb elõnye, hogy a HTML Mozilla, és Thinderbird ismerete nélkül is könnyedén A programok: Ez a hármas méltán népszerû webes lészíthetjük el a kívánt tanfolyamot. KWord – szövegszerkesztõ körökben. A Mozilla egy minden KSpread – táblázatkezelõ igényt kielégítõ böngészõ/levelezõ/ Csontos Gyula KPresenter – bemutatót készítõ üzenõ/html-szerkesztõ alkalmazás, ([email protected]) Kivio – folyamatábra/grafikon készítõ a Firefox a legjobb, leggyorsabb és A Linuxvilág szakmai és Karbon 14 – vektoros rajzolóprogram a leginkább testreszabható böngészõ, CD-szerkesztõje. Szabadide- – képfeldolgozó a Thunderbird pedig ugyanez jében szívesen mászik Kugar – jelentéskészítõ a levelzõ programok között. hegyet és kerékpározik.

6 Linuxvilág Hír-lelõ

A teljesítmény bére Videokamera merevlemezzel A Sun újra feltalálta a gépidõ számlá- A JVC bejelentette, hogy Everio soro- zását – új, elosztott számítógép-háló- zatú digitális videokameráinak egy zati szolgáltatásáért ugyanis az igény- részében a jövõben 1”-os, 4 GB kapa- bevétel idõtartama alapján fizethetnek az ügyfelek. A szolgáltatás alapvetõen egy órás csomagokban vásárolható meg, az alapár pedig 1 dollár/pro- cesszor/óra. A gépidõ bérlése elsõsor- ban az elosztott rendszereken hatéko- nyan futtatható feladatok megoldásá- nál elõnyös. Ilyenek például a külön- bözõ szimulációk, modellezések és le- képezések, de a rendszer szabványos citású Microdrive merevlemezeket elosztott hálózatokra írt programok fog alkalmazni a felvételek tárolására. tesztelésére is alkalmas. A Sun elkép- A most bejelentett, digitális fényképe- zelései szerint a számítási teljesítmény zõgépként is használható két kamera- vásárlása hamarosan ugyanolyan ter- modell 2,12 MP felbontással dolgozik, © Kiskapu Kft. Minden jog fenntartva mészetes lesz, mint az egyéb közmû- és 10x zoommal rendelkezik. A gépek vek igénybevétele, sõt akár arra is le- súlya akkumulátorral és merevlemez- hetõségünk lesz, hogy világszerte szá- zel együtt 315 illetve 355 gramm. mításiidõ-nagykereskedõktõl vásárol- A JVC kameráiba emellett egy rendkí- junk erõforrásokat. vül kis méretû, mégis nagy teljesítmé-  www.sun.com/tech-center nyû MPEG-2 tömörítõ lapka is kerül, amely a változtatható tömörítési Beépített védelem aránynak köszönhetõen egy órányi A National Semiconductor új biztonsá- DVD minõségû, vagy 2-5 órányi gyen- gi lapkákat mutatott be. A SafeKeeper gébb minõségû felvétel rögzítését teszi Trusted Input/Output lapkákat aszta- lehetõvé. A merevlemez használata li és hordozható számítógépek alap- kapcsán érdekesség a cég által az lapjaira fogják építeni, feladatuk pe- üzembiztos használat elõsegítésére ki- dig az, hogy egy úgynevezett Trusted dolgozott megoldás: az apró merevle- Platform Module (TPM), egy be/kivi- mezt zselészerû anyaggal veszik kö- teli alrendszer és egy beágyazott bel- rül, amely mûködés közben ebben sõ program egyesítésével megvalósít- úszik, pontosabban lebeg. A meghajtó sák a Trusted Computing Group által egyébként megfelel a CompactFlash elõírt biztonsági szolgáltatásokat. szabványnak is, így hordozható gép- (Ezek gyakorlatilag a vírusok és be, egyéb készülékbe gond nélkül át- a betörések ellen védik a rendszert.) helyezhetõ, ha a felvételeket például át Az IBM már meg is kezdte a lapkák szeretnénk másolni vagy szerkeszteni. használatát. A TPM-ek lényegében  www.jvc.com/presentations/everio olyan mikrokontrollerek, amelyek feladata a számítógépeken használt Java 1.5 jelszavak, digitális tanúsítványok, A Sun elérhetõvé tette a Java 2 Platform titkosítási kulcsok biztonságos táro- Standard Edition legújabb, 5.0-s válto- lása, továbbá a gépek BIOS-ának, zatát. A belsõ változatszámát tekintve operációs rendszerének és alkalma- 1.5-ös kiadás igazán forradalmi válto- zásainak védelme a támadásoktól zásokat nem hozott, ellenben számos és a jogosulatlan hozzáférésektõl. helyen finomították, fejlesztették ké- Hasonló célokra szoftveres megol- pességeit. Új típusok bevezetésével dások is léteznek ugyan, ám ezeket próbálták megkönnyíteni a fejlesztõk – a cég képviselõinek állítása sze- munkáját, javítottak a felügyeleti lehe- rint – könnyebb támadni, mint tõségeken és a teljesítményen, vala- a hardveres megvalósítást. A National mint felfrissítették a felhasználói felü- Semiconductor lapkái nagy tételben letet is. A J2SE 5.0 teljes értékûen tá- mindössze 5 dollárba kerülnek, így mogatja a nemzetközi használatot és komoly költségnövelõ tényezõnek az OpenGL alapú hardveres gyorsítást. sem nevezhetjük õket. Letöltése a Sun oldaláról természete-  www.national.com/appinfo/ sen továbbra is ingyenes. advancedio  java.sun.com

www.linuxvilag.hu 2004. november 7 Hír-lelõ

LSB 2.0 Felfedezõút digitális kísérõvel tud kínálni a vevõnek, mintha jog- A Free Standards Group közzétette A Node nevû cég Explorer v2 megerõ- tiszta Windows rendszerrel kínálná a Linux Standard Base (LSB) második sített, elsõsorban kültéri használatra portékáját. Érdekes kérdés, hogy a Tá- változatát. A linuxos megoldások szánt, GPS-vevõvel is ellátott kézigépet vol-Keleten, Indiában és Oroszország- együttmûködését segítõ jelentett be. A gép ban hamarosan megjelenõ Windows szabvány újdonsága a kó- 400 MHz órajelû XP Starter Edition, a Windows XP lebu- dok együttmûködését segí- Intel XScale pro- tított, olcsó változata, amelyet a Micro- tõ ++ ABI (Alkalmazási cesszorra épül, soft a Linux ellenfelének szán, mennyi- Bináris Felület), valamint az és a hírek szerint re fogja átalakítani a vásárlási és szoft- IMP PowerPC 64 és az Intel illetve az Linux és Microsoft Pocket PC operációs verhasználati szokásokat. A Microsoft- AMD 64 bites processzorainak támo- rendszerrel egyaránt használható. nak nyilván az az érdeke, hogy az új gatása, továbbá számos kisebb alkotó- A géphez a Node adatgyûjtõ és újratöl- gépekre bármilyen változatban is, de eleme, alszabványa is megújult. Az tõ dokkoló állomásokat is kínál, a köz- jogtiszta Windows kerüljön. Az viszont egymással együttmûködni képtelen ponti felületet és követést pedig az kétséges, hogy a felhasználók egy tel- fejlesztési ágak sokak véleménye sze- Engine nevû megoldás teszi lehetõvé. jes értékû Linux terjesztés ellenében rint a legkiválóbb kezdeményezést is Az Explorer v2 320x240 képpont fel- hajlandóak lesznek-e pénzt adni egy képesek megölni – kiváló példa erre bontású érintõképernyõvel, multimé- lebutított rendszerért, vagy maradnak © Kiskapu Kft. Minden jog fenntartva a UNIX –, tehát nem véletlen, hogy diás képességekkel és vezeték nélküli a jelenlegi, nem jogtiszta megoldásnál. a Linuxot ettõl a sorstól óvni kívánó hálózati csatolóval rendelkezik, 256 LSB mögött olyan nagy cégek is felso- különbözõ színben rendelhetõ háza Marad a szemét rakoztak, mint például az IBM, a HP, vízálló, akkumulátorról elvileg akár Az IETF úgy döntött, hogy feloszlatja az Intel és az AMD, illetve gyakorlati- egy teljes napig is üzemeltethetõ. a levélszemét témakörével foglalkozó lag az összes nagy terjesztés készítõjét A készülék nemcsak ipari területeken munkacsoportját, mert annak munkája is megtaláljuk a támogatók sorában. állhatja meg helyét, de arra is alkal- gyakorlatilag leállt, lehetetlenné vált  www.freestandards.org mas lehet például, hogy egy szabadté- a Microsoft Sender ID javaslatával kap- ri múzeum látogatói önállóan, akár csolatosan kialakult viták miatt. A Mic- Asztali nagyokos személyre szabott multimédiás bemu- rosoft Caller ID megoldásból és a Sender A korábbi hasonló megoldásokhoz tatókkal segítve ismerkedhessenek Policy Frameworkbõl összeálló Sender ID képes határozottan olcsó, mégis hatal- meg az õket érdeklõ látnivalókkal. célja az lett volna, hogy a küldõ fél hi- mas tudású kommunikációs eszközt Eközben az üzemeltetõk pontosan fi- telesítésével megakadályozza a kéret- állított össze az Amstrad. gyelemmel tudják kísérni a látogatók len levelek továbbítását. Csakhogy Az E3 jelölésû készülék mozgását, megelõzhetik a tiltott terü- a Caller ID-vel kapcsolatosan a Micro- talán a videotelefonok- letekre való belépést, felismerhetik, soft rendelkezik bizonyos szabadal- hoz áll a legközelebb, hogy melyek a jellemzõ mozgásirá- makkal, amelyek miatt a MADRID ám színes kijelzõje és nyok, majd az elemzések alapján javí- (MTA Authorization Records In DNS) billentyûzete révén szö- tani tudják szolgáltatásaikat. munkacsoport mûködése – a részve- veges és multimédiás üzenete küldé-  www.nodeexplore.com võk jogi kérdésekben való egyetértés- sére, webezésre, videókonferenciára ének hiánya miatt – gyakorlatilag elle- és elektronikus levelek és faxok továb- A Windows felé vezetõ út Linuxszal hetetlenült. A munkacsoport feloszla- bítására, játékok futtatására és üzenet- van kikövezve? tása – részben talán a túlzott remények rögzítõként való használatra egyaránt Bár a számok azt sugallják, hogy – kü- miatt is – világszerte csalódottságot alkalmas. A páronként mindössze 100 lönösen Kelet-Európában, Latin-Ame- váltott ki. Ugyanakkor az eset nem kü- fontos, vagyis 37000 forintos áron rikában és Ázsiában – dinamikusan nõ lönösebben váratlan, hiszen a Microsoft megvásárolható készülékek csak a linuxos számítógépek aránya, által szabott feltételek miatt korábban Nagy-Britanniában kaphatók, ugyanis a Gartner kutatásai szerint a valóság már többen is elutasították a Sender ID az általuk elérhetõ szolgáltatások helyi közel sem fest ennyire jól: a Linux használatát. Azt még nem tudni, hogy szolgáltató vállalathoz kötöttek. operációs rendszerrel értékesített szá- az iparág szereplõi képesek lesznek-e A készülék kijelzõje 480x320 képpont mítógépek 80 százalékán ugyanis egyetlen általános megoldást kidolgoz- felbontású, belsejében kétmagos, a Linuxot elõbb-utóbb Windows váltja ni a levélszemét problémájára, vagy 150 MHz órajelû, 32 MB Flash és fel - sok esetben korántsem jogtiszta többféle, egymással együttmûködni 32 MB RAM memóriával gazdálkodó forrásból. (Hozzátenném: a folyamat képtelen rendszer fog létrejönni. Texas Instruments processzort találunk. hazánkban a Sulinet program kereté- Annyi bizonyos csak, hogy a szemét Az eszköz késõbbi bõvítését többek ben eladott gépek esetében figyelhetõ egyelõre marad a postaládákban. közt USB kapu teszi lehetõvé, a szol- meg a legjobban.) A Linux látszólagos gáltatóhoz alapesetben 56 kb/s sebes- terjedését az indokolja, hogy alkalma- Medgyesi Zoltán ségû modemmel kapcsolódik. Operá- zásával az eladó megtakaríthatja az ([email protected]) ciós rendszere a 2.4.18-as Linux rend- operációs rendszer árát – amelynek A Linuxvilág hírszerkesztõje. szermagra épül, alapját a MontaVista költsége különösen az alsó kategóriás Szabadidejét legszívesebben összeállítása adja. gépeknél lehet komoly tényezõ. Ha a barátnõjével tölti, szeret  www.amstrad.co.uk Linuxot telepít, akkor kedvezõbb árat autózni és bográcsban fõzni.

8 Linuxvilág Láttuk-hallottuk

Mi újság a rendszermag fejlesztése körül?

Wichert Akkerman jó ideje próbál Debian csomagké- egyébként egészen jól áll a 2.5-ös és 2.6-os idõke- szítõt adni a magforrásokhoz, az RPM- készítõ mellé. retben, ami azért is jó hír, mert mostanra határozot- A 2003. októberi próbálkozása meglehetõsen rosszul tan kedveltté vált a felhasználók körében. Bár sokan volt idõzítve, hiszen a 2.6-os tesztsorozat közepére még mindig ragaszkodnak a /proc rendszerhez, esett. Wichert abban az idõben fejezett be némi mun- a program finoman kiigazítja õket. kát a folton, de a jelek szerint titokban tartotta 2004. júniusáig, amikor újra megpróbálta közzétenni. Most, Az NTFS fájlrendszerek írásának támogatása nem ép- hogy a a 2.6.6-os változat körül még mindig van némi pen a számítástechnika Szent Grálja, de a felhaszná- mozgolódás, Wichert foltja sokkal jobb fogadtatásra lók körében folyamatos igény van a támogatására. lelt, és úgy néz ki, hogy felveszik azt a rendszermagba. Anton Altaparmakov, nemrég jelentett be egy újabb fejlesztési lépést, nevezetesen a fájlrendszerben már Hosszú ideig Mel Gorman tartotta fenn a 2.4-es és meglévõ fájlok felülírásának képességét. Ezzel együtt a 2.6-os Virtual Memory Subsystem (Virtuális me- az NTFS meghajtó némi házimunkát is ellát, amit ko- mória alrendszer) hálózati dokumentációját. Linus rábban kézzel kellett végeznünk, hogy elkerüljük a sé-

Torvalds meglepõ lépése után, amikor a korai 2.4-es rüléseket. Az NTFS még nincs kész igazán, s így in- © Kiskapu Kft. Minden jog fenntartva kiadások után megpróbálta teljes egészében lecse- kább csak azok használják, akiknek a régi lemezeikrõl rélni az alrendszert, a dokumentáció hiányos lett, adatokat kell másolniuk, de úgy tûnik, eljön az idõ, vagy el is tûnt. Mel erején felül dolgozott, hogy leírja amikor teljes NTFS támogatottság lesz Linux alatt is. a memóriakezelõ belsõ mûködését, majd ingyene- sen hozzáférhetõvé tegye. Végül a Prentince Hall A PC9800 alrendszert kiveszik a 2.6-os fából. A hard- megszerezte a munkáját, és Bruce Perence Open ver elavult, ami nem feltétlenül ok arra, hogy eltávolít- Source Series (Nyílt forráskódú sorozat) részeként sanak a rendszermagból egy szolgáltatást, de ha hoz- ki fogja adni papíron is. Az Understanding the Linux zátesszük azt is, hogy a PC9800 kód karbantartása Virtual Memory Manager (A Linux virtuálismemória- megszûnt, akkor rögtön világosabbak a döntés mö- kezelõ) címû könyv a Linux rendszermag egyik leg- gött meghúzód indokok. Linus Torvalds világosan ki- összetettebb elemének átfogó vizsgálata. jelentette, hogy nem számít, ha vannak olyan felhasz- nálók, akik méltatlankodnak egy szolgáltatás meg- A rendszermag és a C fordító kapcsolata állandó vi- szüntetése miatt. Ha egy kód hibás, és senki nincs, tákra ad okot. Amikor a rendszermag egy változata aki kijavítsa, akkor mennie kell. Természetesen a sza- nem hajlandó lefordulni, gyakran nem teljesen vilá- badalmazott BitKeeper kódfelügyeleti rendszernek gos, hogy a C kóddal van baj, vagy azzal, ahogy köszönhetõen viszonylag könnyû újra visszatenni egy a fordító megpróbálja azt gépi kóddá alakítani. Mos- kódot a rendszermagba, így ha elõkerülnek a karban- tanában Linus Torvalds és mások elkezdtek azon ta- tartásra vállalkozó emberek, nincs akadálya a PC9800 nakodni, hogy a Linux jövõbeni változataiban, talán „reinkarnációjának”. Az elárvult kódok eme könyörte- a 2.8-as vagy a 3.0-s sorozatban 3.3-masnál na- len kezelésének egyébként jótékony hatása is lehet, gyobb GCC változatra lesz szükség. Linus a korábbi hiszen a „haláleset” felkeltheti olyan emberek figyel- változatok rossz álnévkezelésére hivatkozott, de mét, akik esetleg elvállalnák a karbantartást. a fordítóprogramon dolgozóknak valószínûleg meg- vannak a saját elképzeléseik azzal kapcsolatban, A jó öreg UMSDOS szolgáltatás szintén leeshet hogy pontosan mi is a rossz a kódjukban és mi a 2.6-os fáról. A régi, szép idõkben az UMSDOS arra nem. Nem szokatlan, hogy a rendszermag alkalma- szolgált, hogy segítségével a Linuxot egy meglévõ zásfrissítést igényel, de minden alkalommal, amikor MS-DOS partícióra telepíthessük anélkül, hogy az ilyen történik, az összeférhetõségben történt szaka- ott mûködõ operációs rendszer mûködésképtelenné dás más alkalmazások frissítését is kikényszeríti. válna. Így minden kockázat nélkül kísérletezhettek Az optimális nyilván az lenne, ha egyáltalán nem a kezdõ felhasználók. Ma már nem nagyon használ- volna szükség alkalmazásfrissítésre. ják, ezt a megoldást, a történelmi értéke azonban olyannyira jelentõs, hogy Linus Torvalds, Andrew Greg Kroah-Hartman hivatalosan is vállalta a sysfs Morton és a többi rendszermag-karbantartó igazán karbantartójának szerepét. Christian Gmeiner bent hagyhatná az utókor kedvéért. Sajnos az kényszerítette rá, hogy a nyilvánosság elé lépjen, UMSDOS a 2.6-os változatban nem mûködik, ami az amikor megpróbálta megtalálni a sysfs karbantartó- elõzõek ismeretében erõsen csökkenti ennek az ját, hogy feleljen egynéhány a kódolással kapcsola- esélyét. Ha nem akad, aki meggyógyítja, ez az esz- tos kérdésre. Korábban senki nem szerepelt köz, amely olyan sok embernek segített megismer- a MAINTAINERS (Karbantartók) fájlban, de Greg azt kedni a Linux-szal, csupán emlék marad. mondta, hogy valamikor közzétesz egy foltot, amely a saját elérhetõségeivel frissíti. A sysfs projekt Zack Brown (Linux Journal 126. szám)

www.linuxvilag.hu 2004. november 9 Láttuk-hallottuk

A hónap szakmai tanácsai

Békén hagynak a levélférgek? dõ hálózati támadások célpontjává. Ez nem azt A kérdésem: miért kellene Linuxot használnom? jelenti, hogy biztonságosak, azt viszont igen, Jelenleg Microsoft Windows XP-t használok. hogy olcsóbb lehet a rendszer és kevesebb idõt A gépet leginkább a világháló böngészésére, igényel a rendszer biztonságának fenntartása. néha levelek küldésére, zeneletöltésre és néha • a Microsoft Worddel való szövegszerkesztésre Milyen tapasztalatokkal rendelkezel? használom. Éppenséggel nem vagyok egy számí- Ha a Linux még nem elég kényelmes számodra, tógépes zseni. Érdemes Linuxot használnom? hajlandó vagy erre egy kis energiát fordítani? Vagy tartsak ki a most használt rendszernél és A jól kidolgozott rendszercsomagok és kézre ál- ne is foglalkozzak vele többet? A vírusok, férgek ló felhasználói felületek sokkal könnyebbé tették A Linux Journal és kémprogramok miatt nemrég fontolgatni kezd- a Linux kezelésének elsajátítását, de ha sem honlapján számtalan tem, hogy valami mást tanuljak meg. Köszönöm idõd, sem kedved nincs a tanuláshoz, nem éri gond megoldásához a segítséget. meg az erõfeszítést. találhattok további Henry Stone,  • Elvárás számodra a licencelés rugalmassága? segítséget. A Sunsite [email protected] A Linux megvásárolható kereskedelmi terjesztõ- tüköroldalait, a gyakori A fenyegetõ biztonsági kérdésekkel kapcsolatban tõl, de ingyen is letölthetõ. Ha úgy döntesz, kérdéseket és az egyéb sok mindent megtudhatsz, ha ellátogatsz hogy a jelenlegi terjesztõd nem tetszik, más for- útmutatásokat a a mozilla.org oldalra a Firefox ingyenes rást választhatsz, és biztos lehetsz benne, hogy www.linuxjournal.com böngészõprogramért vagy a Thunderbird levelezõ- a korábban használt programjaid ugyanúgy mû- honlapon olvashatjátok programért, amelyek a mostani operációs rendsze- ködni fognak. el. A rovatban közzétett reden is használhatóak. A legkönnyebben akkor vált- hatsz Linuxra, ha épp egy olyan projekten dolgozol, Majdnem minden operációs rendszer ki tudja elégí- válaszokat Linux-szak- ami a Linux megtanulására ösztönöz, úgy tûnik, teni az általad felsorolt kívánalmakat. Ha a jelenleg értõk kis csapata készí- most nem vagy ilyen helyzetben. használt környezet megfelel az elvárásaidnak és nin- tette el. További kérdé- csenek további biztonsági vagy rugalmassági igé- seiteket szívesen fogad- Ha a Linuxra való átállást fontolgatod, légy óvatos nyeid, nincs ok a lecserélésére. Viszont ha meg sze- retnél ismerni egy biztonságosabb vagy sokoldalúbb ják (angol nyelven) a a zeneletöltésekkel, kerüld a másolásvédett formá- tumokat. A zenefájlokhoz alkalmazható másolásvé- operációs rendszert, a Linux kitûnõ választást jelent www.linuxjournal.com/ dõ rendszerek két legnagyobb gyártója jelen van az a kipróbálásra. lj-issues/techsup.html operációs rendszerek piacán is és nem támogatja címen, ahol csak egy a Linuxot. Tarts ki az MP3, Ogg Vorbis és FLC for- Minden új Linux-felhasználónak azt javaslom, hogy kérdõívet kell kitöltene- mátumoknál, amelyek nem másolásvédettek, és vessen egy pillantást a Knoppix rendszercsomagra tek, de a [email protected] így könnyen áthelyezhetõek lesznek az új gépre (a www.knoppix.net címen érhetõ el). A csomag nem igényel telepítést, egyszerûen a CD-rõl futtat- címre levelet is írhattok. egy fejlesztés esetén. Don Marti, ható. Emiatt kicsit lassabban fut, mint egy merev- A levél tárgyában  [email protected] lemezre telepített rendszer, de érintetlenül hagyja szerepeljen a „BTS” az eredeti operációs rendszert. Így alkalmunk van kulcsszó. A kérdés kitûnõ, olyasvalamire kérdez rá, amit min- a Linux, OpenOffice.org, Mozilla és a többi alkal- denkinek meg kell fontolnia, mielõtt bármilyen ope- mazás kipróbálására, mielõtt az átállás mellett rációs rendszert a gépére telepítene. Egy operációs döntenénk.  rendszer csak annyira lehet jó, mint a rajta futtatha- Chad Robinson, [email protected] tó programok. Ha a jelenlegi platform kielégíti az igényeidet, semmi okod a váltásra. Gondolkozz el Szabványos blade-kiszolgálók a következõ kérdéseken: Létezik valamilyen szabvány a blade-kiszolgálók fel- építésének formátumára vonatkozóan? Jelenleg • Szükséged van a hordozhatóságra? többféle toronnyal és kerettel rendelkezem, amelyek A Linux számos különféle felépítésû számító- elsõdlegesen az ATX formátumot használják. Helyta- gépen futtatható, így elméletileg egy Apple karékosság céljából fontolóra venném egy blade- hordozható gépen is használhatjuk ugyanazt kiszolgáló alkalmazását, de nem szeretnék emiatt a környezetet. egy gyártóhoz kötõdni, különös tekintettel a gyártók közt manapság tapasztalható gyors termékváltások- • Mennyire fontos számodra a biztonság? ra. Összeilleszthetõk a különbözõ gyártóktól szárma- A Linux nem igényel gyakori foltozást és a leg- zó blade-keretek? Úgy tûnik, erre a kérdésre a gyár- több folt a rendszer újraindítása nélkül telepíthe- tók sem igazán tudják a megfelelõ választ. tõ. A Linux rendszerek ritkán válnak az önmûkö- Michael Barnes,  [email protected] © Kiskapu Kft. Minden jog fenntartva

10 Linuxvilág Láttuk-hallottuk

«

A kérdésed a blade-kiszolgálókkal kapcsolatban • linux nofb rávilágít az iparág mai helyzetére és a felhasználók • linux resolution 1024x768 egyik fõ kifogására. A blade-kiszolgálók viszonylag • újak, és eddig még nem született szabvány a csat- linux mediacheck lakozó tartópanelekre vagy magára a blade- formátumra. Minden gyártónak megvan a saját, Bármelyiket is választottam, a rendszer újraindult, zárt formátuma. A következõ években ez változhat, miközben a következõket láttam a képernyõn: de gyors eredményekre nem lehet számítani. A blade-kiszolgálók gyártói a csatlakozó tartópane- loading vmlinuz lek és szerelõkeretek költségeit elenyészõnek te- loading initrd.img kintik a kiszolgáló-berendezések egészét tekintve, ezért nem is nagyon törekednek egy közös formá- Az egyetlen sikeres próbálkozásom a memtest86 tum kialakítására. Jellemzõen minden csatlakozó lehetõség kiválasztása volt, ami elindította a memó- tartóelem 3-8 egység magas, amelybe 8-20 lap ria ellenõrzését és órákig futott bármilyen esemény bárhova beilleszthetõ. nélkül. © Kiskapu Kft. Minden jog fenntartva

A különbözõ gyártóktól származó szerelõkeretek A VMware-t is használom, ezért úgy gondoltam, együtt tudnak mûködni egy fiókban, így ha gyártók adok egy esélyt a Fedora 2-nek a VMware virtuális akarnál váltani, általában telepíthetnél új kereteket. gépként való futtatására. Ez mûködött is, de nem Valójában a blade-kiszolgálók gyártói nem támogat- így szeretném használni, telepíteni szeretném egy nak sokáig egy bizonyos tartópanel-formátumot, külön merevlemezre. A rendszerem és a VMware így ha egy gyártót választunk is ki, elõfordulhat, közti látható különbség az, hogy a VMware BIOS hogy különbözõ szerelõkereteink lesznek ugyanab- csak egy IDE lemezt lát, egy virtuális lemezt, amire ban a fiókban. szerintem a Linux /dev/sda egységként hivatkozik. Chad Robinson, A számítógépem felépítése a következõ:  [email protected] • BIOS: American Megatrends v2.51 • Elakadt Fedora telepítés Alaplap: Asus P4P800 Deluxe alaplap, Intel P865PE lapkakészlet, Socket 478 Azért írok, mert gondjaim vannak a Fedora 2 telepí- tésével. A rendszer újraindulása miatt nem jutottam • Processzor: Intel Pentium 4 2.4GHz túl messzire. 2004 május 28-án a letöltöttem a CD- • Memória: 256MB PC3200 DDR RAM ROM ISO képfájlokat Red Hat tükörkiszolgálójáról a (egyetlen egység, így 400MHz-en fut)

download.fedora.redhat.com/pub/fedora/linux/ • Merevlemez: Primary Master – EIDE 20GB, core/2/i386/iso Secondary Master – Samsung DVD/CDRW combo meghajtó és Third Master – SATA 80GB címrõl és lemezre is írtam azokat. A képfájlok május merevlemez 13-i idõpecséttel vannak ellátva, ha jól emlékszem. • CD-ROM meghajtó: Samsung DVD/CD-RW combo meghajtó A lemezek jónak tûnnek. A CD1-rõl indítva a rend- • szert rendesen megjelenik a Fedora 2 üdvözlõképer- Videokártya: ATI RADEON 9200se nyõje és emblémája, az -tõl -ig terjedõ 128MB AGP 8x választási lehetõségek, az utasítás, hogy üssek Entert a grafikus telepítéshez, vagy gépeljem be Annak ellenére, hogy a BIOS támogatja az óra- a linux text szöveget a szöveges telepítés elindításá- jel növelést, ki van kapcsolva ez a lehetõség. hoz. Ennél a pontnál ütköztem a problémába. A kö- Azt gondolván, hogy valamilyen BIOS-beállítás vetkezõkkel próbálkoztam sikertelenül: lehet a háttérben, visszatöltöttem az alapértel- mezett beállításokat, de semmilyen változást • Egyszerû ENTER-leütés a grafikus telepítéshez. nem tapasztaltam.

• linux text Amikor a fenti módon próbáltam telepíteni a Fedora • linux noprobe 2-t, a 20 GB-os merevlemezt a primary master IDE- csatolóra kötöttem. Mivel ez a próbálkozásom nem • linux askmethod járt sikerrel, megpróbálkoztam a 80 GB-os SATA le- • linux skipddc mezzel is a third master IDE-csatolón. Mindkét eset-

www.linuxvilag.hu 2004. november 11 Láttuk-hallottuk

«

ben fizikailag leválasztottam a másik merevlemezt nekem is az a véleményem, hogy valamilyen inkom- a számítógéprõl és a BIOS-ból is eltávolítottam a be- patibilitásnak kell lennie az FC2 és a géped között. jegyzést, vagyis ütközésrõl szó sem lehet. Ugyanez a gondom adódott nekem is, amikor egy Epia 800-as gépen szerettem volna elindítani Minden próbálkozásom kudarcot vallott. Arra a kö- az FC2-t. vetkeztetésre jutottam, hogy vagy BIOS-probléma lehet az ok, vagy az alaplapom nem megfelelõ. To- Esetleg érdemes lehet egy olyan FC2 indítóle- vább már nem tudok nyomozni az ügyben, mivel el- mezt keresni, ami a gépednek jobban megfelel. értem a tárgyra vonatkozó számítástechnikai ismere- Nekem sikerült ilyet találnom a fedora.redhat.com teim határát. címen lévõ Bugzilla felületen végrehajtott keresés során. A BIOS-frissítéssel várnék inkább addig, amíg biztos Christopher Wingert, nem lesz, hogy ez a hiba oka. Korábban már több-  [email protected] ször frissítettem BIOS-t, de a szívem minden alka-

© Kiskapu Kft. Minden jog fenntartva lommal ki akart ugrani a helyébõl. Az alaplap leírása Próbáld meg a linux noacpi, linux szerint a BIOS frissítését nem lehet elhibázni, de én disableapic és linux noacpi disableapic még mindig vonakodom. indítási lehetõségeket. Néhány alaplap és BIOS kombináció összeütközésbe kerül a Linux APIC és A 20 GB-os merevlemez egy idõsebb Cobalt Cube ACPI szolgáltatásaival, ezek tiltása mindig kipróbá- gépbõl származik, amin egy darabig netBSD mûkö- lásra érdemes lehetõség. dött biztonsági háttérkiszolgálóként. Miután a me- Chad Robinson, revlemezt áttettem a fent leírt gépbe, több másféle  [email protected] Linuxot, így Debian Woody-t és a LindowsOS 4.5 változatát is feltelepítettem rá és semmilyen hibát Használok egy Linux proxy-kiszolgálót. Kétféle mód- nem tapasztaltam. szerrel tudok a világhálóhoz kapcsolódni, az egyik vezeték nélküli módszerrel, a másik pedig egy DSL- Végül annyit, hogy nem próbáltam ki a CD1 leme- modemen keresztül történik. zen lévõ README-en.html fájl által leírt pen-boot le- hetõséget, mivel nem rendelkezem USB pen drive Milyen beállítással vegyem rá a proxy-kiszolgálót eszközzel. A gépemet alkatrészenként állítottam arra, hogy mind a két módszert használja a kap- össze és hajlékonylemezes meghajtóval sem rendel- csolat létrehozásakor, vagyis ha az egyik éppen kezem, úgyhogy a hajlékonylemezrõl történõ rend- nem mûködik, akkor is elérjem a világhálót anél- szerindítás sem jöhet szóba. kül, hogy a beállításokat megváltoztatnám? Jelenleg két proxy-kiszolgálót használok, Megkérdeztem a Fedora támogatói fórumokat ha az egyik kapcsolat nem mûködik, a másikat is, akik rögtön azt ajánlották, hogy ellenõrizzem indítom el. a lemezeimet. Mivel a rendszer rögtön az John Van De Veer, initrd.img betöltése után újraindul, a lemezeket  [email protected] nem tudtam a Linuxszal ellenõrizni. Ezután jött az ötlet, hogy a VMware virtuális gépen ellen- Használd egyszerûen az alábbi parancsot: õrizzem, ami megtörtént és semmilyen hibát nem találtam. /sbin/ip route add default equalize nexthop via A.B.C.D dev eth0 weight 1 Kezdek arra a következtetésre jutni, hogy vala-  mi programhibáról van szó, vagy a gépem BIOS- nexthop via E.F.G.H dev eth1 weight 1 ában vagy a Fedora 2 magjának initrd.img fájljá- ban. Nem tudom, mi lehetne a következõ lépés, Az A.B.C.D helyére írd be a kapcsolatod IP-címét, nem szeretném a fejlesztõket zaklatni, akik álta- az eth0 és eth1 értékeket pedig a ténylegesen lában amúgy is valamelyik támogatói fórumra használt eszközökkel helyettesítsd. Ezzel tájékoz- Linuxot hivatkoznak. Teljesen tanácstalan vagyok, segít- tatjuk a , hogy ugyanolyan súllyal használ- hatja a két útvonalat és így egyensúlyban tartható sen valaki! Johnny, a forgalom. Mario Bittencourt,  [email protected]  [email protected] Nagyszerû munkát végeztél a hiba felderítésével Linux Journal 2004. október, 126. szám kapcsolatban. Ahogy korábban te is említetted,

12 Linuxvilág Szaktekintély

Bevezetés az ALSA alapú hangprogramozásba A 2.6-os rendszermag hangkezelõ alrendszerének minden szolgáltatását egyetlen teljes értékû API-n keresztül vehetjük igénybe.

z ALSA az Advanced Linux Sound Architecture elektromos jelekké. Az analóg-digitális átalakítók (analog- © Kiskapu Kft. Minden jog fenntartva (fejlett linuxos hangkezelõ alrendszer) rövidítése. to-digital converter, ADC) az analóg feszültségeket diszkrét Rendszermag-illesztõprogramokból, egy alkal- értékeknek feleltetik meg, ezeket mintáknak nevezzük. Amazásprogramozási felület (application programming A mûveletet rendszeres idõközönként végzik el, amit min- interface, API) könyvtárból és Linux alatti hangkezelést tá- tavételi idõnek hívunk. Ha a mintákat egy digitális-analóg mogató segédprogramokból áll. Írásomban szeretném rövi- átalakítóra küldjük, majd kimeneti átalakítóra, például egy den áttekinteni az ALSA Projectet és szoftveres összetevõit. hangszóróra továbbítjuk, akkor helyre tudjuk állítani az Elsõsorban az ALSA PCM felületének programozásával fo- eredeti hangot. gok foglalkozni, a próbálgatást, az ismerkedést pedig kód- A minták méretét bitekben szokták megadni, ez az egyik részletek mellékelésével szeretném elõsegíteni. olyan tényezõ, amely meghatározza, hogy a digitális formá- Az ALSA megismerése nemcsak azért lehet érdekes, mert tummal milyen pontosan tudjuk ábrázolni a hangot. újdonság, hanem mert nem ez az egyetlen hangkezelõ API. A hangminõség másik fontos befolyásoló eleme a mintavé- Az ALSA kiváló választás, ha alacsony szintû hangkezelõ el- teli gyakoriság. A Nyquist-tétel kimondja, hogy a legmaga- járásokat szeretnénk megvalósítani, vagy különleges, a töb- sabb visszaadható frekvencia egyenlõ a mintavételi frek- bi hangkezelõ API által nem támogatott szolgáltatásokat vencia felével. szeretnénk használni. Ha meglévõ hangkezelõ alkalma- zással rendelkezünk, dönthetünk úgy, hogy az ALSA ALSA alapismeretek illesztõprogramok natív támogatásával bõvítjük. Ha a hang- Az ALSA különféle hangkártyákhoz készült illesztõprog- kezelés kevésbé érdekel bennünket, és például csak hang- ramok gyûjteménye, valamint tartalmaz egy API könyvtá- fájlokat szeretnénk lejátszani, akkor a magas szintû hangke- rat is, ez a libasound. Az alkalmazásfejlesztõk számára az zelõ eszközkészletek valamelyike, mint az SDL, az OpenAL API használata javasolt, és nem a rendszermag felületé. vagy a saját terjesztésünkben szereplõ egyéb megoldás szá- A könyvtár magasabb szintû és a fejlesztõk számára barát- munkra jobb választás lehet. Az ALSA használatakor gya- ságosabb felületet biztosít, továbbá lehetõvé teszi az eszkö- korlatilag az ALSA támogatására képes rendszermaggal zök logikai elnevezését, így a fejlesztõknek nem kell elvesz- ellátott rendszerekre korlátozzuk önmagunkat. niük az alacsony szintû részletekben, mint például az esz- közfájlok kezelése. Az ALSA története Az OSS/Free illesztõprogramok programozása ezzel szem- Az ALSA Project azért indult el, mert a Linux rendszermag ben rendszermag szintû hívásokkal történik, amihez a fej- hangkezelõ illesztõprogramjai (az OSS/Free illesztõprogra- lesztõknek eszközfájlneveket kell megadniuk, illetve szá- mok) aktív gondozás nélkül maradtak, így az újabb hangke- mos mûveletet ioctl hívásokkal kell elvégezniük. zelõ megoldásokat sem voltak képesek támogatni. A terve- A visszirányú együttmûködés lehetõsége érdekében az zetet Jaroslav Kysela indította, aki korábban egy hangkártya- ALSA olyan rendszermagmodulokat is tartalmaz, amelyek illesztõprogramot készített. Idõvel egyre több fejlesztõ csat- emulálják az OSS/Free hangkezelõ illesztõprogramokat, így lakozott hozzá, egyre több hangkártya támogatása valósult a legtöbb hangkezelõ alkalmazás módosítások nélkül is to- meg, az API felépítése pedig fokról fokra finomodott. vább használható. Az OSS/Free API-t rendszermagmodulok A 2.5-os sorozat fejlesztése során az ALSA a Linux rendszer- nélkül a libaoss burkolókönyvtárral lehet emulálni. mag hivatalos része lett. A 2.6-os rendszermag megjelenésé- Az ALSA a beépülõ modulokat is támogatja, ezekkel új vel az ALSA az üzembiztos ág részévé vált, és várhatóan eszközök támogatása is megvalósítható, akár teljes egészé- széles körben el fog terjedni. ben szoftveresen megvalósított képzetes eszközök létreho- zására is mód nyílik. Az ALSA számos parancssori segéd- A digitális hangkezelés alapjai programot tartalmaz, egyaránt található köztük keverõ, A hangok lényegében változó légnyomáshullámok, ezeket lejátszóprogram, valamint az egyes hangkártyák különle- valamilyen átalakítóval, például mikrofonnal formáljuk ges képességeinek vezérlésére szolgáló kiegészítõk.

www.linuxvilag.hu 2004. november 13 Szaktekintély

Az ALSA felépítése Az ALSA API az általa támogatott fontosabb felületek alap- ján osztható fel: • Vezérlõfelület: Általános célú felület a hangkártyák re- gisztereinek kezelésére és az elérhetõ eszközök lekérde- zésére. • PCM felület: A digitális hangfelvételek és lejátszások ke- zelésére szolgáló felület. A továbbiakban errõl a felület- rõl lesz szó, ugyanis a digitális hangkezelõ alkalmazá- sokban ez jut a legfontosabb szerephez. • Nyers MIDI felület: Az elektronikus hangszerek terén elterjedt szabvány, a MIDI (Musical Instrument Digital Interface, digitális hangszer felület) támogatását valósít- ja meg. Ez az API a hangkártyán található MIDI busz elérését teszi lehetõvé. A nyers interfész a MIDI esemé- 1. ábra Az alkalmazáspuffer nyekkel közvetlenül dolgozik, a protokoll és az idõzíté- sek kezeléséért a programozó felelõs. A puffer méretét ALSA könyvtárhívásokkal lehet beállítani. © Kiskapu Kft. Minden jog fenntartva • Idõzítõ felület: A hangesemények szinkronizálása céljá- A puffer akár egészen nagy méretû is lehet, ám ekkor tar- ból biztosítja a hangkártyákon található idõzítõ eszkö- talmának egyetlen mûveletben való továbbítása elfogadha- zök elérését. tatlan mértékû késleltetéshez, lappangási idõhöz vezet. En- • Sorrendvezérlõ felület: A nyers MIDI felületnél magasabb nek elkerülése érdekében az ALSA a puffert idõszak soroza- szintû MIDI programozó és hangkeltõ felület. A MIDI tokra osztja (ezeket OSS/Free alatt töredékeknek hívják), és protokoll és az idõzítések túlnyomó részét képes kezelni. az adatokat idõszak egységekben továbbítja. • Keverõ interfész: A hangkártyákon lévõ, a jeleket irányí- Egy idõszak kereteket tartalmaz, ezek mindegyike adott tó és a hangerõszinteket szabályozó eszközöket vezérli. idõpontban rögzített mintákat foglal magába. Egy sztereó A vezérlõ felületre épül. eszköznél egy-egy keretnek két csatornához kell mintákat tartalmaznia. Az 1. ábrán – elméleti értékeket használva – Eszköznevek a pufferek idõszakokra, keretekre és mintákra osztását A könyvtári API eszközfájlok helyett logikai eszköznevek- szemléltettem. Ebben az esetben a bal és a jobb oldali csa- kel dolgozik. Az eszköznevek valós, fizikai eszközök és be- torna adatai felváltva szerepelnek a keretekben; ezt átlapolt épülõ modulok egyaránt lehetnek. A hardvereszközök módnak nevezzük. A nem átlapolt mód támogatása – ennél a hw:i,j formátumot használják, ahol az i a kártya számát, az egyik csatorna adatai a másik csatorna adatai után szere- a j pedig az adott kártyán lévõ eszközt adja meg. Az elsõ pelnek – szintén megoldott. hangeszköz a hw:0,0. Az írásomhoz tartozó példákban sze- replõ default (alapértelmezett) álnév az elsõ hangkezelõ Alul- és túlcsordulás eszközre hivatkozik. A beépülõ modulok egyéb egyedi ne- Ha egy hangeszköz aktív, akkor folyamatos adattovábbítás veket használnak, a plughw: például olyan beépülõ modul, folyik a hardver- és az alkalmazáspuffer között. Adatrögzítés- amely hardvereszközhöz biztosít hozzáférést, de egyéb, kor (felvételkor), ha az alkalmazás nem olvassa ki elég gyor- a hardvereszköz által alapesetben nem támogatott szolgál- san a puffert, akkor annak tartalma a körkörös mûködés mi- tatásokat is biztosít, például a mintavételi gyakoriság meg- att felülírásra kerül az új adatokkal. Az ilyen típusú adatvesz- változtatását. A dmix és a dshare beépülõ modul segítségé- tést túlcsordulásnak nevezzük. Ha lejátszáskor az alkalmazás vel több adatfolyamot tudunk egyesíteni, illetve egyetlen képtelen kellõ gyorsasággal biztosítani a szükséges adatokat, folyamot dinamikusan tudunk megosztani különbözõ alkal- a puffer kiürül, ami alulcsordulási hibát eredményez. Az mazások közt. ALSA leírásában elõfordul, hogy mindkét hibára az XRUN ki- fejezéssel hivatkoznak. A helyesen tervezett alkalmazások az Hangpufferek és adatátvitel XRUN hibák számát a lehetõ legkisebbre szorítják le, és fellé- A hangkártyák rendelkeznek egy pufferrel, amely tárolja pésük után is képesek folytatni mûködésüket. a rögzített mintákat. Ha a pufferben elegendõ minta gyûlt fel, megszakítást hoz létre. A rendszermag hangkezelõ illesztõ- Egy átlagos hangkezelõ alkalmazás programja közvetlen memória-hozzáférést (direct memory A PCM felületet használó programok általában az alábbi access, DMA) használ a minták továbbítására a megfelelõ al- lépéseket követik: kalmazás memóriabeli pufferébe. A lejátszás hasonlóan folyik, • a felület megnyitása rögzítés vagy lejátszás céljából DMA használatával az alkalmazás memóriabeli pufferének • a hardver beállításainak megadása tartalma a hangkártya hardveres pufferébe továbbítódik. • (hozzáférési mód, adatformátum, csatornák, gyakori- A hardverpufferek körkörös elven mûködnek, vagyis vé- ság stb.) gük elérésekor az újabb adatok beírása az elejükre történik. A hardver- és az alkalmazáspufferben egyaránt mutató jelzi Az adatok feldolgozása közben: az aktuális írási-olvasási helyzetet. A rendszermagon kívüli • PCM adatok olvasása (felvétel) összetevõk közül csak az alkalmazáspuffer érdemes figye- • vagy PCM adatok írása (lejátszás) lemre, ezért a továbbiakban csak ezzel foglalkozunk. • interfész lezárása

14 Linuxvilág Szaktekintély

A program fennmaradó része különféle PCM adattípusokon 1. kódrészlet Néhány PCM típus és formátum lépeget végig, kezdve az adatfolyam típusokkal. Az ALSA az megjelenítése utoljára számba vett értékhez szimbolikus neveket is szol- gáltat, illetve egy segédfüggvénnyel egy karakterláncban rö- #include vid leírást is képes mellékelni az egyes értékekhez. Amint a kimenetbõl is látható, az ALSA rengeteg, a saját rendszere- int main() { men például 38 különféle formátum támogatására képes. int val; A programot fordításkor elõbb össze kell kapcsolni az ALSA libasound könyvtárával, ezt az esetek többségében a printf(“Az ALSA könyvtár változatszáma: %s\n”, -lasound kapcsolóval tehetjük meg. Az ALSA könyvtári SND_LIB_VERSION_STR); függvények egy része használja a dlopen függvényt, illetve lebegõpontos mûveleteket végez, ezért a -ldl és a -lm kap- printf(“\nPCM adatfolyam típusok:\n”); csolóra úgyszintén szükség lesz. for (val = 0; val <= SND_PCM_STREAM_LAST; val++) A 2. kódrészlet az alapértelmezett PCM eszközt nyitja meg, printf(“ %s\n”, megad néhány beállítást, majd a megjeleníti a hardveres snd_pcm_stream_name((snd_pcm_stream_t)val)); beállítások túlnyomó részének értékét. Hangrögzítést vagy -lejátszást nem végez. Az snd_pcm_open hívással megtörté- printf(“\nPCM hozzáférési típusok:\n”); nik az alapértelmezett PCM eszköz megnyitása, illetve © Kiskapu Kft. Minden jog fenntartva for (val = 0; val <= SND_PCM_ACCESS_LAST; val++) a hozzáférési mód beállítása PLAYBACK-re, vagyis lejátszásra. printf(“ %s\n”, A függvény elsõ átadott értékében egy kezelõt (handle) ad snd_pcm_access_name((snd_pcm_access_t)val)); vissza, a késõbbi hívásokban ezzel történik a PCM adatfo- lyam manipulálása. A legtöbb ALSA könyvtárhíváshoz ha- printf(“\nPCM formátumok:\n”); sonlóan a függvény egy egész állapotértéket ad vissza, ha for (val = 0; val <= SND_PCM_FORMAT_LAST; val++) ez negatív, az hibára utal. Ebben az esetben ellenõrizzük if (snd_pcm_format_name((snd_pcm_format_t)val) a visszatérési értéket, az snd_strerror függvénnyel megje- != NULL) lenítjük a hibaüzenetet, végül kilépünk. A könnyebb átte- printf(“ %s (%s)\n”, kinthetõség érdekében a hibaellenõrzések túlnyomó részét snd_pcm_format_name((snd_pcm_format_t)val), kihagytam a példaprogramokból. Valódi alkalmazásban ter- snd_pcm_format_description( mészetesen minden API hívás visszatérési értékét ellenõriz- (snd_pcm_format_t)val)); ni kell, és gondoskodni kell a megfelelõ hibakezelésrõl. Ahhoz, hogy meg tudjuk adni az adatfolyam hardveres be- printf(“\nPCM alformátumok:\n”); állításait, kell foglalnunk egy snd_pcm_hw_params_t típusú for (val = 0; val <= SND_PCM_SUBFORMAT_LAST; változót; ezt az snd_pcm_hw_params_alloca makróval tehet- val++) jük meg. Következõ lépésként az snd_pcm_hw_params_any printf(“ %s (%s)\n”, függvénnyel elvégezzük a változó kezdeti értékadását, ek- snd_pcm_subformat_name(( kor az imént megnyitott PCM adatfolyamot is átadjuk. snd_pcm_subformat_t)val), Most API hívásokkal megadjuk a kívánt hardverbeállításo- snd_pcm_subformat_description(( kat, ehhez felhasználjuk a PCM folyamkezelõt és a hard- snd_pcm_subformat_t)val)); verbeállításokat tartalmazó adatszerkezetet. Az adatfolyamot átlapolt módra állítjuk, továbbá 16 bites mintaméretet, két- printf(“\nPCM állapotok:\n”); csatornás mûködést és 44100 b/s mintavételi gyakoriságot for (val = 0; val <= SND_PCM_STATE_LAST; val++) választunk. A mintavételi gyakoriságnál ügyeljünk arra, printf(“ %s\n”, hogy a hangeszköz nem biztos, hogy minden mintavételi snd_pcm_state_name((snd_pcm_state_t)val)); gyakoriságot megfelelõen támogat. A kívánt értékhez leg- közelebb álló és támogatott mintavételi gyakoriságot az return 0; } snd_pcm_hw_params_set_rate_near függvénnyel tudjuk ki- választani. A hardverbeállítások addig nem lépnek érvény- be, amíg az snd_pcm_hw_params függvényt meg nem hívjuk. A program fennmaradó része különféle a PCM adatfolyam- Az alábbiakban ténylegesen mûködõ kódrészleteket is látni ra vonatkozó beállításokat jelenít meg, köztük az idõszak fogunk. Mindenkinek javasolom, hogy fordítsa és futtassa hosszát és a pufferméreteket. A megjelenõ eredmények le ezeket saját Linux rendszerén, vizsgálja meg a kimenetet, a hangeszköztõl nagymértékben függenek. és próbálkozzon meg a javasolt módosításokkal. A cikkhez Miután lefuttattuk a programot saját gépünkön, próbáljunk tartozó példaprogramok teljes változata a 65. CD Magazin/ kísérletezni egy kicsit, és végezzünk el néhány módosítást. ALSA könyvtárban megtalálható. Változtassuk az eszköznevet default-ról hw:0,0-ra vagy Az 1. kódrészlet az ALSA által használt PCM adattípusok plughw:-re, és vizsgáljuk meg a módosítás eredményét. és beállítási értékek egy részét jeleníti meg. Az elsõ követel- Módosítsuk a hardverbeállításokat is, és vizsgáljuk meg, mény a fejrészfájl beillesztése, ez tartalmazza az ALSA hogy a megjelenõ értékek miben térnek el. könyvtári függvényeinek megadásait. A megjelenõ meg- A 3. kódrészlet az elõbbi példa kibõvítése, ebben hangmintá- adások egyike az ALSA változatszáma. kat is írunk a hangkártyára, vagyis hangokat szólaltatunk

www.linuxvilag.hu 2004. november 15 Szaktekintély

2. kódrészlet PCM eszköz megnyitása és a beállítások megadása /* Elõjeles, 16 bites, kis indián formátum */

/* snd_pcm_hw_params_set_format(handle, params, SND_PCM_FORMAT_S16_LE); A példaprogram az alapértelmezett PCM eszközt nyitja meg, megad néhány beállítást, majd a meg- /* Két csatorna (sztereó) */ jeleníti a hardveres beállítások túlnyomó részé- nek értékét. Hangrögzítést vagy -lejátszást nem snd_pcm_hw_params_set_channels(handle, params, végez. 2);

*/ /* 44100 bit/másodperc mintavételi gyakoriság (CD minõség) */ /* Az újabb ALSA API használata*/ val = 44100; #define ALSA_PCM_NEW_HW_PARAMS_API snd_pcm_hw_params_set_rate_near(handle, © Kiskapu Kft. Minden jog fenntartva params, &val, &dir); /* Az ALSA könyvtári API megadása teljes egészében ebben a fejrészben található /* A beállítások kiírása az illesztõprogram */ felé */

#include rc = snd_pcm_hw_params(handle, params); if (rc < 0) { int main() { fprintf(stderr, “A hardverbeállításokat int rc; nem sikerült megadni: %s\n”, snd_pcm_t *handle; snd_strerror(rc)); snd_pcm_hw_params_t *params; exit(1); unsigned int val, val2; } int dir; snd_pcm_uframes_t frames; /* A PCM felület adatainak megjelenítése */

/* PCM eszköz megnyitása lejátszásra */ printf(“PCM kezelõ neve = ´%s´\n”, snd_pcm_name(handle)); rc = snd_pcm_open(&handle, “default”, SND_PCM_STREAM_PLAYBACK, 0); printf(“PCM állapot = %s\n”, if (rc < 0) { snd_pcm_state_name(snd_pcm_state(handle))); fprintf(stderr, snd_pcm_hw_params_get_access(params, “A PCM eszközt nem lehet megnyitni: (snd_pcm_access_t *) &val); %s\n”, snd_strerror(rc)); exit(1); printf(“Hozzáférés típusa = %s\n”, } snd_pcm_access_name((snd_pcm_access_t)val));

/* A hardverbeállításokat tároló objektum snd_pcm_hw_params_get_format(params, &val); lefoglalása */ printf(“Formátum = ´%s´ (%s)\n”, snd_pcm_format_name((snd_pcm_format_t)val), snd_pcm_hw_params_alloca(¶ms); snd_pcm_format_description( (snd_pcm_format_t)val)); /* Feltöltése alapértékekkel */ snd_pcm_hw_params_get_subformat(params, snd_pcm_hw_params_any(handle, params); (snd_pcm_subformat_t *)&val); printf(“Alformátum = ´%s´ (%s)\n”, /* A kívánt hardverbeállítások megadása */ snd_pcm_subformat_name ((snd_pcm_subformat_t)val), /* Átlapolt mód */ snd_pcm_subformat_description( (snd_pcm_subformat_t)val)); snd_pcm_hw_params_set_access(handle, params, SND_PCM_ACCESS_RW_INTERLEAVED); snd_pcm_hw_params_get_channels(params, &val);

16 Linuxvilág Szaktekintély

printf(“Csatornák = %d\n”, val); snd_pcm_hw_params_get_rate(params, &val, &dir); val = snd_pcm_hw_params_is_block_transfer printf(“Gyakoriság = %d bps\n”, val); (params); printf(“Blokkos átvitel = %d\n”, val); snd_pcm_hw_params_get_period_time(params, &val, &dir); val = snd_pcm_hw_params_is_double(params); printf(“Idõszakhossz = %d us\n”, val); printf(“Double érték = %d\n”, val);

snd_pcm_hw_params_get_period_size(params, val = snd_pcm_hw_params_is_half_duplex(params); &frames, &dir); printf(“Váltakozó kétirányú = %d\n”, val); printf(“Idõszakméret = %d frames\n”, (int)frames); val = snd_pcm_hw_params_is_joint_duplex (params); snd_pcm_hw_params_get_buffer_time(params, printf(“Csatolt kétirányú = %d\n”, val); &val, &dir); printf(“Pufferidõ = %d us\n”, val); val = snd_pcm_hw_params_can_overrange(params); © Kiskapu Kft. Minden jog fenntartva printf(“Tartomány túllépési lehetõség = %d\n”, snd_pcm_hw_params_get_buffer_size(params, val); (snd_pcm_uframes_t *) &val); printf(“Pufferméret = %d frames\n”, val); val = snd_pcm_hw_params_can_mmap_sample_resolution snd_pcm_hw_params_get_periods(params, &val, (params); &dir); printf(“mmap lehetõség = %d\n”, val); printf(“Idõszak/puffer = %d frames\n”, val); val = snd_pcm_hw_params_can_pause(params); snd_pcm_hw_params_get_rate_numden(params, printf(“Szüneteltetési lehetõség = %d\n”, val); &val, &val2); printf(“Pontos gyakoriság = %d/%d bps\n”, val, val = snd_pcm_hw_params_can_resume(params); val2); printf(“Folytatási lehetõség = %d\n”, val);

val = snd_pcm_hw_params_get_sbits(params); val = snd_pcm_hw_params_can_sync_start(params); printf(“Számottevõ bitek = %d\n”, val); printf(“Szinkron indítási lehetõség = %d\n”, val); snd_pcm_hw_params_get_tick_time(params, &val, &dir); snd_pcm_close(handle); printf(“Ütésidõ = %d us\n”, val); return 0; val = snd_pcm_hw_params_is_batch(params); } printf(“Kötegelés = %d\n”, val);

meg. A szabványos bemenetrõl összegyûjtünk annyi bájtot, lönféle hibákra tudunk következtetni. Az EPIPE visszatérési amennyi egy idõszakra elegendõ, majd öt másodpercnyi érték alulcsordulásra utal, amelynek hatására a PCM adatfo- adatot írunk ki a kártya felé. lyam XRUN állapotba kerül, az adatfeldolgozás pedig leáll. Eb- A program eleje az elõzõével megegyezõ – elõször megnyit- bõl az állapotból normál esetben az snd_pcm_prepare függ- juk a PCM eszközt, majd megadjuk a hardverbeállításokat. vény meghívásával billenthetjük ki a folyamot, amely ilyen- Az ALSA által kiválasztott idõszakhosszt használjuk, és en- kor PREPARED (elõkészített) állapotba kerül. Ezután a követke- nek megfelelõen állítjuk be a mintákat tároló puffer méretét zõ alkalommal újra írhatunk adatokat a folyamba. Ha egyéb is. Ezután meghatározzuk az idõszakhosszt, amibõl tudjuk, hibajelzést kapunk, akkor kijelezzük a kódját, majd továbblé- hogy a programnak hány idõszakot kell feldolgoznia ah- pünk. Végül, ha a kiírt keretek száma nem egyezik meg az hoz, hogy öt másodpercnyi hanganyag álljon elõ. elvárttal, szintén hibaüzenetet jelenítünk meg. Az adatokat kezelõ hurokban a szabványos bemenetrõl ol- A program addig ismétli a mûveletet, amíg öt másodperc- vasunk, a puffert pedig egy idõszaknyi mintával töltjük fel. nyi keret össze nem gyûlik, el nem éri a fájl végét vagy ol- Ha fájl végérõl olvasunk, esetleg a kapott bájtok száma vasási hiba nem történik a bemeneten. Ekkor kerül sor az a várttól eltérõ, akkor hibakezelést végzünk. snd_pcm_drain meghívására, amivel engedélyezzük a függõ- A PCM eszközre az adatokat az snd_pcm_writei hívással ír- ben lévõ hangminták továbbítását, illetve lezárjuk a folyamot. juk ki. Ennek mûködése a rendszermag write rendszerhívá- Felszabadítjuk a dinamikusan foglalt puffert, majd kilépünk. sához nagyon hasonló, kivéve azt, hogy a méret keretekben Bizonyára sokaknak feltûnt, hogy a program nagyjából mû- van megadva. Ellenõrizzük a visszatérési értéket, ebbõl kü- ködésképtelen, amíg a bemenetet át nem irányítjuk a kon-

www.linuxvilag.hu 2004. november 17 Szaktekintély

3. kódrészlet Egyszerû hanglejátszás /* 44100 bit/másodperc mintavételi gyakoriság (CD minõség) */

/* val = 44100; snd_pcm_hw_params_set_rate_near(handle, params, A példaprogram a szabványos bemenetrõl olvas, &val, &dir); majd öt másodpercnyi adatot ír az alapértelmezett PCM eszközre. /* Az idõszakméret beállítása 32 keretre */ frames = 32; */ snd_pcm_hw_params_set_period_size_near(handle, params, &frames, &dir); /* Az újabb ALSA API használata*/ #define ALSA_PCM_NEW_HW_PARAMS_API /* A beállítások kiírása az illesztõprogram felé */ #include rc = snd_pcm_hw_params(handle, params); © Kiskapu Kft. Minden jog fenntartva int main() { if (rc < 0) { long loops; fprintf(stderr, int rc; “A hardverbeállításokat nem sikerült int size; megadni: %s\n”, snd_pcm_t *handle; snd_strerror(rc)); snd_pcm_hw_params_t *params; exit(1); unsigned int val; } int dir; snd_pcm_uframes_t frames; /* Kellõen nagy méretû, egy idõszakot tárolni char *buffer; képes puffert használunk. */

/* PCM eszköz megnyitása lejátszásra */ snd_pcm_hw_params_get_period_size(params, rc = snd_pcm_open(&handle, “default”, &frames, &dir); SND_PCM_STREAM_PLAYBACK, 0); if (rc < 0) { /* 2 bájt/minta, 2 csatorna */ fprintf(stderr, size = frames * 4; “A PCM eszközt nem lehet megnyitni: buffer = (char *) malloc(size); %s\n”, snd_strerror(rc)); exit(1); /* A hurkot öt másodpercig futtatjuk */ } snd_pcm_hw_params_get_period_time(params, &val, &dir); /* A hardverbeállításokat tároló objektum lefoglalása */ /* 5 másodperc mikroszekundumokban mérve, osztva az idõszakkal */ snd_pcm_hw_params_alloca(¶ms); loops = 5000000 / val;

/* Feltöltése alapértékekkel */ while (loops > 0) { snd_pcm_hw_params_any(handle, params); loops—; rc = read(0, buffer, size); /* A kívánt hardverbeállítások megadása */ if (rc == 0) { fprintf(stderr, “Bemeneti fájl vége\n”); /* Átlapolt mód */ break; snd_pcm_hw_params_set_access(handle, params, } else if (rc != size) { SND_PCM_ACCESS_RW_INTERLEAVED); fprintf(stderr, “rövid bemenet: %d bájtot sikerült /* Elõjeles, 16 bites, kis indián formátum */ olvasni\n”, rc); snd_pcm_hw_params_set_format(handle, params, } SND_PCM_FORMAT_S16_LE); rc = snd_pcm_writei(handle, buffer, frames); if (rc == -EPIPE) { /* Két csatorna (sztereó) */ /* Az EPIPE alulcsordulást jelez. */ snd_pcm_hw_params_set_channels(handle, params, fprintf(stderr, “Alulcsordulás történt\n”); 2); snd_pcm_prepare(handle);

18 Linuxvilág Szaktekintély

} else if (rc < 0) { } fprintf(stderr, “writei hiba: %s\n”, snd_pcm_drain(handle); snd_strerror(rc)); snd_pcm_close(handle); } else if (rc != (int)frames) { free(buffer); fprintf(stderr, “Rövid írás, %d keretet sikerült return 0; kiírni\n”, rc); } }

4. kódrészlet Hangfelvétel

/* SND_PCM_ACCESS_RW_INTERLEAVED);

A példaprogram az alapértelmezett PCM eszközrõl /* Elõjeles, 16 bites, kis indián formátum */ © Kiskapu Kft. Minden jog fenntartva olvas, majd öt másodpercnyi adatot ír a szabvá- snd_pcm_hw_params_set_format(handle, params, nyos kimenetre. SND_PCM_FORMAT_S16_LE);

*/ /* Két csatorna (sztereó) */ snd_pcm_hw_params_set_channels(handle, params, /* Az újabb ALSA API használata*/ 2); #define ALSA_PCM_NEW_HW_PARAMS_API /* 44100 bit/másodperc mintavételi gyakoriság #include (CD minõség) */ val = 44100; int main() { snd_pcm_hw_params_set_rate_near(handle, params, long loops; &val, &dir); int rc; int size; /* Az idõszakméret beállítása 32 keretre */ snd_pcm_t *handle; frames = 32; snd_pcm_hw_params_t *params; snd_pcm_hw_params_set_period_size_near(handle, unsigned int val; params, &frames, &dir); int dir; snd_pcm_uframes_t frames; /* A beállítások kiírása az illesztõprogram char *buffer; felé */ rc = snd_pcm_hw_params(handle, params); /* PCM eszköz megnyitása felvételre */ if (rc < 0) { rc = snd_pcm_open(&handle, “default”, fprintf(stderr, SND_PCM_STREAM_CAPTURE, 0); “A hardverbeállításokat nem sikerült if (rc < 0) { megadni: %s\n”, fprintf(stderr, snd_strerror(rc)); “A PCM eszközt nem lehet megnyitni: exit(1); %s\n”, snd_strerror(rc)); } exit(1); } /* Kellõen nagy méretû, egy idõszakot tárolni képes puffert használunk. */ /* A hardverbeállításokat tároló objektum snd_pcm_hw_params_get_period_size(params, lefoglalása */ &frames, &dir); snd_pcm_hw_params_alloca(¶ms); /* 2 bájt/minta, 2 csatorna */ /* Feltöltése alapértékekkel */ size = frames * 4; snd_pcm_hw_params_any(handle, params); buffer = (char *) malloc(size);

/* A kívánt hardverbeállítások megadása */ /* A hurkot öt másodpercig futtatjuk */ snd_pcm_hw_params_get_period_time(params, /* Átlapolt mód */ &val, &dir); snd_pcm_hw_params_set_access(handle, params, loops = 5000000 / val;

www.linuxvilag.hu 2004. november 19 Szaktekintély

} while (loops > 0) { rc = write(1, buffer, size); loops—; if (rc != size) rc = snd_pcm_readi(handle, buffer, frames); fprintf(stderr, if (rc == -EPIPE) { “Rövid írás: %d bájtot sikerült /* Az EPIPE túlcsordulást jelez. */ kiírni\n”, rc); fprintf(stderr, “Túlcsordulás történt\n”); } snd_pcm_prepare(handle); } else if (rc < 0) { snd_pcm_drain(handle); fprintf(stderr, snd_pcm_close(handle); “read hiba: %s\n”, free(buffer); snd_strerror(rc)); } else if (rc != (int)frames) { return 0; fprintf(stderr, “Rövid olvasás, %d keretet } sikerült beolvasni\n”, rc);

© Kiskapu Kft. Minden jog fenntartva zolról. Megpróbálkozhatunk például a véletlenszerû adato- vissza, amíg az adatátvitel le nem játszódott. Interaktív, ese- kat elõállító /dev/urandom eszközzel: ményvezérelt alkalmazásnál ezzel az alkalmazás futásának elfogadhatatlanul hosszú idõkre való megakadását okozhat- ./pelda3 < /dev/urandom juk. Az ALSA lehetõvé teszi, hogy az adatfolyamokat nem blokkoló módban nyissuk meg, ilyenkor az olvasási és írási A véletlenszerû adatokkal öt másodpercnyi fehérzajt tu- hívások azonnal visszatérnek. Ha az adatátvitelek függõben dunk elõállítani. Következõ lépésként megpróbálhatjuk maradnak, és a hívások befejezésére nincs lehetõség, az a /dev/null-t vagy /dev/zero-t használni bemenetként, majd ALSA az EBUSY foglaltságot jelzõ hibakódot adja vissza. összehasonlíthatjuk az eredményt. Változtassunk meg né- Sok grafikus alkalmazás visszahívókkal kezeli az eseménye- hány beállítást, például a mintavételi idõt vagy az adatfor- ket. Az ALSA támogatja a PCM adatfolyamok aszinkron mátumot, és figyeljük a hatást. módban való megnyitását is, így mód nyílik arra, hogy A 4. kódrészlet sokban hasonlít a harmadikhoz, ám itt PCM adott mennyiségû mintaadat összegyûjtése után egy vissza- alapú felvételt végzünk. A PCM adatfolyam megnyitásakor hívót futtassunk. SND_PCM_STREAM_CAPTURE üzemmódot állítunk be. A fõ Az snd_pcm_readi és az snd_pcm_writei hívások használa- adatfeldolgozó hurokban az snd_pcm_readi függvénnyel ta a linuxos read és write rendszerhíváséhoz hasonló. Az olvassuk be a mintákat a hangeszközrõl, majd write hívá- i betû arra utal, hogy a keretek átlapoltak (interleaved). Ha- sokkal juttatjuk a szabványos kimenetre. Eközben ellenõriz- sonló függvények nem átlapolt módhoz is léteznek. Linux zük, hogy nincs-e alulcsordulás, amit szükség esetén a 3. alatt sok eszköz támogatja az mmap rendszerhívást, amely- kódrészletben látott módszerrel kezelünk. nek segítségével memóriabeli területeknek lehet megfelel- A 4. kódrészletet futtatva nagyjából öt másodpercnyi adatot tetni és mutatókkal lehet kezelni õket. Végül megemlíte- tudunk összegyûjteni, illetve a szabványos kimenetre kül- ném, hogy az ALSA támogatja a PCM csatornák mmap mód- deni, amit természetesen fájlba is írhatunk. Ha hangkár- ban való megnyitását is, amivel hatékony, másolásmentes tyánkhoz mikrofon is csatlakozik, akkor keverõprogram se- hozzáférést biztosít a hangadatokhoz. gítségével kiválaszthatjuk azt a felvétel forrásaként, illetve beállíthatjuk a felvételi szintet. Ha gondoljuk, elindíthatunk Összefoglalás valamilyen CD-lejátszó programot is, és a felvételi forrást Remélem, hogy írásommal sokaknak sikerült kedvet szerez- a CD-re állíthatjuk. Próbáljuk meg futtatni a 4. kódrészletet, nem az ALSA kipróbálásához. Ahogy a terjesztések egyre a kimenetet pedig fájlba irányítani. Ezután a 3. kódrészlettel inkább a 2.6-os rendszermag használatára térnek át, az visszajátszhatjuk, amit rögzítettünk: ALSA egyre szélesebb körben fog elterjedni, fejlett szolgál- tatásainak köszönhetõen egyre jobb linuxos hangkezelõ ./pelda4 > hang.raw megoldások jelenhetnek majd meg. ./pelda3 < hang.raw Szeretnék köszönetet mondani Jaroslav Kyselának és Takashi Iwainak, akik írásom vázlatának áttekintésével Ha hangkártyánk támogatja a teljes kétirányú mûködést, ak- és tanácsaikkal rengeteget segítettek nekem. kor a programokat csõvezetékkel egymáshoz is csatolhatjuk, és a hangkártyáról érkezõ anyagot a következõ paranccsal Linux Journal 2004. október, 126. szám hallgatjuk meg: ./pelda4 | ./pelda3. A PCM beállítások megváltoztatásával kipróbálhatjuk, hogy a mintavételi gya- Jeff Tranter 1992 óta használja, fejleszti és tár- koriság és a formátum módosítása milyen hatással jár. gyalja írásaiban a Linuxot. A kanadai Ottawá- ban található Xandros Corporation munkatársa. Különleges lehetõségek A példaprogramokban a PCM folyamokat blokkoló mód- ban nyitottuk meg, vagyis a hívások addig nem tértek

20 Linuxvilág Szaktekintély

Virtuális biztonsági zónák létrehozása egy Linux fürtön belül Az osztott biztonsági háttér lehetõvé teszi, hogy egy Linux fürtön belül különálló virtuális biztonsági zónákat alakítsunk ki. Ez az írás ezek megvalósításáról és használatáról ad áttekintést. © Kiskapu Kft. Minden jog fenntartva

gyre több projektben használják a Linuxot és más nyílt forrású programokat fürtözött számítógéprend- szerek alapvetõ építõelemeként. A példák sora a mo- Ezifilmek gyártása során használt vizuális effektusoka elõállí- tó, óriási tömegû számítást végzõ fürtöktõl a következõ ge- nerációs telekommunikációs kiszolgálótelepekig terjed. A technika fejlõdésével és a méretek növekedésével párhu- zamosan egyre gyakrabban fordul elõ az is, hogy különféle szempontok – például a gazdaságosság, a kezelhetõség vagy a rugalmasság fokozása végett – célszerû ugyanazon a fürtön több különbözõ alkalmazást is futtatni. Jó példa erre a távközlés világában alkalmazott úgynevezett carrier- grade osztályú kiszolgálótelepek, amelyek erõforrásait ele- ve több különbözõ operátor között osztják meg. A közös használat ilyenkor azt jelenti, hogy az operátorok osztoz- nak a fürt teljes infrastruktúráján, ezeket használva esetleg 1. ábra A DSI felépítése egészen eltérõ szolgáltatásokat nyújtanak az ügyfeleik szá- mára, ugyanakkor a programjaikat és adataikat – nyilván- való gazdasági és biztonsági megfontolások miatt – nem A DSI felépítése és eszközei szeretnék mások számára is elérhetõvé tenni. Ezekben az Elõször vizsgáljuk meg röviden a DSI felépítését. A DSI esetekben a fürtök rendszergazdái sem férnek hozzá egy biztonsági kiszolgálóból (SS, Security Server) és cso- a programok forráskódjaihoz, és a biztonsági eljárásokat mópontonként egy-egy biztonság-vezérlõbõl (SM, Security sem lehet a forráskód szintjén kötelezõvé tenni. Szükség Manager) épül fel (1. ábra). A biztonsági kiszolgálóban van tehát egy olyan biztonsági háttérre, amely biztosítja, összpontosul a fürt ellenõrzése. Ez gyûjti össze a bizton- hogy egy adott alkalmazás erõforrásait ne használhassák sági vezérlõk felõl érkezõ figyelmeztetéseket és riasztáso- mások, illetve az adott szoftver mûködését ne zavarják kat, és ez propagálja a fürtön belül az egyedi biztonsági meg a fürt más elemei. intézkedéseket. A másik oldalon a biztonsági-vezérlõk fe- Az ilyen helyzetekre az úgynevezett osztott biztonsági inf- lelõsek a biztonsági intézkedések betartatásáért, de kizá- rastruktúra (DSI, Distributed Security Infrastructure) meg- rólag a saját csomópontjukon belül. A biztonsági kiszol- oldást jelenthet. Ez a carrier-grade osztályú Linux telepek- gáló és a biztonsági vezérlõk közt titkosított és hitelesí- nél a fürt virtuális alfürtökre osztásával kísérli meg egy tett csatornákon zajlanak az üzenetváltások, amelyek összefüggõ biztonsági keretrendszer kialakítását. Biztosítja a CORBA eseménycsatorna felett mûködõ SSL/TLS az alegységek közti kapcsolatok ellenõrzését, illetve használatával kerülnek továbbításra. a rendszergazdák által megadott szabályok alapján törté- A DSI biztonsági elvei a folyamatok szintjén kerültek meg- nõ korlátozását. Annak ellenére, hogy a fejlesztések még valósításra, vagyis a rendszer egy adott folyamat bizonyos csak két éve kezdõdtek el, úgy gondoljuk, a DSI rendkívül erõforráshoz kötõdõ hozzáférési jogosultságait ellenõrzi. hasznos eszköz lesz a fürtök rendszergazdáinak kezében. A folyamatok azonosítására a biztonsági kontextus azonosító Ebben a cikkben bemutatjuk, hogy milyen módon hasz- (ScID) és annak a csomópontnak az azonosítója (SnID) szol- nálhatjuk a DSI-t a Linux telepeken belüli virtuális biz- gál, amelyen a folyamat fut. Ez a két adat egyértelmûen tonsági zónák kialakítására. meghatározza a rendszer számára a kérdéses folyamatot.

www.linuxvilag.hu 2004. november 21 Szaktekintély

2. ábra A DSP elterjesztése a fürtön belül 3. ábra Biztonságos távoli elérés ellenõrzés © Kiskapu Kft. Minden jog fenntartva

Az SnID-ket a DSI SetNodeID nevû eszköze osztja ki. vényben lévõ biztonsági szabályok között, hogy az rendel- Minden azonos biztonsági kontextusba tartozó folya- kezik-e a a megfelelõ engedélyekkel. A DSI-ben tulajdon- mat ugyanazzal az ScID-vel rendelkezik. Az ScID-k hoz- képpen az az igazán eredeti, hogy megosztott módon végzi zárendelése történhet önmûködõen. Ilyenkor a rendszer a hozzáférések ellenõrzését. Egyelõre még csak a foglalatok osztja ki ezeket a megadott DSP-szabályok szerint (lásd közti párbeszédet valósították meg. Ennek bemutatására lejjebb). Ugyanakkor oszthatunk ki azonosítókat a DSI egy olyan hozzáférés-ellenõrzési helyzetet mutatunk be, SetSID eszközével is, amikor egy konkrétan megnevezett amikor a folyamat egy másik csomóponton lévõ erõforrást futtatható állományhoz rendelünk hozzá kontextust. próbál meg elérni (3. ábra): Ez utóbbi lehetõvé teszi maguknak a futtatható állomá- nyoknak a biztonsági kontextus szerinti csoportosítását, • A hozzáférési kérést a helyi DSM fogadja, majd ellenõr- vagyis a szabályrendszer nem csak a már futó folyama- zi, hogy a folyamatnak egyáltalán van-e joga a helyi tokra alkalmazható. foglalatokkal kapcsolatos rendszerhívások kibocsátására. • Ezután a DSM a távoli csomópontnak elküldött minden A DSP beállítófájlja IP-csomaghoz hozzáfûzi a kérõ folyamathoz tartozó Egy biztonsági szabály meghatározása a DSI-ben valami- ScID és SnID azonosítókat. lyen engedély megadását vagy megtagadását jelenti egy • A fogadó csomóponton a távoli DSM a kérést indító fo- SnID-ScID párra vonatkozóan. Ezek a szabályok az egész lyamat az IP-csomagokból visszanyeri a ScID és SnID fürtre érvényesek. A könnyû kezelhetõség érdekében min- azonosítókat, majd ezeket használva ellenõrzi, hogy den szabály egy a biztonsági kiszolgálón lévõ központi a kérõ folyamat rendelkezik-e engedéllyel a célkerettel XML fájlban tárolódik. és a célkeretet birtokló folyamattal való adatcseréhez. A DSI lehetõséget biztosít az egész fürtözött telep egyedi és • Végül a távoli DSM helyben ellenõrzi, hogy a folyamat, egységes kezelésére, valamint a szabályok frissítésének és amelyhez a megcélzott keret tartozik, fogadhat-e infor- alkalmazásának önmûködõ végrehajtására. Amint az admi- mációt a kérést kezdeményezõ folyamattól. nisztrátor módosít egy már létezõ szabályt vagy újat hoz létre az osztott biztonsági házirendben (DSP, Distributed A probléma Security Policy), a DSP-t a dsiUpdatePolicy eszköz segítsé- Ebben a részben részletesebben megvizsgálunk egy vi- gével be kell tölteni a biztonsági kiszolgálóra. Ezután szonylag egyszerû esetet, amelyen keresztül közérthetõen a dsiUpdatePolicy egyezteti a DSP-t és a DSP XML sémáját bemutatható, hogy egy adott problémát hogyan lehet (szintaktikai ellenõrzés). Amennyiben a DSP megerõsítést a DSI rendszer segítségével megoldani. Tegyük fel, hogy nyer, a biztonsági kiszolgáló a biztonsági csatornákon ke- egy két csomópontból álló egységet szeretnénk megoszta- resztül a fürt minden csomópontjához eljuttatja az új szabá- ni két távközlési operátor között, akiket most PhoneMania lyokat. Végül minden biztonsági vezérlõ a DSM hívásával és RingBell néven fogunk emlegetni, s akik a saját alkal- rendszermag szinten érvényesíti ezeket a szabályokat (lásd mazásaikat futtatják a fürt csomópontjain. Mindketten 2. ábra). A DSM az LSM rendszermag-foltra épül. Ennek telefonos reklám- és információszolgáltatást nyújtanak, részletes ismertetésére nincs ebben a cikkben lehetõség, amely abban merül ki, hogy a végfelhasználók felhívhat- de a hálózaton elérhetõ ( www.linuxjournal/article/7688) ják a (TelecomClient-et használó) belépési pontokon lévõ részben találhatunk hivatkozásokat erre vonatkozólag. kiszolgálókat és lekérhetik onnan a megadott vállalatok árajánlatait. A belépési pontokon lévõ kiszolgálók Osztott hozzáférés-ellenõrzés (PhoneManiaEP és RingBellEP) továbbítják a kérést A helyi erõforrásokhoz való hozzáférés ellenõrzése viszony- a háttérben mûködõ kiszolgálóknak (PhoneManiaBE és lag egyszerû. A DSM-modul megkapja a kérést kibocsátó RingBellBE), amelyektõl aztán megkapják az ajánlatokat folyamathoz tartozó ScID-t és SnID-t, majd ellenõrzi az ér- és visszaküldik azokat a végfelhasználónak.

22 Linuxvilág Szaktekintély

a – nem túl mulatságos – következménye, hogy PhoneMania kapja a pénzt RingBell erõforrásainak használatáért.

[colby demo]$ ./TelecomClient -h 10.1.1.1 -p 8800 Connecting to : 10.1.1.1:8800

Requesting quotation for Ericsson Quote Ericsson .. [munster demo]$ .. RINGBELL backend : processing quotation request for Ericsson

4. ábra Egy egyszerû távközlési eset RINGBELL backend : quotation for Ericsson is 83 © Kiskapu Kft. Minden jog fenntartva Quote Ericsson Ha valaki hozzászokott a fürtözött rendszerben való gon- Ennek megelõzésére az egyik lehetséges megoldás az, dolkodáshoz, ezen a ponton a következõ kérdés merül fel: ha a DSI segítségével a megosztott fürtöt biztonsági szem- hogyan védhetnénk meg egy PhoneMania alkalmazást at- pontból különálló egységekre, alfürtökre osztjuk fel. A kö- tól, hogy a kéréseit tévedésbõl a RingBell háttérkiszolgálói- vetkezõkben lépésenként bemutatjuk, hogyan használható nak továbbítsa? Ha semmilyen erre vonatkozó biztonsági a DSI ennek a gyakorlati megvalósítására. rendszabályt nem léptetünk életbe, akkor a PhoneMania megtehetné ezt olyan esetekben, amikor a háttérkiszolgáló- A DSI telepítése és beállítása ja túlterhelt, vagy egyszerûen csak nem rendelkezik a kért Elõször is a fürt minden csomópontjára telepítenünk információval. És akkor még nem is említettük az olyan sú- kel a DSI-t. Miután a SourceForge honlapjáról letöltöt- lyosabb eseteket, amikor mondjuk az elõfizetõk adatait tük a DSI tar-csomagját, le kell fordítanunk a saját gé- akarják megszerezni illetéktelenek, vagy a versenytársnak pünkön, mivel a program a szabványos fordítóeljárást akarnak szándékosan kárt okozni. Egy ilyen szituáció be- alkalmazza. mutatására minden szereplõt egyszerû UDP-ügyfélként A SourceForge oldalán található DSI-leírásban részletesen és -kiszolgálóként valósítottunk meg (4. ábra). ismertetjük a DSI fordításának és telepítésének lépéseit. Az „eltévelyedés” forgatókönyve lépésenként a következõ: Minden csomóponton futtatni kell a Security Managert, ami a kétcsomópontos fürtünk esetében ez azt jelenti, • PhoneMania és RingBell egy munster nevû csomópon- hogy a program a colby és munster csomópontokon ton futtatják a háttérkiszolgálóikat: fog futni:

[munster demo]$ ./RingBellBE -h 10.1.1.2 -p 9001 [colby]$ cd ~/dsi RINGBELL: bind on 10.1.1.2:9001 [colby]$ source dsi_setup.sh .. [colby]$ ~/dsi/bin/dsiSecManager [munster demo]$ ./PhoneManiaBE -h 10.1.1.2 -p 8801 Az egyszerûség kedvéért a colby a biztonsági kiszolgáló PHONEMANIA: bind on 10.1.1.2:8801 szerepét is betölti:

• Ahogy PhoneMania túlterheltté válik, úgy dönt, hogy [colby]$ cd ~/dsi RingBell erõforrásait fogja használni, így a colby cso- [colby]$ source dsi_setup.sh móponton lévõ PhoneMania belépési pont kiszolgálója [colby]$ ~/dsi/bin/dsiSecServer (8800-as kapu) az ügyfeleitõl érkezõ összes kérést a RingBell háttérkiszolgálóira irányítja (9001-es kapu): A biztonsági kiszolgáló és a biztonság-vezérlõk egymás- sal a CORBA eseménycsatornák használatával tartják [colby demo]$ ./PhoneManiaEP -h 10.1.1.1 a kapcsolatot. -p 8800 -b 10.1.1.2 -r 9001 Minden csomóponton betöltjük a DSI redszermagmodulját, PHONEMANIA: bind on 10.1.1.1:8800 a DSM-et, amellyel a rendszermag szintjén biztosítható PHONEMANIA: connect on 10.1.1.2:9001 a biztonsági intézkedések betartása: .. $ cd ~/dsi/lsm • Amikor egy ügyfél a PhoneMania belépési pontján $ su root (8800-as kapu) egy ajánlatot kér, PhoneMania valójá- Password: ban RingBell háttérkiszolgálóját használja a válasz # ./load megadására (9001-es kapu). Ennek pedig az lesz # /sbin/lsmod

www.linuxvilag.hu 2004. november 23 Szaktekintély

Module Size Used by Not tainted 8800 dsm 36332 0 (unused) ALL ... 10 Ezután beállítjuk a DSI-t külön IP-cím megadásával az egyes csomópontok számára a biztonságos és nem biz- Három hasonló szabályra van még szükségünk: egy tonságos adatkapcsolat számára. Ehhez egy DciInit nevû a PhoneMania háttérkiszolgálójához, két másik pedig az eszközt írtunk, amelynek használatáról és a dci_policy.conf ScID=20 érték RingBell-hez való rendeléséhez. fájl felépítésérõl a SourceForge honlapján található DCI- Ezután a PhoneMania folyamatainak (forrás ScID=10) enge- leírásban olvashatunk részletesebben: délyezzük, hogy üzeneteket hozzanak létre, küldjenek vagy fogadjanak a saját foglalataikon (vagyis az ScID=10 $ cd ~/dsi/user/tools azonosítójú célokon): $ ./DciInit ~/dsi/etc/dci_policy.conf A megoldás: virtuális alfürtök létrehozása 10 Ahhoz, hogy különálló virtuális alfürtöket hozhassunk lét- ALL re, lényegében külön ScID azonosítókat kell létrehoznunk 10 © Kiskapu Kft. Minden jog fenntartva a PhoneMania (a példánkban ScID=10) és a RingBell ALL (ScID=20) erõforrásai számára. Ezután új szabályt lépte- CREATE CONNECT LISTEN RECEIVE tünk érvénybe a DSP-ben, amely alapján a rendszer vissza- SEND utasít bármilyen kapcsolatkérést, ami az ScID=10 érték által meghatározott zónából az ScID=20 övezetbe érkezik, illetve fordítva. Az egyes operátorokhoz tartozó erõforrások kü- A RingBell számára hasonló szabályt hozunk létre. lönálló csoportokba szervezésével és mindennemû köztük Természetesen az ScID=10 és 20 közti adatcserét le létrejövõ kapcsolat tiltásával valójában a fürt egy virtuális kell tiltanunk. Ezt egyszerûen úgy tehetjük meg, hogy felosztását értük el. Ehhez rendszerfelügyeleti céllal az nem adunk engedélyeket ezen ScID azonosítók közti adminisztrátor létrehozhatna még egy újabb zónát az adatcseréhez: ScID=30 értékkel, amely mindkét övezethez rendelkezne hozzáféréssel. Elõször is, rendeljük hozzá minden csomópont minden 10 bináris állományához a megfelelõ ScID azonosítót (ehhez ALL a SetSID eszközt használjuk): 20 ALL $ ~/dsi/user/tools/SetSID PhoneManiaEP 10 Changing from SID 0 to SID 10 $ ~/dsi/user/tools/SetSID PhoneManiaBE 10 Changing from SID 0 to SID 10 Hasonló szabályt hozunk létre az ScID=20 forrású és $ ~/dsi/user/tools/SetSID RingBellEP 20 ScID=10 célazonosító között. Changing from SID 0 to SID 20 Bár a háttérkiszolgálók és egy adott operátorhoz tarto- $ ~/dsi/user/tools/SetSID RingBellBE 20 zó belépési pontok kiszolgálói fizikailag a fürt különbözõ Changing from SID 0 to SID 20 csomópontjain helyezkedhet el, ne feledjük, hogy megosz- $ ~/dsi/user/tools/ls_dsi . tott fürtrõl van szó, tehát nem rendeljük az egyes csomó- PERMISSION USER GROUP BSID FILE pontokat egyértelmûen, elválaszthatatlanul a RingBell- -rwxr-xr-x lmcaxpr install 10 PhoneManiaBE hez vagy a PhoneMania-hoz. Így a PhoneMania folyama- -rwxr-xr-x lmcaxpr install 20 RingBellBE tainak (forrás ScID=10) képesnek kell lennie egy másik -rwxr-xr-x lmcaxpr install 10 PhoneManiaEP PhoneMania-folyamattal (cél ScID=10) történõ kapcsolatfel- -rwxr-xr-x lmcaxpr install 20 RingBellEP vételre is a hálózaton keresztül. Ugyanez természetesen a RingBell-re is igaz. Amikor a DSM betöltõdik, foganatosítja az alapértelmezés- ként engedélyezett biztonsági szabályokat. A fürt felosztá- sának megvalósításához szerkesztenünk kell a DSP fájlját 10 (~/dsi/etc/SampleDSP.xml) és minden már létezõ biztonsági ALL szabályt a saját szabályainkkal kell helyettesítenünk. 10 A PhoneMania foglalatai az ScID=10 azonosítót kapják, ALL a RingBell pedig az ScID=20 értéket használja. A követke- NETWORK_RECEIVE zõ szabály az ScID=10 értéket rendeli a PhoneMania belépé- si pontjának UDP foglalatához (8800-as kapu): Végül a PhoneMania (ScID=10) és RingBell (ScID=20) folya- matokat rendszerint valamilyen parancsértelmezõbõl futtat- UDP juk (az alapértelmezett ScID=2). Ez nyilván csak úgy lehet-

24 Linuxvilág Szaktekintély

séges, ha engedélyezzük a kérdéses héj számára új folya- -p 8800 -b 10.1.1.2 -r 9001 matok létrehozását. Ezt egy transition szabály segítségé- vel tehetjük meg: PHONEMANIA: bind/connect on 10.1.1.1:8800 = 0 PHONEMANIA: bind/connect on 10.1.1.2:9001 = 0 Quote Ericsson 2 ALL Quotation request received 10 ... 10 [munster demo]$ ./RingBellBE -h 10.1.1.2 -p 9001 RINGBELL: bind on 10.1.1.2:9001 ... A binary_ScID a bináris állományhoz explicite hoz- zárendelt ScID azonosító. Emlékezzünk rá, hogy A másik csomóponton (munster) észleljük, hogy a PhoneManiaBE és PhoneManiaEP programokhoz a RingBell háttérkiszolgálója többé már nem kezeli a SetSID segítségével rendeltünk ScID azonosítót. a PhoneMania kéréseit, pedig a PhoneMania engedély A new_ScID a létrejövõ új folyamathoz rendelt ScID. nélkül továbbra is a RingBell-re irányítja azokat. Mivel a 8800-as és 8801-es foglalatok elérése csak az A /var/log/messages fájlban a nem engedélyezett kérések © Kiskapu Kft. Minden jog fenntartva ScID=10 azonosítójú folyamatok számára (vagyis nyomon követésének céljából lehetõség van a DSI által a PhoneMania számára) engedélyezett, az új folyamat- elõállított naplók rögzítésére: hoz is az ScID=10 azonosítót kell rendelnünk. Hasonló szabályt kell a RingBell számára is létrehoznunk. May 6 07:47:31 munster kernel: DSI-LSM MODULE - Mindössze ennyire van szükségünk a DSP létrehozásá- dsi_sock_rcv_skb check permission sscid 10 hoz, vagyis 12 egyszerû biztonsági szabályra, amelyek ssnid 1 tscid 20 érvényesítése tökéletesen kizárja a fent vázolt problémát. May 6 07:47:31 munster kernel: DSI-LSM MODULE A szabályrendszer leírása után természetesen az egész Error - dsi_sock_rcv_skb - No Permission fürtre kiterjedõen frissítenünk kell a biztonsági rendsza- bályokat. Ehhez valamennyi biztonsági kiszolgálónak Összegzés egy update (frissítés) üzenetet kell elküldenünk: Egy gyakorlati megoldást mutattunk be a fürtök külön- bözõ felhasználók által használt alkalmazások közti [colby]$ cd ~/dsi/SS/test/demoSecOM biztonságos megosztására. A DSI projekt lehetõvé teszi [colby]$ ./dsiUpdatePolicy ~/dsi/etc/ a felhasználók számára, hogy egyszerûen hozzanak lét- DSP.xml re elkülönülõ biztonsági zónákat a telepen futó alkalma- zások számára. Miután a DSI-t feltelepítettük a telepre, A biztonsági kiszolgáló ennek hatására beolvassa a mó- az új alkalmazások számára létrehozandó új biztonsági dosított DSP fájlt (~/dsi/etc/DSP.xml) és figyelmeztetést zónák kialakítása a programokhoz tartozó megfelelõ küld, ha valamilyen formai hibát észlel. Ha mindent ScID azonosítók beállítására és a kapcsolódó szabályok rendben talált, önmûködõen elküldi a frissítéseket min- DSP fájlban történõ rögzítésére egyszerûsödik. A forrás- den biztonsági vezérlõ számára, tehát nincs szükség arra, kód módosítására nincs szükség és valószínûleg lehetõ- hogy a csomópontokra egyenként bejelentkezve minden ség sincs rá. gépen kézzel frissítsük a biztonsági intézkedéseket leíró adatbázist, vagy hogy saját Perl alapú rendszerkezelõ Linux Journal 2004. október, 126. szám programot fejlesszünk erre a célra, amely legalább rész- ben automatizálja a folyamatot. Minden magától mûkö- Makan Pourzandi dik, mint az álom. Ez különösen akkor jelent nagy elõnyt, ([email protected]) az Ericsson ha több ezer csomópontból álló teleppel dolgozunk, kanadai kutatóközpontjának nyílt rendszerekkel amelyben egyes csomópontok földrajzilag esetleg a világ foglalkozó osztályán dolgozik. A kutatási terüle- másik végén is lehetnek. Gondoljunk például a hálószá- tei közé a biztonság, a fürtözött számítások és mítási (grid computing) módszerekre. Ott nemhogy gya- az osztott programozás komponens alapú kori, egyenesen természetes ez a helyzet. módszerei tartoznak. Doktori fokozatát 1995- Most, hogy rendszerünket bebiztosítottuk a forgalomirá- ben Franciaországban, a lioni egyetemen sze- nyítási eltévelyedések ellen, itt az ideje, hogy újra kipró- rezte meg a párhuzamos számítások tárgykör- báljuk azt az esetet, amikor a PhoneMania kérést továbbít ében írt dolgozatával. a RingBell háttérkiszolgálója felé: Axelle Apvrille ([email protected]) jelen- [colby demo]$ ./TelecomClient -h 10.1.1.1 leg az Ericsson kanadai kutatóközpontjának nyílt -p 8800 rendszerekkel foglalkozó osztályán dolgozik. Requesting quotation for Ericsson Kutatási területei a kriptográfia, biztonsági proto- Quote Ericsson kollok és az osztott biztonság. Számítástechniká- ... ból 1996-ban szerzett diplomát a franciaországi [colby demo]$ ./PhoneManiaEP -h 10.1.1.1 Bordeaux-ban, az ENSEIRB egyetemen.

www.linuxvilag.hu 2004. november 25 Szaktekintély

Elosztott gyorstárazás a Memcached használatával Webkiszolgálónk adatbázisának terhelését jelentõsen csökkenthetjük, ha alkalmazá- sainkat egy méretezhetõ, objektumokat gyorstárazó réteggel bõvítjük.

© Kiskapu Kft. Minden jog fenntartva Memcached nagy teljesítményû, elosztott gyors- tárrendszer. Bár a konkrét alkalmazásoktól tökéle- tesen független, leginkább a webes alkalmazások gyorsításáraA használják úgy, hogy segítségével az adatbázis- ok terhelését csökkentik. A Memcachedet többek közt a LiveJournal, a Slashdot és a Wikipedia is használja.

Miért gyorstárazunk? Az elmúlt nyolc év során nagy méretû, interaktív, adatbázis- ra épülõ, több kiszolgálóra is kiterjedõ weboldalak készítésé- vel foglalkoztam. A  LiveJournal.com blogrendszeréhez és nyilvános hálózati szolgáltatásaihoz közel 70 gép biztosítja a hátteret, összesen 2,5 millió fiókot tartva fenn. A szoká- sos blogolási lehetõségeken és a barátok/érdeklõdés/ személyes adatok megadásának lehetõségén túl a Live- Journal oldalán fórumokat, kérdõíveket, a felhasználók egyedi igényeire szabott híroldalakat, telefonokról áttöltött 1. ábra hangfelvételeket és egyéb változatos, az embereket egymás- A Memcached ügyfélkönyvtár feladata a kérések megfelelõ kiszolgálókhoz való továbbítása hoz közelebb hozó dolgokat és szolgáltatásokat lehet találni. A dinamikus weboldalak elõállítási sebességének növelése mindig nehéz feladat, és ez alól a LiveJournal sem volt kivé- tik meg. A processzorok egyre gyorsabbak, tehát szerintem tel. A dolgot tovább nehezítette, hogy a rendszernek szinte inkább a processzor erõforrásait érdemes használni, és nem minden tartalmi eleméhez tartozhat valamilyen biztonsági a lemezeket. Igaz ugyan, hogy az újabb lemezek egyre na- szint, illetve az elemek számos különbözõ nézetbe csopor- gyobbak és olcsóbbak, a sebességük azonban korántsem nõ tosíthatók. Mivel korábban már foglalkoztam dinamikus, ilyen mértékben. Figyelembe véve, hogy mennyire hajla- környezetfüggõ tartalmakkal, tudtam, hogy statikus oldalak mosak a meghibásodásra, és mennyire tohonyák, az a leg- elõzetes elõállításával nem sokra jutunk. Az oldalakat alko- jobb, ha nem is használjuk õket, ha nem muszáj. tó különféle objektumok gyorstárazási jellemzõi és élettar- A LiveJournal webes csomópontjaiban egyáltalán nincsenek tamuk annyira eltérõ lehet, hogy az oldalakat többször kel- merevlemezek. A rendszerindítást közös, redundáns mó- lene elõállítani, mint ahányszor lekérik õket. Így ezzel don tárolt NFS képrõl hajtják végre. Ez a megoldás nem- a megoldással csak az erõforrásokat pazaroltuk volna. csak olcsóbb, de kevesebb karbantartást is igényel. Persze a gyorstárazás ettõl még nem rossz dolog. A másik Az adatbázis-kiszolgálóból természetesen nem spórolhatjuk oldalról viszont egy számítógép sebességét jelentõs mérték- ki a lemezeket, itt viszont gyors, RAID-be kötött meghajtó- ben befolyásolja memóriarendszerének sebessége, mérete kat használunk. Jelenleg tíz különbözõ adatbázisfürtöt tar- és szintjeinek száma. A gyorstárazás valóban hasznos, de tunk fenn, melyek mindegyike kettõ vagy több gépbõl áll. csak akkor, ha megfelelõ tárolóeszközzel és felbontással A tíz fürtbõl kilenc felhasználói, vagyis ezek kizárólag a fel- tudjuk végezni. Én úgy gondolom, a legjobb az, ha az használók adatait tárolják. A tizedik egy közös fürt, amely egyes oldalak objektumait külön gyorstárazzuk, és nem a nem a felhasználókkal kapcsolatos adatokat hordozza. Itt magukat a weboldalakat tároljuk. Ilyenkor nem növeljük találhatók a felhasználó-fürt hozzárendelések is. A fürtöket feleslegesen a szükséges tárterület méretét azzal, hogy az az írási mûveletek elosztása végett függetlenítettük egy- objektumokat és a több oldalon is feltûnõ sablonelemeket mástól. Megtehettük volna azt is, hogy egyetlen nagy mére- minden oldalhoz külön tároljuk. A végsõ döntés persze tû fürtöt állítunk össze, több száz szolgagéppel, ez azonban mindig különféle szempontok között egyensúlyozva szüle- csak az olvasásokat tudta volna szétosztani. A válaszidõ

26 Linuxvilág Szaktekintély

minden újabb szolga hozzáadásával növekedett volna, a ki- nattáblának, esetleg röviden kivonatnak nevezik. A kivo- írt adatok elkerülhetetlen frissítése miatt egyre rosszabb tel- nattábla különleges típusú adatszerkezet, amely egy szótár- jesítményt kaptunk volna. felületet bocsát rendelkezésünkre. Az elmondottakból talán már látszik is, hogy a LiveJournal Olyan átfogó kivonattáblát akartam létrehozni, amelyet az háttérrendszerét milyen elgondolás szerint építettük meg: összes gép összes webes folyamata akár egyszerre is el tud 1. Minél kevesebb lemezt használunk, mert csak a baj van érni, és azonnal látja a többiek módosításait. Ez lett volna velük. Ha elkerülhetetlen a használatuk, akkor csak a gyorstáram. Mivel a memória drága, a hálózatok gyorsak, gyors és redundáns be- és kiviteli alrendszert veszünk a kiszolgálók üzembiztossága pedig kérdéses, a gyorstárat igénybe. az összes gépre el akartam osztani. Gyors keresést végez- 2. Szélességében méretezzük a rendszert és nem felfelé, tem, és mivel ilyet nem találtam, nekiláttam megvalósítani vagyis inkább több kis gépet üzemeltetünk, mint keve- az elképzelésemet. sebb nagyot. A Memcached kiszolgáló példányok mindegyike egy felhasz- náló által megadott IP-n és kapun várja a kéréseket. Az alap- A kis gép persze nem az olcsó, inkább a sokáig használható ötlet az, hogy a hálózaton mindenfelé, ahol csak szabad me- gépet jelenti. Én szeretek addig megtartani egy gépet, móriát találunk, Memcached példányokat futtatunk, és ezek ameddig az általa elfoglalt hely és a megtermelt hõ szem- szolgálják ki az alkalmazásokat. Egy-egy gépen akár több pontjából érdemes. Méretezésnek nevezik azt is, amikor fél- példányt is lehet futtatni, ha az adott gép 32 bites, és több évente kidobják a gépet, és vesznek egy még nagyobbat, de memóriával rendelkezik, mint amit a rendszermag egy-egy © Kiskapu Kft. Minden jog fenntartva ez a megoldás nekem nem nagyon tetszik. folyamat számára biztosítani tud. Például, mielõtt még rájöt- tünk volna, hogy inkább szélességében, mint felfelé érdemes Hol gyorstárazzunk? méretezni a rendszert, vettünk néhány elképesztõen drága, A Memcached bevezetése elõtt a webes csomópontok ked- egyenként 12 GB memóriával felszerelt gépet. Mostanában vük és igényük szerint érhették el az adatbázisokat. A rend- mindenféle feladatokra használjuk õket, többek közt öt-öt szer mûködött, de nem volt az igazi. Hamar rájöttem, hogy 2GB-os Memcached példányt futtatnak. Így egyetlen gép is hiába van 4 vagy 8 GB memória az adatbázis-kiszolgálóban, 10 GB memóriával képes hozzájárulni az átfogó gyorstárhoz. gyorstárai korlátozottak, mind magának a memóriának Mindezt annak ellenére, hogy 32 bites Linux alatt egy-egy a méretét, mind a 32 bites gépeken futó folyamatok által folyamat általában csak 3 GB memóriát tud megcímezni. megcímezhetõ terület nagyságát tekintve. Persze vehettem A Memcached trükkje az, hogy adott kulcs kezelésére min- volna 64 bites gépeket, amelyek több memóriát tudnak dig ugyanazt a csomópontot kell felkérni, miközben a táro- megcímezni, de mit tegyek, makacs és fösvény vagyok. ló kulcsok egyenletesen oszlanak el a csomópontok között. Úgy döntöttem tehát, hogy a webes csomópontokon kell Arra nincs lehetõség, hogy a „példa” kulcsot az 1-es gépen többet gyorstárazni. Mivel mod_perl 1.x-et használunk, tároljuk, majd egy másik folyamat késõbb a 2-es géprõl pró- a gyorstárazás egyszerûen kínszenvedés. Minden folyamat, bálja betölteni. Persze ez nem is okoz különösebb gondot. vagyis minden webes kérés saját címtérrel rendelkezik, A Memcached csomópontokat úgy érdemes kezelni, mint a többivel nem tud adatokat megosztani. Meg lehetne csi- a kivonattáblák vödreit. nálni, hogy a 30-50 folyamat mindegyike saját gyorstárat tartson fenn, de megint csak pazarolnánk az erõforrásokat. A Memcached mûködése A System V megosztott memória megoldása ma már megle- 1. lépés: Az alkalmazás a példa1, a példa2 és a példa3 iránt hetõsen szokatlan korlátokkal küzd, nem hordozható, és bocsát ki kérést az ügyfélkönyvtáron keresztül, ez csak egyetlen gépen mûködik. Több mint 40 csomóponton kiszámítja a kivonatok értékét, amibõl ki tudja vá- egyszerûen nem is használható. Azt hiszem, érzékelhetõ, lasztani, hogy melyik Memcached kiszolgálóhoz hogy mennyire nem voltam elégedett a már meglévõ kell fordulnia. gyorstárazó megoldásokkal. Még ha alkalmazásrendsze- 2. lépés: A Memcached ügyfél párhuzamos kéréseket küld rünk többszálú is lett volna, és az adatokat elvileg könnyen a megfelelõ Memcached- kiszolgálóknak. meg lehetett volna osztani a folyamatok között, ez akkor is 3. lépés: Memcached kiszolgálók válaszolnak az ügyfél- csak egy-egy gépre terjedt volna ki. El akartuk kerülni, könyvtárnak. hogy a több mint 40 gép önállóan gyorstárazzon, és ki tud- 4. lépés: A Memcached ügyfélkönyvtár összegyûjti az alkal- ja, hány példányt tartson fenn az adatokból. mazásnak szóló válaszokat.

A Memcached születése Aki ismeri a kivonattáblák mûködését, nyugodtan ugorjon. Egy napon, amikor már kellõen tele volt a puttonyom Aki nem, annak azonnal adok egy gyors áttekintést. A kivo- a mod_perl alkalmazások gyenge gyorstárazásával, álmo- nattábla vödrök tömbje. Minden vödör (azaz tömbelem) dozni kezdtem. Rájöttem, hogy egy csomó szabad memória csomópontok egy listáját tartalmazza, minden csomópont található elszórva a hálózaton, és valahogy ki kellene hasz- egy kulcs-érték párosból áll. A megfelelõ kulcsot tartalmazó nálni. Aki Perl programozóként turkál egy kicsit a CPAN- csomópont után szükség esetén ebben a listában végzünk on, Cache::* modulok ijesztõ sokaságát találja. Legtöbbjük keresést. A legtöbb kivonattábla elõször kisméretû, majd felülete valamilyen szótár. Akinek ez a kifejezés nem mond idõvel dinamikusan változik a mérete, ahogy a vödrökben túl sokat, annak elárulom, hogy a szótár olyan elvont adat- tárolt listák túl hosszúakra nyúlnak. típus, amely kulcsokat és értékeket rendel össze. A Perlben Ha adott kulcshoz tartozó értékre vonatkozóan olvasási járatos emberek az ilyesmit asszociatív tömbnek vagy kivo- vagy írási kérést indítunk, akkor a kulcs alapján elõször egy

www.linuxvilag.hu 2004. november 27 Szaktekintély

kivonatot kell számolni. A kivonatoló függvények egyirá- készítettük. A program elsõ, kísérleti példányát Perlben ír- nyú leképezõ függvények, amelyek egy kulcshoz (ez szám tuk. Szeretem a Perlt, de a kísérleti kód nevetségesen lassú vagy karakterlánc egyaránt lehet) valamilyen számot ren- és nagyméretû volt. A Perl meglehetõsen sok memóriát delnek – ez lesz a vödör száma. A vödör számának megha- használ, és nagyobb számú hálózati kapcsolatot sem képes tározása után keresést kell végezni a vödör listájában az egyszerre kezelni. adott kulcsú csomópont után. Ha nincs ilyen, akkor új cso- A jelenlegi változat C nyelven készült, egy folyamatból ál- móponttal kell bõvíteni a listát. ló, egyszálú, aszinkron be- és kivitelt végzõ, esemény ala- Mi köze van mindennek a Memcached mûködéséhez? pú démon. A hordozhatóság és a megfelelõ sebesség érde- A Memcached a felhasználók számára egy szótárfelületet kében az eseményekrõl való értesítéseket a libevent segítsé- (kulcs -> érték) biztosít, de belül két rétegû kivonatolást vé- gével oldottuk meg. A libevent használata azért elõnyös, gez. Az elsõ réteg az ügyfélkönyvtárban található. A kulcsot mert futási idõben a lehetõ legjobb módszert választja a fájl- képzetes vödrök listájába kivonatolva ez dönti el, hogy me- leírók kezelésére. BSD alatt például a kqueue, Linux 2.6 alatt lyik Memcached kiszolgálónak kell elküldeni a kérést. Ami- pedig az epoll szolgáltatásaira épül, amelyek több ezer pár- kor a kérés eljutott hozzá, a kiválasztott Memcached kiszol- huzamos kapcsolat hatékony kezelésére is megfelelõk. gáló normál kivonattáblát alkalmaz. Más rendszereken a libevent a hagyományos poll és select Minden Memcached példány tökéletesen független, a többi- eljárásokat használja. vel semmilyen adatcserét nem folytat. Mindegyik példány A Memcached belsejében minden algoritmus O(1) futási ide- © Kiskapu Kft. Minden jog fenntartva a legrégebben használt elemeket dobja el, amikor helyet te- jû. Az algoritmusok végrehajtási ideje és processzorigénye remt az újaknak. A kiszolgálók rengeteg statisztikát készíte- tehát az egyszerre csatlakozó ügyfelek számától – legalábbis nek, amelyek alapján összesíthetõ a teljes Memcached telep a kqueue vagy az epoll használatakor – független, ahogy az lekérdezés/találat/hiba mutatója. Ha valamelyik kiszolgáló adatok méretétõl és az egyéb tényezõktõl is. meghibásodna, az ügyfelek képesek a halott gép vagy gé- Megjegyezném, a Memcached tömbfoglalót (slab allocator) pek megkerülésére, a továbbra is aktív kiszolgálókat pedig használ a memóriafoglalásokhoz. A Memcached korai vál- tovább használják. Ez a szolgáltatás elhagyható, ugyanis tozatai a glibc-féle mallocot használták, ám ez nagyjából használatához az alkalmazásokat is fel kell készíteni arra, egy heti mûködés után fura dolgokat kezdtek produkálni, hogy esetleg elavult adatokat kapnak valamelyik betegeske- és a címtér széttöredezése miatt csak a processzor erõforrá- dõ csomóponttól. Ha a szolgáltatást kikapcsoljuk, akkor sait fogyasztotta. A tömbfoglalók csak nagy méretû memó- a halott kiszolgálókhoz intézett kérések egyszerûen egy riaterületeket foglalnak le, ezeket a különféle elemosztá- gyorstárhibát eredményeznek az alkalmazás oldalán. Ha lyok számára kisebb részekre osztják, majd egy részek fog- kellõen nagy, elegendõ egyedi állomásból álló Memcached laltságát nyilvántartó lista vezetésével figyelik, hogy az telepet tartunk fenn, akkor egy-egy gép leállása nem fogja egyes osztályok objektumai mikor szabadulnak fel. Errõl számottevõ mértékben rontani az átfogó találati arányt. a témáról további részleteket a források között szereplõ Bonwick-féle leírásban lehet találni. A Memcached pillanat- Saját rendszerünk felépítése nyilag 64 bájt és 1 MB között képes területet foglalni úgy, A LiveJournal.com jelenleg 28 Memcached példányt futtat hogy a memória nagysága kettõ hatványa legyen. Minden összesen tíz gépen, ezek a leggyakrabban igényelt 30 GB- objektumot a befogadására alkalmas legkisebb egységben nyi adatot gyorstárazzák. Találati arányunk 92 % körül mo- helyez el. A tömbfoglaló használatának köszönhetõen zog, vagyis az alkalmazásoknak a korábbinál jóval keve- a megfelelõ teljesítményt tetszõleges idõtartamra biztosíta- sebbszer kell az adatbázisokhoz fordulniuk. ni tudjuk. Az éles Memcached kiszolgálóink például 4-5 Webes csomópontjaink mindegyike 4 GB memóriával ren- hónapon keresztül üzemeltek, átlagosan 7000 lekérdezést delkezik, ezeken három-három 1 GB-os Memcached pél- kezeltek másodpercenként, de semmilyen gond nem volt dányt futtatunk, a mod_perl 500 MB-tal gazdálkodhat, 500 velük, és processzorterhelésük is alacsony maradt. MB pedig tartalékként szolgál. A Memcached és a mod_perl A Memcacheddel szemben további elvárás volt, hogy képes azonos gépen való futtatása jó megoldás, a mod_perl kó- legyen zárolások nélkül mûködni. Minden objektummal dunk ugyanis erõsen terheli a processzort, a Memcached kapcsolatban belsõ változatkövetést és hivatkozásszámlálást viszont csak alig. Természetesen megtehetnénk, hogy végez, így egyik ügyfél sem akadályozhatja egy másik mû- a Memcached futtatására külön gépeket vásárlunk, de gaz- veleteit. Elõfordulhat például, hogy egy a csomagok felét el- daságosabb megoldás a Memcached példányokat oda szét- dobáló rossz hálózati kapcsolattal rendelkezõ ügyfél éppen szórni, ahol amúgy is rendelkezünk felhasználható memó- frissít egy olyan a objektumot, amit közben több tucat má- riával, esetleg memóriabõvítést végezni egy régebbi gépen, sik ügyfél tölt le. Még ekkor sem kell senkinek sem bárki ami így meg fog felelni a feladatra. másra várakoznia. Memcached telepet különféle méretû gyorstárakkal is lehet A mûködésrõl még annyit megjegyeznék, hogy a protokoll futtatni, mi például 512 MB, 1 GB és 2 GB méretû példá- egyszerre több kulcs lekérdezését is lehetõvé teszi, ami fõ- nyokat keverünk. A példányokat és méretüket az ügyfélbe- ként akkor hasznos, ha egy alkalmazás elõre tudja, hogy állítások között kell megadni, a Memcached kapcsolatobjek- több száz kulcsot is elõ kell keresnie. Ilyenkor nem soros le- tumok ennek megfelelõen súlyoznak. kérdezést indít, ami a hálózati válaszidõk miatt viszonylag sokáig tartana, hanem egyetlen kéréssel elintézi az összeset. Sebesség Ha szükséges, az ügyfélkönyvtárak önmûködõen több, A gyorstárazás elsõdleges célja nyilván a folyamatok gyorsí- a Memcached példányokhoz egymással párhuzamosan indí- tása, tehát a Memcached rendszert a lehetõ leggyorsabbra tott többkulcsos lekérdezésre osztják az alkalmazásoktól ér-

28 Linuxvilág Szaktekintély

kezõ többkulcsos kéréseket. Arra is van lehetõség, hogy az • Sokan alkalmazzák ugyanarra a célra, mint alkalmazások elõre meghatározott kivonatértékeket csatol- a LiveJournal, vagyis kisméretû webes objektumok janak az adatokhoz, így egy-egy adatcsoportot azonos pél- gyorstárazására. dányon tudnak tartani. Ezzel a megoldással az ügyfél- • Az egyik oldalon az éppen lejátszás alatt lévõ zeneszá- könyvtár némi processzoridõt is megtakaríthat, hiszen mot adják át vele Java alapú adatfolyam-kiszolgálójuk- a kivonatokat nem kell kezelnie. tól PHP alapú webhelyüknek. Erre a célra korábban egy adatbázist használtak, de a Memcached szerintük jobban Az ügyfélkönyvtárak mûködik. A Memcached ügyfél/kiszolgáló felülete egyszerû, könnyen • Sokan hitelesítési adatokat és munkamenetkulcsokat áttekinthetõ. Ügyfélkönyvtár Perl, PHP, Python és Java alá gyorstáraznak vele. egyaránt létezik. Úgy hallom, egyik munkatársam egy Ruby • Az egyik helyen az ismert jó és rossz állomások és hite- ügyfélen is dolgozik, ami hamarosan meg fog jelenni. lesítési adataik gyorstárazásával a levélkiszolgálók mû- Az ügyfelek mindegyike támogatja az objektumok sorren- ködését gyorsítják. dezését, erre saját, natív sorrendezõ eljárásukat használják: a Perl a Storable, a PHP a serialize, a Python a Pickle, a Java Mindig újabb és újabb érdekes elektronikus leveleket és ja- pedig a Serializable felületet veszi igénybe. A legtöbb ügyfél vaslatokat kapok – örömmel látom, hogy sokaknak tudtunk képes az átlátszó tömörítés támogatására, amelyet beállítás- segíteni. tól függõen csak adott adatméret felett használ. A sorrende- © Kiskapu Kft. Minden jog fenntartva zés és a tömörítés használata azért vált lehetségessé, mert Egyéb megoldások a Memcached megengedi az ügyfeleknek, hogy átlátszatlan Ha valaki egy többszálú alkalmazást egyetlen gépen futtat- jelzõket – ezek a bejövõ adatok kezelésének módját hatá- va meg tudja oldani feladatait, illetve nincs szüksége átfogó rozzák meg – tároljanak az egyes tételek mellett. gyorstárra, annak nincs mit kezdeni a Memcached-del. Aki csak egy gépet használ, annak a SysV megosztott memória A Memcached használata szolgáltatása is megfelelõ lehet. A Memcached telepítése önmagában nem bonyolult, haszná- Néhányan felvetették, hogy a MySQL 4.x lekérdezés-gyors- lata viszont már komolyabb körültekintést igényel. Azt, hogy tárának alkalmazásával a Memcached kiiktatható. A MySQL a legtöbb idõ milyen mûveletekkel telik el, csak saját alkal- lekérdezés-gyorstáblája minden alkalommal kiürítésre kerül, mazásaink vizsgálatával tudjuk eldönteni – ezeken a helye- amikor valamelyik érintett tábla – bármilyen módon is – fris- ken kell aztán gyorstárazni. A gyorstár frissítésérõl és tisztán sítésre kerül, ezért inkább olyan helyeken használható, ahol tartásáról szintén gondoskodnunk kell, a gyorstár tartalmá- a tartalmat csak olvassák. A LiveJournal-on rengeteg írás tör- nak egységessége ugyanis a legtöbb alkalmazás számára fon- ténik, ahogy a nagy forgalmú webhelyeken általában lenni tos. Ha alkalmazásunk belsõ API-ja már letisztult, és az adat- szokott. Más adatbázisokhoz hasonlóan a MySQL gyorstára- bázist nem ide-oda kapkodva érjük el, akkor a Memcached inak mérete összesen nem haladhatja meg a rendszermag támogatásának hozzáadásával nem lesz gond. A lekérdezõ által biztosított címteret, ami a 32 bites gépeken 3 GB – ma- függvényekben egyszerûen csak Memcached-hez kell elsõ- napság ez már kevésnek számít. ként fordulni. Hiba esetén lépjünk tovább az adatbázishoz, Sokaknak megfelelõ megoldás a MySQL memóriabeli tábla- majd töltsük fel a Memcached tárait is. Az adatírásokat végzõ kezelõje is. Nekem azért nem tetszett, mert csak szabott mé- függvényekben az adatbázis és a Memcached frissítését egy- retû rekordokkal tud dolgozni, BLOB és TEXT oszlopok aránt végezzük el. Minden bizonnyal lesznek olyan verseny- használatát nem engedi. Az általa tárolható adatok összesí- helyzetek és adategységességi gondok, amelyek megoldásra tett mérete is korlátozott, vagyis belõle is nagy számú pél- várnak, ám a Memcached API-ja biztosítja a kezelésükhöz dányt kellett volna futtatni, és ugyanúgy gondoskodni kel- szükséges eszközöket. lett volna a kulcsok szétosztásáról. A Memcached olyan adatok tárolására is használható, ame- lyeket lemezre nem akarunk kiírni. A LiveJournal például Köszönetnyilvánítás úgy elõzi meg az adatküldések véletlen kettõzõdését, hogy Szeretnék köszönetet mondani Anatoly Vorobey fejlesztõ- a tranzakciók kódjait a Memcached segítségével tárolja, nek, Lisa Phillipsnek, amiért hajlandó volt a korai, folyton kulcsként a tranzakciók aláírását használva. A Memcached összeomló változatokkal küzdeni, továbbá a levelezõlista elsõdleges adattárként való használatára egy másik példa tagjainak, akik rengeteg foltot, kérdést és javaslatot küldtek az egyszerû és/vagy rosszindulatú robotok és szemétküldõk nekünk. kihajigálása. Ha figyelemmel követjük, hogy az egyes IP- címekrõl származó kapcsolatok révén milyen mûveleteket Linux Journal 2004. augusztus, 124. szám és mikor indítottak, akkor bizonyos minták alapján már ko- rán fel tudjuk ismerni a támadásokat, és meg tudjuk kezde- Brad Fitzpatrick nyolc évig adatbázis alapú ni a szükséges intézkedéseket. Ezeket az adatokat felesleges webhelyek építésével foglalkozott. Brad szeret ke- volna adatbázisban tárolni, csak a lemezmeghajtókat terhel- rékpározni, illetve különféle, egyébként csak pénz- nénk velük. Bár a memóriában való tárolás elegáns megol- költéssel megoldható gondokra alternatív megol- dás, ha valamelyik Memcached csomópont meghibásodik, dásokat kitalálni. Aki nem kék tablettákat forgal- akkor az adatok is elvesznek. maz, és nem halott kiszolgálókról akar értesítést A levelezõlistán megkérdeztem, hogy mások mire használ- küldeni, annak levelét örömmel fogadja ják a Memcached-et, és a következõ válaszokat kaptam: a [email protected] címen.

www.linuxvilag.hu 2004. november 29 Szaktekintély

A Linux fájlrendszer biztonsága (1. rész) A jogosultságok beállításának hibája számos gyakori Linux probléma – nem egy- szer idegesítõ – forrása, ezért kell elsajátítani a jogosultságok alapjait, és megten- ni az elsõ lépéseket a Linux biztonságának megértése felé. © Kiskapu Kft. Minden jog fenntartva

Linux Journal Paranoid pingvin rovatában az elmúlt Nem az a lényeg, hogy leírjunk minden egyes fájltípust, ami négy évben elsõsorban eszköz-központú cikkek je- a Linuxban vagy a UNIX-ban létezik, hanem, hogy szemlél- lentek meg. Megtudtuk, hogyan kell biztonságossá tessük, hogy szinte mindent fájlok képviselnek. Amint ezt tenniA a Sendmailt, hogyan lehet a Stunnel segítségével SSL felfogjuk, sokkal könnyebb lesz megérteni, hogy miért olyan titkosítást alkalmazni, valamint egy egész sereg hatékony fontos a fájlrendszer biztonsága, és hogyan mûködik. biztonsági program beállításának és futtatásának módját. A következõ néhány oldalt ezzel szemben a a fájlrendszer Felhasználók, csoportok, jogosultságok jogosultságainak szenteljük, amely egyfelõl a Linux bizton- A Linuxban tulajdonképpen két olyan dolog van, amit nem ságának egyik legalapvetõbb, legfontosabb tényezõje, más- fájlok képviselnek: a felhasználói fiókok és a csoportfiókok. részt – és ez az igazán meglepõ – viszonylag elhanyagolt Többféle fájl is tartalmaz adatokat a rendszer felhasználóiról téma. Ha bölcsen használjuk, a felhasználók és a behatolók és csoportjairól, de valójában egyik sem képviseli azokat. nehezebben tudnak visszaélni a jogosultságokkal. Ha azon- A felhasználói fiók olyan valakit vagy valamit jelent, aki/ami ban nemtörõdöm módon állítjuk be, a kisebb gyenge pon- képes a fájlok használatára. Ez azt jelenti, hogy emberek is tok nagymértékben veszélyeztethetik a rendszert. Ezek és rendszerfolyamatok is használhatnak felhasználói fióko- a cikkek különösen hasznosak lehetnek a Linux újoncok kat. Ha egy felhasználói fiók neve például webmester, az ál- számára, akik nem értik, mit jelenthet az a sok drwxr-xr-x talában egy olyan embert jelent, aki webhelyeket tart fent, halandzsa fájllistában. De ezek a cikkek, különösen de szabványos lp Linux felhasználói fiókot a soros nyomtató a 2. rész, még a középhaladók számára is – esetleg akik démon (lpd) használja – az lpd program lp felhasználónéven még nem értik a setuid és a setgid pontos következményei – fut. Késõbb elmagyarázzuk, hogy mit jelent a programok tartogathat újdonságokat. számára, ha egymás elleni felhasználóként futnak. A csoportfiók egyszerûen felhasználói fiók egy listája. Min- Bevezetés: Minden fájl den egyes felhasználói fiók egy fõ csoporttagsággal van Nem sokan tudják, hogy a UNIX és a hozzá hasonló rend- meghatározva, de valójában annyi csoporthoz tartozhat, szerekben alapvetõen mindent fájlok képviselnek. A doku- amennyihez szükséges. A maestro (mester) felhasználónak mentumokat, a képeket és akár a futtatható programokat is például lehet a conductors (karmesterek) csoportban a fõ könnyû a merevlemezen elhelyezkedõ fájlokként felfogni. tagsága, és tartozhat a pianists-hoz (zongoristák) is. Ugyan a könyvtárakat fájltárolóként képzeljük, pedig való- A felhasználók fõ csoporttagsága az /etc/password fájlban ta- jában olyan fájl, amely – ahogy sejtettük – más fájlokat tárol. lálható fiókbejegyzésben van meghatározva. A felhasználót Hasonlóképpen, annak ellenére, hogy a rendszerhez kap- további csoportokba is sorolhatjuk, az /etc/group szerkeszté- csolt CD-ROM elég kézzelfoghatónak tûnik, de a Linux sével, a felhasználónevet minden olyan csoportbejegyezés rendszermag számár az is csak egy fájl: egy különleges esz- végéhez írva, amelyben a felhasználónak szerepelnie kell. közfájl, a /dev/cdrom. A rendszermag tulajdonképpen ebbe Másik lehetõségként használhatjuk a usermod parancsot a különleges fájlba ír és ebbõl olvas ahhoz, hogy adatot – további információkért lásd a usermod(8) súgóoldalt. küldjön róla, vagy hogy a CD-ROM meghajtóra írja. Való- Az alábbi lista elsõ sora a /etc/password fájl maestro-ra jában a legtöbb rendszerben a /dev/cdrom jelképes hivatko- vonatkozó bejegyzését mutatja, a következõ kettõ pedig zás a /dev/hdb-re, vagy valamelyik más különleges fájlra. a /etc/group fájl megfelelõ tartalmát. Ki sem találnánk, hogy a jelképes hivatkozás viszont nem más, mint egy olyan fájl, amely egy másik fájl elérési útvo- maestro:x:200:100:Maestro Edward nalát tartalmazza. Hizzersands:/home/maestro:/bin/bash Más fájlok, mint például a nevesített csõvezetékek, bemene- ti/kimeneti csatornaként viselkednek, lehetõvé téve, hogy conductors:x:100: a programok adatokat adjanak át egymásnak. pianists:x:102:maestro,volodyia

30 Linuxvilág Szaktekintély

A passwd fájlban az elsõ mezõ a felhasználói fiók nevét, a maestro nevet tartalmazza. A második (x) maestro jelsza- Parancsok és súgóoldalak vának mutatója, ami arra utal, hogy a jelszó valójában az /etc/shadow fájlban tárolódik. A harmadik mezõ a maestro Ebben a cikkben a pontos írásmód és az adott parancsok számazonosítója (uid-ja), amely ebben az esetben 200. A ne- használata helyett a fájlrendszer alapelveire összpontosí- gyedikben a felhasználó elsõdleges csoportjának számazo- tunk. De a kezdõk biztosan szeretnék tudni, hogy egyálta- nosítója (gid) látható, amely ezúttal 100. A többi mezõ egy lán hogyan kell futtatni ezeket a parancsokat, és hol talál- megjegyzést, maestro saját könyvtárát és alapértelmezett hatunk segítséget az írásmódhoz és az alkalmazáshoz. bejelentkezési héját tartalmazza. Elõször is, minden példában és példahelyzetben a termi- A /etc/group fájlban az egyes sorok csupán a csoportnevet, nálablakban dolgozunk. A Microsoft Windows felhaszná- a csoportjelszót (általában nem használatos – az x a muta- lók úgy képzelhetik el a terminálablakot, mint egy DOS ké- tó), a csoport számazonosítóját (gid) és vesszõvel elválaszt- szenléti jelet, vagy parancsablakot. A terminálablak bizto- va, a csoportba másodrendû tagként felvett felhasználók lis- sítja a Linuxszal való párbeszéd legközvetlenebb formáját, táját tartalmazzák. Így láthatjuk, hogy a conductors cso- vagyis minden parancsot kézzel írhatunk be, ahelyett, port gid-je 100, ami megfelel maestro fõcsoportként megha- hogy egérkattintásokkal indítanánk el. tározott gid-jének. Azt is látjuk, hogy a pianist csoportnak Ahhoz, hogy saját héjmunkamenetet indítsunk a GNOME- tagja a maestro felhasználó, és másodrendû tagként egy ból, kattintsunk a Main Menu (Fõmenü) gombra, és vá- © Kiskapu Kft. Minden jog fenntartva volodyia nevû felhasználó. lasszuk a System Tools®Ternóminal lehetõséget. A KDE- Az /etc/password és az /etc/group fájl felhasználói fiókok lét- ben a terminálparancsot konsole-nak hívják, és saját ikonja rehozása, módosítása és törlése céljából való megváltoztatá- van a tálcán: egy kagylóhéj egy számítógép-monitor elõtt. sának legegyszerûbb módja a useradd, usermod illetve Másik lehetõségként elindíthatjuk a Run Program (Prog- userdel parancsok használata. A parancs írásmód helyett ram futtatása) párbeszédablakot, és a készenléti jelnél be- most inkább az elvre összpontosítunk, tehát elég annyit gépelhetjük, hogy konsole. Ahhoz, hogy gyakorlatilag bár- mondani, hogy mind a három parancs a csoporttagságok melyik Linux parancshoz gyors segítséget kapjunk egy beállítására és módosítására szolgál, és a megfelelõ súgóol- terminál/héj munkameneten belül, begépelhetjük az dalakon jól dokumentáltak. Ahhoz, hogy egy rövid össze- adott parancsot, utána pedig a --help lehetõséget. Ha foglalót lássunk a használatról, gépeljük be a parancs után például nem emlékszünk az ls parancs összes parancs- a --help paramétert, például useradd --help. sor lehetõségére, amely a fájlokat és a könyvtárakat lis- tázza, csak beírjuk az ls --help parancsot. Egyszerû fájl-jogosultságok A --help lehetõség gyors, de nem mindegyik parancsnál Minden fájlnak két tulajdonosa van: egy felhasználó és egy mûködik. Amikor mûködik is, az eredmény néha túlságo- csoport, mindegyik saját jogosultság-beállításokkal rendel- san tömör. A parancsokra vonatkozó segítségkérés leg- kezik, amelyek meghatározzák, hogy a felhasználó mit csi- jobb módja a man parancs használata. A súgóoldalak (man nálhat az adott fájllal – olvashatja, írhat bele és végrehajt- pages) teljes útbaigazítást biztosítanak a legtöbb Linux pa- hatja. Egy harmadik beállításkészlet arra vonatkozik, hogy rancs használatával kapcsolatban, és gyakorlatilag az mások – olyan felhasználói fiókok, amelyek nem a fájl tulaj- összes UNIX-hoz hasonló rendszerben jelen vannak. Ah- donosai, illetve nem tartoznak olyan csoporthoz, amely hoz, hogy megtekintsük például az ls parancs súgóoldalát, 1. listán a fájl tulajdonosa – mit csinálhatnak a fájllal. Az gépeljük be a man ls parancsot. A súgóoldal felsorolás- a /home/maestro/baton_dealers.txt hosszú fájllistája látható. ban a szóköz billentyû segítségével léphetünk tovább egy A jogosultságok a felhasználói engedélyek, a csoportenge- oldalt, a B gombbal pedig egy oldalt visszamehetünk, ha délyek és a többi engedély sorrendje alapján vannak felso- pedig begépeljük, hogy /valami, akkor megkeresi súgóol- rolva. Az 1. listában bemutatott fájl esetében a tulajdonosa dalon a „valami” karaktersort. (maestro) olvashatja és írhatja a fájlt (rw-), a tulajdonos cso- Mi van azonban olyankor, ha nem tudjuk annak a parancs- port (conductors) szintén olvashatja és írhatja a fájlt (rw-), nak a nevét, amelyre szükségünk van? Erre való az de a többi felhasználó csak olvashatja. A jogosultságok azért apropos parancs. Gépeljük be például, hogy apropos kicsit bonyolultabbak. Az egyéb kategóriába sorolt felhasz- list, hogy olyan különféle parancsokat láthassunk, ame- nálók egy adott fájlra vonatkozó jogosultságok alapján bár- lyek valamit listáznak, majd annak a parancsnak a súgóol- milyen fájlt törölhetnek egy olyan könyvtárban, amelyre dalára ugorjunk, amelyre valószínûleg szükségünk van. van írási jogosultságuk. Más szóval, ha egy felhasználónak csak olvasási jogosultsága van egy fájlra, akkor nem szer- kesztheti, de ha a fájl könyvtárára írási jogosultsága van, A jogosultságokat általában a chmod paranccsal lehet beállí- akkor törölheti a fájlt. tani, ami a „change mode” (üzemmód-változtatás) rövidíté- Az olvasáson és az íráson kívül van egy harmadik jogosult- se. A példát folytatva, tegyük fel, hogy a maestro meggon- ság: a végrehajtás, amelyet x jelöl, amikor be van állítva. Ha dolja magát, és nem akarja, hogy a conductors (karmeste- a maestro ír egy héjprogramot, punish_bassonists.sh néven, rek) csoportja láthassa a pálcakereskedõk (baton dealers) és a jogosultságait a -rwxrw-r-- értékre állítja, akkor úgy listáját. A 2. listán látható parancsok segítségével eltávolít- hajthatja végre ezt a héjprogramot, hogy beírja a nevét hatja a csoport olvasási/írási jogát. a parancssorba. Ha viszont elfelejti beállítani a végrehajtási A 2. lista példa chmod parancsában (chmod go-rw) a go arra engedélyt, nem tudja majd futtatni a programot, annak utasítja a chmod-ot, hogy változtassa meg a csoport jogosult- ellenére, hogy õ a tulajdonosa. ságait, és az egyéb jogosultságokat, az -rw pedig megszabja,

www.linuxvilag.hu 2004. november 31 Szaktekintély

1. lista Jogosultságokat bemutató fájllisták A jogosultságok és a rendszergazda

-rw-rw-r-- 1 maestro conductors 35414 Gyakorlatias kifejezéssel élve, a jogosultságok egyszerûen  Mar 25 01:38 baton_dealers.txt nem vonatkoznak a root felhasználóra, a rendszergazda bármelyik fájllal bármit, bármikor csinálhat. Ezért olyan fon- tos, hogy soha ne rendszergazdaként jelentkezzünk be, és ne használjuk a su parancsot, hogy rendszergazdává vál- junk, kivéve, ha feltétlenül szükséges. Rendszergazdaként a fájl-jogosultságok nem védenek meg a saját hibáinktól. 2. lista Egy fájl jogosultságainak megváltoztatása Ez nem azt jelenti, hogy ha rendszergazdaként lépünk be, a chmod paranccsal az összes program teljesen figyelmen kívül hagyja a fájl-jo- gosultságokat. Ha a rendszergazda például a vim szerkesz- bash-$ ls -l baton_dealers.txt tõ segítségével megpróbál megváltoztatni egy írásvédett fájlt, akkor a :w! parancsot (írás kényszerítése) kell használ- -rw-rw-r-- 1 maestro conductors 35414 nia. A hagyományos ZZ vagy :w parancs ilyenkor hibaüze-  Mar 25 01:38 baton_dealers.txt netet ad vissza. Nagyon sok más parancsnak viszont nincs © Kiskapu Kft. Minden jog fenntartva olyan szolgáltatása, amely ellenõrizné az ésszerûséget. bash-$ chmod go-rw baton_dealers.txt bash-$ ls -l baton_dealers.txt a munkakönyvtárat az adott könyvtárra változtathatjuk -rw------1 maestro conductors 35414 a cd paranccsal. Ha egy felhasználónak vagy egy csoport- Mar 25 01:38 baton_dealers.txt nak nincs végrehajtási jogosultsága az adott könyvtárra, ak- kor semmit nem listázhat vagy olvashat a könyvtáron belül, az ott lévõ elemeken beállított jogosultságoktól függetlenül. Ha egy könyvtárra nincs végrehajtási jogunk, de olvasási 3. lista Egy csoport által olvasható könyvtár jogunk van, és megpróbálunk az ls paranccsal listázni, olyan hibaüzenetet kapunk, amely tulajdonképpen felsorol- bash-$ chmod g+rx extreme_casseroles ja a könyvtár tartalmát. De ez nem mûködik olyankor, ami- bash-$ ls -l extreme_casseroles kor nem rendelkezünk sem olvasási, sem végrehajtási jogo- sultsággal a könyvtárra vonatkozóan. drwxr-x--- 8 biff drummers 288 Mar 25 Tegyük fel, hogy a példarendszernek van egy biff nevû 01:38 extreme_casseroles felhasználója, aki a drummers (dobosok) csoportba tartozik. Feltételezzük továbbá, hogy az õ könyvtára tartalmaz egy extreme_casseroles nevû alkönyvtárat, amit szeretne hogy el kell távolítani a szóban forgó két kategória (a cso- megosztani az ütõstársaival. Az 3. listán látható, hogy biff port és az egyéb) jogosultságait. Tehát a chmod parancs há- hogyan állítaná be a könyvtár jogosultságait. rom részbõl áll: egy jogosultságkategóriából, amely az u, a g Az 3. listánál csak biffnek van lehetõsége fájlokat létrehozni, és az o valamilyen kombinációja. Itt állhat egyszerûen az megváltoztatni és törölni az extreme_cassaroles könyvtár- a betû is (all = valamennyi), illetve szerepelhetnek benne ban. A drummers csoport többi tagja listázhatja a tartalmát, mûveleti jelek: a - az eltávolításnak, a + a hozzáadásnak fe- és a cd paranccsal beléphet. A rendszerben viszont minden- lel meg. Ezeket mindig a hozzáadandó vagy eltávolítandó ki más számára tiltott lesz a listázás, azs olvasás, a cd pa- jogosultságok listája (általában r, w vagy x) követi. rancs használata vagy bármilyen más, a könyvtárral kapcso- latos tevékenység. Könyvtárjogosultságok Már tudjuk, hogyan kell megváltoztatni a hagyományos Összefoglalás fájlok alapvetõ jogosultságait, de mi a helyzet a könyvtárak- Ezek a Linux fájlrendszer biztonságának legalapvetõbb el- kal? A könyvtárjogosultságok kicsit másképp mûködnek, vei és gyakorlati felhasználási módjai. A 2. részben tovább mint a hagyományos fájlok jogosultságai. Az olvasás és az megyünk, és megbeszéljük (többek között) a setuid-et, írás hasonló – a könyvtáraknál ezek a jogok a könyvtártar- a setgid-et, és a numerikus jogosultsági üzemmódokat. talom listázásának illetve a fájlok könyvtáron belüli létreho- Addig is, csak óvatosan! zásának és törlésének felelnek meg. A könyvtáraknál viszont a végrehajtás kicsit kevésbé logi- Linux Journal 2004. október, 126. szám kus. Itt a végrehajtás annak felel meg, ha bármit megváltoz- tatunk a könyvtárban, vagy a munkakönyvtárat az adott Mick Bauer – Hitelesített informatikai rendsze- könyvtárra változtatjuk. Azaz, ha a felhasználónak vagy rek biztonsági szakértõje, a Linux Journal biz- egy csoportnak végrehajtási jogosultsága van egy bizonyos tonsági szerkesztõje, és biztonsági szakember könyvtárra, akkor a felhasználó/csoport listázhatja az adott a Minneapolisban, Minnesotában. A Building könyvtár tartalmát, olvashatja a könyvtár fájljait (feltéve, Secure Servers With Linux (O’Reilly, 2002) címû hogy az egyes fájlok saját jogosultságai beletartoznak), és könyv szerzõje.

32 Linuxvilág Szaktekintély

A WordPress

Akiknek olyan „mindentudó” weblog alkalmazásra van szükségük, amelynek be- állítása a lehetõ legegyszerûbben oldható meg a parancssorból, azoknak készült a WordPress. © Kiskapu Kft. Minden jog fenntartva

eblogkezelõ programokról szóló sorozatunk W méltó befejezése a WordPress rövid bemutatása, amely számos szolgáltatásának és kifinomultsá- gának köszönhetõen egyre népszerûbbé válik. A WordPress egy tökéletesen letisztult, könnyen használható felülettel rendelkezõ, MySQL-re alapozó, PHP-ben megírt weblog- készítõ és karbantartó program.

A WordPress telepítése Azoknak, akik már rendelkeznek némi tapasztalattal az Apache és a MySQL használatával kapcsolatban, a WordPress telepítése teljesen magától értetõdõ lesz. A WordPress az adatokat MySQL-táblákban tárolja, vagyis telepítése elõtt létre kell hoznunk legalább egy adatbázist. A WordPress lehetõvé teszi, hogy egyetlen adatbázison be- lül több weblog adatait is tároljuk, ami különösen jól jön 1. kép Egy weblog-bejegyzés bevitele a WordPress-ben akkor, ha az általunk karbantartott oldal társzolgáltatója csak egyetlen MySQL adatbázist bocsát a rendelkezésünk- re. Új MySQL adatbázis létrehozásához a mysqladmin Most nézzük a WordPress forráskódját (65. CD Magazin/ program használatára van szükségünk, ami az én rendsze- WordPress könyvtára), és bontsuk ki ezt a .tar.gz fájlt remen a /usr/local/mysql/bin elérési útvonalon található. az Apache programunk dokumentumkönyvtárának gyökerében. Elõfordulhat, hogy a WordPress fájljait kü- # /usr/local/mysql/bin/mysqladmin -p create lön könyvtárba vagy esetleg egy virtuális gép alá sze- wordpress retnénk rakni, de ahhoz, hogy használni tudjuk ezeket a fájlokat, mindnek a dokumentumkönyvtár gyökerében A fenti parancs feltételezi, hogy rendszergazdai jogosult- kell lennie. sággal rendelkezünk, vagyis a root felhasználó nevében fut- Most ugorjunk böngészõprogramunkkal a wp-admin/install tatjuk. Ha létrehoztuk az adatbázist, a következõkben jogo- címre és már helyben is vagyunk. A telepítõképernyõ olda- sultságot kell biztosítanunk a WordPress felhasználónak az lai ellenõrzik, hogy minden hibátlanul telepítésre került-e, adatbázisban lévõ táblákhoz. Ezt az adatbázisba történõ be- és néhány kérdést intéznek hozzánk. Rendszerint a képer- jelentkezéssel tehetjük meg: nyõ alján lévõ valamelyik hivatkozásra kell kattintanunk a folytatáshoz, majd be kell fejeznünk a telepítést. # /usr/local/mysql/bin/mysql -p -u root Ha elmulasztottuk volna az adatbázis elõzetes létrehozását, a WordPress figyelmeztet erre, tudtunkra adva, hogy a táb- Miután bejelentkeztünk, a következõ parancsokkal jogo- lák létrehozásához szükség van az adatbázisra. sultságot is adhatunk az általam wpusernek elkeresztelt A WordPress telepítõjét csak egy alkalommal használhat- WordPress felhasználónak: juk. Amennyiben egy már korábban telepített rendszeren kíséreljük meg a telepítõ ismételt futtatását, a program GRANT ALL PRIVILEGES ON wordpress.* a telepítés elõtt az elõzõ rendszer eltávolítását kéri. TO wpuser@localhost IDENTIFIED BY ´wppass´; Jó volt látni ezeket a kis figyelmességeket egy olyan prog- GRANT ALL PRIVILEGES ON wordpress.* ramban, amely nyilvánvalóan egy mûszakilag kevésbé TO wpuser IDENTIFIED BY ´wppass´; avatott közönséget céloz.

www.linuxvilag.hu 2004. november 33 Szaktekintély

A WordPress használata A WordPress telepítése után az admin felhasználónév és egy véletlenszerûen elõállított jelszó segítségével léphetünk be a programba. Rendszergazdaként lehetõségünk nyílik a bejegyzések létrehozására, szerkesztésére és törlésére, valamint a WordPress további felhasználóinak beállítására. A programban korlátlan számú felhasználó hozható létre, s ezek mindegyike egy 1-tõl 10-ig terjedõ jogosultsági szin- tet kap. A 10-es jogosultsági szinttel rendelkezõ rendszer- gazda bármit megtehet a rendszerben, akárcsak a 10-es szinttel rendelkezõ egyéb felhasználók. Természetesen nem akarjuk, hogy minden felhasználónak a rendszergazdáéval azonos jogai legyenek. A WordPress alapértelmezett telepítése számos szolgáltatás használatát korlátozza, így lehetõségünk van a különbözõ felhasználók- hoz más-más jogosultsági szintet rendelni. Például az 5-ös 2. kép Ugyanennek a bejegyzésnek a megjelenítése a WordPress és e feletti jogosultsági szinttel rendelkezõ felhasználók alapértelmezett sablonjával. © Kiskapu Kft. Minden jog fenntartva szerkeszthetik a képernyõ jobb oldalán megjelenõ hivatko- zásokat, és képeket is feltölthetnek. A rendszergazdai felü- jukkal mutatják azt is, hogy az adott formátum használat- leten keresztül ezek a szintek megváltoztathatóak. ban van-e éppen. A sor végén lévõ Close (Bezár) gomb egy A WordPress rendszerfelügyeletét biztosító felület teljes különösen elmés ötlet volt: ezzel minden nyitott állapotban egészében a Web-re épül, az adatbázis tábláinak a létreho- lévõ HTML címkét lezárhatunk. A jó felhasználói felülettel zása után a teljes rendszer irányítása egy rendelkezõ programokhoz hasonlóan a WordPress is sok böngészõprogramon keresztül megoldható. A felügyeleti olyan apró tulajdonsággal bír, amelyek hozzájárulnak a kel- részben számos menüt találhatunk, amelyek némelyike to- lemes összkép kialakításához. Ezek közé tartozik az is, hogy vábbi almenüket is kínál. Habár eleinte egy kicsit zavarban két vagy három egymás utáni kötõjelet automatikusan cse- voltam az egyes lehetõségek elhelyezkedését illetõen, de rél rövid vagy hosszú gondolatjelre. Lehetõvé teszi továbbá, hamar érteni kezdtem az elrendezés logikáját és módosítani hogy a bejegyzéseket osztályokba soroljuk, ami alapján le- tudtam számos beállítást. hetnek piszkozatok (ez az alapértelmezett), magán vagy Kitaláltam például, hogy milyen jó lenne feltüntetni nyilvános dokumentumok. Így lehetõségünk van arra, hogy a blogtáramat, vagyis az általam rendszeresen látoga- elkezdjünk dolgozni egy weblog bejegyzésen, közben el- tott blogok listáját. Ehhez a  Bloglines.com web alapú menjünk ebédelni, és visszatérve ugyanonnan folytathas- számlálóját használtam, és az OPML használatával sunk a félbehagyott munkát. A WordPress tisztában van ve- – amely az ilyen adatok kezelésének szabványos XML- le, hogy az adattörlés olyan kényes mûvelet, amelyet a fel- alkalmazása – sikerült is a weblog listát létrehoznom. használónak minden esetben meg kell erõsítenie. Emiatt A lista WordPress-be történõ importálása a links (hivat- a törlés gombot úgy alakították ki, hogy amikor az egérmu- kozások) menü blogroll (bloglista) menüpontjával már tatót elmozgatjuk felette, a háttere pirosra változik. További csak egy kattintás volt. A felsorolt lehetõségek egyike figyelemfelhívásként egy JavaScript ablak is megjelenik az OPML fájl importálása volt, s amint kiválasztottam, a felhasználó elõtt a törlési mûvelet jóváhagyását kérve. a bloglistám láthatóvá vált a világ számára. A törlés kivételével könnyedén kijavíthatunk bármilyen a WordPressben esetleg elkövetett hibát egyszerûen vissza- A felhasználói felület térve a kérdéses menüponthoz és egy más értéket kiválaszt- A nyílt forrású programokat gyakran éri bírálat a barátságos hatunk. Minden bejegyzés – beleértve a piszkozatokat és felhasználói felület hiánya miatt. Ez fõleg abból adódik, megjegyzéseket – ismételten szerkeszthetõ egészen addig, hogy az ilyen programokat író programozók saját maguk és amíg készen nem állnak a nyilvánossá tételre. munkatársaik számára készítik ezeket a szoftvereket, ami Végül a CSS módosításával lehetõség van a WordPress meg- azt is jelenti, hogy nemigen foglalkoznak a program mûkö- jelenésének és viselkedésének megváltoztatására. A CSS ke- déséhez nem közvetlenül kapcsolódó vonatkozásaival. zeli a betûtípusokat, a színeket, a méreteket és az elhelye- A WordPress alkotóinak becsületére válik, hogy a felhaszná- zést; a sablonokat, amelyek nagyrészt szabványos PHP-ben lói felületre is rengeteg gondot fordítottak, megpróbálták el- íródtak, sõt a bõvítményeket is, amelyekkel szinte bármit érni, hogy a mûszakilag járatlanabb felhasználók számára is megváltoztathatunk. A sablon megváltoztatására lehetõsé- minden egyértelmû és kellemetlen meglepetésektõl mentes get ad maga a WordPress is, de úgy gondolom, ennek a fo- legyen. Számos weblog rendszer feltételezi például, hogy lyóiratnak az olvasói inkább a fájl Emacs-szal vagy vi-vel a felhasználó ismeri az alapvetõ HTML-címkéket, és tudja, történõ közvetlen szerkesztését fogják választani. hogyan kell ezeket a dokumentumhoz adni vagy eltávolíta- Egy bõvítmény telepítéséhez elõször le kell töltenünk, majd ni. A WordPress szerkesztõablaka lehetõvé teszi a gyakorlot- a megfelelõ bõvítmény-könyvtárba kell másolnunk az állo- tabb felhasználók számára, hogy ezeket kézzel írják be, mányokat. A bõvítmény elindítása már teljes egészében ugyanakkor egy JavaScript gombokból álló készletet is biz- a Webes felületen keresztül történhet. Mindez azt is jelenti, tosít a kevésbé járatos felhasználók számára. Ezek a gombok hogy a rendszergazdák számos bõvítményt telepíthetnek nem csupán jelzik a létezõ lehetõségeket, hanem a formá- a felhasználóik számára, és rájuk bízhatják, hogy melyek

34 Linuxvilág Szaktekintély

azok a bõvítmények, amelyeket aktiválni szeretnének. A WordPress terjesztési csomagja számos mintabõvítményt is tartalmaz, továbbiak letöltésére pedig a program honlap- ján találunk lehetõséget.

Összegzés Az elmúlt néhány hónapban egy sereg különféle weblog programot vizsgáltunk meg. A COREBlog kivételével – amely egy Zope termék és a Zope kiszolgálónkra történõ telepítése gyorsan és könnyen zajlott – a WordPress telepí- tése volt messze a legegyszerûbb és leggyorsabb. Teljes szolgáltatáslistával rendelkezik, s ezek nagy része tiszta és könnyen használható felhasználói felületen keresztül mû- ködtethetõ. Még a kezdõ számítógépfelhasználók is hasz- nálhatják rendszeres munkájukhoz ezt a programot. Ha- bár a háttérben mûködõ kód és technológia – a PHP és a MySQL – nem tartoznak a kedvenceim közé, szolgálta- tásainak sokrétûsége valamint a különbözõ felületeken © Kiskapu Kft. Minden jog fenntartva dolgozó felhasználók növekvõ közössége a WordPresst helyezi az elsõ helyre.

Linux Journal 2004. szeptember, 125. szám

Reuven M. Lerner régóta dolgozik web és adat- bázis tanácsadóként, illetve fejlesztõként. Végzett hallgatóként elsõéves kutatásait végzi a North- western University Learning Sciences programjá- ban. Weblogja az altneuland.lerner.co.il, õ maga pedig a [email protected] címen érhetõ el.

www.linuxvilag.hu 2004. november 35 Dobbantó

A pingvin igenis vándormadár (2. rész) Avagy használjunk Linuxot a mobil eszközökön.

cikksorozat bevezetõ részében telepítettünk a gé- pünkre egy Debian Linuxot, valamint elkezdtük © Kiskapu Kft. Minden jog fenntartva beállítani a rendszert. Elsõ lépésben megvizsgál- Atuk milyen kernel és felhasználói program szintû megoldá- sok léteznek a mobil eszközünk energiagazdálkodási para- métereinek beállítására. Ha már megteremtettük a lehetõséget, hogy a gépünkkel eltávolodjunk a hálózati tápellátástól – a konnektortól, ak- kor jó volna ha a hálózati kábelt is ki tudnánk húzni a gép- bõl és vezeték nélkül tudnánk Internetezni. Nézzünk is gyorsan pár megoldási lehetõséget.

A WLAN – a vezeték nélküli hálózati csatlakozás Napjainkban egyre népszerûbb a technológia. Mostanra mi- nõségben és sebességben is elérte azt a szintet, hogy bizonyos felhasználási környezetekben alternatívát nyújtson a vezeté- kes hálózati kapcsolattal szemben. Arról nem is beszélve, hogy bizonyos környezetekben pedig egyenesen forradalmi változásokat idézhet elõ. Ilyen például a szállodákban, konfe- rencia központokban, éttermekben, oktatási intézményekben vagy éppen a reptereken gomba módjára szaporodó úgyne- vezett a forró pontok (hot-spot), ahol egy vezeték nélküli há- lózati csatlakozással ellátott eszközzel szabadon (esetleg díjfi- zetés ellenében) tudunk az Internetre csatlakozni. Ezzel az említett intézmények olyan értéknövelt szolgáltatást tudnak a vendégeik, látogatóik számára nyújtani, amely minden bi- zonnyal nagyon gyorsan nagyon népszerû lesz. Mindehhez semmi másra nincs szükségünk, mint beszerez- ni egy megfelelõ vezeték nélküli hálózati kártyát, betenni a gépünkbe és beállítani. Elõbbi kettõben ugyan nem, az utóbbiban viszont megpróbálok ezen hasábokon segítséget nyújtani. Mind a 2.4-es, mind a 2.6-os rendszermag támogatja a ve- olyan kártya is, amely nem, de ezt egy pillanat alatt kiderít- zeték nélküli hálózati kártyákat, így minden bizonnyal nem hetjük. 2.6-os rendszermagot használva futtassuk a root fel- lesz problémánk ezen kártyák telepítésével. A régebbi ilyen használó jogosultságaival az lspci parancsot, amely kilis- kártyák esetleg jelenthetnek kihívást, de a Linux egyik leg- tázza nekünk az összes a rendszerben jelen lévõ PCI esz- nagyobb áldása, hogy ezekre a problémákra és megoldá- közt. Amennyiben a gépünkben beépített, vagy PCI kártyás sukra, vagy az oda vezetõ útra percek alatt rábukkanha- vezeték nélküli hálózati csatlakozás van, akkor ezek között tunk az Interneten. Erre a legjobb kiindulási pont vagy meg kell, hogy találjuk az eszközünket. Amennyiben USB-n a  www.tuxmobile.org, vagy egyszerûen keresztül csatlakozó hálózati kártyánk van, akkor az lsusb a  www.google.com/linux oldal. parancs által listázott eszközök között kell, hogy szerepel- A most a kiskereskedelmi forgalomban kapható, otthoni jen a hálózati kártya. Amennyiben pedig PC kártya vagy kisvállalati (SOHO – small office, home office) környe- (PCMCIA kártya) formátumú WLAN kártyánk van, akkor zeti felhasználásra szánt kártyák többsége a 2.6-os rendszer- a pcmcia-cs csomag cardctl programjának futtatásával magban a Prism meghajtót használja. Természetesen van kaphatjuk meg a jelenleg dokkolt PC kártyák adatait.

36 Linuxvilág Dobbantó

Egy példa a waproamd-re Nézzünk egy példát egy WLAN indító programra. Ha létre- hoztuk a megfelelõ állományt, akkor helyezzük el benne az Nézzünk egy példát arra, hogyan is hozhatunk létre egy is- alábbi tartalmat: mert elérési ponthoz egy olyan szkriptet, amely az elérési pont felismerése után automatikusan csatlakozik a felismert #!/bin/bash elérési ponthoz. case “$1” in Hozzuk tehát létre az /etc/waproamd/scripts könyvtárban az start) elérési pont MAC címével, vagy ESSID nevével ellátott állo- iwconfig eth1 essid “HomeWLAN” mányt. Fontos, hogy a létrehozott állomány rendelkezzen iwconfig eth1 mode Managed futtatási joggal, különben nem fog elindulni! iwconfig eth1 key 1122334455 A waproamd szkriptjeinek futtatási sorrendjérõl jó tudni, ;; hogy elõször a MAC címmel ellátott állományokat próbálja stop) futtatni, azok közül is elõször a kisbetûseket, majd a nagy- iwconfig eth1 key off 2> /dev/null betûseket. Ha nem talált illeszthetõ mintát, akkor megpró- ;; bálja az ESSID alapján megkeresni a megfelelõ futtatható ál- esac lományt. Ha ez sem járt sikerrel, akkor jön a default nevû ál- © Kiskapu Kft. Minden jog fenntartva lomány futtatása, amely megpróbálja kitalálni, hogy mi az [ “$1” = “start” ] && exec elérési pont MAC címe, vagy ESSID azonosítója. /etc/waproamd/waproamd.action eth1 up Mennyiben MAC címmel ellátott állományt szeretnénk létre- [ “$1” = “stop” ] && exec hozni, akkor adjuk névnek például a 00-01-02-03-a0-a1 nevet /etc/waproamd/waproamd.action eth1 down és adjunk rá futtatási jogot. Amennyiben a HomeWLAN ESSID-hez szeretnénk szkriptet írni, akkor adjuk az állomány- Ezzel csináltunk egy szkriptet, amely csatlakozik nak az essid:HomeWLAN nevet. Amennyiben szóközt, vagy a HomeWLAN nevû elérési ponthoz az eth1 hálózati csatoló- egyéb speciális karaktert is tartalmazna az elérési pont ne- val, amely az 1122334455 kulcsot használja a WEP titkosítás- ve, akkor használjuk a szabványos http URL escape szintak- hoz. tikát, vagyis tegyük a karakter ASCII kódját egy % után. Amennyiben a hordozható gépünkön van olyan gomb, A szóköz például a %32 kóddal írható le. amely a vezeték nélküli hálózati csatolót aktiválja, akkor ezt Ha ezzel megvagyunk, akkor még a WEP titkosításhoz tarto- a gombot hozzátársítva a waproamd programhoz megtehet- zó kulcs beállítása lehet hátra. Ezt a /etc/waproamd/keys jük azt, hogy nem állandóan fut a démon, hanem csak akkor könyvtárban az elõbbi névhasználattal megegyezõ módon amikor mi ezt szeretnénk. Ez nagyon hasznos lehet abból létrehozott állományban tehetjük meg. Egyszerûen írjuk a szempontból, hogy így feleslegesen nem meríti az állandó bele azt a 10, vagy 26 számjegyet, ami kell. keresés az akkut.

Amennyiben már telepítettünk grafikus felületet a gépünk- keressük a megfelelõ elérési pontot és megtudjuk a paramé- re, akkor a cardinfo parancs futtatására egy jópofa grafikus tereit. A legfontosabb paraméterek, amelyekre szükségünk PC kártya felügyeleti programot tudunk indítani. lesz az elérési pont ESSID-je, ami gyakorlatilag egy szöveges Ha megtaláltuk, hogy a kártyánkat milyen lapkakészlettel azonosító, az elérési pont MAC címe, a használt titkosítás és (chipset) látták el, akkor a mag beállításai között a Device a kulcs kiosztásának módja. Ezeket az információkat vagy Drivers/Networking Support/Wireless LAN menüpont alatt elkérjük a rendszergazdától, vagy megpróbáljuk felderíteni. megtaláljuk a rendszermag által támogatott modulokat. Utóbbiban segítségünkre lehet például a waproamd (Wireless Mint említettem a beépített, a PCI és a PC kártyák jelentõs Access Point Roaming Daemon) nevû csomag. Ez a program része a Prism meghajtót használja. Amennyiben 802.11b alapértelmezésben a rendszer indításakor elindul és folyama- szabványú kártyánk van, akkor a Hermes lapkakészlet tosan keresi az elérhetõ csatlakozási pontokat. Amint talál és a Prism 2.5 modulokat fordítsuk a rendszermagba, egy elérési pontot, akkor megnézni, hogy az /etc/waproamd/ amennyiben viszont 802.11g szabvány (22/54/108Mbit/s se- scripts könyvtár tartalmaz-e az elérési pontra jellemzõ infor- bességû kártyák) is támogató kártyánk van, akkor válasszuk mációt – vagy a MAC címet, vagy az ESSID azonosító ne- az Intersil Prism modult és fordítsuk bele a magba. vet – és amennyiben igen, úgy lefuttatja az adott szkriptet. Ha újrafordítottuk a rendszermagot és újraindítottuk a gé- Ha nem talál, akkor az alapértelmezett (default) szkript fut le pet ezzel a rendszermaggal, akkor a betöltés folyamán már és próbálja meg létrehozni a csatlakozást. Ez a nyilvános hot- meg kellett, hogy jelenjen a kártya. Ezt egyébként ellenõriz- spot-ok esetén egy jó választás lehet, azonban ha az elérési hetjük a dmesg | more parancs kiadásával. Ha a kártya fizi- pont tartalmaz valamilyen speciális beállítást, akkor már kér- kailag rendelkezésre áll, akkor telepítsük fel a WLAN kár- déses, hogy a felderítés mennyire jár sikerrel. Amennyiben tyák kezeléséhez szükséges programokat tartalmazó linux- olyan elérési ponthoz szeretnénk csatlakozni, amelyik WEP wlan-ng csomagot. Ebben a csomagban található többek kö- titkosítást használ, akkor az /etc/waproamd/keys könyvtárba zött az iwconfig állomány is, amellyel a kártya kapcsolódá- helyezzünk el egy .wep nevû sát tudjuk beállítani a hozzáférési pontokhoz (access point). állományt, amely a WEP kulcsot tartalmazza. Ha ez is megtörtént, akkor nincs más dolgunk hátra, mint Az elõbb bemutatott waproamd egy nagyon jópofa szolgálta- beállítani a hálózati beállításokat. Kezdjük azzal, hogy meg- tás, de az élet azért nem fenékig tejfel. Sajnos vannak olyan

www.linuxvilag.hu 2004. november 37 Dobbantó

kártyák – fõleg a régebbi típusok -, amelyek nem, vagy csak részben támogatják a felderítési funkciót. Arról, hogy kár- tyánk rendelkezik-e ilyen képességekkel meggyõzõdhetünk az iwlist scan parancs beírásával, ahol a WLAN csatoló neve az az interfész, amelyik az iwconfig parancs által listázott eszközök között WLAN támo- gatást mutat. Amennyiben az iwlist azt adná vissza, hogy az eszközünk nem támogatja a WLAN felderítõ opció használa- tát, még ne keseredjünk el. Van ugyanis lehetõség arra, hogy kézzel beállítva a kapcsolati paramétereket használni tudjuk a vezeték nélküli hálózatot. Sõt, annak ellenére, hogy az iwlist nem ad vissza értékelhetõ eredményt, a waproamd még talán mûködni is fog. Az én notebookom például egy olyan beépített WLAN kártyával van megáldva, amelyik az iwlist parancsra meg sem mukkan, de remekül be tudtam állítani a waproamd-t és a bekapcsoló gombra tökéletesen fut. Amennyiben valamilyen oknál fogva mégis a kézi beállítás [*] Ultra (connectionless) protocol © Kiskapu Kft. Minden jog fenntartva mellett döntünk, úgy ehhez az iwconfig parancsot kell hasz- --- IrDA options nálni. Használata teljesen megegyezik az ifconfig parancs [*] Cache last LSAP használatával, gyakorlatilag hasonló írásmódot kell használ- [*] Fast RRs (low latency) ni. Nagyon jó súgóoldal tartozik az iwconfig és tulajdonkép- pen az összes vezeték nélküli hálózati csomagban szereplõ Ha ez megvan, akkor lépjünk be az Infrared-port device eszközhöz, úgyhogy nézegessük szorgalmasan a súgót! drivers menübe és állítsuk be az alábbi modulokat is: További hasznos információkhoz juthatunk a  http://www.linux-wlan.org/ oldalon, valamint a már --- SIR device drivers említett oldalak bármelyikén. IrTTY (uses Linux serial driver) Most tehát beállítottuk a vezeték nélküli hálózati kártyánkat, --- Dongle support ezzel már boldogan tudunk netezni. Amíg van a közelben [*] Serial dongle support egy elérési pont. De mi történik, ha nincs? Akkor bizony --- Old SIR device drivers marad a régi jól bevált megoldás, a mobiltelefonos Internet. IrPORT (IrDA serial driver) A mobiltelefonos Internet elérésnek két fajtája van, a kap- csolt vonali elérés (ma már általában minden szolgáltató tá- Ennek a három modulnak a beállításával nekem eddig mogatja a HSCSD-t, amely egy nagy sebességû kapcsolt vo- majdnem minden notebookon sikerült beállítani az infra nali elérést biztosít), illetve a csomagkapcsolt megoldás, a jól kapcsolatot, de ettõl függetlenül lehetnek olyan eszközök ismert GPRS. Mi most inkább a GPRS kapcsolattal foglalko- is, amelyekhez más modulokat is be kell fordítani. Errõl zunk, mivel ennek használata a jövõben talán lényegesen bõvebbet olvashatunk a rendszermag forrásának a doku- elterjedtebbé válik, mint a kapcsolt vonali netezés. mentációjában. Ahhoz azonban, hogy GPRS-en át tudjuk a hálózatot elérni Ha idáig eljutottunk, akkor természetesen fordítsuk újra a notebookunkról, ahhoz bizony elõször össze kell kapcsol- a kernelt és indítsuk újra a gépet. Miután betöltõdött a friss ni a gépet és a mobiltelefont. Ezt megtehetjük vezetékkel, rendszermag, a dmesg-gel megnézhetjük, hogy a gép az vagy infrán, vagy bluetooth-on keresztül. Én most elõször induláskor felismerte-e az infra portot a gépben. Ha nem, az infrás kapcsolatot mutatom be, mert az infra mára gya- akkor próbálkozhatunk más modulokkal a rendszermag- korlatilag minden notebookban és telefonban megtalálható, ban, ha igen, akkor folytassuk a beállításokat. így ezt minden bizonnyal minden Kedves Olvasó ki fogja Következõ dolog, amit el kell érnünk az az, hogy megszó- tudni próbálni. laltassuk a gépünk infra portját. Ehhez fel kell tenni az irda- utils nevû csomagot. A telepítés folyamán a telepítõ több Az IrDA kérdést is feltesz. Az elsõ, hogy rendszerindításkor az infra Ahhoz, hogy a notebookunk infra portját a hálózat elérésé- engedélyezve legyen-e. Válasszuk az igent. Második kér- re tudjuk használni, elõször is elérhetõvé kell tenni. Nem dés, hogy engedélyezzük-e a felderítési módot, amellyel meglepõ módon a dolgunk az, hogy elõször a megfelelõ a gépünk a közelben lévõ eszközökhöz akar majd csatla- rendszermag modulokat belefordítsuk a kernelbe. Indítsuk kozni. Én itt is az igent választottam. el ismét a kernel beállítási felületét és menjünk a Device Megjegyzés: a notebook akkujának kímélése szempontjából Drivers/Networking Support/IrDA (infrared) subsystem esetleg indíthatjuk kézzel is az infrát, ha úgy érezzük erre support menüponthoz. Ott találunk egy pár modult, ezeket szükségünk van. én az alábbi összeállításban fordítottam a rendszermagba: Következõ kérdés, az IrDA eszköz típusa. Itt notebookok esetén 95%-ban a serial választ kell megjelölni, hacsak --- IrDA protocols nem valamilyen natív – általában külsõ – eszközt csatlakoz- <*> IrLAN protocol tattunk. Következõ lépésben meg kell adnunk a soros port IrNET protocol helyét. Nálam ez a /dev/ttyS1. Az utolsó kérdés az infra <*> IrCOMM protocol vezérlõnkhöz tartozó dongle típusa. Notebookok esetén itt

38 Linuxvilág Dobbantó

99%-ban a none választ kell kijelölni. rábukkantam a GPRS Easy Connect-re, Ha ezzel megvagyunk, akkor jelentem, bekon- amelyre a mai napig is úgy tekintek, mint figuráltuk az infra portot. Most tegyünk vele egy áldása. A program egy teljesen jól hasz- szembe egy megfelelõ telefont és indítsuk el az nálható grafikus felülettel rendelkezik és irdadump nevû programot. Ez a folyamat gya- a beállítása tényleg nem igényel különösebb korlatilag egy pingelésnek fog megfelelni. Az tudást. Amire pedig szükség lehet, az le van infra port összegyûjti a látható eszközöket, dokumentálva. amelyeknek meg kell jelenniük a kidobott listá- Aki kedvet kapott a program kipróbálásához, ban. Nálam egy Nokia 7210-es mobiltelefon a tesztalany és az letöltheti a legfrissebb verziót a következõ üzenetet kapom: a  http://easyconnect.linuxuser.hu/ modules.php?name=index webcímrõl. 19:52:14.297525 xid:rsp db94b91e < 0000edd6 S=6 Egy másfél megabájtos tar.gz csomagot kell letöltenünk, s=0 Nokia 7210 hint=b125 [ PnP Modem Fax Telephony amelyet kicsomagolunk, majd a telepítõ könyvtárában talál- IrCOMM IrOBEX ] (27) ható INSTALL állomány futtatásával egy nagyszerû grafikus 19:52:14.303534 xid:cmd db94b91e > ffffffff S=6 telepítõt indíthatunk. A telepítés menete nagyjából követi s=1 (14) a „next-next-finish” módszert, tehát senkinek nem okozhat 19:52:14.393525 xid:cmd db94b91e > ffffffff S=6 különösebb problémát. © Kiskapu Kft. Minden jog fenntartva s=2 (14) Ha befejezõdött a telepítés akkor az /usr/bin/gprsec 19:52:14.483510 xid:cmd db94b91e > ffffffff S=6 parancsot futtatva indíthatjuk a programot. A program s=3 (14) a telepítõhöz hasonlóan egy nagyon baráti grafikus felületet 19:52:14.573497 xid:cmd db94b91e > ffffffff S=6 ad mind a beállítások elvégzésére, mind pedig a kapcsolat s=4 (14) nyomonkövetésére. 19:52:14.663481 xid:cmd db94b91e > ffffffff S=6 Kezdjük a beállításokat a „GPRS Easy Connect beállítása” s=5 (14) feliratú gombra kattintva. Itt kiválaszthatjuk a készülékünk 19:52:14.753466 xid:cmd db94b91e > ffffffff S=6 típusát, a szolgáltatót, a szolgáltató APN-jének nevét meg- s=* trikko hint=4400 [ Computer LAN Access ] (22) adhatjuk, akárcsak a felhasználó nevünket, jelszavunkat. Ki kell választanunk továbbá a csatlakozási kaput, ez való- Ez teljesen jó, az elsõ sorban ott látszik a telefon, meg az, színûleg a /dev/ircomm0 lesz. Engedélyezhetjük a dinami- hogy ez egy modem és egy faxmodem is egyben. Ezzel kus DNS-t, vagy akár megadhatjuk saját magunk is két gyakorlatilag mûködik is az infra és a telefon közötti kom- DNS kiszolgáló címét, ha nekünk éppen úgy tetszik. munikáció. Nincs más hátra, mint az Internetes kapcsolat A Választható paraméterek gombra kattintva beállíthatjuk beállítása. a kapcsolat sebességét, az újracsatlakozások számát és idõtartamát. GPRS Internet mobiltelefonos beállítása A Ritkán használatos paraméterek között találunk egy jelölõ Ahhoz, hogy beállítsuk a telefonos kapcsolatot, szükségünk négyzetet, amelynek a beállítása sok fejtöréstõl kímélhet lesz a ppp csomag telepítésére. Ennek a Debian Sid gyûjte- meg minket. Nálam a telepített alapbeállításon nem volt be- ményben a cikk írásakor a 2.4.2-es verziója volt feltöltve. állítva az Önhitelesítés tiltása. Ez olyan kellemetlen problé- Célszerû ebbõl a csomagból mindig a legfrissebbet használ- mát okozott, hogy bár a gépem felcsatlakozott a hálózatra, ni, mert olykor ez sok fejtöréstõl kímélhet meg minket. de mivel a vissza irányú hitelesítés nem mûködött, ezért Ha feltettük a ppp csomagot, akkor két út áll elõttünk. azonnal le is bomlott a kapcsolat. Erre figyeljünk oda, Az elsõ, hogy szépen kézzel elkészítjük a ppp kapcsolódási ha ilyet tapasztalnánk, ez lehet a megoldás. szkripteket, a másik, hogy egy segédprogramhoz fordu- A Limitfigyelés menüpont alatt beállíthatunk Mb-ban mért lunk, amely ezt megteszi helyettünk. Bár az elõbbi sem egy adatforgalmi korlátot. Hasznos lehet azoknak a felhaszná- különösen bonyolult feladat, ráadásul az Interneten tucat- lóknak, akik egy bizonyos mennyiségû ingyenes, vagy elõre szám találhatunk tippeket, tanácsokat és példa beállításokat kifizetett forgalommal rendelkeznek. A Forgalmazott adat- is, akár szolgáltató specifikusan is, mi most mégis nézzünk mennyiség menüben statisztikai adatokat találunk. egy programot, amellyel nem csak könnyen beállíthatjuk és Amennyiben befejeztük a beállításokat, akkor a Rendben/ vezérelhetjük a GPRS kapcsolatot, de mindennek fejében Adatok mentése gombra klikkelve elmenthetjük a beállítása- mindezt azzal a tudattal tehetjük, hogy egy olyan segédesz- inkat. Ezután nincs más dolgunk, mint a nagy zöld Csatla- közt használunk, amelyet honfitársaink készítettek. A prog- kozás gombra kattintani és internetezni. ram neve: GPRS Easy Connect. Miután elindult a kapcsolat, az ifconfig paranccsal listá- zott csatlakozók között meg kell jelennie egy pppX csatoló- Amit a GPRS Easy Connectrõl tudni kell nak, ez lesz a GPRS kapcsolat által használt eszköz. Személy szerint a nyáron, amikor a fejembe vettem, hogy Ezzel a cikk végére is értünk. A következõ részben további végre beállítom a GPRS kapcsolatot a gépemen, hogy ne hasznos tippeket és beállítási tanácsokat osztok meg a Ked- csak kábel mellõl tudjak nezetni, rengeteget kutakodtam ves Olvasóval. Aki azonban türelmetlen lenne, azt csak arra a hálózaton, hogy találjak valami használható, felhasználó- tudom bíztatni, hogy használja a gépét, próbálkozzon önál- barát megoldást a kapcsolat beállítására. Olyat, amelyet lóan a beállításokkal. Sok sikert! nem csak én, de adott esetben egy mindennapi felhasználó is könnyen és gyorsan be tud állítani. Nem kis örömömre Illés Viktor

www.linuxvilag.hu 2004. november 39 Dobbantó

A felhasználói viselkedés vizsgálata (1. rész) Bevezetés, avagy mire jók a Nagy Testvér módszerei?

émkedni ugyebár nem szép dolog, tehát egyáltalán Természetesen ennél sokkal összetettebb összefüggésekre is miért figyeljük meg a felhasználókat? Napjainkban kíváncsiak lehetünk. Érdekes, a teljesítmény optimalizálása © Kiskapu Kft. Minden jog fenntartva a világháló (World Wide Web) egyik legjellemzõbb végett vagy marketingstratégiai célokra felhasználható ada- Kproblémája az információbõség. A felhasználók ugyanakkor tokat nyerhetünk például az egyes aloldalak közötti „átkat- a lehetõ legegyszerûbben szeretnének hozzájutni az általuk tintási arányokból”, az egyes lapokon eltöltött idõkbõl, vagy igényelt tudáshoz. A legtöbb honlapot a megrendelõ, va- a leggyakoribb útvonalakból. gyis egy cég, egy intézmény, vagy egy kormányzati szerv Az összefüggések és számszerû adatok folyamatos figyelé- igénye szerint készítenek el. Gyakori ugyanakkor, hogy sével idejében felfigyelhetünk és felkészülhetünk a látoga- a megrendelõ által megfogalmazott elvárások nem igazod- tók viselkedésének változására, vagy lemérhetjük egy-egy nak a végfelhasználók, külsõ szemlélõk elvárásaihoz. Álta- reklámkampány, vagy a marketingmunka hatékonyságát is. lában nem ezeket felmérve tervezik meg a portálokat. Ez pedig azt jelenti, hogy bár a honlap híven tükrözi az adott Honnan és hogyan lesz adatunk? szervezet belsõ struktúráját, egy új látogató számára ez A felhasználói viselkedés modellezése alapvetõen két rész- a rendszer tökéletesen ismeretlen, és így az információ el- bõl áll: az adatgyûjtésbõl és az elemzésbõl. A gyûjtés során érése számára igen nehézkes lesz. tetszõleges eljárással olyan adatokat akarunk elõállítani, Persze a látogatók igényei is folyamatosan változnak, s ilyen- amelyek kellõen részletesek ahhoz, hogy az elemzést végzõ kor egy jó honlapnak ezt követnie kell. Ehhez pedig szükség programok használható modelleket alkothassanak belõlük. van a látogatók viselkedésének, szokásainak folyamatos fi- Mivel csak az „átlagos látogató” paramétereire vagyunk kí- gyelésére, az adatok elemzésére, valamint a kapott eredmé- váncsiak, azaz nincs külön-külön szükségünk minden nyek „visszaforgatása”, viselkedési modellek alkotására. egyes látogató viselkedésének a leírására, a megszemélyesí- tést lehetõvé tévõ adatokat csak az egyes felhasználók elvá- Nézzünk egy példát! lasztására használjuk. (Ez tipikusan hálózati címet és fel- Képzeljük el, hogy van egy a cégünk termékeit bemutató használói nevet jelenti.) A kiszolgáló bizonyos beállításaival portálunk. A termékszerkezetünk olyan, hogy az egyes áru- megoldható a személyes adatok teljes kizárása is. cikkek önállóan is „megállják a helyüket”, de együtt is jól Az adatgyûjtést végzõ kódot beépíthetjük a honlap prog- használhatóak. Tegyük fel mondjuk, hogy asztalt és széket ramjába, futtathatjuk a kiszolgálón vagy az ügyfélen. Utób- gyártunk. bi esetben lehet ez egy böngészõ-kiterjesztés vagy különálló Az elsõ kérdés, ami eszünkbe jut nyilván az lesz, hogy me- program is. A honlap programjának módosítása munka- és lyek a leggyakrabban megtekintett termékleírások, vagyis költségigényes, az ügyfél oldalán végzett megfigyelés vi- mit keresnek leginkább a látogatóink. Az ilyen kérdésekre szont adatvédelmi problémákat vet fel. A kiszolgálón vég- egészen egyszerûen választ kaphatunk, ha a webkiszolgáló zett adatgyûjtés ezzel szemben a honlaptól és az ügyféltõl eseménynaplóján lefuttatunk egy keresõprogramot. Rögtön is függetleníthetõ, de ennek a módszernek is megvannak látszik, hogy az asztal terméklapját százszor töltötték le, míg a maga problémái. Az egyes módszerek elõnyeit és hátrá- a székét ezerszer. Ez azonban csak az egyik lehetséges kérdés nyait a sorozat következõ tagjában fogom részletesen ele- és az egyik lehetséges válasz. Az így kapott számszerû ada- mezni. tokból ugyanis nem lehet például olyan következtetéseket le- Az összegyûjtött adatok sok felesleges információt is tartal- vonni, amelyek megkönnyítenék annak eldöntését, hogy egy mazhatnak, ezért az adatsorokat minden esetben az adott adott termék oldalán milyen más áruinkra utaló szöveget portálra jellemzõ módon meg kell tisztítani. Mivel a valósá- célszerû elhelyezni. Ehhez „rejtett összefüggéseket” kell fel- gos információt néha több bejegyzés összefüggése (egyide- fedezni. Ha tudjuk, hogy a zöld asztalt keresõ látogatóink jû megjelenése) jelenti, szükség lehet a honlapra jellemzõ nagy része megnézi a zöld székek kínálatát is, akkor az asztal kapcsolatok és összefüggések alapján egy további terméklapján egy közvetlen utalást elhelyezve a zöld széke- elõfeldolgozási lépésre is. Elõfordulhat aztán, hogy több, inkre várhatóan jelentõs mértékben megnõ azok terméklap- látszólag eltérõ bejegyzés valójában azonos oldalt jelent. Az jainak forgalma. Ráadásul ezzel a könnyítéssel a vásárlóknak ilyen esetek kezelésére is be kell építeni a feldolgozóba egy is örömet szereztünk, hiszen nem kellett keresgélniük. szûrõ és átalakító alrendszert.

40 Linuxvilág Dobbantó

Elemzés Modellek A modellalkotásnak igazodnia kell a felhasználók viselkedé- Alapvetõen 5 modellt fogunk használni, de ezek természe- sére vonatkozó adatok begyûjtésének módszeréhez. Az el- tesen az igényeknek megfelelõen bõvíthetõek, illetve átala- készülõ modelleket alapvetõen befolyásolja, hogy az egyes kíthatók. A legfontosabb modell, amelyet a többi modell el- felhasználókat milyen módon sikerült megkülönböztetni, készítésénél is felhasználunk a felhasználói útvonalakat ad- ez pedig erõsen függ az adatgyûjtési módszertõl. Akár az ja meg. Ennél összegyûjtjük minden egyes látogatók útvo- ügyfél oldalán gyûjtjük az adatokat, akár a a portál motor- nalait, és azok gyakoriságát vizsgáljuk. A kapott adatok fon- jába építettük be a szükséges kódot, a látogatók elkülöníté- tos információval szolgálnak a portálon belüli mozgásokról. se tulajdonképpen egész egyszerûen megoldható, hiszen Megtudhatjuk például, hogy mely információk keresettek, csak arra kell figyelni, hogy az adott programban nyilván- kedveltek, illetve hogy egy adott helyre honnan érkezett tartsuk, hogy most egy másik felhasználó használja a por- a látogató, és merre távozott onnan. tál. A portálba beépített módszer esetén ez egy beléptetési A „gyakori látogatási útvonalak” modell a felhasználói út- (regisztrációs) folyamattal könnyedén megoldható, ügyfél- vonalakat aszerint vizsgálja, hogy az összes különbözõ be- oldali gyûjtés esetén pedig szintén a programba épített azo- járás hány felhasználónál található meg. Ennek a vizsgálat- nosítási folyamat biztosítja a megfelelõ elkülönítést. nak az eredményébõl tehát azt tudhatjuk meg, hogy hány A kiszolgálón begyûjtött adatok alapján általában jóval ne- felhasználó járta végig weboldalaknak pontosan ugyanazt hezebb a felhasználókat megkülönböztetni. Ennek az az a sorozatát. Az „azonos weboldalak” modell a „gyakori láto- oka, hogy a webkiszolgáló alapesetben nem tárol semmifé- gatási útvonalak” egy egyszerûsített változata. A különbség © Kiskapu Kft. Minden jog fenntartva le, az egyes felhasználók elkülönítésére alkalmas adatot. To- mindössze annyi, hogy ennél a modellnél nem számít az vábbi nehézség, hogy az esetleges megkülönböztetés alap- egyes meglátogatott honlapok egymáshoz képesti sorrend- jául szolgáló adatok (IP cím, felhasználói név, dátum) fel- je, vagyis az eredmény az azonos oldalakat meglátogató fel- használhatóságát az átmeneti tárak és tûzfalak is jelentésen használók számát adja meg. rontják, hiszen ezek egy adott alhálózat valamennyi tagjá- A késõbbi felhasználás szempontjából fontos információ lehet nak kéréseit azonos adatokkal küldik el az is, hogy az egyes weboldalakra honnan érkeztek a látoga- a webkiszolgálóhoz. tók és merre mentek tovább. Ez a modell a „be- és kilépõ olda- A látogatók megkülönböztetését a kiszolgáló oldalán jelen- lak” nevet viseli. Ezekbõl az adatokból következtetni lehet az tõsen megkönnyíti, ha egy megfelelõen megírt modul segít- egyes weblapok szerepére. Ha egy adott honlapra a látogatók ségével minden egyes látogatóhoz egyedi munkamenetet többsége egy vagy néhány másik weblapról érkezett (ezt mu- és egyedi azonosítót rendelünk. Errõl részletesen a követke- tatja a belépõ statisztika), akkor az a két weboldal összevon- zõ cikkben, az adatgyûjtési módszerek ismertetése kapcsán ható, vagy akár helyettesíthetõ is a harmadikkal, hiszen fogok írni. a többség végül úgyis oda érkezett meg. A kilépõ statisztika Röviden tehát, ha csak a legegyszerûbb, a kiszolgáló olda- ennek a másik irányból történõ megközelítése: ha egy web- lán az eseménynaplóból kigyûjtött adatokat tudjuk hasz- lapról meg lehet mondani, hogy melyik másik weboldalra nálni, az a legfontosabb, hogy valamilyen módon az egyes léptek tovább róla a látogatók, akkor tisztázható az adott hon- látogatókat el tudjuk különíteni. Pontosabban fogalmazva lap szerepe. A két módszer nem feltétlenül ad azonos ered- azt kell megoldanunk, hogy a független oldallekéréseket ményt, hiszen a statisztikáknak mindig van hibája, illetve valamilyen módon egyedi látogatói szakaszokba rendez- a megközelítés irány is más ebben az esetben. Az „átkattintá- zük. A módszer lényege, hogy az eseménynapló bejegyzé- si, átlépési idõk” modellje a felhasználói útvonalakban össze- seiben szereplõ IP cím, idõbélyeg és minden egyéb, a fel- gyûjtött adatokra támaszkodik. Segítségével elõállíthatók az használóra jellemzõ adat (ilyen például a böngészõ típusa) egyes felhasználók útvonalaira jellemzõ karakterisztikus vál- segítségével az egy meghatározott idõtartamba esõ, azonos tási idõk, vagyis azok az idõtartamok, amelyek az egyes helyrõl érkezõ kéréseket egy felhasználó látogatásának te- weboldalak lekérése között elteltek. Kiszámítható a felhasz- kintjük. A megfelelõ idõtartam megválasztása nem könnyû. nálók által összesen a portálon eltöltött idõ, illetve az egyes Érdemes több különbözõ intervallumhosszal elkészíteni oldalak közötti jellemzõ átkattintási idõk. Az adott tartalom, a modelleket, hogy a látogatók viselkedési mintázatának illetve az azt birtokló vállalkozás ismeretében mindezek az megfelelõt kiválaszthassuk. Általánosságban elmondható, adatok egészen érdekes információkat tudnak szolgáltatni hogy a harminc perces intervallum a legjellemzõbb, tehát mind mûszaki, mind marketing szempontból. ezt tekinthetjük kiindulási alapnak. Egy rövid híreket köz- lõ oldal ettõl természetesen lefelé fog eltérni (gyorsabb az A következõ rész tartalmából információ átadása), míg egy hosszabb publikációkat ismer- A következõ cikkben részletesen ismertetem az egyes adat- tetõ honlap felfelé növelheti az idõkeretet, hiszen egy cikk gyûjtési módszerek elõnyeit és hátrányait, majd egy saját végigolvasása hosszadalmas is lehet. fejlesztésû szkripten keresztül bemutatom a modellek elké- Ha sikeresen elõállítottuk a felhasználókhoz rendelhetõ szítésének menetét és lehetõségeit. egyedi látogatási szakaszokat, máris készen állunk arra, Beszédes Balázs hogy elkészítsük a modelleket. A modellkészítés során ([email protected]) – amint azt már említettem – átlagosnak tekinthetõ látoga- 24 éves, az e-Média Informatikánál mérnök- tói viselkedésmintákat keressük. Ilyenek például a jellemzõ, informatikus. Hobbija a kerékpározás és sokszor elõforduló oldalletöltési szekvenciák, vagy az olda- a kirándulás. lak bizonyos sorrendiségének gyakorisága. Ezek fontos jellemzõk lehetnek egy portál üzemeltetése során.

www.linuxvilag.hu 2004. november 41 Dobbantó

Kiadja: Kiskapu Kiadja: Kiskapu Felh. szint: haladó Felh. szint: kezdõ-haladó Témakör: programozás, Témakör: hálózatok, elmélet biztonság ISBN: 9639301779 ISBN: 9639301817 Ár: 5980,- Ár: 3850,- 448 old. 384 old.

Erich Gamma, Ralph Johnson, Richard Helm, Himanshu Dwivedi: SSH a gyakorlatban John Vlissides: Programtervezési minták

© Kiskapu Kft. Minden jog fenntartva Ebben a könyvben egy régi és mégis új témáról van szó. „A Seucre Shell (SSH) olyan program, amely két fél között Régi, hiszen néhány ötlet már évtizedekkel ezelõtt is fel- zajló kommunikációt tesz biztonságossá” - írja a szerzõ az el- vetõdött. Mégis újszerû, mivel egyrészt mostanában nyer- sõ sorban. Ez egy meglehetõsen tág meghatározás, a köny- tek nagy teret azok a technológiák, ahol ezek a megoldá- vet elolvasva azonban részletesen is kiderül, mit is takar sok elõnyösen alkalmazhatók, másrészt az utóbbi idõben pontosan ez az ipari szabvány. vált egyre divatosabbá az újrahasznosítás, a már kitalált Mint a címe is mutatja, a könyv elsõsorban nem az elméleti ötletek, elõre elkészített elemek felhasználásával történõ alapokról szól. Azokról számtalan más írás született már, rá- programozás. adásul pontos megértésükhöz helyenként egészen mély Na de mit is jelent az, hogy tervezési minta? Megoldást egy matematikai ismeretekre van szükségük. A szerzõ ehelyett olyan problémára, amely újra és újra felbukkan a minden- kézenfogva vezet végig bennünket a konkrét megvalósítá- napi tervezési folyamatok között – például a programterve- sok telepítésétõl a részletes beállításokon át az egyes fel- zésben. Hasonló, mint a megoldóképletek a matematiká- használási területekig. Bár a könyv minden egyes betûje ban, vagy sokat használt szerkezeti elemek az építõiparban. konkrét példákhoz, testreszabási, beállítási lehetõségekhez Egy ilyen mintát az alábbi módon mutatnak be a szerzõk: kötõdik, mégsem sorolható egyértelmûen a HOGYAN-ok, Leírják a minta célját, egy a problémát bemutató forgató- vagy „szakácskönyvek” kategóriájába. Mindenütt részlete- könyvet, a lehetséges alkalmazási területeket, a megoldás sen ismerteti ugyanis a tárgyalt példa hatásait, következmé- szerkezetét egy objektummodell segítségével, az ebben nyeit, magyarázatát, átfogó gyakorlati ismeretekhez juttatva résztvevõ elemeket, ezek együttmûködését, a megoldás al- ezzel az olvasót. kalmazásának következményeit, s a megvalósítást kritikus A könyv három részre oszlik. Az elsõ egyfajta alapozás, az pontjait – mindezt természetesen programnyelvtõl függet- SSH általános áttekintése. Olvashatunk itt az ügyfél és ki- lenül. Igen hasznos, hogy a szerzõk a problémát és a meg- szolgáló megvalósításáról, a beállításokról, sõt azt is meg- oldást egyaránt hétköznapi szoftverelemeken keresztül tudhatjuk, hogyan érhetünk el Cisco útválasztókat SSH-val. szemléltetik. Így az olvasó a lehetõ legrövidebb idõn belül A második részben megismerhetjük SSH sokoldalúságát biz- átláthatja, miért is lehet szükség az adott mintára. Ezek tosító kapuátirányítást, mégpedig minden lehetséges oldalá- után konkrét programkódban láthatjuk minden minta ról. Megtudhatjuk hogyan használhatók biztonságosan az használatát, illetve az is kiderül, a gyakorlatban az milyen egyébként kódolatlan adatcsomagokkal dolgozó szolgáltatá- jellegû szoftverekben szokott feltûnni. sok (telnet,rsh,ftp,smtp,pop3,irc, stb), vagy hogyan építhe- A gyûjtemény 23 tervezési mintát tartalmaz a klasszikus be- tünk virtuális magánhálózatot (VPN) az SSH segítségével. sorolás, vagyis a minta célja és hatóköre szerint szerint cso- A harmadik rész bemutatja, hogyan helyettesíthetõk az portosítva. Így egy jól átgondolt, körültekintõen felépített egyes hálózati protokollok SSH-val, és hogyan tehetjük biz- eszköztárhoz jutunk, melynek idõtálló voltát számos minta tonságossá a proxy-kat. Végül három, a mindennapi életbõl „életkora” jelzi. vett esettanulmány segíti az elmondottak minél pontosabb Az elsõ fejezet részletesen bevezeti az olvasót a tervezési megértését. minták alapkérdéseibe, lehetõségeibe, használatába. Meg- A könyv bõvelkedik az olyan megoldásokban, melyeket tudhatjuk, hogy miért, miként és hogyan érdemes õket magam is számtalanszor alkalmaztam már. A könyv grafikai használni, mikor mit érdemes választani. A fenti elvek gya- kivitelezését és a szerkesztést tekintve is rendkívül szemlé- korlati alkalmazását egy részletes esettanulmányon keresz- letes. Számtalan képernyõképet, parancssorozatot, magya- tül sajátíthatjuk el azután. A szerzõk is jól tudták, hogy gya- rázó táblázatot találunk benne Windows és Linux/UNIX korlat nélkül az elmélet nem sokat ér, ezért bõven kapunk rendszerekhez egyaránt. belõle az olvasás folyamán. Ahhoz, hogy haszonnal forgathassuk ezt a könyv, szüksé- Ez a könyv az elsõ és egyetlen olyan magyar nyelvû günk van bizonyos hálózati alapismeretekre, de a tárgyalás írás, amely összegyûjtve tartalmazza a témában fellelhetõ módja olyan, hogy az SSH-ban eddig teljesen járatlanok is összes anyagot. nyugodtan megvehetik. Nem fognak csalódni.

42 Linuxvilág Dobbantó

A GIMP és a mintázatok

Sorozatunk utolsó elõtti részében bemutatom a különféle képátalakító szûrõket, továbbá azokat, melyekkel a szerkesztett képtõl független mintázatokat hozhatunk létre. © Kiskapu Kft. Minden jog fenntartva

ost tehát kezdjük az ismerkedést azokkal a hatá- M sokkal, melyeket a képablakban található menü Filters pontjának Distorts nevû almenüjében szerepelnek. Itt jegyzem meg, hogy van két olyan billen- tyûkombináció, amelyeket érdemes megjegyezni a szûrõk alkalmazása során. Az egyik a CTRL+F, mellyel megismé- telhetjük az elõzõ szûrési mûveletet, a másik pedig aSHIFT+CTRL+F. Ez utóbbival a menüben való barangolást mellõzve újra kiválaszthatjuk az elõzõ szûrõt és annak beállítóablakában változtathatjuk a paramétereket. Az új paraméterek megadása után alkalmazhatjuk ismét a szûrõt vagy elvethetjük a változtatásokat. A Distorts menüben olyan hatásokat találhatunk, melyek- kel nem egyszerûen a képpontokat manipuláljuk, hanem ezt a tevékenységet elõre meghatározott céllal tesszük. Ilyen szûrõ például az is, amellyel hullámossá tehetjük a kép síkját vagy mozaikokból kirakott képet készíthetünk a szerkesztett képbõl. Válasszuk ki tehát a kép menüjében a Distorts menüpon- tot, majd a Blinds hatást. A Blinds alkalmazásával a képet 1. kép A 'Curve Bend' hatás elforgatható, hosszúkás síkdarabokra vághatjuk szét (mintha egy reluxára festenénk fel). A darabolás mértékét õket kilencven fokkal, akkor az eredmény a jobb- és bal szé- megadhatjuk a Num Segments csúszka segítségével, en- lekhez tartozik. A hatás megértéséhez tekintsük meg az 1-es nek legmagasabb értéke 10 lehet. A hatás beállító ablaká- képet, melyen látható, hogy a képet egy hullámos felületre ban megváltoztathatjuk a síklapok elrendezését vagyis, feszítettük fel, így például szélben lebegõ zászlót hozha- hogy vízszintesen vagy függõlegesen vágjuk a képet tunk létre. A beállításainkat tárolhatjuk késõbbi felhasználás és azt is, hogy milyen mértékben legyenek elforgatva céljából a Save gombra kattintva, majd késõbb vissza is tölt- az egyes síklapok. Az elforgatás mértékét a Displacement hetjük az Open gomb használatával. értékkel határozhatjuk meg. Amikor ez utóbbi értéket Az Emboss hatás segítségével létrehozhatunk dombormû- változtatjuk, könnyedén megfigyelhetjük a változásokat veket a megnyitott kép alapján. A dombormû lehet egysze- az elõnézeti ablakban. rû szürke kõbõl kifaragva vagy lehet úgynevezett érdességi A Curve Bend hatással a kép széleit nyújthatjuk egy görbe térkép. Ezt a beállítóablak jobb felsõ részén található segítségével. A hatás beállítását szolgáló ablakban az 1-es Emboss és Bumpmap választómezõk kiválasztásával adhat- képen pirossal keretezett területen állíthatjuk be, hogy juk meg. Mivel a dombormûveket általában fényben látjuk, a megadott görbe a kép alsó vagy a felsõ széléhez tartozik. megadható a fényforrás helyzete is. Az Azimuth a fényfor- A keretezett terület alatti gombok segítségével készíthetünk rás vízszintes helyzetét adja meg, a nulla fok a balról érkezõ másolatot vagy tükrözött másolatot a megadott görbérõl, fényt jelenti. A másik beállítási lehetõség a függõleges szög amely így a kép másik széléhez tartozik majd. Az elõnézeti meghatározása. Értelemszerûen a 90 fokos függõleges szög kép alatti területen adhatjuk meg, hogy a két görbét milyen jelenti a síkra merõlegesen érkezõ fénysugarakat. Az elõné- mértékben forgatjuk el. Értelemszerûen ha megadjuk az al- zeti ablakban ebben az esetben is nyomon követhetjük só- és a felsõ szélekhez tartozó görbéket, majd elforgatjuk a beállítások változtatását, így mindenki eldöntheti, hogy

www.linuxvilag.hu 2004. november 43 Dobbantó © Kiskapu Kft. Minden jog fenntartva

2. kép Az oldalszél felhajtása alatti réteg 3. kép Vastagítás és vékonyítás

számára milyen fényforrás a leginkább megfelelõ. A Depth A Ripple hatás egy egyenes vonalban terjedõ hullám segítsé- csúszkával állíthatjuk be, hogy milyen mértékben emelke- gével átalakítja a kép síkját a hullámos felületté. A beállítások dik ki a felület a síkból. A hatás alkalmazásakor a GIMP között megadhatjuk a hullámhosszt és az amplitúdót, és a fá- élkeresést végez, tehát a kiemelkedõ területeket az élek zis változtatásával animációs képkockákat is készíthetünk. mentén határozza meg. A Waves hatás az elõzõhöz hasonlóan hullámos felületté A Mosaic hatás segítségével a képbõl mozaikszerû összeállí- alakítja a síkot, de itt koncentrikus körökként jelennek meg tást készíthetünk. A beállító ablakban meghatározhatjuk az a hullámok. Ennél a hatásnál megadhatjuk, hogy a felület egyes darabkák méretét (Tile Size), a magasságukat (Tile tükrözõdõ legyen, vagyis az egyes hullámokon tükrözõdjön Height) és a közöttük lévõ hely nagyságát (Tile Spacing). a környezetük. Az egyes darabkák szabályosságát a Tile Neatness változó A Shift hatás használatával kép sorait eltolhatjuk a meg- segítségével határozhatjuk meg, minél közelebb esik ez az adott mértékben jobbra és balra vagy felfelé és lefelé. Így érték a maximális 1-es értékhez, annál szabályosabbak létrehozhatunk például zajos képet, mint amikor nem tart- lesznek az egyes mozaikdarabok. A mozaikot kirakhatjuk juk megfelelõ stabilitással a fényképezõgépet és a kép kissé négyzetekbõl, hatszögekbõl vagy nyolcszögek és négyzetek elmosódott lesz. váltakozásából. A Value Propagate hatás egy egyszerû matematikai mûvele- A Pagecurl hatással a kép egyik sarkát felhajthatjuk, ten alapul, melyet a digitális képfeldolgozásban is gyakran a GIMP pedig elvégzi a megfelelõ árnyékolást a felhajtott használunk. A képpontok környezetébõl kiválasztjuk a ma- oldalszél domborulatán és ha kiválasztjuk a Shade under ximális értéket (Propagate Mode – More Black) vagy a legki- Curl lehetõséget, akkor a felhajtott szél által árnyékolt terü- sebb értéket (Propagate Mode – More White). Így elérhetjük, leten is. Beállíthatjuk, hogy melyik oldal mentén hozzuk hogy a képen szereplõ kis felületû részletek nagyobbak le- létre a felhajtást és azt is, hogy az milyen irányú legyen. gyenek vagy még kisebbekké váljanak. A digitális képfel- Sajnos a hatás segítségével nem adható meg, hogy csak dolgozásban ezt a mûveletet vastagításnak és vékonyítás- a sarkon legyen a hajtás, de más módszerekkel ezt is elér- nak nevezzük. A beállítások ablakában a jobb alsó részen hetjük. A GIMP készítõi gondoltak arra is, hogy a felhajtott választhatjuk ki azokat a szomszédos képpontokat, melye- réteg alatt mások lehetnek, tehát a hatás alkalmazása után ket a szûrõ alkalmazásakor a GIMP figyelembe vesz. az üres területek átlátszóak lesznek. Így láthatóvá válik, Amennyiben csak egy irányhoz tartozó szomszédokat amint az a 2-es képen is megfigyelhetõ. adunk meg (például fent és lent) akkor a hatás csak ebben A Newsprint hatással a többszínnyomással nyomtatott új- a meghatározott irányban érvényesül. ságok színes képein látható tintafoltokat utánozhatjuk. A Video hatás alkalmas arra, hogy például a számítógéppel A Cell Size értékkel határozhatjuk meg az egyes tintafolt- számított képeinket valósághûvé tegyük. Köztudott, hogy ok méretét, míg a különbözõ színösszetevõket tartalmazó az analóg videólejátszó rendszerek zajos mûködésûek. Hiá- rétegek egymáshoz viszonyított elforgatását a beállító- ba számítjuk ki digitális módon, tökéletes pontossággal az ablak középsõ részén található értékekkel adhatjuk meg. animáció képkockáit, egy idõ után az analóg tárolóeszközö- A Polar Coords hatással a képpontok koordinátái alap- kön (pl. videokazetta) zajossá válnak a felvételek. Ezt a ha- ján polárkoordináta rendszerre képezhetjük le a szer- tást utánozhatjuk az említett szûrõvel, mégpedig többféle kesztett képet. módon is. Meghatározhatunk függõleges csíkozást, ferde

44 Linuxvilág Dobbantó

alkotói itt is gondoltak az átlátszóságra, tehát a rács-vo- nalak és a kirakósjáték darabok nem takarják el a képet. A Maze hatás segítségével labirintusokat készíthetünk. Ami- kor készül legújabb játékunk még nem feltétlenül kell napo- kat tölteni a tényleges labirintus megtervezésével és elkészí- tésével, alkalmazhatjuk akár a GIMP említett funkcióját és a gyorsan elkészített labirintuson tesztelhetjük a progra- munk grafikai megjelenítését vagy irányíthatóságát. 4. kép A kész filmszalag A Qbist különféle kubista stílusban készült képek önmûkö- dõ alkotására használható. Ismét felmerül ugyan a kérdés, csíkozást és még számtalan más zajhatást is készíthetünk hogy mi a megfeleltetési lehetõség az alkotás és a gombokra a Video szûrõ segítségével. A Whirl & Pinch szûrõvel a ké- kattintgatás között, és ismét nem tudom megfogalmazni, pet középpontja körül, a síkjára merõleges tengely mentén mindenesetre a GIMP programozói gondoltak a könnyû forgathatjuk, csavarhatjuk. Animációs lehetõségként hasz- ‘alkotás’ lehetõségére. Talán gyakorlati haszna olyan esetek- nálva ezt a szûrõt, létrehozhatunk például jobbra-balra ben lehet ennek a hatásnak, amikor valamilyen mintázatot dõlõ, csavarodó (táncoló) alakokat. készítünk és kiindulásul a kubista alkotásokat választjuk. A Wind szûrõvel, mint a neve is mutatja szélfúvás hatását A Sinus szûrõvel különféle szinusz függvények alapján elõ- utánozhatjuk. A beállítóablak bal szélén meghatározható, állítható mintázatokat készíthetünk. Látványos hatásokat © Kiskapu Kft. Minden jog fenntartva hogy szélrõl vagy valami erõteljesebb hatásról szeretnénk érhetünk el, például létrehozhatunk egyszerû domborzati képet alkotni. A szél-hatás tulajdonképpen egy elmosást térképet vagy vízfelülethez a három dimenziós modellezõ- jelent a megadott irányba, míg az erõteljesebb hatás esetén programhoz tükrözõdési térképet. a képsorok eltolását láthatjuk. Igen érdekes lehetõséget találunk a szûrõk között, Tehát ez a néhány hatás alkalmas különféle látványos képek a Combine almenüben. Töltsünk be tetszõleges számú, létrehozására, de természetesen a GIMP maga is képes kü- azonos méretû képet és válasszuk ki a Film... menüpontot. lönféle képek és mintázatok elõállítására a megfelelõ beépü- A menüpont kiválasztásakor megjelenik egy párbeszéd- lõ modulok telepítése után. Szerencsére nem kell sokat baj- ablak, melyben kiválaszthatjuk a film elkészítéséhez fel- lódni a modulok telepítésével, hiszen napjainkban a GIMP használandó képkockákat, meghatározhatjuk, milyen csomag részét képezik a következõ bekezdésekben bemuta- betûkészlettel kívánjuk a feliratokat elkészíteni a filmsza- tásra kerülõ hatások és képalkotásra alkalmas programré- lagon és az Advanced fülre kattintva megadhatjuk a film- szek. Tekintsük át a fontosabb modulokat a szerkesztett kép szalag szélén elhelyezkedõ lyukak méretét és egymás kö- menüjében a Filters – Render menüpontokat kiválasztva. zötti távolságát is. Amikor minden beállítást megadtunk A Clouds almenüben kétféle felhõzet készítésére alkalmas létrehozhatjuk elsõ „digitális filmünket”. Gyakorlati menüpontot találunk. Az elsõ a plazma, melyrõl az elõzõ haszna akkor lehet ennek a hatásnak, amikor például egy számban bõvebb információk található, a második pedig animáció képkockáit szeretnénk egyszerûen és pontosan a Solid Noise változat, amely egy egyszerûbb algoritmus egymás mellé elhelyezni. használatával éri el a felhõzet vagy domborzat készítésére Korábbi ismereteink alapján eddig ha a GIMP-pel dolgoz- alkalmas kép elõállítását. tunk, létrehoztunk egy megfelelõ méretû üres képet és A Pattern almenü szintén többféle kép elkészítésére ad le- a másolás-beillesztés mûveletekkel szépen elhelyeztük az hetõséget. A Checkerboard segítségével létrehozhatunk egy- egyes képeket. Most azonban elegendõ megadni a megfele- szerû négyzetrácsos mintázatot, amely alapállapotban feke- lõ képeket, felvenni õket a listánkba majd a GIMP elkészíti te-fehér négyzetek váltakozásából áll. A kép elkészítése a filmszalagot. A felesleges részek (például a lyukak és után a már ismertetett módszerekkel színezetet adhatunk a szalag széle) levágása után tároljuk a szalagot és könnye- a mintázatnak. Ilyen módszer lehet például a szín szerinti dén felhasználhatjuk játékunkban vagy más területen. kiválasztás után alkalmazott festõvödör, amivel kifestjük A sorozat utolsó elõtti részében tehát befejeztük a fonto- az egyik színt, majd a kiválasztás megfordításával és másik sabb szûrõk tárgyalását, idáig pedig aki nyomon követte színnel történõ kitöltéssel a másik színt is átalakítjuk. a sorozat egyes darabjait, képet kaphatott a GIMP kiterjedt A Grid hatás segítségével szabályos rács-vonalat rajzolha- képességeirõl és reményeim szerint munkája vagy otthoni tunk a képre vagy a kiválasztott rétegre. elfoglaltsága során sikerrel alkalmazta az ismereteket. A Jigsaw szûrõ alkalmas például arra, hogy gyerme- Az utolsó rész egy összetett feladat teljes megoldása lesz, künknek meglepetést szerezzünk, hiszen akár kedvenc nevezetesen könyvborítót készítünk a GIMP segítségével. képét is kirakósjátékká alakíthatjuk. A szûrõ beállítására Addig azonban kellemes alkotást kívánva búcsúzom és szolgáló párbeszédablakban megadhatjuk, hogy vízszin- elektronikus levélben továbbra is legjobb tudásom szerint tesen és függõlegesen mennyi részre daraboljuk a képet, szívesen válaszolok a felmerülõ kérdésekre. megválaszthatjuk, hogy az egyes darabok szabályos négy- szögbõl alakuljanak-e ki vagy lekerekített négyszögletes Fábián Zoltán ([email protected]) alakzatokból és meghatározhatjuk azt is, hogy milyen 26 éves, jelenleg oktatóként dolgozik, szabad- mértékû legyen a lekerekítést. Ez utóbbi két hatás alkal- idejében szívesen foglalkozik Blenderrel, mazása elõtt érdemes új réteget létrehozni a szerkesztés programozással és elektronikai tervezéssel. alatt álló képen, mert a szûrõk az aktív rétegen dolgoz- Szereti a természetet, túrázást, úszást és nak és így felülírják annak tartalmát. Szerencsére a GIMP a kellemes baráti társaságot.

www.linuxvilag.hu 2004. november 45 Dobbantó

Linux eszközök a hivatásos fotográfiában Ma már léteznek olyan eszközök, amelyekkel hivatásos fotográfiai munkákat végezhetünk el közvetlenül a Linux gépünkön.

© Kiskapu Kft. Minden jog fenntartva jó minõségû, olcsó termékek megjelenése forra- dalmasította a fotóipart, a Linux eszközeivel pedig ki is használhatjuk ezeket a termékeket. Az 1990- Aes években, amikor elsõ digitális képemet szerkesztettem egy Mac SE gépen, titkon azt reméltem, hogy egy napon a felsõ kategóriás képkezelõ munkaállomások valamennyi képessége az én digitális stúdiómban is elérhetõ lesz. Néhány évvel késõbb már megvolt a Mac stúdióm, amirõl álmodtam de lapolvasás és nyomtatás tekintetében még mindig külsõ cégektõl függtem. 1996 körül megláttam a GIMP egy korai változatát és felvil- lanyozott a gondolat, hogy a stúdiómat Linux alá is átvihe- tem. Gyors ugrás a jelenbe: ma már kaphatóak olyan olcsó 1. ábra lapolvasók és fotónyomtatók amelyek elérhetõ áron profi Linux alatti színkezelés munkafolyamat ábrája minõséget nyújtanak, és léteznek az ezeket kezelõ Linux meghajtók és eszközök is. A színkezelés munkafolyamata is kompatibilitási lapokat, mielõtt megvásárolnánk valame- kezd lassan alakot ölteni Linux alatt és szerencsére a GIMP lyik speciális eszközt. Ha lapolvasót keresünk, érdemes is egyenletes iramban fejlõdik. a hálózati fotó fórumokra, például a Photo.net-re is bekuk- Ma már a beszkennelt diától a digitális módosításokon ke- kantani, valamint megnézni a VueScan és SANE weblapjain resztül eljuthatok a végtermékig úgy, hogy végig a Linux található információkat. Mivel általában nagy formátumú, alapú stúdiómat használom. Ebben a cikkben egy kép 4” × 5” filmre dolgozom, nálam kizárólag a filmadapterrel útját végigkövetve bemutatom, hogyan készíthetünk kiegészített síkágyas lapolvasók jöhetnek szóba. A 35mm-es professzionális minõségû digitális képeket Linux alatt. filmek olvasásához a kifejezetten erre a célra készített lapol- Ahelyett, hogy elmagyaráznám az egyes csomagok fordí- vasók jobb minõséget biztosítanak mint a síkágyasok. tásának és telepítésének részleteit, inkább madártávlatból A fotónyomtatók terén nehéz megelõzni az Epson tinta- szeretném bemutatni, hogyan illeszkednek egymáshoz sugaras típusok új generációját. A LinuxPrinting.org lapon a különbözõ alkotóelemek és csak hivatkozásokat adok találnunk egy nagyszerû eszközt, melynek segítségével a részletesebb leírásokhoz. megállapíthatjuk, hogy az adott nyomtató rendelkezik-e Linux támogatással, sõt még a legjobb meghajtóra is javas- Alkatrészigény latot tesz nekünk. Nem sok különbség van egy jó linuxos asztali gép és az általam fotószerkesztésre használt munkaállomás között. Színkommunikáció Természetesen minél több memóriánk van, annál jobb. A kommunikációhoz nem kell más mint egy közös szótár, Legalább 512MB memória beszerzése mindenképpen java- amelyet mindkét fél megért. A színkommunikációban ezt solt és egy gyors merevlemezzel is sok idõt takaríthatunk a közös nyelvet az International Color Consortium (ICC) ha- meg. A fotós munkaállomásom videókártyájához két moni- tározza meg. Minden színes eszköz saját színtérrel rendel- tor csatlakoztatható, 1.7GHz P4 processzor van benne, vala- kezik, ami gyakorlatilag azt jelenti, hogy mindegyik csak mint 1GB RAM és három 36GB-os, 10000 RPM SCSI merev- egy bizonyos tartományból képes a színeket elõállítani. lemez. Ami igazán megkülönböztet egy fotószerkesztõ Ezeket hívják eszközfüggõ színeknek. A különféle színterek összeállítást egy szokásos asztali géptõl az a perifériák csat- közötti átalakításokhoz, eszközfüggetlen színtérre van lakoztathatósága. Ma már kiváló minõségû lapolvasókat és szükségünk. Az ICC által használt színleírás neve CIE 1931 nyomtatókat lehet vásárolni 1,000 dollár alatt. Legtöbbjük standard colorimetric observer amely bármely színes eszköz Linux alatt is támogatott, de mindig ellenõrizzük a Linux színterét pontosan meghatározza. Az ICC profil állomá-

46 Linuxvilág Dobbantó

aztán az operációs rendszer helyesen elõ tudja állítani a megjeleníteni kívánt színeket. Sajnos azt tapasztaltam, hogy egyetlen Linux meghajtó sem támogatja az ilyen esz- közöket. Még ha sikerül is hozzájutnunk a monitor profil állományához, a GIMP megjelenítéskor nem támogatja a használatát. Természetesen ez az egyik olyan szolgálta- tás, amit a GIMP-bõl nagyon hiányolok. A GIMP bug #78265 számú hiba le is írja a problémát; így remélhetõleg ez a funkció is hamarosan elkészül. Addig is a legjobb, amit tehetünk az, hogy a legtöbb minõségi monitorba beépített vezérlõk segítségével kézzel figyelmesen módo- sítjuk a monitorbeállításainkat:

1. Állítsuk a monitor fehér pontját 6,500K értékre. Ezzel több sárgát kapunk mint a legtöbb monitor alapbeállítá- saként szereplõ 9,300K értéknél, viszont szemünknek sokkal könnyebb meglátni a helyes színt. Pontosan emi- © Kiskapu Kft. Minden jog fenntartva 2. ábra Színteret megjelenítõ CIE diagram. att ez az ipari szabvány javaslata is. A háromszög az AdobeRGB 1998 munkatér színterét jelzi. 2. Emeljük meg a monitor kontraszt szintjét 100%-ra és addig tekerjük a fényerõt, amíg Norman Koren 3. ábrán látható kiváló színbeállító tábláján a legtöbb B Black Level csík fel nem tûnik.

3. Módosítsuk a megjelenítõ gamma szintjét a 3. ábra gamma csíkjával. A rajzot úgy nézzük, hogy szemünk- kel addig bandzsítunk, míg már nem tudjuk megkü- lönböztetni a vízszintes vonalakat majd keressük meg azt a helyet, ahol a szürke tónus a teljes csíkon azo- nos. Ez a jelenlegi gamma szintünk. Az xgamma segít- ségéve módosítsuk a gamma szintet 2.2-re, azaz az ipari szabványra.

Most az R, G és B vezérlõkkel állítsuk a cél szürke színét olyan semlegesre, amennyire csak lehetséges. A monitor színegyensúlyának beállításához használjuk a 3. ábrán lát- ható színbeállító kártyát. A bõrszínekre és természetes szür- 3. ábra Monitor beállító képek: bal oldalon Norman Koren monitor ke tónusokra koncentrálva az összes komolyabb színegyen- gamma diagrammja, jobb oldalon a Photodisc színkalibrációs képe súlyi hibát kiküszöbölhetjük. látható. Ezeket a nyomtatott példákat ne használjuk fel, hiszen színük A jól beállított monitoron kívül, az egyenletesen megvilágí- megváltozhatott a sajtó nyomtatási egyenetlenségei miatt. tott környezet is feltétlenül szükséges a megfelelõen pontos színlátáshoz. A legjobb a fakó fény, este pedig az, ha szo- nyokban találjuk azokat az információkat, amelyek segít- bánkat 5,000 K nappalifény-egyensúlyozott kompakt fény- ségével az adott eszköz színterét ebbe az eszközfüggetlen csõvel világítjuk meg. Jó megvilágításnál egy papírdarab fe- színtérbe vihetjük át. A kép szerkesztése során egy különle- hér színe egészen közel kell álljon a monitorunk fehér szí- ges, szintén eszközfüggetlen színteret, az úgynevezett néhez. Az ISO 12646 szabvány igen részletesen taglalja munkaszínteret használunk. Így van egy közös nyelvünk a megfelelõ környezeti megvilágítást. A környezetünkben és minden ettõl különbözõ nyelvhez egy tolmácsunk, lévõ ragyogó színek megváltoztatják a színérzetünket, ezért s végsõ soron bármilyen kommunikáció megoldható. tartózkodjunk a közeli erõsen megvilágított csillogó falak- Bár nem árt tudni a színelméletet, mindez nem szükséges tól, a fényes hátterektõl és a Linux környezet színes ablakai- a jó színnyomatok készítéséhez. Mindössze annyit kell tól. Én egyszerû szürke hátteret használok és fekete-fehér tudnunk, hogy ha az egyik eszközrõl a másikra szeret- ablakdíszítést. nénk színhelyesen áttérni, akkor az ICC profil állományo- kat kell használnuk. A lapolvasó beállítása Most már van egy viszonylag jól beállított monitorunk Monitorbeállítás és helyesen megvilágított környezetünk, így figyelmün- A pontos monitor rendkívül fontos, ha színes fotókkal ket a lapolvasó felé fordíthatjuk. A SANE és a VueScan egy- dolgozunk. A hivatásosok egy koloriméternek nevezett aránt kiváló Linuxos megoldás a lapolvasáshoz. Én fõleg eszközzel mérik a számítógép tényleges képét, majd elké- a VueScan rendszert használom mivel ugyanez létezik szítik a megfelelõ ICC profil állományt, amely alapján a Mac-emre is. Bármelyik lapolvasó programot használjuk,

www.linuxvilag.hu 2004. november 47 Dobbantó © Kiskapu Kft. Minden jog fenntartva 4. ábra Lapolvasó profil készítése a beolvasott Kodak cél segítségével 5. ábra Kezdeti kép beolvasása a VueScannel

nagyon fontos, hogy állandó programbeállításokat alkal- amelyet az Adobe weblapjáról szerezhetünk be. Alkalmaz- mazzunk. Ez a helyes színérték szempontjából lényeges, hi- zuk a lapolvasó profilt a Little CMS csomag részeként ka- szen az ICC profil amit készíteni akarunk csak a készítése- pott tifficc-vel, és adjuk ki a kor használt színbeállítások esetén ad helyes eredményt. A lapolvasó profil elkészítéséhez egy ismert minõségû tifficc -i scanner.icc -o Adobe1998.icc scan.tiff anyagra van szükségünk, amit színbeállítási célnak neve- scan_munka.tiff zünk. Én a Kodak cég Q-60-as Color Input Target termékét használom, amit a legtöbb felsõkategóriás fotóboltban meg- parancsot, amely TIFF képünket a munkaszínterünkbe vásárolhatunk. Olvassuk be a képet a kedvenc progra- alakítja át. munkkal; ne feledjük el lementeni a beállításainkat és ké- sõbb mindig ugyanazokat a beállításokat használjuk a lap- Fotóeszközök a GIMP-ben olvasáshoz. A GIMP-ben, akárcsak más képszerkesztõ programokban Az olvasott anyagból az LProf profilkészítõ eszközzel ké- igen sok eszköz található, amelyre nincs szükség fotográfiai szíthetünk ICC állományt. A programot a Little CMS munkák során. A legtöbb idõt a Szintek és Színgörbék eszkö- weblapról szerezhetjük be (lásd a hálózati forrásokat). Fut- zökkel szoktam eltölteni. Az elsõ módosítás amit elvégzek tassuk a kmeasurementool programot és és nyissuk meg a teljes expozíció beállítása, amire a legjobb eszköz a Szin- a beolvasott anyagot. Lépjünk az Options fülre és válasszuk tek. Soha ne használjuk a Fényerõ/kontraszt eszközt, mert ki a megfelelõ színsablont, jelen esetben a Kodak column úgy tûnik, sokszor levágja az értékek végét. Nyissuk meg picker-t. Lépjünk vissza a kép fülre és méretezzük újra a Szintek eszközt és húzzuk a sötét- és fehérpontot addig a zöld cél körvonalat. Amikor a kis kockák a kép színfoltjai ahol már adatot (függõleges tengely) látunk. A középsõ köré illeszkednek, válasszuk a Pick-et majd mentsük az IT8 csúszkával világosítsuk vagy sötétítsük a képet. lapot. Ezt követõen a kscannerprofiler programmal készít- A por és karcolások eltávolítása a következõ fontos lépés, sük el saját ICC profilunkat a lapolvasónkhoz megadva erre a feladatra a Másoló eszköz a legjobb. Nagyítsunk a megfelelõ forgalmazót és köteg azonosítót. Minden cél a képbe egészen addig, míg a porfolt könnyedén látható a köteget azonosító dátummal rendelkezik. Nyissuk meg a képernyõn és figyelmesen nézzük végig a teljes képet. a korábban létrehozott IT8 lapot és adjuk meg a kimeneti Ha meglátunk egy porfoltot, válasszuk ki a Másoló eszközt nevet az ICC profil állományunkhoz és bökjünk a GO-ra. valamilyen lágy szélû ecsettel amely valamivel nagyobb Ezzel az ICC profillal most már fel értelmezni tudjuk a lap- mint a porfolt. Állítsuk a Másoló eszköz tulajdonságait olvasónk színterét. 100% átlátszatlanságra és válasszuk a regisztrált igazítást. Ha a lapolvasónkat beállítottuk, végre nekiláthatunk a fil- Ctrl+kattintással bökjünk egy hasonló szomszédos terület- mek beolvasásának. Amikor képeket viszünk be, fontos, re a másoláshoz, engedjük fel a Ctrl billentyût és egyenesen hogy ismerjük a lapolvasó valódi optikai felbontását. A leg- kattintsunk a folt tetejére. Ha átlátszatlan ecsetet használ- nagyobb optikai felbontást használva a lehetõ legtöbb rész- tunk, a folt teljes egészében el kell tûnjön. A karcolások el- letet olvassuk be anélkül, hogy a a fájlt túl nagyra hizlal- távolítása hasonlóképpen történik, de ismétlõdõ mintát kell nánk. A fájlok mentéséhez legjobb ha a TIFF veszteségmen- keresnünk. Egy kis gyakorlással nagy területeket másolha- tes formátumot használjuk. tunk át árulkodó nyomok nélkül. A film beolvasása után az eredményül kapott TIFF állo- mány színtere a lapolvasó színterével egyezik meg. Ezt A mûvészi nyomat a színteret a munkaszíntérré kell átalakítani ahol a szerkesz- Készen állunk a nyomtatásra. Részemrõl a nyomtatvány téseket végezzük. Népszerû munkaszíntér az Adobe 1998, lesz a mûvészi alkotás végsõ fázisa, és igen sok idõt töltök

48 Linuxvilág Dobbantó © Kiskapu Kft. Minden jog fenntartva 7. ábra Por és karcolások eltávolítása a Másoló eszközzel

nevezem mûvészi nyomatnak. A képet nyomtatáshoz elõ- készítve végre kell hajtanunk a nyomtatási mérettel kapcso- 6. ábra Expozíció módosítása a Szintek segítségével a GIMP-ben latos néhány módosítást. Ezek a módosítások állagrontóak, ezért mielõtt nekikezdünk, képünkbõl mindenképpen ké- szítsünk egy mesterállományt. Elõször is a GIMP Kép me- vele, hogy a kép tényleg mondjon valamit a nézõnek. nüjének Kép átméretezése pontjára kattintva méretezzük át Gyakran 10–20 alkalommal is kinyomtatom a képeimet, a képet. Tintasugarasokhoz a 200 PPI felbontást javaslom apró módosításokat végezve rajtuk, míg végül elégedett a kívánt nyomtatási méretben. Ezután élesítsük a képet vagyok az eredménnyel. Ezt a tintasugaras nyomtatványt a Maszk életlenítése eszköz segítségével. Tekintsük az esz-

www.linuxvilag.hu 2004. november 49 Dobbantó

közre úgy mint a fotó éleinek kiemelésére. Amennyiben valaki csodálkozna rajta, miért nevezik életlenítésnek, a név a hagyományos fotográfiai eljárásból származik ahol egy elmosott (vagy életlenített) negatív másolatot használtak az élek kiemelésére és kaptak élesebb képet. Válasszuk a Szürõk->Kiemelés->Maszk életlenítése menüpontot ahol a dialógusban három csúszka jelenik meg. A Sugár érték szabja meg, hogy az élpixelektõl milyen messze dolgozunk, a Mérték adja meg, mennyire változhatnak meg a pixelek, végül a Küszöbszint dönti el, mely éleket módosítjuk. Ami- kor azt döntjük el, mekkora élesítést alkalmazunk, nézzük a képet 100%-on és próbáljunk ki néhány beállítást. Sajnos a Maszk életelenítése eszköznek egyelõre nincs elõnézete, így kénytelenek vagyunk érvényesíteni a beállításokat, visszavonni és ismételni míg végül a kívánt eredményhez nem jutunk. Általában azt a beállítást keresem, ahol az éle- sítés éppen érzékelhetõ a képernyõmön. Legtöbbször a Su- 8. ábra A Gimp-Print színmódosító ablaka © Kiskapu Kft. Minden jog fenntartva gár: 1.0, Küszöbszint: 3 és Mérték: 0,75 értékekkel kezdem a próbálkozást. ezek a nyomatok 60 évig megõrzik kinézetüket egészen kis Az Epson tintasugaras nyomtatóra nyomtatáshoz színváltozással és fakulással, ami lényegesen hosszabb idõ a CUPS és Gimp-Print párost használom. Útmutatásért mire a legtöbb tintasugaras nyomtató képes. Ezek a képek keressük fel a Gimp-Print weblapot melynek alapján megkülönböztethetetlenek a hagyományos fotóktól és akár beindíthatjuk a rendszert. A Gimp-Print használatával 4 × 5 láb (122x152 cm) méretûek is lehetnek. az összes Epson jellemzõ elérhetõ a Print menübõl. Ide Az állomány elõkészítése a Lightjet-hez hasonló a tintasu- tartozik az Epson escputil nyomtatóeszköz, amely lehetõ- garas nyomtatáshoz. Kezdjük az eredetileg elmentett kép- vé teszi a fejtisztítást és nyomtatási pozicionálást. Ideális pel, ne a tintasugarashoz átalakított változatot használjuk. esetben most a nyomtatónkhoz is elkészíthetnénk az ICC Méretezzük át a képet a kíván fizikai méretnek megfelelõ- profil állományt; Sajnos azonban egyelõre nem létezik en, ez esetben 200 PPI helyett használjunk 300 PPI értéket, Linux alatt olyan program, amely képes lenne ilyesmire. élesítsük a képet a korábban leírt módszerrel és mentsük el Ehelyett azt javaslom végezzük el az ilyenkor szokásos egy másik TIFF állományba. Én a Calypso Imaging szolgál- módosításokat a Gimp-Print színmódosítás képességével. tatót kedvelem, amely a fotográfusoknak az USA egész te- A módosításhoz használjunk olyan színteszt képet mint rületén nyújt Lightjet nyomtatási szolgáltatást. Ráadásul amilyeneket a képernyõ beállításunknál is alkalmaztunk. kedvezményt is adnak ha a képet megfelelõen átméretez- Nyomtassuk ki a képet, és figyelmesen nézzük át az zük és a honlapjukról letölthetõ helyes ICC profilt alkal- eredményt. Látnunk kell az árnyékokban a részleteket és mazzuk a képen. Töltsük le a legfrissebb ICC profilt és al- a lépcsõket a szürke-skála csíkban; a semleges és bõrtónu- kalmazzuk a képre a tifficc segítségével. A kép most már soknál nem szabad színeltérést tapasztalnunk. Amennyi- készen áll rá, hogy CD-ROM-ra írjuk, vagy feltöltsük ben nem ez a helyzet, nyissuk meg a Nyomtatás ûrlapot, a Calypso FTP kiszolgálójára. válasszuk a Kép/kivitel beállításai->Kimenet Beállítása Néhány nappal azután, hogy megkaptam a végsõ nyoma- pontot és végezzük el a szükséges módosításokat. Ismé- tot, visszagondoltam az egész folyamatra amellyel elkészí- teljük a mûveletet míg a kimenet megfelelõ nem lesz. tettem és azon gondolkodtam, hogy bár az eszközeim meg- Ha sikerült találnunk egy jó beállítást, írjuk le õket, változtak a cél ugyanaz maradt – olyan nyomatot készíteni hogy késõbbi nyomtatásokhoz jó kiindulási pontként amely az érzéseimet tükrözik egy kiválasztott témával kap- szolgáljanak. csolatban. Végre a teljes folyamatot végig tudtam vinni Végül eljött az igazság pillanata – vajon a végleges anyag a Linux és elérhetõ árú asztali termékek segítségével, saját megegyezik azzal amit képernyõn látunk? Nyomtassuk ki digitális stúdiómban. Igaz ugyan, hogy néhány területen a képet és hasonlítsuk össze a képernyõn lévõvel. Nagyon még szükség van fejlesztésekre de a Linux már készen hasonlónak kell lenniük, bár azért alapvetõ különbség van áll a feladatra. Tehát gyerünk, készítsünk néhány képet és a kép és a képernyõ között. Tanulmányozzuk a képet és alkossunk nagyszerû fotónyomatokat a linuxos eszközök nézzük meg hol végezhetnénk módosításokat, majd végez- kipróbálásával. zük is el õket a GIMP-ben, míg végül elégedettek nem le- szünk az eredménnyel. Linux Journal 2004. október, 126. szám

Együttmûködés egy külsõ szolgáltatóval Amikor R. W. Hawkins éppen nem cégeknek segít Linux Eladható nyomatok készítésekor a Lightjet nyomatokat kiszolgálókkal boldogulni, délnyugat kanyonjaiban sátorozik kedvelem, amelyeket néhány szolgáltató készít Cymbolic és túrázik 4 × 5-ös kamerájával. A Szilíciumvölgyben él Sciences Lightjet nyomtatókon. Ez a nyomtató lézer segítsé- feleségével aki a tábori kajával szemben a pizzát részesíti gével vetíti a képet hagyományos fotópapírra, legtöbbször elõnyben. Weblapján, a rwhawkins.com-on, mûvészi nyo- Fuji Crystal Archive anyagra. A Wilhelm Imaging Research matok képtárát és digitális képkészítéssel kapcsolatos tesztek (fotónyomat élettartam hitelesítõ szervezet) szerint dokumentációkat találunk.

50 Linuxvilág Dobbantó

FreeBSD – A szomszéd vár (1. rész)

A FreeBSD rövid története, alapvetõ szerkezete és telepítése.

okan tekintenek idegenkedve a különféle BSD rend- Fejlesztõinek alapvetõ célkitûzése az volt, hogy elkészítsék szerekre. Én is így voltam ezzel hosszú éveken át. a lehetõ legbiztonságosabb, kiszolgálókon futtatható operáci- S © Kiskapu Kft. Minden jog fenntartva Aztán egyszer nagy levegõt vettem és belevetettem ós rendszert. A NetBSD csapat ugyanakkor egy gépfügget- magam a FreeBSD megismerésébe. Akkoriban csukott szem- len, alaposan átgondolt, jól megtervezett operációs rendszer mel percek alatt bárhova fel tudtam telepíteni Linux alapú létrehozását tûzte ki célul, amely sok géptípuson mûködhet. rendszereket. A FreeBSD többszöri – végül már valóban Végül a FreeBSD projekt résztvevõi az egyszerû kezelhetõsé- mûködõképes – telepítése viszont több hétig eltartott. Per- get és a gép teljesítményének legjobb kihasználását tartották sze ebben nagy szerepe volt a hosszú évek alatt „idegpályá- a legfontosabbnak. A három BSD változat közül a FreeBSD imba égett” Linux-reflexeknek, és a dokumentáció figyel- a leginkább ismert és elterjedt. Elõszeretettel alkalmazzák ki- men kívül hagyásának is. Azóta is rendszeresen azt kérde- szolgálói feladatokra, megbízhatósága és stabilitása legendás. zem magamtól: „Miért nem tettem meg jóval korábban?!” FreeBSD-s alapismeretek Egy kis történelem Tekintettel a helyre célszerûnek tartom a FreeBSD ismerteté- A FreeBSD történetét – ha nem is a világ – de a számítógé- sét a Linux rendszerekkel való összehasonlítással kezdeni. pek teremtésével kell kezdeni, jobban mondva ezek operáci- Tapasztalataim alapján bizton állíthatom, hogy a 90% azo- ós rendszereivel. Az operációs rendszerek mintegy negyven nosság mellett a maradék 10% eltérés elegendõ arra, hogy évre visszanyúló történelmének kezdetén az elsõ igazán az elsõ hetekben megkeserítse az ismerkedni vágyó életét. használható, egyszerre több programot futtatni képes operá- Ez természetesen nem vonatkozik azokra, akik még nem is- ciós rendszer a Multics volt. Ezt pár évig aktívan használták, merik túl alaposan a Linux rendszert. de aztán inkább kistestvérét, a UNICS (késõbb UNIX) operá- A legelsõ különbség az alaprendszer felépítésében van. ciós rendszert kezdték el fejleszteni és széles körben hasz- A Linux szûken véve egy mag, amely köré a terjesztések ké- nálni helyette. Fejlesztõi között akadnak olyan nagy nevek, szítõi építenek mûködõképes rendszert. A Linux rendszer- mint Ken Thompson, és Dennis Ritchie. Meg kell azonban mag minden különösebb probléma nélkül lecserélhetõ anél- említeni, hogy mellõzése ellenére a Multics fejlesztése nem kül, hogy a telepített csomagokat is változtatnunk kellene. állt meg, egészen az ezredfordulóig karbantartották. (Természetesen vannak esetek, amikor néhány csomag fris- A UNIX rendszert Ken Thompson mutatta be a Berkeley sítése szükséges). FreeBSD-nél egy újabb rendszermag for- egyetemen, ahol meghívott professzorként elõadásokat tar- dítása feltétlenül maga után vonja a teljes alaprendszer tott. Az egyetem lelkes diákjai és tanárai jelentõs fejlesztése- „hozzáfordítását”. (Ez persze nem olyan rémes és bonyo- ket hajtottak végre ezen az operációs rendszeren, majd ezt lult, mint amilyennek így elsõre hangzik). Ha ezt elmulaszt- önálló operációs rendszerként BSD (Berkeley Software juk, az rejtélyes hibákat okozhat a mûködésben. A számos Distribution) néven közreadták. Pár év múlva az AT&T (a kudarcnak talán pont ez lehet az egyik oka: ezeket az érthe- UNIX jogainak birtokosa) kereskedelmi forgalomba hozta tetlen hibákat látva a legtöbben sarkon fordulnak és soha a UNIX rendszert. A BSD ekkor még mintegy egynegyed többé nem fognak a kezükbe FreeBSD telepítõlemezt. részben AT&T forráskódot tartalmazott, az egyetem viszont Újabb nagy különbség, hogy Linux esetén (túlnyomó több- nem állt úgy anyagilag, hogy ezek jogát megvásárolhassa. ségében) minden alkalmazás, programegység egy-egy cso- Gondoltak azonban egy merészet, és a közzétették a BSD mag formájában érkezik, s ezek pontos függõségi viszo- rendszer forráskódját az AT&T forráskódjai nélkül. Ez nyok szerint telepíthetõek, frissíthetõek. A FreeBSD alap- a változat természetesen mûködésképtelen volt, de meg le- rendszert vehetjük úgy, mint egyetlen 200 MBájt méretû hetett hozzá írni a hiányzó részeket. Ezt William F. Jolitz csomagot, amely tartalmazza a rendszermagot és a mûkö- tette meg, aki 1992-ben 386BSD néven közreadta az új vál- déshez feltétlenül szükséges programokat: parancsértelme- tozatot. Ez sajnos soha nem lett stabil operációs rendszer. zõt (héjat), a szokásos UNIX programok gyûjteményét, az Egy év múlva csaknem egyszerre két projekt is indult alapvetõ hálózati eszközöket, valamint sok más egyéb a 386BSD alapjain: a FreeBSD és a NetBSD. Egy évvel ké- összetevõt. Az is lényeges, hogy a FreeBSD fejlesztõi vi- sõbb NetBSD két részre szakad, és létrejött az OpenBSD is, szonylag ritkán hozakodnak elõ újabb bináris terjesztéssel. amely a legfiatalabb BSD rendszer. Az ezek között eltelt idõt sem kell azonban tétlenül tölte-

www.linuxvilag.hu 2004. november 51 Dobbantó

nünk, mivel a rendszer forrása óráról-órása folyamatosan fejlõdik, és a megfelelõ CVS kiszolgálón bárki számára elér- hetõ. Ezt az utat választva – rendszeresen frissítve telepített rendszerünket – kikövezett úton tudunk haladni, mindig a legstabilabb és legfrissebb alaprendszer birtokosaként. Linux rendszereknél is ismert a stabil és a fejlesztõi változat fogalma. Linuxos körökben a különbséget a verziószám pá- ros vagy páratlan volta jelzi. Ez FreeBSD esetén sincs más- ként, de nem a verziószámból tudjuk egyértelmûen eldön- teni, hogy az adott változat fejlesztõi vagy stabil, hanem a mögé írt szóból. A stabil alaprendszer verziószáma mö- gött mindig a -STABLE kiegészítést olvashatjuk. Ezeket bát- ran használhatjuk élesben is. Idõnként megjelenik egy-egy bináris terjesztés is, amelyet a verziószám után írt - 1. ábra RELEASE szó jelöl. Ez egyfajta pillanatképe a -STABLE ág- nak. A -RELEASE változat néhány hónapos használata után érdemes áttanulmányozni a feltárt hibák listáját, mielõtt Gyors hálózati kapcsolat hiányában két CD lemezt kell meg- © Kiskapu Kft. Minden jog fenntartva éles helyzetben is üzembe helyeznénk a rendszert. (A leg- szereznünk. Ismerkedés céljából ajánlom a legújabb 5.3- újabb -RELEASE a 4.10, amely lassan fél éves lesz). A fej- BETA6 változatot, amely nagyon közel van a stabil ághoz, lesztõi ágat a -CURRENT utótag jelzi. Erre lehetõleg ne bíz- bár még nem stabil (ezt jelenti a BETA6 tag). A megfelelõ zunk olyan feladatot, amely megbízhatóságot és stabilitást telepítõkészlet letölthetõ az  ftp://ftp.freebsd.org/pub/ igényel, viszont ismerkedésre, illetve munkaállomások üze- FreeBSD/ISO-IMAGES-i386/5.3/ címrõl, majd tetszõleges meltetésére tökéletesen használható szokott lenni. módon adathordozóra írható. A FreeBSD az eszközök elnevezése terén alapvetõen azonos Érdemes egy gyors leltárt készíteni a gépünkben található elvet követ, a megnevezések azonban részleteikben mégis hardverelemekrõl, persze elég csak azokról, amelyeket elõ- különböznek egy Linux rendszer esetén megszokottaktól. reláthatólag a FreeBSD alatt is használni kívánunk majd. Ez Linux alatt az eszközök nevei elsõsorban azok rendeltetésé- sokat segít majd a telepítés folyamán, bár a telepítõprogram tõl függnek. A második Ethernet hálózati kártya például elég sok eszközt magától fel fog ismerni és helyesen be is büszkén viseli az eth1 nevet. FreeBSD alatt ne is keressünk állítja azokat. ilyet. Itt ugyanennek a kártyának az elnevezése lehet rl1, Célszerû a merevlemezen egy egész partíciónyi helyet ki- ed1, de lehet akár xl1 is, a meghajtómodultól függõen. hagyni a FreeBSD számára, mert a telepítõprogram nem ké- A merevlemezek neve hda vagy sda helyett ad0 vagy da0 pes átméretezni illetve átmozgatni más partíciókat. Ha nincs lesz, de a RAID használata ezt is felboríthatja. szabad hely, akkor használhatjuk a fips vagy a PartitionMagic Aki megszokta az a módot, ahogy a Linux a merevlemezeket programokat a „helycsináláshoz”. Mint minden hasonló mû- kezeli, annak elsõre hajmeresztõ lesz a FreeBSD-nek a partíci- veletnél, most sem árt mentést készíteni adatainkról. ók kezelése terén tapasztalható „fapadossága”. A FreeBSD Át kell gondolnunk a merevlemez új szerkezetét is, hiszen ugyanis kizárólag az elsõdleges lemezrészeket képes könnye- mint említettem a FreeBSD csak elsõdleges partícióról képes dén kezelni (nehézkesen bár, de a kiterjesztett és a logikai tí- elindulni. Csak akkor telepítsük a FreeBSD meglehetõsen pust is használhatjuk), illetve csak elsõdleges partícióról ké- puritán BootMgr programját, ha a többi operációs rendsze- pes elindulni. Egy partíciót a FreeBSD terminológia szeletnek rünk is elsõdleges partícióról indul. Ha van már valamilyen (slice) hív, amely tovább osztható címkékre (label). Minden bootmanager program telepítve, akkor jobban járunk, ha szelet 8 címkét tartalmazhat, egy merevlemezen tehát össze- azt használjuk. sen 32, különbözõ célt szolgáló címkét tudunk létrehozni. Egy olyan IDE merevlemezen például, amelyen Linux alatt A telepítés a /dev/hda7 a kiterjesztett partíció harmadik logikai partíció- A telepítés szokásos módon kezdõdik, vagyis elindítjuk ját jelentette, FreeBSD alatt ugyanez a terület a negyedik a telepítõprogramot. Ezt megtehetjük úgy, hogy közvetle- szelet harmadik címkéje lesz, és a /dev/ad0s3c nevet fogja vi- nül CD lemezrõl indítjuk a gépet. Ha ez valamiért nem selni. Néhány csatolási pont esetén fontos, hogy melyik cím- megy, akkor készíteni kell három indítólemezt, és ezekrõl kéhez rendeljük. A gyökérkönyvtár minden esetben a legel- bootolni. Akárhogy is kezdünk hozzá a dologhoz, a végén sõ (a jelû), a cserepartíció pedig a második (b jelû) címkén el kell indulnia a FreeBSD rendszermagjának. lehet. A teljes lemezterület a harmadik (c jelû) címke. A töb- Ez rengeteg eszközhöz tartalmaz meghajtóprogramot, vi- bi csatolási pontnak nincs ilyen megkülönböztet szerepe, így szont normális esetben ezeknek csak a töredéke található szabály sem vonatkozik rájuk. Természetesen egy másik sze- meg ténylegesen a gépünkben. Éppen ezért elõször a rend- leten más célra is felhasználhatjuk ugyanezeket a címkéket. szermag beállításaihoz kerülünk, ahol az automatikusan fel- derített eszközök listájában nyugtázzuk a helyesen mûkö- Elõkészületek a telepítéshez dõket, kitöröljük a helytelenül felismerteket. Ugyanitt tud- Elsõ dolgunk egy telepítõlemez beszerzése lesz. Akinek szé- juk letiltani azokat a meghajtóprogramokat, amelyeket nem lessávú kapcsolata vannak, annak elég lesz egy bootonly (20 akarunk használni, illetve itt adhatjuk meg a mûködésük- MBájt) vagy egy minimal (200 MBájt) telepítõkészlet, amely höz szükséges paramétereket. (Elõfordulhat, hogy bizonyos csak a rendszermagot, illetve az alaprendszert tartalmazza. dolgokat a rendszermag nem tudott megfelelõen beállítani.)

52 Linuxvilág Dobbantó

fontosabb pillanatig, a telepítés tényleges megkezdéséig. Ha továbbmegyünk, akkor felkerül a gépünkre az áhított FreeBSD operációs rendszer. A kiválasztott komponensek- tõl, a telepítési forrástól no és gépünk sebességétõl függõen pár perctõl több óráig is eltarthat a telepítésnek ez a fázisa.

Telepítés után Az állományok felmásolása után további kérdéseket tesz fel a telepítõprogram. Ezekre akár késõbb is válaszolhatunk, ha elindítjuk a /stand/sysinstall programot. Elsõként a hálózati kapcsolat beállítását ejthetjük meg. (Ha korábban hálózati telepítési forrást adtunk meg, akkor ezek a paraméterek értelemszerûen már be vannak állítva). 2. ábra Kiválaszthatjuk a hálózati kártyát, majd a szokásos adatok megadása után akár azonnal használatba is vehetjük azt. Ezek után sok-sok a beállításokkal kapcsolatos kérdés kö- Az elsõ telepítés során ezt a lépést tulajdonképpen nyugodt vetkezik. Nyilatkoznunk kell az inetd, az FTP és az NFS ki- lélekkel kihagyhatjuk, éles rendszernél azonban érdemes az szolgáló „ügyeirõl”, meg kell adnunk a konzol betûtípusát © Kiskapu Kft. Minden jog fenntartva útmutató szerint beállítani a rendszermagot. és a billentyûzetkiosztást; az idõzónát; az egér típusát; vala- A rendszermag beállításának átugrása (vagy elvégzése) mint ki kell választanunk a rendszer által automatikusan után elindul a FreeBSD karakter alapú telepítõprogramja elindítandó szolgáltatásokat. Ha feltettük az XFree86 rend- a sysinstall. Ezzel a programmal még rendszeresen fogunk szert, akkor ennek a beállítását is elvégezhetjük, de jobb, találkozni, mivel ez a FreeBSD „mindenese”. Szinte minden ha ezzel késõbb foglalkozunk. az alaprendszerrel kapcsolatos beállítást el tudunk vele vé- Ezek után feltehetünk olyan kiegészítõ csomagokat is, ame- gezni. Elsõre lehetõleg a Standard telepítési módot vá- lyek karbantartását nem vállalta fel a FreeBSD csapat. Nagy- lasszuk, mivel tapasztalataim szerint ez adja a kompro- jából tizenkétezer ilyen csomag áll rendelkezésre, amelyek misszumokkal teli, de kezdõk számára leginkább mûködõ közül ki tudjuk választani a számunkra szükséges vagy végeredményt. Türelmetlenek számára az Express is hasz- megszokott programokat. Ezek kategóriákba vannak sorol- nálható, de ekkor sok olyan kérdésre a telepítõ program va, a minden kategóriában programok százai közül választ- „válaszol”, amire esetleg nem kellene. Lehetõleg csak akkor hatunk. Ezek telepítése során elõfordulhat, hogy sokkal használjuk, ha nincs máris operációs rendszer a merevle- több csomag kerül fel, mint amennyit kiválasztottunk. mezen. A Custom telepítési mód szinte mindent megkér- Ennek oka, hogy a csomagoknak szüksége lehet más cso- dez, így ezt csak tapasztalt – legalább négy-öt sikeres telepí- magra a pontos és hibátlan mûködéshez, ezért az igényelt tést megélt – veteránoknak ajánlom. csomagokat is telepíteni kell. Az elsõ fázisban feladatunk a szeletek kiválasztása lesz, A csomagok feltelepedése után érdemes egy saját felhaszná- mégpedig az Fdisk nevû program segítségével. Az egyetlen lót készíteni, hogy ne root jogokkal essünk neki a használat- dolgunk az, hogy az üresen hagyott helyen egy szeletet nak. A root jelszót is meg kell adni, amelyet jól gondoljunk létrehozzunk. Ezt a betûparancsok közül a c lenyomásával át, fõleg akkor, ha szélessávú kapcsolatot használunk majd. tudjuk végrehajtani. A létrejött szelet típusa freebsd. Ezt ké- A telepítõprogramból való kilépés után a gép újra fog in- sõbb majd tovább tudjuk osztani címkékre. Ha készen va- dulni, és sikeres beállítások esetén a FreeBSD használatba gyunk a szelet létrehozásával, akkor az f billentyûvel végle- vehetõ. Ha valahol hibával találkozunk, érdemes megnézni gesíthetjük a változtatást. Ezt követõen a telepítõprogram a FreeBSD kézikönyvet, amely sokrétû és bõ leírást ad a te- megkérdezi, hogy telepíts-e a BootMgr programot. Itt több lepítésrõl (egyelõre sajnos csak angol nyelven). lehetõség közül választhatunk. Próbáljuk megtalálni az igé- nyeinkhez leginkább igazodó megoldást. Auth Gábor ([email protected]) Ezek után a freebsd típusú szeleteken létre kell hoznunk Egy pécsi középiskolában informatikát és prog- a címkéket. Célszerû elõször a telepítõre hagyni ezek elké- ramozást oktat. Tíz éve botlott elõször a UNIX szítését, vagyis egyszerûen megnyomni az a billentyût, rendszerekbe, 7 év Linux használat után kapta ugyanis könnyedén el tudjuk hibázni a címkék elnevezését. el a FreeBSD lázat, amibõl máig nem tudott A w gomb kiírja a lemezre a változásokat és létrehozza kigyógyulni. a megfelelõ fájlrendszereket is. A programból a q billentyû-  vel léphetünk ki, mire folytatódik a telepítés. A következõ HIVATKOZÁSOK lépés az alaprendszer kiegészítõ összetevõinek kiválasztása. Választhatjuk a minimum telepítést, de akár az összes kom-  ponenst is feltelepíthetjük. A ports komponenst érdemes te- A FreeBSD projekt honlapja http://www.freebsd.org,  lepítésre kijelölni, mivel fontos lesz a késõbbiekben. A magyar FreeBSD honlap http://www.freebsd.hu,  A komponenslista után ki kell választanunk a telepítési for- A magyar BSD honlap http://www.bsd.hu, rást, vagyis ahonnan a telepítõ be tudja tölteni az egyes ré- A kézikönyv készülõ magyar fordítása  szek állományait. Ez lehet CD vagy DVD, de sok hálózaton http://www.enaplo.hu/FreeBSD/handbook/. át történõ letöltés közül is választhatunk. Elérkeztünk a leg-

www.linuxvilag.hu 2004. november 53 Dobbantó

A Perl és az adatbázisok (3. rész)

Hajtsuk uralmunk alá a világ összes adatbáziskezelõjét SQL parancsokkal! A Perl DBI modulja segít nekünk ebben.

z elõzõ részekben megismerkedtünk az adattáro- © Kiskapu Kft. Minden jog fenntartva A lás alapjait jelentõ szöveges, és a Berkeley alrend- szerre támaszkodó adatbázisokkal. Ezek progra- mozása elég egyszerû és gyors, ám nagyobb rendszerek esetén komoly nehézségek adódhatnak ha ezeket használ- juk. A sokféle kódlap miatt az adatállományok nehezen hordozhatóak, a mezõk típusai csak körülményesen adha- tók meg, a hálózati elérésrõl pedig ne is beszéljünk. Ezek a gondok abból adódnak, hogy az elsõ részben han- goztatott adatfüggetlenítési elvet eddig egyáltalán nem vet- tük figyelembe. A fent említett feladatokat ugyanis egy el- különített adatkezelõ rétegnek kellene ellátnia. Az eddig be- mutatásra került módszerekkel ezt nem lehetett megvalósí- tani, most azonban lépünk egy nagyot, és megnézzük, ho- gyan lehet egyszerre akár több relációs adatbáziskezelõ SearchServer, PostgreSQL, és XBase. A régi idõk szerelme- rendszert (RDBMS) is használni. seinek pedig van egy CSV modul is a közönséges szöveges állományokhoz. Közös nyelv – közös felület Az egyes adatbáziskezelõk meghajtóit tartalmazó modulok Feltételezem, hogy az Olvasó találkozott már olyan táb- DBD::rdbms néven érhetõk el, ahol az rdbms a szóban forgó lákból, és az azok közötti kapcsolatokból építkezõ adat- rendszer neve. Így az Oracle meghajtót a DBD::Oracle tar- báziskezelõvel, amelynek a kezelõnyelve az SQL volt. talmazza. A DBI elég okos ahhoz, hogy a csatlakozáskor Ebben a hónapban azt vizsgálom meg, hogyan használha- megadott adatforrás alapján önmûködõen betöltse a megfe- tunk egy ilyen rendszert a Perl segítségével. Persze nem lelõ meghajtót, így errõl nekünk már nem kell gondoskod- tudhatom, hogy az Olvasó MySQL, vagy PostgreSQL párti. nunk. Nem csak hogy nem kell, valójában nem is szabad, Ha azonban egységesített felületen keresztül érjük el ked- így az egyetlen modul, amit nekünk, a programozónak be venc adatbázisunkat, és a háttérben dolgozó meghajtó- kell töltenünk, maga a DBI. ’programra bízzuk az egyedi sajátságok kezelését, akkor ez nem is lényeges. A DBI felépítése A közös felületet a DBI jelenti. Ez egy Perl modul formájá- A DBI teljesen objektumközpontú. Némi túlzással fogal- ban megjelenõ programozói felület, amely mögött számos mazhatunk úgy, hogy a DBI felépítése az egységbezárás elterjedt adatbáziskezelõ rendszerhez találunk mintapéldája. Ennek megvan az a szépsége, hogy lehet meghajtóprogramot. Röviden szólva a DBI használatával akár párhuzamosan két kapcsolatunk két különbözõ egy újabb réteg kerül az adatbáziskezelõ és saját progra- adatbáziskezelõvel, az ezeken elvégezhetõ mûveletek bizto- munk közé, ehetõvé téve ezáltal hogy úgy álljunk át példá- san nem fognak keveredni. Kevésbé pongyolán fogalmaz- ul MySQL-rõl Oracle-re, hogy ehhez a program akárcsak va, tiszta és átlátható programot kapunk az elemfüggvé- egyetlen sorát át kellene írnunk. Azt hiszem ezt hívják nyek használatával. programozói álomnak. Három fõ objektumtípus áll rendelkezésünkre a ked- Minden támogatott rendszert egy-egy DBD modul kép- venc adatbáziskezelõnkkel történõ kapcsolattartásra. Eze- visel, ezek jelentik a DBI mögötti meghajtókat. A rövidíté- ket kezelõknek (handle) hívják, és egy jól meghatározott hie- sek a belsõ logikai kapcsolatrendszerre utalnak: DBD = rarchiát alkotnak. Az elsõ a meghajtó kezelõ (driver handle), „DataBase Dependent” (adatbázisfüggõ) és DBI = amely egy belsõ használatra fenntartott objektum, és egy „DataBase Independent” (adatbázistól független). Jelenleg az betöltött meghajtót jelképez. Nekünk ezzel nem kell fog- alábbi rendszerekhez van megbízható támogatás: Oracle, lalkoznunk, a connect() elemfüggvényt is az õsosztályon Informix, mSQL, MySQL, Ingres, Sybase, DB2, Empress, keresztül fogjuk meghívni.

54 Linuxvilág Dobbantó

A második az adatbázis kezelõ (database handle), amely egy Úgy gondolom, a forrás önmagáért beszél. Én a következõ pillanatnyi munkamenetet jelképez egy adott adatbázissal. kimenetet kaptam: Ez a hozzá tartozó meghajtó kezelõ gyermeke és mi rend- szerint a DBI -> connect() függvénytõl kapjuk vissza. Meghajtó: ExampleP Ez utóbbi a paraméterként átadott adatforrásból fejti meg, Adatforrás: dbi:ExampleP:dir=. hogy mely meghajtóból kell származtatni az adatbázis keze- lõt. A DBI leírása és a példa programok alapján $dbh néven Meghajtó: Proxy szokás hivatkozni rá. Végül, de nem utolsó sorban a mondatkezelõ (statement Meghajtó: mysql handle) egy SQL mondatot zár egységbe. A mondat ke- Adatforrás: DBI:mysql:mysql zelõk az adott adatbáziskezelõ gyermekei. Mint ilyenek, Adatforrás: DBI:mysql:mythconverg egy mondat kezelõ adatai védettek a többi mondat kezelõ Adatforrás: DBI:mysql:proba_adatbazis módosításaitól. Rendszerint a szülõ prepare() elemfügg- Adatforrás: DBI:mysql:test vényétõl kapjuk vissza ezt az objektumot. A fentebb be- vezetett elnevezési módot követve, $sth névvel fogunk Elég szegényes telepítés, mindössze három meghajtóm van! hivatkozni rá. Ezek sorát a megfelelõ DBD::meghajto modul kézi telepíté- sével, vagy Debian alatt libdbd-meghajto-perl csomag be- Az adatforrások szerzésével lehet bõvíteni. Azt azonban érdemes megfigyel- © Kiskapu Kft. Minden jog fenntartva Amikor egy adatbázishoz csatlakozunk a DBI segítségével, ni, hogy a MySQL adatforrások között az összes MySQL meg kell határoznunk egy úgynevezett adatforrást. Ez egy adatbázisomat látom. Ez azt is jelenti, hogy az adatbázisok kettõspontokkal elválasztott lista. Elsõ tagja kötött, és min- neveire mindennemû hitelesítés nélkül, egyszerûen szert dig a DBI betûk alkotják, akárcsak a honlapok elérésénél lehet tenni. használt http. Második tagja a használni kívánt meghajtó neve, pl. Xbase. A további paraméterek mind átadásra ke- Lányok lekérdezése rülnek a meghajtó kezelõ saját connect() függvényének. Következõ lépésként lássunk egy kis szkriptet, amely Ezek már meghajtónként eltérhetnek, itt szokás megadni egy, a már a korábbi részekbõl megszokott lekérdezést pl. azt TCP/IP kaput, amin az adatbáziskezelõ figyel. valósít meg egy MySQL adatbázison. Látni fogod, hogy Elsõ körben próbáljuk meg feltérképezni saját rendszerünk az adatbázishoz szorosan kötõdõ kód mindössze egy adta lehetõségeket. A DBI osztály available_drivers() sor, így a program könnyen átültethetõ egy másik kör- elemfüggvénye egy tömböt ad vissza, amely a használat- nyezetbe. ra kész meghajtókat tartalmazza. Ezek bármelyikét átad- va a data_sources() elemfüggvénynek, megkapjuk az #!/usr/bin/perl -w adott meghajtón keresztül igénybe vehetõ adatforrások listáját, szintén egy tömbként. Ezek segítségével megje- use strict; leníthetjük az összes meghajtó összes adatforrását az use DBI; adott rendszeren: die “Használat: “ . $0 . “ <~lány neve>\n” unless #!/usr/bin/perl -w @ARGV; use strict; my ($dbh, $sth, $minta, @sor); use DBI; $dbh = DBI -> connect ( my @meghajtok = DBI -> available_drivers (); “DBI:mysql:proba_adatbazis”, die “Nem találtam meghajtókat!\n” unless “testuser”, @meghajtok; “jelszo”, { foreach my $meghajto ( @meghajtok ) { PrintError => 0, RaiseError => 1 print “Meghajtó: “ . $meghajto . “\n”; } my @adatforrasok = DBI -> data_sources ); ( $meghajto ); $minta = $dbh -> quote ($ARGV [0]); foreach my $adatforras ( @adatforrasok ) { $sth = $dbh -> prepare (“SELECT * FROM lanyok print “\tAdatforrás: “ . $adatforras . WHERE nev LIKE “ . $minta); “\n”; } $sth -> execute ();

print “\n”; while (@sor = $sth -> fetchrow_array ()) { my ($nev, $telszam, $szereti) = @sor; } print “ Adatlap: “ . $nev . “\n”;

www.linuxvilag.hu 2004. november 55 Dobbantó

print “======” . “=” x length ( $nev ) . A fõ ciklusban rekordonként dolgozzuk fel a kapott ered- “\n”; ményeket. Ehhez a mondat kezelõ fetchrow_array() print “ Telefonszám : “ . elemfüggvényét használjuk. Ennek segítségével minden $telszam . “\n”; iterációban egy újabb rekord mezõit tartalmazza a @sor print “ Ezzel veheted le a lábáról : “ . tömb. A ciklus magja az elsõ rész óta nem sokat válto- $szereti . “\n\n”; zott. Egy szép adatlapot ad, ahol a név a megfelelõ } hosszúságban alá van húzva, ezt követi a másik két mezõ. A program legvégén megszakítjuk a kapcsolatot $dbh -> disconnect (); az adatbáziskezelõvel.

Nézzük sorról-sorra! Az elsõ sorban feltüntetjük a parancs- A hárem bõvítése értelmezõ elérési útját, és jelezzük a -w kapcsolóval, hogy A most következõ gyöngyszem a tárolás mûveletet valósítja a figyelmeztetõ üzeneteket is szeretnénk látni. Bekapcsoljuk meg. Némileg módosult a hibakezelés rész, továbbá van a szigorú ellenõrzést, majd használatba vesszük a DBI mo- egy trükk az SQL utasítás elõkészítésében. Mindezek a for- dult. A negyedik sorban egy, a program helyes használatára télyok még nagy segítségedre lehetnek, ha adatbázis-prog- vonatkozó üzenettel kilépünk, amennyiben nem volt át- ramozásra adnád a fejed. Lássuk! adott paraméter. Remélem, az eddig látottak nem okoztak © Kiskapu Kft. Minden jog fenntartva meglepetést. #!/usr/bin/perl -w Az ötödik sorban jelezzük a használni kívánt változókat. A $dbh az adatbázis kezelõ, a $sth pedig a mondat kezelõ use strict; lesz. Láthatólag nem lesz szükségünk meghajtó kezelõ ob- use DBI; jektumra, hiszen azt kizárólag belsõ használatra szánták. A $minta a parancssorban átadott mintát fogja tartalmazni, die “Használat: “ . $0 . “ \n” de ezen még finomítunk. Továbbá amikor egy ciklusban vé- unless @ARGV; gigmegyünk az SQL lekérdezés eredménylistáján, egy @sor tömbben lesz a pillanatnyi rekord. my ($dbh, $sth); Ezután meghívjuk a DBI osztály connect() függvényét, és a visszaadott adatbázis kezelõ objektumot a $dbh változó- $dbh = DBI -> connect ( ban tároljuk. Az elemfüggvény elsõ paramétere az adatfor- “DBI:mysql:” . $ARGV [0], rás, mely kettõspontokkal elválasztva tartalmazza a kötele- “testuser”, zõ DBI szót, a meghajtó nevét, és a használni kívánt adatbá- “jelszo”, zist. Ez utóbbit már a meghajtó saját connect() függvénye { PrintError => 0, RaiseError => 0 } ) or kapja meg. Az adatforrást követõ két paraméter tartalmazza die “Nem tudok csatlakozni az adatbázishoz: a felhasználónevet és jelszót. “ . $DBI::errstr; A negyedik paraméter egy asszociatív tömb. Az adat- báziskezelõvel történõ kapcsolattartás egészére vonatkozó eval { attribútumok adhatók meg itt, de az alapértelmezések elfo- $dbh -> {RaiseError} = 1; gadása esetén el is hagyható a paraméter. Ha a PrintError 1, $sth = $dbh -> prepare (“INSERT INTO lanyok bármilyen hiba fellépése esetén a Perl warn() függvényén VALUES (?, ?, ?)”); keresztül a felhasználó értesül a hibáról. Alapértelmezésben 1. Ha a RaiseError 1, bármilyen hiba fellépése esetén a Perl print “Neve : “; die() függvényén keresztül hibaüzenet után azonnal kilép. my $nev = ; chop $nev; Alapértelmezésben 0. print “Telefonszám : “; A program az adatbáziskezelõre bízza a mintaillesztést. En- my $telszam = ; chop $telszam; nek elõnye, hogy a kiszolgálónak kell szûkítenie a kiválasz- print “Ezzel veheted le a lábáról : “; tás eredményét, viszont hátránya, hogy sajnos nem lehet my $szereti = ; chop $szereti; szabványos kifejezéseket használni az SQL-ben. Minden- esetre bármilyen szöveget adunk is át az adatbáziskezelõ- $sth -> execute ($nev, $telszam, nek, érdemes levédeni. A quote() elemfüggvény nem csak $szereti); két idézõjel közé teszi a teljes szöveget, de a közbeesõ kü- }; lönleges karakterekre is figyel. warn “Hiba történt a mûvelet végrehajtása során: “ A következõ sorban meghívjuk az adatbázis kezelõ . $@ if $@; prepare() elemfüggvényét. Ez elõkészít egy SQL monda- s tot a végrehajtásra. Az elõkészítés azt jelenti, hogy létrehoz $dbh -> disconnect (); egy mondat kezelõ objektumot. Utóbbinak az execute() elemfüggvényét kell meghívni a lekérdezés végrehajtá- Az elsõ újdonság, hogy parancssorban át lehet adni a hasz- sához. Ez azért hasznos, mert a mondat összeállítása és nálni kívánt adatbázis nevét. Ezzel még nem oldjuk meg a lekérdezés nem feltétlenül kell, hogy egy helyen legyen. a világegyenletet, de megkönnyítheti a szkriptet fekete do- Továbbá, egy lekérdezés többszöri végrehajtása adhat bozként kezelõ felhasználóink életét. Ha még ennél is fi- különbözõ eredményeket. gyelmesebbek szeretnénk lenni a program használóival,

56 Linuxvilág Dobbantó

az elsõ példában bemutatott módszerrel kikereshetjük az Az ezt követõ elõkészítés tartalmaz három kérdõjelet. Ezek- elérhetõ adatbázisok neveit, és felajánlhatjuk õket választási re a kérdõjelekre úgy lehet gondolni, mint az SQL mondat lehetõségként. belsõ változóira. Elõkészítjük ugyan az utasítást, de bizo- Az ötödik sorban ez esetben már csak két változót ha- nyos részeket üresen hagyunk. Ezeket a lyukakat késõbb tároztunk meg elõre. Ez valójában ízlés dolga. Egy C-hez a végrehajtás során betömhetjük. Itt ennek nincs sok jelen- szokott programozó jobban szereti a program legelején tõsége, hiszen a beolvasás után is elõkészíthettük volna az látni a használni kívánt szimbólumokat, egy C++-on utasítást. Egy ciklusba ágyazott execute() esetén viszont felnõtt billentyûzet-nyûvõ inkább a használat helyére nagyon hasznos lehet ez a módszer. tenné õket. Ebben a példában a további három változó Az adatok bekérése ugyanúgy zajlik, mint elõzõ hónap- meghatározása közvetlenül a használatba vétel helyén ban a Berkeley alrendszer használatakor, ezért ezt most történik. Döntsük el, melyik tetszik jobban, viszont nem részletezném. Az eval {} blokk utolsó utasításaként maradj következetes. végrehajtjuk az SQL mondatot a megfelelõ változóbehe- A connect() függvény kevéssé változott. Természetesen az lyettesítéssel. Nagyon fontos a blokkot lezáró pontos- adatforráshoz hozzá kell fûzni a parancssori paramétert. Vi- vesszõ! Ezután következhet az esetleges hibák kezelése. szont figyeld meg, hogy a RaiseError értéke most 0, vagyis Ha történt valamilyen gond, a $@ változó biztosan nem nem lép ki önmûködõen a program hibaüzenettel, ha üres. Ez esetben mindössze egy figyelmeztetõ üzenetet a mûvelet nem volt sikeres. Helyette egy kézi hibaellenõr- jelenítünk meg. © Kiskapu Kft. Minden jog fenntartva zést végzünk a már megszokott fv() or die; szerkezettel. Sorozatunk utolsó állomásához érkeztünk. Remélem, sike- A saját hibaüzenetben felhasználtuk az õsosztály errstr rült bemutatnom az adatbáziskezelés alapvetõ fogalmait, és elemváltozóját a hiba típusának leírásához. hogy mennyire egyszerû ezeket a gyakorlatban alkalmazni. Ezután egy eval {} blokk következik, melynek elsõ utasítá- Sok sikert kívánok a további kísérletezgetéshez, akinek pe- sában visszaállítjuk a RaiseError értékét 1-re. Így amennyi- dig kérdése van, írjon bátran. ben a blokkon belül felmerül egy hiba, az önmûködõen meghívott die() miatt nem fejezi be a futását a program, Fülöp Balázs ([email protected]) hanem csak a blokkot hagyja el. A különleges $@ változó 18 éves, imádja a Túró Rudit, a Debian Linuxot tartalmazni fogja a hiba leírását, így azt egy önálló hibaüze- és a teheneket. Kedvenc írója Slawomir Mrozek. net megjelenítéséhez nyugodtan felhasználhatjuk. Leginkább a számítógépes hálózatok biztonsága Ez a megoldás kis jóindulattal a Java-s try {} - catch {} érdekli. A BME VIK mûszaki informatikus kistestvérének nevezhetõ. szak hallgatója.

www.linuxvilag.hu 2004. november 57 Dobbantó

MOODLE: Egy ingyenes e-learning keretrendszer Építsünk könnyen, és gyorsan oktatóportált a mindenki számára elérhetõ, és ingyenes Moodle program segítségével.

© Kiskapu Kft. Minden jog fenntartva mikor elõször kerültem testközelbe a Moodle-lel, még nem gondoltam volna, hogy hónapokkal késõbb cikk írására fogom adni a fejemet. A Moodle felhasználóknak viszonylag szerény tábora van kis hazánkban, ezzel szemben külföldön elég népszerû, és világviszonylatban jelenleg 1843 regisztrált Moodle alapo- kon nyugvó weboldal van. Szeretném tehát bemutatni, hogy mire is képes a Moodle, hogyan könnyíti meg a prog- ram az oktató tartalom felvitelét, szerkesztését, módosítását, a tananyagok rendszerezését, illetve újabb tananyagok be- szúrását a már meglévõk közé. Mindezt egyszerûen, és gyorsan el lehet végezni, anélkül, hogy bármiféle progra- 1. kép Nagy segítség lehet az elektronikus oktatásban az ingyenesen mozói tudással kellene rendelkeznünk, sõt még a HTML használható Moodle nyelvet sem kell ismerni ahhoz, hogy hivatkozásokat, ké- pek, ábrákat szúrjunk be az egyes tananyagokba. Megpró- bálom bemutatni annak az útnak az elsõ lépéseit, amit vé- DocumentRoot “/var/www/html” ha már itt vagyunk, akkor gig kell járnunk ahhoz az 1. képen láthatóhoz hasonló oldalt ajánlatos megnézni a User és a Group kezdetû sorokat is, tudjunk készíteni. ha nem vagyunk pontosan tisztában azzal, hogy az Apache a fájlok hozzáféréséhez milyen csoport és felhasználó nevet Az elsõ lépések használ. A következõ parancsokkal tömörítsük ki, és moz- A Moodle-t a Moodle honlapjáról tudjuk – ingyenesen – gassuk a helyére a Moodle-t. letölteni. Ajánlott a legutolsó stabil verzió letöltése, ez jelen- leg az 1.4+, mert ekkor nem érhetnek nagy meglepetések tar -zxvf moodle-latest-1.4.tgz a mûködés folyamán. A telepítést és a program bemutatását mv moodle /var/www/html is ezzel a verzióval végzem, így az esetleg késõbbi verziók telepítése, konfigurálása kissé eltérhet a cikkben leírtaktól. Ezek után a Moolde a /var/www/html/moodle könyvtárba A Moodle szinte az összes operációs rendszer alatt képes kerül. A Moodle-nek szüksége van még egy adat könyvtár- mûködni, ha az Apache, a PHP és a MySQL programok ra, ahol az egyes tananyagokhoz kapcsolódó képeket, a fel- rendelkezésre állnak. A fejlesztõk is ezekkel a programok- használók által feltöltött fájlokat tárolja. Erre a célra hoz- kal ajánlják a használatot, de gyakorlatilag bármelyik másik zuk létre a /var/moodledata könyvtárat az mkdir parancs se- webszerver, megfelel, amelyik támogatja a PHP-t, illetve gítségével, ajánlatos a moodledata könyvtárat nem a Moodle a MySQL helyett választhatjuk a PostgreSQL-t is, folynak fõkönyvtárában elhelyezni, mert biztonsági mentések készí- a fejlesztések további adatbázis szerverekkel való kapcsolat tésénél külön tudjuk menteni a két könyvtárat. kiépítésére lehetõségére is. A Moodle 1.4+ mûködéséhez Most be kell állítani a Moodle egyes változóit a config.php legalább a 4.1.0-ás PHP-ra lesz szükségünk. Ezeknek a tele- fájlban, a fájl nem létezik, ne keressük, viszont a program pítését és beállítását nem részletezem, mert célom a Moodle fõkönyvtárában található config-dist.php egy példa arra, képességeinek megismertetése. A telepítést UHU-Linux hogy a config.php hogyan is nézzen ki, másoljuk le tehát ezt 1.1.1 alatt végeztem. a fájlt cp config-dist.php config.php és végezzük el rajta Miután letöltöttük a Moodle-t csomagoljuk ki és másoljuk a szükséges beállításokat, az 1. kódrészlet alapján. a be a Apache dokumentum könyvtárába. Ha nem tudjuk, hogy éppen melyik az aktuális Apache dokumentum Az adatbázis beállítása könyvtár, akkor a keressük meg a /etc/apache/main.conf fájl- A MySQL adatbázis telepítése után az adatbázishoz ban a DocumentRoot bejegyzést, ami valami ilyesmi lesz a root felhasználó jelszó nélkül hozzáférhet, ezért ajánlott

58 Linuxvilág Dobbantó

1. kódrészlet 2. kódrészlet

#az adatbázis típusa mysql vagy postgres7 DirectoryIndex index.php index.html index.htm $CFG->dbtype = ‘mysql’; #az adatbázis szerver címe $CFG->dbhost = ‘localhost’; AcceptPathInfo on #a Moodle által használt adatbázis a szerveren $CFG->dbname = ‘moodle’ ; #a Moodle ezzel a név-jelszó párral kapcsolódik php_flag magic_quotes_gpc 1 #az adatbázishoz php_flag magic_quotes_runtime 0 $CFG->dbuser = ‘moodleuser’ ; php_flag file_uploads 1 $CFG->dbpass = ‘password’ ; php_flag session.auto_start 0 #minden egyes Moodle által használt tábla ezzel php_flag session.bug_compat_warn 0 #a karaktersorozattal fog kezdõdni php_flag memory_limit 16M $CFG->prefix= ‘mdl_’ ; #ezen az URL-en keresztül fogjuk elérni © Kiskapu Kft. Minden jog fenntartva #a Moodle-t chown -R www:www /var/moodledata $CFG->wwwroot = ‘http://localhost/moodle’; chmod -R 777 /var/moodledata #a Moodle könyvtár helye chown -R www:www /var/www/html/moodle $CFG->dirroot = ‘/var/www/html/moodle’; chmod -R 777 /var/www/html/moodle #a Moodle adatkönyvtárának helye $CFG->dataroot = ‘/var/moodledata ;’ Kisebb módosítások szükségesek még az Apache konfigurá- ciós fájlban is, tehát nyissuk meg szerkesztésre a /etc/apache/ main.conf fájlt, és keressük meg benne a DirectoryIndex a mysqladmin -u root password “uj_jelszo” paranccsal kezdetû sort, és ha nem szerepel benne a index.php bejegy- megadni egy új jelszót. Az adatbázist a mysqld_safe pa- zés, akkor célszerû az elsõ helyre beszúrni, hogy az Apache ranccsal tudjuk elindítani. Miután elindult az adatbázis mindig minden könyvtárban elõször az index.php nevû fájlo- próbáljunk meg csatlakozni hozzá a mysql -u root -p pa- kat próbálja meg megnyitni, és ha nem sikerül, csak akkor ranccsal, majd gépeljük be a root jelszavát. Biztonsági szem- próbálja meg mondjuk az index.html fájlt megnyitni. Nálam pontból ajánlott az alábbi utasítások kiadása, mert ezek után ez a következõképpen néz ki: csak a root, férhet hozzá a MySQL-hez. Figyelem! Ezeket az utasításokat csak teljesen új MySQL esetén alkalmazzuk, DirectoryIndex index.php index.html index.htm különben megrongálhatjuk a már létezõ adatbázisunkat. Ha az Apache 2-es változatát használjuk, akkor be kell be USE mysq; kell állítanunk az AcceptPathInfo on paramétert. Ha sze- DELETE FROM user WHERE host!=”localhost” or retnénk, hogy a magyar karakterek is jól jelenjenek meg az user!=”root” or password=””; oldalunkon, akkor ellenõrizhetjük, hogy ugyanebben a fájl- DELETE FROM db; ban az AddDefaultCharset ISO-8859-2 hasonlóképpen le- FLUSH PRIVILEGES; gyen beállítva. Ha nincs jogunk módosítani ezeket a fájlo- kat, akkor is van lehetõségünk a szükséges paramétereket Most készítsük el a Moodle-nek szánt adatbázist a CREATE beállítani, de elõtte nézzük meg, hogy hogyan kell módo- DATABASE moodle; parancs segítségével, majd adjuk ki sítanunk a PHP-t. A PHP konfigurációs fájlt általában a USE moodle; parancsot hogy a moodle adatbázisban dol- a /etc/php.ini név alatt találjuk meg, ellenõrizzük le, hogy gozhassunk. Most pedig adjuk hozzá a Moodle felhaszná- az alábbi beállítások szerepelnek-e nálunk is (általában ezek lót a MySQL kiszolgálóhoz, és rendeljük hozzá a szükséges az alapbeállítások, de nem árt a biztonság): jogokat is. memory_limit = 16M GRANT SELECT, INSERT, CREATE, UPDATE, DELETE magic_quotes_gpc = 1 -> ON moodle.* magic_quotes_runtime = 0 -> TO moodleuser@localhost file_uploads = 1 -> IDENTIFIED BY ‘password’; session.auto_start = 0 session.bug_compat_warn = 0 Ha minden sikeresen lezajlott, akkor az exit paranccsal lépjünk ki a MySQL-bõl. Már csak a /var/www/html/moodle, A memory_limit = 16M beállítását a Moodle telepítési segéd- és a /var/moodledata könyvtárat jogát kell átállítani ahhoz, lete nem említi, azonban tapasztalatom szerint az alapbeállí- hogy megkezdhessük a Moodle használatát, ezért adjuk ki tásként használt 8M kevés lehet a Moodle számára, valószí- a következõ két parancsot, természetesen ha nekünk a /etc/ nû, hogy a legtöbb esetben a probléma nem fordul elõ, de apache/main.conf fájl User és Group változói más értéket tar- úgy érzem, hogy manapság, amikor már az otthoni számító- talmaztak, mondjuk apache, apache, akkor azt adjuk ki. gépekben is kezd elterjedni az 512 MB-os RAM használata,

www.linuxvilag.hu 2004. november 59 Dobbantó

a 16M használata nem jelenthet különösebb problémát. Most térjünk vissza, hogy mi a helyzet akkor, amikor nincs jogosultságunk sem a /etc/apache/main.conf sem a /etc/ php.ini módosítására, szerencsére ezeket a beállításokat ak- kor is érvényesíteni tudjuk, ha készítünk egy .htaccess nevû fájlt a Moodle fõkönyvtárában a 2. kódrészlet tartalmával. Ha az Apache futott a beállítások változtatása alatt, akkor indítsuk újra, hogy az új beállítások érvényesek legyenek, amennyiben még nem fut az Apache, akkor most indítsuk el.

Ismerkedés a Moodle-lel Szerencsésen túljutottunk a Moodle futtatásához szükséges beállításokon, és végre megkezdhetjük használni a progra- 2. kép Már elérhetõ a saját Moodle oldalunk mot. Az elsõ elindulás elõtt viszont a Moodle-nek el kell ké- szítenie a szükséges adatbázis táblákat, és nekünk is meg bejelentkezve az oldalra, akkor két lehetséges megjelenítési kell adnunk még néhány futtatás során használni kívánt mód között választhatunk, a normál nézet, a másik a szer- fontos paramétert, ezért egy böngészõ segítségével hívjuk kesztési nézet. A normál nézetben ugyanazt az oldalstruk- © Kiskapu Kft. Minden jog fenntartva meg a /var/www/html/moodle/install.php fájlt, ami a beállí- túrát látjuk, amit az egyszerû felhasználók is, amikor beje- tásoktól függõen valahogy így fog kinézni  http://localhost/ lentkeznek a rendszerbe, kivéve persze, hogy nekünk van moodle/install.php. Sajnos itt rögtön fel is fedezhetjük egy adminisztrációs menünk, ahonnan tudjuk menedzselni a programban az elsõ hiányosságot, hiszen a bejelentkezõ a program mûködését. A szerkesztési módot a majdnem képernyõ, és szöveg angolul van, és bár a Moodle nagyon minden oldalon található „Szerkesztés bekapcsolása” gomb- sok nyelvre le lett fordítva a konfigurációhoz szükséges bal érhetjük el. Ebben a módban az oldal megjelenése jóval elsõ lépések csak angol nyelvûek. Itt kattintsunk tehát bonyolultabb, ekkor van lehetõségünk arra, hogy az oldal a YES linkre a folytatáshoz, ekkor a Moodle elkészíti kinézetét megváltoztassuk. a szükséges adatbázis táblákat, majd ha minden sikerült, Lehetõségünk van naptárat tenni az oldalra, az aktuálisan akkor az oldal alján található Continue-ra kattintva foly- az oldalon tartózkodó személyek nevét kiírni, megjeleníteni tathatjuk a program beállítást. A következõ oldalon a lang automatikusan az oldalon történt legfrissebb módosításo- legördülõ menübõl válasszuk ki a Magyar nyelvet, és ha kat. Akár magunk is helyezhetünk el folyamatosan az olda- nem tudunk angolul, akkor az oldal alján található Save lon hírek, amelyekbõl néhányat a Moodle mindig automati- Changes gombra kattintva a következõ oldal már magya- kusan megjelenít. Ezeket a kis dobozkákat a „Blocks” me- rul szól hozzánk. Az imént átugrott beállításokat pedig nüpontnál tudjuk hozzáadni a fõoldalhoz, ugyanakkor késõbb is el tudjuk végezni, amikor a Moodle már magya- nem csak elhelyezni tudjuk õket az oldalon, hanem az rul „szól hozzánk”. A konfiguráció további lépéseit követ- egyes blokkokban található nyilak segítségével meg is tud- ve könnyen észrevehetjük azt is, hogy a magyar fordítás juk mondani, hogy hol helyezkedjenek el. Ha egy blokk fe- még nem teljes, és bizony néhány mondat, félmondat an- leslegessé válik, akkor természetesen minden gond nélkül golul van. Remélem ez a felhasználók többsége számára törölhetjük is, amennyiben nem akarjuk törölni, hanem nem okoz gondot. Az eddig elkészült magyar fordítás csak szeretnénk, hogy a felhasználók ne láthassák az adott viszont az átlagos tanulók által használt felületen majd- blokkot, akkor arra is van lehetõségünk. nem teljes, nagyobb fordítási hiányosságok fõleg csak Miután a fõoldal beállításaival megismerkedtünk, most vá- a program adminisztrációs, konfigurációs részeinél ta- lasszunk az oldalunknak egy egyedi stílust (témát, bõrt), az pasztalhatóak. Végül megkérdezi tõlünk a Moodle, Adminisztráció/Beállítások/Stílus útvonalat végigjárva több, hogy mik legyenek az oldal fõbb beállításai. Ha ezeket mint 10 különféle színvilág közül választhatunk. Amennyi- is megtettük, akkor be kell állítanunk a Admin felhaszná- ben nem felel meg nekünk egyik sem, akkor Moodle könyv- ló tulajdonságait, ajánlatos az Admin felhasználó jelszavát táron belül a /themes alkönyvtárban találjuk az összes té- nagy körültekintéssel megválasztani. Az Admin felhasz- mát, ebbõl bármelyikbõl kiindulva némi CSS ismerettel sa- náló profiljának elmentése után a 2. képhez hasonló oldal ját témákat tudunk létrehozni. fog fogadni minket. Sajnos a témák gyártásánál számolnunk kell azzal, hogy vannak még hiányosságok, például a legtöbb linkhez nincs Alakítsuk ki saját fõoldalunkat stílus rendelve, így az alapértelmezett stílust használják, Ha már eddig a pontig eljutottunk, akkor innentõl már csak aminek következtében hiába szeretnénk, hogy a fejlécben a böngészõnkre lesz szükségünk ahhoz, hogy módosítsuk, más színû linkek legyenek, mint amilyenek az egyes tanfo- bõvítsük a tananyagokat, változtassuk az oldal kinézetét, lyamokra mutató linkek, ez jelen pillanatban nem megvaló- felhasználókat adjunk hozzá az oldalhoz, illetve biztonsági sítható (holott a fejlécnek szinte mindig más a háttere, mint mentéseket készítsünk az oldalról. Ahhoz, hogy az oldal a tanfolyamoknak). minden funkcióját tudjuk használni IE 5.5-ös vagy annál késõbbi verziójú böngészõre lesz szükségünk. Sajnos Tanfolyamok, tananyagok felvitele a programba beépített WYSIWYG szerkesztõ a készítõk sze- Ha már kialakítottuk, hogy hogyan fog kinézni az oldalunk, rint egyéb böngészõkkel nem használható, és saját tapaszta- akkor nekikezdhetünk a tartalom feltöltésének is. A Moodle lataim is ezt támasztják alá. Amikor Admin-ként vagyunk rendszerben a felvitt anyagok tanfolyam kategóriákba,

60 Linuxvilág Dobbantó

Az „add a resource” legördülõ menübõl lehetõségünk van HTML lapok, és nem formázott egyszerû szöveg felvitelére is. A szöveg felvitelét segíti a beágyazott szövegszerkesztõ, bár egy már elõre formázott szöveg felvitele során az oldal eléggé széteshet, például OpenOffice-ból történõ másolás következtében. Ezért azt ajánlom, hogy ha lehetséges, ak- kor a szöveg formázását csak a felvitel után végezzük el, a szöveget HTML szerkesztõvel készítsük el elõre, vagy pedig úgy szúrjuk be a html kódot, hogy elõtte átváltunk HTML módba, majd visszaválthatunk WYSIWYG módba, és ekkor már csak néhány kisebb módosítást kell elvégezni. Ha felvittük a tananyagot, akkor változás mentése gombbal elmenthetjük. A tananyagok nem csak egyszerû képekbõl és szövegbõl állhatnak, lehetõségünk van matematikai kép- 3. kép Új tanfolyam létrehozása letek korrekt megjelenítésére, Flash animációk beszúrására, vagy akár videó, és hang fájlok beszúrására is az tananyag- azon belül tanfolyamokba és a tanfolyamokon belül tan- ba. Ehhez csak aktiválnunk kell, hogy a Moodle az oldalon anyagokba szervezõdnek. Új tanfolyam kategóriát az elhelyezett tartalmat felismerje, és megfelelõen kezelje. © Kiskapu Kft. Minden jog fenntartva Adminisztráció/Tanfolyamok menüpontban tudunk hozzáad- Az aktiválást az Adminisztráció/Beállítások/Filters menü- ni a rendszerhez. Ne ijedjünk meg bár még nem vittünk fel pont alatt érjük el. A matematikai képletek beszúrásához tanfolyam kategóriát, mégis szerepel a tanfolyam kategóriák a TeX notation filter szükséges, a multimédia tartalmak között egy „Egyéb” amit sajnos nem tudunk törölni sem, de lejátszásához pedig a Multimedia plugin aktiválására van szerencsére ez a tanfolyam kategória a felhasználók számára szükség. A TeX notation gyakorlatilag a Latex egy egyszerû- nem látható. Adjuk tehát hozzá a tanfolyam kategóriáinkat, sített képlet megjelenítõje, mely a megadott Latex kódból ha esetleg más sorrendben szeretnénk, hogy legyenek, akkor képet generál, ezáltal akár bonyolult mátrixokat is lehetõsé- a sorrend megváltoztatását a tanfolyam kategóriák neve mel- günk van megjeleníteni az oldalon. A TeX notation-öket két letti le és fel nyilakkal könnyedén elvégezhetjük. dupla dollárjel közé kell zárni, hogy a Moodle értelmezze, A tanfolyam kategóriára kattintva lehetõségünk nyílik tanfo- én ajánlom a következõ alakot $$ \normalsize{ ide jön a kép- lyamokat adni az egyes kategóriákhoz. Most készítsünk egy let} $$ mert ellenkezõ esetben nekem nagyon nagy képle- új tanfolyamot, ekkor a 3. képen látható oldalt kell kitöltenünk. tek keletkeztek, persze mindez csak viszonyítás kérdése, A teljes név a fõoldalon megjelenõ neve lesz a tanfolyam- mindemellett nem árt ha a képletek méretét az egyéb karak- nak, a rövid név pedig az oldal fejlécében megjelenõ a na- terek mértéhez állítjuk Latex parancsok segítségével. A kap- vigációt segítõ link neve lesz. A tanfolyamnak három lehet- csolódó linkek között található egy TeX notation szerkesztõ, séges formátum van, az egyik a fórum formátum, amikor mely az elsõ lépéseken segíti át a felhasználót azzal, hogy a tanfolyam gyakorlatilag egy fórum lap, ahol új fórumokat könnyedén kipróbálhatjuk a beírt kód eredményét. Sajnos lehet nyitni, és a régebbiekhez hozzászólni. A második le- a Moodle nem teszi lehetõvé a tananyagokba a PHP kód be- hetõségünk a tematikus formátum, amikor a tananyagokat szúrását, ezzel ellentétben JavaScript beszúrása lehetséges. fejezetekre bontva tudjuk felvinni az oldalra, és minden fe- jezet elejére kisebb bevezetõt is el tudunk helyezni, a feje- Tesztkérdések felvitele zetek számát a „hetek/témák száma” legördülõ menübõl Talán a tananyagok mellett az egyik legtöbbet használt szol- tudjuk egyszerûen megtenni. Ha késõbb az oldalt át szeret- gáltatása a Moodle-nek a Quiz, avagy tesztsorok készítése. nénk szervezni, akkor lehetõségünk van az egyes fejezetek Lehetõségünk van ugyanis az egyes tananyagok után teszt- sorrendjének megváltoztatására, sõt tananyagokat is át tu- sorokat elhelyezni az oldalon, ezzel pedig le tudjuk mérni dunk vinni egyik fejezetbõl a másikba, ez hasznos lehet a tanulók tudását, illetve magunk is visszajelzést kapunk például, amikor bõvítjük az oldalunkat, és egy fejezetet ket- arról, hogy a feltett tananyag mennyire érthetõ, mennyire tõ, vagy több részre bontunk. A tanfolyam harmadik formá- sikerült rávezetni a tanulókat a tananyag lényegére. tuma lehetõvé teszi számunkra, hogy az iskolai, egyetemi A Moodle minden egyes kitöltött feladatsort eltárol, és az oktatás menetét követve hetekre bontva helyezzük el az arra jogosult személyek meg is nézhetik õket, illetve a tanu- oldalunkon a tananyagokat. lónak is lehetõsége van visszanézni saját kitöltött feladatso- rait, tehát az egyszer felvitt megoldások nem vesznek el. Tananyag tartalmának felvitele Most nézzük is meg gyorsan, hogy hogyan lehet tesztkér- Miután kialakítottuk az oldalunkon a tanfolyamok megfe- déseket készíteni. Elõször is nézzük meg, hogy milyen kér- lelõ struktúráját, elkezdhetjük a tananyagok felvitelét. déseket lehet készíteni a Moodle rendszer alatt:

www.linuxvilag.hu 2004. november 61 Dobbantó

3. kódrészlet 4. kódrészlet

Melyek az igaz állítások? { #!/bin/bash ~%-50%A bolha nagyobb az elefántnál #Annak a lemeznek/könyvtárnak a helye, ahova ~%50%A menyét nagyobb a bolhánál #szeretnénk elhelyezni a mentéseket ~%50%A tigris nagyobb a menyétnél BACKUP_PATH=/mnt/backup_disc; ~%-50%A rinocérosz kisebb a menyétnél #A Moodle fõkönyvtárának és az adatkönyvtárának } #a helye MOODLE=/var/www/html/moodle; MOODLE_DATA=/var/moodledata; #Az adatbázis hozzáféréshez szükséges #felhasználó név/jelszó DBUSER=moodleuser; DBPASS=password; #A menteni kívánt adatbázis neve 4. kép Lehetõségünk van a kitöltött kérdéssorokat bármikor visszanézni DBNAME=moodle; © Kiskapu Kft. Minden jog fenntartva #Ezekbe a fájlokba történik majd a mentés • igaz-hamis kérdések, BACKUPNAME_DB=backup.gz; BACKUPNAME_MOODLE=moodle_backup.tgz; • többszörös válasz, egy kérdésre a felsoroltak közül több BACKUPNAME_MOODLE_DATA=moodledata_backup.tgz; helyes válasz is lehet, a cél az összeset megtalálni, #Mai dátum a mentés nevéhez TODAY=`’date +%Y_%m_%d`; • párosítások, két halmazból kell megkeresni az összetar- tozó párokat ##A Moodle fájlainak elmentése és tömörítése tar czvf $BACKUP_PATH/$TODAY_$BACKUPNAME_MOODLE • rövid kérdések, egyszerû válaszokkal $MOODLE/*; ##A Moodle adatfájlainak elmentése és tömörítése Láthatjuk, hogy sokféle kérdés típus közül választhatunk, tar -czvf a kérdések formátuma sokféle lehet, ajánlom a GIFT formá- $BACKUP_PATH/$TODAY_$BACKUPNAME_MOODLE_DATA tumot. A kapcsolódó linkek között találhatjuk meg ennek $MOODLE_DATA/*; a kicsit részletesebb leírását, de adok egy példát is arra, ##Az adatbázis tartalmának elmentése és hogy hogyan készítsünk GIFT formátumú kérdéseket. ##tömörítése Nézzük is az egyik legnehezebb többszörös súlyozott válasz mysqldump -u$DBUSER -p$DBPASS $DBNAME | gzip - > készítését. A kérdést elõször szerkesszük meg egy szöveg- $BACKUP_PATH/$TODAY_$BACKUPNAME_DB fájlban, majd pedig töltsük fel az oldalunkra, szerintem ez egy kicsit egyszerûbb, mint a Moodle beágyazott szerkesz- tõje, illetve elõnye, hogy szerkesztése off-line, bármikor el- végezhetõ. Nézzük meg példaképpen a 3. kódrészletet, ahol sikerült importálni. Miután sikeresen importáltuk a kérdé- az elsõ válasz nyilván hibás, a második és a harmadik nyil- seinket, hozzáadhatjuk õket a megfelelõ kérdéssorhoz. ván helyes, a negyedik szintén hibás. A negatív százalékok- Majd mentsük el az elkészített kérdéssorunkat. Végezzük el kal kiküszöbölhetjük azt az esetet, amikor a tanulók mind- próbaképpen a kérdéssor kitöltését, majd a kitöltött kérdés- egyik választ megjelölik, hiszen ekkor a kérdésre adott vá- sort visszanézve láthatjuk (4. kép), hogy a melyik válaszokat lasz egyenértékû azzal, amikor a tanuló nem válaszol a kér- jelöltük meg, és melyek lettek volna a helyes válaszok. désre. Egyvalamire viszont figyeljünk, a Moodle hibával tér vissza, ha a kérdésre adott válaszok összértéke nagyobb, Biztonsági mentések mint 100%, tehát érdemes a hibás válaszokat negatív száza- A Moodle rendszer felkínálja arra a lehetõséget, hogy min- lékponttal „jutalmazni”. Miután elkészítettük a kérdésein- den egyes tanfolyamot külön paraméterekkel bizonyos idõ- ket válasszuk ki a kérdéses tanfolyamot, amelyikbe szeret- közönként elmentsünk. Azonban ezeket a fájlokat csak nénk felvinni, és a kérdéses fejezetnél válasszuk ki az Add a Moodle rendszeren keresztül tudjuk visszatölteni, például an activity legördülõ menübõl a Quiz menüpontot. Töltsük ha valamelyik arra jogosult felhasználó törölt egy tananya- ki a kérdéssor tulajdonságait, név, rövid bevezetõ, mikortól got, tanfolyamot akkor ez a mentés megfelelõ. Ugyanakkor elérhetõ, meddig elérhetõ, de kiválaszthatjuk azt is, hogy ha Moodle oldalunk már elég nagy, és sok kényes adatot a kérdések sorrendjét mindig változtassa, illetve, hogy tartalmaz, akkor célszerû az egész adatbázist és a hozzá- a kérdésen belül a válaszok sorrendjét is változtassa tartozó fájlokat egy-egy tar.gz fájlba elmenteni. Ehhez jó a Moodle. A folytatás gombra kattintás után válasszuk ki elindulás lehet a 4. kódrészlet, amelyet mondjuk cron-ból a kérdés kategóriáját, majd megjelenik 3 gomb, válasszuk meghívva minden nap elkészíti a biztonsági mentést a tel- az importálást, adjuk meg, hogy GIFT formátumú kérdése- jes oldalról, a fájlok neve elé a szkript az aktuális dátumot ket fogunk feltölteni, majd töltsük fel a kérdéseinket, sike- beszúrja, ezért bármikor könnyedén visszaállíthatjuk az res feltöltés esetén a Moodle visszajelzi, hogy hány kérdést oldalt pontosan arra a napra, amelyikre szeretnénk.

62 Linuxvilág Dobbantó  Összegzés Sajnos a rendelkezésre álló hely nem elég arra, hogy rész- KAPCSOLÓDÓ CÍMEK letekbe menõen bemutassam a Moodle rendszer képessé- geit, nagyon sok képességérõl a Moodle-nek még csak A Moodle honlapja:  http://www.moodle.org említést sem tettem (pl. scrom, wiki) melyek tovább segí- tik a munkánkat az e-learning rendszerek létrehozása so- rán. Ellenben egy olyan cikket szerettem volna írni, amely Néhány magyarországi Moodle weboldal: egyáltalán bemutatja, hogy mi is a Moodle, hogyan tu-  http://www.biztostu.hu dunk magunknak akár otthon is, a fenti lépéseket követ- ve, összeállítani egy e-learning keretrendszert, hogyan  http://edutech.elte.hu/moktato/ lépjünk át az elsõ nehézségeken, amik a telepítése során várnak ránk.  http://www.ollejanos.hu/moodle/ Remélem, hogy amikor itthon is felismerik az e-learning rendszerek fontosságát, akkor a Moodle felhasználók Magyarországi Moodle felhasználók fóruma: száma ugrásszerûen fog emelkedni, hiszen ideális non-  http://edutech.elte.hu/moktato/course/view.php?id=21 profit szervezetek, iskolák, fõiskolák, egyetemek számá- ra ahol a program ingyenessége, továbbfejleszthetõsé-

Angliai Moodle oktatóportál integrált felolvasóprog- © Kiskapu Kft. Minden jog fenntartva ge nagy elõny, de profitorientált oktatási portál is létre- rammal vakok számára: hozható, hiszen az 1.4-es verzióban már benne van  http://kconline.kilmarnock.ac.uk/moodle/ a Pay-Pal modul, mely segítségével akár pénzt is kér- hetünk a távoktatásért. TeX Notation szerkesztõ:  http://www.matheboard.de/formeleditor.php Horváth Ernõ ([email protected]). 23 éves, jelenleg a BME-VIK utolsó éves hallga- Segítség a GIFT formátumú kérdések szerkesztéséhez: tója. Két évvel ezelõtt ismerkedett meg komo-  http://learn.uci.edu/cms/help.php?module=quiz&file lyabban a Linux rendszerekkel és emellett ér- =formatgift.html deklõdik még a robotika és a biztonság technika iránt is. Ha lenne szabadideje sokat kirándulna, és filmeket nézne.

www.linuxvilag.hu 2004. november 63 Dobbantó

Hálózatok (11. rész) Kettes exponenciális visszalépéses algoritmus, kapcsolók, egyéb szabványok Legutóbb az Ethernet szabvánnyal foglalkoztam, de adós maradtam néhány do- loggal. Ebben a cikkben egyrészt ezeket pótolom, másrészt egy újabb, izgalmas

© Kiskapu Kft. Minden jog fenntartva területre vezetem be az olvasót: a kapcsolók világába.

egutóbb az Ethernettel, illetve az IEEE 802.3-as elne- vezésû szabvánnyal foglalkoztunk. Amikor egyszer- re több állomás osztozik egy csatornán, akkor a leg- Lfontosabb megoldandó probléma a keretek ütközésének elkerülése. Meg kell akadályozni, hogy egyszerre két állo- más próbáljon adni. Az elõzõ két részben erre több megol- dást is láthattunk, amelyek közül a gyakorlatban az egyik leghatékonyabbnak a CSMA/CD bizonyult. Segítségével az állomások nem csak a csatornán lévõ forgalmat képesek érzékelni (azaz meg tudják állapítani, hogy az adott pilla- natban éppen beszél-e valaki), hanem a keretütközést is (vagyis azt, ha egyszerre két állomás forgalmaz). Ha az utóbbi két eset közül valamelyik fennáll, akkor az állomás véletlenszerû ideig várakozik, majd ismét megpróbálkozik a keret elküldésével. Adós maradtam azzal, hogy miként is érdemes meghatároz- ni azt a véletlenszerû értéket, amennyit az állomásoknak várakozniuk kell. Vessünk egy pillantást az 1. ábrára, amely már az elõzõ részben is szerepelt. Ezen egy keretütközést örökítettünk meg, ahol az A állomás a t0, a C pedig a t1 idõ- pillanatban kezdi meg egy keret adását. A csatornán a kere- tek a t3 idõpontban „találkoznak”. Könnyen beláthatjuk, hogy a keret forgalmazásának elkezdése és az ütközés pilla- nata között t3 – t1 idõ telt el. Az A csak akkor érzékeli az üt- közést, mikor az ütközés helyétõl visszaérkezik hozzá a jel, amely dupla ennyi idõt vesz igénybe. Ha ezeket összead- 1. ábra juk, megkapjuk, hogy az adás megkezdése és az ütközés ér- Keretütközés zékelése között 2 * (t3 – t1) idõ telt el. A t3 – t1 értéke az üt- közés helyétõl függ, de mivel a 802.3 szabványban meg van bekövetkezhet egy újabb ütközés (mivel nagyobb az esélye határozva a hálózat maximális mérete, ezért kiszámolhat- annak, hogy a konkurens állomás is ugyanazt az értéket vá- juk, hogy mekkora lehet a t3 – t1 legnagyobb lehetséges ér- lasztotta). Ha csak 0 és 1 lenne a lehetséges választás, akkor téke. Ez pontosan 51,2 µs. Érdemes tehát az ütközés pilla- mondjuk 50 egyszerre forgalmazni kívánó állomás közül nata után az idõt diszkrét egységekre felbontani, és ezt az csak akkor adhatna valaki, ha 49-en egyszerre választották értéket megválasztani idõrésnek. A véletlenszám-generátor a 0-t, és csak õ egyedül az 1-et (vagy fordítva). Nem sokan csak azt döntse el, hogy hány ilyen idõrésnyit várakozzunk. szeretnének egy olyan hálózatban dolgozni, ahol akár hó- Az igazi kérdés az, hogy mekkora legyen az az intervallum, napokat is várni kellene egy-egy keret elküldésére. amelybõl véletlenszerûen kiválaszthatunk egy értéket. Az intervallum növelésével azonban az ütközések valószí- Ha ez az intervallum kicsi, akkor nagy valószínûséggel nûsége csökkenthetõ. Ha például az állomások 0 és 1023

64 Linuxvilág Dobbantó

ütközések hatására az intervallum méretét exponenciálisan növeljük. Ezzel biztosítjuk, hogy egyrészt nagyszámú vetél- kedõ állomás esetén se kelljen sokáig várnunk a forgalma- zásra, másrészt fordított helyzetben (kevés állomás esetén) sem kell számolnunk nagy késleltetéssel.

Kapcsolt LAN-ok Ahogy nõ a hálózatba kapcsolt állomások száma, a csatorna telítõdni fog. Ebben az esetben meg kell fontolnunk, hogy beszerzünk egy úgynevezett kapcsoló vagy switch nevû mágikus dobozt (4. ábra). 2. ábra Míg a hub-ok csak arra voltak képesek, hogy a beérkezõ Az intervallum mérete minden ütközés alkalmával jelet az összes kimenetre elküldjék, addig a kapcsolók exponenciális ütemben változik már képesek betekinteni a keretek tartalmába. Ennek kö- szönhetõen az egyik porton beérkezõ keretet nem küldik tovább az összes többire, csak arra, amelyikre a célpont is csatlakozik. A kapcsoló lelke egy belsõ áramkör, amelyre úgyneve- © Kiskapu Kft. Minden jog fenntartva zett vonali kártyák csatlakoznak, amelynek száma 4 – 32 között változhat. Egy-egy kártyán 1-8 csatlakozó található. Ezektõl a csatlakozóktól rendszerint csavart érpár vezet az állomásokhoz. Nézzük, hogyan is zajlik a kommunikáció a kapcsoló segítségével. Tegyük fel, hogy beérkezik egy keret az egyik portra. Ekkor a vonali kártya belenéz a keretbe, hogy vajon ki a címzett. Szerencsés esetben a címzett is ugyanarra a vonali kártyára van kapcsolva, így egyszerû- en a keretet csak a megfelelõ portra kell másolni. 3. ábra A kapcsolók csak annyit követelnek meg, hogy Ha a címzett egy másik kártyán van, akkor elõtte át kell szabványos keretek érkezzenek a bemeneteire. Így akár egy hub-ot oda vinni. Ezt a kapcsoló hátlapján lévõ átviteli panel végzi, is ráköthetünk, és akár több LAN-t is összeköthetünk a segítéségükkel. amely körülbelül 1 Gb/s-os sebességgel dolgozik, és egy Ilyenkor a kapcsolót hídnak nevezzük. belsõ protokollt használ. A hálózat állomásainak nem kell foglalkozniuk azzal, hogy melyik állomás melyik vonali közötti idõrésnyi idõt várakozhatnak, akkor a lottót is meg- kártyára kapcsolódik. szégyenítõ eséllyel fordulhatna csak elõ egy újboli keretüt- Érdekes kérdés, hogy mi történik akkor, amikor két vagy közés. Itt más probléma merül fel: túl nagy a késleltetés. több, ugyanarra a vonali kártyára kapcsolódó állomás egy- Szerencsétlen esetben egy állomásnak 1023 idõrésnyi idõt szerre kezd forgalmazni. A megoldás ilyenkor a vonali kár- kéne végigunatkoznia, mikor már 1 idõrés elteltével vígan tyák kialakításától függ. Az elsõ megközelítés az, hogy forgalmazhatna. Még átlagos esetben is több száz idõrés a kártyán kialakított portok egymással össze vannak kötve, a késleltetés, ami nagyon nagy hatékonyságbeli romlás. így egy közös csatorna alakul ki az ugyanahhoz a kártyá- Kell tehát egy olyan algoritmus a várakozás idõtartamának hoz csatlakozó állomások között. Ez azt jelenti, hogy egy meghatározására, amely kis valószínûséggel okoz keretüt- adott kártyához kapcsolódó állomások közül mindig csak közéseket, mégsem nõ szakállunk, amíg a keret elküldésére az egyik adhat, különben ütközés lép fel, ugyanakkor várunk. Ilyen módszer például a kettes exponenciális vissza- a kapcsolóban lévõ többi vonali kártya egymástól függetle- lépés (binary exponential backoff). A mûködése a következõ: nül mûködhet. Ezt úgy szokás mondani, hogy minden kár- az állomás elõször 0 vagy 1 idõrésnyit vár, majd ismét meg- tya saját ütköztetési tartománnyal rendelkezik. próbálkozik az adással. Ha mindkét vetélkedõ állomás A másik (valamivel drágább) megközelítés, hogy nem csak ugyanazt az értéket választja (amelynek a valószínûsége a kártyák, hanem a portok is függetlenek egymástól. Min- 0,5), akkor ismét sorsolnak, de most már 0 és 3 közötti érté- den port rendelkezik egy saját pufferrel, ahova a beérkezõ kek közül. Ekkor az ütközés valószínûsége már csak 0,25. keretek kerülnek. Ezután a kapcsoló belsõ programja (mert Ha azonban még sincs szerencsénk, akkor a választás 0 és 7 ilyen is van neki) dönti el, hogy melyik keretet mikor és ho- közül történik. Láthatjuk, hogy minden ütközés után a sor- va továbbítja. Láthatjuk, hogy itt már a portok is külön üt- solandó értékek száma exponenciálisan nõ. Az i-edik ütkö- köztetési tartománnyal rendelkeznek. Ha minden porthoz zés után 0 és 2^i - 1 közötti idõrésnyi idõt kell várakozni. csak egy állomás csatlakozik, akkor a hálózaton ismeretlen Fontos azonban, hogy ez az érték nem nõ 1023 fölé és a 16. lesz a keretütközés fogalma, és ezáltal nagyságrendekkel ütközés után a hálózati kártya vezérlõje általában hibajel- gyorsabb átvitelt érhetünk el, mint például egy koaxiális zést küld, mivel valószínûsíthetõ, hogy valami probléma kábelt használó 10Base2 hálózaton. van a hálózattal (2. ábra). Fontos megjegyeznünk, hogy a portokra nem csak egy Ennek az algoritmusnak az az elõnye, hogy tekintettel van állomást csatlakoztathatunk, hanem például egy hubot is, a konkurens állomások számára. Ezt azzal érjük el, hogy az amely több állomást köt össze. Ilyenkor azonban már a kap-

www.linuxvilag.hu 2004. november 65 Dobbantó

csolót két ugyanolyan szabványú (802.3) hálózatot összekö- tõ hídnak is nevezhetjük (3. ábra). A hidakkal még ebben a részben részletesen is foglalkozunk. Az olvasó most valószínûleg arra gondol, hogy a kapcso- ló nem csak valami felfejlesztett hub, hanem valójában egy számítógép. És valóban! A kapcsolónak van processzora, memóriája, perifériája (például a portok), sõt még operációs rendszere is. Alaptalan tehát az a nép- szerû feltételezés, hogy a kapcsoló valójában egy hub, csak sokkal gyorsabb. Igazából semmi közük egymáshoz. Míg a hub csak a beérkezõ jeleket ismétli minden irányban, addig a kapcsoló a beérkezõ kereteket, és csak arrafelé, amerre a keret címzettje van. Hogy egy kapcsoló valóban hatékonyan mûködjön, szük- ség van egy fejlett belsõ szoftverre. Hogy ez a szoftver mi- ként is végezze a feladatát (a keretek továbbítását), az nem egy egyszerû kérdés. Vannak kapcsolók, amelyek például

© Kiskapu Kft. Minden jog fenntartva 4. ábra a keretnek csak az elsõ 16 bájtják olvassák be, amelybõl Egy kapcsoló belülrõl... már kiderül, hogy ki is a címzett. Amint kinyerték ezt az információt, egybõl továbbítják is a megfelelõ portra. Más- ció lehallgatása (sniffelés) ellen. Késõbb látni fogjuk, hogy fajta megközelítés a tárolás és továbbküldés (store and ez mennyire nem igaz. Léteznek olyan technikák, amellyel forward) módszer, amely az egész keretet beolvassa, és el- átejthetjük a kapcsolót, és elhitethetjük vele, hogy mi nem lenõrzi annak sértetlenségét. Ez ugyan erõforrás igényes azok vagyunk, akik. Egy kis ügyeskedéssel rávehetjük, feladat, viszont elõre kirostálhatóak a hibás keretek, így hogy a másnak szóló üzeneteket nekünk továbbítsa. Ezek ezzel is csökken a hálózat terheltsége. Ilyenkor azonban a technikák az úgynevezett ARP Cache Poisoning nevû eljá- a kapcsolónak meg kell kérnie az adót, hogy ismételje ráson alapulnak, amely nem jelent mást, mint hogy kilé- meg az eldobott keretet. tünkrõl össze-vissza hazudunk mindenkinek. Annyit elöljá- A kapcsolók a hálózatok gerincét képezik, ezért a szoft- róban elárulunk, hogy az ARP egy olyan protokoll, amely vernek illik másról is gondoskodnia. Például arról, hogy segít az adatkapcsolati rétegnek megtudni, hogy melyik gonosz emberek ne terhelhessék túl (flood) a hálózatot. MAC cím felel meg a kérdéses IP címnek (mivel az adatkap- A legegyszerûbb ilyen eljárás az üzenetszórási vihar csolati réteg nem tudja az IP cím segítségével azonosítani (broadcast storm). Ilyenkor a támadó rövid idõ alatt renge- az állomásokat). Mivel az ARP nem követel meg semmiféle teg üzenetszórási (broadcast) csomagot indít útnak. Mivel hitelesítést, ezért nem lehet ellenõrizni, hogy mindenki ezek mindenkihez szólnak, a kapcsoló egy ilyen kerettel becsületesen válaszolt-e. Ezt használják ki a Men in the szemben úgy viselkedik, mintha egy közönséges hub len- Middle elnevezésû támadásoknál is. Késõbb, az IP protokoll ne, vagyis minden portján továbbítja azt. Ezért a jobb kap- ismertetése után egy teljes részen keresztül foglalkozunk csolókban megtalálható a Broadcast Storm Control nevû majd a támadásokkal, és azok ellenszereivel. szolgáltatás, amely minden porton egy idõegység alatt csak meghatározott százalékban enged át ilyen jellegû Más szabványos LAN-ok üzeneteket. (Sajnos ez a védelem is kijátszható úgy, hogy Eddig a 802.3, illetve az Ethernet nevû szabvánnyal foglal- broadcast üzenetek helyett olyan rendes kereteket kül- koztunk. Ez a világ legelterjedtebben használt hálózattípusa. dünk, amelyek egy nem létezõ géphez szólnak és ezt a cél Méltán tett szert erre a népszerûségre, ugyanis itt az állomá- címet folyamatosan változtatjuk). sokat kedvünkre csatlakoztathatjuk, illetve távolíthatunk el Persze a kapcsolónak nemcsak a hálózatot, hanem saját ma- anélkül, hogy le kéne állítanunk a hálózatot. Másik szimpa- gát is védenie kell. Mivel ez is egy számítógép, ezért betel- tikus tulajdonsága, hogy ha nincs leterhelve a hálózat, akkor het a memóriája, túlterhelõdhet a processzora, stb., tehát a keretek küldésének késleltetése nem számottevõ. a támadónak maga a kapcsoló is ideális célpontja lehet. Az éremnek azonban két oldallal van, így az Ethernet is A processzort leterhelni például sok keret rövid idõ alatt rendelkezik hátrányokkal. Az elsõ, hogy az alapvetõ kom- történõ elküldésével lehet. A jobbfajta szoftverek ilyenkor ponensek analógok. Fel kell fedeznünk a keretütközéseket, szólnak a forgalmazó hardvernek, hogy lassabban küldjön. ezért nem küldhetünk 64 bájtnál kisebb keretet, hiába aka- Ez megfelelõ védelem, mivel csak nagyon régi hardverek- runk csak 1-1 bájtot átküldeni (például terminálok esetén). kel lehetne kikerülni, amelyek még régebbi szabvány sze- A legnagyobb hiányosság mégis az, hogy az Ethernet háló- rint készültek, ahol nem volt lehetõség a forgalom szabá- zatok nem determinisztikusak. Ez azt jelenti, hogy gyakran lyozására. Persze vannak olyan kapcsolók is, amelyek egy- csak a szerencsén múlik, ki mikor forgalmazhat. A dolgok szerûen csak lefagynak, esetleg eldobnak minden feldol- például úgy is alakulhatnak, hogy egy állomás egész gozhatatlan csomagot, vagy feladják, és úgy kezdenek mû- hosszú ideig nem képes a keretét útnak indítani. Ilyen vi- ködni, mint egy közönséges hub. szonyok között szinte lehetetlen bármiféle valós idejû fel- Ha már szóba került a kapcsolt hálózatok biztonsága, érde- adatot elvégezni. mes eloszlatnunk még egy félreértést, mely szerint a kap- Speciális esetekben – például egy gyártósor automatizálása- csoló teljes védelmet nyújt a hálózaton folyó kommuniká- kor – az Ethernet hálózat tehát nem jelenthet megoldást.

66 Linuxvilág Dobbantó

Meg kell említenünk, hogy természetesen olyan hálóza- tok is léteznek, amelyek fizikailag is gyûrûhálózatok. Ezek közül a legjelentõsebb az 1970-es években, az IBM által kifejlesztett vezérlõjeles gyûrû (token ring). Valójában ez sokkal szélesebb körben elterjedt LAN, mint az elõzõ, az Ethernet után a második legnépszerûbb. Az IEEE is felvette saját szabványai közé, és a 802.5 „kódnevet” ragasztotta rá. Mit is mondhatunk el általánosan ezekrõl a hálózatokról? Az állomások értelemszerûen egy gyûrûre vannak felfûzve, 5. ábra A vezérlõjeles sín hálózat egymással kétpontos csatornával vannak összekötve. A há- lózat szemszögébõl a csatorna típusa lényegtelen, lehet akár Ezért született meg egy másik, az Ethernettel megegyezõ optikai vagy csavart érpár is. Amikor egy állomás keretet technológiát használó, ám azzal egyáltalán nem kompati- küld, az az egész gyûrûn körbehalad. Mivel a jelek gyorsan bilis szabvány, a 802.4, vagy más néven a vezérlõjeles sín terjednek, ezért a keret eleje hamarabb visszaérkezik a fel- (bus token). adóhoz, mint ahogy õ befejezné annak küldését. A célállo- A legfontosabb eltérés a 802.3 és a 802.4 között, hogy az más a keret utolsó két bitjét változtatja meg: az egyiket ak- utóbbiban kiszámolható egy legrosszabb esetbeli viselkedés. kor, amikor szembesült azzal, hogy a kérdéses keretet neki © Kiskapu Kft. Minden jog fenntartva Az Ethernet esetében nincs felsõ korlátja annak, hogy egy küldték, a másodikat pedig akkor, amikor sikeresen vette is állomás mikor küldheti el a keretét. Elvileg az is megtörtén- azt. Amint a keret vége visszaért a feladóhoz, az értesülhet het, hogy soha sem kerül erre sor. Egy gyûrû topológia ese- arról, hogy üzenete sikeresen célba ért-e. Ha igen, akkor tében már kiszámolható egy legrosszabb érték. Ha N darab leveheti a keretet a gyûrûrõl. állomás van, és egy keret elküldéséhez T idõ szükséges, ak- Az állomások itt is csak a megfelelõ sorrendben adhatnak, kor minden állomás legfeljebb N * T idõ múlva útnak indít- és errõl is a vezérlõjel gondoskodik, amely egy speciális ke- hatja keretét. ret. Minden állomás csak egy meghatározott ideig birtokol- A gyûrû alakú topológiával azonban rengeteg baj van. hatja a tokent, utána kötelezõen tovább kell adnia. Persze Egyrészt, ha valahol megsérül, az kihat az egész hálózatra. ha éppen nincs mit küldenie, akkor a vezérjelet elõbb is át- Másrészt, amikor egy gyártósort elképzelünk, valahogy adhatja. Lehetõség van arra is, hogy az állomások között nem a kör alak jut az embernek eszébe. Ésszerû ötlet volt egyfajta prioritási sorrendet állítsunk fel. Ennek a legegy- tehát, hogy a 802.4 fizikailag egy Ethernet hálózatra emlé- szerûbb módja az, hogy bizonyos állomásoknak megenged- keztessen, viszont logikailag egy gyûrût alkosson. Így meg- jük a token hosszabb ideig történõ megtartását. maradt a legrosszabb eset, azaz, hogy N * T idõ alatt min- Amikor nincs forgalom, akkor elég unalmas az élet a gyû- den állomás biztosan el tudja küldeni az üzenetét. rûhálózatokban: csak a vezérlõjel szaladgál körbe-körbe. A könnyebb megértés végett vessünk egy pillantást az Ha azonban nagy a terhelés, minden állomásnál már 5. ábrára. A vezérjeles sín egy koaxiális kábel, amelyre az sorban állnak az elküldésre váró keretek, akkor amint el- Ethernet hálózatok jól ismert módján kapcsolódnak az állo- engedi valaki a vezérlõ jelet, a következõ állomás máris mások. Ez a hálózat fizikai elrendezése. Logikailag azonban lecsap rá. Ily formán a hálózat kihasználtsága közel van egy gyûrût alkotnak: minden gép ismeri a közvetlen jobb, a 100%-hoz. illetve baloldali szomszédjának MAC címét. Amikor a kom- Persze az élet nem ilyen egyszerû. A legnagyobb prob- munikáció elindul, akkor elõször a gyûrûben lévõ elsõ gép lémát egy-egy állomás meghibásodása jelentheti, amely küldhet. Miután elküldte a keretet, egy vezérlõjelet, úgyne- kihathat az egész hálózat mûködésére. A problémát meg- vezett tokent küld a szomszédjának. A hálózatban mindig oldhatjuk az úgynevezett huzalközpont segítségével. csak az küldhet, akinél éppen a vezérlõjel van. Ennek kö- Ilyenkor a fizikai gyûrû megvalósítás helyett az állomá- szönhetõen nem léphet fel keretütközés. A vezérlõjel körbe- sokat két csavart érpár segítségével a huzalközponthoz jár az egész gyûrû mentén. kapcsoljuk. Az egyik kábelen az állomásoktól érkezõ Fontos, hogy a gépek gyûrûbeli sorrendje teljesen független adatok haladnak, a másikon pedig azok, amiket mi kül- a fizikai elhelyezkedéstõl. Itt is adatszórásos közeget hasz- dünk feléjük. Amikor meghibásodás történik, a központ nálunk a kommunikációra, tehát az üzenet mindenkihez el rövidre zárja a két kábelt, így a hálózat továbbra is mû- fog jutni. A vezérlõjel pedig nem más, mint egy olyan keret, ködõképes marad. amelyet az adott állomás a gyûrûbeli közvetlen szomszédjá- Ezt általában úgy szokás megoldani, hogy a reléket, ame- nak címez. Erre értelemszerûen csak a címzett fog figyelni. lyek a rövidre zárásért felelnek, az állomások árammal lát- Az állomásokat ezért nem érdekli, hogy fizikailag ki hol he- ják el. Amikor egy állomás meghibásodik, illetve a gyûrû lyezkedik el. Sõt, lehet olyan állomásunk is, amely nem ré- megszakad, akkor a relé nem kap több áramot, és ennek kö- szese a logikai gyûrûnek. Ilyenek például a hálózatra fris- vetkeztében zár. Lehetõség kínálkozik arra is, hogy ezeket sen felkapcsolt állomások. Ezek nem kerülnek bele automa- a reléket szoftveresen vezéreljük. tikusan a gyûrûbe. A logikai gyûrû karbantartása (például A következõ részben a hidakkal folytatjuk, amelyek segítsé- állomások felvétele, kitörlése, illetve a sorrend meghatáro- gével különbözõ típusú LAN-okat kapcsolhatunk össze. zása) a hálózat közegelérési (MAC) protokolljának feladata. Ez egy rendkívül összetett protokoll, részletes ismertetése Garzó András meghaladná e sorozat kereteit. [email protected]

www.linuxvilag.hu 2004. november 67 Fogadó a Linuxhoz

Biztonsági játszmák Miután megküzdöttünk a hagyományos operációs rendszerek miatt a hálózatunkat elözönlõ férgekkel és vírusokkal, kellemesen lazíthatunk egy kis játékkal.

© Kiskapu Kft. Minden jog fenntartva iváló, kedves François, úgy látom, nálad máris mûködésbe léptek azok a vírusok. Sose bízd el magad, barátom. Néhány pillanat, és a csorda Kmáris kiüríti a receptes könyvtáradat. Tüzelj, François, tüzelj! Tudom, úgy tûnik, sosem fogynak el, de ki mond- ta, hogy a jó rendszerbiztonság azt jelenti, hogy hátradõl- hetsz, és nyugodtan nézelõdhetsz? Ez háború, François, ezek a dögök egyetlen perc nyugalmat nem fognak hagy- ni neked! Figyelj…! Jobbra, rajta! Áhh, túl késõ. Szép pró- bálkozás, de most én jövök. Hogy mit gondolok? A vendégeink bármelyik pillanatban megérkezhetnek. Készítsd elõ az asztalokat, és ellenõrizd, hogy a számítógépek is készen állnak-e. Munkára, François! Már itt is vannak. Üdvözöl benneteket, mes amis, a Chez Marcel, a finom étkek, a jó borok és a Linux háza. Foglalja- tok helyet, helyezzétek magatok kényelembe. Van néhány érdekes programunk, szeretnénk megmutatni és kipróbálni õket… François, indíts a pincébe! A déli szárnyban találsz egy láda 1992-es olasz Toscana Vin Santot. Hozd fel a ven- dégeknek, azonnal! Talán már sejtitek, mes amis, ebben a hónapban a biz- tonságra összpontosítunk. Mindannyian tudjuk, hogy a Linux tervezésénél és természeténél fogva messze biztonságosabb, mint a megszokott asztali operációs 1. ábra XBill: Vajon meg tudjuk állítani Billt? rendszerek. Nyilván tudjátok, hogy elsõsorban melyik- re gondolok. A különbség szembeszökõ, ha láttátok már, ne adj’ isten használtátok is. Figyelembe véve an- nyát – megpróbál vírust tölteni az amúgy egészséges számí- nak a másik operációs rendszernek a biztonsági problé- tógépekre. Az egész játéktéren a gonosz klónjai tûnnek fel, máit (valamint a mögötte álló terjeszkedjünk, fojtsuk és ellopják az operációs rendszereket. (Lásd az 1. ábrát.) meg és foglaljuk el szemléletet), nem meglepõ, hogy Csak úgy akadályozhatjuk meg õket ebben, hogy rájuk kat- a té ma számos játékban is megjelenik. Mai menünk ilyen tintunk az egérrel. Gyors kézre lesz szükségünk! fogásokból áll – nevezhetjük õket a rendszerbiztonság Egyszer régen létezett egy roppant népszerû, Defender ne- könnyedebb oldalának. vû játék, amelynek idõvel jó néhány utánzata – vagy tiszte- Mai kínálatunk elsõ játékát a Chez Marcelben már felszol- lõje, szemlélet kérdése – jelent meg. Az egyik ilyen Bill gáltuk egyszer, mégis érdemes újra megemlíteni. Brian Kendrick Defendguin programja, amelyben a hõsi Tux go- Wellington és Matias Duarte XBill nevû programjáról van nosz földönkívüliek ellen harcol, akik egy békés, pingvinek- szó. Azt hiszem, kiváló kezdõ fogás lesz mára. Az XBill so- kel benépesült bolygót lakóit le akarják igázni, és szörnyû kak számítógépére már eleve telepítve van. Indításához pingvinoidokká akarják változtatni. Ezek a földönkívüliek, csupán az xbill parancsot kell kiadni. Ha nincs telepítve, akik amúgy nagyon hasonlítanak az XBill Billjére, a közös- nézzük át terjesztésünk CD-lemezét, esetleg töltsük le. ség tagjait repülõ gyilkológépekké alakítják. Ha egy pingvin Alapötlete roppant egyszerû. Feladatunk a világ számítógé- egyszer átalakult pingvinoiddá, akkor számára többé nincs pes hálózatainak megmentése a gonosz, Bill nevû vírusíró- remény, le kell lõni. Még jobb, ha a betolakodókat pusztít- tól, aki – okos módon operációs rendszernek álcázva iromá- juk el, értük pont is több jár (2. ábra).

68 Linuxvilág Fogadó a Linuxhoz © Kiskapu Kft. Minden jog fenntartva

2. ábra Marcel újabb hajót veszít 3. ábra Virus Killer alatt minden vírust el kell pusztítanunk, el Defendguinezés közben mielõtt megsemmisítenék a fájljainkat

A Defendguin oldalon számos terjesztéshez találunk elõfor- Ha játszani szeretnénk, a viruskiller parancsot kell kiad- dított binárisokat, valamint a forráskódot is letölthetjük. nunk. A program kezdõkönyvtárunk tartalma alapján létre- A Defendguin lefordításához szükség van az SDL fejlesztõi hoz egy fájl- és könyvtárlistát, a játék során ezek lesznek könyvtárakra. Ha a forrás mellett döntünk, akkor sem kell a vírusok célpontjai. Feladatunk az, hogy kilõjük az apró semmi bonyolultra számítanunk, csak ki kell bontanunk szörnyeket, mielõtt bármi kárt tehetnének. Fontos, és a csomagot, majd ki kell adnunk a make és a sudo make a weboldalon lévõ GYK is kiemeli, hogy a program semmi- install parancsot. ben nem tesz semmilyen kárt, hiszen csak egy játék. Ha A játék indításához a defendguin parancsot kell kiadni nem bírjuk annak látványát, hogy pici zöld szörnyecskék – elõtte fárasztó, pörgõs menetre készüljünk fel. Ha tel- elvonszolják magukkal a sok órai munkánkat képviselõ do- jes képernyõs módban akarunk küzdeni, használjuk kumentumokat, akkor a következõ paranccsal indítsuk a -f kapcsolót. a programot: A legtöbb korszerû, azt a bizonyos másik operációs rendszert használó irodában soha véget nem érõ har- viruskiller +safemode cot vívnak a vírusok ellen. Az összes könyvtár és fájl biztonságban tartása a veszélyes betolakodóktól bizony Ilyenkor a fájl- és könyvtárlista a rendszer /tmp könyvtá- kevéssé tûnik játéknak azoknak, akik ezt a harcot min- rának tartalma alapján jön létre, és nem fogunk éjjel felri- den egyes nap kénytelenek felvenni. Ha egy pillanatra adni attól, hogy a zöld dögök fontos dokumentumokat megállunk, azonnal rájövünk, hogy mindez nagyszerû hurcolnak el. alapötlet egy játékhoz – így gondolta ezt Stephen Mai kínálatunk utolsó fogása a Freedroid RPG. Sweeney, a Virus Killer készítõje is. A háttértörténet A Johannes Prix és Reinhard Prix gondozásában készü- annyi, hogy vírusok támadnak azokon a biztonsági rése- lõ Freedroid RPG tetszetõs, 3D-s szerepjáték kiváló gra- ken keresztül, amelyek ennek a másik operációs rend- fikával, nagyszerû zenével és hanghatásokkal, jól felépí- szernek a natív alkalmazásaiban találhatók. Fájljaink ve- tett képzeletbeli világgal. A háttértörténet: valamikor szélyben forognak, és mi vagyunk az egyetlenek, akik a nem túl közeli jövõben egy hatalmas, Megasoft nevû útját állhatják a rombolásnak. vállalat gyakorlatilag átvette az uralmat a galaxis felett. A Virus Killert a program weboldaláról, bináris és forrás A vállalat ezt azzal érte el, hogy erejét kihasználva RPM-ek formájában tölthetjük le (lásd a forrásokat). a bolygó minden számítógépes eszközére trójai víru- A Virus Killer szintén SDL alapú, lefordításához szüksé- sokat telepített, még a kormányzati és a rendõrségi günk lesz az SDL_image, az SDL_mixer és az SDL_ttf fej- gépekre is. Az emberiség ezzel rabszolgává vált. Egy lesztõi könyvtárakra. Ellenõrizzük, hogy gépünkön szörnyû programozási hiba folytán aztán a gépek fel- a zziplib és a hozzá tartozó fejlesztõi könyvtárak is megta- lázadtak és átvették az uralmat, így a dolgok még lálhatók-e. Ha minden könyvtár a helyére került, a telepí- rosszabbra fordultak. tés már gyerekjáték: Az emberiség egyetlen reménye Tux egyfajta robot változata. Csúcstechnológiájú páncélzattal, õsi mágiá- tar -xzvf viruskiller-0.9-1.tar.gz val és lézerkarddal felszerelkezett hõsünk készen áll cd viruskiller-0.9-1 a gépekkel vívott harcra és a galaxis felszabadítására. make Utunk során a legkülönfélébb gonosztevõkkel és ször- sudo make install nyetegekkel kell megküzdenünk, tárgyakat, pénzt és

www.linuxvilag.hu 2004. november 69 Fogadó a Linuxhoz

Írjuk be az általunk kiválasztott nevet, mint például François. Nyomjuk le az Entert, és a kaland elkezdõdik. Az elsõ alkalommal olvassuk el a képernyõn gördülõ bevezetõt, amely megismertet bennünket a játék háttér- történetével, a billentyûkombinációkkal és az egyéb tud- nivalókkal. Ez egész csak néhány másodperc; amikor végeztünk, a kezdéshez kattintsunk. A 3D világban az egér segítségével mozoghatunk. Kattintsunk hõsünk elé, õ pedig követni fogja parancsa- inkat. Az egyes tárgyakat rájuk kattintva vehetjük fel, tudásunkat és eszközeinket – például a lézerkardot – pedig a jobb oldali gombbal kattintva vehetjük haszná- latba. A képernyõ jobb alsó sarkában három kör látha- tó. Az egyikkel karakterünk statisztikáit jeleníthetjük meg, a másikkal a felvett tárgyak leltárát érhetjük el, a harmadikkal pedig varázslatokat és eszközöket választ- hatunk ki (ezek bal oldalon, alul jelennek meg). A játék © Kiskapu Kft. Minden jog fenntartva során bármikor lenyomhatjuk az ESC gombot, ekkor megjelenik a menü, amelybõl a program például a gra- 4. ábra Minden készen áll, hogy megkezdjük Freedroid fikára, a hangokra vagy a teljesítményre vonatkozó be- RPG kalandjainkat állításait tudjuk módosítani. Alapesetben a játék teljes képernyõs módban fut, ám a megfelelõ beállítással ezen fegyvereket kell gyûjtenünk, valamint sokféle érdekes is változtathatunk. karakterrel találkozhatunk. Én például összefutottam Játék közben fogadjátok meg egy tanácsomat, mes amis. egy Michelangelo nevû szakáccsal, akinek tönkrement A Freedroid – ahogy a többi mai játék is – rendkívül a kedvenc sütõje, és ezért dilítium kristályokra van könnyen függõvé tesz. Hirtelen rádöbbenhetünk, hogy szüksége. az idõ féktelenül rohan, miközben játszunk. Éppen ezért Vajon Tux tud neki segíteni? Csak úgy tudhatjuk meg, hogy hívom fel a figyelmetek a mentési lehetõségre. Ha játék beszerezzük a Freedroid RPG-t, és végigjátsszuk a történetet közben úgy gondoljuk, hogy aludni vagy enni sem ártana, (lásd a forrásokat). Letöltéskor viszonylag nagy, 60 MB-os nyomjuk le az Esc gombot, majd a menübõl válasszuk .tar állományra számítsunk. Végül is, erõsen grafikus a já- a Save Game (Játék mentése) parancsot. Most már biztonsá- ték, ami indokolja a méretet. A weboldalról forrásokat is le- gosan kiléphetünk, a legközelebbi alkalommal a játék indí- tölthetünk, ám kár ezekkel veszõdni, a legtöbb terjesztés- tásakor válasszuk a Load Existing Hero (Meglévõ hõs betöl- hez bináris csomagot is találunk; én például Mandrake alatt tése) parancsot. próbáltam ki a játékot. Ha mégis inkább a forrást töltjük le, Mon Dieu, hogy szalad az idõ! Éppen csak elkezdtük, és a kibontás és a fordítás a szokásostól picit eltérõen, öt lépés- máris záróra van. Látom, túlságosan elfáradtatok a bizton- ben történik: sági küzdelmek hevében, inkább mennétek végre haza. Semmi gond. Készséges felszolgálóm, François még kinyit tar -xjvf freedroidrpg-0.9.12.tar.bz2 nektek egy utolsó üveg bort. Maradék idõtökben talán cd freedroidrpg-0.9.12 újabb alkalmat kaptok arra, hogy megvédjétek a világot ./configure a vírusoktól, a férgektõl, a velejéig romlott nagyvállalatok- make tól és az egyéb ocsmány fenyegetésektõl. su -c “make install” A következõ alkalomig igyunk egymás egészségére, Ahogy az elõzõ esetekben is, az SDL fejlesztõi könyvtá- mes amis! A votre santé! rakra most is szükségünk lesz. Ha a programot OpenGL támogatással szeretnénk lefordítani, akkor az ehhez szük- Bon appétit! séges csomagokról is gondoskodjunk. Ha a fordítás és a telepítés véget ért, elkezdhetjük a kalandozást. Linux Journal 2004. október, 126. szám A Freedroid RPG kétféle módon indítható, függõen attól, hogy OpenGL gyorsítóval rendelkezõ rendszerünk van, vagy a jó öreg 2D gyorsításhoz ragaszkodunk. Ha OpenGL Marcel Gagné ([email protected]) módot szeretnénk, a freedroidRPG parancsot kell kiad- Ontarioban, Mississaugaban él. Legújabb, nunk (ügyeljünk a kis- és nagybetûk megkülönböztetésé- immár harmadik könyve a Moving to the Linux re), míg az OpenGL nélküli indításhoz a freedroidRPG -n Business Desktop (ISBN 0-131-42192-1, parancsot kell begépelnünk. Addison-Wesley). A rendszerintegrálással és A játék indításakor választhatunk, hogy egy- vagy több- hálózati tanácsadással foglalkozó Salmar szereplõs játékot szeretnénk, illetve dönthetünk, hogy Consulting, Inc. igazgatója. Hobbipilóta, tudo- meglévõ hõst töltünk be vagy újat hozunk létre. Ha elõ- mányos-fantasztikus írások szerzõje, jelenleg ször indítjuk a játékot, nyilván új hõst kell létrehoznunk. egy kisebb origami T-Rexen dolgozik.

70 Linuxvilág Játék

Játékkiszolgáló üzemeltetés Linux alatt Hazánkban is egyre jobban terjed az otthonokban a széles sávú internet elérés, mely – többek között – elõsegíti a hálózaton játszható játékok rohamos elterjedé- sét is. Ebben a cikkben a játékkiszolgálók tervezésének és üzemeltetésének fõbb kérdéseit tekintjük át. © Kiskapu Kft. Minden jog fenntartva

gy ilyen játék analóg modemmel valószínûleg nem felhasználótábornak örvendõ – játék sokkal jobban fut azon lenne nagy élmény. Bár a 33.6/56 Kbit/sec-os átviteli az operációs rendszeren, amire eredetileg fejlesztették. sebesség még megfelelõ volna, de a késleltetés élvez- A második komoly probléma tulajdonképpen kapcsolódik az Ehetetlenné tenné a játékot. (A hálózati csomagok a kelleté- elõzõhöz: nagyon nehezen mérhetõ az ilyen jellegû folyama- nél lassabban érnének célba.) tok erõforrásigénye. A top parancsot használva például fel se Cikkünkben azokat a szempontokat szeretnénk bemutatni, tûnik, ha egy ilyen alkalmazásnak nem áll rendelkezésére ele- amelyek alapján az Interware saját szolgáltatásait kialakítot- gendõ mennyiségû rendszererõforrás. Igen jó példa erre, ta. A cél az volt, hogy egy nagyobb létszámú játékos közös- hogy egy átlagos kiszolgálón (Athlon XP 2000+, 512MB me- séget kiszolgáló, megfelelõ minõségû szervert bocsássunk mória, 7200-as fordulatszámú UDMA/100-as merevlemezek) ügyfeleink és barátaink rendelkezésére. 10 db játékkiszolgálót is el tudunk helyezni, és játékosokat be- A piacon rengeteg hálózati játék létezik. Ezek közül itt és hívni rá anélkül, hogy a gép mérhetõ terhelése (load) jelentõ- most csupán egyet fogunk kiválasztani, hogy rajta keresztül sen megnõne. Ennek ellenére a játék élvezhetetlen lesz, mivel bemutathassuk a szolgáltatói gyakorlatban alkalmazott a játékosok tevékenységével összefüggésben keletkezõ terhe- módszereket. A „kiválasztott” ezúttal a Medal Of Honor lésugrások apró késleltetéseket képeznek. Bár ezek például Allied Assault nevû, már régebben kiadott és mára viszony- egy weblap letöltésénél észre sem vehetõk még 1000 egyidejû lag olcsón beszerezhetõ program lesz. felhasználó esetén sem, egy játéknál a hatásuk „végzetes”. A környezet kialakítása elõtt – mint bármely más rendszer Felvetõdik a kérdés: mit tehetünk egy épkézláb módszerek- megtervezésekor – tisztáznunk kell bizonyos részteleket. kel gyakorlatilag nem mérhetõ folyamathalmaz erõforrás- • Mekkora célközönséget szándékozunk kiszolgálni; igényének kielégítésére. • Mennyi szabad erõforrásunk van a célra; Elõször is van néhány íratlan szabály: • Ellenõrzött szolgáltatást kívánunk e nyújtani, vagy nem • Ha több kiszolgálót üzemeltetünk egy gépen, akkor ér- törõdünk azzal, hogy a játékosok mit mûvelnek a szer- demes nulláról telepített, optimalizált (errõl késõbb még veren játék címén. lesz szó) operációs rendszert használni. • Ne futtassunk más, nagy sávszélesség vagy processzor- Bár a józan ész ezt diktálná az összefüggés a hardverigény igényû alkalmazást a gépen! Egy egyszerû, néhány ol- és kapcsolatok száma között nem lineáris. A játékszerverek dalt kiszolgáló webszerver még nem jelent problémát, terhelhetõségét általában a szabad férõhelyek (slotok) sza- egy adatbázis-lekérdezésekkel tarkított, sok felhasználós bályozásával, illetve az egy felhasználóra jutó sávszélesség oldaltömeg viszont nem lesz ínyére a játékszerver(ek) meghatározásával adják meg. folyamatainak. Ez az a pillanat, amikor elérkeztünk két olyan, meglehetõ- • Nekünk a Debian/GNU Linux vált be legjobban, de ez sen sarkalatos problémához, amelyektõl a borúlátóbb rend- természetesen nem jelenti azt, hogy egyéb terjesztések- szergazdák rendszerint visszariadnak. kel bármilyen komolyabb probléma lenne. Az egyik súlyos, de egyáltalán nem leküzdhetetlen akadály • Ne próbáljunk otthonról, kábelmodemes vagy DSL kap- az, hogy a szoftvereket eredetileg nem Linuxra írták. csolattal ilyen szolgáltatást megvalósítani. Biztosan állít- A linuxos változatok általában nem kellõképpen optimali- hatjuk, nem fog sikerülni. Tegyük a kiszolgálót egy szer- záltak, nem használják ki az operációs rendszer hasznos tu- verhotelbe ahol sávszélességgel kapcsolatos probléma lajdonságait, inkább kis önálló világként léteznek benne. gyakorlatilag kizárt, hiszen például egy 20 fõt kiszolgáló Egy ilyen program „el se tudja képzelni”, hogy az általa le- szerver 2 megabitnyi adattömegnél nem továbbít többet foglalt memóriaterületen tárolt információt akár több hozzá másodpercenként. (Az újabb játékok hálózati kódja még hasonló folyamat is használhatná. Sajnos a legtöbb – általá- ennél is hatékonyabb, akár kétszer ennyi játékost is ké- ban már évekkel ezelõtt kiadott, de ma is kedvelt és nagy nyelmesen elbírnak ugyanekkora sávszélességen).

www.linuxvilag.hu 2004. november 71 Játék

• Védjük gépünket! Hasonlóan az egyéb hálózati fóru- a mohaa szerver linuxos bináris állományait a http://mohaa.hu mokhoz, ennél a stílusnál is elég gyakori, hogy a közös- címrõl. Telepítsünk egy windowsos gépen egy mohaa ügyfe- ség devianciára hajlamos tagjai bizonyos konfliktusokat let, az egészet csomagoljuk össze és másoljuk be az imént lét- a szerverek kiiktatásával próbálnak rendezni. Minden- rehozott felhasználó (mohaa) könyvtárába. A linuxos változa- képp használjunk tûzfalszoftvert – például Netfilter/ tot ugyanoda kell tenni, ahol a windowsos állományok van- iptables -, de kerüljük az integrált, nagy tudású, vírus- nak. Ha ez megtörtént, a kiszolgáló elvileg már futtatható is szûrõs képességekkel ellátott tûzfalakat, ezek ugyanis a megfelelõ parancs kiadásával. nagyban lassíthatják a kiszolgálót. • Ne indítsunk be egyszerre több kiszolgálót. Helyesebb, Mitõl lesz könnyen adminisztrálható és 24/7 ha mindegyik után megvárjuk a felhasználók/játékosok üzemmódban futtatható a kiszolgálónk? visszajelzéseit. (Fontos, hogy ne felejtsük el tõlük ezt ki- Ehhez elõször is egy könnyen kezelhetõ adminisztrációs fejezetten kérni, mert maguktól esetleg nem nyilatkoz- segédprogramra lesz szükségünk. Ilyen például a Screen nak majd.) Újabb kiszolgálófolyamatot csak tökéletes amelynek telepítése Debian alatt csupán az apt-get mûködés esetén indítsunk be. install screen parancs kiadását jelenti. Persze ne feledjük, • Ami a hardvert illeti, az annyi legyen „amennyit elbír hogy ezek az alkalmazások nem mindig futnak stabilan, va- a ház”. Memóriával és processzorral ne spóroljunk. Egy gyis nem árt megírni hozzájuk egy héjprogramot, ami fi- MOH:AA szerver például akár 100 MB – néha több – gyeli, hogy fut e még a kérdéses folyamat, és ha nem, akkor © Kiskapu Kft. Minden jog fenntartva memóriát is hajlamos magáévá tenni, ha pedig nem automatikusan újraindítja azt. kap, akkor kíméletlenül elkezd a csereterülethez nyúl- Természetesen az is megoldható, hogy a rendszer újraindí- kálni. Darál a lemez, áll a játék. Ami a processzort illeti tása után automatikusan elinduljanak játékszervereink. eddigi tapasztalataink alapján legalább 2 Ghz-es konfi- Ilyenkor ügyeljünk rá, hogy a Screent ilyenkor automatikus gurációval érdemes nekivágni. Ez körülbelül 5 kiszolgá- leválásra (detach) utasítsuk, és ne felejtsünk el nevet adni ló-folyamatot képes futtatni, de a terheléstõl függõen a Screen által kezelt folyamatoknak. többet is beindíthatunk rajta. Ügyeljünk rá, hogy az igé- Érdemes alaposan áttanulmányozni a cikk végén felsorolt nyek játéktól függõen erõsen változhatnak. Ugyanazon dokumentumokat, hiszen ezekben rengeteg hasznos infor- a hardveren, amin egy Counter Strike-ból csak 2 képes mációt találunk. Vannak itt az adminisztrációt segítõ prog- mûködni, MOH:AA-ból elfut 8, egy BattleField 1942-bõl ramok, és számos ötlet olyan mûveletekre, amelyeknek pedig akár 12 is! Ezek természetesen csak irányszámok. egyelõre nincs „szoftveres megfelelõje”. A MOH:AA például nincs felkészítve arra, hogy „ban” listát Lássunk egy konkrét példát! tartson fent, vagyis ha kiutasítunk valakit a szerverünkrõl, A hardver legyen egy 3 Ghz-es Pentium 4 processzort tartal- bármikor visszajöhet ami lássuk be, nem túl szerencsés. mazó gép. (Intel processzorral valamiért jobb eredményeket Ilyenkor a rendszer route parancsával elirányíthatjuk értünk el, mint AMD-vel.) Ehhez társul 1 GB memória, va- a nem kívánt IP-t valamilyen nem használt, vagy nem is lamint 2 db 80 GB-os (7200 RPM) merevlemez, amelyeket létezõ tartományba. Így már nem valószínû, hogy az illetõ szoftveresen RAID-1-be szervezünk. Ez egyrészt a biztonsá- vissza tud térni. Ügyeljünk arra, hogy a többség dinamikus got szolgálja, másrészt gyors olvasást tesz lehetõvé. Szintén címmel érkezik játszani, vagyis akit ma letiltunk, az holnap jó megoldás lehetne egy vagy két 36 GB-os UW-3 SCSI me- nem biztos, hogy ugyanaz a személy lesz. Érdemes ezt revlemez egy megfelelõen gyors vezérlõvel, bár itt már ta- a problémát is egy héjprogramból kezelni, ha nem akarjuk karékosabban kell bánnunk a hellyel. szép lassan letiltani az összes szolgáltató dinamikus IP Telepítsünk egy Debian Sarge terjesztést úgy, hogy kizáró- címtartományát. lag az alaprendszert tegyük fel. A ppp, pppoe csomagokat, Jó szerencsét és sok kitartást mindenkinek, aki játékszolgál- valamint minden egyebet ami nem szükséges a rendszer tatásra adja a fejét. Sok fejfájással járó küldetés ez, no de mûködéséhez, távolítsunk el. embertársaink öröme minden energiát megér. Hozzuk létre a szoftveres RAID lemezrészeket. A felhaszná- lói könyvtárakat (/home) külön lemezrészre tegyük és hasz- Vincze Gábor ([email protected]) náljunk XFS fájlrendszert. Ez például az ext3-hoz képest Vidám természetû, fanatikus rendszermérnök, nagy elõrelépés jelent a sebességben. az Interware Rt. munkatársa. Csak zene Szinte magától értetõdik, hogy a legújabb, optimalizált mellett képes dolgozni, éjszaka hálózati játé- kernelt kell használnunk, amit mi magunk fordítunk le. kokkal tölti idejét, szereti a társaságot és Mindenképpen a 2.6-os sorozatot használjuk! Számos do- a tengerentúlt.

log, ami a 2.6-osban alapértelmezett a 2.4-be még nem ke-  rült be hivatalosan, vagyis a 2.4-eseket alakítgatni kellene. KAPCSOLÓDÓ CÍMEK Szintén ajánlott 2.6.3 feletti változatot fordítani, mert ezek- ben kevesebb biztonsági rést találtak eddig. Használjunk  grsecurity foltot is ( http://www.grsecurity.net), amely http://www.grsecurity.net  szintén növeli a biztonságot. http://mohaa.hu  Hozzuk létre azt a felhasználót, akinek a nevében az alkal- http://www.callofduty.hu  mazás futni fog. Esetünkben legyen ez mondjuk mohaa. http://www.counter-strike.hu  Most egy egyedi telepítési folyamat következik, mivel http://www.mohadmin.com a mohaa kiszolgálónak nincs linuxos telepítõje. Töltsük le

72 Linuxvilág Játék

Régi idõk játékai – a DOSEMU A Linux univerzális DOS emulátora, avagy idõutazás régi kedves játékaink korába.

i ne ismerné a jó öreg DOS-os játékok utánozhatat- lan hangulatát? Minden régi motorosról elmondha- © Kiskapu Kft. Minden jog fenntartva tó, hogy – legyen immár akármilyen komoly ember Kis – egyszer, valamikor évekkel ezelõtt szabadidejében szí- vesen butította elméjét ezekkel az egyébként nagyszerû programocskákkal. Az ember hajlamos arra, hogy ezeken a szép dolgokon nosztalgiázzon kissé. Persze jelen esetben nem is nagyon tehet mást, hiszen a szép idõknek is meg- van az a rossz szokásuk, hogy elmúlnak egyszer. No nem mindörökre, de abban a tekintetben mindenképpen, hogy a mai operációs rendszerek jelentõs része (Linux, WinXP, Win2000, stb.) nem képes ezeket a régi játékokat futtatni. Ha mégis játszani szeretnénk, akkor mindenféle egyéb trükkökhöz kell folyamodnunk: tarthatunk például egy DOS változatot valamelyik partíciónkon, vagy lehet hogy találunk a padláson egy régi gépet, amit már csak erre 1. kép Aladdin, amit már DOS alatt is nehéz volt elindítani használunk. Az elsõ módszer legfõbb hátulütõje, hogy a DOS nem ismeri az új hardvereket, így legtöbbször még hangot sem csalogathatunk elõ a játékokból. A második módszer már mûködhet, no de muszáj ehhez egy egész gépet fenntartani? Természetesen nem, ugyanis létezik egy alternatív megol- dás: a virtuális számítógépek nyújtotta lehetõség. Ezek olyan programok, amelyeket a befogadó operációs rendszer futtat, de fõ feladatuk az, hogy elindítsanak más programo- kat, és elhitessék velük, hogy egy külön számítógépen fut- nak. Ha ez megvolna, nincs más dolgunk, mint az operáci- ós rendszert, mint programot elindítani ezen a virtuális ma- sinán és készen is van az új gép. Azaz készen volna, ugyan- is a helyzet ennyire azért nem rózsás. Ezek az általános vir- tuális gépek szinte képtelenek a grafikát szépen, jól, és ki- váltképp kellõ gyorsasággal megjeleníteni (tisztelet a ritka kivételnek), ezen kívül pedig jóval bonyolultabbak annál, ami a játékokhoz feltétlenül szükséges volna. Ráadásul 2. kép Egy másik nagy klasszikus: Duke Nukem 3D ugyanúgy megmarad a hardver felismerésének problémá- ja... Mindezen felül még megvan az a feladatunk is, hogy Nos, van! Pontosan erre találták ki a Dosemu nevû progra- keressünk egy mûködõ DOS-t, telepítsük, s megéljünk min- mot, amely az elsõ számú linuxos DOS emulátor. Felépíté- den ezzel járó macerát. sébõl adódóan leginkább a régi játékok kiszolgálására Jól látszik a fentiekbõl, hogy nekünk valami olyan dologra használják. lenne szükségünk, ami kifejezetten egy DOS-os környeze- tet tesz elénk, úgy, hogy egyrészt lássuk a hardvereszközö- Mi is ez a Dosemu? ket a hagyományos formában, de ne kelljen azzal szenved- A Dosemu egy a maga nemében páratlan virtuális gép, nünk, hogy beállítsuk az új operációs rendszerünket. amely kifejezetten a DOS-os programok számára szükséges Emellett a rendszer legyen gyors is, ha egy mód van rá. erõforrásokat teszi elérhetõvé. Fontos kiemelni, hogy nem

www.linuxvilag.hu 2004. november 73 Játék

3. kép Oroszlánkirály – a zenéje sem marad el 4. kép The Incredible Machine – mûködés közben

© Kiskapu Kft. Minden jog fenntartva csak a DOS-t, mint operációs rendszert bocsátja rendelkezé- fájl, de sok mindent megoldhatunk az autoexec.bat illetve sünkre, hanem a teljes hozzá tartozó környezetet is emulál- a config.sys fájlok Linuxból történõ szerkesztésével is. Az emu- ja. Ez egyaránt vonatkozik a hardverelemekre és a szoftve- látorból az exitemu parancs kiadásával, illetve a CTRL+ALT+ rekre. Van hangkártyánk (igazi Sound Blaster!), CD-ROM, PGDN billentyûkombináció megnyomásával léphetünk ki. egér, VESA VGA, hálózat, nyomtató, COM portok, numeri- kus társprocesszor, és minden egyéb, amire csak szüksé- Milyen eszközök állnak rendelkezésemre günk lehet. Az egészben az a legszebb, hogy ezek (a CD- az emuláció során? meghajtót leszámítva) alapértelmezetten be vannak állítva, Alapszabály: a hardver csak akkor fog mûködni, ha vagyis nem szükséges például egérmeghajtót betölteni. a Linuxban helyesen be van állítva – ekkor viszont garan- Az csak úgy magától van, és minden program látja is. táltan helyesen fog mûködni.

Hogyan juthatok hozzá? Merevlemez Mi sem egyszerûbb ennél: telepítsük rendszerünk csomag- Kezdjük mindjárt a legfontosabb helyen, vagyis a merevle- kezelõjével! Minden jelentõs terjesztés (Debian, RedHat, mezeknél. Mint már írtam, van egy C: meghajtónk, amely SuSE) tartalmazza csomagok formájában, így a telepítés a DOS-t magát tartalmazza. Ez a boot lemezrész, amely csak maga eltarthat akár két percig is! S bármennyire hihetetlen, olvasható. Ezen felül alapértelmezetten olvashatjuk ill. ír- az így elõállt emulátor azonnal teljes értékû, nem szükséges hatjuk a saját könyvtárunkat (home) is. A Dosemu egyéb- további beállításokat végezni a helyes mûködéshez. Ahhoz, ként minden közvetett hivatkozást (szimbolikus linket) kö- hogy X ablakban is jól mûködjön, szükségünk lesz egy vet, így ha belinkeljük ide bármilyen befûzött (mount) fájl- betûtípus-csomagra is, amit dosemu-vga néven találunk rendszer könyvtárát, bármit láthatunk a programból, mind- a csomagok között. össze egy-két linuxos héjparancs kiadásával. Próbaképp indítsuk el nyugodtan, adjuk ki dosemu paran- Ezen kívül arra is lehetõségünk van, hogy mûködés közben csot a héjprogramból, és nézzük meg, hogy mi történik. adjunk meg új meghajtókat. Erre szolgál a már említett A rendszer betöltõdik a terminál ablakban, ahonnan in- lredir parancs, melynek segítségével az emulátorból egy dítottuk, s maga az ablak egy külön gép, amelyben DOS- meghajtó betûjelhez köthetünk a linuxos fájlrendszeren os parancsokat adhatunk ki. A DOS-t, mint programot elhelyezkedõ könyvtárat, illetve azok tartalmát. Íme a telepített FreeDOS nevû szabad DOS változat szolgáltat- egy példa: ja. Ez a Dosemu lib könyvtárából nyíló freedos nevû map- pában található, az újabb változatoknál egyenesen lredir T: \linux\fs\mnt\drive_d a UNIX-os fájlrendszeren, nem pedig lenyomatban (ima- ge). Az említett könyvtár tartalmaz minden egyes DOS pa- A \linux\fs elõtag jelen helyzetben a linuxos fájlrendszer rancsot, súgót, és mindent, amit ettõl az operációs rend- gyökerét jelöli, ez után kell tehát a könyvtár abszolút elérési szertõl megszokhattunk. Természetesen van autoexec.bat útját megadni. Ha mindezt szeretnénk automatizálni, akkor és config.sys fájl is, s a rendszer betöltõdésekor ezek lefut- nyissuk meg a /usr/lib/dosemu/freedos/autoexec.bat fájlt, és nak. Ez a könyvtár alkotja tehát a boot lemezrészt (partí- adjuk hozzá a fenti parancsot. Ennek hatására a DOS betöl- ció), amelyet az emulátor úgy lát, mintha az egy meghajtó tésekor megtörténik az összerendelés, és attól kezdve T: (C:) lenne. Nem ez az egyetlen könyvtár, amely külön meghajtóként érjük el az adott könyvtárat. meghajtóként látszik, s ezáltal elérhetõ az emulátorból. Minden becsatlakoztatott könyvtárat elérhetünk az lredir Egér parancs segítségével, sõt, különleges esetekben egész esz- Már említettem, hogy mindenféle meghajtóprogram nélkül közleírókat is átadhatunk, mint lemezmeghajtót. (Hason- van egerünk, amelyet minden olyan programban használni lóan használja a Dosemu a hajlékonylemezes meghajtót.) is tudunk, amely a DOS-os egeret igénybe veszi. Egyetlen Ami a beállításokat illeti: Létezik globális és lokális beállítási apró probléma adódhat ezzel kapcsolatban: a mai egerekkel

74 Linuxvilág Játék

5. kép Command & Conquer – még mindig fut! 6. kép Network Q Rally a'la Linux © Kiskapu Kft. Minden jog fenntartva túl gyors a kurzor mozgása. Ezen a /etc/dosemu/dosemu.conf pukkan egyet, mintha csak bekapcsolnánk egy erõsítõt. fájl szerkesztésével segíthetünk. Keressük meg A hangkártya beállításai a dosemu.conf $_sb_* változók a $_mouse_baud változót, vegyük ki elõle a megjegyzésre értékeinek megadásával változtathatók meg. utaló jelet („kommentezzük vissza”), majd adjunk neki va- lamilyen kicsi egész értéket, mondjuk 1-et. Ezután újrain- Memória dítva a Dosemu-t már jelentõsen lassúbb az egér mozgása, Van konvencionális, XMS, illetve EMS memóriánk is, de még mindig lehetne rajta mit javítani. Bár az 1-es a leg- mégpedig alapértelmezésként 640/8192/2048 Kb-os le- kisebb megadható érték, ez még mindig gyors egy kissé. osztásban. Ezek a méretek a beállítási állományban De sebaj: pár perc alatt hozzá lehet szokni. a $_dosmem, $_xms, $_ems változókkal szabályozhatók. Ezen a ponton talán érdemes megjegyezni, hogy Fontos hozzátenni, hogy ezek valójában különálló memó- a dosemu.conf fájlban minden lehetséges beállítás megjegy- riaterületek, nem úgy, mint ahogy azt a DOS-ban meg- zésként szerepel („ki van kommentezve”). Amiket itt lá- szokhattuk, ezért elõfordulhat, hogy a mem parancs nem tunk, azok az alapértelmezett beállítások. Ha ezeken vál- teljesen pontos értékeket ír ki. toztatni szeretnénk, tüntessük el a megjegyzés jelet az Jó hír, hogy a 640kb-nyi konvencionális memória szinte adott sor elejérõl, majd írjuk át a változó értékét. teljes egészében szabad, ezért szinte bármilyen játékot elindíthatunk, amely ezt használja: nem fog memória- Billentyûzet problémákkal leállni. Ami a billentyûzetet illeti, itt is csak a billentyûzetkiosz- tásról érdemes szólni. Elõfordulhat, hogy a Dosemu nem Nyomtató ismeri fel automatikusan az X billentyûzetkiosztását. Ilyen- Alapértelmezésként a Dosemu a rendszer nyomtatóit állítja kor a már emlegetett dosemu.conf fájlban keressük meg csatasorba, s az egész folyamat úgy mûködik, mintha csö- a $_layout változót, s állítsuk hu-ra, különben az angol ki- vek (pipe-ok) segítségével irányítanánk át a nyomtatást. osztással indul a rendszerünk. Ide tartozik még a használt A DOS-os mûködés során simán használható az LPT1 port, kódlapok kérdése is, ám ennek igazából csak akkor lesz je- tehát mûködik például az echo 1 > lpt1 parancs. Így a régi lentõsége, ha terminál módban és unicode környezetbõl alkalmazások gond nélkül nyomtathatnak majd a gépünk használjuk az emulátort. Éppen ezért ennek ismertetésétõl printerére. most eltekintünk. Beépített hangszóró (speaker) Botkormány Ezt az eszközt alapértelmezésként a Dosemu emulálja, még- Az egérhez hasonlóan mindenféle vezérlõprogram nélkül pedig úgy, hogy mûködését a hangkártyán keresztül képezi elérhetõ a botkormány (joystick) is. A mozgás és annak érzé- le. Lehetõség van azonban a közvetlen hozzáférésre is, de kenysége a beállítási fájl $_joy_* változóival szabályozható. ez nem ajánlott. Mellesleg azért is teljesen felesleges, mert a legújabb alaplapokon már nincs is olyan csatlakozó, amire Hangkártya a beépített hangszórót rádughatnánk. Helyette az alaplapra Igazi, emulált hangkártya áll rendelkezésünkre anélkül, integrált hangkártya „pittyeg”. hogy a kisujjunkat is mozdítani kellene érte. Az alapértel- mezett beállítások szerint a 0x220-as címen, 5-ös IRQ-val, VESA/VGA 1-es ill. 5-ös DMA-val rendelkezik. Természetesen van Ha az emulátort X ablakban futtatjuk (lásd késõbb), szab- MIDI is, méghozzá a szabványos 0x330-as címen. ványos VESA 2.0 illetve VGA kompatibilis videokártyát Az összes, általam próbált program gond nélkül mûködött szolgáltat a futó programoknak. Ehhez igazából nem is vele, számos beállítóprogram pedig magától felismerte. szükséges hozzányúlni, az esetek 99 százalékában tökéle- Egyetlen aprócska hibája, hogy az elsõ hangtaktus elõtt tes az alapbeállítás.

www.linuxvilag.hu 2004. november 75 Játék

CD-ROM Nagyjából a végére is érkeztünk a bemutatásnak. A futó Ez az egyetlen olyan eszköz, amely nincs beállítva Dosemu gyakorlatilag olyan, mint egy számítógép a szá- alapértelmezetten. Ennek is megvan az oka: nem maga mítógépben. Az alkalmazásainkat pontosan ugyan- a fizikai eszköz, hanem a befûzött korong könyvtára úgy futtassuk, mint ahogyan azt régen is tettük. Élmény látszik a Dosemu-ból. Ennek ellenére persze elõfordul- lesz újra végigjátszani néhány klasszikus darabot. hat olyan eset is, amikor tényleg magára a meghajtóra Szeretném azonban megjegyezni, hogy nem csak játékra van szükség. van lehetõségünk, bár én igyekeztem a cikk során min- A módszer ilyenkor pontosan ugyanaz, mint amit régen denhol azokat a területeket kiemelni, amik leginkább megszokhattunk. Egy CD-ROM vezérlõre van szükség, a játékok esetében fontosak, s az egész emulátort egy- azután pedig az mscdex.exe nevû programra. fajta „Hogyan játszhatunk jól?” szemüvegen keresztül A CD-ROM vezérlõ része a Dosemu-nak, így nem is kell bemutatni. mást tenni, mint hozzáadni a config.sys-hez az alábbi sort: A lehetõségek itt nem merülnek ki. Példaképp álljon itt egy mindennapos bosszantó eset: Az interneten számtalan he- devicehigh=c:\dosemu\cdrom.sys lyen találhatók olyan állományok, amelyek önkicsomagoló .exe formájában vannak tömörítve. Ezt igen kicsi eséllyel Ezzel betöltõdik a vezérlõprogram, s után már csak az tudjuk Linux alatt fájdalommentesen kitömöríteni. Hibátlan megoldást ad azonban a Dosemu használata. Helyezzük el © Kiskapu Kft. Minden jog fenntartva mscdex.exe /d:mscd0001 /l: a fájlt ott, ahová ki szeretnénk tömöríteni, majd az emuláto- parancsot kell kiadni, és készen is vagyunk. Akárcsak ron keresztül keressük meg a fájlrendszerben és indítsuk el. a hõskorban, célszerû ezt az autoexec.bat fájlba beírni, Rövid mûveletvégzés után elõbányászhatjuk a Linux fából hogy automatikusan végrehajtódjon. a kitömörített állományokat. Az mscdex.exe nem része a FreeDOS-nak, ezért javaslom, Sok ezer egyéb beállítási lehetõség is rendelkezésünk- a Google-n keressünk rá a letöltési lehetõségre (A win95-ös re áll a programmal kapcsolatban, ám ilyen terjede- változatra lesz szükségünk), majd szerezzük be. lemben csak ilyen felületes bemutatásra nyílik lehetõ- Menet közben elvileg úgy tudunk korongot váltani, hogy ség. Azt hiszem, a teljes programról egész könyvet meghívjuk az eject.com parancsot, amely kilöki a tálcát, ez lehetne írni. azonban a gyakorlatban nem mûködik. Ha beteszem a CD- Annyit szóltam már a Dosemu elõnyeirõl, hogy gyorsan t, olvassa ugyan, de kivenni már csak akkor lehet, ha véget meg kell említsem: nem old meg minden problémát. Szá- ér a Dosemu futása. Elképzelhetõ, hogy ezt a hibát a közel- mos olyan gyengén megírt játék akad, amely nem hajlan- jövõben kijavítják a fejlesztõk, ezért az sem kizárt, hogy mi- dó elindulni az újabb masinákon még valódi DOS alatt re a kedves olvasó kezébe veszi az újságot, már a hibamen- sem. Általában valamilyen programhibával szállnak el rög- tes változat lesz tölthetõ a Dosemu honlapjáról. tön az indítás után. Ez természetesen az emulátorban is gondot okoz. Ezeket a játékainkat valószínûleg csak a régi Hogyan futtathatók a grafikus alkalmazások? vasakon tudjuk újra életre kelteni. Nem kell azonban elke- Szó esett arról, hogy a VESA/VGA mód X ablakban történõ seredni, jó néhány olyan játék létezik, amely gond nélkül futtatás során érhetõ el. Ez a gyakorlatban azt jelenti, hogy fut a fent részletezett környezetben. Jómagam is számta- a Dosemu nem a terminálban fut, hanem egy önálló grafi- lan programot végigjátszottam újra. Ha valami nem fut kus X ablakban, ahol természetesen ugyanúgy a szöveges elsõre, azért ne adjuk fel egybõl, rengeteg testreszabási ablakot kapjuk meg elsõnek, ám grafikus formában. Ehhez lehetõség van még a tarsolyunkban, egy kis nyomozás kell az a bizonyos dosemu-vga nevû csomag, amely a szük- után bátran alkalmazhatunk néhányat, s meglátjuk: séges betûtípusokat tartalmazza. meg lesz az eredménye. Én azt javaslom mindenkinek, hogy inkább X ablakban fut- Mondanom sem kell, hogy az itt ismertetett megoldás tassa az emulátort, ugyanis a szöveges alkalmazások futása jelenleg páratlan. Nem tudok még egy ilyen gyorsan és is simább, kevesebb hibát okoz, mintha terminálban ten- könnyen, valamint ilyen hatékonyan üzemelõ programról, nénk mindezt. amellyel régi DOS-os játékokat lehet szóra bírni. S bár en- Adjuk ki tehát a dosemu -X parancsot, melynek hatására egy nek nem sok gazdasági haszna van, a Linux megint csak új ablakban indul el a DOS-os gépünk. Most már bátran el- feladta a leckét a vetélytársaknak. indíthatunk bármilyen alkalmazást, az ablak átméretezõdik a megfelelõ felbontásra, majd megjelenik a grafikus kép. Komáromi Zoltán Nyugodtan próbáljuk ki az egyik régi CD-rõl elõszedett ([email protected]) játékunkkal. 23 éves, a BME hallgatója, mellette Természetesen nem túl jó, hogy kicsi ablakban fut a játék, PHP-programozóként dolgozik. mi több, ha egerezünk, kifejezetten zavaró, hogy kiszalad- Kedvenc területe a multimédia. hatunk a képbõl, illetve hogy a hardveres és a szoftveres

egérmutató nem mindig ugyanott van. Ezek elkerülésére  adjuk ki a dosemu -X -w parancsot, amely teljesképernyõs KAPCSOLÓDÓ CÍMEK módban indítja az emulátort. Egy jótékony mellékhatása a dolognak az, hogy a billentyûkombinációk helyesen fog-  nak mûködni. Az ALT+F4 például nem a Dosemu ablakát Az emulátor honlapja: http://www.dosemu.org zárja be, hanem a futó program kezelheti le az eseményt.

76 Linuxvilág Töprengõ

Néhány jog fenntartva – Creative Commons Az alkotások felszabadítása az alkotás szabadságáért: hogyan teremthetõ folytonos átmenet a szabad felhasználás, és a teljes jogi védelem között.

Mi is az Creative Commons? lás (fair use) tárgykörébe esik. A néhány meglevõ kivé- © Kiskapu Kft. Minden jog fenntartva Olvasóink közül a webet böngészve bizonyára többen teltõl eltekintve ugyanakkor mindennemû „egyéb” fel- is találkoztak már ilyen feliratú logóval, ami egy felhasz- használáshoz engedélyt kellene kérnünk a szerzõtõl, aki nálási engedély jelöl. A Creative Commons (CC) nem esetleg soha nem is akart bennünket korlátozni az adott könnyen fordítható magyarra. Szó szerint annyit tesz tevékenységben, de jobb nem lévén kénytelen volt oda- „Kreatív Közjavak”, de talán a „Közös Alkotás” jobban ki- biggyeszti mûvel mellé a © jelet. Valójában nem is szüksé- fejezi a jelentését. A CC egy amerikai non-profit szerve- ges kiírni a mágikus jelet, mivel a mûvek a „jogi alapértel- zet, amely azt tûzte ki célul, hogy egyszerû felhasználói mezés szerint” eleve védelem alatt állnak. (Errõl bõvebben szerzõdések formájában alternatívát kínáljon a szerzõi Dr. Dudás Ágnes rovatában olvashatunk). Az alapértelme- jogok jelzésére. Arra törekedtek, hogy olyan, minél zett jogvédelem ráadásul a szerzõ halála után még további könnyebben használható és értelmezhetõ licenceket ké- 70 évig érvényben marad. szítsenek, amelyekre bárki hivatkozhat közzétett mûvei- Jogos tehát a kérdés: mit tegyen az alkotó ha nem kívánja vel kapcsolatban, legyen az egy írás, zenemû, grafika, teljes mértékben korlátozni mûve felhasználását? A CC li- fénykép vagy film. cencek pontosan erre kínálnak megoldást. A szervezet által A szerzõi jog célja ugyanis eredetileg sem pusztán a véde- kidolgozott „jogi alapelemek” építõkockák módjára tetszés lem és a felhasználás korlátozása. Van egy másik, legalább szerint, akár kombinálva alkalmazhatók. olyan fontos szerepe, ami a tilalmak erdejében háttérbe szo- rul: a szellemi alkotás ösztönzése és az egyetemes kultúra A CC elemtípusok a következõk: értékeinek megóvása. A törvényalkotók szándéka szerint “Attribution” – engedélyezi a mû szabad másolását, „egyensúlyt teremt és tart fenn a szerzõk és más jogosultak, terjesztését valamint a felhasználók és a széles közönség érdekei között, “NonCommercial” – kereskedelmi céllal nem tekintettel az oktatás, a mûvelõdés, a tudományos kutatás használható és a szabad információhoz jutás igényeire is” “No Derivative Works” – nem módosítható, nem dolgozható át Mire jó a CC licenc? “Share Alike” – módosítható és átdolgozható, de az A szabad szoftverek világát ismerõ olvasóban joggal merül- így létrejött mûvet csak az eredetivel azonos licenccel het fel a kérdés: minek még egy licenc, mikor már így is lehet publikálni. annyi van belõlük, hogy kiigazodni is nehéz közöttük. Az a probléma, hogy szoftverektõl eltérõ alkotások esetében A CC honlapján egy egyszerû ûrlap segítségével, néhány lé- a létezõ felhasználási szerzõdéstípusok nem igazán prakti- pésben ki lehet választani a számunkra legmegfelelõbb vál- kusak. Részint ezért született meg maga a CC is, melynek li- tozatot. Ha például azt szeretném, ha ezt a cikket szabadon cenceit tulajdonképpen a szabad szoftverek felhasználási másolhassák és terjeszthessék mások is, de csak eredeti for- szerzõdései inspirálták, azok mintájára dolgozták ki õket. májában, akkor az elsõ és a harmadik feltételt jelölhetem A szoftverlicencekkel szemben a CC licencek elõnye, hogy meg. Eredményként megkapom a kódot, amelyet beszúrha- rugalmasan alkalmazhatók, szövegük mégis rövid, közért- tok a megfelelõ oldal szövegébe. Ezután feltüntetem a cikk hetõ és bármilyen alkotáshoz felhasználható. mellett a CC ikonját, ami egyben hivatkozás a licenc közért- Az írásos mûveknél jelenleg szinte mindenhol a hagyomá- hetõ, egyszerûsített változatát tartalmazó oldalra. (Innen nyosan elterjedt ©, azaz „Minden jog fenntartva” jelzéssel természetesen a részletes jogi szöveg is elérhetõ, ha valaki- találkozhatunk, ami lényegében azt jelenti, hogy semmit nek szüksége lenne rá, például egy jogi eljárás során.) nem tehetünk az adott mûvel, a szerzõ engedélye nélkül. A licenc kiválasztásánál megadhatok számos, a a mûre jel- Ez ugyan kissé sarkított megfogalmazás, mivel van né- lemzõ információt is, amelyek metaadatként szolgálnak hány törvény által biztosított kivétel. Ilyen például az, a könnyebb azonosításhoz. Ezeket az ûrlap RDF/XML for- hogy idézhetünk a mûvekbõl, ami a jóhiszemû felhaszná- mátumban illeszti a kódhoz.

www.linuxvilag.hu 2004. november 77 Töprengõ

Miért akarná valaki „felszabadítani” mûvét nem olyan egyszerû: a honosítási projektekhez létezik ilyen licenccel? egy kidolgozott tervezet és bizonyos feltételeknek is telje- sülniük kell. Erre számos oka lehet. Ilyen például, ha azt szeretné, ha Elõször is kell egy jogász végzettségû projektvezetõ, vala- szabadon terjednének gondolatai, minél többen megismer- mint szükség van egy „elismert” szervezet vagy intézmény hetnék mûvét, vagy esetleg át is dolgozhassák azt, illetve közremûködésére, amely a nevét és támogatását adja az felhasználhassák saját alkotásukhoz. ügyhöz. Fontos ugyanis, hogy a CC licencek fordítása a ha- Elsõ hallásra talán furcsa, de e mögött akár üzleti érdek is zai jogrendhez legyen igazítva. Néhány magyar fórumon állhat. Egy kezdõ mûvésznek például hasznos promóciós felvetettem tehát az ötletet, de mivel nem nagyon tolongtak eszköz lehet a nyilvánosság, hiszen ezzel olyan széleskörû a jelentkezõk, a kezdeti lelkesedésem kissé alábbhagyott és ismertséget érhet el, amire egyébként nem volna lehetõsé- félretettem a dolgot. ge. Persze az is lehet, hogy egész egyszerûen azért használ Idén nyáron azonban amolyan váratlan fordulatként né- CC licencet, mert szeretné megosztani másokkal tudását, hány hét leforgása alatt minden összeállt. Dudás Ági alkotásával hozzájárulni az emberiség szellemi javainak (a szoftverjoggal foglalkozó új cikksorozatunk szerzõje) gyarapításához. A Linuxvilág olvasóitól feltehetõleg nem jelentkezett nálunk, hogy szívesen publikálna a lapban és áll távol ez a fajta gondolkodásmód, mivel a nyílt forrású mivel tudtam róla, hogy jogász és az FSF.hu egyik aktivistá- fejlesztéseket és a szabad szoftver mozgalmat igen hasonló ja, kaptam az alkalmon és elmeséltem neki a CC honosításá- © Kiskapu Kft. Minden jog fenntartva elvek vezérlik. nak ötletét. Neki is megtetszett a dolog és hamarosan kide- Hogy van rá igény, az nem kétséges – elég csak a Google-lal rült, hogy – tõlünk teljesen függetlenül – másokat is foglal- rákeresni a „Creative Commons” szavakra, vagy böngészés koztat a CC ügye. Velem csaknem egy idõben kereste meg közben megfigyelni, milyen sokan használják már most is õt Bodó Balázs, a BME Média Oktató és Kutató Központjá- honlapjaikon. nak (MOKK) munkatársa. Némiképp sorsszerû találkozásunk után nem sokkal már Több, mint licenc konkrét terveket szõttünk. Megvolt a projektvezetõ, hiszen A CC licencek tehát megkönnyítik azoknak a szerzõknek Ági elvállalta ezt a szerepet, a MOKK „személyében” pedig a dolgát, akik nem szeretnék „bezárni” mûvüket a hagyo- volt már szervezetünk is. mányos copyright korlátai mögé. Ezzel elõsegítik a gondo- Felmerült egy-két probléma a hazai szerzõi joggal való latok, ismeretek szabadabb áramlását és tágabb értelemben harmonizációval kapcsolatban, de reményeink szerint a kultúra terjedését. ezek áthidalhatók. (Errõl a témáról egy késõbbi alkalom- Ám a Creative Commons tevékenysége nem pusztán mal számolunk be). Úgy véltük mindenképpen érdemes könnyen alkalmazható licencek készítésében és közzététel- elkezdeni a szervezést, és elindulni a megvalósítás felé. ében merül ki. A fordítás már elkezdõdött, halad a közös munka, aminek Bár nem kívánnak felépíteni egy központi adatbázist, mivel eredményeirõl a Linuxvilág lapjain is beszámolunk. hisznek a web decentralizált modelljének hatékony mûkö- Hamarosan elindítjuk a creativecommons.hu honlapot is, désében, a CC licenccel publikált alkotásokról elérhetõvé ahol az érdeklõdõk folyamatosan nyomon követhetik az tesznek egy folyamatosan bõvülõ gyûjteményt. És ami még eseményeket. ennél is fontosabb: úgy tervezték meg a licenceket, hogy ne Amikor legutóbb jobban körülnéztem a weben, fel- csak a szerzõk használhassák egyszerûen mûveikhez, ha- tûnt, hogy már számos magyar oldalon is felbukkan nem a jogvédelem típusa alapján könnyen meg is lehessen a CC logója. Ez egyértelmûen mutatja, hogy idehaza is találni azokat. A licencek kódjába szerkesztett metaadatok van rá igény. Remélem már nem kell soká várnunk arra, alapján azonosíthatók a megfelelõ tartalmak, és fellelhe- hogy magyarul is egyre több helyen olvashassuk a kö- tõk a weben. vetkezõ feliratot: „Néhány jog fenntartva!” Icommons és a magyar CC projekt Én körülbelül egy éve találkoztam elõször a Creative Kelényi Attila ([email protected]) Commons névvel a weben barangolva. Külföldi oldalakon, A Kiskapu Kft. ügyvezetõ igazgatója, fõleg blogokon, egyre gyakrabban találkoztam a felhasználá- a Linuxvilág marketingvezetõje. Menthetetlenül si licencet jelzõ logóval és merõ kíváncsiságból megnéztem, netfüggõ, de szenvedélye az aikido, a spanyol mi is ez tulajdonképpen. Rögtön megtetszett és mivel éppen nyelv és ha tehetné, csak utazna. akkortájt dolgoztunk a Linuxvilág online archívumán, ké-

zenfekvõ ötletnek tûnt, hogy alkalmazzuk a magazin cikkei-  nek jogállására is. A honlapjukból az is kiderült, hogy fiatal KAPCSOLÓDÓ CÍMEK kora ellenére a CC kezdeményezése nemzetközivé fejlõdött. Az úgynevezett icommons projekt keretében más országok  is csatlakozhatnak a CC-hez, és a helyi jogrendnek megfele- http://creativecommons.org/ lõ, saját nyelvükre fordított licenceket tehetnek elérhetõvé.  http://www.lessig.org/blog/ Fel is vettem a kapcsolatot a nemzetközi CC projekt, az  http://search.creativecommons.org/index.jsp iCommons egyik képviselõjével, és felajánlottam, hogy  a fordítást és a honosítást a kiadónk elvállalná. Egyrészt http://mokk.bme.hu/ örömmel fogadtak, másrészt jelezték, hogy a dolog azért

78 Linuxvilág Töprengõ

Szoftverjog – személyhez fûzõdõ jogok A szerzõknek, mint már korábban is emlegettem, két nagy csoportba sorolható jogosultsági vannak. Az elsõ halmaz a személyhez fûzõdõ jogoké, míg a második a vagyoni jogoké. Ismerkedjünk meg ezekkel kicsit közelebbrõl. © Kiskapu Kft. Minden jog fenntartva

Elhatárolás adott hölgy joggal háborodhat fel, és fordulhat a bíróság- A személyhez fûzõdõ jog, mint kifejezés kicsit talán félreve- hoz. 2004. januárja óta egységesebb lett a jogrendszer zetõ, hiszen, ha valaki ezt a szókapcsolatot említi, akkor – annyiban, hogy most már nem csak a munkaviszony, a szerzõi jogászokon kívül – mindenkinek elõször a polgári hanem a munkavégzésre irányuló egyéb jogviszonyok- törvénykönyv vonatkozó rendelkezései jutnak eszébe. ban is az igazságtalan megkülönböztetés esetében Amely – bár rokon terület – mégsem pontosan egyezik a munkáltatót (megbízó, foglalkoztató, stb.) terheli a bi- a szerzõi jogban használt fogalommal. zonyítási kötelezettség, mely szerint a kisebb bér fizetésé- 1 Lássuk elõször a polgári jogot, mint mögöttes joganyagot . nek más okai is fennállnak,... hogy a megkülönböztetés Tehát a személyhez fûzõdõ jogoknak ebbõl a szempont- nem volt jogellenes. ból több alcsoportja lehetséges. Ilyenek a Ptk. 76.§-ban fel- soroltak: Nézzük ezt a példát kicsit alaposabban kifejtve: Klementina tizenkét éves kora óta perfekt C programozó, • az egyenlõ bánásmód követelményének megsértése, az évek folyamán elvégezte az egyetem informatika karát, • a lelkiismereti szabadság sérelme, tudását bõvítette (C++ -ban is profi lett), látókörét szélesí- • a személyes szabadság jogellenes korlátozása, tette, és valamely rejtélyes okból kifolyólag úgy döntött, • a testi épség, az egészség, valamint a becsület és az em- hogy a szõke haj, jobban megy a szemszínéhez. Már másfél beri méltóság megsértése éve dolgozik az egyik szoftveróriásnak, mikor felvesznek mellé egy új kollégát: Taszilót. Láthatjuk, hogy itt többnyire az Alkotmányból is ismert sza- A projecten közösen munkálkodnak, Klementina tanít- badságjogok köszönnek vissza, a diszkrimináció tilalma, gatja az új jövevényt, a bérüket banki átutalással kapják, a szabad vallásgyakorlás, az emberi méltóság védelme. minden szép és jó, mindaddig, míg egy céges bulin ki A bíróság jogértelmezése pedig még szélesebbre tárja eze- nem derül, hogy Klementina zöldfülû munkatársa közel ket a kapukat. Elég ha csak arra gondolunk, hogy 1995-ben másfélszer annyit keres, mint a lány. Ha most hõsnõnk, a Legfelsõbb Bíróság megállapította a hátrányos megkülön- miután sikertelenül próbálja meg tisztázni a helyzetet böztetés tényét, mikor egy pénzintézet, illetve egy biztosító a cégvezetéssel, bírósághoz fordul, a cég kell, hogy bizo- társaság bejárata nem tette lehetõvé, hogy azt mozgássérült nyítsa mennyi egyéb – a cég számára hasznos, és ezért személyek is megközelítsék. a magasabb fizetésében megmutatkozó – erénye van A szerzõi jogban kifejezetten az egyenlõ bánásmód követel- Taszilónak. Amennyiben ez nem sikerül, Klementina fize- ményét felállító szabályt nem találunk. Erre vonatkozó kö- tésemelésre is feltehetõen sor kerül, – a bíró személyétõl vetkeztetést vonhatunk le mégis abból, hogy a szerzõsség illetve a kereseti kérelemtõl függõen – akár több hónapra lehetõségét kifejezetten csak a mû megalkotásától teszi visszamenõleg is. a törvény függõvé. A helyzet „nemszabályozással” pedig Ha azonban a munkavállalók közötti különbségté- visszautal a Ptk. említett paragrafusára. tel alapja, hogy Klementina csak fõiskolát, míg az új jövevény két egyetemet is elvégzett, a fizetés különb- Csak erélyesen! ségnek helye van még akkor is, ha Tasziló C++ Ha például egy megrendelõ szoftver fejlesztõ munkájáért tudása (a közgazdász és gépész diplomája dacára) csak azért fizet kevesebbet, mert a programozó nõ, az fabatát sem ér.

1 Mögöttes annyiban, hogy ha nem találunk esetleg a szerzõi jogban megfelelõ szabályokat, akkor a jó öreg Ptk-t kell elõvennünk, és abban kutatni válasz után.

www.linuxvilag.hu 2004. november 79 Töprengõ

A névviselés joga a weben. Kicsit mások a körülmények, ha mondjuk Mindenkinek joga van a névviselésre. Sõt, tovább megyek a jogdíjnak egy jelentõs részét már megkaptuk, a tény- – a törvény korlátai közt, mindenkinek joga van arra, leges programátadás elõtt. hogy olyan nevet viseljen, amilyet szeretne. Ennek szabá- Ha irodalmi párhuzamot keresünk, Kafka az egyik leg- lyait egy 1982-bõl származó törvényerejû rendelet szabá- jobb példa. Az örök elégedetlen író, aki szinte mániáku- lyozza. A névváltoztatást a belügyminiszter engedélyezi. san vetette tûzre írásait, halálos ágyán is azt kérte barátai- Az elsõ változtatás 10.000 minden további 20.000 forint. tól, hogy égessék el a be nem fejezett, illetve ki nem adott Ha például szeretnénk felvetetni nicknevünket az anya- mûveit. Az egyes gimnazisták szerint átkozott Max Brod könyvbe, annak várhatóan ilyen illeték költségei lesz- azonban nem hallgatott rá, így lehet jelenleg is tananyag nek... és várhatóan nem fog sikerülni, mert a neveknek „A per”, illetve „A kastély.” Talán pont ezen a példán a magyar nyelvhez kell igazodniuk. Persze ha András okulva rendelkezik jelenleg is úgy a szerzõi jogi törvény, néven csetelünk, miközben minket Péternek hívnak, hogy az alkotó halálát követõen elõkerült mûvek vo- a változás nem kudarcra ítélt. Csupán annak van kevés natkozásában a szerzõ nyilvánosságra hozatalhoz való esélye, hogy pl: Dudás Eowen Ágnessé válhassunk az hozzájárulását megadottnak kell tekinteni. Az már más eljárást követõen. kérdés, hogy ezt a vélelmet jogutódja, örökösei meg- A szerzõi jog ezen a ponton különleges helyzetet teremt, dönthetik, ámbár miért tennék, mikor a felhasználási ugyanis lehetõséget ad – anyakönyvezés nélküli – névvál- szerzõdéseket helyette õk fogják megkötni, és a jogdíj © Kiskapu Kft. Minden jog fenntartva toztatásra. Felvett néven u.n. „mûvésznéven” vagy „írói ál- õket illeti majd meg. néven” is dolgozhatunk. Ahogy azt már sokan elõttünk Ugyanennek a jognak van másik arca is. Ez pedig a nyil- megtették, elég csak P. Howard-ra gondolunk. vánosságra hozatalhoz adott hozzájárulás visszavonása. Ugyanakkor figyelnünk kell arra, hogy választott nevünk- Elsõ ránézésre idegennek tûnhet ez a szabály. Való igaz, kel ne sértsünk meg mást. Azaz, nem szórhatjuk tele a falu ritkán használt jogintézményrõl van szó. Leginkább azért, postaládáit röplapokkal, melyeken a szomszédunk neve mert már megadott engedélyt visszavonni csak alapos alatt, silány minõségû, és minden egyes falubelit vérig sértõ okból és kártalanítás mellett lehet. A visszavonás hatálya verseket költöttünk, bármennyire is haragszunk rá a zöl- ilyenkor teljes, a visszavont mûvet sem felhasználási szer- debb füve miatt. zõdés keretében, sem szabad felhasználás formájában nem Külön érdekessége a dolognak, hogy ha mondjuk Kertész lehet használni. A visszavonási jog a szerzõdéses jogvi- Áron fiaként az Imre nevet kaptuk, és valamikor 20-25 éve- szonyban felmondási oknak minõsül, és csak akkor gyako- sen íróvá cseperedünk, – kérésre – a saját nevünket leszünk rolható, ha a szerzõ a kártalanítási költségeket fedezõ biz- kénytelenek valamilyen kiegészítõ jellel, toldással vagy szó- tosítékot ad. A további kitétel pedig az, hogy ha a szerzõ val ellátni, nehogy összetéveszthetõvé váljunk a Nobel-dí- ismételten meggondolja magát és mégis szeretné nyilvá- jas elõdünkkel, persze asztalos vagy pék nyugodtan lehe- nosságra hozni mûvét, a korábbi felhasználási jogosultat tünk a megkülönböztetõ jelzés nélkül is. u.n. „elõfelhasználási jog” fogja megilletni, ami az elõvá- Tekintve, hogy jóhírnév sérelmének kérdését már az elõzõ sárlási joghoz hasonlít. számban tisztáztuk, átevezhetünk ténylegesen a szerzõi jog tengerére. Vitorlát bonts! Példálódzunk... Adott egy programozó, nevezzük Java Benedeknek, A mû nyilvánosságra hozatalának joga aki magányos harcosként fejlesztget a kishúgának egy A törvény által említett elsõ jogosultság a mû nyilvános- estimese felolvasó programot. A program mûködik. ságra hozatalának joga. Ez egészen pontosan azt jelenti, Hug persze elmeséli az oviban mindenkinek, hogy neki hogy a szerzõ maga döntheti el, meddig akar az asztalfi- milyen nagy és okos bátyja van. A programnak híre megy, ókja – winchestere – számára dolgozni, és mikor ad egy és az Ovónõk Országos Szövetsége (a továbbiakban: esélyt magának, hogy mûvével elõrukkolva világhírre OOSz) is szemet vet az alkotásra, meg is keresik progra- tegyen szert. A nyilvánosságra hozatalhoz adhatunk szó- mozónkat. Megállapodnak a feltételekrõl, a fizetendõ díj- ban, vagy írásban engedélyt. Megadottnak tekinthetõ ez ról és Benedek buta módon – vagy mert nem olvasott elég akkor is, ha a programunkat, alkotásunkat közzé tesszük Linuxvilágot – kizárólagos jogokat ígér a Szövetségnek. a neten. A nyilvánosságra hozatal lehetõség és nem köte- Eltelik pár nap, és megjelenik a Babysitterek Ligája, akik lesség. Ugyanakkor vélelem szól amellett, hogy ha egy lényegesen több pénzt ajánlanának a programét, ami felhasználási szerzõdés keretében jogokat adunk az álta- azonban már elkelt. Benedek, miután tanulmányozta lunk alkotott mû többszörözésére és terjesztésére, akkor a szerzõi jogi törvényt, azt a csalafinta megoldást találja egyúttal a nyilvánosságrahozatalához is hozzájárultunk. ki, hogy a program nyilvánosságrahozatalához adott jo- Ez ugyanakkor fordítva nem igaz. Ha tehát egy játék- got visszavonja, ugyanis, indokolása szerint „nem helyes programot átadunk kipróbálásra, az nem jelenti azt, hogy az, ha a gyerekeknek géppel olvastatunk fel ahelyett, az, aki megkapta továbbadhatja vagy akár másolatokat hogy magunk mellé ültetnénk a kicsiket minden este, készíthet róla. és mesélnénk nekik óriásokról és törpékrõl, meg sárká- Engedély kell nem csak a mû egészének, hanem a részletek nyokról, akik nem eszik meg a királylányokat vacsorára.” nyilvánosságra hozatalához is. Tehát ha a játékprogram Az indok – lássuk be – alapos. Az Ovónõk Szövetsége bá- demo változatával akar a megrendelõnk kedvet csinálni natosan ugyan, de tudomásul veszi a döntést és a szerzõ- a vásárlóknak, a demo változatot is csak az engedélyünk- dés felmondását. Mivel még túl sok beruházást nem esz- kel teheti közzé egy számítógépes lapban vagy akár közöltek ezzel kapcsolatban, Benedeknek mindössze azon

80 Linuxvilág Töprengõ

levelek postaköltséget kell megtérítenie, amelyekben saj- esetben csak a forráskódban történik meg, amit azonban nálattal értesítik a megrendelõket, hogy a termék mégsem – leszámítva a nyílt forráskódú programokat – titokban kerül forgalomba. Benedek ezután – mondván hogy újra tartanak. megváltoztak az indokai, mert a „gépi mese még mindig A név feltüntetésén kívül megilleti a jog a szerzõt, hogy fel- jobb, mint a semmilyen” – leül tárgyalni a szoftverrõl lépjen azzal szemben, aki szerzõi minõségét kétségbe vonja. a Babysitterekkel, és ha idõközben már okosodott (vagy Megilleti ez a jog azt is, aki a felhasználási jogokkal rendel- megkeresett egy ügyvédet), akkor nekik nem kínál kizáró- kezik, aki adott esetben a „c” betû jogosultja. lagos jogokat. A szerzõdést azonban annak megkötése elõtt meg kell mutatnia az OOSz-nek, és ha azok az újra- A mû integritásához való jog fogalmazott feltételek mellett szerzõdni szeretné- A legfontosabb és valóban használható jog azon- nek, õket illeti meg az elsõbbség. ban a mû egységének védelme. A szerzõ Hol van ebben a turpisság? Ott, hogy érdekeit sérti a mû bármiféle torzítása, ha Benedek idõszakos megingása becsületére vagy hírnevére sérelmes nem volt õszinte, és a gyerekek iránt eltorzítása. Ide tartozik például, ha érzett rokonszenve – mellyel élõ valaki trójai falovakkal teszi tele mesélõt kívánt nekik program más programját. Ez persze nem helyett – csak színlelés volt, jelenti azt, hogy bármiféle válto- könnyen elõfordulhat, hogy zás sérelmes, hiszen a mûvet © Kiskapu Kft. Minden jog fenntartva az OOSz bírósághoz fordul, elõnyére változtatható persze és kéri a helyzet orvoslását, – a magyar szabályok sze- méghozzá olyan módon, rint – csak a szerzõ hozzájá- hogy az eredetileg kial- rulásával. A szerzõ azonban kudott díjért nyerjen ki- visszaélésszerûen ezen zárólagos felhasználási hozzájárulást nem tagad- jogokat. hatja meg. A helyzet még egy kicsit Szoftver esetében például komplikáltabb, ha Bene- annak egy nem tetszõ dek a mesefelolvasó prog- irányban történõ tovább- ramot munkaviszony ke- fejlesztése esetén az enge- retében fejlesztette. Ha dély megtagadásával ilyen esetben, a szoftver – munkaviszonyban alko- elkészítését és bemutatását tott mû kivételével – meg- követõen következik be fékezhetõ a folyamat. életében az a lelki törés, A kivétel esetében azonban amely miatt nem akarja, ismételten csak a név elhall- hogy a gyerekek PC mesélõt gatása kérhetõ. hallgassanak, akkor a folya- matot már nem tudja megállí- Végszó tani. Mindössze annyit érhet A személyhez fûzõdõ jogok el, hogy a felolvasó szoftverrõl másik sajátossága, hogy azok lemarad a neve. Azaz, ha nem nem ruházhatóak át, azokról le- árulja el senkinek, senki sem fogja mondani nem lehet, már nem lé- megtudni, hogy õ volt a „gépme- tezhet az a rabszolga jellegû munka, sélés” atyja. mikor az alkotást egy jó nevû ember mûveként jelenik meg, csak azért, mert A névfeltüntetéshez való jog annak „neve eladható.” Ez elõfordulhatott Az elõbbi példával el is jutottunk a névviselés régen híres és lusta írókkal... ám mostanában problémájához. Aki volt már valaha nagyobb tekintve az egyébként is névtelen programozókat, cégnél programozó, vagy próbálta már megtalálni kevéssé valószínû. Le kell szögeznünk azonban, hogy mi- egy szoftver szerzõjét, az meglepõdve olvashatta az elõ- kor egy szoftvert „eladunk” egy cégnek, az említett jogaink zõ sorokat. Nem, nem az történik, amire következtetnénk, megmaradnak. Felszólalhatunk, ha azt a nevünk nélkül hogy minden programozó mindig visszavonja a nyilvá- akarják közzé tenni, ugyanúgy, mintha azt megcsonkítva nosságra hozatalhoz adott engedélyét, és ezért kell õket akarják közzétenni. eltüntetni a cd-rõl. Hanem sokkal inkább az a jogsértõ tendencia hatalmasodik el – nem kevés amerikai beha- Dr. Dudás Ágnes ([email protected]) tásra – hogy a szerzõk névtelenségbe vesznek. Sokkal in- ügyvédjelölt, az FSF egyik aktivistája. 2004-ben kább az a helyzet, hogy nem tudják, jogukban állna szer- végzett az ELTE Jogtudományi Karán. Szakdol- zõként feltûnni, vagy egyszerûen csak nem merik szóvá gozatát a szoftverek szerzõi jogi védelmérõl tenni ez irányú igényeiket. Szoftverek esetében nehéz- írta, a 2003-as évet pedig e terület kutatásával ség az is, hogy a szerzõk nevének feltüntetésére adott a berlini Humboldt Egyetemen töltötte.

www.linuxvilag.hu 2004. november 81