Beköszöntõ

A linuxos társadalom ebben az évben is roppant nagy

lépéseket tesz a kamaszkor- © Kiskapu Kft. Minden jog fenntartva ból a felnõttkor irányába. A kernel.org oldalra kikerült a 2.6.0-s rendszermag test1-es változata, ami már elérhetõ közelségbe hozta a legújabb megbízható rendszermag- sorozatot. A 2.4-es sorozat megjelenésekor mindenki hatalmas várakozással tekin- tett a közeli jövõbe, lelki szemeink elõtt nagyvállalati kiszolgálókon futó Linuxok lebegtek. Ez többé-kevésbé meg is valósult, a Linux hatalmas nép- Csontos Gyula szerûségre tett szert: mind a vállalati a Linuxvilág szakmai szerkesztõje. piacokat, mind az otthoni felhasználók szakmai témájú leveleiket örömmel szívét hódítgatja. A Microsoft most már várja a következõ levélcímen: ellenfelének tekinti a Linuxot és igyek- [email protected] szik mindent megtenni piaci verseny- elõnyének megtartásáért. Eljött ez az idõ is, sokan sokféleképpen gondoltuk ezeket a dolgokat, mind idõben, mind pedig kiterjedésben. Szerencsére a Linux hihetetlen gyors fejlõdésének köszön- hetõen, sokkal hamarabb bekövetkeznek hatalmas változások az elfogadása terén. Immár mi is rendelkezünk saját „nemzeti” Linuxszal, az UHU-Linux Kft. jóvoltából. Ezzel elhárult az ország meghódításának akadálya… Vezérfonal

Programvadászat

égen adtunk már közre teljes Linux-terjesztést, ezért a mostani mellékletünkön megtalálható a SoL – Server optimized Linux legfrissebb kiadása. Ezt a Linuxot az Rantitachyon cég fejleszti Bécsben. Mint neve is mutatja, ez egy kiszolgálóra készített Linux. Nagyon sok kiszolgálóprog- ram található a kiadásban, jelenleg a 16.00-s változatnál tart. Kifejezetten i686-os gépekre fordí- tották, így a régebbi gépeken (pél- dául: i486, Pentium) ne is próbál-

© Kiskapu Kft. Minden jog fenntartva kozzunk meg a telepítésével. Az alábbiakban kedves olvasóin- kat végigvezetem a SoL Linux telepítési menetén, ami sok tekin- tetben eltér a mostanság megszokott telepítéstõl. Szinte csak a Ezután egy gyors hálózati beállítás következik: a gép nevét, fájlok másolásából áll, beállítani mindent a késõbbiekben kell. a tartománynevét, az IP-címét és a névkiszolgáló nevét kell megadni neki. A kezdetek A LILO telepítése után a rendszer újraindítása következik. Helyezzük be a CD-t a meghajtóba, és indítsuk újra a gépet, ha a BIOS-ban be van állítva, hogy a rendszer indítása Újraindítás után CD-ROM-ról történjen, akkor a telepítõ azonnal elindul. Mivel a telepítés alatt nem adtunk meg rendszergazdai Különféle indítási módok közül választhatunk, vagy egysze- jelszót, elsõ feladatunk még a rendszerindítás alatt ennek rûen csak üssünk ENTER-t, és kezdjünk neki a telepítésnek. pótlása lesz. A rendszer telepítésével végeztünk is, most jön install – egyszerû telepítés. a nehezebb feladat, a beállítás. Én személy szerint nagyon installscsi – SCSI-meghajtókkal kiegészített telepítés. örültem ennek a „fapados” Linuxnak. Olyan érzésem volt, diag – különálló rendszerindításra alkalmas lemezkép. mintha visszapottyantam volna a régi szép idõkbe, a jóféle diagscsi – különálló rendszerindításra alkalmas lemezkép, rendszertelepítésekhez: nincs grafikus eszköz, amirõl nem SCSI-meghajtókkal. tudja az ember, hogy mit is csinál, hanem ha valamelyik memtest – memóriatesztelõ program indítása. beállítófájlba beleírok valamit, akkor az úgy fog mûködni, ahogyan én szeretném. Indítsuk el a telepítést! Elsõ lépésként a merevlemez kiosztását kell elvégeznünk, Beállítások ehhez a már jól megszokott cfdisk programot adja a telepítõ. A rendszer beállításai XML-alapokon nyugszanak, a legtöbb Készítsünk egy legalább 2 GB-os lemezrészt a SoL Linuxnak, beállításhoz tartozó fájlt a /etc/rc.d/conf könyvtárban találhat- ugyanis ennél kisebb helyen nem érzi jól magát. Miután juk. A kiszolgálóprogramok pedig a /server könyvtárban kaptak ezzel végeztünk, válasszuk ki a megfelelõ lemezrészt, és helyet, találhatunk itt Apache, Apache2, OpenLDAP, Postgre- formázzuk meg. Ezen a ponton ext, ext3 vagy a ReiserFS SQL, MySQL, Samba, Squid, DHCP-kiszolgálókat – mindegyik közül lehet választani, tapasztalataim szerint az ext3-mal a saját könyvtárában lévõ beállítófájlokban szabható testre. a telepítõ nem képes hiba nélkül végigfutni. A telepítés ezután kezdõdik, ami igazából fájlok sokaságának Rendszermag 2.6.0-test1 végeláthatatlan másolásából áll. Valójában a telepítõ 15 percig Végre elérhetõ közelségbe került a legújabb rendszermag so- ír (majdnem ennyi idõ alatt végzett is), de nekem egy örökké- rozat, ezzel már bátran ismerkedhetünk. Sok újdonság található valóságnak tûnt. benne, érdemes elkezdeni a beállítások próbálgatását. A tapasz- talataim azt mutatják, hogy minden gond nélkül lefordítható és a rendszer elindítható vele. A modulokat sajnos nem tudtam használni, ezért minden meghajtót a magba kellett fordítanom, így kiválóan mûködött minden egység, legyen az asztali PC, vagy a SiS630-as lapkakészlettel megáldott notebookom. Honlapjuk a  http://www.sol-linux.com címen érhetõ el.

Csontos Gyula ([email protected]) A Linuxvilág szakmai és CD-szerkesztõje. Szabadidejében szívesen mászik hegyet és kerékpározik.

6 Linuxvilág Hír-lelõ

A hátsó ajtón osonva S eljött az Opteron Mondtam már, hogy betörtek hozzánk? A Washington Post egyik írása szerint az Számos határidõ-csúsztatás után úgy néz Az Egyesült Államokban új, figyelemre amerikai cégek ugyan jelentõs erõforráso- ki, végre a felhasználókhoz is eljut az méltó folyamatokat érzékeltetõ törvény kat fordítanak számítógépes rendszereik AMD 64 bites processzora, az Opteron. született. A Security Breach Information védelmére, egy, csak elsõ ránézésre jelen- Az AMD elsõsorban azt a piaci területet Act (A biztonság megsértésérõl való téktelen tényezõ általában elkerüli a fi- célozza meg új termékével, amelyen a tájékoztatásról szóló törvény) értelmében gyelmüket, ez pedig a vállalati telefon- jelenléte elhanyagolhatónak mondható: mindazok a vállalkozások, amelyek Kali- rendszer. Egyre több olyan esetet jelente- a kiszolgálók forniában folytatják tevékenységüket, nek, amikor a betörõk a hangposta- vagy és a mun- vagy van kaliforniai az ügyfeleik között, a telefonrendszert támadják meg, majd kaállomások kötelesek vevõiket tájékoztatni, ha szá- illetéktelen hozzáférésüket felhasználva szegmensét. mítógépes rendszerüket eredményes más városokban vagy országokban üze- Az Opteron támadás érte, és ennek során az ügyfelek melõ internetszolgáltatókhoz indítanak többféle adatai is elérhetõvé váltak. A törvénytõl távolsági hívásokat. Így névtelenül tevé- változatban azt várják, hogy ügyfeleik adatainak kenykedhetnek, a szolgáltató pedig csak létezik, a gondosabb kezelésére bírja a cégeket, annyit észlel, hogy a telefonhívást a meg- 100-as sorozat az egyprocesszoros mun- amelyek – ha az adatok biztonságának támadott cég rendszerébõl indították. kaállomásokba készül, a 200-as sorozat sérülésérõl nem tájékoztatják az érintet-

Mivel az újabb vállalati telefonhálózatok tagjait kétprocesszoros, míg a 800-as teket – jogi eljárás elébe néznek. Valószí- © Kiskapu Kft. Minden jog fenntartva a számítógépes hálózatokkal is össze sorozat képviselõi a négy- és nyolcpro- nûleg az is fontos ösztönzõ erõt jelent vannak kapcsolva, roppant vonzó cél- cesszoros gépekbe szánják. a biztonság növelésében, hogy a betöré- pontot kínálnak. A számítógépes rend- Az AMD új lapkái viszonylag elfogad- seket a továbbiakban – törvényesen – szer védelme hiába megfelelõ, ha a ható áron kaphatók, például a 840-es nem lehet majd eltitkolni, így a kellõ telefonhálózat felõl behatolva könnye- modell 749 dollárba kerül, a 140-es gondosság nélkül eljáró vállalatoktól dén lehet adatokat lopni vagy károkat modellért pedig mindössze 229 dollárt az adatvédelmi szempontból tudatos okozni úgy, hogy eközben a támadó kell fizetni. Részletesebben minderrõl ügyfelek el fognak fordulni. teljes névtelenségbe burkolózhat. a 22. oldalon olvashatunk.  http://www.amd.com Egy próbát megér Párosan szép A Lindows.com bejelentette LindowsCD A Sun Microsystems olyan kettõs meg- A G5 lett az elsõ nevû termékét. A LindowsCD a leg- oldást mutatott be, ami a Linuxot Az Apple és az IBM közösen mutatta be újabb, 4.0-s számot viselõ LindowsOS-t és egy valós idejû mikrorendszermagot a világ elsõ 64 bites asztali processzorát, tartalmazza, és telepítés vagy különö- házasít össze. A Jaluna nevû, amúgy a PowerPC G5-öt. Még valamiben világ- nyílt megoldás lényege az, hogy valós elsõ, vagy legalábbis annak mondja ma- idejû jellemzõkkel ruházza fel a Linux gát az Apple, mégpedig abban, hogy az alapú eszközöket úgy, hogy magát a új processzor sebb beállítások végrehajtása nélkül Linux-rendszermagot nem kell módo- köré épülõ teszi lehetõvé a Linux kipróbálását. sítani. A cég megoldásának használa- Power Mac G5 A CD-rõl futó terjesztés a legújabb Lin- takor a fizikai processzor virtuális pro- gépe a világ dows-változat szinte minden szolgálta- cesszorként látszik a rajta futó rendsze- leggyorsabb tását biztosítja, vagyis nemcsak felismeri rek és programok számára, a memórián személyi szá- az õt futtató gép összetevõit, illetve pedig lényegében két rendszermag mítógépe. teljes körû, azonnal használható (plug osztozik. A valós idejû futást igénylõ A G5 procesz- and play) támogatást nyújt, de multimé- programokat – amolyan „programból szor természe- diás alkalmazásokat és irodai csomagot megvalósított társprocesszorként” – a tesen már 64 bites, de a 32 bites alkalma- is találunk benne. Sun C5-ös valós idejû rendszermagja zások natív futtatására is képes. Legerõ- A LindowsCD-t azoknak szánják, akik ki kezeli, míg az általános célú alkalmazá- sebb példányának órajele 2 GHz, elvileg szeretnék próbálni a Linuxot, ám külön sok Linuxon futnak. A Linuxot többen 18 hexabájtnyi memóriaterületet tud gépet nem tudnak ilyen célra biztosítani, is próbálták, próbálják valós idejû képes- megcímezni. A G5 képes a párhuzamos illetve meglévõ – jellemzõen Windowst ségekkel felruházni, ám ez egyre több feldolgozásra, két lebegõpontos egy- futtató – gépük merevlemezének a ág kialakulását eredményezi, és a módo- séggel rendelkezik, és teljes értékû szim- tartalmát sem szeretnék megbolygatni. sított részek miatt a fõ vonal fejlõdését metrikus többprocesszoros támogatással Az ötlet nem új, nem is rossz, az viszont is nehezebb követni – a Jaluna által bír. A lapka 130 nanométeres „szilícium furcsa, hogy a felhasználók elhódítására éppen ezek a nehézségek hárulnak el. a szigetelõn” eljárással készül, összesen szánt terjesztést normál körülmények A Jaluna háromféle változatban mutatko- 58 millió tranzisztort tartalmaz. A rend- közt harminc dolláros áron kínálják. zott be. A Jaluna-2/EL egy egyszerû beá- szervezérlõvel 1 GHz órajelû összeköt- Igaz, aki ezt nem akarja kifizetni, a pilla- gyazott Linux-változat, a Jaluna-2/RT egy tetésen keresztül tartja a kapcsolatot, így natnyi akció keretében a LindowsOS beágyazott Linux és egy szigorúan valós másodpercenként akár 8 GB adatot is 4.0-hoz mellékelve most ajándékba is idejû mûködésre képes C5 mikrorend- meg tud mozgatni. A DDR memóriával megkaphatja, illetve különféle kedvez- szermag párosítása, míg a Jaluna-2/VL egy 128 bites, 400 MHz órajelû csatla- ményeket vehet igénybe – csakhogy a esetében a C5 mikrorendszermag virtu- kozáson keresztül kommunikál, Hyper- csábítás trükkjei között elvileg nem sze- ális Linux-példányok vezérlését végzi, Transport felületének órajele 800 MHz, repel az ügyfél pénztárcájában való tur- amelyek természetesen ebben az esetben illetve az AGP 8x Pro grafikai csatoló kálás, annak késõbb kell következnie. is ugyanazon az eszközön futnak. felületet is támogatja.  http://www.lindows.com/buyLCD

www.linuxvilag.hu 2003. augusztus 7 Hír-lelõ

SQL-Legder Azonnal oldódó adatbázis Gigabit minden asztalra Az SQL-Ledger olyan integrált, ingyene- A Pogo Linux – linuxos eszközöket gyár- Az SMC új termékcsaládot jelentett be, sen használható ügyviteli rendszer, ami- tó cég – és a MySQL AB bejelentette, amellyel a cég szándékai szerint minden vel a cégek könnyen és rugalmasan vé- hogy közösen fejlesztik ki az elsõ MySQL munkaállomásra Gb/s sebességû háló- gezhetik el a megrendelések, a számlák alapú adatbázis-kezelõ eszközt – egy zati kapcsolat kerülhet. A családba egye- feldolgozását, illetve azok egyidejû kettõs olyan elõre összeállított, megfelelõ vassal lõre két 10/100/1000 Mb/s sebességû könyvelését, valamint figyelemmel kísér- és programokkal felszerelt készüléket, hálózati kapcsoló tartozik, egy öt- és egy hetik készletmozgásaikat. A program ami kifejezetten adatbázis-kezelést végez. nyolckapus, illetve egy 32 bites, PCI- felhasználása rendkívül sokrétû, mûkö- A DataWare 2600 Serverbõl a két társaság foglalatba illeszkedõ hálózati kártya. dik Windows, Linux, Macintosh operá- együttmûködése révén várhatóan a A két kapcsoló 135 és 195 dolláros áron ciós rendszer alatt, és a legfejlettebb legjobb megbízhatóságot és teljesítményt lesz kapható, tehát filléres dolognak adatbázismotorokat (Postgres, Oracle) sikerül majd kihozni, miközben telepítése semmiképpen nem nevezhetõk, míg használja. Önálló gépeken, helyi hálóza- gyors, használata egyszerû lesz. Mivel a a hálózati kártyát barátságos 30 dollárért ton, igény szerint Interneten keresztül gép nyílt forrású megoldásokra épül, ára lehet majd megszerezni. is használható. Fontosabb jellemzõi: jóval kedvezõbb lesz az ilyen jellegû, de  http://www.smc.com • Kiszolgálóalapú felépítés zárt eszközökénél. A Pogo Linux hasonló Az adatok SQL adatbázisban táro- termékeket más területekre is kínál, így Majd írj a vonatról

© Kiskapu Kft. Minden jog fenntartva lódnak (kiszolgáló), amit szabványos StorageWare néven nagy méretû tárhe- Az Intel, a Bell Canada és a VIA Rail böngészõvel (ügyfélprogram) lehet lyet biztosító, Serial ATA alapú fájlkiszol- Canada együttmûködésének köszön- elérni. Nemcsak grafikus böngészõk- gálókat, WebWare néven pedig elõre hetõen a VIA szerelvényein Montreal kel lehet használni, hanem karak- összeállított webkiszolgálókat forgalmaz. és Toronto között utazók hamarosan teres változatokkal is. A fejlett adat-  http://www.pogolinux.com vezeték nélküli internetkapcsolatot is bázis-kezelésnek köszönhetõen az használhatnak. Ez lesz az elsõ alkalom, adatokkal egyszerre több felhasználó Újabb Magnia-fivér hogy Észak-Amerikában mozgó utas- dolgozhat, és tranzakció-kezelésének A Toshiba bemutatta a Magnia sorozat kocsit vezeték nélküli helyi hálózati kap- köszönhetõen váratlan események legújabb tagját, a Magnia SG30 Wireless csolattal látnak el, és valószínûleg a világ (pl. áramszünet) sem befolyásolják Mobility Servert. Az elsõsorban kisebb többi részében sem találni túl sok példát a tökéletes adatmentést. irodáknak szánt kiszolgáló a sorozat ilyesmire. Az internetkapcsolatot – amit • Könnyen kezelhetõ szerkezet többi tagjához hasonlóan fájlkiszolgá- a felmérések szerint az utazó üzletem- A program nyílt forrású, tehát lóként, nyomtatómegosztásra és az berek 90 százaléka igényel – mûholdon ingyenesen használható, a program- internet-hozzáférés megosztására hasz- keresztül biztosítják. A megfelelõ felsze- kód megtekinthetõ és szabadon nálható. Érdekessége, hogy beépített, reléssel rendelkezõ üzletemberek így módosítható. IEEE 802.11b szabvány szerint hozzá- már nemcsak a repülõtereken vagy a • Valós idejû könyvelés férési ponttal rendelkezik, a bõvítõkár- szállodákban férhetnek hozzá leveikhez A program valamennyi tranzakció- tyákat pedig három PCMCIA foglalattal vagy a vállalati magánhálózathoz, de jához elõzetesen beállított fõkönyvi fogadja. 1,2 GHz-es Intel Celeron pro- vonatról is. Vagyis senki nem ússza meg, számlák kapcsolódnak, így bármi- cesszorán Red Hat 8.0-s operációs rend- hogy az amúgy is fárasztó üzleti utakat lyen gazdasági esemény rögzítésével szer fut, ami 256 MB ECC SDRAM-mal aktív munkával töltse – a fejlõdést nem a könyvelés is önmûködõen zajlik. gazdálkodhat. A gép 128 bites, szabvá- lehet megállítani. • Szerkeszthetõ sablonok nyos titkosításra képes a vezeték nélküli A program elõre elkészíthetõ sablo- kapcsolatokon, továbbá támogatja a Egységes adatvédelmi nokból hozza létre a számlákat, virtuális magánhálózatokat és a MAC- szabályzat vállalatoknak szállítóleveleket, megrendeléseket, cím alapú szûrést. Ára 1500 dollár, Az IBM olyan új programozási nyelvet pénzügyi kimutatásokat (mérleg, vagyis hozzávetõlegesen 350 ezer forint. mutatott be, amelynek segítségével eredménykimutatás). a vállalatok az összes számítógépes • Testreszabható kimutatások Biometriai adatok az útlevélen alkalmazásra és rendszerre vonatkozóan Választható oszlopok, többféle Az Európai Unió bizottsága olyan útle- önmûködõ módszerrel tartathatják be rendezési lehetõség, részösszegek vél bevezetését tervezi, ami egy lapká- adatvédelmi házirendjüket. Az Enter- sorok megjelenítése, valamint ban biometriai adatokat, így ujjlenyo- prise Privacy Authorization Language többféle szûrésre nyílik lehetõség. matot és íriszmintát fog tárolni. A bio- XML alapú, a W3C P3P (Platform for A program akárhány ügyfél, illetve cég metriai adatok révén az útlevelek ere- Privacy Preferences) szabványára épül, ügyvitelének a vezetésére képes, és detiségének ellenõrzése jóval könnyeb- ennek elõírásait veszi át, és tartatja be mindegyik ügyféladatbázishoz korlátlan bé válna, és az utóbbi években jelentõs az összes vállalati alkalmazással és adat- számú felhasználó kapcsolható, külön- méretet öltött hamisításuk is nehezebb bázison. Az IBM hamarosan szabvány- bözõ jogosultságokkal. A különbözõ volna. Hasonló lapkák kerülnek majd az tervezetként is elõ kívánja terjeszteni ügyféladatbázisokhoz és felhasználók- Európai Unión kívülrõl érkezettek vízu- megoldását, és támogatása a cég saját hoz saját sablonok, programfelületek, maira is, mozgásuk követését segítendõ. adatvédelmi felügyeleti programjában, illetve nyelvi beállítások tartozhatnak. Bár a megvalósítás pontos idõpontját az IBM Tivoli Privacy Managerben is Az Audit kontroll szolgáltatás segítségé- még nem tûzték ki, abban már sikerült megjelenik majd. Nyílt forrású EPAL vel – a dátum beállítása révén – a zárolt megegyezni, hogy az EU teljes területén környezet Privacy Authoring Editor adatok változatlansága bizotsítható. egységes rendszert kell bevezetni. néven bárki számára hozzáférhetõ a  http://www.investor.hu/sql-ledger/ Az EU 140 millió eurót különített el a  http://www.sourceforge.net címrõl. login.pl?action=login&login=demo biometriai kutatásokra és fejlesztésekre.  http://www.ibm.com

8 Linuxvilág Hír-lelõ

3Com: minõsítve Elhozzák a csillagokat A 3Com bejelentette, hogy két terméke, A SuSE Linux egy 2,4 millió eurós a 3Com Firewall PC Card és a 3Com tervezet részeként szerzõdést kötött Embedded Firewall Policy Server a a Német Ûrkutatási Központtal. A ter- Common Criteria minõsítési eljárás sze- vezet keretein belül egy nagyteljesít- rint EAL2+ minõsítést nyert. A 3Com ményû tároló- termékeit az amerikai hadsereg emberei rendszert épí- is tesztelték, tenek a nem- és nemcsak zetközi ûrállo- biztonsági máshoz kap- szempontból csolódó Columbus, az európai ûrlabor találták meg- számára, amelynek fellövését a felelõnek jövõ évben tervezik. A CC CompuNet, õket, hanem Németország legnagyobb független kellõen fel- informatikai szolgáltató cége és a SuSE használóba- Linux közösen biztosítja a Columbus rátnak és programrendszerét.

könnyen Az ûrlabor a tervek szerint az elkövet- © Kiskapu Kft. Minden jog fenntartva telepíthetõnek is bizonyultak. A nem- kezõ 10–15 évben a nap 24 órájában zetközileg elfogadott minõsítés tanú- folyamatosan nagy mennyiségû telemet- sítja, hogy szolgáltatásaikat és felépí- riai, hang- és videoadatot továbbít majd tésüket tekintve egyaránt alkalmasak a Földre. A tárolásról, a fennakadásoktól arra, hogy védjék tulajdonosaik adatait. mentes adatcserérõl és az archiválásról Az EAL1 minõsítés hivatott igazolni, többek között 46 db kétprocesszoros, hogy az adott termék szolgáltatásai Xeon alapú IBM gép, két Sun Solaris valóban a tervezõk szándékai szerint rendszer, tárolókiszolgálók és szalag- mûködnek, míg az EAL2 minõsítés könyvtár gondoskodik majd, operációs megléte garanciát jelent arra nézve, rendszerként pedig SuSE Linux hogy a termék tervezése során megpró- Enterprise Server 8-at alkalmaznak. bálták megkeresni az eszköz sebezhetõ  http://www.esa.int pontjait, illetve a késõbbiekben felismert hiányosságok javítására megfelelõ Áram a hálóról eljárásokat dolgoztak ki. Az IEEE 802.3af jelzéssel hivatalosan is  http://www.3com.com/security szabványként fogadta el azt a szabály- gyûjteményt, amely az elektromos táp- Via Antaur ellátás ethernetkábeleken való továb- A Via Technologies bemutatta új, mobil- bításának a módját írja le. A szabvány gépekbe szánt processzorát, ami a mito- véglegesítése a várakozások szerint lógiai szereplõkre emlékeztetõ Antaur számos új termék megjelenését teszi nevet kapta. A kis fogyasztású Antaur majd lehetõvé, és hamarosan az számít elsõként Kíná- különlegességnek, ha egy ethernetcsat- ban jelenik lakozó nem lesz alkalmas elektromos meg a vékony energia biztosítására. Természetesen és könnyû hor- szó sincs arról, hogy a jövõben a beton- dozható gépek- keverõket is ethernethálózatról fogjuk ben, majd las- üzemeltetni, ám a kisebb fogyasztású sacskán Euró- eszközök, például hordozható számító- pába és Ameri- gépek esetében mindössze a hálózati kába is eljut. kapcsolatról kell majd gondoskodni, Az Antaur a az áram „jön vele”. A kérdés már csak C3 „Nehemiah” magra épül, legna- az, hogy mi lesz a másik húzóágazat gyobb fogyasztása 11 Watt, ezt a Power- termékeinek, a vezeték nélküli hálóza- Saver 2.0 megoldás feladata további toknak a kedvelõivel. ötven százalékkal csökkenteni. Az új processzor képes a programszálakban lévõ elágazások elõzetes becslésére, 16 csõvezeték-állomással rendelkezik, támogatja az SSE utasításokat és 64 kB Medgyesi Zoltán másodszintû gyorsítótárral látták el. ([email protected]) Található benne egy Via PadLock A Linuxvilág hírszerkesztõje. adattitkosító motor, illetve egy véletlen- Szabadidejét legszívesebben szám-generátor is, ezek a biztonsági a barátnõjével tölti, szeret alkalmazások futását segítik. autózni és bográcsban fõzni.

www.linuxvilag.hu 2003. augusztus 9 Láttuk-hallottuk

Rendszermag-fejlesztési hírek In memoriam

Új illesztõprogramok bukkantak fel a rendszermagban, amelyek Március 28-án, pénteken, életének 38. kihasználják a korszerû, nagysebességû soros kapukat. A SuperIO évében elhunyt Mike Jackson, a Linux lapkák már régóta támogatják a 460,8 Kbaud, illetve a 921,6 Kbaud Shadow Password HOWTO szerzõje. Mike a szabad sebességeket, de a Linuxhoz nem volt illesztõprogram. 2003 feb- Az elmúlt években Mike az LPSH karban- programokat fejlesztõ ruárjában David Woodhouse küldött egy foltot, ami lehetõvé teszi, tartásán kívül tengeralattjáró-felderítõ szakemberek hogy Linux alól is kiaknázzuk e lapkák képességeit. készülékek használatát oktatta, tartalékos példaképe volt, Mostantól több ezer merevlemezt lehet használni Linux-környezet- rendõrtiszt volt, valamint a TSCNet elnöke megkövetelte a ben. Korábban 256 volt a felsõ határ. Badari Pulavarty 2003 márci- és alapító tagja, a Kitsap Peninsula Linux programok kiválósá- usában küldte be azt a foltot, ami jócskán felemeli ezt a lécet. User Group alapító tagja és pénztárosa, gát és nyíltságát, és A próbafuttatás során sikeresen írt és olvasott négyezer különálló továbbá részt vett a PHP SNMP modul és kész volt továbbfej- lemezt. A Linux által támogatott lemezek száma új felsõ határának az OpenZaurushoz készített Sharp fény- leszteni, ha valami megállapítása még folyamatban van. Több erõforrás is túlterhelõdik képezõgép-csomag fejlesztésében. tökéletlen volt. a lemezek számának növekedésével, a legfontosabb ezek közül a memóriahasználat. A nagyszámú lemez használata mellett felme- rülõ memóriaszükséglet kérdése jelenleg is pezsgõ kutatási terület. Végül is kiderülhet, hogy a lemezek számának létezik egy elméleti felsõ határa, de addig még sok szemetet el kell takarítani. Új GPL-es grafikus rendszerindító jelent meg 2003 áprilisában, ami a Gujin nevet viseli, és a LILO felváltását célozza. Etienne Lorrain a nulláról indulva írta meg a programot. A Gujin a gép indításakor képes felismerni a betölthetõ rendszermagokat, ellentétben a LILO- val, aminél a betöltõszektort minden rendszermag-telepítéskor módosítani kell. Képes különlegesen nagy rendszermagok betöl- tésére, ami a 2.5-ös rendszermagsorozatnál fontossá válhat – ez ugyanis már feszegeti a LILO méretkorlátait. A betöltendõ rend- szermagot vonzó grafikus felületen választhatjuk ki. David Brownell új API-függvénykészletet készített az USB-eszkö- zök számára. Ezek elsõsorban Linuxot futtató PDA-kban és más beágyazott rendszerekben nyerhetnek felhasználást. Az API-függ- vények egységes felülettel bírnak, ennek köszönhetõen az egyik eszközre írt program a másikra is átvihetõ, annak ellenére, hogy a két vas esetleg teljesen eltérõ. A Linux Shadow Password HOWTO utoljára Az új, Lennert Buytenhek írta program segítségével, az új libivykis 1998-ban frissült. Nem mintha Mike programkönyvtár használatával mostantól hordozható módon elvesztette volna az érdeklõdését a téma nyomon követhetõ az állományok kivitelre, illetve bevitelre való iránt; éppen ellenkezõleg: a HOGYAN min- készsége. Idén áprilisban jelentette meg a programkönyvtárat, ami den fejlesztõt meggyõzött, hogy terjeszté- egy burkoló a poll(), a kqueue() és más hasonló függvé- seikbe alapértelmezettként tegyék bele az nyek köré, egységes felületet biztosít a nagyteljesítményû hálózati árnyékjelszavak támogatását. kiszolgálók számára, a rajtuk futtatott rendszertõl függetlenül. Ha Mike újonnan csatlakozott egy fejlesz- A libivykis SourceForge-oldala azt állítja, hogy a programkönyvtár téshez, rögtön fejest ugrott a munkába. annak ellenére teljesen megbízható és élesben használható, hogy Ha hibákat talált, kijavította õket, és visz- az elsõ nyilvános kiadás csak nemrég zajlott le. Akárhogy is, a szaküldte a javításokat a karbantartóknak. libivykis programkönyvtárat már több protokoll proxykiszolgálója Ha valamit hiányolt a programból, saját és videofolyamot szolgáltató kiszolgáló készítésére felhasználták. maga hozzáadta. Mike a szabad progra- A zárt kódú BitKeeper egyre inkább a rendszermagfejlesztés hiva- mokat fejlesztõ szakemberek példaképe talos változatkezelõ rendszerévé válik. Az új valós idejû BitKeeper- volt, megkövetelte a programok kiválósá- bõl CVS-be átalakító átjáró – amelyet Larry McVoy, a BK írója gát és nyíltságát, és kész volt továbbfej- állított fel – sok BitKeepert ellenzõ rendszermagfejlesztõt elhallgat- leszteni, ha valami tökéletlen volt. tatott. Ezzel egy idõben a szabad választási lehetõségek, például Mike halála mélyen érintette családját és az arch és a Subversion összefogni látszanak, hogy közösen oldják barátait, nagyon fog hiányozni mindenkinek. meg azokat a súlyos gondokat, amelyek megakadályozzák, hogy Összegyûjtöttük honlapjának a darabjait, és a szabad változatkezelõ rendszerek is azokat a világszínvonalú más hivatkozásokkal együtt elhelyeztük a megoldásokat alkalmazzák, mint a BitKeeper.  http://www.kplug.org/~mhjack címen. Zack Brown Brian C. Lane

Linux Journal 2003. június, 111. szám Linux Journal 2003. június, 111. szám © Kiskapu Kft. Minden jog fenntartva

10 Linuxvilág Láttuk-hallottuk

Linux-index Õk mondták

1. A betegek és idõsek ellátására terve- Az egyetemek nagyon költségérzékenyek, és az Intel alapú rend- zett Linux alapú japán robot, a Waka- szerek viszonylagos alacsony költsége a Linux sokoldalú felhasz- Egy informatikai muru magassága centiméterben: 100 nálhatóságával összekötve hamar szabvánnyá válik, különösen a beszerzõt 2. A Wakamuru szókincsének nagysága: jó hírû mérnökiskolákban. A forráskód szabad elérhetõsége arra manapság már 10 000 szó sarkallja az egyetemeket, hogy számítástechnikai tantárgyaikat ki is rúghatnak 3. A meglévõ rendszerek fenntartására Linuxra alapozzák. (Billy Marshall, Red Hat) azért, ha nem költött IT-költségek százalékban: 79 veszi figyelembe 4. A megtakarítás százalékban, ha Unix A 3-as változat alapjainak fejlesztését fõleg azok a vállalatok a Linuxot. helyett Linuxot használnak az Oracle pénzelik, amelyeknek Hans Reiser felhasználói engedélyeket adott futtatására: 45–80 el a GPL mellett. Ezek a vállalatok nem akarják tudni, hogy zárt 5. A nyílt forrású fejlesztésekre 2003-ban kódú termékük a ReiserFS-en alapul. Az ügyvédem azt kérdezte: ennyi milliárd jent irányzott elõ a „Az emberek fizetnek neked ezért?” Aha. Hi-hi. Az élet szép. Ha japán Gazdasági, Kereskedelmi és megveszed a ReiserFS-t, a saját feladatodra összpontosíthatsz, Ipari Minisztérium: 1 ahelyett, hogy az egész állományrendszert újra feltalálnád. 6. A következõ pénzügyi évre ennyi mil- (mkreiserfs, a reiserfsprogs 3.6.5-ban) lió jent terveznek elkölteni azokra a Az elsõ felfedezés, amit most be szeretnék mutatni, egy lustáknak kutatásokra, amelyek a japán kor- való algoritmus tudományos cikkek elõkészítésére. Írd le, amit mányzat által használt számítógépek akarsz, és ne idézz senkitõl semmit. A sértõdött olvasók az összes nyílt forrásra való átállásának lehetõ- olyan cikk adatát el fogják küldeni, amikre hivatkoznod kellett ségét vizsgálják: 50 volna. (Paul Graham) 7. Az SGI nagygép értéke amerikai dol- lárban, amelyet 12 Red Hat Linuxot A Unix és Linux összehasonlítása azt az eredményt hozta, hogy futtató, telepbe szervezett PC-vel cse- egy Intel alapú számítógép 2–5-ször nagyobb teljesítményt réltek le a Johnson Ûrközpontban, (üzenet/másodperc) nyújtott, mint a Sun Sparc számítógép, fele Houstonban: 1 600 000 árért. (Casey Merkey – Global Linux Program Manager, 8. Az SGI nagygép éves karbantartási Reuters' Market Data System) költsége amerikai dollárban: 50 000 9. A 12 PC és operációs rendszerük Sajnálatos módon 2003 nem a vállalati, linuxos asztali gépek éve költsége amerikai dollárban: 25 000 lesz, de a nagy rendszergyártók (a Dell, a HP, az IBM és a Sun) 10. Az elsõ tíz webszolgaltató közül ennyi várhatóan egyre inkább az asztali gépeken futó Linuxot támogatják futtat Linuxot: 9 (amire 2002-ben gyakorlatilag ügyet sem vetettek), mivel felismer- 11. 2002-ben ennyi százalékkal csökken- ték, hogy több Linux-kiszolgálót tudnak eladni, ha létezik használ- tek az IT-kiadások az IDC szerint: 4,1 ható asztali gépes Linux. (Aberdeen Group) 12. 2003-ban a vállalatok ennyi százaléka Egy évvel ezelõtt azt mondtuk, hogy 2007-re „senkit sem fognak tervezi növelni az IT-kiadásait az IDC kirúgni azért, ha a Linuxot javasolja”. Négy évvel csökkentve a szerint: 85 magunk szabta határidõt most azt állítjuk, hogy egy informatikai 13. Ennyi százalékkal esik vissza az átlagos beszerzõt manapság már ki is rúghatnak azért, ha nem veszi vállalkozások számítógépre és progra- figyelembe a Linuxot. Ez kis lépés ugyan, de jelentõségében ahhoz mokra fordított kiadása 2003-ban a hasonló, amit Neil Armstrong tett. (EWeek) Goldman Sachs szerint: 1 14. Elõreláthatóan ennyi százalékkal Az IBM termékcsaládoknak továbbra is támogatniuk kell növekszenek az IT-kiadások 2003-ban mindenféle környezetet. Ilyen módon nem számít, hogy milyen a Forrester Research szerint: 1,9 téren mûködünk együtt az ügyféllel, a Linux mindenképpen a részét fogja alkotni. (Jim Stallings – IBM Linux manager)

Források Ezentúl nem vagyunk egyetlen fejlesztési környezetbe bezárva. 1–2.: Linux Devices Ha át akarnánk ültetni egy alkalmazást (HP-UX rendszerre), az 3–4.: Oracle gondot jelentene. A Linux használata azonban lehetõvé teszi, hogy az alkalmazást általánosan elterjedt IBM-, HP- vagy Dell- 5–6.: Associated Press gépen futtassuk, s közben kiaknázzuk a környezet által nyújtott 7–9.: Information Week elõnyöket. (Bridget O'Connor – Lehman Brothers) 10.: Netcraft 11–12.: International Data Corp. A Linux nem lesz túl hasznos az átlagembereknek – inkább 13.: Golman Sachs a hozzánk hasonló vállalatok számára lesz az. (Scott McNealy 14.: Forrester Research – CEO, Sun Microsystems)

Linux Journal 2003. június, 111. szám Linux Journal 2003. június, 110–111. szám © Kiskapu Kft. Minden jog fenntartva

www.linuxvilag.hu 2003. augusztus 11 Láttuk-hallottuk

A hónap szakmai tanácsai

Kickstart USB-s hajlékonylemezrõl? Nincsen olyan szolgáltatása, ami az ügyfeleknek lehetõ- A Red Hat 7.2 Kickstartját használom a Linux testre- vé tenné, hogy üzeneteiket „lehúzzák” a postaládájukba. szabott változatának több gépre történõ telepítésére. Chad Robinson, [email protected] Jelenleg hajlékonylemezrõl indítom a rendszert, és A POP3 nem a Sendmail-csomag része a Red Hatban, a ks.cfg állományt a hajlékonylemezen tárolom, így hanem az IMAP csomagban található, egészen pontosan a syslinux.cfg állományban van egy ilyen sor: label ks az imap-2001a-10 csomagban. A POP3 beállításához kernel vmlinuz append text a következõ lépések szükségesek:  1. A csomag letöltése az ks=floppy initrd.img  lang=devfs=nomount rpmfind.net/linux/redhat/7.3/en/os/i386/RedHat/ ramdisk_size=7168 RPMS/imap-2001a-10.i386.rpm címrõl; 2. az rpm -Uvh imap-2001a-10.i386.rpm A Linux Journal honlapján Hogyan lehet elindítani a Kickstart-telepítést USB-s paranccsal telepítjük; számtalan gond megoldá- hajlékonylemez vagy USB-s CD-ROM használata esetén? 3. a POP3-szolgáltatás engedélyezése a /etc/xinetd.d/ipop3 sához találhattok további El tudom indítani a rendszert az USB-s hajlékonylemez- állomány szerkesztésével, amiben a disable = yes segítséget. A Sunsite rõl, illetve CD-ROM-ról, de az USB-eszközön lévõ ks.cfg sort disable = no beállításra kell változtatni; tüköroldalait, a gyakori állományt a rendszer nem találja, ezért a Kickstart-tele- 4. a szolgáltatás elindítása a service ipop3 start kérdéseket és az egyéb pítés sikertelen. paranccsal; útmutatásokat a Vishali Karnik, [email protected] www.linuxjournal.com 5. a POP3 bejegyzése a rendszerindításkor elindítandó chkconfig --level 345 honlapon olvashatjátok el. A leírás szerint a Red Hat a 7.2-es változattól kezdve szolgáltatások közé: ipop3 on A rovatban közzétett a telepítés alatt felismeri az USB-s hajlékonylemez-meg- válaszokat Linux-szakértõk hajtókat, így az elképzelés helyes. Nekem nincs USB-s 6. a POP3-szolgáltatás kipróbálása. kis csapata készítette el. hajlékonylemez-meghajtóm, így nem tudom kipróbálni, Természetesen kipróbálni csak a kiszolgálón létezõ de a Fujitsu Siemens Computers segítõkész munkatár- felhasználói azonosítóval lehet. További kérdéseiteket  szívesen fogadják sainak javaslata a http://www.fujitsu-siemens.com/ Felipe Barousse Boué, [email protected] (angol nyelven) a partner/linux/readme/driver-disks-redhat.shtm alatt Az USB-billentyûzet www.linuxjournal.com/ elérhetõ. A Linux az USB-s hajlékonylemez-meghajtó- rendszerindításkor leáll lj-issues/techsup.html kat SCSI-eszközként ismeri fel, ezért a ks.cfg-ben ks=floppy ks=hd:sda Nemrég frissítettem Compaq Presario 7000-es számító- címen, ahol csak egy a bejegyzést -ra kell gépemet Red Hat 7.1-rõl Red Hat 8.0-ra. Az USB-billen- kérdõívet kell kitöltenetek, változtatni. Ha ez nem segít, a kézi telepítés során lépj tyûzetem remekül mûködött a telepítés alatt. Miután az /proc/scsi/scsi de a [email protected] címre be a héjba, és a állományban nézd meg, egység 3-as futási szintre vagy afölé lép, az USB-billen- levelet is írhattok. A levél hogy milyen eszköznéven szerepel az USB-s hajlékony- tyûzet nem mûködik többé. Úgy kerülöm meg a hibát, tárgyában szerepeljen lemez-meghajtó. Az elsõ eszköz a /proc/scsi/scsi állo- modules.conf sda sdb hogy a állományban a teljes USB-támoga- a „BTS” kulcsszó. mányban az , a második az stb. tást letiltom, ez azonban nem valami elegáns megoldás. Don Marti , [email protected] Doug Poulin, [email protected] Nem szabványos modem használata Gyõzõdj meg róla, hogy a rendszermag tartalmazza-e a A Red Hat 8.0 nem ismeri fel Dell noteszgépem Pctel USB Human Interface Device (full HID) support és a HID 2304 WT típusú modemjét. input layer support beállításokat. Add ki a modprobe Hari Babu Prasad, [email protected] hid parancsot, és nézd meg, hogy a modulban van-e A PCtel alapú modemekhez Linux alatt illesztõprogram- egyáltalán. Ha igen, akkor add hozzá a következõ sorokat modul szükséges. A nem hivatalos honlapon, a a /etc/modules.conf állományodhoz:  http://linmodems.technion.ac.il./pctel-linux címen alias usb uhci megtalálható a legfrissebb változat, a támogatott post-install uhci modprobe hid modemek felsorolása és egy eléggé jó leírás. Robert Connoy, [email protected] Mario Bittencourt, [email protected] Modul betöltése rendszerindításkor Levelezni szeretnék, de nincs POP-om! A Promise SuperTrack SX6000 RAID illesztõprogram- Telepítettem egy internetkiszolgálót (Red Hat 7.3), modul telepítésével kísérletezem Red Hat 7.3 alatt. de amikor egy másik számítógéprõl megpróbáltam Az illesztõprogramot lefordítottam, de tudom, hogy nem a leveleimet POP3-mal elérni, a kapcsolatot visszautasí- elég egyszerûen az insmod parancsot futtatni, ha azt totta. A Sendmail programot ellenõriztem, fut. szeretném, hogy a modul önmûködõen betöltõdjön a Fausto Garcia, [email protected] rendszerindításkor. Van-e valamilyen példa vagy eljárás arra nézvést, hogy egy telepítõprogram milyen lépéseket A levélkiszolgáló beállítása két részbõl tevõdik össze. hajt végre? Milyen beállítófájlok módosulnak, és hová A Sendmail csak az egyik fele, az a levéltovábbító kerül az illesztõprogram? ügynök (MTA), ami az SMTP protokollt használja. Az Steven Brown, [email protected] SMTP kézbesít, „rátolja” a célrendszerre az üzenetet. © Kiskapu Kft. Minden jog fenntartva

12 Linuxvilág Láttuk-hallottuk

«

Az illesztõprogram adatai a /etc/modules.conf állomány- szerû lecserélése SSH-ra értelmetlen, ha a hálózat telje- ba kerülnek. Például az alias eth0 eepro100 sor sen zárt és tûzfallal védett”, hibás. Mi mindig a bizton- azt adja meg, hogy az eepro100 illesztõprogramot az sági „léc felemelésérõl” és újabb „hagymahéjak” beépí- eth0 ethernetcsatolóhoz kell betölteni. Ha a modul a tésérõl beszélünk. Igaza van abban, hogyha a biztonság rendszerindító eszközhöz kell, egy rendszerindító memó- drága, akkor elemezni kell a fenyegetettséget, de az SSH rialemezre is szüksége lesz. Figyelmedbe ajánlom az annyira egyszerû, hogy az elemzésnek itt semmi értelme. mkinitrd súgóoldalát. Christopher Wingert, [email protected] Robert Connoy, [email protected] A korszerû terjesztések alapból tartalmazzák az A Red Hat összeállított egy leírást a rendszerindító OpenSSH-t, és külön erõfeszítéseket kell tennünk, ha parancsfájljainak a szerkezetérõl, ami a Telnet-kiszolgálót szeretnénk használni. Szerencsére  http://www.redhat.com/support/resources/tips/ a kényelmes megoldás és a biztonságos megoldás Boot-Process-Tips/Boot-Process-Tips-3.html címen ugyanaz. A SSH a jelszavas hitelesítéssel ugyanolyan érhetõ el. A rendszerindításkor végrehajtandó saját egyszerû, mint a Telnet. Megfelelõen beállított kulcspá- parancsaidat is elhelyezheted itt. rokkal még annál is egyszerûbb. Ha más operációs © Kiskapu Kft. Minden jog fenntartva Chad Robinson, [email protected] rendszer alól kell bejelentkezned Linux-rendszerbe, nézd meg Rick Moen SSH-ügyféllistáját a A  http://www.linux.org/docs/ldp/howto/mini/Modules  linuxmafia.com/pub/linux/security/ címen oldal áttekintést ad a betölthetõ modulokkal való munka Don Marti, [email protected] alapjairól. A másik érdekes oldal, ami a Linux magmo- duljairól szól, a Frissítés után eltûntek a nyomtatók  http://www.luv.asn.au/overheads/kernelmodules Nemrég frissítettem StarOffice 5.2-rõl 6.0-ra, de a rend- címen található. szerem nem találja a hálózati nyomtatókat. A nyomtatók Felipe Barousse Boué, [email protected] HP LaserJetek JetDirect kártyákkal, és mindegyiknek van saját IP-címe. Az spadmin csak az alapértelmezett A Telnet védelmében? nyomtatót ajánlja fel, nincs egyszerû módja az IP-cím Azt hiszem, Don Marti túl gyorsan elintézte a telnet- megadásának. A psprint.config állományban lehetõség tel kapcsolatos kérdést (lásd A hónap szakmai tanácsait nyílik a helyérték beállítására, de az IP-nyomtató a Linuxvilág 2003. májusi számában). Az OpenSSH tény- megadása nincs leírva. leg remek választás az rlogin és a telnet helyett Murray Zangen, [email protected] a megbízható környezeten kívül. Egy megbízható hálózat- ban viszont az rlogin, a Telnet és a többi r-rel kezdõdõ Elõször is a printtool eszközzel add hozzá a rend- parancs sokkal kényelmesebben használható az adott szerhez a nyomtatókat, és add meg, hogy JetDirect felhasználási területen. Nem szívesen nyugdíjaznám az nyomtatókról van szó. Ezután az spadmin eszközben rlogin-t és a Telnetet, különösen olyan helyen nem, add hozzá a nyomtatót a StarOffice-hoz. Amikor a nyom- ahol a Linuxnál régebbi rendszerekkel akad dolgom. tatási parancs ablakhoz érsz, add meg a nyomtatási Ahogy a biztonságnál mindig, a védelem árát (ebben parancsot. Például: az esetben a biztonságos eszköz bonyolultabb és ké- lpr -P hp3 nyelmetlenebb beállítását) az elérhetõ nyereséggel kell Keith Trollope, [email protected] rlogin összehasonlítani. Szerintem az és a Telnet egy- Memóriateszt Linux alatt szerû lecserélése SSH-ra értelmetlen, ha a hálózat telje- Szinte minden Linux-változathoz elérhetõ a memtest86 sen zárt és tûzfallal védett. Még egyszer, a megfelelõ program. Debian/GNU Linux alatt az apt-get install védelem kialakításához teljes körû elemzés szükséges. memtest86 paranccsal telepíthetjük a legegyszerûbben, Bob Hepple, [email protected] ekkor a /boot könyvtárba települ egy memtest86.bin nevû A felhasználók hitelesítésére nyilvános kulcsokat alkal- fájl. Ahhoz hogy a memóriát tesztelhessük, a rendszerindí- mazhatsz azokon a kiszolgálókon, amelyhez csatlakoz- táskor erre a fájlra kell hivatkoznunk. Akár Grub, akár LILO nak. Használhatod az egyszerû jelszavas hitelesítést is. a rendszerbetöltõnk, beállítási példákat találhatunk Mégha a jelszavas hitelesítést alkalmazod is, a jelszava- a /usr/share/doc/memtest86/examples könyvtárban. kat védi az SSH szimmetrikus titkosítása. Napjainkban Ha nem akarjuk a rendszerindító programunkat birizgálni, a vas újabb biztonsági kockázatot jelent. Biztos vagy akkor helyezzünk be egy hajlékonylemezt a meghajtóba, benne, hogy az útválasztódon nincs telepítve egy trójai, és a következõ parancsot rendszergazdaként adjuk ki: amely a telnet csomagokat leszívja, és továbbítja dd if=/boot/memtest86.bin of=/dev/fd0. õket a külsõ hálózatra? Biztos vagy benne, hogy a Ezután a gépet a hajlékonylemezrõl indítva azonnal 802.11-es vezeték nélküli híd nem továbbítja a telnet elindul a memtest86 program. csomagokat az éteren keresztül? Rengeteg gép érheti el Csontos Gyula, [email protected] az adataidat, és nem tudod ellenõrizni õket. Bob Hepple megállapítása, miszerint „az rlogin és a Telnet egy- Linux Journal 2003. július, 111.szám

www.linuxvilag.hu 2003. augusztus 13 Láttuk-hallottuk

Új termékek

SuSE Enterprise rake Linux Corporate Server 2.1-et. jára épül és 12 V-ot használ, ezáltal Server 8 AMD64-re A Server 2.1-et nagy teljesítmény- alkalmas olyan területeken való Az AMD 64 bites Opteron procesz- igényû alkalmazásokhoz, például felhasználásra, ahol lényeges az szorát támogatva megjelent a United- webkiszolgálókhoz, adatbázis-keze- Linux 1.0-n alapuló SuSE Linux Enter- lõkhöz (MySQL-64), alkalmazás- és prise Server 8. A Server 8 kiszolgáló állománykiszolgálói feladatokhoz operációs rendszer kihasználja az tervezték. A felhasználók úgy térhet- Opteronnak azt a képességét, hogy nek át a 64 bites alkalmazások fut- mind 32 bites, mind 64 bites környe- tatására, hogy a régi 32 bites alkal- zetben képes alkalmazásokat futtatni. mazásokat is tovább használhatják. A Server 8-ban javított 2.4.19-es A Server 2.1 a 2.4-es rendszerma- rendszermag (beleértve a GCC 3.2.2-t) gon alapul, és a következõket támo- van, ami támogatja a magas rendel- gatja: DHCP, Apache, Postfix és alacsony fogyasztás és a zajtalan kezésre állást és a nagy teljesítmé- Squid proxykiszolgáló; POP3, IMAP mûködés. A Mini-Box LCD-vel és nyû kapcsolatot a háttértárolókkal az és webes levelezõszolgáltatások; testreszabható 14 gombos billentyû- aszinkron B/K, többutas memóriaelé- valamint többféle naplózó fájlrendszer. zettel van felszerelve, ami kiváltja az rés és akár 600 merevlemez kezelése Adatok: MandrakeSoft, Inc., egeret és a billentyûzetet. A Mini- lehetõségének segítségével. A Server 2400 North Lincoln Avenue, Box súlya nagyjából egy kilogramm, 8 64 processzorig és 512 GB memó- Altadena, California 91001, az alapfelszereltséghez hozzátartozik riáig méretezhetõ.  http://www.mandrakesoft.com a 256 MB PC133-as RAM, 64 MB Adatok: ULX Kft. SuSE Linux AG CompactFlash és 800 MHz-es Little Board 700 magyarországi irodája VIA C3 processzor. Választható töb- Az Ampro telefon: (1) 450-0921, bek közt 533 MHz-es ventilátor nél- Computers Inc. fax: (1) 330-5672, küli processzor, 128 MB Compact- Little Board 700 támogatás: (1) 236-0053, Flash és 40 GB-os 2,5"-os IBM nevû egykártyás  http://www.suselinux.hu merevlemez. A Mini-Box kisméretû számítógépét az igé- beágyazott Linuxot, de teljes szab- HyperBlade Opteron gép- nyes, teljesítményérzékeny beágya- ványos terjesztést is futtathat. telep, 1U és 2U kiszolgálók zott alkalmazások számára tervezték. Adatok: Ituner Networks Corp., Az APPRO bejelentette új HyperBlade A Little Board 700 beágyazott számí- 3071 Southwycke Terrace, Server Cluster nevû termékeit, ame- tógép EBX alakú (5,75" × 8"). Több- Fremont, California 94536, lyek 1U és 2U magas két AMD Opte- féle alacsony feszültségû pro-  http://www.mini-box.com ron processzort tartalmazó kiszolgá- cesszorral kapható, például ilyen a lók. Az APPRO HyperBlade fürtöt a 933 MHz-es Pentium III 512 KB Az Aspen Systems nagy számításigényû piaci szereplõk gyorsítótárral, a 650 MHz-es Celeron Opteron Beowulf-telepei elvárásainak megfelelõen tervezték. és a 400 MHz-es Celeron. Legfeljebb Az Aspen Systems Inc. az AMD-vel

© Kiskapu Kft. Minden jog fenntartva A HyperBlade Server Cluster tömeg- 1 GB DRAM-ot támogat, és van be- együttmûködve bejelentette test- gyártásban elõállított x86-alkatré- épített hõmérséklet-figyelõ és ener- reszabott, Opteronra alapuló gép- szekbõl álló nagy sûrûségû fürt. Akár giaellátás-kezelõ rendszere. Az alap- telepeit és csúcsszintû kiszolgálóit. 80 számítógépkártya is elhelyezhetõ lapra épített Type II CompactFlash A géptelepek és kiszolgálók jellem- benne, ami 160 AMD Opteron pro- aljzat legfeljebb 1 GB flashmemóriát zõi: 1U, 2U és 4U magas, keretbe cesszort jelent. Az APPRO 1U és 2U képes fogadni IDE-merevlemezként szerelhetõ kivitel nagysebességû kétprocesszoros kiszolgálói nagy pro- felismerve. Az alaplapon még a követ- Myrinet eszközökkel összekötve; cesszor- és memória-sávszélességgel kezõ eszközök találhatók: két 10/100- Aspen Beowulf Cluster Management bírnak. Fõbb jellemzõik: két AMD BaseT ethernetvezérlõ, AGP 4x video- program; AMD 64 bites processzo- Opteron processzor, 32 és 64 bites vezérlõ a TFT megjelenítõk támoga- rok, a régi 32 bites és az új 64 bites számítások egy idõben, HyperTrans- tásával, AC97 hang, két USB-kapu, alkalmazásokhoz; HyperTransport az port, PCI-X támogatása, cserélhetõ négy soros kapu és PC/104-Plus sín. áramkörök közötti gyorsabb adatcse- merevlemezek és legfeljebb 16 GB Adatok: Ampro Computers, Inc., réhez; valamint 128 bites DDR DDR SDRAM. 5215 Hellyer Avenue #110, San DRAM-vezérlõ, ami processzoron- Adatok: APPRO, 446 South Abbott Jose, California 95138, ként legfeljebb nyolc DDR DIMM Avenue, Milpitas, California 95035, e-mail: [email protected], memóriamodult képes vezérelni.  http://www.appro.com  http://www.ampro.com Adatok: Aspen Systems, Inc., 3900 Youngfield Street, Wheat Ridge, Mandrake Corporate Mini-Box M-100 Colorado 80033, Server 2.1 Opteronra A Mini-Box beágyazott és általános  http://www.aspsys.com Az AMD Opteron processzorának célú számítógép-alkalmazások építé- megjelenésével párhuzamosan a sére tervezett x86-os számítógép. Linux Journal 2003, 111. szám MandrakeSoft Inc. kiadta a Mand- A Mini-Box a VIA Mini-ITX alaplap-

14 Linuxvilág Töprengõ

Az ingyen sört nehéz eladni? Azokban az országokban, ahol az olcsó, törvénytelen másolatokkal kell versenyezni, az átláthatóság és a testreszabhatóság az igazi érv a Linux mellett.

nyílt forrású programok testre- leírások megoldást jelenthetnek a gon- Ahhoz, hogy a nyílt forráskód valóban szabhatók, bõvíthetõk, és dok egy részére, ezek beszerzése is világszerte jó fogadtatásra találjon, a olcsón vagy ingyen beszerez- lehet költséges vagy riasztó. A 3 MB-os fejlesztõknek a fejlõdõ országokra jel- Ahetõk. A zárt kódú programok nehezen Emacs kézikönyv letöltése kezd drága lemzõ informatikai nehézségekre kell bõvíthetõk vagy alakíthatók át, és gyak- mulatság lenni, ha az ember percdíjat összpontosítaniuk. Az olyan kezdemé- ran hihetetlenül drágák. Ennek követ- fizet egy olyan netcaféban, ahol húsz nyezés, mint a Simputer keztében a nyílt forrású megoldásokat gép osztozik egy 28,8 kb/s sebességû ( http://www.simputer.org) – egy olcsó,

világszerte széles körben alkalmazni modemen. Külföldi szakembereknek Linux alapú kézi gép Indiában – ennek © Kiskapu Kft. Minden jog fenntartva kezdik a vállalkozások és a kormányok kérdéseket föltenni egy nem túl jól az egyik lehetséges modelljét jelenti: a egyaránt, sõt néha egészen odáig elmen- ismert nyelven még ennél is riasztóbb világméretû közösség támogatja egy nek, hogy törvényben írják elõ a hasz- élménnyé válhat, amikor a kezdõk elõ- fejlõdõ ország tehetséges mérnökeinek nálatukat. Azt gondolhatnánk, hogy a ször találkoznak a netikett szabályaival. egy csoportját. Az MIT Media Lab fejlõdõ országok járnak élen a szabadon A jó szándékú „RTFM” választ könnyen ThinkCycle kezdeményezése hozzáférhetõ, kiváló minõségû progra- félreértheti olyasvalaki, aki egy, az udva- ( http://www.thinkcycle.org) egy mok bevezetésében – de tévedünk. riasságra és formaságokra nagy hang- másik modellre mutat példát: a világ A Geekcorps több száz, fejlõdõ orszá- súlyt fektetõ kultúrából érkezik. A világ különbözõ egyetemein tanuló terve- gokban folyó informatikai programok- szinte összes kultúrája udvariasabb, zõket párosít össze a fejlõdõ országok- nak a támogatása során gyûjtött tapasz- mint az infós szakiké. ban mûködõ nonprofit szervezeteknél talatai alapján úgy látjuk, hogy a nyílt Noha a nyílt forrás népszerûsítõinek fi- fölmerülõ mérnöki feladatokkal. Az kódot meglepõen nehéz eladni. A leg- gyelembe kell venniük a nyelvi, kulturá- amerikai kormány Digitális Szabadság fõbb hiba a fejlõdõ országokban az lis és sávszélességbeli korlátokat, amik Kezdeményezése „ingyen sör” túlhangsúlyozása. Ez a fejlõdõ országokban befolyásolják a  http://www.digitalfreedom.gov egy Richard Stallman szólásmódja, szerinte szabad programok terjedését, leginkább újabb modellt mutat be, problémameg- „a program legyen szabad (free), abban arra kell összpontosítanunk, hogy meg- oldó csoportokat hozva létre szenegáli az értelemben, ahogy a szólásszabadság mutassuk: a nyílt kódú programok fejlet- fejlesztõkbõl, amerikai és szenegáli (free speech), nem úgy, ahogyan az tebbek és hatékonyabbak lehetnek ve- felhasználók közül kikerülõ üzleti és ingyen sör (free beer) kifejezésben sze- télytársaiknál. Ez azt jelenti, hogy a nyílt informatikai szakértõkbõl. repel”. A nyílt kódú programok alacsony kód szólásszabadság-jellegû elõnyeire A politikai fejlemények is elõsegíthetik költségére hivatkozni gyakran egy ön- kell összpontosítanunk: a bõvíthetõségre, a nyílt forrás világméretû terjedését. góllal ér fel. A mûszaki megoldások átláthatóságra és az így létrejövõ magas Egyre több politikus szorgalmazza, átadása és az ehhez kapcsolódó progra- használati értékre. A „szólásszabadság” a perui Edgar Villanueva Nuñez-hez mok története során gyakran próbáltak szellemében végzett fejlesztések egyik hasonlóan, hogy a nyílt forrás haszná- elavult megoldásokat rásózni a fejlõdõ kitûnõ példája a  http://translate.org.za latát törvény írja elõ az információ országokra, amikor ezeket a fejlett orszá- kezdeményezés, aminek az a célja, hogy „sértetlenségének, bizalmas kezelésének gokban már nem lehetett eladni. Így operációs rendszereket és kulcsfontossá- és hozzáférhetõségének” védelme aztán az alacsony költség és az alacsony gú programokat tegyen hozzáférhetõvé érdekében. színvonal közé sokan tévesen egyenlõ- Dél-Afrika 11 hivatalos nyelvén. Munká- A fejlõdõ országokban a nyílt forráskód ségjelet tesznek. juknak – és a Mozilla programkód elér- népszerûsítõi más irányban is tevékeny- A helyzet az, hogy egy szabad program hetõségének – köszönhetõen már létezik kedhetnek. Követelhetjük, hogy orszá- a fejlõdõ országokban gyakran többe böngészõprogram zulu, xhosa és még gunk külföldi segélyeket elosztó szerve- kerül a felhasználóknak, mint egy jog- négy másik nyelven is. Az IDN, Ghána zete a pénzt a fejlõdõ országokban díjas program. A szerzõi jogok megsér- egyik vezetõ internetszolgáltatója olyan új informatikai fejlesztésekre költ- tése széles körben elharapódzott, így ( http://www.idngh.com), a SAVA se, amelyekkel nyílt kódot hoznak létre. aztán a programokat gyakran az adat- vezeték nélküli hozzáférési pontok segít- hordozó áráért meg lehet kapni. ségével önti új formába üzleti tevékeny- Linux Journal 2003. július, 111. szám Örményországban, Jerevánban nemrég ségét. A SAVA egy olyan, Ghánában láttam a Microsoft Windows XP és a Red gyártott linuxos gép, ami WiFi hozzáfé- Hat 8 példányait egy üzletben, mind a rést tesz lehetõvé vállalkozások és net- Ethan Zukkerman kettõt öt dollár alatti áron. A Windowst cafék számára, kikerülve a fejletlen ([email protected]) ismerõ felhasználóknak a Linux többlet- ghánai telefonhálózatot. A szolgáltatók A Geekcorps Edgar Villanueva költséget jelent – a program használatá- az egész földrészen figyelemmel kísérik Nuñez nevû nonprofit önkén- hoz nélkülözhetetlen leírások költségét. az IDN sikerét, és nem egy cseréli le a tes szervezet alapítója. Bár az elektronikus formában elérhetõ rendszereit Linux-kiszolgálókra.  http://www.geekcorps.org

www.linuxvilag.hu 2003. augusztus 15 Töprengõ

Hogyan teszi a Linux okosabbá a vállalatokat? (1. rész) A forgalmazók „megoldásaikról” szóló meséi nagyon szépek, de hogyan változtatja meg a Linux a hagyományos vállalatok információtechnológiáját?

vállalatok Linux-sikereinek két Akiknek nem esik nehezükre ezt fel- benne igazán biztosak. Ezután elmen- nézõpontja létezik: az egyik fogni, azok az emberek, akik a Linuxot tünk a Red Hathez, ahol ezt felelték: egy belsõ, a másik pedig egy azért használják, hogy a vállalataikat Úgy hisszük, hogy az Advanced külsõ.A A beavatottak a szervezet intelli- eredményesebbé, megbízhatóbbá és Server 2.1 változatunkon jól fut, de nem genciáját, leleményességét és szakértel- hatékonyabbá tegyék. igazán tudjuk. Mi lenne, ha Önök kipró- mét tartják nagyra. A külsõ szemlélõk bálnák, és elmondanák nekünk a tapasz- azokat a forgalmazókat becsülik, akik A vevõ diktál talataikat?

© Kiskapu Kft. Minden jog fenntartva ugyanezekkel az erényekkel bírnak. Nézzük az LSI Logic, a félvezetõgyár Így megépítettük a rendszert. Megvet- Az érdem természetesen mindkettõjüké, példáját. Roland Smith, az általános tük a Red Hat alkalmazáskiszolgálót, és bizonyos mértékig mind két fél elis- operatív igazgató vezeti annak a négy megépítettük, telepítettük rajta az SAP-t, meri a másik teljesítményét. A sajtó csoportnak egyikét, amelyik közvetlenül és betettük a próbakörnyezetünkbe. azonban általában külsõ nézõpontból a fõinformatikusnak jelent. A vállalat Elképesztõen jól futott, ennek nagyon szemlélõdik, és az érdemek oroszlánré- Linuxra való nagy váltása azután tör- örültünk. Ami azonban a legérdekesebb szét a forgalmazóknak tulajdonítja. tént, hogy Smith csoportja a HP-UX a számomra, hogy az összes forgalmazó Ennek eredményeképpen nagyon cse- Linuxra való cserélését javasolta. A tel- cég közül csak a Dellnél mondták, hogy kély elismerést érdemelnek azok az jesítmény ezáltal 5–6 szorosára növeke- nagy örömmel biztosítják a gépet, hogy értékek, amelyek valóban hozzájárul- dett, a költségek viszont kétharmad- kipróbálhassuk, de többet sajnos nem nak ahhoz, hogy a Linuxot sikeresen nyival csökkentek. Smith a következõket tudnak hozzátenni a dologhoz.” alkalmazzák a vállalatokon belül. mondja: „Bárki, aki betér hozzánk, és Az LSI ágazatában az irányítás legjava a fõinformatikusunkkal egy új alkalma- a vevõi oldalon található. Belülrõl nézve zásról, projektrõl vagy bármilyen más Nincs két egyforma belsõ történet. új dologról szeretne beszélni, a vezetõ Versenyelõny Minden forgalmazói történet alapve- informatikus elsõ kérdése az lesz: Hasonlóan ügyes vállalat az Orbitz, tõen arról szól, hogyan oldották meg „Mûködik Linux alatt is?” Ennek a kör- online utazási iroda. Leon Chism, a termékek az adott feladatot. Ezért a nyezetnek akad néhány érdekes hatása vezetõ internetmérnök a következõket forgalmazók szeretik termékeiket a támogatás folyamatára. Smith egy nyilatkozta: „Fejlesztõink nagyon „megoldásnak” nevezni. A Linux azon- kiváló példát mesél el a forgalmazó és ügyesek a nyílt forráskódú alkalmazá- ban nem a „megoldásokról” szól – ez a vevõ közötti terméktámogatásról: sok használatában. Céljuk, hogy javít- a forgalmazók szóhasználata. A Linux „Nemrégen elhatároztuk, hogy SAP- sák cégünk programtervezési, -fejlesz- a leleményességrõl és az értelemrõl rendszerünkhöz beállítunk néhány tési és -vezérlõ eljárásait. Saját ötleteik szól – ezek a vevõk kifejezései. A Linux Linux alkalmazáskiszolgálót. Kimentünk nyomán fejlesztettek ki számos eszközt, úgy válik sikeressé, hogy az ügyes a piacra, beszéltünk a Dell-lel és a HP- ami naplófájlokat elemez, PostgreSQL vállalatoknak segít abban, hogy még val. Elmondtuk nekik, hogy mit szeret- adatbázisban tárolja õket, majd ex post ügyesebbé tegyék magukat. A Linux- nénk. Ez egy tesztkiszolgáló volt, ami facto elemzést készít a hibák feltárása, szal és a nyílt forrással, a piac elsõd- szerintük a legalkalmasabb Linux fut- valamint a lehetõségek kiaknázása érde- leges kínálati és keresleti oldala is a tatására. Négy processzort és 1 GB kében. Az elsõ ilyen eszköz, amirõl vállalaton belül van jelen. memóriát kértünk. hallottam, egy olyan program volt, Ezt az együttélést sokunknak nagyon Ekkor történt néhány érdekes esemény. ami többször is sikeresen elemezte és nehéz megértenie. Nehéz a forgalma- A HP körülbelül két hétig össze-vissza javította ki a kód néhány részletét. zóknak, mert olyan piachoz vannak hadonászott, mígnem visszajött és Számos fejlesztõnk és mérnökünk szokva, ahol a kínálati oldal az ellenõr- megkérdezte: Mire is van tulajdonkép- akad, akik olyan eszközöket használ- zésük alatt áll, és a nagy haszonkulcs pen szükségük? A Dellnek három nap- nak, mint a Perl, Python és Jython a nagyszerû, még akkor is, ha a termék jába került, hogy hozzon egy kiszol- (egy hivatásos Jython-fejlesztõt-alkal- már nem is szabvány. Nehéz megértenie gálót. Õk ezt mondták: Tessék, három mazunk). Ezeket saját alkalmi eszkö- a sajtónak is, mivel a legtöbb általuk hónapra rendelkezésükre bocsátjuk zeikhez használják, amelyek a webhely- megírt hír egy termék–termék közti a kiszolgálót. Kérem, meséljék majd viselkedés ellenõrzésére szolgálnak. sportközvetítés. Ebben a játszmában el, mire jutottak vele. Mindez plusz a hivatalos termékirányí- a piac a játéktér, a vevõk pedig a meg- Ez szinte csoda volt. Majd elmentünk tás háttere mellett. Általában, miután nyerhetõ nyeremények. Nehéz megér- az SAP-hez és azt mondtuk nekik: Mit kifejlesztettek egy eszközt, kipróbálták teniük a vállalati vezetõknek is, mivel ajánlanak? Az SAP-nél a következõket és hasznosnak bizonyult, a vezetés annyira hozzászoktak ahhoz, hogy a válaszolták: Nos, úgy gondoljuk, SuSE 8 az informatikai háttér részévé teszi, nyeremény szerepét játsszák a keres- alatt jól fut. Mi pedig úgy véltük, hogy s ezt azután a hálózati mûködési köz- kedõk döntõ csatáiban. Red Hat 7.1 alatt fut jól, de nem voltunk pontunk használja.”

16 Linuxvilág Töprengõ

„Az Orbitz a Linuxot és a nyílt forrású rõl” mind-mind az eljárás elmocsarasa- programozó. Nem olyan rég azonban programokat versenyelõnynek tekinti: dásához vezetnek a megoldásra való arra volt szükségem, hogy textfájlok és az Orbitz olyan vállalat, amely termelési összpontosítás helyett. a Perl segítségével adatokat kezeljek. környezetben alkalmazza a nyílt forrású Ha a Linuxról vagy az Apache-ról van Így elkezdtem olvasni az adatbázisokról, projekteket, és nem fél ezeket nyilvános- kérdésünk, akkor ezek a dolgok már és megtanultam a MySQL-t. Nem érde- ságra is hozni. Jelenleg több mint 750 nem kérdések. Egyszerûen alkalmazzuk kelt volna a dolog, ha a MySQL nem lett linuxos számítógépet használunk a a támogatásprogramot, mely programok volna ingyenes. Nekünk nincs ötszám- termelésben. Webkiszolgálóink Linuxon mind a  http://www.google.com-nál jegyû költségvetésünk az Oracle-re. futó Apache programok, alkalmazás- végzõdnek, és megkezdjük a keresést. Nincs szükségünk mély adatbázisos dol- kiszolgálóink Linuxon futó kereskedelmi A másik lehetõség, hogy elkezdjük fi- gokra. Nincs szükségünk tranzakció- servletmotorok, a háttér „könyvelõmo- gyelmesen áttanulmányozni a forrás- követésre. Olyan eredményekre van tor”-t pedig kizárólag Java-szolgáltatá- kódot. Az Orbitz olyan vevõ, amelyik szükségünk, amelyek a Weben keresztül sok alkotják, amelyek szintén Linux alatt a legtöbbet hozza ki az általa használt elérhetõk, ezért a MySQL ésszerû vá- futnak. Végül az alacsony díjakat keresõ programból. Néhány forgalmazó meg- lasztás volt. A MySQL körüli belsõ programunk, ami az egyik legfõbb felel a kihívásnak, és erõfeszítéseket tesz szakértelmet egyszerûen ki lehet alakí- megkülönböztetõnk versenytársainkkal a vevõi igények támogatására. Néhá- tani. Végzek egy kis kutatómunkát, szemben, szintén Linux alatt fut.” nyan azonban nem hajlandóak erre. megnézem, hogy ami szükséges, az

Az LSI és az Orbitz példáján keresztül Mi pedig nem tudjuk, ki kicsoda, mind- telepítve van-e, ha nem, küldök egy © Kiskapu Kft. Minden jog fenntartva nagyon jól láthatjuk, hogyan alkalmaz- addig, ameddig – ahogy õk mondják – segélykérõ elektronikus levelet egy zák az ügyes vállalatok a Linuxot és nem jön egy lökés. A nyílt forrású termé- rendszergazdának. Majd a következõ a nyílt forrású programokat mind a kek használata azonban megoldja ezt a napon letöltöm a Debian-csomagot, fut- vállalaton belül, mind pedig a vállalat kérdést. Felállítottunk egy programmér- tatom az apt-get parancsot, és már és a külsõ forgalmazó kapcsolatában. nöki és fejlesztési csapatot, akik képesek mûködik is. Mindez egyetlen fillér Most nézzük, mi a helyzet a külsõ a saját hajójukat mozgásban tartani, és elköltése nélkül.” nézõponttal! a program szerzõitõl, levelezõlistákról és Elképesztõ, hogy milyen kicsire zsugo- a Google-tól kapott támogatás a legtöbb rodik a programengedélyezési tortúra. Külsõ nézõpontból esetben több mint elég.” Ha kicsi a feszültség és a költség nulla, Kitûnõ példát szolgáltat számunkra Wil- Ma mégis a kemény forgalmazó játékát a szabad vállalat méltó a nevéhez. liam M. Bulkeley „Kilépve árnyékából: játsszuk, miközben a kemény vevõ „IT-költségvetésünk nulla”, nyilatkozta a nyílt forrású program nemcsak elfoga- története nem mûködik. Elliot Noss, a torontói Tucows dottá válik, de egyben óriási üzlet” címû (tucows.com) elnöke és ügyvezetõ igaz- cikkben, mely a Wall Street Journal 2003. Az egyre sürgetõbb értelem gatója. A Tucows a világ egyik legna- március 31-i számban jelent meg. Lehet, hogy a Dell a legnagyobb pél- gyobb programletöltõ webhelyének „A vállalatok megtalálták annak módját, dányszámban eladott PC-márka, de az üzemeltetésével foglakozik. Ezen felül hogy pénz csináljanak a nyílt forrású igazi közönségsikerek a nevenincs a három elsõszintû tartománynév-be- programok felhasználóinak támogatá- „fehér” dobozok, amelyeket igény szerint jegyzõk egyikét is üzemelteti (OpenSRS, sából, vagy abból, hogy az általuk árusí- szerelnek össze szabványos alkatrészek-  http://resellers.tucows.com/opensrs). tott programhoz hozzáadják ezeket az bõl. A vásárlók azért kedvelik õket, mert Körülbelül 3,5 millió tartománynév ingyenes programokat. A profitmotivált- olcsók és könnyen szerelhetõk. Ezekrõl karbantartásával foglalkoznak, mindezt ság miatt a szabad program egyre több azonban nem sokat hallunk. Ennek egyik Linuxon, Apache, MySQL és helyen bukkan fel a vállalati és a kor- oka, hogy a gyártóik nem költenek sokat PostgreSQL segítségével. „El sem tudom mányzati számítógépeken.” reklámra; a másik ok az, hogy a számító- képzelni, mennyibe is kerülne, ha egy Amikor elõször megláttam, azt gondol- gépiparnak régóta meglévõ elõítélete van nagy Sun-rendszeren vagy egy óriási tam: nagyszerû, késõbb azonban feltet- a „árucikk” szóval szemben, és rettene- Oracle-adatbázison futtatnánk az tem magamban néhány kérdést is: tesen fél az „árucikké válástól”. egészet” – nyilatkozta Noss. • Miért fontos az, hogy a vállalatok A programiparnak azonban szembe A technológiai és a hálózattal foglalkozó „megtalálták annak módját, hogy kell néznie azzal a ténnyel, hogy a vá- cégek sokkal inkább hajlandók arról pénzt csináljanak”? Fontosabb annál sárlók szeretik az árucikkeket. Nagyon beszélni, hogy Linuxot és nyílt forrású a munkánál, amit megoldanak vele? jó példa erre a Boulderben, Colorado rendszereket használnak. Más típusú • Miért mondja azt, hogy „vállalatok”, államban székelõ Légkörkutatási cégek azonban csendesen változtatják amikor a „forgalmazókra” gondol? Egyetem (University Corporation for meg programkezelésük folyamatát. A vevõk már nem is vállalatok? Atmospheric Research – UCAR, Írásunk következõ részében néhány Nézzünk szembe a tényekkel: a Linux-  http://www.ucar.edu/ucar/index.html). gyakorlati példával ismerkedünk meg. felhasználók kemény vásárlók. Újra Neve ellenére az UCAR egy vállalkozás, Leon Chismet idézem: „A kapcsolatok ami tekintélyes vevõkörrel bír, ilyen Linux Journal 2003. július, 111. szám frontján akad egy forgalmazónk, aki például a nemzeti légi közlekedési még mindig egy nyílt forrású megoldás felügyelet. Greg Thompson, az UCAR bevezetésén gondolkozik. Az alkalmazás egyik tudósa elmagyarázza, hogyan Doc Searls ([email protected]) legtöbb része mûködik, de amikor hibát zajlik a döntéshozatali eljárás cégüknél: A Linux Journal szerkesztõje találunk benne, a nehézség megoldása „Itt mindenkinek van egy polca, ami tele és a Cluetrain Manifesto sok kívánnivalót hagy maga után. van O'Reilly-könyvekkel. Szeretjük, ha társszerzõje. Az eszkalációs eljárások, a root cause, magunk találjuk ki a dolgokat. Példának hosszú viták a „támogatott kiépítések- okáért én tudós vagyok, nem pedig

www.linuxvilag.hu 2003. augusztus 17 Vezérfonal

Páros X: Linux és Xbox

Ha módosítasz egy Xboxot, értékes ismeretekre tehetsz szert, miközben egy tetszetõs kis gépecskéhez is hozzájutsz.

Microsoft 2001 novemberében az Xbox által belépett A a videokonzolok piacára egy olyan géppel, amely azóta is felülmúlja minden vetélytársát, ha a pro- cesszor sebességét és a megjelenítési teljesítményt vizsgáljuk. A SEGA Dreamcast gépéhez hasonlóan az érdeklõdõ szakem- berek 2002 májusában kezdték meg a Linux Xboxra való átülte- tését. Mindössze három hónap telt el, és már meg is jelentek a

© Kiskapu Kft. Minden jog fenntartva világhálón egy Xboxon futó Linux-rendszermag elsõ üzenetei. Most, egy évvel a tervezet indulása után, a Linux az Xbox összes változatán megbízhatóan fut, az Xbox Linux pedig készen áll a mindennapos használatra.

Az Xbox felépítése Az Xbox belsejében egy 733 MHz órajelû Intel Celeron pro- cesszort, 64 MB DDR RAM-ot (a videokártyával megosztott), egy nVidia GeForce3 grafikus feldolgozóegységet (GPU), egy 8 vagy 10 GB-os merevlemezt, DVD-ROM-meghajtót és háló- zati kártyát találunk. A vezérlõket négy USB jellegû aljzatba csatlakoztathatjuk, illetve még egy tévékimenet is rendelkezé- sünkre áll (1. ábra). Az eszközök listája alapján inkább egy elfo- gadható teljesítményû asztali gépre gondolhatnánk, nem egy játékkonzolra. Az Xbox esetében nem csupán arról van szó, 1. kép Linux indulása az Xboxon hogy a belsejében szabványos PC-s alkatrészeket találunk – Intel processzor, nVidia grafikus lapka –, hanem ténylegesen számítógépként (2. kép), vagy akár kiszolgálóként, tévékime- egy kisméretû, fekete házba szerelt személyi számítógéprõl, nete révén pedig szórakoztatóeszközként is alkalmazható, amit kisebb módosításoknak vetettek alá. Az Xbox lapkakészlet például filmek lejátszásához vagy zenehallgatáshoz. két összetevõje az NV2A Northbridge és az MCPX South- bridge, mindkettõt az nVidia fejlesztette. Az nVidia nForce Biztonság lapkakészlet, amit PC-kben is megtalálunk, lényegében meg- Igaz, hogy az Xbox nagyon hasonlít egy szabványos PC-re, ám egyezik az Xbox lapkakészletével. A Southbridge lapka MCP a Linux telepítése mégsem intézhetõ el annyival, hogy behe- feliratot kapott, tudása az MCPX-ével megegyezõ: USB-vezér- lyezünk egy telepítõ CD-t. Elõször is az Xbox rendszerindítási lõket, egy IDE-vezérlõt, ethernetcsatolót és egy AC97-megfelelõ folyamata nagyban eltér a PC-kben megszokottól. A normál Dolby Digital hangvezérlõt foglal magába. számítógépekben PCBIOS (alapszintû B/K rendszer) található Az Xbox háttere roppant egyszerû. Mivel a Microsoft PC-re egy ROM-ban, ami 16 bites könyvtári eljárásokat tartalmaz a már rendelkezett saját operációs rendszerrel, rendszer- és billentyûzet, a megjelenítõ és a merevlemez kezelésére, illetve DirectX könyvtárakkal, az Xbox tervezésekor is e jól bevált gép- egy egyszerû rendszertöltõ is helyet kapott benne, ami beol- típus mellett döntöttek. A Microsoft eleinte AMD processzort vassa valamelyik tárolóeszköz elsõ szektorát, majd futtatni és lapkakészletet akart szerelni az Xboxba, a videolapka erede- kezdi annak tartalmát. Az Xbox nem rendelkezik ilyen BIOS- tileg is nVidia lett volna. Késõbb módosítottak az elképzelése- szal. Egy 256 KB-os ROM-lenyomatot találunk benne, ez egy ken, így került bele Intel processzor. Az nVidia tehát megvette statikusan befûzött, lecsupaszított, Windows 2000 alapú rend- a lapkakészletet az AMD-tõl, legyártotta a lapkákat az Xboxok- szermagot tartalmaz, aminek a futtatása az Xbox bekapcsolá- ba, majd ugyanezt a dolgot nForce néven a PC-s piacon is sakor azonnal megkezdõdik. A merevlemez – amely egyébként megjelentette. egyedi ATA jelszóval védett, így más számítógépbe helyezve Az Xbox és a PC közötti hasonlóság nemcsak a Linux telepíté- nem olvasható, illetve másik lemezzel nem helyettesíthetõ – sét és futtatását könnyítette meg jelentõs mértékben, de meg is semmilyen operációsrendszer-összetevõt nem tárol. Az Xbox adta mindennek az értelmét: az Xbox egyszerû számítógépként rendszermagja indításkor feloldja a merevlemezt, majd CD-rõl is remekül használható. A Dreamcast, a PlayStation 2 vagy vagy DVD-rõl megpróbálja futtatni a default.xbe fájlt. Ha ilyet GameCube nem rendelkezik merevlemezzel és ethernetcsa- nem talál, akkor az xboxdash.xbe fájl futtatásával próbálkozik tolóval, az Xbox viszont igen. A szabványos PC-s eszközöknek a merevlemezrõl. Ez lényegében rendszerbeállításokat és egy köszönhetõen kisebb módosítások után tehát a Linux-terjesz- zenei CD-lejátszó alkalmazást foglal magába, tárolása állandó tések is futtathatók Xboxon. jelleggel a merevlemezen történik. Kedvezõ ára és kis mérete révén egy Linuxot futtató Xbox egy A .xbe-fájlok futtatható állományok, nagymértékben hasonlíta- normál PC-t helyettesítve nagyszerûen használható asztali nak a Linux ELF-fájlokra, azzal a kivétellel, hogy a Microsoft

18 Linuxvilág Vezérfonal

.Xbox |-- Intel Pentium III Celeron Coppermine CPU |-- 64 MB RAM |-- Flash ROM `-- PCI bus |-- Programmable Interrupt Controller |-- System Timer |-- DMA Controller |-- PCI Bridge Device - Host Bridge (0:0:0, 0x2a5) |-- Memory Controller - SDRAM (0:0:3, 0x2a6) |-- HUB Interface - ISA Bridge (0:1:0, 0x1b2) |-- SMBus Controller (0:1:1, 0x1b4) | |-- PIC16LC System Monitor | |-- Conexant CX25871 Video Encoder | |-- ADM1032 System Temperature Monitor | `-- 256 bytes Serial EEPROM |-- OHCI USB Controller (0:2:0, 0x1c2) |-- OHCI USB Controller (0:3:0, 0x1c2) |-- MCP Networking Adapter (0:4:0, 0x1c3)

|-- MCP APU (0:5:0, 0x1b0) 2. kép A KDE munkaasztal 640×480 felbontásban, © Kiskapu Kft. Minden jog fenntartva |-- Audio Codec Interface (0:6:0, 0x1b1) egy Xboxon futó Mandrake Linux 9.0-val |-- Simple Communication Controller - Generic Modem (0:6:1, 0x1c1) |-- IDE Controller (0:9:0, 0x1bc) | `-- Primary IDE Channel | |-- Western Digital/Seagate 8/10 GB Hard Drive | `-- Thomson/Philips/Samsung DVD Drive |-- PCI Bridge (0:8:0, 0x1b8) `-- AGP Host to PCI Bridge (0:30:0, 0x1b7) `-- NV2A GeForce3 Integrated GPU (1:0:0, 0x2a0)

1. ábra Az Xbox felépítése fanézetben. A jobb oldalon szereplõ számok a PCI-eszközhelyeket és -azonosítókat adják meg

2048-bites RSA kulcsával vannak aláírva. Ha csak egyetlen bájt is módosul a fájlban, az aláírás azonnal érvénytelenné válik, a fájlt pedig az Xbox rendszermagja visszautasítja. Mivel a Microsoft titkos kulcsával nem rendelkezik, az Xbox Linux Project nem tud érvényes aláírást készíteni – vagyis nem tud olyan futtatható fájlt elõállítani, amit egy gyári állapotú Xbox elfogadna. Két lehetõség kínálkozik saját kód futtatására: az egyik a ROM kicserélése, a másik egy olyan játék keresése, 3. kép Az Xbox szétszedve. A Philips DVD-meghajtó a bal oldalon, aminek a hibáját kihasználva futtathatjuk a kódunkat. a Seagate merevlemez pedig a jobb oldalon látható. A legtöbben úgy veszik rá az Xboxot a Linux futtatására, hogy A háttérben látható zöld áramkör egy modlapka, ami most egy számítógép párhuzamos kapujára csatlakozik felnyitják a dobozt, és egy másik ROM-lapkát tesznek bele az eredeti helyett. Az úgynevezett modlapka vagy a Microsoft-féle ROM buherált változatát tartalmazza, amiben néhány egyéb (tiszta) Xbox Linux BIOS-t használunk, akkor az Xbox-játékok apróság mellett az aláírás és a merevlemez ellenõrzése is ki futtatásáról sem kell lemondanunk. van kapcsolva; vagy egy olyan „tiszta” alapprogramot, ami a Mivel az eredeti ROM-tartalom az Xbox alaplapján újraprogra- normál PC-k jellemzõivel ruházza fel az Xboxot. Bár az Xbox mozható flashlapkában található, felülírásával állandó jelleggel Linuxhoz tartozik olyan rendszertöltõ, aminek révén a Linux átalakított géphez jutunk, és külön eszközök beszerelésére megtört Microsoft ROM-mal is futtatható (magát a ROM-ot a sincs szükség. Mindezt úgy végezhetjük el, hogy telepítünk linuxos oldalakon nem találni meg, de az Interneten fellelhetõ), egy modlapkát, összekötjük az alaplap két megadott pontját, jogi okok miatt inkább az Xbox Linux Project Cromwell névre letiltva ezáltal a flashlapka írásvédelmét, futtatjuk a Linuxot, keresztelt tiszta ROM-ját érdemes használni. A Cromwell ROM letiltjuk a modlapkát, végül egy raincoat nevû alkalmazással ugyanakkor nem alkalmas az Xbox-játékok futtatására. átprogramozzuk a beépített flashmemóriát. Ezt követõen a A gyári ROM-ot helyettesítõ modlapkák számos videojátékok- modlapkát eltávolíthatjuk, vagyis egyetlen ilyen lapkával tet- kal foglalkozó internetes üzletbõl megvásárolhatók, körülbelül szõleges számú Xboxot tehetünk Linux-futtatásra alkalmassá. 12 ezer forintos áron. Az elsõ nemzedékbeli modlapkákat az Nemrég egy névtelenségbe burkolózó személy kihasználható eredeti flashlapkával párhuzamosan kötve kellett az Xbox hibát talált az Electronic Arts – 007 Agent Under Fire címû alaplapjára forrasztani, körülbelül harminc vezetéket felhasz- játékában. Az Xbox-fórumon megjelent hozzászólásában pon- nálva. A második nemzedékbeli modlapkák az Xbox-alaplap tosan leírta, hogyan használható egy módosítva mentett játék LPC buszára csatlakoztak, és már csak kilenc vezeték felhasz- a Linux rendszertöltõjének futtatására. Ezzel a módszerrel el nálását igényelték. A jelenlegi lapkák egyszerûen, forrasztás tudott indítani egy Linuxot, ami alól az alaplap írásvédelmi nélkül rácsavarozhatók az alaplapra. Általában üresen szállítják pontjainak összekötése után az alaplapi flashmemóriát át tudta õket, és képesek önmaguk teljes kikapcsolására, tehát ha Clean programozni, vagyis az átalakítást modlapka használata nélkül

www.linuxvilag.hu 2003. augusztus 19 Vezérfonal

csatlakozókkal. Egy megfelelõ átalakító segítségével tetszõleges USB-s billentyûzet, egér, webkamera, nyomtató vagy képolvasó csatlakoztatható a géphez, ha azt a Linux PC-s változata támogatja. Ilyen átalakítókat 2500–4000 forint közötti áron vásárolhatunk az Interneten, illetve némi munkával mi is elkészíthetjük õket. Mindössze az Xbox vezérlõjéhez készült kábelt kell beszerezni, amelynek az egyik végén rajta van az Xboxba illesztendõ csatlakozó, továbbá egy mama USB-csat- lakozó szükséges. Mindkét kábel négy különbözõ színû vezeté- ket tartalmaz. Egyszerûen csak el kell vágni a kábeleket, majd a vezetékeket összekötve máris egy USB mama–Xbox papa átalakítókábelt kapunk. A vezérlõn található, a memóriaegység számára kialakított aljzat ugyancsak egy USB-kapu, tehát az USB mamacsatlakozót ide is forraszthatjuk. Ha az USB-s billentyûzetet és egeret még nem vettük meg az Xboxhoz, próbáljunk olyan billentyûzetet szerezni, ami beépí-

© Kiskapu Kft. Minden jog fenntartva tett USB vagy PS/2 csatlakozóval is rendelkezik az egér szá- 4. kép USB átalakítókábelt könnyen készíthetünk az XBox vezérlõjéhez mára. Így egyetlen Xbox–USB-átalakítóval is boldogulhatunk. való hosszabbítókábel és a jobb oldalon látható mama A Macintosh billentyûzetek szintén jól használhatók – és lega- USB-csatlakozó felhasználásával. Elõre legyártott kábelt lább nem találunk rajtuk Windows-gombokat. is vásárolhatunk, a bal oldalon egy ilyen látható Terjesztések Megvan a módosított Xbox, sikerült billentyûzetet és egeret csatlakoztatnunk hozzá; most eldönthetjük, hogy az Xbox Linuxot magunk fordítjuk-e le, vagy az elõfordított változatok valamelyikét telepítjük fel. Az Xbox Linux jelenleg három fõ terjesztést bocsát az érdeklõdõk rendelkezésére: Mandrake, Debian és Xbox Linux Live System. Az utóbbi egy X nélküli, de a Trolltech Qtopiát tartalmazó Linux-összeállítás. Nem települ fel a merevlemezre, és az Xbox vezérlõjével kezelhetõ. Lényege az, hogy a kezdõknek némi rálátást ad a Linux által elérhetõ lehetõségekre: a Mandrake és a Debian teljes terjesz- tések, ezek a merevlemezre kerülnek fel. A Mandrake 9.0 jelen- leg is hozzáférhetõ, a 9.1 nemsokára megjelenik. Mindkettõ a Mandrake Linux PC-s változataira épül, és teljes mértékben képes együttmûködni azokkal, illetve RPM-csomagjaikkal. Megtalálható bennük a Gnome és a KDE, illetve számos to- vábbi népszerû alkalmazás. A Debian Xboxra készült változata CD-rõl is indítható X-felülettel, de természetesen merevle- mezre is telepíthetõ. A Debian esetében rövidebbek a megjele- 5. kép Egy német adatközpont egy nési ciklusok, és frissítések is gyakrabban látnak napvilágot Xbox alapú Domino Servert használ, ami egy IBM pSeries géppel – éppen ezért vonzódik hozzá a legtöbb fejlesztõ. fürtözve fut. Az Xbox a bal oldalon látható kis doboz A rendszertöltõ végezte el. Ez a legegyszerûbb és legolcsóbb módja annak, Akik nem akarnak elõre elkészített terjesztéseket használni, hogy egy Xboxot Linux futtatására alkalmassá tegyünk. hanem minden aprósággal maguk szeretnének elbíbelõdni, Az eddig ismertetett eljárások a jelenlegi idõpontig megjelent illetve akik meg szeretnék ismerni a rendszer mûködését, Xbox konzolokra vonatkoznak. A Microsoft folyamatosan vessenek néhány pillantást az Xbox Linux rendszertöltõkre, módosítja az Xbox felépítését. Mire ez az írás megjelenik, valamint a rendszermag- és XFree-foltokra. elképzelhetõ, hogy az Xbox alaplapján új elrendezést alakí- Mint már céloztam rá, az Xbox Linux az Xbox Linux Clean tanak ki, és eltávolítják az LPC buszt vagy megszüntetik a BIOS segítségével és aláíratlan .xbe-fájlból is indítható. Az utób- flashlapka átprogramozásának lehetõségét. Ezzel a témával bi játékprogramnak láttatja magát, és módosított Microsoft kapcsolatban az Xbox Linux weboldalán találjuk meg a nap- BIOS segítségével futtatja a Linuxot. Mindkét eljárás alapját rakész tudnivalókat. ugyanaz a rendszertöltõ adja, ami CD-, DVD- vagy merev- lemezrõl betölti a rendszermagot és az indítási RAM-lemezeket, USB 4 MB memóriát lefoglal a videovezérlõ számára, a maradék Ha van egy módosított Xbox-készülékünk, amelyben akár a 60 MB-ot pedig a Linux-rendszermag rendelkezésére bocsátja. megpiszkált Microsoft BIOS, akár az Xbox Linux BIOS fut, A rendszermag adatait, illetve az initrd fájlok nevét és helyét elkezdhetjük a Linux telepítését – csakhogy hogyan létesítsünk a linuxboot.cfg fájl tartalmazza, amelynek – Microsoft BIOS kapcsolatot a telepítõvel? Az Xbox USB kapcsolatokat használ, használatakor – ugyanabban a könyvtárban kell lennie, mint vagyis minden vezérlõ, memóriaegység és az Xbox Live az .xbe fájlnak. A Clean BIOS használatakor a felhasználó fejhallgató is USB 1.1 szabvány szerinti eszköz, de módosított adhatja meg a fájl helyét.

20 Linuxvilág Vezérfonal

A rendszermagfoltok ami nem támogatja a 3D-gyorsítást. Már megkezdõdtek azok Ahhoz, hogy a Linux-rendszermag Xboxon is mûködjön, mind- a munkák, amelyek az nVidia részérõl csak binárisan elérhetõ, össze egyetlen bájtot kell átírni –, ha azonban jól mûködõ ám 3D-támogatással rendelkezõ XFree-illesztõprogram meg- rendszermagot akarunk, akkor egy kicsit többet kell dolgoz- foltozására irányulnak. nunk vele. Az Xbox PCI lapkakészletének van egy súlyos hibája, ami miatt a gép összeomlik, amikor rendszerindításkor Az alkalmazások hatékonnyá varázslása a Linux megpróbálja számba venni a PCI-eszközöket. Az össze- Maga az Xbox eszköz elég erõs ahhoz, hogy Linux alatt DVD-t omlás elkerülhetõ, ha a felsorolt PCI-eszközazonosítók tarto- vagy DivX-filmeket nézzünk. Ha a lehetõ legjobb teljesítményt mányát szûkítjük. Egy további nehézség az óra kapcsán merül akarjuk elérni, akkor az alkalmazások fordításakor a tényleges fel: az Xbox rendszerórája körülbelül hat százalékos eltéréssel eszközökhöz kell igazodnunk. A gép Celeron processzora egy ketyeg, ami miatt például a zenék lejátszása felgyorsul, a rend- Pentium III-as osztályú CPU lapka, támogatja a 686-os utasítás- szermag pedig hibásan ismeri fel a processzor órajelét. készletet, illetve az MMX és az SSE utasításokat. Több alkal- A leállítás és újraindítás folyamata is más az Xbox esetében, mazás – köztük az MPlayer – ezt magától felismeri. Ha az de ha a rendszermagot némi kóddal bõvítjük, akkor képes lesz nvdrv XFree-illesztõprogramot használjuk, akkor a videoal- a gép megfelelõ leállítására és újraindítására. Mivel más játék- kalmazások számára engedélyezhetjük a GLX-támogatást. konzolokon sokszor kerülték meg a másolásvédelmet úgy, hogy Például az MPlayer X alatt az nvdrv illesztõprogrammal a leg- egy jogtiszta játékot behelyezés után azonnal egy másolt pél- gyorsabb, még a framebuffer-módnál is gyorsabban mûködik.

dányra cseréltek ki, az Xbox alapértelmezés szerint a lemez Azt se feledjük el, hogy inkább a gép képfelbontását kell csök- © Kiskapu Kft. Minden jog fenntartva kiadásakor azonnal újraindul. A megfelelõ programmal meg- kenteni, és nem az alkalmazások képét kell a kimenethez elõzhetjük az újraindítást, ha a PIC16L lapka újraindításra vo- méretezni. 640×480-as módban a PlayStation-emulátor epsx natkozó kérdésére nemmel válaszolunk. A rendszermag egyik gond nélkül fut, úgy, hogy a kép 400×300 képpontra van foltja errõl is gondoskodik. Megint egy másik folt a DVD-meg- átméretezve. hajtót érinti, ami azt állítja magáról, hogy nem támogatja a Noha az Xbox csak 64 MB memóriával rendelkezik – ezt kellõ video-DVD-ket, pedig ez nem igaz. Az Xbox Linux oldalról több forrasztási tapasztalatok birtokában 128 MB-ra lehet bõvíteni –, elterjedt rendszermagváltozathoz tölthetünk le foltokat, ezek az asztali környezetek, mint a Gnome és a KDE, illetve az a fenti módosításokat mind tartalmazzák, illetve támogatják az OpenOffice.org és a fontosabb alkalmazások megfelelõen Xbox merevlemez-felosztási módszerét és merevlemezes fájl- mûködnek. VMware segítségével MS-DOS és Windows rendszerét (FATX) is. A módosított állományok az Xbox Linux 95/98/NT/2000 is futtatható Xboxon. Minimális X-környezettel, CVS révén is hozzáférhetõk. A rendszermag beállításai között asztali kellékek és ablakkezelõ nélkül a Windowsnak akár mindössze az Xbox támogatását kell engedélyezni. 48 MB memóriát is tudunk adni. Az Xbox Linux VESA framebuffer módban is remekül mûködik, ekkor a rendszertöltõ egy meghatározott grafikai módot állít be, Összegzés a Linux pedig átveszi ezt, és mindig a videomemóriába ír, a meg- Az elterjedt PC-s Linux-terjesztések átültetett változataival, jelenítõ eszköz közvetlen elérése nélkül. Egy másik lehetõség a illetve a fontosabb linuxos alkalmazásokkal az Xbox készen rivafb accelerated framebuffer illesztõprogram folto- áll arra, hogy asztali gépként, kiszolgálóként vagy multimédiás zott változatának beszerzése, ami lehetõvé teszi a konzol video- eszközként használjuk. Kiváló adottságainak köszönhetõen módjának üzem közben történõ megváltoztatását. Bármelyik átalakítása is több mint céltalan módosítás – értékes eszközt megoldás mellett döntünk is, mindenképpen engedélyeznünk nyerünk vele. kell a framebuffer illesztõt a rendszermag beállításai között, mi- vel az Xbox Linux – jelenleg – nem támogatja a szöveges módot. Linux Journal 2003. július, 111. szám Az ALSA hangrendszer egy kisebb foltozásával – ami úgyszin- tén az Xbox Linux CVS révén érhetõ el – az Xbox hangrend- szere használható az i810 illesztõprogrammal. Az nVidia nForce Michael Steil ([email protected]) hálózati csatolóhoz az nVidia weboldaláról – kizárólag bináris Informatikushallgató a Mücheni Mûszaki Egyete- formában – letölthetõ illesztõprogram bármilyen módosítás men. 2002 májusában õ hívta életre, és máig nélkül Xboxon is mûködik. Ha a lemezkiadással kapcsolatos õ irányítja az Xbox Linux Projectet. Weblapján javítást engedélyezni akarjuk, illetve el szeretnénk érni az alap- keresztül  http://www.michael-steil.de érhetõ el. lapi EEPROM 256 bájtját, akkor szükségünk lesz egy SMBus illesztõprogramra. Az Xbox Linux CVS i2c-xbox modulja  és az lm_sensors tervezet amd-756 modulja közül ízlés szerint választhatunk – mindkettõ tökéletesen mûködik. KAPCSOLÓDÓ CÍMEK

XFree86 Az összes modlapka áttekintõ oldala Az XFree módosítások nélkül is azonnal futtatható, ha frame-  http://www.xbox-scene.com/modchips.php buffer illesztõprogramot használunk, illetve kikapcsoljuk a USB átalakítókábel  http://www.lik-sang.com PCI-számbavételt a beállítófájlban. Az nvdrv illesztõprogram és  www.googleshack.com egy módosított változata lehetõvé teszi a mûködés közben Xbox Linux-weboldal (források és bináris állományok történõ videomódváltást, illetve 2D-gyorsítást is biztosít (GLX letöltése, számos útmutató, hivatkozás stb.) kiterjesztések). A multimédiás alkalmazások egy meg nem je-  lenõ gyorstárba képezhetik le ablakaikat, megjelenítésükrõl és http://xbox-linux.sourceforge.net megfelelõ átméretezésükrõl már a vas gondoskodik. Az illesz- Xbox-oldalak  tõprogramból elõfordított változatok is elérhetõk. Az nvdrv http://www.xboxhacker.net és www.xbox-scene.com nyílt forrású illesztõprogram az nVidia grafikai eszközökhöz,

www.linuxvilag.hu 2003. augusztus 21 Vezérfonal

AMD64 Opteron: az elsõ találkozás Az Opteron felépítésénél fogva megtartja az x86 alapú gépekkel a bináris szintû együttmûködés lehetõségét, ám megnövelt címterével komolyabb alkalmazások – például áramkörtervezõ programok – kezelésére is alkalmas.

ég az AMD64 Opteron processzor hivatalos meg- séget és hibajavítási jelenése elõtt módunk nyílt arra, hogy kipróbáljunk lehetõségeket biztosít. egy kétprocesszoros SMP rendszert egy 64 bites Az ECC (hibajavító MLinux-terjesztéssel. A legtöbb Linux-felhasználó számára az kód) alapú védelem az Opteron bevezetése az elmúlt évek legjelentõsebb eseménye. elsõ- és másodszintû

© Kiskapu Kft. Minden jog fenntartva Elõzetesünkben a következõ témákkal fogunk foglalkozni: gyorsítótár tartalmára, • Az AMD64 Opteron felépítésének áttekintése. a másodszintû gyorsí- • Kétutas SMP mintarendszer a Newisys, Inc.-tõl. tótár jelölõire (tag) és • Néhány futtatási eredmény GPL alkalmazásokkal. – megfelelõ memória • A teljesítményadatok elõzetes értékelése. telepítése esetén – a külsõ DRAM adataira AMD64 Opteron processzorok egyaránt kiterjed. Az Opteron egy új eszközcsalád, ami ugyan 64 bites felépítéssel Az AMD az Opte- készül, ám képes együttmûködni a korábbi 32 bites, x86 alapú ronok esetében háromszámjegyû jelölést alkalmaz. Az elsõ eszközökkel. Az AMD döntése, mely szerint fenntartja az számjegy az SMP méretezhetõséget adja meg, ami az 1,8 GHz együttmûködés lehetõségét, kedvezõen befolyásolta a 32 bites órajelû, 244-es és e cikk alapjául szolgált, 1,6 GHz órajelû, 242-es alkalmazások áttelepítésének lehetõségeit. jelzésû Opteron esetében kettõ, vagyis ezek a processzorok Az Opteron négy programozási modellt támogat. Az elsõ az kétutas rendszerekben használhatók. A második számjegy az általános célú modell, ami alapvetõ mûveletek végrehajtására adott méretezhetõségi osztályon belüli teljesítményre utal. szolgál, például ilyen a memória-hozzáférés, a folyamatvezérlés, Ahogy a lapkagyártási megoldások fejlõdnek, a költségek a kivételkezelés, a ki- és bevitelek. Az általános célú modell pedig csökkennek, az osztályokon belül további modellszámok olyan memória-kezelésbeli egyszerûsítéseket is életbe léptet, is megjelennek majd, nagyobb órajellel, alacsonyabb áron. aminek elõnyeit a többi alkalmazáskészítési modell is kiaknázza. Az AMD egyutas Opteront is gyártani fog, amit nagy teljesít- A második modell a 128 bites médiaprogramozás, ami 128 bites ményû, de viszonylag olcsó gépekbe szán. XMM regisztereket használ. Ez a modell többek között egész és A 240-es, 242-es és 244-es modellek már cikkem írásakor is lebegõpontos jellegû mûveletek végrehajtását támogatja vekto- elérhetõk. A nyolc- és egyutas modellek késõbb jelennek rokon és skaláris adatokon. A 64 bites médiaprogramozási mo- meg, még ebben az idén. dell hasonló képességekkel rendelkezik. Az utolsó programozási Az Opteron az x86 kiterjesztése, általa a meglévõ 32 bites alkal- modell az x87 lebegõpontos, ami x87-es regisztereket használ 80 mazások 64 bites operációs rendszer felett is futtathatók. A 64 bi- bites lebegõpontos és skaláris jellegû mûveletek végrehajtására. tes operációs rendszert futtató felhasználók a jövõben megjelenõ, A processzor magjának kódneve Sledgehammer, magát a lapkát 64 bites alkalmazásokat is használni tudják majd, miközben saját 940 érintkezõs kerámia mikroPGA tokozásban kapjuk. A jelen- kedvük szerint válthatják le korábbi 32 bites alkalmazásaikat. legi Opteronok közel 106 millió tranzisztort tartalmaznak, 130 nm-es csíkszélességgel, és „szilícium a szigetelõn” (SOI) eljá- A Newisys 2100 kiszolgáló rással készülnek. A lapkák gyártása az AMD Fab30 gyárában, A próbagép a 2100 jelzést kapta, gyártója a Newisys, Inc. Drezdában folyik. Az elsõszintû (L1) gyorsítótár mérete 128 KB, – egy olyan cég, ami immár két éves tapasztalattal rendelkezik ez két részre oszlik: egy 64 KB méretû utasítás- és egy 64 KB-os az Opteronnal kapcsolatban (lásd a Kapcsolódó címeket). adatgyorsító tárra. A lapkán egy 1 MB kapacitású másodszintû A 2100-at, ami egy 1 egység magas, állványra szerelhetõ gyorsítótár is helyet kapott. A processzor 1,55 voltos feszültség- rendszer, remekül összerakták. Mechanikai és elektronikus gel üzemel, szilíciumlapkájának mérete 193 mm2. A források felépítése a doboz zsúfoltsága ellenére megbízhatóságot között további adatokat is találni az AMD64 felépítésérõl, illetve sugall (2. kép). A tápegység MTBF (a meghibásodások között a processzor nyílt forrású támogatásáról. átlagosan eltelt idõ) mutatója például 500 000 óra. Ha egy Az Opteron processzor magas fokon integrált lapka, adottságai évben 2080 órát dolgozunk, vagyis napi 8 órában, akkor ilyen a kiegyensúlyozott rendszerteljesítmény elérését szolgálják. szintû megbízhatósággal átlagosan 240 évente volna szabad Beépített, nagyteljesítményû adatkapcsolattal bír – ennek neve hibát ejtenünk. HyperTransport –, ami 6,4 GB/s sebességû, teljes kétirányú adat- Az Opteronhoz igazított lapkakészleteknek és a nagyszerû adott- csere lehetõséget teremt a processzor és a többi HyperTrans- ságoknak köszönhetõen a rendszer kiemelkedõ memóriakezelési port-csomópont között. A processzor akár három HyperTrans- teljesítménnyel és -kapacitással rendelkezik. Eredményként egy port-összeköttetést is tud kezelni, így összesített sávszélessége nagyteljesítményû, kiegyensúlyozott kiszolgáló jött létre, erõteljes a 19,2 GB/s-t is elérheti. Emellett minden Opteron beépített be- és kiviteli alrendszerrel. A próbagép 6 GB PC2700-as memó- memóriavezérlõvel rendelkezik, ami rendkívül nagy sávszéles- riát tartalmazott, bár akár 16 GB kezelésére is képes.

22 Linuxvilág Vezérfonal

A 3. kép felülnézetben mutatja a rendszert. A két réz hûtõborda IDE CD-ROM- és USB-kapuval is rendelkezik. Egy SuperI/O alatt lapulnak a processzorok. A gép kétféle sebességet támo- lapka tõle függetlenül biztosítja a hajlékonylemezes meghajtó, gat: az 1,6 GHz-es 242-es és az 1,8 GHz-es 244-es Opteron-mo- a billentyûzet és az egér csatlakoztatásának lehetõségét, illetve delleket. Az Opteronok HyperTransport alapú összeköttetést egy hagyományos soros kaput is igénybe vehetünk. létesítenek egymással és a lapkakészlettel. A processzor–pro- A rendszer egy teljesen különálló beágyazott felügyeleti pro- cesszor kapcsolatátviteli sebessége mindkét irányba 3,2 GB/má- cesszorral rendelkezik, ami Linuxot futtat. Ez az alrendszer a sodperc. Az Opteronok mindegyike saját, belsõ memóriavezér- Motorola XPC855T PowerPC processzorára épül, és 2.4.18-as lõvel bír, ami támogatja az ECC DDR SDRAM-okat, és – mind- rendszermagot futtat. Az apró elõoldali felügyeleti konzol egyik processzorhoz külön-külön – legfeljebb 5,33 GB/másod- csatlakozó mellett a felügyeleti processzor két saját, 10/100 Mb/s perc sávszélességre képes. A gépben két memóriabankot sebességû ethernetcsatolóval is rendelkezik, amik független találunk, mindkét processzorhoz egyet-egyet. felügyeleti alhálózatra köthetõk. A rendszerfelügyeleti teendõk tehát billentyûzet és monitor nélkül végezhetõk el, még soros konzolos hozzáférés-kiszolgálóra sincs szükség, és a PCI-fog- lalatok közül sem kell felhasználni egyet sem. A rendszerfelügyeleti képességek tekintetében nincs okunk panaszra. A felügyeleti processzor az SNMP, a CIM és az IPMI protokollt támogatja. Ugyancsak ismeri a NIS, a Microsoft Active

Directory és az LDAP alapú hitelesítést. A felügyeleti processzor © Kiskapu Kft. Minden jog fenntartva beállításait pont–pont-kapcsolaton keresztül tudjuk másolni. Emellett arra is lehetõség van, hogy egy adott felügyeleti pro- cesszort egy egész kiszolgálótelep vezérlõjeként jelöljünk ki. A felügyeleti processzor akár teljesen szûz gép ellenõrzésére is használható. A gép vizsgálata – a memória és a processzor eset- leges hibáinak felderítése – teljesen önállóan is elvégezhetõ. A Newisys bejelentette, hogy õk a mûszaki megoldásokat fogják fejleszteni, de a gyártást és értékesítést külsõ OEM és szerzõdé- ses gyártók számára fogják átadni. A Sanmina SCI-vel létezõ szerzõdésük van a gyártásra, míg az értékesítést az Avnet végzi. A Newisys partnerei között nagyobb informatikai cégeket is talá- lunk, mint az Angstrom Microsystems, az APPRO, a RackSaver, az M&A Technology, a Microway, a New Technology Solutions, 1. kép Az AMD honlapja Inc. és a ProMicros. Írásom készültekor körülbelül hatszáz pró- bagép már az OEM-eknél, Fortune 500 cégeknél és természe- tesen a Linux Journal szerkesztõségében vendégeskedett.

SuSE Linux Enterprise Server 8 és GNU-alkalmazások Mivel nagyon új géprõl van szó, az uname -a parancs után a cat /proc/cpuinfo szöveget gépeltük be izgatottan a bash parancssorába:

processor : 0 vendor_id : AuthenticAMD cpu family : 15 model : 5 model name : AMD Opteron(tm) stepping : 0 cpu MHz : 1594.286 cache size : 1024 KB 2. kép A Newisys 2100 két Opteron processzort tartalmaz fpu : yes egy 1 egység magas házban fpu_exception : yes level : 1 Az AMD-8000 HyperTransport lapkakészlet egy AMD-8131 wp : yes HyperTransport PCI-X lapkát és egy AMD-8111 I/O jelzésû flags : fpu vme de pse tsc msr pae elosztólapkát foglal magában. Az AMD-8131 lapka a teljes mce cx8 apic sep mtrr pge hosszúságú PCI-X kártyákat 64 biten és 133 MHz órajellel, mca cmov pat pse36 clflush 1 GB/másodperc átviteli sebességet elérve hajtja, míg a félhosz- fxsr sse syscall szúságú PCI-X kártyákat 64 biten és 66 MHz órajellel, 0,51 nx mmxext lm 3dnowext 3dnow GB/másodperc sebességet biztosítva. Az AMD-8131 két darab bogomips : 3178.49 10 Mbit/100 Mbit/1 Gbit másodpercenkénti sebességeket támo- TLB size : 1088 4K pages gató hálózati csatolót bocsát rendelkezésünkre, illetve egy clflush size : 64 kettõs Ultra-SCSI RAID-vezérlõt. A próbagépben üzem közben address sizes : 40 bits physical, 48 bits cserélhetõ, Ultra-SCSI meghajtókat találtunk RAID-összeállí- virtual tásban, a gépház elülsõ részében. Az AMD-8111 lapka VGA-, power management : ts ttp

www.linuxvilag.hu 2003. augusztus 23 Vezérfonal

nös tekintettel a HDL-szimulációk- 1. táblázat Az Opteron 244 ra és összeállítások teljesítményadatai tervezésére. (A Linux Journal Név Alap Csúcs korábban kétszer SPECint_rate2000 24,5 26,1 is készített interjút SPECfp_rate2000 24,6 26,5 Stephen Williams- szel, az Icarus ké- szítõjével.) A for- 2. táblázat dító szolgáltatá- Az Opteron 244 Java sainak lendülete- Middleware Benchmark eredményei sen bõvülõ körét Név Mûvelet/másodperc szemlélve megál- lapítottuk, hogy SPECjbb 55 000 komoly, logikai és 3. kép A Newisys 2100 felülnézetbõl FPGA tervezésre

© Kiskapu Kft. Minden jog fenntartva ipari környezetben is alkalmas EDA eszközzé nõtte ki magát. Mivel Stephen az elmúlt öt évben az Icarust tisztán 64 bites kóddal készítette, Alpha gépen – és Linux alatt – a fordító lefordítása nem okozott gondot. Érdekes volt nézni, hogy mi- lyen gyorsan futott és milyen jól bírta a nagyobb terheléseket. A próbát egy nagyobb szorzólogika modelljével és az Icarus pró- 4. kép A kiszolgáló felügyeleti processzora saját LCD-vel bír, ami a CD- ROM-meghajtó alatt található bakörnyezetével végeztük, és ugyanazt a binárist használva közel kétszer gyorsabb futás értünk el, mint egy 1,5 GHz-es órajelû Athlon processzorral. A nagyobb terhelést úgy szimuláltuk, hogy Az 1-es processzor adatai is ugyanezek, ám annál a BogoMips- egy 1 720 648 sornyi Verilog-kódból álló logikai modellt dolgoz- érték 3185,04. tunk fel. Az eredmény lélegzetelállító volt. A gép 61 perc alatt A SuSE Linux Enterprise Server 8 elsõdleges grafikus felülete fordított le egy olyan modellt, aminek a memóriabeli lenyomata a KDE 3.0. A gépen azokat a megszokott segédprogramokat nagyobb volt, mint a 32 bites Linux alatt elérhetõ legnagyobb és alkalmazásokat találtuk, amiket a SuSE-terjesztésekben felhasználói memóriaterület – nem kevesebb, mint 3,6 GB. általában szoktunk. Az, hogy a SuSE Enterprise Linux immár Mivel az Icarus a saját szálkezelõ rendszerét használja, ezek az Opteron processzoron is fut, rengeteg munka eredménye, és EDA-próbák csak a gép felét használták ki. A másik processzor a 64 bites Linux megteremtésének régre visszanyúló történetét – méretezhetõ memória-sávszélességgel – további EDA-szimu- idézi fel – az egész valamikor akkor kezdõdött, amikor Linus lációkat tud futtatni úgy, hogy ez az elsõ processzor munkáját Torvalds egy Digital Alpha gépet kapott Jon „maddog” Hall-tól. nem érinti. Az Opteron egyértelmûen kiváló választás, ha A GNU-környezetrõl egyszerûen csak annyit, hogy mûködik mérnöki tervezõmunkákról van szó. – 64 biten. A megszokott fordítókat és a GNU alkalmazásfej- Az utolsó nagyobb próba a Linux Test Project (LTP) lefordítása lesztési környezetet minden módosítás nélkül azonnal haszná-  latba vehetjük. Az elsõ meglepõ dolog, hogy az Emacs gyakor- latilag azonnal elindul, még pislogni sincs idõnk. Elsõ próbaként lefordítjuk és futtatjuk a GNU Scientific Library KAPCSOLÓDÓ CÍMEK (GSL) könyvtárat, ami numerikus számítások elvégzésére szol- gál. A könyvtár elég erõteljes, mi az 1.3-as változatát használtuk. Webes források Ezután lefordítottunk néhány példaprogramot a GNU Scientific AMD64 Opteron, Advanced Micro Devices Library Reference Manualból, és véletlen számokat állítottunk  http://www.amd.com elõ. Maga a program meglehetõsen egyszerû, fordításakor sem- Newisys, Inc. (mûszaki fejlesztés)  http://www.newisys.com milyen optimalizálást nem végeztünk, ám a gép még így is há- Az AMD64 termékvonal nyílt forrású támogatása romszor gyorsabbnak bizonyult egy 800 MHz-es x86-os gépnél.  http://x86-64.org Hamarosan azt is megtudtuk, a hétköznapok során mennyire GNU-programok nem foglalkozunk azzal a ténnyel, hogy a gép, amin progra- GNU Scientific Library mozunk, 32 bites – vagy éppen nem az. A tesztprogram egyik  http://www.gnu.org/directory/GNU/GNUsl.html része egy 1-es értékû egész számot a sizeof(int) *8-1 Icarus Verilog fordító  http://www.icarus.com értékkel balra tolt el, a gép natív egész számainak bitmérete  alapján így kapta meg a bitek számát. Ezen a gépen – ellentét- Linux Test Project http://ltp.sourceforge.net ben a normál x86-os gépekkel – a programot ezzel a hordoz- Teljesítménytesztek hatónak éppen nem nevezhetõ paranccsal lefordítva azonnal HPC Linpack  http://www.netlib.org/linpack egésztúlcsordulást kaptunk. Ugyan a fontosabb programok SPEC CPU2000  http://www.spec.org/osg/cpu2000 64 biten is mind tökéletesen futnak, elõfordulhat, hogy a saját SPEC JBB2000  http://www.spec.org/jbb2000 kódunkkal dolgoznunk kell egy kicsit. SPECWeb 99  http://www.spec.org/osg/web99 A következõ próbát az Icarus Verilog fordítóval végeztük. Az SPECWeb SSL  http://www.spec.org/osg/web99ssl Icarus Verilog egy GPL alatt megjelenõ Verilog HDL fordító TPCC  http://www.tpc.org/tpcc elektronikai tervezési feladatok automatizálására (EDA), külö-

24 Linuxvilág Szaktekintély

SQL adatbázis beágyazása az SQLite segítségével Ha élvezni szeretnéd az SQL kényelmét, de nem akarsz egy nagyméretû adatbázis-kiszolgáló telepítésével szenvedni, ágyazd be az SQLite-ot a programodba, bármilyen nyelven íródjon is.

z SQLite nagy teljesítményû, beágyazott relációs adat- egyenlõtlenségi megszorításokkal végrehajtott indexelt lekér- bázis-kezelõ rendszer, ami egy viszonylag kisméretû dezéseket tesz lehetõvé, illetve a tranzakciókat is támogatja. C-könyvtárban kapott helyet. Fejlesztõje D. Richard A végeredmény egy sokkal nagyobb tudású adatbázisrendszer HippA. Támogatása az SQL92 szabvány túlnyomó részére, több lett. A 2.0-s változat 2001 szep- tábla és index létrehozatalára, tranzakciókra, nézetekre, rava- temberében jelent meg public

© Kiskapu Kft. Minden jog fenntartva szokra és rengeteg különbözõ ügyfélfelületre és illesztõprog- domain szerzõdéssel. ramra terjed ki. A könyvtár önálló egységet képez, és mind- Az SQLite felemelkedése is a Felület össze 25 000 sornyi ANSI C-ben készült kódból áll. Bármely 2.0-s változat megjelenésével célra szabadon felhasználható; gyors, hatékony és méretezhetõ, indult meg. Ekkor már egyre számos különbözõ rendszeren és géptípuson fut, az ARM/ több, különféle területeken dol- Linux párosítástól kezdve egészen a SPARC/Solarisig. Adat- gozó fejlesztõ ragadott billentyû- Jellemzõ bázis-formátuma bájtszinten alkalmas a különbözõ bájtsorren- zetet, és írta le, hogyan építette det használó gépek közötti együttmûködésre, adatbázisainak be kereskedelmi vagy éppen mérete pedig akár 2 TB is lehet. szabad termékekbe. Néhányan Értelmezõ Hipp agyából akkor pattant ki az SQLite ötlete, amikor a mûszaki támogatást vagy egyedi General Dynamicsnél dolgozva csapata az amerikai haditen- módosításokat is kértek Hipptõl. gerészet DDG osztályú rombolói számára fejlesztett fedélzeti Hipp elmondása szerint az egyik programot. A program HP-UX alatt futott, és Informix adat- széles körben elterjedt win- Kód- elõállító bázist használt. Miután elkezdték a munkát, hamarosan felis- dowsos program újabb kiadásai merték, hogy az Informixszel nagyon nehéz dolgozni. Ha is magukban foglalják az SQLite egyszer sikerült üzembe helyezni, akkor elég szépen futott, egy módosított változatát. Az Virtuális ám még egy nagy tapasztalattal rendelkezõ szakembernek is SQLite nemcsak a fejlesztést gép egy teljes napja ráment egy-egy telepítésre vagy frissítésre. eredetileg ösztönzõ haditengeré- Abban az idõben a csapat a fejlesztésekhez Linuxot és Postgre- szetnél, de az amerikai hadsereg SQL-t használt. A PostgreSQL lényegesen kevesebb felügyeletet egyéb részlegeinél és a Duke B-fa kívánt, ám õk olyan önálló programot akartak készíteni, ami Energynél is megtalálta helyét. gyorstár bárhol futtatható, függetlenül az adott rendszerre telepített Másfél évvel ezelõtti nyilvános egyéb programoktól. 2000 januárjában Hipp és egy munkatársa megjelenése óta az SQLite megvitatták egy egyszerû, felügyeletet és támogatást nem szolgáltatásainak és felhaszná- Lap- gyorstár igénylõ, beágyazott SQL-adatbázismotor készítésének az ötletét, lóinak köre rohamosan bõvül. aminek alapja GDBM lenne. Késõbb Hipp egymaga látott neki Az SQLite Wikibe bepillantva a munkának, és hamarosan elkészült az SQLite 1.0. számos további alkalmazást OS- A General Dynamics a PostgreSQL helyett azonnal az SQLite- találunk, ezeknek a fejlesztõi rendszermag ot kezdte alkalmazni. Az SQLite segítségével önálló alkalma- felfedezték és a saját program- zásokat tudtak készíteni, amiket gyorsan és könnyen telepít- jukba építették be az SQLite-ot. hettek a bemutatókra és vásárokra vitt hordható (wearable Saját Apache modullal is ren- Az SQLite felépítése computer) és hordozható számítógépekre. Az Informix tovább- delkezik (mod_auth_sqlite), ra is fontos szerepet játszik a fedélzeti rendszerekben – igaz, aminek létezését már önmagá- Hippet nemrég felkérte a tengerészet, hogy segítsen az SQLite ban is a siker jelének tekinthetjük. Gerhard Häring és jómagam HP 9000-re való lefordításában. Lehet, hogy hamarosan a PySQLite – Python kiterjesztés SQLite-hoz – készítõiként változások lesznek? meglepõdve számláltunk össze több mint 3000 letöltést, keve- A nagyobb módosítások a 2.0-s változattal érkeztek. Az elsõ sebb mint egy év alatt. Az SQLite jelenleg a legmagasabb pont- változat az adatok tárolásához GDBM-et használt, ami rende- számot elért adatbázismotor a  http://freshmeat.net oldalon. zetlen kulcsokat, másszóval kivonatolást alkalmaz. Emiatt azonban korlátozott volt az SQLite szolgáltatásainak a köre. Felépítés Emellett a GDBM GPL szerzõdéssel jelenik meg, és ez néhá- Az SQLite tetszetõs, moduláris felépítésû. Nyolc elsõdleges nyakat visszatart a kipróbálásától. 2001 januárjában Hipp egy alrendszerre osztható (lásd az ábrán), ezek közül néhány meg- saját B-fa alapú háttéren kezdett dolgozni, amivel a GDBM-et lehetõsen érdekes megközelítést tükröz az adatbázis-kezelés akarta kiváltani. Az új B-fa alrendszer kulcsok szerint rendezve területét illetõen. tárolja a rekordokat, így hatékonyabb mûködést, logaritmikus Az ábra tetején az értelmezõ és a jelkezelõ látható. Az SQLite idõben végrehajtott minimum- és maximumkeresést, saját, magas fokon hatékonnyá tett és a Lemon névre keresztelt

26 Linuxvilág Szaktekintély

désének elméletérõl és programnyelvének mûveleteirõl 1. lista Az explain kimenete egy egyszerû lekérdezésre részletesen olvashatunk az SQLite weboldalán. A fizikai tárolás szempontjai miatt minden adatbázis egyetlen SQLite version 2.7.1 fájlban található. Minden olyan objektum tehát, ami szerepel Enter ".help" for instructions az adott adatbázisban (nézetek, ravaszok, indexek, táblák, sqlite> .explain sémák stb.), egyetlen, az adott SQLite-adatbázist meghatározó sqlite> explain select lastname,firstname állományban foglal helyet. Az adatbázisfájlok egységesen from person; formázott lapokból állnak össze. A lapméret meghatározása az addr opcode p1 p2 p3 adatbázis létrehozásakor történik, értéke 512 bájt és 4 Gb között ------lehet. Alapértelmezett esetben az SQLite 1 Kb méretû lapokat 0 ColumnCount 2 0 hoz létre, így lehet a legjobb általános teljesítményt elérni. 1 ColumnName 0 0 lastname A tranzakciókat egy második állomány, a napló segítségével 2 ColumnName 1 0 firstname valósítja meg, ami ténylegesen csak akkor létezik, ha egy vagy 3 Open 0 3 person több mûködõ kapcsolat áll fenn az adatbázissal. Minden adat- 4 VerifyCookie 276 0 bázishoz egyetlen naplófájl tartozik, ez azokat az eredeti – mó- 5 Rewind 0 10 dosítás elõtti – lapokat tartalmazza, amik tartalma a tranzakció 6 Column 0 4 feldolgozása közben módosult. Amikor jóváhagyod a tranz-

7 Column 0 3 akciót, a naplólapokra többé nincs szükség, így törlésre kerül- © Kiskapu Kft. Minden jog fenntartva 8 Callback 2 0 nek. A mûveletek visszavonásakor a motor a naplófájlból állítja 9 Next 0 6 vissza a lapokat az adatbázisfájlba. A naplófájl használata teszi 10 Close 0 0 lehetõvé azt, hogy az adatbázis akár egy összeomlást is túlél- hessen, és egységes állapotba lehessen visszaállítani. Össze- omlás után az elsõ ügyfélnek az adatbázishoz történõ csatlako- értelmezõt tartalmazza, ami gyors, hatékony kódot készít, és zása egy ravasszal elindítja az elõzõ tranzakció visszavonását. újszerû felépítésénél fogva kifejezetten ellenáll a memóriaszi- Kicsit pontosabban: amikor az ügyfél csatlakozik, az SQLite várgásoknak. Alul a Knuth alapú B-fa megvalósítás található, megpróbál egy új naplófájlt létrehozni, és ekkor észleli, hogy ami egy hangolható lapgyorsítótár felett fut, a lehetõ legkisebb már létezik egy ilyen. Ha erre kerül sor, akkor a motor felté- számú lemezhozzáférés mellett. A lapgyorsítótár egy operációs telezi, hogy összeomlás történt, és a régi naplófájl tartalmát rendszertõl függõ elvonatkoztatási rétegen fut, ennek köszön- visszamásolja az adatbázisba, gyakorlatilag az eredeti, össze- hetõen a könyvtár magasabb fokon hordozható. omlás elõtti állapotába állítva vissza azt. Az ügyfél csak ezt A könyvtár középpontjában a virtuális adatbázismotor (VDBE) követõen kapja meg a lehetõséget a munka megkezdésére. található. A VDBE végzi az összes adatkezeléssel kapcsolatos feladatot, minden az ügyfelek és a tárrendszer között áramló Egyszerû API, sok nyelv adat rajta halad keresztül. Tulajdonképpen ez az SQLite szíve. Az SQLite egy rendkívül könnyen használható API-val ren- A VDBE szerepe az SQL-utasítások értelmezése után kezdõdik. delkezik, ami mindössze három függvény révén alkalmas az A kódkészítõ az értelmezési fa alapján egy apró programot állít SQL-utasítások végrehajtására és az adatok kinyerésére. Bõvít- elõ, ami a VDBE virtuális gép nyelvében található utasítások hetõ, a programozó C-visszahívók formájában egyedi függ- sorozata. A VDBE egyenként végrehajtja az utasításokat, vég- vényeket és összesítéseket adhat meg. A C API a parancsfájl- eredményként az SQL-utasításban megadott parancsot teljesíti. készítõ felületek alapja is egyben, ezek egyikét – a Tcl-felületet A VDBE gépi nyelve 128 utasításból áll, ezek mindegyike az – a terjesztésben is megtaláljuk. A nyílt forrású programok adatbázis-kezeléssel kapcsolatos. Külön parancsok szolgálnak közössége számos további ügyfélfelületet, csatolót és illesztõ- a táblák megnyitására, az indexekben való keresésre, a rekor- programot is kifejlesztett, ezek révén az SQLite más nyelvek- dok tárolására és törlésére, illetve a számos egyéb adatbázis- kel és könyvtárakkal is használható. kezelõ mûveletre. A VDBE minden utasítása egy mûveleti A C API használatához mindössze három lépést kell végrehaj- kódból és legfeljebb három mûveleti értékbõl áll. Egyes utasí- tani. Az sqlite_open() hívással – a fájlnév és az elérési mód tások – jellegüktõl függõen – akár mindhárom mûveleti értéket megadásával – lehet csatlakozni a kívánt adatbázishoz. Ezután használják, míg mások egyiket sem. Az open utasítás például, egy visszahívó függvényre van szükség, amit az SQLite az adat- ami egy tábla egy mutatóját nyitja meg, mindhárom mûveleti bázisból lekért rekordok mindegyikére meghív. A záró lépés az értéket használja. Az elsõ mûveleti érték (P1) a mutató késõbbi sqlite_exec() meghívása, aminek egy karakterláncban a kezelésére szolgáló azonosítót tartalmazza. A második (P2) végrehajtandó SQL-utasítást, illetve a visszahívó függvényünkre a tábla gyökér (vagyis elsõ) lapjának helyére mutat, a harmadik hivatkozó mutatót adjuk át. A hibakezeléstõl eltekintve végez- pedig a tábla neve. A rollback utasítás – ellenpéldaként – tünk is. A 2. listában (50. CD Magazin/SQL könyvtár) erre egyetlen mûveleti értéket sem igényel, a VDBE-nek csak annyit találunk egy egyszerû példát. kell tudnia, hogy végrehajtsa-e a visszavonást vagy sem. Szembeötlõ – és fontos – eltérés a többi adatbázis-ügyfélkönyv- Ha érdekel, hogy az adott SQL-utasításhoz milyen VDBE- tárhoz képest a visszahívó függvény használata. Az egyéb ügy- program tartozik, az SQLite parancssorának explain paran- fél API-k használatakor meg kell várnunk az eredmény össze- csával megtekintheted. Az 1. lista erre mutat példát. állítását, az SQLite esetében viszont az eredményt összeállító Az explain nem csupán akkor hasznos, ha betekintést szeret- folyamat kellõs közepébe csöppenünk, és végigkövethetjük az nénk nyerni a VDBE mûködésébe, de olyan gyakorlati teen- eseményeket. Így az adatok kinyerésében is sokkal aktívabb dõknél is, mint például a lekérdezések hatékonyságának a szerepet játszhatunk, és közvetlen hatást gyakorolhatunk a javítása. A VDBE valóban érdemes arra, hogy önmagában is lekérdezési folyamatra. Az adatok összesítését már kinyerés kiterjedt vizsgálatok tárgyát képezze. Szerencsére ehhez min- közben elvégezhetjük, de akár meg is szakíthatjuk a rekordok den feltétel adott: a motorhoz remek leírás tartozik, mûkö- lekérdezését. Vegyük észre, hogy az adatbázis beágyazott

www.linuxvilag.hu 2003. augusztus 27 Szaktekintély

3. lista Python-példa 5. lista Héjpélda

import sqlite #Az SQL-utasítás létrehozása, elhelyezése #a $sql változóban conn = sqlite.connect(db="db", mode=077) read -d ´EOF´ sql<&1) if [ $? = "1" ] row = cursor.fetchone() then while row != None: # Hiba történt. Hibajelzés és kilépés. print "%14s, %15s" % (row[´firstname´], printf "Error: $ret.\n" row[´lastname´]) printf "SQL: $sql\n" exit 1

© Kiskapu Kft. Minden jog fenntartva row = cursor.fetchone() else # Hiba nem történt, az eredmény # kiírása for row in $ret 4. lista Perl-példa do IFS="|" use DBI; my $dbh = DBI->connect # Változók értékadása ("dbi:SQLite:dbname=dbfile", # a rekordokból "",""); set $row

my $cursor; # Hozzárendelések kényelmi my @rec; # okokból firstname=$1 my $SQL = "select * from person order by lastname=$2 lastname"; dir=$3 printf "%-14s %-15s\n" $cursor = $dbh->prepare($SQL); $firstname $lastname $cursor->execute(); unset IFS while(@rec = $cursor->fetchrow_array) done { fi print "$rec[0], $rec[1]\n"; } Önmûködõ sorszámozás $cursor->finish; Az SQLite a sorozatokat kifejezetten nem támogatja, ám kezeli az $dbh->disconnect; önmûködõen növelt kulcsokat, a MySQL mysql_insert_id() függvényével egyenértékû módon. Az elsõdleges kulcsot önmû- ködõen úgy növelhetjük, hogy INTEGER PRIMARY KEY típussal jellegénél fogva alkalmazásunk legalább annyira kiszolgáló, adjuk meg. Az utoljára beillesztett rekord e mezõjének az értékét mint ügyfél, és a visszahívó felület révén az SQLite maradékta- az sqlite_last_insert_rowid() hívással kaphatjuk meg. lanul ki is használja ennek az adottságnak az elõnyeit. A normál C API mellett egy kiterjesztett API is rendelkezé- BLOB-ok sünkre áll, amivel még könnyebb a rekordok lekérdezése. Az SQLite oszlopaiban bináris adatokat is tárolhatunk, azzal Az sqlite_get_table() használatakor visszahívó függ- a megkötéssel, hogy rögzítésük csak az elsõ NULL karakterrel vényre nincs szükség. Ez a függvény inkább a hagyományos bezárólag történik meg. Ha bináris adatokat szeretnénk tárolni, ügyfélkönyvtárakra emlékeztethet, amiknél átadjuk az SQL- elõször a kódolásukat kell elvégeznünk. Az egyik lehetõség utasítást, majd megkapjuk az eredmény sorait. A kiterjesztett az URL-stílusú kódolás, a másik a base64. Ha nincs semmilyen API saját függvények és összesítõk hozzáadásával többek különleges igényünk, akkor az SQLite két ilyen célú függ- között az SQL kibõvítését is lehetõvé teszi – ezekrõl a lehetõ- vényével – sqlite_encode_binary() és ségekrõl késõbb még lesz szó. sqlite_decode_binary() – ezt is könnyedén letudhatjuk. Végül, ha valamilyen oknál fogva ODBC-felületre van szüksé- ged, örömmel újságolhatom, hogy Christian Werner munkájá- A programszálak biztonsága nak hála, errõl sem kell lemondanod. Az ODBC illesztõprog- Az SQLite pontosan annyira biztonságos, amennyire maga ram a  http://www.ch-werner.de/sqliteodbc címrõl tölthetõ le. a beágyazóprogram is az. A kérdés többé-kevésbé az sqlite_open() által visszaadott SQLite-kapcsolatkezelõhöz

28 Linuxvilág Szaktekintély

(connection handle) kötõdik. Ez az, amit nem szabad megosz- Felügyelet tani a futtatási környezetek között, minden szálnak saját pél- Felügyeleti célokra az SQLite esetében egy sqlite nevû dányt kell biztosítani. Ha ragaszkodunk ahhoz, hogy a szálak segédprogram szolgál, ami a MySQL- és PostgreSQL-használók osztozzanak rajta, egy mutex segítségével kell védeni. A kap- számára nem fog meglepetéseket okozni. Héj és parancssori csolatkezelõket a Unix fork() hívások között sem szabad módja egyaránt létezik. Héjból az adott adatbázis tábláinak megosztani. Ezt – gondolom – nem kell különösebben magya- nevét, sémáját és indexeit tekinthetjük meg, illetve SQL-utasí- rázni. Alapelv tehát, hogy minden szál vagy folyamat saját tásokat hajthatunk végre, akár a parancssorba gépelve, akár kapcsolatkezelõvel rendelkezzen, és semmi gond nem lesz. külsõ állományból véve õket. Az adatok és a VDBE kimene- Az SQLite a futásidejû viselkedés szabályozására pragmákat tének megjelenítésére is jól használható. használ. A pragmák olyan beállítások, amiket SQL jellegû írás- Az adatok betöltése és kimentése héjból és parancssorból móddal adhatunk meg. Vannak olyan pragmák, amik – például egyaránt megoldható – igaz, az utóbbival könnyebb dolgunk a gyorstár méretének megadása vagy a szinkrn írások enge- lesz. Ha egy fájl érvényes DDL/DML utasításokat tartalmaz délyezése vagy letiltása révén – a teljesítmény finomhango- (a neve legyen dump.sql), akkor a következõ módon tölthetõ lására szolgálnak. Mások hibakeresésre, az értelmezõ és a be az adatbázisba (ennek neve legyen db): VDBE nyomkövetésére használhatók, illetve az ügyféloldali visszahívó függvénynek átadott adatok mennyisége is hasonló sqlite db < dump.sql módon szabályozható. Bizonyos pragmák esetében a hatás

tartóssága is szabályozható, így az adott beállítás vonatkozhat Ilyenkor létrejön egy db nevû adatbázis, mégha korábban nem © Kiskapu Kft. Minden jog fenntartva csak az adott munkamenetre, de lehet állandó jellegû is. is létezett. Ha az adatbázist ki szeretnénk íratni, a következõ Ha az adott oszlop típusa BLOB, CHAR, CLOB vagy TEXT, akkor módon kell eljárnunk: – és csak akkor – az SQLite lexigrafikusan rendezi azt. Egyéb típusoknál a rendezés numerikusan történik. Az SQLite koráb- sqlite db .dump > dump.sql ban kizárólag az értékük alapján rendezte az oszlopokat. Ha „ránézésre” számot talált, akkor numerikus, egyébként pedig Az SQLite kiváló teljesítményt nyújt. Széles körû alkalmaz- lexigrafikus rendezést végzett. A levelezési listán rengeteg vita hatósága, könnyû használata, hordozhatósága, gyorsasága, volt ezzel a témával kapcsolatban, így alakultak ki a jelenlegi méretezhetõsége, kis mérete és letisztult kódja olyan könyv- szabályok, amik a sémában megadott típus révén teszik lehe- tárrá teszik, ami egyetlen programozható eszköztárából sem tõvé az összehasonlítás módjának kiválasztását. hiányozhat. Felhasználói szerzõdése mindenkinek a lehetõ legnagyobb szabadságot kínálja. Az SQLite Project mindig Parancsfájlkészítõ felületek örömmel fogadja az új felhasználókat és fejlesztõket, ahogy Mint korábban említettem, az SQLite-hoz számos ügyfélfelület az újabb ötleteket és vitatémákat is. Remélem, hogy min- létezik. Ízelítõként a 2. kódrészlet C-példájának Python-válto- denki ugyanolyan örömmel ismerkedik meg vele és kezdi zata a 3., Perl-egyenértékese pedig a 4. listában tekinthetõ meg. használni, ahogy én is tettem. Kell ennél egyszerûbb? Az SQLite parancssorból is használ- ható, így rendszerfelügyeleti célokra is alkalmas. A már ismert A cikkhez tartozó listák megtalálhatóak az 50. CD Magazin/SQL példa parancssori változatát mutatja be az 5. lista. könyvtárában. Végül, mivel nem vagyok Java-, Tcl-, Ruby-, Delphi-, Lua-, Objec- tive C-, PHP-, Visual Basic-, .NET-, Mono-, DBExpress-, wxWin- Linux Journal 2003. június, 110. szám dows-, Euphoria- vagy REXX-programozó, mindenkinek javas- lom, hogy az SQLite Wiki segítségével kutassa fel a hozzá hason- ló érdeklõdésûeket, és használja bátran az általa választott felü- Michael Owens ([email protected]) letet ( http://cvs.hwaci.com:2080/sqlite/wiki?p=SqliteWrappers). Programozó, eredetileg kémikus. Egy ingatlan- kezelõ cégnél dolgozik a texasi Dallasban, ahol Az SQLite kiterjesztése Linux alatt fejleszti a cég belsõ alkalmazásait. Az SQLite nagyszerû C-keretrendszerrel bír, amiben saját, SQL- A PySQLite életre hívója és társfejlesztõje. bõl meghívható függvények és összesítõk készíthetõk. Egyes

burkolók – mint például a Python-burkoló – azt is lehetõvé  teszik, hogy ezeket a bõvítmény nyelvén készítsük el. Egy SQL- utasítás – például INSERT INTO orders purchase_date KAPCSOLÓDÓ CÍMEK values CURRENT_TIME() – jó szemléltetõ alanya egy vissza- hívó függvénynek (lásd a 6. listát, 50. CD Magazin/SQL könyv- tár). Mindössze be kell jegyezni a függvényt, és máris lehet Az SQLite készítõje, D. Richard Hipp magas szintû használni (lásd a 7. listát, 50. CD Magazin/SQL könyvtár). támogatást és tanácsadást nyújt az SQLite-hoz.  Az SQLite összes beépített függvénye – mint az avg(), min(), A http://www.hwaci.com/sw/sqlite/support.html címen max() és sum() – ezzel az API-val van megvalósítva, az egyet- további tájékoztatás található róla. len kivétel ez alól a typeof(). Felhasználói összesítõk ugyan- Az SQLite weboldala felbecsülhetetlen értékû forrás, ilyen könnyen adhatók hozzá. A SELECT variance(age) itt találjuk az SQLite SQL C API-jának teljes leírását, from population végrehajtása például nagyon közel áll a illetve az alrendszerek, köztük a VDBE ismertetõjét. függvények készítéséhez. Ezt azonban már inkább a kedves  http://www.sqlite.org olvasóra bízom, amolyan házi feladatként. Egy jó tanács: SQLite levelezési lista a func.c fájlban érdekes példákat lehet találni. Az SQLite a  http://groups.yahoo.com/subscribe/sqlite függvényekhez hasonlóan az összesítõket is az API segítsé- gével valósítja meg.

www.linuxvilag.hu 2003. augusztus 29 Szaktekintély

Memóriakezelés haladóknak

A GNU C könyvtár néhány hasznos függvényének segítségével nemcsak takarékoskodhatunk az értékes memóriával, de csúnya hibákat is elháríthatunk.

dinamikus memóriakezelés hagyományosan a C- és szerint – kisebb darabokra osztva felhasználni. A malloc() A C++-programozás legkellemetlenebb része volt. Nem pontosan ezt teszi: nagyszámú kisebb malloc() kérést keve- is meglepõ, hogy bizonyos könnyebb, vagy legalábbis sebb, de nagyobb brk() hívásba fog össze. Ezzel a módszerrel könnyebbnek tartott nyelvek, például a Java a szemétgyûjtõ számottevõ teljesítménynövekedést lehet elérni. A malloc() eljárások révén megszabadította a programozókat ettõl a teher- hívás maga is jóval olcsóbb, mint a brk(), ugyanis könyvtári tõl. A nehézsúlyú C-programozók számára azonban a GNU C (library call), és nem rendszerhívás. Hasonló folyamatok ját- könyvtár néhány olyan eszközt kínál, amelyek segítségével a szódnak le, amikor a folyamat memóriát szabadít fel. A memó-

© Kiskapu Kft. Minden jog fenntartva memóriahasználat kézben tartható, ellenõrizhetõ és követhetõ. riablokkokat a rendszer nem kapja vissza azonnal, hiszen ehhez minden alkalommal – negatív átadott értékkel – egy A memóriakezelés alapjai brk() hívást kellene végrehajtani. Ehelyett a C könyvtár Az adott folyamathoz tartozó memóriaterület általában lehet addig gyûjtöget, amíg elegendõen nagy memóriaterület nem statikus, ekkor méretének meghatározására a fordításkor kerül szabadítható fel egyetlen lépésben. sor, illetve dinamikus, ekkor a szükséges terület nagysága futás A nagyon nagy területre irányuló kérések kezeléséhez a közben dõl el. Az utóbbi esetben a memória két részre osztha- malloc() az mmap() rendszerhívással keres megcímezhetõ tó: a kupacra (heap), ami a malloc() függvénnyel foglalt memóriaterületet. Ezzel részben elháríthatók a memóriatöre- területeket öleli fel, illetve a veremre (stack), ami a függvények dezés nemkívánatos hatásai, amikor nagyobb memóriablokko- ideiglenes munkaterületét jelenti. Mint ábránk is szemlélteti, kat szabadítunk fel, ám a felhasználásukat akadályozhatják a a kupac felfelé, míg a verem lefelé növekszik. közéjük ékelõdõ és a lefoglalt terület végére kerülõ, újabban Ha egy folyamatnak memóriára van szüksége, akkor a brk() lefoglalt, kisebb méretû darabok. Ilyenkor a brk() hívással vagy az sbrk() rendszerhívással lehet kitolni a kupac felsõ ha- korábban lefoglalt blokkot hiába szabadítja fel a folyamat, tárát. Mivel a rendszerhívások a processzorterhelés szempontjá- a rendszer továbbra sem tudja használni. ból költségesnek tekinthetõk, egyetlen brk() hívással inkább A dinamikus memóriakezeléssel kapcsolatos függvények között egy nagyobb területet érdemes lefoglalni, majd azt – szükség a malloc() és a free() mellett számos továbbit is találunk, ám ezt a kettõt használjuk a legtöbbet. Érdemes megemlíteni a realloc() függvényt, amivel már lefoglalt blokkot tudunk átméretezni; a calloc() függvényt, ami „kitisztított” területet foglal; a memalign(), posix_memalign() és valloc() függvényt, amelyek egybefüggõ terület foglalására alkalmasak.

lefoglalt terület A memóriaállapot kezelése A C könyvtár memóriakezelõ kódrészlete alapvetõen általános adatszakasz (kupac) szabad, de zárolt jellegû memóriakezelésre való. Ez a megközelítés az esetek túl- terület nyomó részében megfelelõ teljesítményt eredményez, ám bizo- nyos programoknál érdemes módosítani a beállításokon. Elõször is a malloc_stats() vagy a mallinfo() könyvtári hívással gyûjtsünk adatokat a memóriahasználatról. Az elõbbi tömör a rendrakás területe összefoglalót küld a program memóriahasználatáról a szabványos hibakimenetre. Az összefoglaló tartalmazza a rendszertõl brk() töltelékterület hívások által lefoglalt bájtok számát, a malloc() hívásokkal brk ténylegesen használatba vett terület nagyságát, illetve az mmap() hívásokkal igényelt memóriaméretet. Példa a hívás kimenetére:

le nem Arena 0: foglalt terület system bytes = 205892 (rendszerbájtok száma) in use bytes = 101188 (használatban lévõ bájtok száma) veremszakasz verem Total (incl. mmap): (összes, az mmap hívásokkal együtt) system bytes = 205892 (rendszerbájtok száma) in use bytes = 101188 A kupac és a verem egymással ellentétes irányban növekedik (használatban lévõ bájtok száma)

30 Linuxvilág Szaktekintély

max mmap regions = 0 max mmap regions = 0 A legfontosabbak a „mallinfo()” által visszaadott adatok közül • arena Ha pontosabb adatokat akarunk látni, és nem csak egy egysze- : a kupacból lefoglalt terület teljes mérete (vagyis az rû kiíratást szeretnénk, a mallinfo() hívást használhatjuk. azt jelzõ mérõszám, hogy a határpont mennyivel mozdult el A függvény egy mallinfo nevû adatszerkezetet ad vissza, a folyamat indítása óta). • uordblks ami különféle, a memóriaállapottal kapcsolatos állapotjelzõket : a lefoglalt és használatban lévõ bájtok száma. • tartalmaz. Ezek közül a legfontosabbak leírását a „A legfonto- fordblks: a lefoglalt, de használatban nem lévõ bájtok száma. • sabbak a mallinfo által visszaadott adatok közül” címû szél- keepcost: a malloc_trim() hívása révén felszabadít- jegyzet tartalmazza. Az adatszerkezet teljes körû ismertetése ható terület nagysága. a /usr/include/malloc.h címû állományban található meg. • hblks: az mmap() segítségével lefoglalt darabok száma. A malloc_usable_size() a libc egy másik hasznos függ- • hblkhd: az mmap() segítségével lefoglalt bájtok száma. vénye, ami egy korábban lefoglalt memóriaterületbõl felhasz- nálható bájtok számát adja vissza. A minimális méretekre vo- natkozó megszorítások és a területek folytonosságára való adatszerkezet keepcost összetevõje tartalmazza. Önmûködõ törekvés miatt ez a mennyiség az eredetileg kértnél nagyobb rendrakást a memory_trim() meghívásával a free() függ- is lehet. Ha például lefoglalunk 30 bájtot, a ténylegesen felhasz- vény is végez, feltéve, hogy a keepcost értéke nagyobb az

nálható terület 36 bájt lesz. Vagyis legfeljebb 36 bájtot írhatunk M_TRIM_THRESHOLD értékénél, átadott töltelék értékként © Kiskapu Kft. Minden jog fenntartva be a memóriablokkba úgy, hogy más blokkokat ne írjunk felül. pedig az M_TOP_PAD-et veszi. Természetesen ennél visszataszítóbb programozási módszert nehéz lenne említeni, és erõsen változatfüggõ is, tehát semmi- Memóriával kapcsolatos hibakeresés: képpen ne használjuk. A malloc_usable_size() elsõsor- az éppség ellenõrzése ban mint hibakeresõ eszköz lehet hasznos. Alkalmas például A memóriakezeléssel kapcsolatos hibák keresése az egyik legin- arra, hogy ellenõrizzük egy kívülrõl kapott memóriablokk kább idõtrabló dolog az összetett alkalmazások fejlesztésekor. méretét, még mielõtt beleírnánk valamit. Ilyenkor egyrészt a blokkok lefoglalását és felszabadítását kell tisz- tába tenni, másrészt fel kell deríteni a memóriakezelési hibákat. A foglalási stratégia A memória sértetlensége akkor bomlik meg, ha olyan helyre A memóriakezelõ függvények viselkedését bizonyos beállítások írunk, ami ugyan az adatszakaszban található, de az eredetileg módosításával, a mallopt() függvény segítségével lehet használni kívánt memóriablokk határain kívülre esik. Jó példa módosítani (1. és 2. lista). erre az, amikor egy tömb végén túlra írunk adatot. Természete- A függvény prototípusa, illetve négy alapvetõ, általa módosít- sen, ha az adatszakaszon kívülre próbálnánk írni, akkor a prog- ható beállítás az SVID/XPG/ANSI szabványban is szerepel. ram szakaszolási (segmention) hibával azonnal leállna, illetve A jelenlegi GNU C könyvtári megvalósítás (a 2.3.1-es változat a megfelelõ jelzéskezelõ meghívására kerülne sor, és így azono- a cikk születésének idõpontjában) ezek közül csak egyet támo- sítani lehetne a hibát okozó utasítást. A sértetlenség megbomlása gat (M_MXFAST), a többi hármat nem. Másrészrõl a könyvtár ennél kellemetlenebb, mivel észrevétlenül is lezajlódhat, és ké- további négy, a szabvány által nem említett beállítással vigasz- sõbb a hibás résztõl akár messzeesõ programrészekben okozhat tal minket. A mallopt() segítségével módosítható beállítások leírása az „A 1. táblázat mallopt() segítségével módosítható A mallopt() beállítások és a környezeti változók megfeleltetése beállítások” címû széljegyzetben található. A foglalás hangolása a mallopt() hívások- mallopt()-beállítás környezeti változó alapérték megjegyzés nak a programba való építése és a program M_TRIM_THRESHOLD MALLOC_TRIM_THRESHOLD_ 128 KB -1U letiltja újrafordítása nélkül is megoldható. Ez különö- M_TOP_PAD MALLOC_TOP_PAD_ 0 sen akkor hasznos, ha bizonyos értékeket gyorsan ki akarunk próbálni, vagy ha nem M_MMAP_THRESHOLD MALLOC_MMAP_THRESHOLD_ 128 KB 0 letiltja rendelkezünk a forráskóddal. Mindössze M_MMAP_MAX MALLOC_MMAP_MAX_ 64 0 letiltja annyit kell tennünk, hogy a program futtatása elõtt beállítjuk a megfelelõ környezeti vál- tozót. Táblázatunk a mallopt() beállítások és a környezeti vál- rendellenes mûködést. Minél elõbb fedezzük fel tehát a hibát a tozók egymásnak való megfeleltetését tartalmazza, némi plusz- programban, annál nagyobb eséllyel tudjuk elhárítani a tájékoztatással kiegészítve. Ha például a „rendrakási” határérté- következményeit. ket 64 KB-ra akarjuk állítani, az alkalmazást így kell indítani: Az adatépség megbomlása más memóriablokkokat is érinthet, és nemcsak az alkalmazás adatainak, de a kupackezelõ adat- MALLOC_TRIM_THRESHOLD=65536 alkalmazás szerkezeteknek a sérülését is okozhatja. Az elõbbi esetben a hibára egyedül saját adatszerkezeteink tartalmának az elemzé- A rendrakásról szót ejtve: a malloc_trim (töltelék) hívással sével deríthetünk fényt. Az utóbbi esetben a GNU libc sértet- lehet elindítani a memória rendbetételét és a használaton kívüli lenséget ellenõrzõ eszközeire támaszkodhatunk, amelyek területek rendszernek való visszaadását. A függvény átmére- értesítenek minket, ha valamilyen hiba merül fel. tezi az adatszakaszt, legalább tölteléknyi részt hagyva a végén, Adott programon belül a memória ellenõrzése önmûködõen és sikertelenül tér vissza, ha nem tudott legalább egy lapnyi és kézzel egyaránt végezhetõ. Az elõbbi a MALLOC_CHECK_ területet felszabadítani. A szegmensméret mindig a lapméret környezeti változó értékének megadásával lehetséges: – ez i386 processzornál 4096 bájt – többszöröse. A rendrakásra elérhetõ memória méretét a mallinfo() által visszaadott MALLOC_CHECK_=1 alkalmazás

www.linuxvilag.hu 2003. augusztus 31 Szaktekintély

1. lista A rendrakás határértékének beállítása a mallopt() 2. lista Kisebb rendrakási határértéket megadva memóriát függvénnyel takaríthatunk meg

#include branzo@betelgeuse:~/malloc_debug$ #include ./1_kodreszlet 128

int main(int argc, char *argv) { 100 k lefoglalása, a rendrakás határértéke 131072 bájt int thr; Arena 0: char *p1; system bytes = 103724 in use bytes = 100012 if (argc != 2) { Total (incl. mmap): printf("Használat: 1_kódrészlet system bytes = 103724 \n"); in use bytes = 100012 exit(0); max mmap regions = 0 } max mmap bytes = 0 © Kiskapu Kft. Minden jog fenntartva thr = atoi(argv[1])*1024; 100 k felszabadítása if (!mallopt(M_TRIM_THRESHOLD, thr)) { Arena 0: printf("sikertelen mallopt()\n"); system bytes = 103724 } in use bytes = 4 Total (incl. mmap): printf("100 k lefoglalása, a rendrakás system bytes = 103724 határértéke " " %d bájt\n", thr); in use bytes = 4 p1 = malloc(100000); max mmap regions = 0 malloc_stats(); max mmap bytes = 0

printf("\n100 k felszabadítása\n"); branzo@betelgeuse:~/malloc_debug$ free(p1); ./1_kodreszlet 64 malloc_stats(); } 100 k lefoglalása, a rendrakás határértéke 65536 bájt Arena 0: Ezzel a módszerrel a határtúllépések jelentõs része felfedezhetõ, system bytes = 103724 és egyes esetekben a program összeomlása is megelõzhetõ. in use bytes = 100012 A hiba felismerésekor végrehajtott mûvelet a MALLOC_CHECK_ Total (incl. mmap): értékétõl függ: 1-es értéknél a rendszer hibaüzenetet küld a system bytes = 103724 stderr kimenetre, de magát a programot tovább engedi futni; in use bytes = 100012 2-es értéknél kimenet nélkül leállítja a programot; 3-as értéknél max mmap regions = 0 az 1-es és 2-es eset hatása összeadódik. max mmap bytes = 0 Az önmûködõ ellenõrzés csak akkor játszódik le, amikor me- móriakezeléssel kapcsolatos függvényeket hívunk meg. Ha te- 100 k felszabadítása hát egy tömbbe a határain túlnyúlva írunk, akkor csak a követ- Arena 0: kezõ malloc() vagy free() hívásnál fogunk hibaüzenetet system bytes = 1324 kapni. A hibák egy része sajnos észrevétlen marad, és a hiba- in use bytes = 4 üzenetek tartalma sokszor – finoman szólva – kevésbé hasznos. Total (incl. mmap): Egy free() hívásnál például tudjuk, hogy melyik mutatót system bytes = 1324 szabadítottuk fel a hiba felismerésekor, de azt nem, hogy pon- in use bytes = 4 tosan mi vagy ki zavarta össze a kupac tartalmát. Ha lefoglalás max mmap regions = 0 közben derül ki valamilyen hiba, a „heap corrupted” (kupac max mmap bytes = 0 sérült) üzenetet kapjuk. Egy másik lehetõség az, hogy ellenõrzési pontokat helyezünk el a programban. Ilyenkor még a program futásának megkez- désekor meg kell hívnunk az mcheck() függvényt. Segítsé- Az mprobe() visszatérési értékei gével olyan egyedi hibakezelõt vehetünk használatba, amelyet • MCHECK_DISABLED minden egyes kupachiba felismerésekor meg tudunk hívni. : sértetlenség ellenõrzése kikapcsolva mtrace() Egy alapértelmezett hibakezelõ is rendelkezésünkre áll arra az (az meghívására nem került sor). • esetre, ha nem írtunk sajátot. Ha az mcheck() meghívásán MCHECK_OK: a blokk rendben van. • túlestünk, a MALLOC_CHECK_ révén elérhetõ, sértetlenséget MCHECK_FREE: a blokkot kétszer szabadítottuk fel. • ellenõrzõ lehetõségek máris rendelkezésünkre állnak. Emellett MCHECK_HEAD: a blokk elõtti memóriaterület hibás. az mprobe() függvényt bármikor meghívhatjuk, ha a meg- • MCHECK_TAIL: a blokk utáni memóriaterület hibás. adott memóriamutatót szeretnénk ellenõrizni. Az mprobe()

32 Linuxvilág Szaktekintély

A „mallopt()” segítségével módosítható beállítások

• M_TRIM_THRESHOLD: az a legkisebb memóriamennyiség, hívással történik. Mint már utaltam rá, az utóbbi eljárás elõnye amelynek felszabadítása az adatszakasznak brk() hívással az, hogy az így lefoglalt memóriaterület – a rendrakási határér- történõ leszûkítését váltja ki a memóriakezelõ rendszerbõl. A fel- ték elérése nélkül is – felszabadítás után azonnal elérhetõ lesz szabadított adatterület – mint már esett róla szó – a rendszerhí- a rendszer számára, ellentétben a brk() hívással lefoglalt vások számának csökkentése érdekében valójában nem kerül részekkel. Ha kisebb értéket adunk neki, akkor több mmap() vissza azonnal a rendszerhez. Ez az érték adja meg, hogy mennyi és kevesebb brk() hívás történik, és kevesebb lesz a zárolt memória felszabadítása után kerül sor egy ilyen hívásra. A rend- memóriatöredék. Hátránya, hogy az mmap() általában lassab- rakási határérték nagyban befolyásolhatja a rendszer teljesítmé- ban intézi a memóriafoglalást, mint a brk() – az esetek nagy nyét. Ha túl magasra állítjuk, akkor több memóriát tartunk visz- részében tehát a legjobb az, ha az alapértelmezett értéket sza, és a rendszer nagyobb valószínûséggel veszi használatba a hagyjuk meg. nagyságrenddel lassabb cseretárhelyet. Ellenben ha túlságosan • M_MMAP_MAX: az mmap() által egyszerre lefoglalható memó- kis értéket adunk neki, akkor a gyakori brk() hívások fogják riadarabok maximális száma. Olyan rendszereknél van jelentõ- a teljesítmény romlását okozni. A beállítás fõként hosszú ideig sége, amelyeknél korlátozva van a folyó mmap() eljárások szá- futtatott programoknál fontos, ezek ugyanis nagy mennyiségû ma. Általában az a legjobb, ha nem nyúlunk hozzá. memóriát szívhatnak el a rendszertõl. Azt is fontos megjegyezni, • M_MXFAST: a fastbin memóriakonténerek használatával teljesí- © Kiskapu Kft. Minden jog fenntartva hogy a töredezettség miatt „zárolt” darabok nem adhatók vissza tett kérések által lefoglalható blokkok maximális mérete. Hely- a rendszernek, mégha méretük nagyobb is a határértéknél – ép- szûke miatt nem foglalkozhatunk részletesen a fastbin konténe- pen ezért van szükség az mmap() függvénnyel végzett fogla- rekkel, annyit viszont érdemes tudni róluk, hogy elsõsorban sok lásra. Az 1. kódrészletben található program a határértéket a kicsi, azonos méretû blokk lefoglalásakor vagy felszabadításakor neki átadott érték szerintire állítja, majd 100 KB memóriát foglal használhatók hatékonyan. Megjegyzem, mivel a fastbin konté- le és szabadít fel. Az eredmény a 2. kódrészletben látható. nerek soha nem kerülnek összevonásra (vagyis két szomszédos • M_TOP_PAD: mennyi tartalékhelyet kell foglalni (meghagyni), szabad fastbin soha nem egyesül egyetlen nagyobb, szabad amikor egy brk() hívással a kupac bõvítésére (szûkítésére) blokkba), használatuk növeli a memória töredezettségét, illetve kerül sor. Amikor egy malloc() hívás hatására a brk() veszi a program összesített memóriaszükségletét. Ebbõl következik, át a vezérlést, ennyi pluszterületet igényel a rendszertõl. Hason- hogy az érték egyfajta megalkuvás eredménye a sebességnö- lóan, amikor egy free() hívás hatására negatív brk() hívás vekedés (kisebb fastbinek) iránti igény és a velük járó töredezés történik, ennyi pluszhelyet hagy meg a könyvtár jövõbeli haszná- elkerülése (nagyobb fastbinek) iránti szándék között. A kisebb latra. Fontos, hogy az értékét csak megfontoltan változtassuk értékek az esetek jelentõs részében megfelelõk, ugyanis a GNU meg, ha a programunk nagy mennyiségû egymást követõ C könyvtárat úgy optimalizálták, hogy a nagyobb fastbinek jelen- malloc() és free() hívást hajt végre, nagy számú brk() tõs töredezést okoznak, miközben használatuk nem jár érzékel- hívást váltva ki ezzel. hetõ sebességnövekedéssel. A fastbin-támogatás a malloc • M_TRIM_THRESHOLD: az ennél nagyobb méretû memóriate- eljárások teljes újraírásakor, a 2.3-as változattal jelent meg rületre vonatkozó igények kielégítése brk() helyett mmap() a GNU C könyvtárban.

által visszaadott értékek ismertetése a „Az mprobe() vissza- a már felszabadított blokkok használata vagy újbóli felszabadí- térési értékei” címû széljegyzetben található. tása. A GNU C könyvtár ilyen célokra nyomkövetési lehetõsé- Ha a teljes kupacot, és nem csupán egyetlen blokkot kívánunk get kínál, amit az mtrace() függvény meghívásával vehetünk ellenõrizni, az mcheck_check_all() meghívásával az összes igénybe. A hívás végrehajtása után a rendszer minden kupac- aktív blokkon végigmehetünk. Arra is utasíthatjuk a memória- mûveletet egy fájlba naplóz. A fájl nevét a MALLOC_TRACE kezelõ rutinokat, hogy csak a pillanatnyi blokk ellenõrzése he- környezeti változóban kell megadni. A naplófájl elemzését egy lyett az mcheck_check_all() függvényt használják, ehhez Perl-parancsfájllal késõbb is el lehet végezni, ami szintén a induláskor az mcheck() helyett az mcheck_pedantic() könyvtár része, és – nem meglepõ módon – szintén az mtrace függvényt kell meghívni. Azt azonban ne feledjük, hogy ezzel nevet viseli. A naplózás a muntrace() függvény hívásával elég sok erõforrást kötünk le. állítható le, de ne feledjük, ha a programnak csak bizonyos A memória-ellenõrzés engedélyezésének harmadik módja részeire végezzük el a naplózást, akkor az utólagos feldolgozás- az alkalmazás libmcheckkel való fordítása: kor kapott eredmények teljesen értelmetlenek is lehetnek. Nem létezõ szivárgást fedezhetünk fel például úgy, hogy lefoglalunk gcc alkalmazás.c -o alkalmazás -lmcheck egy memóriablokkot, majd a muntrace() meghívása után szabadítjuk fel. Az mcheck() függvény így még az elsõ memóriafoglalás vég- Az alábbiakban a nyomkövetésre látható egy példa a 3. listában rehajtása elõtt önmûködõen meghívásra kerül – ez különösen szereplõ programmal: akkor érdekes, ha a program már a main() függvény elérése elõtt is foglal dinamikus memóriablokkokat. $ gcc -g 3_kodreszlet.c -o 3_lista $ MALLOC_TRACE="nyomkovetes.log" ./3_lista Memóriával kapcsolatos hibakeresés: $ mtrace nyomkovetes.log a blokkok nyomon követése A memóriablokkok történetét végigkövetve könnyebben felis- Memory not freed: (Fel nem szabadított memória) merhetõk a memóriaszivárgásokkal kapcsolatos gondok, illetve ------

www.linuxvilag.hu 2003. augusztus 33 Szaktekintély

Address (Cím) Size (Méret) Caller (Hívó) kezelési hibák felderítésére (lásd a listákon), de mélyebbre 0x08049718 0xa at is beáshatjuk magunkat a könyvtár rejtelmeibe. Ehhez csupán malloc_debug/3_lista.c:9 három függvényt kell megírnunk, majd rá kell aggatni õket a következõ elõre megadott változókra: A memória nyomkövetése nem befolyásolja a hibák kialaku- • __malloc_hook – arra a függvényre mutat, ami akkor lását, így attól még, hogy az mtrace() meghívása megtör- jut szerephez, ha a felhasználó a malloc() függvényt tént, a program akár össze is omolhat. Ennél csak az a rosz- hívja meg. Ebben tetszõleges ellenõrzéseket és számlázást szabb, ha a program szakaszolási hibát követ el, hiszen ekkor (accounting) végezhetünk, majd a valódi malloc() a nyomkövetés naplófájlja befejezetlen marad, és akár ellent- meghívásával lefoglalhatjuk a kért memóriaterületet. mondásos adatokat is tartalmazhat. Ez ellen úgy védekez- • __free_hook – a normál free() helyett meghívandó hetünk, hogy egy SIGSEGV jelzéskezelõt készítünk, ami a függvényt adja meg. muntrace() függvényt hívja meg, és ezáltal még a program • __malloc_initialize_hook – a memóriakezelõ rend- leállása elõtt gondoskodik a naplófájl lezárásáról (4. lista). szer üzembe helyezésekor meghívott függvényre mutat. A memória nyomkövetésérõl a libc infooldalán található Így mód nyílik arra, hogy bizonyos mûveleteket hajtsunk további tájékoztatást. végre, például még a többi memóriakezelõ mûvelet elin- dulása elõtt megadhatjuk az elõbbi két változó értékét. Mélyebbre merülve

© Kiskapu Kft. Minden jog fenntartva Megeshet, hogy a GNU C könyvtár normál hibakeresési lehe- Hasonló módosítási lehetõségünk van a többi memóriakezelõ tõségei egy program esetében elégtelennek bizonyulnak. függvény esetében is, mint a realloc(), calloc() stb. Ebben az esetben külsõ eszközt is használhatunk a memória- Ügyeljünk arra, hogy mentsük a változók korábbi értékeit, majd a malloc() vagy free() fenti eljárásainkban történõ meghívása elõtt visszaállítsuk. Ha ezt elmulasztjuk, a program 3. lista Nyomkövetés az mtrace() segítségével végtelen önhívó ciklusba esik, és használhatatlan lesz. Érde- mes egy pillantást vetni a libc infooldalán található memória- #include hibakeresési példában található kódra, az összes fontos részlet #include kiderül belõle. #include Utolsó megjegyzésként annyit még megemlítenék, hogy a fenti változókat az mcheck- és az mtrace-eszközök is használják. Ha int main() { tehát mindet egyszerre akarjuk igénybe venni, nagyon nagy char *ptr; körültekintésre lesz szükségünk.

mtrace(); Összegzés ptr = malloc(10); A GNU C könyvtár számos bõvítménnyel rendelkezik, ame- /* free(ptr); */ lyek roppant hasznosnak bizonyulnak a memóriakezeléssel kapcsolatos kérdések megoldásában. Ha finomhangolni szeret- } nénk egy alkalmazás memóriahasználatát, vagy a saját igé- nyeinkre szabott memória hibakeresõ megoldást akarunk készíteni, akkor minden bizonnyal jól tudjuk használni ezeket az eszközöket, és megfelelõ kiindulópontként szolgálnak saját 4. lista A SIGSEGV kezelõben eljárásaink kidolgozásához. meg kell hívni a muntrace() függvényt Linux Journal 2003 május, 109. szám #include #include #include Gianluca Insolvibile ([email protected]) #include A 0.99pl4-es rendszermag óta Linux-rajongó. Jelenleg hálózati és digitális void handler(int s) { videokutatással és -fejlesztéssel foglalkozik. muntrace(); abort(); }  int main() { KAPCSOLÓDÓ CÍMEK char *ptr; „Debugging Memory on Linux”, írta Petr Sorfa, signal(SIGSEGV, handler); Linux Journal, 2001. július; elérhetõ a mtrace();  http://www.linuxjournal.com/article/4681 címen. ptr = malloc(10); Electric Fence  ftp.perens.com/pub/ElectricFence free(ptr); A GNU C könyvtár kézikönyve  http://www.gnu.org free(ptr); mpatrol  http://www.cbmamiga.demon.co.uk/mpatrol NJAMDB  http://sourceforge.net/projects/njamd }

34 Linuxvilág Szaktekintély

Memóriaszivárgás érzékelése C++-környezetben Ne halogassuk a memóriaszivárgási gondok megoldását! Egy, esetleg több kényelmes eszközt is programfejlesztési folyamatunk részévé tehetünk.

gyik korábbi cikkünk (Memóriaszivárgás érzékelése A dmalloc használata beágyazott Linux-rendszerekben, Linuxvilág, 2002. Amint arról a 2002. szeptemberi számban már részletesen szeptember) a memóriaszivárgás érzékelésének kérdé- beszámoltam, a dmalloc szerzõjének állítása szerint a prog- Eseit tárgyalta C programozási nyelvet használó környezetben. ram C++-ismerete korlátozott, így a C++ alapú memória- Jelenlegi írásunk viszont a C++-programokban jelentkezõ szivárgások felismerése úgyszintén az. memóriaszivárgás érzékelésével kapcsolatos kérdésekre keres Annak érdekében, hogy a dmalloc-ot a C++-szal és program- választ, nem pedig a rendszermagbeli szivárgásokra. Vala- szálakkal együtt lehessen használni, az alkalmazást static-

mennyi itt bemutatott eszközt a MontaVista Linux Profes- ként kellett szerkeszteni. © Kiskapu Kft. Minden jog fenntartva sional Edition 2.1 és 3.0-s termékekkel használtuk, egyikük pedig, a dmalloc nevû, a MontaVista A ccmalloc program Linuxszal kerül kereskedelmi forgalomba. A ccmalloc egy egyszerû használati modellel ellá- A beágyazott rendszerekhez készült tott memóriaprofilozó (memory-profiler) eszköz, alkalmazói programok terve- ami támogatja a dinamikusan szerkesztett prog- zõinek és programozóknak ramkönyvtárak használatát, a dlopen kivé- különös gondot kell telével. Képes memóriaszivárgások érzé- fordítaniuk e progra- kelésére, ugyanazon adatállományokra mok erõforrás-felhasz- vonatkozó többszörös felszabadítási nálására. A munkaállo- mûveletekre, hitelesítésre (under- másoktól eltérõen a beá- write), felülírásra (overwrite) és gyazott rendszerek csupán írásra (write) a már felszabadított véges tárterülettel rendel- területen. Megjelenít állomány- keznek. Az ilyen rendsze- lefoglalási és -felszabadítási rekben nem található lapozási statisztikákat. terület a mûködésüket szü- Egyaránt alkalmazható töké- neteltetõ programok számára. letesített (optimized) és Amint a rendszer felhasználja az lecsupaszított (stripped) összes erõforrását, a pánikon meg a programkódra, és támo- rendszer újraindításán kívül nem nagyon gatja a C++ program- marad más választásunk, esetleg még le nyelvet. A teljes hívási lehet állítani egy-két programot. Ezért fontos, láncra vonatkozó állomány hogy elkerüljük a memóriaszivárgással mûködõ és programsor-számozási programokat. Számos olyan eszköz létezik, amelyik adatot szolgáltat, és nem egyes-egyedül a segít a szivárgások megtalálásában. Valamennyi itt malloc/free utasítás közvetlen hívójára bemutatott eszközhöz létezik saját tesztprogram. vonatkozóan, a C++ nyelv itt is támogatott. Az egyik módszer sikeres alkalmazásfejlesztõi használatát A ccmalloc használatához nincs szükség a magam is láttam, ez a prototípuskód fejlesztéséhez és program újrafordítására: mindössze a szerkesztésnél (link) kipróbálásához készült, és amennyire csak lehetséges, egy a -lccmalloc -ldl vagy a ccmalloc.o -ldl parancsokat munkaállomás használatát is magában foglalja. A munka- kell használni. A ccmalloc képes a hívási láncolatokat haté- állomáson való kipróbálással az alkalmazói programok fej- konyan ábrázolni, a hívási láncok testre szabható nyomtatását, lesztõi megkönnyíthetik a célprocesszorra való áttérést. hívási láncok kiválasztás szerinti nyomtatását, tömörített A munkaállomások használata melletti döntõ érv, hogy naplóállományt és a .ccmalloc névvel ellátott indítóállományt. olcsók és minden érintett résztvevõ birtokában van ilyen. A leírás fõ része a ccmalloc.cfg nevû állományban található, Ezzel szemben a célgépek száma kevés, az irántuk való a fejlesztõeszközhöz tartozó próbaállományok további leírást kereslet pedig nagy. tartalmaznak. A rendszerváltozók eléréséhez az nm és gdb A legtöbb memóriaszivárgás-érzékelõ program teljes forrás- szükséges, míg a gzip a naplóállományok tömörítéséhez. kód formájában érhetõ el. Ezeket jellemzõen x86-alapú felü- leteken készítették. Nem x86-os felületeken történõ haszná- NJAMD latuk új felületre való átültetést igényel (porting). Ez az Az NJAMD, miként a program alkotója állítja, „nem csupán átültetési mûvelet az egyszerû újrafordítástól, szerkesztéstõl egy újabb malloc-hibakeresõ”. Mint az a legtöbb tárterület-fog- és futtatástól az egyik felületrõl a másiknak megfelelõ gépi lalást ellenõrzõ hibakeresõ programnál megfigyelhetõ, a szab- kód átalakításáig terjedhet. Némelyik eszközzel használati ványos területfoglalási ellenõrzõ mûveleteket újakkal helyet- tanácsokat illetve javaslatokat kapunk a más felületekre tesítik, amik különféle ellenõrzéseket végeznek a tár használat- történõ programfordításhoz. bavétele során. Nevezetesen a program ellenõrzi a dinamikus

www.linuxvilag.hu 2003. augusztus 35 Szaktekintély

ségû látszólagos memóriát vagyis lapozási területet igényel a mûködéséhez, viszont beágyazott rendszeren ez mûködik. Ezt az eszközt munkaállomáson prototípus-hibakeresésre is használhatjuk. Ha ezzel a hibakereséssel végeztünk, az alkal- mazás célprocesszorra történõ ültetése során biztosak lehetünk abban, hogy a legtöbb vagy éppen az összes memóriaszi- várgást megtaláltuk. A YAMD a futtatáshoz egy héjprogramot, a run-yamd-t kínálja, ami a program végrehajtásának megkönnyítésére szol- gál. A program bizonyos kiinduló állapotokból való helyreál- lításhoz több lehetõséget nyújt. Naplóállományt lehet készíteni, amikor az ellenõrzött program magtárterület-kiíratást (core dump) hajt végre. A hibakeresõ eszközt a YAMD által vezérelt programokban a hibák felderítésére lehet használni. Mindazon- által hibák a hibakeresõ eszköz használata során akkor is jelent- kezhetnek, ha a YAMD-t elõre betöltjük, ahelyett, hogy stati- kusan össze lenne építve a programmal. © Kiskapu Kft. Minden jog fenntartva átmeneti tár alul-, illetve túlcsordulásait és érzékeli a tárterület Valgrind felszabadítás utáni újbóli használatát. Az NJAMD-hez készített A Valgrind viszonylag új, nyílt forrású tárterület-hibakeresõ az programkönyvtár LD_PRELOAD-olható vagy a programhoz x86-os felületen használható GNU/Linux-rendszerekhez. Több szerkeszthetõ. Az elsõ tárterület-foglaláskor nagy – 20 MB-os – képességgel van megáldva, mint a korábbi eszközök, viszont tárhoz kapcsolódó átmeneti tárat hoz létre, és ebbõl szab ki kizárólag x86-os gépeken fut. Ha egy program végrehajtása a annyi memóriát, amennyit a program igényel. Valgrind alatt zajlik, akkor az összes tárból való olvasási vagy Az NJAMD használható önmagában, ügyféloldali programmal odaírási mûvelet az összes malloc, free, new és delete együtt, vagy a gdb-bõl. Egy segédprogramja is van, ami a eljárás ellenõrzésével zajlik. A Valgrind képes érzékelni a hasz- rendszerleállás utáni veremellenõrzést teszi lehetõvé (postmor- nálatlan tárterületet, a memóriaszivárgásokat, az elõkészítetlen tem heap analysis). Egy további szolgáltatás lehetõvé teszi az memóriára vagy rosszul címezhetõ tárterületre való hivatko- alkalmazás hibakeresését, átugorva az újrafordítást: egyszerûen zást, a Posix-szálak hibás használatának néhány fajtáját, és a csak elõre be kell tölteni a programkönyvtárat (preload). malloc-free és a new-delete mûveletpárok típushibáit. Az NJAMD képes nyomon követni a szivárgásokat a malloc A Valgrind a hibaszûrésre a gdb-vel együtt is használható, ami és free függvényeket burkoló könyvtári függvényekben, lehetõvé teszi a programozó számára, hogy a hiba jelentkezé- grafikus felhasználói felület (GUI) alapú helyfoglaló elemeknél, sének helyén a gdb-t használja. Ilyen módon a programozó valamint a C++ new és delete függvényeknél. közvetlenül a hibaforrást nézheti meg, és hamarabb találhat rá Gyakran elõfordul, hogy a memóriaszivárgás nem fedezhetõ megoldást is. Némelyik esetben javítófolt is készíthetõ, a hiba- fel azonnal, hanem lappang, hogy aztán késõbb, a legvárat- keresés pedig folytatódhat. A Valgrindet úgy tervezték, hogy lanabb pillanatban sújtson le. Ennek kiderítése sok idõt vehet kicsi és nagy alkalmazásokon egyaránt képes legyen dolgozni, igénybe. Az NJAMD számos rendszerváltozóval bír, amelyek például a KDE 3-on, a Mozillán és az OpenOffice-on. különbözõ érzékelési szintek beállítását teszik lehetõvé. A Valgrind egyik szolgáltatása az, hogy képes részletes ada- Mint a legtöbb hibakeresõ eszköznél már megszokhattuk, a tokat szolgáltatni az átmeneti tár használatának jellegérõl teljesítmény fontos kérdéssé válhat az NJAMD használatakor, (profiling). A program képes a processzor (CPU) L1-D, L1-I és ezért az eszközt leginkább csak a fejlesztési szakaszban szabad egyesített L2 átmeneti tárának részletekbe menõ utánzására, használni. A bekapcsolt állapotú eszköz mellett végzett tele- és a felhasználási eredményeket a vizsgált program minden pítés a rendszer lelassulását eredményezheti. egyes sorára vonatkozóan ki tudja számítani. A Valgrindnak jó a HOGYAN-ja, amelyben rengeteg példa található. A Valgrind YAMD honlapján temérdek leírás szerepel, bejárása mégis egyszerû. A YAMD, vagyis a Yet Another Memory Debugger szavakból Számos különféle lehetõséget magában foglaló összeállítás képzett névvel ellátott program egy olyan újabb csomag, ami a érhetõ el, és a felhasználókra van bízva, hogy a számukra lefoglalt tárterületek széleit vizsgálja. Ezt a processzor lapozási legkedvezõbbet kiválasszák. módszerének használatával végzi. A program képes érzékelni A Valgrind hibamegjelenítõ képernyõjén szerepel a vizsgált a határokon kívüli olvasási és írási mûveleteket. A hibát a prog- program azonosítója (PID), amit a hiba leírása követ. A címek- ram már az azt elõidézõ utasításnál észleli, nem pedig késõbb, kel együtt megjelennek a forrásállományok nevei és a prog- amikor további hozzáférések jelentkeznek. A híváselfogásokat ramsorok számai. A teljes visszakeresés végig megjelenítõdik. a program naplóban rögzíti, az állomány nevével, a program- A Valgrind mûködésének megkezdésekor beolvas egy indítóál- sor számával és nyomkövetési adatokkal együtt. A nyomkö- lományt, ami olyan utasításokat tartalmazhat, amelyek meg- vetés azért fontos, mert a tárterület lefoglalása véges számú mondják, hogy milyen hibaellenõrzõ üzenetek ne jelenjenek eljáráson keresztül történik meg. meg. E lehetõség használatával mód nyílik rá, hogy figyelmün- A könyvtár a malloc és free hívásokat utánozza. E mûvelet ket egy meghatározott programra összpontosítsuk, és ne a végrehajtása sok közvetett malloc hívás elfogását jelenti, programkönyvtárakra, amiket különben sem lehet módosítani. amilyeneket például a strdup kezdeményezett. Ezenkívül A Valgrind úgy végzi az ellenõrzést, hogy az alkalmazást szi- a new és delete mûveleteket is elfogja, kivéve, ha azok túl mulált processzorkörnyezetben futtatja. Ez a dinamikus szer- vannak terhelve. kesztõt, illetve betöltõt (linker/loader) arra kényszeríti, hogy A YAMD, más rokon programokhoz hasonlóan, nagy mennyi- elsõként a szimulációs programot töltse be, s csak azután tölti

36 Linuxvilág Szaktekintély

be a hozzátartozó könyvtárakat a szimulátorprogramba. letölthetõk, és meghatározott ideig nem linuxos munkaállomá- A program futásának idején mindenféle adat gyûjtése zajlik. sokon használhatók. Amint a program végrehajtását megszakítjuk, a naplózott ada- A program könnyen telepíthetõ Linuxra, de csomóponthoz tok megjeleníthetõk, vagy akár kiírhatók a naplóállományba. kötött azon a gépen, amelyre telepítették. Az Insure++ prog- rammal együtt átfogó leírást és számos bõvítési lehetõséget mpatrol kaphatunk. A kódlefedettséget vizsgáló eszköz különálló Az mpatrol programkönyvtár a tárterület lefoglalásának ellen- program, de már az alapcsomagban is szerepel. õrzésére a vizsgálni kívánt programmal összeszerkeszthetõ. Az Insure++ sok adattal szolgál a feltárt hibákról. Az Insure++ A program olyan módon lett megírva, hogy több különbözõ programot a használatbavételhez a felhasználói felülettel együtt operációs rendszer felületén is futtatható. Határozottan nagy kell újrafordítani. Ez a felhasználói program képezi az Insure++ elõnye, hogy több különbözõ processzorra át lett ültetve könyvtári eljárásainak használatához szükséges programkódot. (porting), vagyis MIPS-re, PowerPC-re, x86-ra és néhány A fordítási szakaszban az érvénytelen típusátalakítások és a MontaVista fogyasztó által a StrongARM célgépekre. hibás értékátadások egyaránt felszínre kerülnek. A nyilvánvaló Az mpatrol nagymértékben testreszabható: beállítható, hogy tárhasználati rendellenességeket ugyancsak jelenti a program. a verem használata helyett rögzített méretû statikus tömbbõl Futási idõben a hibák a stderr-re kerülnek, de grafikus esz- foglaljon le területeket. Statikus, osztott és szálbiztos könyv- közzel is megjeleníthetõk. Alkalmazás készítésekor a parancssor tárként lehet összeépíteni. Ugyanakkor a program megjelenhet vagy a makefiles használható, ami nagy méretû alkalmazások

egyetlen nagyméretû tárgykódú állomány formájában is, amit létrehozását és komoly feladatok megoldását teszi lehetõvé. © Kiskapu Kft. Minden jog fenntartva az alkalmazással össze lehet építeni, nem pedig könyvtárban A program végrehajtása egyszerû: az Insure++ semmilyen kell elhelyezni. Ez a mûködési sajátosság a felhasználónak különleges végrehajtandó parancsot nem igényel, úgy mûködik, nagyfokú rugalmasságot biztosít. mintha egy közönséges program lenne. Valamennyi hibakeresõ- A program által létrehozott kód negyvennégy különbözõ és elfogó programkód az Insure++ programkönyvtáraiban tárterület-foglalási és lánckezelési mûvelet pótlását tartalmazza. található, amelyek össze lettek szerkesztve a programmal. A kampók (hooks) adottak, így ezek az eljárások közvetlenül Az Inuse nevû bõvítmény valós idõben mutatja meg, hogyan a gdb-bõl hívhatók. Ez az adottság teszi lehetõvé az mpatrolt használja a program a tárat. Képes pontos képet rajzolni a me- használó programok számára a hibák keresését. móriafelhasználásról, hogy az mennyire válik töredezetté, és az A könyvtárbeállítások és a veremhasználat a program mûködése apró, ám idõvel egyre jelentõsebbé váló kódszivárgásról. Egy során idõszakosan megjeleníthetõ. A program futása idején ügyfélnél tapasztaltam, hogy egy bizonyos C++-osztálynál kis gyûjtött összes statisztikai adat a program leállításakor megje- területû memória szivárgott, ami egy munkaállomásról nézve lenik. A program elõre beállított értékekkel rendelkezik, amelyek egészen aprónak látszott. Egy várhatóan hónapokig, sõt évekig a környezeti változókkal felülbírálhatók. E változók futásidõben futó beágyazott rendszeren a szivárgás meglehetõsen felduzzad- történõ megváltoztatása szükségtelenné teszi a könyvtár újraépí- hat. Ezzel az eszközzel a szivárgásnak gyorsan nyomára buk- tését. A különféle tesztek hangolása dinamikusan végezhetõ el. kanhatunk, megtalálhatjuk és kijavíthatjuk. Más hozzáférhetõ Valamennyi naplózási tevékenység eredménye a pillanatnyi eszközök még nem voltak képesek ezt a szivárgást észrevenni. könyvtárban elhelyezkedõ állományokba gyûjthetõ, de átirá- A kódlefedettséget egy további eszköz, a TCA vizsgálja. Amikor nyítható a stdout-ra, a stderr-re vagy egyéb állományokba. a program az Insure++ mûködése közben fut, adatokat gyûjt, A program futása közben gyûjteni lehet a veremhívási vissza- és amint a TCA elemzi azokat, pontosan megmutatja, hogy keresési adatot, és ezt állományba is lehet rögzíteni. Amennyi- milyen programkód lett végrehajtva. A TCA grafikus felhasz- ben a programot és járulékos könyvtárait a változók és prog- nálói felülete finomítja a kódlefedettségrõl alkotott képet. ramsorszámozás bekapcsolásával építették össze, ezeket az adatokat a naplóállományban ugyancsak meg lehet jeleníteni. Linux Journal 2003. június, 110. szám Ha a programozó egy bizonyos ponton úgy dönt, hogy a ter- helési tesztet egy kisebb tártartományon (smaller memory foot- Cal Erickson ([email protected]) print) szeretné kipróbálni, az mpatrolt a tárterület korlátozására Vezetõ Linux-tanácsadóként dolgozik a MontaVista lehet utasítani. Ez a lehetõség olyan próbafeltételek megterem- Software cégnél. Ezt megelõzõen a Mentor tését jelenti, amiket géptermi körülmények között készen talán Graphics Embedded Software Division vezetõ sehol sem lehet megtalálni. A felhasználói környezetben végzett terhelési próba vagy egy gép próbaüzemeltetése ezzel a szolgál- tanácsadó mérnöke volt. Cal több mint harminc éve dolgozik a számítógép-ipar területén. tatással könnyebbé válik. A fentebb említetteken kívül a hibaja-  vítási eljárások ellenõrzése érdekében a próbaprogrammal tárterületfoglalási hibákat is elõ lehet idézni. A programnak eme KAPCSOLÓDÓ CÍMEK képessége hasznosnak bizonyulhat a C++ nyelvû kivételkeze- lésben. A veremrõl pillanatfelvételek készíthetõk, hogy képet  kaphassunk a tárhasználat alsó és felsõ értékeirõl. dmalloc http://dmalloc.com ccmalloc  http://www.inf.ethz.ch/personal/biere/ Insure++ projects/ccmalloc A Parasoft cég által készített Insure++ termék nem tartozik Insure++  a GPL-esített programok közé és nem is ingyenes, viszont jól http://www.parasoft.com/products/insure/index.htm  használható eszköz a memóriaszivárgás és a kódlefedettség mpatrol http://www.cbmamiga.demon.co.uk/mpatrol  érzékelésére – nagyon hasonlít az mpatrolra. NJAMD http://sourceforge.net/projects/njamd  Az Insure++ azonban az mpatrolnál ténylegesen több munkát Valgrind http://developer.kde.org/~sewardj  végez a kódlefedettség területén, valamint adatgyûjtõ és meg- YAMD http://www3.hmc.edu/~neldredge/yamd jelenítõ eszközökkel is szolgál. A program próbapéldányai

www.linuxvilag.hu 2003. augusztus 37 Szaktekintély

Az eVote elektronikus szavazatszámláló program A levelezõlisták remekül használhatók a gondolatok cseréjére, sõt mostantól akár szavazatszámlálásra is igénybe vehetõk.

konferenciarendszerrel ötvözött különleges adatbázis- kiszolgáló képes a valódi nem rangsorelvû demok- Az eszményi demokrácia ráciák (nem hierarchikus demokrácia – errõl Az esz- ményiA demokrácia címû részben olvashatsz részletesebben) A demokrácia mind a vitát, mind a szavazást magában foglalja. számára a közvetítõ közeget megteremteni. A szavazórendszer Az elektronikus demokrácia általános modellje egy olyan webhely, felügyeletét jelentõ munka a felhasználókra és a programra há- ami választási lehetõségeket kínál, és megengedi a szavazást. rul, nem pedig a rendszergazdára. Amikor a megoldást kínáló Az effajta elektronikus demokrácia elleni legsúlyosabb kifogás,

© Kiskapu Kft. Minden jog fenntartva program hozzám került, nem tudtam az elektronikus demokrá- hogy ez politikaelméleti szemszögbõl nem is demokrácia. A kizá- ciát továbbra is csupán hirdetni – nekifogtam a megépítésének. rólag szavazásra korlátozódó demokráciát már 1982-ben bírálta A Clerk nevet viselõ különleges szavazókiszolgáló program C++ nyelven készült, és számos szolgáltatással áll a szavazók Jean Betheke Elshtain politológus: „interaktív kagylójáték, ami rendelkezésére. Bárki kiírhat szavazást, és a felhasználók abban a hitben ringat bennünket, hogy résztvevõk vagyunk, holott mindaddig megváltoztathatják véleményüket, amíg a szavazás valójában mindössze a külsõ ösztönzõ tényezõkbõl összetákolt le nem zárult. A szavazások lehetnek nyilvánosak (public), rendszer válaszadó végét testesítjük meg”. vagyis ekkor a szavazásban résztvevõk láthatják egymás szava- Elshtain azzal vádolja ezeket a rendszereket, hogy demokráciák zatait; lehetnek titkosak (private); vagy az if_voted (szava- helyett csupán népszavazások: „a népszavazási rendszerben a zott-e) típusba sorolhatók. Ez utóbbi esetben megtudható, hogy többség akarata elnyomja a kisebbség nézeteit vagy a kevésbé kik adták le szavazatukat, az viszont nem, hogyan szavaztak. népszerû nézeteket. A népszavazás képes jól együttmûködni a A program többféle szavazástípust is támogat: igen/nem hatalomelvû politikával, amelyet a többségi nézetek álarca mögött (yes/no), számszerû és csoportos. A program könnyen bõvít- visznek véghez, de legalábbis a kisebbségi nézetek feletti szemet hetõ új szolgáltatásokkal és választástípusokkal a már létezõ hunyással. Ez a vélemény könnyen rögzíthetõ a játszi könnyedség- osztályok kibõvítése révén. A Clerk az adatok karbantartását gel manipulált, szertartásos népszavazásokkal, így az érdemi kér- röptében végzi, semmiféle segítséget nem igényelve a rend- dések megvitatására nem is merül fel igény”. Egy másik politoló- szergazdától. Az objektumközpontú programszerkezet ígéreté- gus, Brian Fay így vélekedett a demokráciáról: „a polgárok részvé- hez híven minden egyes új szolgáltatás hozzáadása fokozta tele a csoportos önazonosság-meghatározási folyamatban a legfon- a program munkabírását (robust). tosabb”. Mindebbõl az szûrhetõ le, hogy a valódi demokráciában az elsõdleges tevékenység a véleménycsere, nem pedig a szava- A szavazócédulák zás. Egy tökéletes demokráciában lehetõség nyílna rá, hogy a kér- A szavazócédulák dinamikusak. Amint a felhasználó bezárja a dések terítékre kerüljenek, a véleménycsere megtörténjen, a vita szavazatleadási lehetõséget, egyúttal kiveszi a konferenciából; ha lehetõségei között a saját álláspontunkkal megegyezõket felkutas- pedig a program más módon szünetelteti a tevékenységét, akkor suk, a kérdéseket újból megtárgyaljuk, és ismételt önellenõrzést a választás összeomlik, a memória felsõ vége felé görgetve a folytassunk mindaddig, amíg közmegegyezés nem születik. többi elemet, és helyet készítve további közvélemény-kutatások Az egyetértés azonban a demokráciának rendszerint nem a gya- számára. Az elemobjektumok kiszámítják a helyüket a választási listában, és a program olyan módon van beállítva, hogy minden korlati oldala, hanem az elméleti formája. A többségi szabály meg- a rendszergazda bármiféle beavatkozása nélkül folytatódjék. osztja az adott csoportot, és fojtogatja a vitát. A közmegegyezés egyesíti a csoport tagjait, és megalapozott kölcsönös elõnyökön A Clerk és a szavazó közötti adatcsere alapuló döntésekhez vezet. A tökéletes demokráciában az új kérdé- A Clerk main( ) tagfüggvény tulajdonképpen egy végtelen sek felvetésében minden résztvevõ azonos joggal bír; egyenlõ ciklus, ami az eVote-ügyfelektõl a folyamatközi adatcsere-üzenet- esélye van arra, hogy minden vitában részt vegyen; azonos lehetõ- szolgáltatáson (interprocess communication messaging) keresztül sége van rá, hogy minden döntésnél szavazzon és hogy a viták beérkezõ üzenetekre figyel, vagyis a valódi felhasználókkal nyomán megváltoztassa szavazatát; továbbá minden szavazat kapcsolatot tartó felhasználói felület folyamataira. A Clerk a fel- egyenlõ súllyal érvényesül minden egyes döntésben. használóktól érkezõ kérések számára egy állandóüzenet-sorban- A tökéletes, közvetlen, közmegegyezésen alapuló demokrácia nem állási területet tart fenn (permanent message queue), az InQ mindig gyakorlatias, még a számítógépes hálózaton sem lehet osztály egyetlen példányát. Minden egyes eVote-folyamat saját közvetlenül elérni. Számítógépes hálózataink azonban olyan eszközt ideiglenesüzenet-sorbanállási területtel rendelkezik, hogy fogadja kínálnak, amellyel talán meg lehet valósítani. a Clerktõl érkezõ üzeneteket. Ezek az OutQ osztály példányai. Forrás: Jean Betheke Elshtain Interactive TV – Democracy and Osztott memória the QUBE Tube (Interaktív televízió – demokrácia és Bár a szavazási eredmények és a felhasználó által kért statisztikai adatok cseréje az OutQ objektumokon keresztül zajlik, a lassan a QUBE-csõ?) 1982. aug. 7–14., The Nation, 108. oldal mozgatható adatokhoz egy további folyamatközi adatcsere-szol-

38 Linuxvilág Szaktekintély

gáltatás, az osztott memória használatos. A választási elemek választást, elvetheti a választási eredményeket, megváltoztat- listája és azok tulajdonságai az osztott memóriában kerülnek hatja a szavazati elõjogot, és a résztvevõ szavazócéduláját tárolásra, úgy, hogy valamennyi egyazon konferenciára beje- új címre lehet költöztetni. A lista tulajdonosa az eVote hasz- lentkezett felhasználó láthassa õket. A választási lista elemeinek nálata nélkül megtarthatja kötelezettségeit és jogosultságait. tulajdonságai között a következõ jellemzõket találhatjuk meg: • public, private, if_voted igen/nem, illetve szám- Öt végrehajtható állomány szerû szavazás; Az elektronikus levelezés általános felépítése az 1. ábrán látható. • látható vagy láthatatlan, ahol a statisztikák a szavazás Az eVote tulajdonképpen öt együttmûködõ programot jelent: lezárása után válnak láthatóvá; eVote_Clerk, the Clerk, eVote_insert, the e-mail list user inter- • egyéni vagy csoportos; face (levelezõlista-felhasználói felület), eVote_mail és a mail • a szavazás elnevezése. administrator's utility interface (a mail rendszergazdai segéd- programjának felhasználói felülete), a Clerk vezérlõközpontja. A konferencia ItemList objektuma felelõs az osztott memória karbantartásáért. Amikor a konferenciához új közvélemény- kutatást írnak ki, és ha a választási elemek növekvõ száma az osztott memória foltozását igényli, akkor az errõl szóló üzenet eVote_clerk valamennyi tevékeny eVote-ügyfélhez el lesz küldve. Ez a Clerk rugalmas értesítési szolgáltatás lehetõvé teszi a felhasználók © Kiskapu Kft. Minden jog fenntartva számára, hogy az „összejövetelt” valós idõben rendezzék meg.

Adatállományok elindul A Clerk minden egyes konferencia vagy elektronikus levelezõ- adatcsere lista számára három adatállományt tart fenn, továbbá egy álta- lános adatállományt, ami az elektronikus levélcímeket és a hoz- elindul zájuk kapcsolódó számszerû azonosítókat tartalmazza. A Ballot- A Mailman eVote_insert Box (szavazó urna) a mintalista számára fenntartja a sample.dat Parancs- adatcsere postjának nevû szavazócédulákat tartalmazó mintafájlt, a szavazó begé- központ futtatása a e-mail lista- megfelelõ pelt számszerû azonosítóját. Ezenkívül a BallotBox fenntartja felület a sample.bnf állományt, amelyben a sample.dat nyalábja (hash) módon és néhány hasznos statisztika található. A sample.inf állomány- ban található a pillanatnyi elemek szavazólapokra leképezett módosított burkoló, rendszere, amit az ItemList objektum tart karban. Az eVote- a Mailman része: az ban a felhasználói felület a folyamodványon szereplõ aláíráso- eVote_insert-et és az eVote_petitiont futtatja kat és megjegyzéseket egy közönséges állományban tárolja, pontosabban egy folyamodványhoz egy állomány tartozik. eVote_petition eVote_mail Felhasználói felületek Aláírásokat fogad el Ez idõ szerint a Clerk két felhasználói felülettel bír, de több A Mail rendszergazdai egyedül a folyamod- létrehozására ösztökél. A Clerk elsõ felhasználói felülete egy segédprogram ványok részére, egyszerû szövegalapú Telnet-felület, amit a BBS- és a konferen- felülete amellett e-mail felület ciarendszerekre gondolva terveztek. Az Internet robbanásszerû elterjedése visszavetette a konferen- 1. ábra Az eVote levelezõfelülete ciarendszerek iránti érdeklõdést. Az elektronikus levelezés a kapcsolattartás meghatározó formájává vált, és a levelezõlisták a közösségi vita eszközeivé fejlõdtek. Így az elektronikus leve- Az eVote_Clerk folyamatosan fut a háttérben a számítógépen, lezés felhasználói felületei olyan módon készültek, hogy azok új választásokat hoz létre; megszünteti a régi elemeket; elfo- a levelezõ közösségek számára formális döntések kialakítását gadja, sorba rendezi és tárolja a szavazatokat; valamint jelen- tegyék lehetõvé a még mindig nagy népszerûségnek örvendõ tést és kimutatást készít róluk. Az eVote_Clerk nem közvetlen Mailman levelezõlista-kezelõ program felhasználásával. felhasználói felület: az eVote végrehajtható fájl indítja el, sza- bályozza a mûködését és állítja le. Az eVote_insert végrehajt- A levelezõfelület ható állomány az a levelezõfelület, ami összehangolja a mun- Az eVote elektronikus levelezõlista felülete három részvételi kát a Mailmannel, a népszerû nyílt forrású levelezõlista-kiszol- szintet kínál: gálóprogrammal. A vitához szükséges közvetítõeszközt a 1. Szavazó: a felhasználók leadhatják szavazataikat vagy meg Mailman „adja”, a szavazási szolgáltatást pedig az eVote. Ezt is változtathatják õket; az adatok lekéréséhez jogosultsá- az együttmûködést a levéltovábbító program (Mail Transfer gokkal bírnak, mint mondjuk a választás rendszergazdája Agent – MTA) alias állományában kell beállítani. Kivételt képez vagy a lista tulajdonosa. az az eset, amikor MTA-nak az Eximet választottuk és listaki- 2. Felhasználó/rendszergazda: bármelyik felhasználó kezdemé- szolgálónak a Mailmant. Az Exim beállítófájlja képes a listák nyezhet új választást. Általános körülmények mellett csak a kezelésére és az eVote-tal való együttmûködésre. szavazást kezdeményezõ felhasználó zárhatja le a választást, Az eVote_mail lehetõvé teszi a weblapot felügyelõ rendszer- és távolíthatja el a listáról. gazda számára, hogy a Clerk elõfizetõi listáját a Mailmanéhez 3. A lista tulajdonosa: néhány parancsjelszóval védett. Ezek igazítsa, vagyis azt összehangolja vele. A weblapot kezelõ rend- felülbíráló érvényûek, úgyhogy a tulajdonos lezárhatja a szergazda arra is felhasználhatja, hogy megakadályozza az

www.linuxvilag.hu 2003. augusztus 39 Szaktekintély

A választó lehetõségek tárháza: az eVote közvéleménykutatás-típusai A választó a levelezõfelületen az igen/nem típusú szavazatleadáshoz ======az alábbi sort küldi el a lista címére. A közvélemény-kutatás során a A KÖZVÉLEMÉNY-KUTATÁS SZÖVEGE szavazatösszesítés (vote tally) mindenki számára látható: Kérjük, segítsen elkészíteni a költségvetésünket! eVote poll [y/n] public visible A pénzalapokat az összes szavazat átlagához mérve fogjuk elosztani.

Az üzenet elsõ szavának az eVote-nak kell lennie, különben a paran- ======csot a teljes listának küldi el, és az eVote figyelmen kívül hagyja. A KÖZVÉLEMÉNY-KUTATÁSSAL KAPCSOLATOS TUDNIVALÓK Új közvélemény-kutatás kiírásához a poll parancs használandó. A szavazatok igen/nem típusúak vagy számszerûek lehetnek. Elsõ- 6 résztvevõt kértünk meg, hogy 100 szavazatot az alábbi területek ként a szavazás korlátai szerepelnek szögletes zárójelek közé téve között osszon el. ([]). A legmagasabb adható szavazat 119, míg a legalacsonyabb -119, az [y/n] jelölések az igen, illetve a nem szavazatot jelölik. Min. Max. Az Ön Átlagos A kívánt A public, azaz nyilvános szavazás a kézfeltartásos szavazást jelöli, szavazat szavazat szavazata szavazat terület © Kiskapu Kft. Minden jog fenntartva a private a titkos szavazást, az if_voted segítségével pedig a résztvevõk megtudhatják, hogy ki adta le a szavazatait – azt viszont 2 4 –– 1. épület-karbantartás nem, hogy ki milyen döntést hozott. 10 15 –– 2. rendszerkarbantartás 20 40 –– 3. személyzet Csoportos szavazástípusok 0 50 –– 4. fejlesztés A közösséget meg lehet kérni, hogy válasszon egyet a számos lehe- 0 50 – – 5. túlköltekezés tõség közül. Az ilyen választást lehetõvé tevõ parancs a következõ: 0 50 –– 6. szórakozás eVote poll group public visible 1 1. Félédes [Igen/Nem] Az Ön rendelkezésére álló 100 pontból eddig 0-t jelölt meg. 2. Félédes mandulával [Igen/Nem] 3. Tej [Igen/Nem]] ======4. Tej mandulával [Igen/Nem] KÖZVÉLEMÉNY-KUTATÁS

Az üzenet a következõ lesz: Ez egy nyilvános közvélemény-kutatás, s ez azt jelenti, Melyik csokoládét parancsolja? hogy elektronikus levelet küldhet a következõ címre: [email protected] A group kulcsszó azt jelzi, hogy több választási lehetõség is adott. A sor végén lévõ egyes szám azt jelzi, hogy a választható elemek A tárgynál tüntesse fel a Budget (költségvetés) szót, az üzenet száma egyre van korlátozva. Ezután következik a választható elemek szövegében pedig: listája; végül ezek alatt találjuk az üzenet szövegét, a kulcsszót és eVote who a közvélemény-kutatáshoz kapcsolódó szöveget. Vegyünk egy kissé összetettebb példát: parancsot annak érdekében, hogy az összes szavazatot tartalmazó 1. épület-karbantartás [2,4] ûrlapot megkaphassa. 2. rendszerkarbantartás [10,15] Az alábbi parancs egy 140 oszlop széles táblázatot fog létrehozni. Az 3. személyzet [20,40] elõre beállított érték 80. Természetesen a demokrácialistán mindenki 4. fejlesztés [0,50] más is figyelemmel kísérheti mások szavazatait. 5. távollét [0,50] 6. szórakozás [0,50] ======HOGYAN ADHATJUK LE SZAVAZATAINKAT? Az üzenet az alábbi lesz: Kérjük, mûködjön közre költségvetésünk kialakításában. A rendel- | 1. Küldjön elektronikus levelet a kezésünkre álló pénzalapokat az összes szavazat arányában fogjuk | [email protected] címre. elosztani. A jelenlegi közvélemény-kutatás arra kéri a résztvevõket, | hogy száz szavazatot hat terület között osszanak el. Az egyes | 2. A tárgynál tüntesse fel a Budget (költségvetés) szót. területeknél más-más alsó és felsõ határérték adható meg. | (Ne törõdjön a válasz által (reply to) a tárgy mezõben | létrehozott többi szóval.) Amikor a lista valamelyik tagja elindít egy ilyen közvélemény- | kutatást, valamennyi résztvevõ megkapja a választási rendszer | * * * * * * * * * * * * * * * * * * * * * * * * szabályait, mint az az alább bemutatott példán is látható: ----> * Fontos: ez a két lépés könnyû. * Subject: [DEMOCRACY] Poll: Budget * Ennél az üzenetnél használja * On Mon, 11 Nov 2002 23:12:04 -0800 * a reply-to (válasz) gombot * [email protected] attached a poll * * * * * * * * * * * * * * * * * * * * * * * * to this subject: Budget

40 Linuxvilág Szaktekintély

3. Az üzenetnek az eVote szóval kell kezdõdnie, különben a levél Erre válaszul meg fogod kapni a Charlie szavazatairól szóló jelentést. a teljes demokrácia-levelezõlistához kerül, és be sem lesz A saját választási eredményeidet és a pillanatnyi szavazatok számítva. Amennyiben a második elemnél mondjuk 12-t, illetve összesítését a következõ paranccsal lehet elérni: a 6. elemnél 25-öt szeretnénk beállítani, ezt az alábbi üzenettel eVote info tehetjük meg: eVote A Vote/Mailman programról – bármilyen tárgy megnevezésével – 2. 12 általános tájékoztatást kaphatunk, és máris küldhetjük az üzenetet. 6. 25 eVote help A választható elemek listája olyan hosszú lehet, amennyire Clerk 2.520 Ser.No. 1 csak szükséges. Minden olyan elem, amelyik nem kapott szavazatot, az adott elemhez tartozó választási lehetõségnél A felhasználó az alábbi üzenet küldésével felelhet: a lehetõ legkisebb értékre lesz beállítva. Subject: Re: [DEMOCRACY] Poll: Budget 1. 3 4. Ha az üzenetedben nincs aláírás, illetõleg bármilyen egyéb 2. 12 szöveg található a szavazólap alatt, akkor a szavazatot köve- 3. 30 tõen írjuk be az end szócskát. 4. 25

5. 25 © Kiskapu Kft. Minden jog fenntartva ======6. 5 A LEADOTT SZAVAZAT MEGVÁLTOZTATÁSA Az eVote elektronikus nyugta küldésével válaszol. A nyugtában A szavazóprogram révén mindaddig meg lehet változtatni a leadott szerepel a listatag eredeti szavazási üzenete az összes fejléccel szavazatokat, amíg a közvélemény-kutatás zajlik. együtt. Ha a felhasználó valamilyen hibát ejt, az eVote hibaüzenettel ======próbál segíteni: 6 résztvevõ és 5 szavazó! A SZAVAZAT TÖRLÉSE Végül álljon itt az eVote who által elõállított táblázat, amibõl A költségvetésre (Budget) leadott szavazatok törléséhez a következõ megtudhatjuk, hogy ki hogyan szavazott. parancsot használhatjuk: send the message: eVote remove

======A VÁLASZTÁSI EREDMÉNYEK MEGTEKINTÉSE

A költségvetésre leadott, és már összeválogatott szavazatok megtekintéséhez ezt a parancsot kell használnunk: eVote info

======RÉSZLETES TÁJÉKOZTATÁS Folyamodványtípusok (Petition Types) Bármelyik típus mellékelhetõ egy folyamodványhoz, ami lehetõvé A költségvetésrõl (Budget) bõvebb tájékoztatás kapható: teszi a részvételt olyan emberek számára, akik nincsenek rajta az 1. Küldj egy elektronikus levelet az alábbi címre: elektronikus levelezõlistán. A folyamodványon az egyes elemekhez [email protected] megjegyzéseket lehet fûzni. 2. A tárgyhoz írjuk be: Budget Jövendõ közvéleménykutatás-típusok 3. Ha a who parancsról szeretnénk részletesebb adatokhoz jutni: A Clerk olyan felépítésû, ami más közvéleménykutatás-típusok eVote help who beillesztését is lehetõvé teszi. Néhány érdekes lehetõségrõl a Ha az üzenet így szól:  http://www.michcom/~donald/dispute.html és a eVote how [email protected]  http://accuratedemocracy.com/a_map.htm címeken olvashatunk.

egy adott címrõl történõ szavazatok leadását, vagy egy címet engedi, ezzel szemben a levelezõlista-kezelõ szolgáltatás kizá- az összes listáról eltávolítson. Ugyanakkor e program a meg- rólag levelezõlisták részvételét engedélyezi. A folyamodványok erõsítésre való várakozás közben elavulttá vált üzenetek törlé- kezelése a folyamodványlisták tagjainak kezelésével közösen sére is alkalmazható. zajlik, vagyis olyan tetszõleges listák kezelésével, amelyek Az eVote levelezõfelületén két szolgáltatás érhetõ el: a levelezõ- a petition szóval kezdõdnek: petitiona, petitionb stb. A folya- listák lekérdezése és a folyamodványok kezelése. A folyamod- modványlistákban indított lekérdezéseket azok is megnyithat- ványkezelõ szolgáltatás a részvételt mindenki számára meg- ják, akik az adott listában nem tagok.

www.linuxvilag.hu 2003. augusztus 41 Szaktekintély

Most érkezik el a pillanat, amikor az eVote elõször ellenõrzi a lista csoportos üzenetszórási címére érkezõ küldeményeket. burkoló post a listához Ha a bejövõ üzenet elsõ szava eVote, akkor az eVote a külde- ményt szavazatfeldolgozás végett máris eltéríti. Különben az üzenetet továbbküldi a postázóhoz (post) (lásd a 3. ábrán). 2. ábra A Mailman listakezelõ az eVote nélkül A folyamodványlisták telepítése pontosan olyan, mint a többi eVote-listáé. Mint azt már korábban említettük, a program fel- ismeri ezek különleges jellegét, mert ezek nevében is szerepel burkoló eVote_insert post a listához a petition szó. Ezek az állományok szolgálják a folyamod- ványok felügyeletében való közremûködést. Egy folyamod- vagy ványlista tagjai vitába szállhatnak egymással, lekérdezhetik az adataikat, és olyan hatalommal rendelkeznek, hogy az egész Az üzenet létrehozása és visszaküldése a feladóhoz világra kiterjedõ választást is kiírhatnak. Ezek a folyamodvá- nyok bármilyen tetszõleges eVote-szavazattípust tartalmazhat- nak, és az aláíróknak rendszerint megjegyzéseket is kell fûz- 3. ábra Az eVote ellenõrzi a postát niük a szavazatukhoz. A folyamodványszolgáltatás az aláírások fogadására egy

© Kiskapu Kft. Minden jog fenntartva további aliasszal is rendelkezik: Az üzenet létrehozása és burkoló eVote_petition visszaküldése a feladóhoz eVote: "|/home/mailman/mail/wrapper eVote_petition" 4. ábra Folyamodványszolgáltatás Az egyetlen eVote_petition alias a szolgáltatáshoz tartozó összes folyamodványlista aláírását feldolgozza. Az eVote végrehajtható állománya voltaképpen az egész eVote programcsomag parancsközpontja, ami különféle paraméte- Két kiegészítés a választásokhoz rekkel indítható el. A megadott kapcsolóktól függõen az eVote Jelenlegi formájában az eVote/Clerk rendszert nem az megkezdi vagy éppen befejezi mûködését, megvizsgálja elnökválasztások lefolytatására tervezték, és nem is alkalmas a Clerket, ellenõrzi és összesíti (összehangolja) az adatokat, rá. Két jelentõsebb kiegészítéssel azonban a legbiztonságosabb valamint törli a naplót és újraindítja a naplózást. és legpontosabb megoldássá válhat. A Mailman bármilyen tetszõleges levéltovábbító program – úgy- mint Sendmail, Exim vagy a Postfix – által meghívható. Ha 1. A hálózati réteg: használata révén a hálózatba kapcsolt minden a szokványos módon zajlik, akkor a levelezõlistacímre Clerkek végzik az osztott adatok kezelését. Ugyancsak a irányított küldemény csõvezetéken keresztül a Mailman burko- hálózat segítené elõ más Clerkek adatainak és számításainak lójához (wrapper) kerül a folyamatra vonatkozó engedélyek ellenõrzését. Vegyük például azt az esetet, amikor a szavazó ellenõrzése végett, másrészt a csõvezetékben végrehajtott prog- az egyik Clerknél szavaz, és a bizonylat az adott Clerktõl ramok korlátozása érdekében. Ezt követõen a Mailman meghívja elkerül, majd késõbb a szavazó egy másik bizonylatot kap a post-héjat, hogy az szétszórja a lista címeire a leveleket. egy másik, véletlenül kiválasztott Clerktõl – ez a folyamat Az egyszerû Mailman-listához tartozó sample (minta) nevû biztosítaná valamennyi Clerk egységességét (integrity). aliasbejegyzés az alábbihoz hasonló lesz: 2. A biztonságos titkosítási réteg: így csak a program és a szavazó láthatja a szavazó választását. Ezekkel a kiegészíté- sample: "|/home/mailman/bin/ sekkel a Clerk képes lenne az általános célú adatbázis-kiszol- wrapper post sample" gálóknál nagyobb biztonságot nyújtani, mivel a Clerk átfe- sample-admin: "|/home/mailman/bin/wrapper déssel és a földrajzi távolságokat áthidalva képes a szavazó- mailowner sample" lapokat eljuttatni a kis gépekbõl álló, GNU-rendszert futtató sample-request: "|/home/mailman/bin/wrapper hálózatokra. Ezenkívül azt is fontos megemlíteni, hogy egy- mailcmd sample" egy rendszergazdának jelentéktelen kötelezettsége és hatal- sample-owner: sample-admin ma van a rendszer felett, mivelhogy minden rendszergazdát a Clerkek hálózata tart „szemmel”. Végül a Clerk magában A mailcmd programnak szüksége van néhány sornyi prog- foglalja a szavazókat is, hiszen azok nemcsak újraszám- ramkódra, ami arra utasítja, hogy elektronikus levélben értesí- lálásokat, többször ismétlõdõ ellenõrzést jelentenek, hanem tést küldjön az eVote-nak, valahányszor valaki feliratkozik esetenként újraszavazást is. Egy ilyen rendszerrel magabiz- egy listára vagy éppen lemond egy ilyen „elõfizetést”. tosan vághatunk neki az elektrodemokratikus kornak. A listatagokhoz csoportos üzenetszórással eljuttatandó üzenet a sample alias révén a Mailman postázó (post) programjához Linux Journal 2003. március, 107. szám kerül. Az eVoting bekapcsolásához az eVote_insert paran- csot be kell szúrni a csõvezetékbe. Marilyn Davis ([email protected]) sample: "|/home/mailman/bin/wrapper A régmúltban szerzett PhD fokozatot az elméleti eVote_insert post sample" rádiócsillagászat területén. Jelenleg Python, C nyelveket és GNU fejlesztõeszközöket tanít, de A burkoló C-forráskódja néhány módosítást fog kapni, hogy felszolgálással is foglalkozik a kaliforniai Sunnyvale- az eVote_insert modul futtatását lehetõvé tegye. ben, az UCSC levelezõoktatásban.

42 Linuxvilág Szaktekintély

Faxkiszolgáló a fax2senddel A legismertebb szabad faxkiszolgáló, a Hylafax mellett érdemes megismerkedni a „fizetõs” fax2send kiszolgálóval is.

számítógépes faxkiszolgálók alkalmazása nemcsak a beillesztjük az alábbi sort, akkor az érkezett fax azonnal nyom- papírmentes iroda, de a faxok kényelmesebb kezelése tatásra kerül, és a tamas nevû felhasználó levélben is megkapja miatt is egyre növekvõ igény a kisvállalkozások, irodák a faxot, feltételezve, hogy a nyomtatót „hp”-ként adtuk meg. körében.A Ha már linuxos fájl-, illetve nyomtatókiszolgáló üzemel az irodánkban, érdemes a gépet egy újabb feladattal is megbízni. default~~~hp~tamas~Unsorted Nézzünk meg egy nem szabad, de nagyon egyszerûen beállít- ható és könnyen, megbízhatóan használható megoldást! Így már teljesen készek állunk faxok fogadására.

© Kiskapu Kft. Minden jog fenntartva A fax2send két részbõl áll: egyrészt a kiszolgálóprogram, Most nézzük meg, hogyan tudunk faxot küldeni, illetve érke- másrészt a windowsos ügyfélprogram részbõl. A linuxos X-es zett faxokat kezelni a windwosos munkaállomásokon, ha ezt ügyfelek jelenleg fejlesztés alatt állnak. A kiszolgálóprogram- mal együtt letölthetõ X-es ügyfelek egyelõre csak azon a gépen mûködnek, amin a kiszolgáló is megtalálható. A programokhoz könnyen hozzájuthatunk a  http://www.fax2send.com weboldalról. Mi most az „Installation wizard” változattal foglalkozunk, mert a gép Debian linuxos. A letöltött tömörített fájlt kicsomagoljuk, majd egyszerûen elindítjuk az install parancsfájlt. A telepítés néhány kérdés megválaszolásából áll. Ha a telepítést X alól indítjuk, akkor grafikusan zajlik, de nyugodt szívvel feltételezhetjük, hogy a kiszolgálókon nincs igazán szükség grafikus felületre. Elõször rögtön elolvashatjuk a felhasználás feltételeit, majd miután azt elfogadtuk, újabb kérdés vár minket, miszerint indulhat-e a telepítés. A telepítés 15–20 másodperc alatt lezajlik, ezt követõen újabb kérdést kapunk. El kell döntenünk, hogy próbaváltozatként vagy bejegyzett változatként szeretnénk-e használni a programot. Válasszuk a próbaváltozatot, amivel a faxkiszolgálót teljes nem (csak) a levelezõprogramunkban szeretnénk megtenni. szolgáltatáskörrel egy hónapig lehet használni. Ezt követõen Az ügyfélprogram a fax2send weboldaláról ugyancsak letölt- a modem beállításával folytatódik a telepítés menete. Kivá- hetõ, mindegyik Windows-változathoz használható. Telepítése laszthatjuk, hogy modemünk melyik kapuhoz csatlakozzon, szintén nem igényel pilótavizsgát, a szokásos Windows-tele- majd a program le is ellenõrzi a csatlakoztatott modemet. pítõkhöz hasonlóan kell eljárnunk. Sok teendõnk nincs, szinte Itt álljunk meg egy szóra. A fax2send akkor fog megfelelõen csak a next gombot kell nyomogatnunk és a szokásos kérdé- mûködni, ha a modemünk ismeri a Class 2 vagy 2.0 protokollt. sekre kell válaszolnunk, hogy hová és milyen néven szeret- Ezt a tesztprogram megvizsgálja és közli az eredményt. Ha a nénk telepíteni a programot. Elsõ indításkor meg kell adnunk modemünk megfelelt, már csak arra kell választ adnunk, hogy a felhasználót, aki kapcsolódni szeretne a kiszolgálóhoz. Ez milyen lapformátumot szeretnénk használni. Választhatunk egyezzen meg azzal, akit a userlist fájlban beállítottunk. Ezután az A4, illetve a Letter formátum között. Ezzel a faxkiszolgáló már készen állunk a faxok kezelésére és a faxküldésre. telepítése véget ért – nem volt bonyolult folyamatnak nevez- A nyomtatók közé bekerült egy fax2send nyomtató. Ennek hetõ. A telepítés után a fax el is indul és közli, hogy ne feled- segítségével tudunk faxokat küldeni. Érdemes a fax2send prog- kezzünk meg a beállításokról. Elsõsorban a felhasználói jogo- ramot az indítópultba betenni, így a rendszer indulásakor ön- sultságokat adjuk meg, amiket a /etc/fax2send/userlist fájlban mûködõen elindul. Ha ezzel a nyomtatóval nyomtatunk, akkor állíthatunk be. Ha például a munkaállomás neve ws1, akkor a bekéri a faxszámot, ahová a faxot küldeni szeretnénk, továbbá felhasznalo@ws1-et adjuk meg a userlist-ben. A faxkiszolgáló eldönthetjük, hogy fedlappal vagy fedlap nélkül továbbítjuk-e. újraindítása után már ezzel a felhasználóval jelentkezhetünk Ha elküldjük a faxot, hamarosan hallhatjuk, hogy a modem be, feltéve, hogy az ügyféloldali programot is telepítettük. tárcsázni fog, és az üzenetet megpróbálja eljuttatni a címzettnek. Azért még ne szaladjunk elõre! A kiszolgálóoldalon érdemes még két beállítást elvégezni. Elsõnek a nyomtatónkat – ha van – Ambrits Tamás vegyük fel a /etc/fax2send/printers fájlba. Ez jó lesz majd, ha azt ([email protected]) szeretnénk, hogy a beérkezett faxok egybõl kinyomtatásra Nem „fanatikus” Linux-rajongó, de egyre több kerüljenek. A másik, papírtakarékosabb módszer – ha levélki- feladat megoldására alkalmazza nagy szolgáló is akad a gépünkön –, hogy az érkezett faxokat egy megelégedéssel. elektronikus postafiókba irányítjuk át. Ehhez a /etc/fax2send/ routing fájlt kell egy kicsit módosítanunk. Ha a routing fájlba

44 Linuxvilág Szaktekintély

A Firewall Builder használata (2. rész)

A bástyagép beállítása és az IP Tables tûzfalszabályainak megadása után már tisztán láthatjuk a biztonsági házirend lényegét.

múlt alkalommal a Firewall A Builderben elkészítettük azokat az újrafelhasználható objektu- mokat, amelyeket az IP Tables-szabályok- ban fogunk alkalmazni. Ez alkalommal két szabálykészletet fogunk a Firewall Builder segítségével létrehozni: az egyik

a bástyagép számára készül el, amelynek © Kiskapu Kft. Minden jog fenntartva önmagát kell megvédenie, a másik egy tûzfal számára, amelynek egy teljes háló- zat biztonságáról kell gondoskodnia.

Helyi szabályok a bástyagépen Elsõként tekintsük át a bástyagép hely- zetét. A Netfilter/IP Tables, illetve álta- lában a csomagszûrés kapcsán széles 1. kép A visszacsatoló felületre vonatkozó szabályok körben elterjedt tévhit, hogy a csomag- szûrés kizárólag a tûzfalak feladata. Ha valóban biztonságos rendszert szeretnél, elég balga ötlet volna a biztonságot egyetlen elemre bízni. Természetesen szükség van egy gondosan beállított és felügyelt tûzfalra, ami az összes háló- zatra csatlakozó számítógép számára biztosítja a védelmet, ám a számítógé- pek maguk is képesek kell legyenek ön- maguk megvédésére – különösen a bás- tyagép, amelyen nyilvánosan elérhetõ szolgáltatásokat (ftp, www) futtatunk. Tegyük fel például, hogy nyilvános webkiszolgálódon 2.4-es Linux fut. A gépen helyi Netfilter-szabályok segít- ségével külön védelmi réteget kell emelni arra az esetre, ha egy támadó megtörné a vállalati tûzfalat, vagy egyéb módon jutna keresztül rajta. Ha a ki- 2. kép A bástyagép házirendje szolgálón 2.4-esnél korábbi rendszermag fut, akkor a Netfilter/IP Tables helyett IP szolgáltatások szakadnak meg, mint a fogalmazva: elvégezted a múlt alkalom- Chainst kell használni. Ebben az esetben névszolgáltatás gyorstárazása vagy az mal ismertetett tennivalókat. külsõ fejlesztõktõl szerezhetsz IP Tables- SSH-kaputovábbítás. A Trillian helyi visszacsatoló felületéhez IP Chains fordítómodult, és ennek segít- Tegyük fel, hogy van egy Trillian nevû két szabályra lesz szükség: az egyik ségével használhatod a Firewall Buildert webkiszolgálód, ezt szeretnéd védeni. a kimenõ, a másik a bejövõ forgalmat a parancsfájlok elkészítésére. A Firewall Buildert feltelepítetted rend- engedélyezi rajta. A két szabály létreho- szergazdai munkaállomásodra – gondo- zásához a következõ lépéseket kell Visszacsatoló szabályok lom, még nem felejtetted el, hogy az X követned (1. kép): Minden tûzfal beállításakor az elsõ lépés Window System, illetve az X alapú alkal- – így a bástyagép esetében is – az, hogy mazások nem a bástyagépre valók. Lét- 1. A tûzfal visszacsatoló felületének teljhatalmat adunk a helyi visszacsatoló rehoztad azokat az objektumokat, ame- alobjektuma alatt jobbra, a Firewall felületnek. A visszacsatolóra számos, a lyek a környezetedben lévõ állomások, Builder ablakának bal oldali részén helyi folyamatok és démonok között hálózatok és csoportok leírására alkalma- (az 1. képen loopback névvel szere- zajló átvitel során van szükség. A helyi sak, továbbá egy Trillian tûzfalobjektu- pel) válaszd ki a visszacsatoló felület hurkot engedélyezõ szabályok hiányában mot, majd mindezt egy helyi visszacsa- házirendjét – egyelõre üresnek az IP Tables parancsfájl futtatásakor olyan toló felülettel egészítetted ki. Másként kell lennie.

www.linuxvilag.hu 2003. augusztus 45 Szaktekintély

A bástyagép házirendje Miután a bástyagép visszacsatoló felületét lerendeztük, fordítsuk figyel- münket az általános házirendre. Ehhez némi tervezésre is szükség lesz. A cél nyilván az, hogy a Netfilter megfelelõ védelmet nyújtson, de eközben a használhatóságot se korlátozza. Példagépünk, a Trillian egy webkiszol- gáló, a többi állomás tehát HTTP és HTTPS protokollon keresztül fogja elérni. A megfelelõ naplózás érdekében szeretnénk, ha a Trillian DNS-lekérde- zéseket is végre tudna hajtani. Emellett bizonyos felügyeleti jellegû kapcsola- tokra is szükség lehet. Erre a célra SSH-t fogunk használni, tehát a bejövõ SSH-

© Kiskapu Kft. Minden jog fenntartva kapcsolatokat is engedélyeznünk kell, 3. kép A házirend lefordítása de csak a belsõ hálózat felõl. A 2. képen egy ilyen, a Trillian számára készített 2. Kattints a Rules(Szabályok) menü Ap- Az 1. képen is látható második szabály házirendet láthatunk. pend rule (Szabály hozzáfûzése) pont- létrehozásához ismételd meg a 2–8. Az egyes szabályok létrehozásának jára, ekkor az ablak jobb oldali részé- számú lépést. A 3. lépésben a Trillian aprólékos ismertetésétõl most eltekin- ben egy üres szabály jelenik meg. ikonját értelemszerûen az új szabály tenék, néhány dologra viszont érdemes 3. Húzd a Trillian név melletti tûzfal- Destination (Cél) mezõjébe kell húznod, kitérni. Elõször is az ablak bal oldalán ikont az üres szabály Source (Forrás) és nem a forrásba. Az 5. lépésben az megjelenõ objektumfában látható, hogy mezõjébe. Ügyelj arra, hogy a kur- irányt Inbound (Bejövõ) értékre állítsd. közvetlenül a Trillian alatti ágban válasz- zornak pluszjellé (+) kell változnia, Jogos a kérdés: pontosan hogyan tottam ki az általános Policy (Házirend) mielõtt az egérgombot felengednéd. mûködnek ezek a szabályok? Elõször objektumot, és nem a felületekre külön 4. Kattints az egér jobb oldali gomb- is hangsúlyoznom kell, hogy kizárólag vonatkozó házirendobjektumok között. jával az új szabály Action (Mûvelet) a helyi visszacsatoló felületre vonat- Nemcsak a Trillian objektumot használ- mezõjébe, majd a menübõl válaszd koznak. Bármelyik felületnek lehetnek tam fel, hanem egy Net_Internal nevû az Accept (Elfogadás) pontot. saját szabályai, ezek feldolgozása a hálózatobjektumot is, ami a múltkori 5. Kattints az egér jobb oldali gombjá- tûzfal általános szabályainak érvényre írásom egyik példaobjektuma. Ez egy val a szabály Direction (Irány) mezõ- juttatása elõtt történik meg. Bár ennél teljes hálózatnyi IP-címtartományra jébe, majd válaszd az Outbound a két visszacsatoló szabálynál a Trillian hivatkozik, pontosabban a 192.168.111.0 (Kimenõ) pontot. cél és forrás is volt egyben, szó sincs hálózatra. Míg a második szabály for- 6. Kattints az egér jobb oldali gomb- arról, hogy e két szabály a Trillian rásként egyetlen IP-címet jelöl meg jával a szabály Options (Beállítások) bármelyik IP-címére is érvényes lenne. (a Trillian IP-címét), addig a harmadik mezõjében található papír- és ceru- Kizárólag a helyi visszacsatoló felüle- szabály mindazokra a csomagokra érvé- zaikonra, majd válaszd a Turn log- ten kimenõ és beérkezõ csomagokra nyes, amelyeknek a forrás IP-címe a ging OFF (Naplózás kikapcsolása) vonatkoznak. 192.168.111.1 – 192.168.111.254 tarto- beállítást. El is érkeztünk a visszacsatoló szabá- mányba esik. 7. A jobb oldali egérgombbal kattints lyokkal kapcsolatos utolsó tudnivalóhoz. Egy másik fontos tanács a szabályok újra a szabály Options mezõjébe, Feleslegesnek tûnhet két olyan szabályt létrehozásával kapcsolatban: bátran majd válaszd a Modify options (Be- létrehozni, amelyek ugyanúgy a tûzfalra használd fel a Firewall Builder beépített állítások módosítása) parancsot. vonatkoznak, és nem egyetlen, bármely szolgáltatásobjektumait, amelyeket a A megnyíló ablakban jelöld be az forrást és bármely célt elfogadó szabály- bal oldali ablakrész Standard fülére kat- alul található jelölõnégyzetet, ezzel ba sûríteni õket. Jómagam azonban úgy tintva érhetsz el. Némi figyelem ter- kikapcsolod az állapotalapú vizs- tapasztaltam, hogy amikor egyetlen sza- mészetesen nem árt, mert ha a szol- gálatot. Semmi szükség arra, hogy bályt hoztam létre, a Firewall Builder az gáltatásobjektumok (például dns_tcp) a processzor erõforrásait a helyi hur- INPUT és az OUTPUT helyett a FORWARD szabályokba való húzogatásától eltérõ kon keresztül folyó forgalom álla- láncba írta a visszacsatoló szabályokat, mûveletet is végzel, akkor az ablak jobb potalapú követésére pocsékoljuk. ami viszont a visszacsatoló felület hasz- oldalán látható szabályok helyett az 8. Ha gondolod, az egér jobb oldali nálhatatlanná válását okozta. Ha külön éppen kiválasztott elem tulajdonságai gombjával kattints az új szabály kimeneti és bemeneti szabályt hoztam jelennek meg. Comment (Megjegyzés) mezõjébe, létre a visszacsatolóhoz, a hiba eltûnt. Egy kicsit pontosítva, ha éppen egy válaszd az Edit Comment (Megjegy- Aggodalomra nincs ok, tapasztalataim házirendet állítasz össze, akkor a Stan- zés szerkesztése) parancsot, és ké- szerint ez az egyetlen olyan helyzet, dard fülre, majd az objektumfa + (lenyi- szíts rövid feljegyzést a szabály sze- amikor a Firewall Builder rossz láncba tás) és – (összezárás) ikonjaira kattintva, repérõl, céljáról (például „Helyi írja a szabályokat. A hiba csak egylaki illetve a szolgáltatásobjektumokat a visszacsatoló felületkimenet gépeknél jelentkezett, több felülettel is megfelelõ helyre húzva kényelmesen engedélyezése”). rendelkezõ tûzfalaknál nem. dolgozhatsz, a jobb oldali ablakrész által

46 Linuxvilág Szaktekintély

A trillian.fw fájl tartalma

#!/bin/sh done # $IPTABLES -t $table -X # Firewall Builder fwb_ipt v1.0.8-3 done # # Generated Tue Mar 11 08:01:21 2003 CST $IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT log() { if test -x "$LOGGER"; then $IPTABLES -A OUTPUT -m state --state logger -p info "$1" ESTABLISHED,RELATED -j ACCEPT fi $IPTABLES -A FORWARD -m state --state } ESTABLISHED,RELATED -j ACCEPT

MODPROBE="/sbin/modprobe" # Rule 0(lo): Outbound from loopback IPTABLES="/sbin/iptables" $IPTABLES -A OUTPUT -o lo -j ACCEPT IP="/sbin/ip" LOGGER="/usr/bin/logger" # Rule 1(lo): Inbound from loopback $IPTABLES -A INPUT -i lo -j ACCEPT © Kiskapu Kft. Minden jog fenntartva cd /etc || exit 1 # Rule 0(global) log "Tûzfalparancsfájl indítása…" $IPTABLES -A INPUT -p tcp -m multiport --destination-port 80,443 -m state va_num=1 --state NEW -j ACCEPT

FWD=´cat /proc/sys/net/ipv4/ip_forward´ # Rule 1(global) echo "0" > /proc/sys/net/ipv4/ip_forward $IPTABLES -A OUTPUT -p tcp --destination- echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout port 53 -m state --state NEW -j ACCEPT echo 1800 $IPTABLES -A OUTPUT -p udp --destination- > /proc/sys/net/ipv4/tcp_keepalive_intvl port 53 -m state --state NEW -j ACCEPT

$IP -4 neigh flush dev eth0 # Rule 2(global) $IP -4 addr flush dev eth0 label "eth0:FWB*" $IPTABLES -A INPUT -p tcp -s 192.168.111.0/24 --destination-port 22 $IPTABLES -P OUTPUT DROP -m state --state NEW -j ACCEPT $IPTABLES -P INPUT DROP $IPTABLES -P FORWARD DROP # Rule 3(global) $IPTABLES -N RULE_3 cat /proc/net/ip_tables_names | while read $IPTABLES -A FORWARD -j RULE_3 table; do $IPTABLES -A RULE_3 -j LOG --log-level $IPTABLES -t $table -L -n | while read c warning --log-prefix "RULE 3 -- DROP " chain rest; do --log-ip-options if test "X$c" = "XChain" ; then $IPTABLES -A RULE_3 -j DROP $IPTABLES -t $table -F $chain fi echo 0 > /proc/sys/net/ipv4/ip_forward megjelenített adatok köre nem változik a visszacsatoló szabályok kapcsán ként küldötteket is. Ha a második sza- meg. Ha viszont egyszerûen kiválasz- ismertetett eljárás 7. lépését. Normál bálynál kikapcsoltam volna az állapot- tasz egy szolgáltatásobjektumot vagy esetben szeretnénk, ha a rendszermag alapú vizsgálatot, akkor a Trillian 22-es -kategóriát a Standard fában (olyan mó- megõrizné a hálózati átvitelekkel kap- TCP-kapujáról származó csomagok don, hogy rákattintasz, de nem húzod át csolatos állapotadatokat – éppen ez az, továbbításának engedélyezésére, és sehova), akkor ennek az objektumnak a aminek köszönhetõen a legtöbb átvitel ezzel a válaszok elküldésének lehetõvé tulajdonságai jelennek meg a jobb olda- egyetlen kétirányú szabállyal leírható, tételére egy másik szabályt is létre kellett lon. Ilyenkor vissza kell lépned a User és nincs szükség két-két egyirányú sza- volna hoznom. (Felhasználó) lapra, újra ki kell válasz- bályra. Az állapotalapú vizsgálatnak Végül az utolsó kivételével mindegyik tanod a tûzfal általános házirendjét, és köszönhetõ például az, hogy ha egy szabály esetében ki kell kapcsolni a nap- csak ekkor jelennek meg újra a szabá- átvitel megfelel a 2. képen látható 2. sza- lózást, a fenti eljárás 6. lépésében leírt lyok. Adatvesztés nem történik, de bály elõírásának, ami engedélyezi a be- módon. Sokan úgy gondolják, nincs kényelmetlen és bosszantó jelenség. jövõ SSH-forgalmat a belsõ hálózat értelme és haszna lemezhelyet és be-, Sokkal fontosabb, hogy ezeknél a szabá- gépeirõl, akkor a Trillian rendszermagja illetve kiviteli terhelést áldozni arra, lyoknál az állapotalapú vizsgálatot be- nemcsak a bejövõ SSH-csomagokat hogy a rendszer a tûzfalszabályok által kapcsolva hagytam, vagyis kihagytam engedélyezi, de a Trillian által válasz- feldolgozott csomagok mindegyikét

www.linuxvilag.hu 2003. augusztus 47 Szaktekintély

a nevével egyezik meg, amelyhez a le- fordított házirend tartozik, a kiterjesztése pedig .fw. A létrejött példaparancsfájl, a trillian.fw tartalma – a terjedelem miatt kissé módosítva, rövidítve – a listában látható. Az írásomban említett szabályok mindegyike megtalálható benne. Az új parancsfájlt kézzel is átmásolhatod a Trillianre, majd változatlan formában futtathatod, vagy kézzel is lefordíthatod egy olyan indítási parancsfájlba, amely a Trillian Linux-terjesztésének megfelel, például egy szabványos Red Hat 7.3 indítási parancsfájlba. Könnyebb önmû- 4. kép A házirend lefordítása ködõ módon átmásolni és üzembe he- lyezni egy a Firewall Builderhez készült telepítõ parancsfájl segítségével. Ilyenre

© Kiskapu Kft. Minden jog fenntartva példa az fwb_install, amely a  http://sourceforge.net/project/showfiles. php?group_id=5314 címrõl érhetõ el. Utóbbi különösen elegáns és egyszerû módja a tûzfalszabályok biztonságos átmásolásának és üzembe helyezésének, az fwb_install ugyanis scp-n keresz- tül másolja a parancsfájlt a távoli gép /etc/ firewall könyvtárába, majd SSH-n keresz- tül indítja el. Ha az fwb_install-t már valahová letöltötted a Firewall Buildert futtató gépeden, akkor a Firewall Buil- deren belül az egyes tûzfalobjektumok Compile/Install (Fordítás/Telepítés) tulaj- donságai között írhatod elõ a használatát. Ne feledd az fwb_install-t a rend- szered beállításainak megfelelõen mó- dosítani, illetve az általa használandó 5. kép Általános házirend egy tûzfalhoz SSH-kulcsokról is gondoskodnod kell. Miután ezekkel végeztél, a szabályok naplózza. Valóban, én is inkább az eldo- várni, akkor ezt a szolgáltatást úgy érhe- lefordítás utáni telepítéséhez mindössze bott csomagokat naplózom, az enge- ted el, hogy a Firewall Builderben a Rules (Szabályok) menü Install (Tele- délyezõ szabályok naplózásától pedig kiválasztod a tûzfalobjektumot, rákat- pítés) pontjára kell kattintanod. eltekintek. A 2. képen látható mintasza- tintasz a hozzá tartozó Firewall Proper- Az fwb_install ügyes segítõtárs, ám bályok sora egy általános szabállyal zá- ties (Tûzfal tulajdonságai) fülre, majd szükséged lesz egy olyan indítási rul: ez az összes olyan csomagot eldobja, bejelölöd a Log all dropped packets parancsfájlra is a célrendszeren, amelyik amelyik sem az elõtte található szabá- (Naplózzon minden eldobott csomagot) indításkor mindig futtatja a tûzfalpa- lyok valamelyikének, sem a felületekre jelölõnégyzetet. Az említett foltról a rancsfájlt. Egyébként a rendszer véd- külön megadott szabályoknak – például  http://www.netfilter.org/documentation telen lesz minden indítás vagy újrain- a helyi visszacsatolóra vonatkozó házi- /pomlist/pom-summary.html címen dítás és a között az idõpont között, rendnek – nem felel meg. találhatsz további tájékoztatást. amikor a Firewall Builder Install Ennek a szabálynak tulajdonképpen parancsát lefuttatod. A saját rendszered kizárólag a naplózásban van szerepe. A házirend lefordítása és telepítése /etc/init.d könyvtárában található fájlok A Firewall Builder az alapértelmezett Miután a tûzfal házirendje elkészült, IP megfelelõ mintául szolgálnak ehhez. házirendet az összes IP Tables lánc ese- Tables-parancsfájllá kell alakítani. Ehhez tében DROP-ra állítja, de ezeket az alap- elõször ellenõrizni kell, hogy az ablak bal Házirend egy valódi tûzfalhoz értelmezés szerint eldobott csomagokat oldali részén megjelenõ fában a tûzfal Írásom jelentõs részét a bástyagépes pél- a rendszer nem naplózza, hacsak a Net- objektuma és az általános házirend vagy dának szenteltem, ám szerencsére egy filtert nem utasítjuk kifejezetten erre. a felületekhez rendelt saját házirendek többlaki (több felülettel is rendelkezõ) Létezik már kísérleti jellegû folt a Netfil- valamelyike ki van-e választva. Ezt tûzfal házirendjét is nagyon hasonló terhez, ami alapbeállítás szerint is lehe- követõen nyisd meg a Rules (Szabályok) módon lehet összeállítani. A visszacsa- tõvé teszi az összes eldobott csomag menüt, és válaszd a Compile (Fordítás) toló szabályokkal kell kezdeni, a többi naplózását, de szerintem érdemes meg- pontját. Az eredmény a 3. képen látható. felületen meg kell akadályozni a hamisí- várni a kód üzembiztossá válását, és csak A házirend sikeres lefordítása után a tásokat, létre kell hozni egy általános há- azután fordítanám bele a rendszermag- Firewall Builder egy fájlba írja az ered- zirendet, lefordítani és végül telepíteni. ba. Ha ezt valamiért nem akarod meg- ményt, aminek a neve annak a tûzfalnak A legfontosabb különbség az, hogy egy

48 Linuxvilág Szaktekintély

tûzfal – a kiszolgálók többségével ellen- Mielõtt ezt a szabályt létrehoztam volna, tetését mellõzném – mondandóm már tétben – több hálózati felülettel is rendel- olyan hálózatobjektumokat készítettem, így is túl hosszúra nyúlt. Mivel a Firewall kezik. Mivel egy egyetlen felülettel ren- amelyek a 1918-as RFC-ben („Address Builder lényege éppen a tûzfalszabályok delkezõ rendszer a visszacsatolótól elte- Allocation for Private Internets”) foglalt, könnyen olvasható formában való meg- kintve az összes csomagot ugyanazon a fenntartott IP-címtartományokat fedik jelenítése, az 5. kép értelmezése talán fizikai eszközön keresztül kapja, a hami- le. Az RFC 1918 címtartományai kizáró- nem okoz különösebb gondot. sított csomagokat nem tudja megkülön- lag szervezeteken belüli használatra Ha már a könnyû megértésrõl esik szó: böztetni a valódiaktól, és minden cso- valók, az Interneten keresztül nem irá- talán még nem említettem, hogy a helyi mag forrás-IP-címét kénytelen elfogadni. nyíthatók, így minden internetes tûzfal- visszacsatolóra vonatkozó, hamisítás- Egy többlaki rendszer ezzel szemben nak eleve feltételeznie kell, hogy az ellenes és általános szabályok egyaránt könnyedén szét tudja válogatni azokat a ilyen forráscímmel érkezõ csomagok könnyedén létrehozhatók a Firewall csomagokat, amelyek ténylegesen a helyi hamisak – a 4. képen látható szabály Builder szabályvarázslójával. hálózatról érkeznek, illetve azokat, ame- pontosan errõl gondoskodik. Mivel Remélem, bocsánatos bûn a részemrõl, lyek valójában az Internet felõl futottak nálam az RFC 1918 szerinti C osztályú hogy csak most említem a varázslót. be, de olyan hamis forrás IP-címmel, ami objektum a 192.168.0.0 tartományba esik A tûzfalszabályok azonban túl fontosak helyi vagy megbízható hálózatból jövõ- (alhálózati maszk: 255.255.0.0), belsõhá- ahhoz, hogy elkészítésükkor holmi nek láttatja õket. lózati címem pedig 192.168.111.0 (része varázslóban vakon megbízzunk.

Példámban a belsõ hálózat a 192.168.111.0 az RFC 1918 által megadott címtérnek), © Kiskapu Kft. Minden jog fenntartva (alhálózati maszk: 255.255.255.0) címet a Net_Internal objektumot ebben a Linux Journal 2003. június, 110. szám kapta. Ha van egy Slartibartfast nevû szabályban nem kellett szerepeltetnem. tûzfal, amely e hálózat és a külvilág Egyébként, ha valaki nem ismerné a között helyezkedik el, akkor hamisítás- 1918-as RFC tartalmát, az RFC 1918 Mick Bauer ([email protected]) ellenes szabályokkal utasíthatjuk arra, A osztályú objektumom a 10.0.0.0 címre Biztonsági szakember, a Linux hogy a belsõ hálózat felé vezetõtõl eltérõ (alhálózati maszk: 255.0.0.0), az RFC Journal biztonsági témákkal felületeken azonnal dobjon el minden 1918 B osztályú pedig a 172.16.0.0 címre foglalkozó szerkesztõje, biz- olyan csomagot, amelynek forrás IP- (alhálózati maszk: 255.240.0.0) hivatkozik. tonsági tanácsadó a Minnesota címe 192.168.111-gyel kezdõdik. Az ilyen állambeli Minneapolisban talál- csomagok nyilvánvalóan hamisak. Általános szabályok ható Upstream Solutions LLC Inc.-nél. Mick A 4. képen a Slartibartfast hamisítás- Az 5. képen a Slartibartfast általános házi- szabadidejében a gyermekeivel fogócskázik ellenes szabálya látható. rendje látható, ennek részletes ismer- vagy zenél – néha mindkettõt egyszerre.

www.linuxvilag.hu 2003. augusztus 49 Szaktekintély

Tudományos folyamatok gyorsítása Nézzük meg, hogyan tehetjük hatékonnyá Matlab projektjeinket egyes részeinek C-kóddá történõ fordításával!

NASA Moffett Field-i Ames Kutatóközpontjában, a írhatunk némileg hatékonyabb Matlab-kódot. Majd bemutat- Szilíciumvölgy szívében, egy olyan csapatban voltam juk, hogy miképpen lehet a MEX-függvények segítségével kutató, amelyik Linuxot használt egy igen érdekes C-kódot illeszteni a Matlab programba, hogy felgyorsítsuk Aés elõremutató fejlesztésben. Az Ames-i Neuro Engineering a végrehajtást, miközben továbbra is Matlab-környezetben Laboratóriumban az agy–számítógép-csatolófelületen dolgoz- maradunk. Innen már csak egy viszonylag apró lépés a teljes tam, mégpedig egy olyan rendszeren, amelynek a segítségével projekt átvitele C vagy C++ alá. Az itt található adatok külön-

© Kiskapu Kft. Minden jog fenntartva az EEG (elektroencephalogram–agyhullám) jeleket elektroni- bözõ helyeken a hálózaton is megtalálhatóak; ezt a cikket kus rendszerek és roboteszközök vezérlésére lehet felhasználni. inkább rövid HOGYAN-nak, még inkább személyes jegyzetnek Az volt a feladatom, hogy az elsõdleges labor kutatóitól átve- szántuk – olyannak, ami bemutatja, hogyan hozhatunk át egy gyem a prototípuskódokat, majd ezekbõl hatékony megvaló- kísérleti Matlab-kódot a valódi világba. sításokat fejlesszek ki, amelyeket valós idejû adatfeldolgozással, Cikkünkben példaként a fej felületén mért feszültség gyors emberi alanyokon ki lehet próbálni. Gyakran csak az algorit- változásainak szétválasztására tervezett kódot fogjuk hasz- musok durva vázlatát vagy egy kódtöredéket kaptam meg, nálni. A kód a többelemû eseményfüggõ potenciálbecslés és ki kellett derítenem, hogy fel lehet-e õket használni az álta- (multicomponent event-related potential estimation, röviden lunk gyûjtött agyhullámadatokon. mcERP) nevû algoritmuson alapszik. Akkor kezdtem el elõször A Matlab és a GNU Octave nevû szabad program nagy segítsé- Matlab-programok C-kóddá alakításával foglalkozni, mialatt get jelentett nekem ebben a munkában: lehetõvé tették, hogy ezen az algoritmuson dolgoztam. Amikor ugyanis valamilyen az adatfeldolgozásra és adatmegjelenítésre vonatkozó haté- beállítási értékkel és bemenõ adatokkal kipróbáltam az algorit- kony módszereket dolgozzak ki, amit C-ben (ne adj Isten, must, általában egész éjszakára ott kellett volna hagynom. Fortranban) csak igazán kínkeservesen tudtam volna megol- Semmilyen Matlabba épített optimalizálási módszer sem volt dani. A megvalósítás egyszerûsége pedig komoly szempont képes jelentõsen csökkenteni a végrehajtási idõt. olyankor, amikor nagy tömegû kísérleti kóddal dolgozunk, A teljes C-átalakítást követõen általában tíz másodperces nagy- amiket aztán vagy véglegesen felhasználunk, vagy elvetünk. ságrendû idõmennyiségre volt szükség egy nagyobb adat- Amikor az eljárás megfelelõnek tûnt, és eljött az idõ, hogy mennyiség feldolgozásához. Ez a különösen nagy idõmegta- komolyan elgondolkozzunk valós idejû adatfeldolgozó rend- karítás az algoritmus igen mélyen egymásba ágyazódó jelle- szerünkbe történõ illeszthetõségén, azonnal kiderült, hogy a Matlab könnyû programozhatóságának bizony megvan az ára. Ez az ár pedig a sebesség. Egyetlen másodpercnek megfelelõ 1. lista Beágyazott ciklus a mcERP algoritmusban adatmennyiség feldolgozása például percekig vagy akár órákig is eltarthat. Nyilvánvaló, hogy ezt nemigen használhatjuk for i = 1:M valós idejû rendszerekben. Minden kód, ami értékesnek bizo- for j = N:-1:1 nyul, meglévõ kódbázisunkhoz illeszkedve elõbb vagy utóbb norm = 0; C-, illetve C++-kódként végzi. E két ok miatt a Matlab elég for r = 1:R sok kódját C nyelven újra kellett írnunk. for t = 1:T Aki már dolgozott Matlabbel, most biztosan rögtön arra gon- X = x(i,r,t); dol, hogy „de hiszen a Matlab magától is képes C-be men- for n = 1:N teni”, vagy „mi a baj a Matlab új JIT fordítójával?”. Az új JIT if (n ~= j) fordító helyenként valóban felgyorsíthatja a kódot (ha belené- X = X - coupling(i,n) * zünk a leírásba, látni fogjuk, hogy jó néhány olyan helyzet alpha(n,r) * létezik, amikor meg sem próbál egyszerûsíteni), azonban s (n,pad+t-tau(n,r)); soha nem versenyezhet egy jól megírt, lefordított C-kód haté- end konyságával. A Matlab C-exportáló felületérõl pedig csak end annyit, hogy a Matlab által kiírt kód pontosan ugyanolyan Y = alpha(j,r)*s(j,pad+t- lassú, mint a Matlab belsõ környezetében futó értelmezõ tau(j,r)); (interpreter) kód, és csatolófelület-munkálatok nélkül igen c(i,j) = c(i,j) + X*Y; nehéz más projektekbe illeszteni. Továbbá egyik lehetõség norm = norm + Y^2; sem segíti a GNU Octave felhasználóit vagy azokat, akik nem end tudják tartani az ütemet a költséges Matlab-frissítésekkel. end Általában véve a legjobb megoldás az, ha az eredetileg Matlab c(i,j) = c(i,j)/norm; alatt létrehozott algoritmusainkat kézzel alakítjuk át gyors, end termelési szintû kóddá. end Ebben a cikkben elõször néhány tippet láthatunk, hogyan

50 Linuxvilág Szaktekintély

gével magyarázható (lásd az 1. listát). Nem állíthatjuk, hogy minden algoritmus ennyire felgyorsul. Ráadásul még ez a teljesítmény sem elég jó a valós idejû mûveletekhez, de már elég gyors ahhoz, hogy adatcsökkentõ módszereket, kódpár- huzamosítási megoldásokat és egyéb trükköket kezdhessünk el keresni, hogy a kívánt sebességhez közeli értéket érjünk el.

Kódoegyszerûsítés Matlabben A Matlab teljesítménye a ciklusok futtatáskor a leggyengébb. Akár azt is mondhatnánk, hogy a Matlab kifejezetten utálja a ciklusokat; sokkal hatékonyabban tud végrehajtani néhány ciklusszerû mûveletet, ha a kódot elõtte vektorizáljuk, és a függvényeket mátrixba rendezett adathalmazon hajtjuk végre, mintha végig kellene lépkednie az adatokon. Sajnos ez csak bizonyos mûveletek esetében mûködik. Amikor nagyobb di- menziószámú mátrixokkal dolgozunk, gyakran kapunk nehe- zen olvasható és érthetõ kódot. A ciklusképzés viszont éppen

az a terület, amiben a C igencsak jeleskedik – mutatómûvele- © Kiskapu Kft. Minden jog fenntartva 1. kép tekkel végiglépkedni egy mátrixon (amennyiben nagy adathal- Ezen a fotón kísérleti összeállításunkat láthatjuk, ahol a valós mazokkal dolgozunk) hihetetlenül hatékony és gyakran a visszajelzésû agy–számítógép-csatolófelület kifejlesztését célzó legérthetõbb módszer. A Matlab-kódok C-optimalizálásakor kísérleteket végezzük. A három nagy megjelenítõn keresztül tökéletesen a legtöbb energiát a beágyazott ciklusszerkezetek egyszerûsí- irányítani tudjuk, hogy az alany mit láthasson látóterületének tésébe kell fektetnünk. legnagyobb részén. Az összes számfeldolgozó és megjelenítõ program Egyéb módszerek, amelyek segítségével megnövelhetjük házon belül készült, és Linux alatt fut a Matlab hatékonyságát:

1. Minden tömböt, még a kisebb méretû tömböket is, értékadás elõtt a zeros() függvény segítségével elõre foglaljunk le, és ne hagyjuk, hogy a Matlab az értékadás során egy már létezõ tömbhöz adatokat rendeljen. 2. Ahogy azt a Matlab leírásában is olvashatjuk, parancsfájlok (scripts) helyett minden kódunkat függvényekben érdemes tárolni. Ezáltal két–háromszoros sebességnövekedést érhetünk el. 3. Szervezzük az adatainkat úgy, hogy a mátrixmûveletek oszlopcentrikus módon hajtódjanak végre. A Matlab Fortran-stílusban tárolja a tömböket, azaz a mátrixok oszlo- pai folytonos területet foglalnak el a memóriában. Ez C alatt pont fordítva mûködik: itt a memóriában a mátrixok sorai helyezkednek el folytonosan. Amennyiben valamilyen adathalmazon szeretnénk egy függvényt végrehajtani, az adatokat oszlopban, és ne egy mátrix sorában tároljuk. Lehet, hogy ez teljesen értelmetlen és furcsa számunkra, de úgy tûnik, akad valami haszna. 1. ábra 4. Próbáljuk meg elkerülni a belsõ típusátalakításokat, Az ábrán az mcERP algoritmus példakimenetét mutatjuk be, amelyek idõrõl idõre megtörténnek. Ez is egy olyan példa, ahol fejtetõ-elektródákból kiolvasott valós idejû potenciálból levezetett amire nincsen igazi bizonyítékom, de a Matlab általában alap-hullámalakok láthatók egy szimulált kísérleti folyamatban. nem kényszerít bennünket arra, hogy megadjuk a változók Minden egyes hullámforma számos, egyre pontosabbá váló Bayes-féle adattípusát, és néha igen könnyû olyan ciklust létrehozni, hullámforma-közelítési ciklus eredménye, ahol minden egyes ciklus amelybe implicit típusátalakítás kerül. Sokkal jobb megol- egy ütem alatt rengeteg számítást végez. Ezeket az eredményeket Matlab alatt hosszú órák alatt kapjuk meg, ugyanakkor a számítás dás, ha változóinkat az ismételt végrehajtás elõtt általános csak másodperceket, esetleg perceket vesz igénybe, ha az algoritmus adattípussá alakítjuk. Tulajdonképpen ez ugyanaz, mint egyes részeit C nyelven írjuk újra amit C vagy C++ nyelven tennénk, csak éppen nehezebb a helyes utat látni, mivel Matlab alatt a változók közvetle- nül szinte soha nem kapnak típust. Láthatjuk, hogy az ilyen típusú szerkezetek nem futnak túl gyorsan az értelmezõben, hiszen az a ciklusok futtatásakor Vessünk egy pillantást az mcERP algoritmus kódjának egy nem teljesít valami jól. Ugyanakkor a belsõ if utasítás miatt szeletkéjére (1. lista). Itt bemutatjuk a kódba ágyazott számos a kódot belsõ függvényhívás hozzáadása nélkül nem tudjuk ciklus egyikét. Az mcERP algoritmus Bayes-féle összetett bejá- vektorizálni – így ez a módszer nem sokat segít. Ezért aztán rásos (iteration) hullámformabecslésen alapul. Számos, az itt C-átalakításunkhoz ez a kód lesz az elsõdleges tesztalany. látható részlethez hasonló ciklus található a kódban, amiket Természetesen ettõl még nem baj, ha az algoritmusképzés többször le kell futtatni, hogy megfelelhessenek az adatban során a Matlabot is felhasználjuk, hiszen igen könnyen készít- fellelhetõ hullámformáknak. hetünk vele az 1. képhez hasonló látványos képeket. A MEX-

www.linuxvilag.hu 2003. augusztus 51 Szaktekintély

2. lista MEX-függvény

#include M = dim_array[0]; #include R = dim_array[1]; #include T = dim_array[2]; #include "mex.h" #include "pops.h" NsoFar = mxGetM(prhs[1]); void latcalc(double *x, double *erp, double *alpha, plhs[0] = double *tau, double *coupling, mxCreateDoubleMatrix(NsoFar, R, double *range, mxREAL); double *inresultlat, plhs[1] = double *inresulterp, mxCreateDoubleMatrix(NsoFar, T, int M, int R, mxREAL); int T, int NsoFar);

© Kiskapu Kft. Minden jog fenntartva void mexFunction(int nlhs, mxArray * plhs[], /*A tényleges munkát végzõ függvény int nrhs, const mxArray * meghívása*/ prhs[]) latcalc(mxGetPr(prhs[0]), { mxGetPr(prhs[1]), mxGetPr(prhs[2]), int M, R, T, NsoFar; mxGetPr(prhs[3]), const int *dim_array; mxGetPr(prhs[4]), mxGetPr(prhs[5]), if ((nrhs != 6) || (nlhs != 2)) mxGetPr(plhs[0]), mexErrMsgTxt("wrong # of args to mxGetPr(plhs[1]), c_mLAT"); M, R, T, NsoFar);

dim_array = mxGetDimensions(prhs[0]); }

függvénynek nevezett megoldást fogjuk használni. Ezzel a C-függvényeinket fordítani szeretnénk. Amennyiben szeret- módszerrel a belsõ mag gyors futásra lesz képes, ugyanakkor nénk hatékonnyá tenni, a következõket használhatjuk: megtartjuk a teljes algoritmus finomítását és vizsgálatát végzõ Matlab-részekhez kapcsolódó csatolófelületet. COPTIMFLAGS=´-O3 -funroll-loops -finline- functions´ C-környezet összeállítása Matlab alatt A MathWorks honlapján (lásd a Kapcsolódó címeket) igen (ami elég kíméletlen – úgyhogy legyünk óvatosak), illetve jelentõs mennyiségû leírást találunk, amit a cikk elolvasása bármilyen más tetszés szerinti kapcsolót is használhatunk. után nem árt, ha átnézegetünk, amennyiben komolyan MEX- Ha a fordításánál ezeket a kapcsolókat szeretnénk használni, függvényekkel szeretnénk foglalkozni. Ez a cikk az egyszerû- a MEX-et a -O kapcsolóval kell lefuttatnunk. Akárcsak a sítésre összpontosít, illetve néhány lényeges pontot emel ki, make-fájlok esetében, szúrjuk be ide azokat a fejléckönyvtára- amelyek segítenek életet lehelni a dolgokba. kat, amelyeket a CFLAGS végéhez szeretnénk hozzácsapni: Ha Linux alatt szeretnénk MEX-függvényeket fejleszteni, térjünk vissza minden jó forrásához, a parancssorhoz, és -I/a/fejléc/mappa/útvonala gépeljük be a mex start utasítást. Ha ez nem mûködne, a Matlab telepítési könyvtárában keressük meg a MEX-parancs- A befûzendõ programkönyvtárakat így jelöljük: fájlt. Elképzelhetõ, hogy elérési utunkban rendszergazdánk csak a futtatható Matlab-állományra készített hivatkozást. -l[lib-név] A MEX futtatása során kiválaszthatjuk a fordítónkat. Hogy kihasználhassuk a késõbbiekben ismertetett fordítófüggõ és: egyszerûsítési lehetõségeket, jobb, ha a Matlab beépített LCC rendszere helyett inkább a GCC-t használjuk. A MEX ezután -L/a/programkönyvtár/mappa/útvonala létrehozza a ~/.matlab/R12/mexopts.sh állományt, amit akkor használ fel, amikor a MEX-eszközzel külsõ kódot fordítunk Ezek az LDFLAGS végére kerülnek. a Matlabhez. Hasznos és tanulságos belenézni a mexopts.sh Ha ezzel megvagyunk, készítsünk egy könyvtárat, ahol majd állományba felület/fordító párosunk megfelelõ szakasza alatt. a MEX-szel fordítandó C-fájljainkat tartjuk. Nem javaslom, x86 Linux/GCC használata esetén nézzük át a fõ elágazás hogy C alapú és Matlab alapú kódjainkat azonos könyvtárban glnx86 szakaszát. Minden változtatás, amit ezen a szakaszon tároljuk. Ezt a könyvtárat, vagy az általunk készített harmadik kívül végzünk el, semmilyen hatással sem lesz a kódfordítás eredmény- (build) könyvtárat adjuk a Matlab-környezet elérési menetére. Helyezzünk ide azokat a kapcsolókat, amelyekkel útjához. Most már készen állunk a kód létrehozására.

52 Linuxvilág Szaktekintély

Hogyan írjunk C-kódot Matlab alatt? a Matlab-környezetbõl egyszerûen a c_mLAT() függvénnyel Mindenekelõtt gondoljuk át, milyen céljaink vannak az használhatom. Remek kis rendszer. egyszerûsítéssel, illetve hogy programunk mely részei A dolgok akkor kezdenek egy kicsit bonyolultabbá válni, nyerhetnek a legtöbbet azáltal, ha C nyelven újraírjuk õket. amikor adatokat szeretnénk át- és visszaadni a Matlab és a Mivel a C elsõsorban a ciklusok értelmezése terén lényegesen C között. A mexFunction tulajdonságai (argumentum) jobb a Matlabnál, logikusnak tûnik, ha végignézzük a közt két duplamutatót vehetünk észre. A *plhs[] a függ- kódunkat, és kikeressük, hol alkalmaztunk jelentõs mennyi- vény visszatérési értékeire mutat (a Matlab-függvényeknek ségû adattal dolgozó ciklusokat. Nemigen éri meg újrakó- több visszatérési értékük is lehet), a *prhs[] pedig a bemenõ dolni valamit, ami mindössze háromszor hajtódik végre, értékeket tartalmazza. A bemenõ adatok és a visszatérési de ha például egy 500×500×500 egységes térben lépkedünk értékek számát az nlhs és az nrhs értékekben szintén átad- végig minden egyes voxelen, a C-kód rengeteg megtakarítást hatjuk. A mexFuntion() függvényen belül az jelenthet. Külön figyelmet érdemelnek a beágyazott ciklu- mxCreateDoubleMatrix() függvénnyel kell lefoglalnunk sokban található egyszerû mûveletek, ilyeneket az 1. lista a visszaadott mátrixok memóriahelyét, amennyiben helyesen kódrészletében is láthattunk. Ami összetett mûveleteket akarjuk õket a Matlab-környezetnek visszaadni. Az mx-függ- végez egy beágyazott ciklusban – azaz amit láthatóan csak vények a Matlab-környezetben készítenek memóriaterületet és nagyon nehezen tudnánk magunktól elkészíteni, vagy nem a Matlab memóriakezelõje kezeli õket, így az mx-függvények találunk hozzá egy harmadik fél által készített program- által foglalt területek felszabadításával nem kell foglalkoznunk.

könyvtárat –, az valószínûleg nem lesz jó kiindulási pont A mex szócskával kezdõdõ függvények a Matlab-környezetben © Kiskapu Kft. Minden jog fenntartva az egyszerûsítéshez. A Matlab-függvényeket C-kódból is futnak le; a mexCallMATLAB() függvénnyel például tetszõ- meg tudjuk hívni, de ezzel nyilvánvaló módon nem sokat leges Matlab-függvényt hívhatunk meg a programunkból. javítottunk a végrehajtási idõn. A mexFunction() függvényünk belsejébõl a kimenet lefog- A C MEX-állományok készítését általában azzal kezdjük, lalása után meghívhatjuk a lényegi munkát végzõ függvé- hogy az algoritmusunk valamelyik kódblokkját függvényesít- nyünket, formára szabhatjuk a bemenetet, és például ellenõ- jük, esetleg egy már korábban elkészült függvényt jelölnünk rizhetjük az értékeket. ki egyszerûsítésre. Ha ez megvan, eljött az ideje, hogy elké- A Matlab-leírás sajnos nem foglalkozik egy, a C-programozók szítsük a függvény C-változatát. A módszer a következõ: hoz- számára igen kiábrándító nehézséggel, nevezetesen azzal, zuk létre az általános Matlab-csatolófelület-függvényt, majd hogy a Matlab az adatait oszlopcentrikus formában tárolja. a tényleges munkát végzõ lényegi függvényt. A 2. listában Ez különösen bosszantó lehet, hiszen amikor végiglépkedünk egy ilyen MEX-függvényre láthatunk példát. Az itt meghívott a többdimenziós bemeneti mátrixokon, nyilván a könnyen lényegi függvény az 1. listában látható Matlab-fájlhoz tar- érthetõ mutatóaritmetikát szeretnénk használni. Viszont meg- tozik, és a Linux Journal FTP-lapján az  ftp.ssc.com/pub/lj/ lehetõsen kiábrándító lehet, és hibalehetõségeket rejthet magá- issue110/6722.tgz címen. ban, ha nekünk kell kitalálnunk, hogy ciklusonként milyen A mexFunction() a MEX-fájlprogramozás világában messzire kell ugranunk és így tovább. Amennyire én látom, olyasmi, mint C-ben a main(). Amikor Matlab alól meg- három megoldás létezik: hívjuk a függvényünket, ez a függvény fog elindulni. Függvényünk tényleges nevét a lefordított .c-állományok 1. Számoljuk ki magunk, hogy ciklusonként mekkora lépé- neve határozza meg, pontosabban általában a MEX-nek seket kell megtennünk, és tartsuk észben. Ez megoldha- fordításkor elsõként átadott .c-állomány neve. Linux x86 tónak tûnik, és talán a legjobb megoldás, de három- vagy felületen a MEX-fájlok kiterjesztése .mexglx. Ha a Matlabet több dimenziós mátrixok esetében kétségtelenül komoly Linux x86-felületen futtatjuk, a Matlab ugyanúgy és ugyan- fejfájást okoz. azon az elérési úton keresi a .mexglx-állományokat, mintha 2. Formázzuk újra a kódot, mielõtt belépnénk a MEX- a hagyományos .m-fájlokat keresné, így az .mexglx- és függvénybe, hogy a C nyelvnek megfelelõen legyen .m-állományok felcserélhetõk. Ügyes módszer a Matlab és szervezve. Igaz, ez Matlab alatt igen költséges lehet, az egyszerûsített kód közötti váltásra, ha megváltoztatjuk a és valószínûleg nem árt, ha van egy helyettesítõ példá- Matlab keresési útvonalát. Én például a c_mLAT.c állományt nyunk az eredetibõl. c_mLAT.mexglx fájllá fordítottam, majd a lefordított kódot 3. Tegyük azt, amit én is tettem, és készítsünk makrókat vagy

 makrószerû elemeket, amelyekkel a Matlab-tömböket elérhetjük. Ez lassabb ugyan, mint végiglépkedni a tömbö- KAPCSOLÓDÓ CÍMEK kön, és talán nem is tûnik túl elegáns megoldásnak. Tapasz- talataim szerint azonban általában igen gyors és a kódja jól olvasható. Én például egy pops.h nevû állományt készítet- The MathWorks, a Matlab készítõje tem, ami a következõ függvényt tartalmazza:  http://www.mathworks.com A Matlab dokumentációs forrása extern inline double  http://www.mathworks.com/access/helpdesk/help/ num3d (double *start, techdoc/matlab.shtml Válasszuk az External int rows, int cols, Interfaces/API pontot, majd innen a MEX-leírást. int x, int y, int z) A Matlabhoz hasonló GNU Octave szabad program { honlapja  http://www.octave.org return(*(start A NASA Ames-i Számítási Tudományos Részleg, + rows * cols * z a NASA Neuromérnöki Laboratórium bázisa + rows * y  http://ic.arc.nasa.gov + x)); }

www.linuxvilag.hu 2003. augusztus 53 Szaktekintély

A fenti részlet 3D Matlab-tömbformátumban adja vissza az mire a Matlab kihozza az eredményt, majd kiderül, hogy értékeket, amennyiben megadtuk a tömb címét, a sorok és az elgépeltünk egy apró bemeneti értéket. Nos, az ilyesmit oszlopok számát, valamint a lekért adat xyz helyzetét. Kicsit elkerülendõ a kézzel egyszerûsített kódrészletek igencsak talán esetlen, de azért használható. A kódoptimalizálás során hasznosak lehetnek, ha algoritmusunkat célszerûen szeret- ez a kódrészlet a programban ugyanúgy beszúródik, mint az nénk használni. elõfeldolgozó makrók. Makrókat is alkalmazhatunk, de én ezt a módszert sokkal könnyebben használhatónak és nyomon Irodalomjegyzék követhetõnek találtam. Szerencsére az, hogy a ciklusokat C-ben Shah, A. S.-Knuth, K. H.-Truccolo, W. A.-Ding, M.-Bressler, készítjük el, messze többet nyom a latban, mint tömbelérési S. L.-Schroeder, C. E.: A Bayesian approach to estimating módszerünk viszonylag kis vesztesége. coupling between neural components: evaluation of the Egyéb tekintetben a MEX-fájlok készítése nem túl bonyolult multiple component event-related potential (mcERP) algo- feladat. Amikor eljön a fordítás ideje, a MEX-programot azok- rithm. Bayesian Inference and Maximum Entropy Methods in kal a C-fájlokkal futtassuk, amelyeket le szeretnénk fordítani. Science and Engineering: 22nd International Workshop on A MathWorks weblapján megtaláljuk a MEX-fordítási lehetõ- Bayesian Inference and Maximum Entropy Methods in Science ségek listáját. Miután az X.c Y.c Z.c fájlokat lefordítottuk, egy and Engineering, C. Williams, American Institute of Physics, X.mexglx állományt kapunk, amit aztán (amennyiben az elérési Melville, New York, 2003 utunkban található) a Matlab parancssorából X() néven

© Kiskapu Kft. Minden jog fenntartva használhatunk. Linux Journal 2003. június, 110. szám Mostantól kezdve kódunk egyre nagyobb és nagyobb részeit írhatjuk át C-be. Amikor aztán eljön a teljes C-megvalósítás ideje, a külsõ Matlab-kód átalakítására gyakran megéri a Sam Clanton Matlab C-exportálási képességét használni, hiszen a lényeges Jelenleg MD/PhD-tanuló a Pittsburgh/Carnegie részeket korábban már amúgy is egyszerûsítettük. Amennyiben Mellon Egyetemen, kapcsolatot tart fenn a NASA- a dolgok még mindig nem elég gyorsak, érdemes lehet a külsõ val és a kaliforniai Mountain View-i QSS Corpora- függvényt újraírni, hogy a memóriát C-barát módon kezelje. tion Ames Kutatóközponttal. Idejét biológiai jelfel- Ezáltal felgyorsíthatjuk a belsõ C-kód ciklusait, hiszen a töm- dolgozási feladatok megoldásával, számítógépes böket egyszerûsített mutatólépegetéssel érhetjük el. látási és orvosi robotikai vizsgálatokkal tölti, és nagyon érdekli Általában véve jelentõsen felgyorsíthatjuk a dolgokat, ha a természetben létrejött rendszerekhez hasonló informatikai Matlab nyelven fejlesztünk és Matlab-prototípusokat haszná- rendszerek összeállítása. Sam idejének javát leveleinek átnézé- lunk. Elõfordulhat azonban, hogy éjszakákat kell várnunk, sével tölti, és túl sok kávét iszik.

54 Linuxvilág Szaktekintély

Animációkészítés a Blenderrel

Ebben a részben a Blender kiterjedt animációs lehetõségeivel fogunk foglalkozni.

árom módszert szeretnék piros színnel jelölt mezõben. Helyezzük H bemutatni, és most is az egy- el a gömböt a síklapon, majd az elõzõ- szerûbbtõl haladunk a bonyo- vel megegyezõ típussal ismét hozzunk lultabb megoldások felé. Itt már belekós- létre egy kulcsot. A pillanatnyi kép- tolunk a karakteranimáció alapelemeibe, kockát állítsuk például 12-re, és a gömb hogy a késõbbiekben ne okozzon gondot függõleges irányú átméretezése után az inverz kinematika lényegének és készítsünk újabb kulcskockát. A 14-es beállítási lehetõségeinek a megértése. képkockán a gömb ismét legyen eredeti

Mielõtt azonban rátérnénk e hónap 1. kép Az animáció beállításai méretû, és itt is készítsünk egy kulcsot © Kiskapu Kft. Minden jog fenntartva valódi témájára, az elõzõ részhez kap- az I billentyûvel. Ezután a gömböt csolódóan egy ötlettel szeretném támo- beírjuk a kívánt értéket (1. kép). mozgassuk ismét a síklap fölé, de most gatni a felületi mintázatok leendõ Miután ezeket a beállításokat elvégez- már ne emeljük ugyanolyan magasra, mestereit. tük, ideje meghatároznunk a kulcs- hiszen a pattogás során nem képes Amennyiben már van némi elképze- kockákat. Egy-egy kulcsot minden eset- ugyanolyan magasra emelkedni. Ez lésünk a tárgy mintázatáról és arról is, ben az I billentyûvel hozhatunk létre, legyen tehát a huszadik képkocka, majd hogyan fogjuk a mintázatot a tárgyra a billentyû hatására megjelenõ menü- hozzunk létre egy kulcsot, és a huszon- feszíteni, azt kézzel megrajzolhatjuk, bõl választva ki a megfelelõ kulcs- hatodik képkockára lépve gömbünk szépen kifesthetjük, majd egy képolva- típust. A következõ választási lehetõ- megint a síklappal érintkezzen. Itt ismét sóval (scanner) újradigitalizálva nagy- ségeink vannak egy-egy tárgyra vonat- hozzunk létre egy kulcskockát. Ismétel- mértékben megkönnyíthetjük a mun- kozóan: a Loc alkalmazásával csak a jük meg a függõleges méretcsökkenést kánkat. Természetesen a dolog fordítva tárgy helyét használjuk kulcsként, a és növekedést oly módon, hogy a leg- is mûködhet, vagyis miután az üres Rot alkalmazásával a tárgy elforgatá- kisebb méret a huszonnyolcadik kép- képen elhelyeztük a háromszögeket, sának értékét, míg a Size a méretet kockánál legyen, az eredeti méret a képet kinyomtatjuk, kifestjük, majd jelenti. A következõ két menüpont pedig a harmincadiknál. Ne felejtsük ismét beolvassuk, és ezt a színes képet az elõzõk kombinációjának tekinthetõ, el a kulcsokat is meghatározni! A har- használjuk mintázatként. Ezek egy- míg a Layer hatására azt tárolhatjuk madik emelkedés ismét kisebb magas- szerû ötletek, de úgy tûnt, hogy a kulcsként, hogy a tárgy melyik rétegen ságú legyen, mint az elõzõ volt, is- mintázatok elkészítése könnyebben található. Ezt az utóbbi lehetõséget mételjük meg a méretcsökkenést és megy kézi eszközökkel, mintha egérrel használhatjuk arra, hogy az animáció -növekedést a kulcskockák létrehozá- kellene pontosan elhelyezni a meg- során egy tárgyat hirtelen eltüntessünk sával együtt. Az utolsó méretnöve- felelõ árnyalatokat, és a különbözõ vagy megjelenítsünk. kedés vége a negyvenkettedik képkocka idõben létrehozott színeket újra és Néhány szót szólnék a kulcskockák legyen. Ha mindezzel elkészültünk, újra egymáshoz igazítani. jelentõségérõl. A Blender – sok más aSHIFT-F6 billentyûkkel váltsuk át az Ennyi kiegészítés után térjünk vissza animációs programhoz hasonlóan – csak egyik nézetet az IPO Editor-ra. Ezt a eredeti témánkhoz, az animáció elké- a kulcskockák által meghatározott tulaj- nézetet úgy is megjeleníthetjük, hogy szítéséhez. A legegyszerûbb megoldás donságokat tárolja, majd a közbeesõ a nézet bal alsó sarkában látható ikon- a kulcskocka alapú animáció. Hozzunk értékeket közelítéssel (interpolációval) sorból kiválasztjuk azt az ikont, amit létre egy síklapot és felette egy gömböt számítja ki. A késõbbiekben látni fogjuk, a 2. képen az ötös számmal jelöltem meg. a már megtanult módon, azaz a Space hogy ezeket a közbensõ számításokat az Ha mindent jól csináltunk, akkor ebben billentyû hatására megjelenõ menü úgynevezett IPO Editor-ban pontosan a nézetben a 2. képen láthatóhoz ha- segítségével, majd az animáció képkoc- szabályozhatjuk. sonló görbéket találunk. Ez a szerkesztõ káinak számát állítsuk 42-re. Az animá- Tehát a következõ lépés az lesz, hogy alkalmas arra, hogy elvégezzük a kulcs- ció idõtartamának beállításához az létrehozzuk a kulcsokat, és meghatá- kockák közötti értékek kiszámításának F10 billentyûvel kapcsoljunk a megje- rozzuk a köztes értékek kiszámításának finomabb beállítását és meghatározzuk lenítést szabályozó nézetre, ezután az a módját. Célunk egy pattogó labda a kiszámítás módját. A nézet jobb olda- 1. képen zöld színnel jelölt beállító- modellezése, most azonban csak a moz- lán látható a különbözõ színû görbék mezõbe írjuk be a képkockák számát. gásra fordítunk figyelmet, eltekintve jelentése. A középsõ egérgomb lenyom- Az animáció lejátszási idejét olyan az anyagtulajdonságok és mintázatok va tartása mellett az egérrel mozgat- módon számíthatjuk ki, hogy a kép- meghatározásától. Jelöljük ki a gömböt, hatjuk az éppen megjelenített területet, kockák számát elosztjuk a másodper- majd az I billentyûvel az elsõ képkoc- míg a CTRL billentyû lenyomva tartása cenként megjelenítendõ képek számá- kán hozzuk létre az elsõ kulcsot, és mellett a középsõ egérgombbal a nézet val, ami alapesetben huszonöt. Termé- a menübõl válasszuk ki a LocRotSize nagyítását változtathatjuk függõleges szetesen ezt is beállíthatjuk, ha az elsõ pontot. Ezután a pillanatnyi képkockát és vízszintes irányban (2. kép). képen kék színnel keretezett mezõbe állítsuk például 10-re, az elsõ képen Az egyes görbéket itt is a jobb egér-

www.linuxvilag.hu 2003. augusztus 55 Szaktekintély

Elõször készítsünk el egy útvonalat a lévõ kapcsolókat a tengelyek Fõmenü-Add-Curve-Path menüpontok beállításához. Nem hagyhatjuk kiválasztásával, majd ezt pontszerkesztõ figyelmen kívül azt az igényt sem, ha módban formáljuk a kívánt alakra. valaki nem pontosan száz képkockát Ezután készítsük el, vagy töltsük be szán arra, hogy egy tárgy végighaladjon a tárgyat, ami majd ezen a görbén fog a kijelölt úton. Szerencsére az animációs végighaladni. Ezek után már nincs más nézetben ezt is beállíthatjuk, miután a dolgunk, mint a CTRL-P billentyûk révén 3. képen piros kerettel jelölt beállító- tudatni a Blenderrel, hogy ez az útvonal mezõben meghatározzuk a kívánt kép- lesz a tárgy szülõobjektuma, majd az kockák számát. 2. kép Az animáció finomhangolása esetleges kezdõpozíció-eltérést a ALT-O Felmerülhet a kérdés, hogy hogyan billentyûk használatával el kell tüntet- készíthetünk olyan mozgást, ami nem gombbal választhatjuk ki, majd a TAB nünk. Így már a tárgy kiinduló helyzete a teljes animáció kezdetén kezdõdik, billentyûvel pontszerkesztõ módba megegyezik az útvonal kezdõpontjával. hanem a folyamat közben indul el. válthatunk át, ahol a görbe alakját pon- A szülõ–gyermek-viszony meghatáro- Ezt úgy oldottam meg, hogy amíg a tosan beállíthatjuk. Pontszerkesztõ zásakor vigyázzunk, hogy a többszörös tárgynak nem volt szabad mozognia, módban az egész pontot mozgathatjuk kijelöléskor a második legyen a szülõ, addig egy másik rétegen helyeztem el,

© Kiskapu Kft. Minden jog fenntartva és elforgathatjuk, de kijelölhetjük az ebben az esetben a görbe, különben a és abba a pozícióba, ahol a mozgás egyik vagy a másik végét is – ezzel a tárgy sehová sem megy az animáció görbe adott szakaszának a meredekségét lejátszásakor. E viszony meghatározásá- állíthatjuk be. Itt tehát állítsuk be pon- ra szolgál a CTRL-P billentyûkombináció, tosan a csillapodó mozgást, és kapcsol- míg megszüntetése az ALT-P billentyûk- junk vissza szerkesztõnézetbe. Ekkor kel lehetséges. A görbe követésének már látható valamiféle pattogó labda, módját szintén szabályozhatjuk a Blen- amit az ALT-A billentyûkkel mozgásra derben. Ehhez a F7 billentyûvel kapcsol- késztethetünk. Ez a billentyû szolgál az junk az animációs nézetbe, és tekintsük animáció elõnézetének megjelenítésére. meg az alább látható 3. képet. Térjünk vissza az elõzõ nézetbe, hiszen ahogyan a 2. képen is látható, akad még néhány érdekes beállítási lehetõség a 4. kép A kívánatos henger mozgás leírására. Meghatározhatjuk, hogy az egyes kulcskockák között a Blender milyen módon számítsa ki a köztes értékeket. A 2. képen piros 1-es számmal jelöltem az alapértelmezett beállítást, ami szerint a Blender a kulcs- kockák között lineáris interpolációval 3. kép Az útvonal követése számítja ki a közbeesõ értékeket. A 2-es számmal jelölt ikon használatával a Természetesen ezt a nézetet az ikonsor- Blender az adott kulcs által meghatáro- ból is kiválaszthatjuk, ezt az ikont a 5. kép Pontcsoportok létrehozása zott értéket kiterjeszti, vagyis a görbe képen sárga kerettel jelöltem. Fontos meredeksége nem tér majd el a kulcs- még meghatároznunk, hogy az útvonal megkezdése elõtt lennie kellett, egy kocka által meghatározott meredek- követése során a tárgynak melyik ten- másolatot helyeztem el róla. Amikor ségtõl. A 3-as számmal jelölt ikonnal gelye nézzen elõre és melyik felfelé. a tárgy mozgása elkezdõdött, akkor az a Blender ismételni fogja a meglévõ Erre szolgálnak a képen kék kerettel álló másolatot helyeztem át egy nem kulcskockák közötti görbeszakaszt, míg jelölt gombok. A gombok bal oldali látható rétegre, a mozgó tárgyat pedig a négyes számmal jelölt ikon az elõzõ része az elõre nézõ tengelyt határozza a látható rétegen jelenítettem meg. Ez kettõ kombinációja, vagyis az ismétlé- meg, míg tõlük jobbra találhatóak a az egyszerû példa jól megvilágítja, seket a Blender a megadott szakasz felfelé mutató tengelyt meghatározó hogyan használható a Layer menüpont kezdõ- és végpontjához illeszti. kapcsolók. Természeten más módon is a kulcskockák létrehozásakor. Természetesen nemcsak tárgyakhoz ren- létrehozhatunk útvonalat a programban. Ezek alapján, úgy gondolom, elég össze- delhetünk kulcsokat, hanem az anyag- Miután egy tetszõleges görbét létrehoz- tett animációkat készíthetünk a prog- tulajdonságokhoz is, így elérhetjük, tunk, azt az animációs nézetben útvo- rammal, tehát a következõkben egy hogy az animáció során egy tárgy színe nallá alakíthatjuk. A 3. képen zöld szín- rövid bevezetés keretében ismerkedjünk vagy más tulajdonsága is megváltozzon. nel bekeretezett területen található a meg a karakteranimáció alapjaival. Ezeknek a lehetõségeknek könnyedén CurvePath kapcsoló, amivel a kijelölt Karakteranimáció készítése során vala- a nyomára bukkanhatunk, ha az anyag- görbét útvonallá alakíthatjuk át. E kap- milyen mozgó figurát készítünk – õ lesz tulajdonságok nézetében a I billentyût csoló mellett kapott helyet a Curve- a karakter –, majd ezt a figurát különféle alkalmazzuk. Follow beállító mezõ, amit ha bekap- mozdulatsorok elvégzésre tesszük Térjünk át a következõ megoldásra, csolunk, akkor az útvonalat követõ tárgy képessé. Hamarosan csontalapú animá- amivel egy tárgyat rávehetünk arra, tengelye idomul majd az út görbüle- ciót hozunk létre, amiben a tárgy for- hogy egy elõre meghatározott útvona- téhez. Ezért tartottam fontosnak az máját a belsejében elhelyezett csontok lon haladjon végig. elõbbiekben megemlíteni a kék keretben mozgása fogja befolyásolni. Kezdetben

56 Linuxvilág Szaktekintély

mazkodik a megváltozott helyzethez. Élõ példaként a saját lábunk szolgálhat. SHIFT-F6 Animációs görbék Képzeljük el, hogy olyan módon ALT-A Az animáció elõzetes nézete emeljük fel lábfejünket, hogy az egyik ALT-O A kezdeti helyzetkülönbség eltávolítása lábujjunkat megfogjuk. Ahogyan a lábfej elmozdul, a mozgást korlátozza CTRL-P Szülõ–gyermek-viszony létrehozása és befolyásolja a lábszár és a comb ALT-P Szülõ–gyermek-viszony megszüntetése hosszúsága és hajlékonysága. Egy F7 Animációs beállítások (például útvonal követése) másik példa lehet egy lánc lengése, SHIFT-S Igazítás menü amikor minden láncszem egyedileg járul hozzá a lánc mozgásához, és CTRL-TAB A csontváz helyzetének meghatározása befolyásolja azt. Végül az összefoglaló táblázatban látha- tók az e részben használt és megjegy- hozzunk létre egy hengert a Fõmenü- toztathatjuk. Ennek a módnak a neve zésre érdemes billentyûkombinációk, Add-Mesh-Cylinder menüpontok kivá- a Blender szóhasználatában pose-mode, a továbbiakban pedig sikeres animáció- lasztásával. Ezután kapcsoljunk abba vagyis helyzetmód, és a CTRL-TAB bil- készítést kívánok minden kedves

a nézetbe, ahol a henger oldalnézetben lentyûkkel érhetõ el. Miután pontosan olvasómnak. © Kiskapu Kft. Minden jog fenntartva látszik, és lépjünk be a pontszerkesztõ elhelyeztük a pontokat, ideje lesz meg- módba. Jelöljük ki a henger egyik végén határozni, hogyan hassanak a tárgyra. Fábián Zoltán található pontokat, és az F9 billentyûvel Jelöljük ki a hengert, majd váltsunk ([email protected], váltsunk át a szerkesztõ nézetbe. Itt pontszerkesztõ módba. Itt úgynevezett [email protected]) alkalmazzuk az Extrude mûveletet, és pontcsoportokat kell létrehoznunk, amit 25 éves, jelenleg progra- a kijelölt pontokat húzzuk el oldalirány- az 5. képen látható vezérlõelemekkel mozóként dolgozik. Szabad- ba, majd szüntessük meg a kijelölést. tehetünk meg. Az F9 billentyûvel vala- idejében szívesen kirándul, Ezt követõen jelöljük ki a henger másik melyik nézetet váltsuk át a szerkesztõ- túrázik. Emellett szeret rajzolni, érdekli a végén lévõ pontokat, és ismételten alkal- módba, majd keressük meg az 5. képen 3D grafika és a Linuxszal kapcsolatban mazzuk az elõbbi kiterjesztést. Így, ha pirossal jelölt elemeket. Jelöljük ki a minden olyan program és programnyelv, mindent jól ment, most a henger négy henger egyik végének a pontjait, és a amit még nem ismer vagy nem próbált ki. kört összekapcsoló síklapokból áll, képen látható New gombot használva ahogyan az a 4. képen is látható. hozzunk létre egy új pontcsoportot. Ezután lépjünk ki a pontszerkesztõ Kereszteljük el „Bone” névre, vagyis a módból, és hozzunk létre egy csontvá- Weight mezõ feletti névmezõbe írjuk be zat, ami szintén látható a 4. képen. ezt a szócskát. A kiválasztott az Assign A háromdimenziós kurzort állítsuk gombbal pontokat rendeljük hozzá a a henger egyik végéhez. Pontosabb iga- csoporthoz, majd szüntessük meg a zítást érhetünk el, ha a hengert kijelöl- kijelölést. Ismételjük meg ezeket a mû- jük, pontszerkesztõ módba váltunk át, veleteket a többi hengerszeletre is, ám a és a henger egyik végén található kö- továbbiakat Bone.001, Bone.002, Bone.003 zéppontot kijelölve, a SHIFT-S billentyûk nevekkel illessük. Ezzel tulajdonképpen hatására megjelenõ menübõl a legalsó elkészültünk munkánk legbonyolultabb pontot kiválasztva a kurzort pontosan részével. Most már csupán azt kell a a kiválasztott ponthoz igazítjuk. Az program tudtára adni, hogy ehhez a elõbb említett menü alkalmas különféle tárgyhoz mely csontok tartoznak. Kap- igazítások elvégzésére. A Blender a csoljunk tárgyszerkesztõ módba, majd Sel->Grid hatására a kiválasztott objek- jelöljük ki elõször a hengert, azután a tumot a rácshoz igazítja, a Sel->Curs csontokat. A CTRL-P billentyûk hatására révén a tárgy a kurzorhoz igazodik, megjelenõ menübõl válasszuk ki a Use a Curs->Grid hatására pedig a kurzor Armature pontot. Így a csontokat igazodik a rácshoz, míg a Curs->Sel hozzárendeltük a tárgyhoz, ezután ha alkalmas arra, hogy a kurzort a tárgyhoz valamelyik csontot helyzetmódban igazítsuk. Miután így meghatároztuk a elforgatjuk, a tárgy alakja követni fogja csontváz kiindulópontját, hozzuk létre a változást. A hatás mértékét a pont- a mozgatást segítõ csontokat. Alkalmaz- csoportok létrehozásánál látható Weight zuk a Fõmenü-Add-Armature menüpon- érték határozza meg. tokat, majd az egyes csontokat helyez- A következõ hónapban az inverz kine- zük el a 4. képen látható helyeken. matikával fogunk foglalkozni, amirõl Tudnunk kell, hogy a csontoknak kétféle elõzetesen annyit érdemes tudni, hogy szerkesztõmódját különböztetjük meg. amikor ilyen megoldással mozgatunk Az egyik, amiben a csuklópontokat egymáshoz kapcsolódó tárgyakat, mozgathatjuk, a szokott módon, a TAB akkor az összetett, egymáshoz kapcsolt billentyûvel kapcsolhatjuk be, míg a részek közül elegendõ csak az egyiket másik módban a csontok helyzetét vál- mozgatni, a többi tárgy pedig alkal-

www.linuxvilag.hu 2003. augusztus 57 Szaktekintély

Smart

Napjaink merevlemezeinek a minõsége hagy némi kívánnivalót maga után. Vajon elõrejelezhetõ-e a meghibásodásuk, hogy megelõzhessük az adatvesztést?

tapasztalatok azt mutatják, hogy sokkal nagyobb smart és a hddtemp), illetve azt, hogy miként is lehet õket A annak az esélye, hogy az újonnan vásárolt merev- munkára fogni. A programok leírása Debian GNU/Linux alatt lemez az elsõ 1–2 évben tönkremegy, mint korábban. készült, de csomagformában más nagyobb terjesztésekben (Elsõsorban IDE-merevlemezekre gondolok, természetesen is megtalálhatók, illetve forráskódból is feltehetõk. közöttük is akadnak kivételek.) Ennek oka lehet a fogyasztói Mielõtt belevágnánk a programok telepítésébe, érdemes társadalom szemlélete: már nem is éri meg minõségi termé- ellenõrizni, hogy a BIOS-ban engedélyezve van-e a keket elõállítani, hiszen úgyis elavul. Esetleg a túl gyors techni- Smart használata. Nem minden BIOS-ban található ilyen

© Kiskapu Kft. Minden jog fenntartva kai fejlõdés és a rohamléptekkel haladó fejlesztések, amelyben beállítási lehetõség. a minõségbiztosítás már nem kap akkora szerepet, mint a ha- gyományos iparágakban. Még számos okot felsorolhatnánk, és ide-smart mérlegelni lehetne, hogy melyik a jobb: olcsón rossz minõségû Egy nagyon egyszerû, Smartot használó program. Az ide- terméket vásárolni, vagy drágán jót, illetve hol a kettõ között smart /dev/hda parancs hatására az adott eszközrõl kilis- a határ. Nem az én feladatom ezt eldönteni, de annál inkább tázza az adatokat, ahogy az 1. listán is látható. A kimenet az, hogy megkeressem, mit lehet ellene tenni. Mivel ez a folya- értelmezése nagyon egyszerû: ha a Threshold eléri a mat a tömeggyártás velejárója, és valószínûleg ez az irányzat Value értékét, az adott tulajdonság Passed-ról Failed-re továbbél, más oldalról kell megközelíteni a kérdést. vált, ekkor érdemes lecserélni a merevlemezt. A Threshold Az utóbbi években vásárolt merevlemezekben nagy eséllyel egy elõre meghatározott érték, ami az adott típusra jellemzõ. fellelhetõ a Smart (Self-Monitoring, Analysis and Reporting A Prefailure közeli meghibásodást jelent, de ettõl még Technology), amely segíthet ebben. Hogy az adott típus akár évekig használni lehet. Az Id jelentése szintén típusfüggõ, támogatja-e, arról bõvebb tájékoztatást a gyártó weblapján a smart-suite csomag ismer néhányat közülük. Tábláza- találhatunk, de már az 5–6 éve vett Quantum merevleme- tunkban (50. CD Magazin/Smart könyvtára) a Smart által meg- zemben is ott csücsül. határozott Id-hez tartozó jelentések találhatók. A többi Id A merevlemezek meghibásodásának okait két részre lehet jelentése általában gyártónként különbözik. A Kapcsolódó címek osztani: vannak elõrejelezhetõ (predicted), és nem elõrejelez- között további érdekességeket találhatunk róla. hetõ hibák (non-predicted). Az utóbbiak közé tartoznak az Ez a program kétféle tesztet ismer: online és offline. Az állandó ütõdésbõl, túláramból fakadó hibák, ezek ellen odafigyeléssel elérésû próbákat a merevlemez folyamatosan, használat köz- és különbözõ berendezésekkel lehet védekezni. A megjósol- ben végzi el. Offline-próbát magunknak kell elindítani, például ható hibák közé tartozik például az olvasó/író fej repülõmagas- a következõ paranccsal: ságának a változása, a hibás írás, illetve az olvasás gyakorisága, a pozícionálási hibák, illetve bizonyos szempontból a hõmér- ide-smart -i /dev/hda séklet is. Ilyen jellegû hibákra a Smart is képes figyelni. Mûködése leegyszerûsítve a következõképpen néz ki: az adott Ebben az esetben a próba azonnal elindul. Ha nem akarjuk állapothoz egy értéket (egy egész számot) rendel hozzá. Ahogy rögtön elindítani, csak amikor az eszköz tétlen, akkor a követ- romlik a merevlemez állapota, úgy nõ ez az érték. Ha elér egy kezõ parancsot adjuk ki: elõre meghatározott határt, ami felett a meghibásodás valószí- nûsége már elég nagy, akkor érdemes lecserélni. Ilyen esetek- ide-smart -1 /dev/hda ben sem „szól” róla a merevlemez, nekünk kell folyamatosan # ide-smart /dev/hda figyelni (lekérdezni), Id= 1 Status=41 {Prefailure OffLine} Value=100 Threshold= 20 Passed hogy az adatvesztést Id= 3 Status=39 {Prefailure Online } Value= 87 Threshold= 20 Passed elkerüljük. Természe- Id= 4 Status=50 {Advisory Online } Value= 96 Threshold= 8 Passed tesen ez a módszer sem Id= 5 Status=51 {Prefailure Online } Value=100 Threshold= 20 Passed képes minden meghi- Id= 7 Status=11 {Prefailure Online } Value=100 Threshold= 23 Passed básodást teljes bizton- Id= 9 Status=18 {Advisory Online } Value= 87 Threshold= 1 Passed sággal elõrejelezni, ebbõl Id= 11 Status=19 {Prefailure Online } Value=100 Threshold= 20 Passed kifolyólag nem he- Id= 12 Status=50 {Advisory Online } Value= 96 Threshold= 8 Passed lyettesítheti a rendszeres Id= 13 Status=11 {Prefailure Online } Value=100 Threshold= 23 Passed biztonsági mentést sem. Id= 199 Status=26 {Advisory Online } Value=200 Threshold= 0 Passed A cikk további részében OffLineStatus=2 {Completed}, AutoOffLine=No, OffLineTimeout=0 minutes néhány Smartot hasz- OffLineCapability=3 {Immediate Auto SuspendOnCmd} náló programot mutatok SmartRevision=6, CheckSum=189, SmartCapability=3 {SaveOnStandBy AutoSave} be (smart-suite, ide-

58 Linuxvilág Szaktekintély

# smartctl -v /dev/hda Vendor Specific SMART Attributes with Thresholds: Revision Number: 6 Attribute Flag Value Worst Threshold Raw Value ( 1)Raw Read Error Rate 0x0029 100 100 020 0 ( 3)Spin Up Time 0x0027 087 087 020 5000 ( 4)Start Stop Count 0x0032 096 09 008 2796 ( 5)Reallocated Sector Ct 0x0033 100 100 020 0 ( 7)Seek Error Rate 0x000b 100 100 023 0 ( 9)Power On Hours 0x0012 087 087 001 8974 ( 11)Calibration Retry Count 0x0013 100 100 020 0 ( 12)Power Cycle Count 0x0032 096 096 008 2740 ( 13)Read Soft Error Rate 0x000b 100 100 023 0 (199)UDMA CRC Error Count 0x001a 200 200 000 2

A súgóoldalakon további kapcsolókat is találni, de a fentiek írásomban (Linuxvilág 2002. november, 64. oldal) elmondottak © Kiskapu Kft. Minden jog fenntartva voltak a leglényegesebbek. alapján könnyen munkára is foghatók. smartsuite Tapasztalatok Az elõzõnél valamivel összetettebb programcsomag. Egy úgy- Eddig egyszer fordult elõ velem, hogy egy merevlemez külö- nevezett smartd démont tartalmaz, ami folyamatosan figyeli nösebb elõzmény nélkül hosszú idõ után meghibásodott. a merevlemezek (az IDE-t és SCSI-t egyaránt) állapotát, és a Az egyik tulajdonság az ide-smart szerint failed lett. rendszernaplóba (syslog) bejegyzéseket készít. Futtatása egysze- Lefuttattam rajta a x programot, de nem jelzett hibát. Másnap rûen a smartd paranccsal történik. A másik ebben a csomagban beszereztem egy új merevlemezt. A boltban azt mondták, található program a smartctl. Szintén megkülönböztet hogy az nekik nem elég, ha a Smart szerint már hibás, csak állandó elérésû és offline-próbát, és az eddigi legrosszabb érté- akkor cserélik be, ha hibás szektor (badblock) is van rajta. ket is le tudja kérdezni. Beállításai a teljesség igénye nélkül: Készítettem róla egy biztonsági mentést, majd futtattam rajta -c: ellenõrzi, hogy hibás-e a lemez. a read-write badblock próbát (badblocks -vn). Ez már több -v: az ide-smart kimenetéhez hasonló táblázatot listázza ki hibás szektort is jelzett. Ha tehát a Smart hibát jelez, általában (lásd a 2. listát), azzal a különbséggel, hogy az egyes Id-k csak néhány nap marad a meghibásodásig, így ilyenkor a jelentését is ismeri, de nem hibátlanul. Például elõfordul- lehetõ leghamarabb érdemes mindent menteni, és egy másik hat, hogy a bekapcsolt órák számának a tízszeresét írja ki. merevlemezt beszerezni. -e: engedélyezi a Smartot. -d: letiltja a Smartot. Összefoglalás -O: azonnal elindít egy állandó elérésû próbát. Egy korábbi cikkemben írtam SW-RAID-ról, amely ugyan -t: négyóránként offline-próbát indít; nem váltja ki a Smart használatát, de nagyon jól kombinálható -a: minden adatot megjelenít, amit le tud kérdezni a Smarttól. vele. Ha például két RAID-1-be kötött merevlemez közül az egyik a Smart szerint meg fog hibásodni, akkor elõre fel lehet hddtemp készülni a leállásra. A csomag, Debian Sarge-tól érhetõ el. A programon kívül Bár a merevlemezek minõsége nem javul, ezzel a módszerrel szükség lesz a hddtemp.db fájlra, amely adatokat tartalmaz a váratlan meghibásodásból származó adatvesztés valószínû- arról, hogy a különbözõ típusú merevlemezek hogyan mutat- sége mérsékelhetõ, és ennek köszönhetõen sok bosszúságtól ják a hõmérsékletet. A hddtemp.db (50. CD Magazin/Smart és idegeskedéstõl kímélhetjük meg magunkat. könyvtárában is megtalálható), de Google-lal gyorsan és egyszerûen rá lehet találni. Alapértelmezés szerint az /etc Kolcza Péter ([email protected]) könyvtárban keresi, de megadható a -f kapcsolóval is. Imádja a South Parkot. A Miskolci Egyetem Futtatása nagyon egyszerû, például: hddtemp /dev/hda informatika szakos hallgatója. Elvakult Linux- rajongó. Ha egyetemi elfoglaltságai engedik, A kimenet feldolgozása Linuxszal és rendszerépítéssel foglalkozik. Én a 4. listán (50. CD Magazin/Smart könyvtár) látható héj- programot használom arra, hogy figyelje, ki kell-e cserélnem  a merevlemezt. Nagyon egyszerû a mûködése: elektronikus levelet küld, ha egyes threshold értékek megközelítik a KAPCSOLÓDÓ CÍMEK value-t, illetve ha failed tulajdonságot fedez fel. Megjegy- zések alapján egyértelmûen testreszabható. Szükséges hozzá  http://www.santools.com/smartmon.html egy mûködõ MTA, ide-smart és perl. cron segítségével  http://www.ucsc.edu/currents/99-00/09-27/smart.html érdemes naponta vagy inkább óránként futtatni.  http://www.siguardian.com/products/siguardian/ Ha valakinek ez nem elég, és figyelemmel szeretné kísérni, on_line_help/about_s_m_a_r_t_technology.html hogyan romlik a merevlemez állapota, MRTG-vel gyönyörû  http://www.unisysworld.com/monthly/ grafikonokat lehet róla gyártani. CD-mellékletünkön pár héj- 2002/04/failure.shtml program megtalálható lesz hozzá, illetve az egyik korábbi

www.linuxvilag.hu 2003. augusztus 59 Dobbantó

Mentette már az e hetit?

datainkból egy példány nem példány. Két példány hogy bonyolítom egy kissé az adatmentési módszeremet. A fél példány, három példány „a” példány, és négynél Alapgondolatom nem új: lépcsõzetes mentésnek (incremental kezdõdik a biztonság… Mindig büszke voltam rá, backup) hívják már jó ideje. Elõször a teljes munkaterület hogy az adataim – aránylag – biztonságban vannak, tanítvá- mentése történik meg egyetlen tar gzip fájlba, majd minden nyaimnak is nemegyszer beszéltem errõl. további alkalommal csak az idõközben módosult állományokat Mind az otthoni, mind a munkahelyi számítógépemen mentem egy-egy újabb tgz-be. Ilyen módon, ha bármilyen ugyanarra a munkakörnyezetre van szükségem: ezt egy fiókba hibára fény derül, jó néhány mentett korábbi állapotom akad, (rack) tett kisebb merevlemez biztosítja, míg és sokkal nagyobb valószínûséggel találok ép példányt egy az operációs rendszer a ki nem vehetõ fontos, de tönkrement állományból. Természetesen a merevlemezen van, ami mellett azért rendelkezésemre álló hely véges, ezért egy ilyen

© Kiskapu Kft. Minden jog fenntartva marad még elég szabad hely ahhoz, sorozat tíz tagból áll, ezután egy új sorozat kezdõdik hogy a fiókban lévõ munkaadatok (teljes mentés, majd a megváltozott állományok). másodpéldánya elférjen. Amikor ez is eléri a tíz tagot, a következõ mentés Ablakos operációs rendszerû az elsõ sorozatot kezdi újra és így tovább. koromban az adatmentés igen A felfutás után tehát bármikor rendel- egyszerûen történt: a gép kezésemre áll legalább tíz mege- kikapcsolása elõtt egy kötegelt lõzõ állapot, legfeljebb húsz. feldolgozás kitakarította a A lépcsõzetességre való szemetet, majd a fiókban tekintettel a helyigény sem az úgynevezett archív bit tekinthetõ túlzottnak. felhasználásával a legu- Természetesen a tóbbi mentés óta megvál- mellékelt progra- tozott fájlokat igen köny- mocska nem nyedén (egyetlen xcopy általános csoda- utasítással) tükröztem az szer. Elsõ és operációs rendszer melletti talán legfon- szabad helyre. tosabb korlátja, Ezt a szokásomat a pingvin hogy a mentendõ fájlok listáját a legutóbbi módosítás dátuma sem változtatta meg, egészen addig, alapján állítja össze. A PC-k belsõ naptárára viszont semmilyen amíg… amíg elég látványosan rá nem döbbentem arra, garancia nincs… A lépcsõzetesség és a valószínûleg felhasz- hogy egyszerû módszerem a hordozott merevlemez tönkre- nálható hely miatt alapvetõen irodai, illetve programozói menetele (elvesztése) ellen ugyan megvéd, de a programban jellegû géphasználat esetén alkalmazható, ahol nem túl sok rejtõzõ hibák ellen nem sokat ér. Történt egy emlékezetes és nem túl nagy fájl keletkezik vagy módosul (ellentétben napon, hogy fájlrendszerhiba folytán a legutóbb használt mondjuk a videovágással és -szerkesztéssel). két táblázatom keresztbe láncolódott – természetesen a kulcs- A mentés idõigénye teljes mentésnél (a sorozatok elsõ tagja) fontosságú része veszett el, és az érdektelen megkétszere- pár perc, a továbbiakban ennek töredéke. Ennyit szerintem zõdött. Az üzemszerû mentés pedig megsemmisítette a kulcs- megér a lényegesen megnövelt adatbiztonság. fontosságú fájl elõzõ másolatát… Amikor a jelenség megis- métlõdött, elhatároztam (mivel mégsem ütött meg a guta), Keszthelyi András ([email protected])

#!/bin/bash Ser1="Ment1_" # Ser2="Ment2_" # Az alanti 4 változó értéke egyéni ízlés Teljes="Nem" # szerint állítható MaxNoOfFiles=10 # Legalacsonyabb # fájlrendszer-befûzések ellenõrzése devfs # értéke: 2 # esetén a cutot másképpen kell paraméterezni MunkaKtar="/mnt/hordd" # Nincs / a if [ qwq`mount | grep $MunkaKtar | # könyvtárnevek végén! cut -d " " -f 3` != qwq$MunkaKtar ]; then MMP="/mnt/hda4" # Mentes Mount Pont echo "A munkakönyvtár nem érhetõ el, MKT="ment" # Mentes KonyvTar mentés nem történt" exit ############################################## fi

CKT=$MMP/$MKT # célkönyvtár folytatás a következõ oldalon

60 Linuxvilág Dobbantó

folytatás az elõzõ oldalról -maxdepth 1 -exec rm {} \; echo "2. sorozat torolve: `date`" # csak a ktar elérhetõséget kell vizsgálnunk, >> ${CKT}/mentdatum.txt # vö. lentebb az elsõ futással! Teljes="Igen" if [ ! -d $CKT ]; then fi echo "A célkönyvtár nem érhetõ el, mentés fi nem történt" exit if [ $SerNo -eq 2 ]; then fi #Legutóbbi mentés a 2. jelû sorozatba ment FNamePrefix=$CKT/${Ser2} # szabad hely ellenõrzése if [ $FC2 -ge $MaxNoOfFiles ]; then let Kell=`df | grep $MunkaKtar | # Megvan a sorozatból a max. darabszám, tr -s " " | cut -d " " -f 3` # meg kell kezdeni az 1. jelû sorozatot let Van=`df | grep $MMP | tr -s " " | # (ha van régebbrõl, törlendõ) cut -d " " -f 4` FNamePrefix=$CKT/${Ser1} if [ $Van -le $Kell ]; then find $CKT -type f -name ${Ser1}\*

echo "Nem biztos, hogy elegendõ a hely -maxdepth 1 -exec rm {} \; © Kiskapu Kft. Minden jog fenntartva a mentéshez, nem csináljuk" echo "1. sorozat torolve: `date`" exit >> ${CKT}/mentdatum.txt fi Teljes="Igen" fi # kitakarítjuk a szemetet kiterjesztés alapján fi # válogatunk, egyéni ízlés szerint bõvíthetõ echo -n "Takaritas... " # Ezen a ponton: ha az egyik sorozatunk find $MunkaKtar -type f \( -name \*.bak -o # elérte a max. darabszámot, letöröltük a -name \*.$\* -o -name \*.img -o -name \*.tmp # másikat és beállítottuk a fájlnév elejét, -o -name \*.wbk \) -exec rm {} \; # meg hogy teljes v. részleges mentést kell echo "vege" # csinálni. Itt jön maga a mentés. echo -n "A tenyleges mentes kov.: " #Hány sorozat és mennyi darab van: if [ `ls $CKT | wc -l` -eq 0 ]; then echo "Ures kt., elso futas..." FName=$FNamePrefix$(date +%j)-$ Teljes="Igen" (date +%H%M%S).tgz touch -t 198001010000 ${CKT}/mentdatum.txt echo "${Ser1}000-000000" > if [ "$Teljes" = "Igen" ]; then ${CKT}/lastfile.txt tar -czf $FName $MunkaKtar 2 > /dev/null fi echo -n "teljes mentes... " else FC1=`ls ${CKT}/${Ser1}* 2> /dev/null | wc -l` # csak a frissebbeket kell menteni FC2=`ls ${CKT}/${Ser2}* 2> /dev/null | wc -l` echo -n "frissebbek mentese... " find $MunkaKtar -type f -anewer SerNo=`cat ${CKT}/lastfile.txt | cut -c 5` ${CKT}/mentdatum.txt -exec ls {} \; > /tmp/mentlista.$$ if [ $SerNo -eq 1 ]; then tar -czf $FName -T /tmp/mentlista.$$ #Legutóbbi mentés az 1. jelû sorozatba ment 2 > /dev/null FNamePrefix=$CKT/${Ser1} if [ -f /tmp/mentlista.$$ ]; if [ $FC1 -ge $MaxNoOfFiles ]; then then rm /tmp/mentlista.$$; fi # Megvan a sorozatból a max. darabszám, fi # meg kell kezdeni a 2. jelû sorozatot, basename `echo $FName` > ${CKT}/lastfile.txt # (ha van régebbrõl, törlendõ) basename `echo $FName` >> ${CKT}/mentdatum.txt FNamePrefix=$CKT/${Ser2} echo "rendben(?)." rm $CKT/${Ser2}* find $CKT -type f -name ${Ser2}\* ###EOF

www.linuxvilag.hu 2003. augusztus 61 Dobbantó

Héjprogramozás Linux alatt (4. rész) Sorozatunk elõzõ részeiben megismerkedhettünk a változókkal, a logikai kifejezésekkel, a döntési szerkezetekkel, a parancsbehelyettesítés módszerével és még néhány más, a héjprogramozás szempontjából alapvetõ lehetõséggel.

bben a részben szintén a héj alapszolgáltatásairól, a ciklus addig fut, ameddig ez a feltétel igaz. Ennek a szerke- ciklusok szervezésérõl és a függvényekrõl lesz szó. zetnek az alakja a következõ: Minden programban, így a héjprogramokban is gyakran Efordulnak elõ ismetlõdõ részek. Ha ezekre a program külön- while logikai_kifejezés bözõ pontjain van szükség, akkor elkülönített blokkokban, do

© Kiskapu Kft. Minden jog fenntartva függvényekben helyezhetjük el õket, ha viszont egy helyen ... ciklusmag ... kell ugyanazt a mûveletsort sokszor végrehajtani, akkor ciklust done szervezünk. Errõl a két lehetõsegrõl lesz szó ebben a részben. A logikai kifejezés megfogalmazására ugyanazok a szabályok Új feladat érvényesek, mint amiket az elõzõ részben a test parancs Tegyük fel, hogy létezik egy több sorból és több oszlopból álló, kapcsán már bemutattunk. kizárólag egész értékeket tartalmazó számtáblázatunk, amihez A másik ciklustípusnál meg kell adnunk azt a sorozatot, elõ szeretnénk állítani a sorok, illetve oszlopok összegét. Írjunk aminek az értékeit a ciklusváltozónak fel kell vennie. Általános olyan héjprogramot, ami elvégzi az összegzést, ha a táblázatot alakja a következõ: tartalmazó fájl nevét megadjuk, és a szabályos kimeneten megjeleníti az eredményt. Továbbá egy parancssori kapcsolóval for ciklusváltozó in lista azt is szabályozni lehessen, hogy a sorok vagy az oszlopok do összegzését kell-e elvégeznie. ... ciklusmag ... Azonnal érezzük, hogy itt tulajdonképpen két faladat done megoldásáról van szó, vagyis a kész program kétféle teendõt lesz képes ellátni. Ennek megfelelõen a kódot is célszerû lesz Ez természetesen nem feltétlenül jelenti azt, hogy a listát olyan módon kialakítani, hogy a két mûveletet megvalósító kézzel kell begépelnünk. Megadhatunk a helyén egy olyan részek jól elkülönüljenek egymástól. A magas szintû héjváltozót is, ami a megfelelõ sorozatot tartalmazza, magát a programnyelvekben ezt a moduláris felépítést eljárások vagy sorozatot pedig más utasításokkal is elõállíthatjuk. függvények segítségével valósítják meg. Természetesen héjprogramokban is lehetõségünk nyílik függvények A sorok összegzése megadására. Ennyi bevezetõ után írjuk meg a program lelkét képezõ két függvényt. Kezdjük a sorokon belül összegzõ algoritmus Függvények megírásával (lásd az 1. listát). A függvény a teljes program elkülönült, jól meghatározott A 3. sorban egyszerûen megszámoljuk, hogy hány sorból feladatot ellátó része. Lehetnek paraméterei és van kimenete. áll a táblázat. Amolyan állam az államban. Héjprogramok esetében egy Látható, hogy mindkét ciklustípusra szükségünk volt. függvény általános alakja a következõ:

függvénynév() 1: sorosszegzes() { 2: { ... a függvény törzse ... 3: sorszam=`cat $1 | wc -l` } 4: i=1 5: while [ $i -le $sorszam ] Ha az így elkülönített programblokkot futtatni akarjuk, ele- 6: do gendõ a függvény nevét beírni a fõprogram (vagy egy másik 7: egysor=`head -$i $1 | tail -1` függvény) megfelelõ pontján. Lényeges, hogy a gömbölyû 8: osszeg=0 zárójeleket héjprogramok esetében nem kell kiírni. Ezek a 9: for elem in $egysor függvény megadását és nem a hívását jelzik a parancsértel- 10: do mezõ számára. 11: osszeg=`expr $osszeg + $elem` 12: done Ciklusok 13: echo $osszeg Ahhoz, hogy egy táblázat sorain vagy oszlopain végig tudjunk 14: i=`expr $i + 1` haladni, nyilván ciklusokra lesz szükségünk. Héjprogramokban 15: done alapvetõen kétféle ciklus létezik. Az egyiknél a más nyelvekben 16: } is szokásos módon egy logikai feltételt kell megadnunk, és a

62 Linuxvilág Dobbantó

1: oszloposszegzes() 1: if [ $# -ne 2 ] 2: { 2: then 3: sorszam=`cat $1 | wc -l` 3: echo "A program használata:" 4: oszlopszam=`head -1 $1 | wc -w` 4: echo $0 "[-s | -o] fájlnév" 5: i=1 5: exit 1 6: while [ $i -le $oszlopszam ] 6: fi 7: do 7: 8: osszeg=0 8: if [ ! -f $2 ] 9: j=1 9: then 10: while [ $j -le $sorszam ] 10: echo "A megadott fájl nem létezik!" 11: do 11: exit 2 12: egysor=`head -$j $1 | tail -1` 12: fi 13: k=1 13: 14: for elem in $egysor 14: case $1 in 15: do 15: "-s") sorosszegzes $2;; 16: if [ $k -eq $i ] 16: "-o") oszloposszegzes $2;;

17: then 17: *) echo "Ismeretlen kapcsoló!" ; exit 3 © Kiskapu Kft. Minden jog fenntartva 18: osszeg=`expr $osszeg + $elem` ;; 19: fi 18: esac* 20: k=`expr $k + 1` 21: done 22: j=`expr $j + 1` A fõprogram 23: done Ezzel a feladatot lényegében meg is oldottuk. Az utolsó lépés 24: echo $osszeg a vezérlést ellátó fõprogram megírása, és a teljes kód összeál- 25: i=`expr $i + 1` lítása. A feladat kiírása szerint a sorok és oszlopok összegzése 26: done között egy kapcsolóval lehet váltani. Ez azt jelenti, hogy a 27: } programunknak két parancssori kapcsolója lesz. Az elsõ a kapcsoló, a második pedig a feldolgozandó fájl neve (3. lista). A fõprogram elején megvizsgáljuk, hogy valóban két kapcsolót Az 5. sorban induló while ciklus a bemeneti fájl sorain halad kaptunk-e a parancssorban (1. sor), majd a biztonság kedvéért végig, és a 7. sorban mindig a megadott sorszámút vágja ki. azt is leellenõrizzük, hogy a megadott fájl létezik-e. Hibás A head parancs egy fájl elejérõl jeleníti meg a megadott számú kapcsolószám esetén a unixos szokásoknak megfelelõen sort, a tail pedig ugyanezt teszi, de a fájl végérõl visszafelé tájékoztató szöveget íratunk ki. Figyeljük meg, hogy a külön- haladva. A 7. sorban elõbb kivágjuk a bemenet elsõ i sorát, bözõ hibákat eltérõ visszatérési értékkel jelezzük. majd ezekbõl csak az utolsót vesszük. Az eredmény egyetlen A 14. sorban egy az elsõ parancssori kapcsolóban ($1) meg- sor, mégpedig pontosan az i-edik. adott érték alapján mûködõ többszörös elágazás kezdõdik. A 9. sorban induló for ciklus ezen az egyetlen soron (egysor) Esetünkben itt dõl el, hogy a két függvény közül melyik fog mint listán halad végig, és az osszeg nevû változóban gyûjti lefutni. A lehetõségeket karakterláncok formájában kell meg- a részeredményeket. Az összegzést az expr parancs segítsé- adnunk (15. és 16. sor), a hozzájuk tartozó mûveletsorok végét gével végezzük, ami egy kizárólag egész számokkal mûködõ pedig kettõs pontosvesszõ jelzi. A * (csillag) karakter a „bármi „számológép”. Azt is érdemes megjegyezni, hogy a mûveleti más” jelölésére szolgál. Esetünkben ez csak ismeretlen kapcsoló jelet a tulajdonságoktól (argumentum) mindig szóköznek kell lehet, így hibaüzenetet küldünk rá. Magát a case szerkezetet elválasztania, ha pedig szorozni akarunk vele, akkor a szor- az esac (case visszafelé) kulcsszó zárja le. zásjelet \* alakban kell megadni, a csillag karakter különleges Figyeljük meg, hogy a függvények meghívásánál azok parancs- jelentése miatt. sori kapcsolójaként $2-t (a feldolgozandó fájl nevét) adjuk meg, maguk a függvények azonban $1-ként hivatkoznak erre. Az oszlopok összegzése Ez azért van így, mert a függvényeknek önálló értékkészletük Az oszlopok összegzése ennél egy kissé bonyolultabb, bár van, aminek így a számozása sem azonos a fõprograméval. a megvalósítás hasonló az elõzõhöz. Itt három ciklusra van A változókkal kicsit bonyolultabb a helyzet. A függvény belelát szükségünk. Az elsõ (6. sor) a feldolgozott oszlopokat számolja, a fõprogram változóiba, és ugyanez fordítva is igaz (röviden a második (10. sor) a bemenet sorain halad végig, a harmadik tehát minden változó globális). Ugyanakkor ha a függvény hoz (14. sor) pedig minden sorból csak a pillanatnyi oszlopindex- létre egy változót, akkor a fõprogram csak az elsõ függvény- nek ($i) megfelelõ sorszámú tagot adja hozzá a részösszeghez hívás után tud rá hivatkozni. (lásd a 2. listát). A teljes program a fenti három részlet egyszerû összemáso- Valószínûleg az olvasó is érzi, hogy ez nem túl elegáns megol- lásával elõállítható. dás, sõt talán már arra is rájött, hogy a feladat lényege az Büki András oszlopok címzése. Nincs olyan egyszerû módszerünk, amivel ([email protected]) ki tudnánk emelni egy sorozatnak mondjuk a harmadik Körülbelül kilenc éve dolgozik Linux elemét. (Valójában létezik ilyen módszer, de ez már egy másik operációs rendszerrel. Állandó szerzõtársa történet lesz.) Prof. Dr. H. V. Kuksinak, akivel a Duna vagy a Figyeljük meg, hogy a ciklusváltozók növelését szintén az Tisza partján szoktak az élet és a tudomány expr segítségével oldottuk meg. viselt dolgairól töprengeni.

www.linuxvilag.hu 2003. augusztus 63 Dobbantó

Könyvtárkezelés Perlben Általánosan elfogadott nézet, hogy amit C-ben nem lehet megoldani, azt más nyelvben sem. Mára újabb egyetemes tétellel gazdagodtunk: amit Perlben nem lehet egyszerûen megoldani, azt nem lehet más nyelvben sem.

fenti állítást bizonyítandó nézzük meg közelebbrõl hivatkozni rá. A gyémánt mûveleti jel (< >) megfelelõje ebben a könyvtárkezelés Perl-beli megvalósítását. Mint látni az esetben a readdir. Végül a closedir segítségével töröljük fogod, semmivel sem bonyolultabb könyvtárlistát a könyvtármutatót a névtérbõl. Lássuk mindezt a gyakorlatban! készíteni,A mint állományt kiíratni. Szemügyre vesszük a könyv- tármutatókat, szó lesz egy objektumközpontú felületrõl, továb- my ($dir,$file,$type);

© Kiskapu Kft. Minden jog fenntartva bá a jogosultságok és a tulajdonos beállításáról. ($dir = $ARGV[0]) or die "Hasznalat: ".$0." \n"; Az állománytípusok opendir (DIR, $dir) or die $dir. Kezdjük az elején! Egy könyvtárlista elemei nem egységesen ": ".$!."\n"; fájlok, hanem típusuk szerint különbözhetnek. A közvetett print $dir." tartalma:\n"; hivatkozástól (symbolic link) a könyvtáron át egészen a háló- while ($file = readdir(DIR)) { zati foglalatig számos fajtát határozhatunk meg. A Perlben $type = fileType($dir."/".$file); minden típusnak megfelelõen létezik egy mûveleti jel (opera- print "\t".$file." (".$type.")\n"; tor), ami igazat ad vissza, ha az elem az adott típushoz tartozik, } ellenkezõ esetben hamisat. Hasonló ez a bashbõl ismert mód- closedir (DIR); szerhez, a két nyelv mûveleti jelei között vannak azonban eltérések. Az alábbi egyszerû függvény egy skalárt ad vissza, A fenti program a korábban már tárgyalt fileType függvényt ami a megadott állomány típusát jellemzi. használja az állomány típusának a meghatározásához, és egy egészen tetszetõs kimenetet hoz létre. Mint láthatod, nincs sub fileType { különbség az állománykezeléshez képest, illetve csak igen my $file = shift; csekély. Egy könyvtármutatót nem lehet írási mûveletre fel- return "szimbolikus link" if -l $file; használni. Továbbá a readdir nem használja az alapértelme- return "konyvtar" if -d $file; zett változót ($_), így egyet kötelezõ megadni. return "fifo" if -p $file; Érdemes megjegyezni, hogy a readdir a gyémánt mûveleti return "karakter-specialis" if -c $file; jelhez hasonlóan tömb és skalár összefüggésben is használható. return "blokk-specialis" if -b $file; Ez azt jelenti, hogy a kiíratás úgy is megoldható, hogy egyetlen return "socket" if -S $file; readdir hívással egy @files tömbbe az összes bejegyzést return "szoveg" if -T $file; begyûjtöd, majd egy for $file (@files) { } szerkezettel return "binaris" if -B $file; végiglépteted az elemeken. Az elõbbi ciklusban minden egyes return "ismeretlen"; lefutásnál a $file a következõ értéket veszi fel. } Ne felejtsd el, hogy a könyvtárlista tartalmazni fogja a '.' és a '..' (a pont és a két pont) elemeket is. Amennyiben Így egyszerûen meghatározhatod egy állomány típusát, a legköny- ezekre nem vagy kíváncsi, a ciklusban egy mintaillesztéssel nyebben az alábbi szemléletes sorral foghatod munkára az eljárást: szûrd ki õket:

print fileType "/dev/hda"; next if $file =~ /^\.\.?$/;

Természetesen a nyelv rugalmasságából eredõen állománynév A DirHandle modul helyett fájlmutatót is megadhattunk volna, most azonban az Az alapkönyvtár része az említett modul, ami objektumköz- egyszerûség kedvéért a könnyebb utat választottam. pontú felületként szolgál a már megismert alacsonyabb szintû függvényekhez. Ennek értelmében a DirHandle használata A könyvtármutatók nem jelent több szolgáltatást, mindössze más megközelítése Mint azt az elején említettem, könyvtárlistát gyerekjáték ugyanannak a feladatnak. Lássunk egy példát! kiíratni. Nem elég, hogy nem nehezebb egy állomány tartal- mának a megjelenítésénél, de egy az egyben ugyanazt az eljá- use DirHandle; rást igényli. A szemmel látható különbség mindössze a függ- vények neveiben jelentkezik. A végletekig leegyszerûsítve azt my ($dir,$dh,$file,$type); mondanám, hogy csupán minden, az állománykezelésnél ($dir = $ARGV[0]) or die "Hasznalat: ".$0." megismert függvény neve mögé egy dir-t kell ragasztani. \n"; Az opendir függvény segítségével megnyitjuk a könyvtárat, ($dh = new DirHandle ($dir)) or die $dir. a késõbbiekben az értékként átadott könyvtármutatóval fogunk ": ".$!."\n";

64 Linuxvilág Dobbantó

print $dir." tartalma:\n"; Ezeket bitenként egy VAGY mûvelettel összegeztük, így while ($file = $dh->read) { ugyanazt kaptuk, mintha 0755-öt adtunk volna meg. next if $file =~ /^\.\.?$/; $type = fileType($dir."/".$file); A chown függvény print "\t".$file." (".$type.")\n"; A chown segítségével megváltoztathatod egy, esetleg több } könyvtár vagy állomány tulajdonosát, illetve csoportját. $dh->close; A függvény a chmod-hoz hasonlóan egy listát vár. Ennek elsõ eleme az új felhasználói azonosító, a második a csoportazo- Pillanatnyi könyvtár nosító, a további értékek állománynevek. Természetesen lehe- Egy parancsértelmezõhöz hasonlóan a Perl is ismeri a pillanat- tõség nyílik csak az egyik, illetve a másik megváltoztatására, nyi könyvtár fogalmát. Ez alapértelmezésben az a könyvtár, ekkor annak az azonosítónak a helyén, amit nem kívánunk ahonnan a parancsfájlt indítottad. Nem feltétlenül egyezik módosítani, -1-et kell megadnunk. meg azzal a hellyel, ahol a program található. Erre különös Kényelmetlen azonban számokkal dolgozni – a Perl itt két tekintettel figyelj! A legjobb, ha ahol csak lehet, abszolút újabb függvénnyel áll a rendelkezésünkre. A getpwnam, illetve elérési utat használsz. a getgrent a /etc/passwd-bõl és a /etc/group-ból nyerik ki A jelenlegi munkakönyvtárad lekérdezhetõ a Cwd modul részét a névhez tartozó azonosítót. Az alábbi példa a szoveg.txt tulaj- képezõ cwd függvénnyel. A chdir pedig – ahogy a nevébõl is donosát balazs-ra változtatja:

sejtheted – a pillanatnyi könyvtár megváltoztatására használ- © Kiskapu Kft. Minden jog fenntartva ható. Ezek egy bashbõl kiadott pwd, illetve cd parancshoz ha- chown getpwnam("balazs"), "-1", "szoveg.txt"; sonlóan viselkednek. Az mkdir, az rmdir és az unlink A umask függvény A bámulatosan beszédes nevû függvények pont azt teszik, amit Egy állomány létrehozása esetén a jogosultságokat tekintve a parancsértelmezõ által futtatott programok is tennének. a Perl eredeténél fogva Unix-szerûen viselkedik. Létezik egy Az mkdir új könyvtárat hoz létre; kötelezõ érték a létrehozan- alapértelmezett maszk, amit az új állomány jogainak meghatá- dó könyvtár neve, ezután a jogosultság is megadható. Az utóbbi rozásához használ fel. Ezt hívják umask-nak. Röviden szólva elhagyása esetén a umask-nak megfelelõen jön létre a könyvtár. ez egy olyan nyolcas számrendszerbeli szám, ami megmutatja a megvont jogokat. Ez az érték jellemzõen 022. Ez azt jelenti, mkdir "appz", 0755; hogy minden engedélyezett, leszámítva a „csoport” és a „többiek” írási jogát. Így az újonnan létrehozott állományok Az rmdir egy könyvtárat töröl. Értékként a könyvtár neve jogosultsága 644, a könyvtáraké 755. szerepel. Fontos, hogy a rendszerbõl ismert testvéréhez hason- A Perl umask függvénye nyújt lehetõséget az említett alapér- lóan csak akkor szüntet meg egy könyvtárat, ha az üres. telmezett maszk megváltoztatására. Azt például, hogy az újonnan létrehozott állományokra minden engedélyezve rmdir "appz"; legyen, az alábbi függvényhívással érheted el: Az unlink állományokat töröl. Értékként a törlendõ állomá- umask 0000; nyok neveivel egy listát vár.

A chmod függvény unlink "alma.txt", "korte.txt", "szilva.txt"; A chmod segítségével explicit módon is megadhatod egy állomány vagy könyvtár elérési jogait. A függvény értékként Miért foglalkoztunk ezekkel? egy listát vár, aminek az elsõ eleme az új jogosultság nyolcas Miért érdemes ezzel foglalkozni, ha ott van a Midnight számrendszerben megadva, a további elemek pedig állomá- Commander? Azért, mert mindennapos feladat lehet egy nyok. Ha gondban vagy a nyolcas számrendszerrel, az Fcntl könyvtár alatti összes könyvtárnak adott jogosultságúra, míg modullal számok helyett beszédesebb állandókat használhatsz. az összes állománynak más jogosultságúra történõ beállítása. Íme a példa: Ezt kézzel tíz bejegyzés esetén még az õrület elkerülésével meg lehet oldani, ezer esetén már aligha. Sokszor eszedbe use Fcntl ':mode'; juthat, hogy erre programot írni felesleges, gyorsabban végzel, chmod S_IRWXU|S_IRGRP|S_IXGRP|S_IROTH|S_IXOTH, ha kézzel csinálod. Szerintem ez súlyos tévedés. Egyrészt "alkalmazas.pl"; legközelebb is ütközhetsz ilyen feladatba, másrészt a tapasz- talat azt mutatja, hogy hamarabb végzel egy parancsfájllal, A fenti állandók értelmezése: mint a nyílbillentyûkkel az mc-ben. Arról nem is beszélve, hogy a számítógépet pontosan erre találták ki: a feladatok S_IRWXU = S_I Read Write eXecute User önmûködõvé tételére. (a tulajdonosnak olvasás, írás, futtatás) Kellemes programozást! S_IRGRP = S_I Read GRouP (a csoportnak olvasás) S_IXGRP = S_I eXecute GRouP Fülöp Balázs ([email protected]) (a csoportnak futtatás) 18 éves, imádja a Túró Rudit, a Debian Linuxot és S_IROTH = S_I Read OTHer a teheneket. Az ELTE Radnóti Miklós Gyakorlóiskola (a többieknek olvasás) tanulója immár ötödik éve. Kedvenc írója Slawomir S_IXOTH = S_I eXecute OTHer Mroek. Leginkább a számítógépes hálózatok (a többieknek futtatás) biztonsága érdekli.

www.linuxvilag.hu 2003. augusztus 65 Kovácsmûhely

A Zope CMF Mûködtessük weblapunk munkafolyamat-rendszerét tartalomszolgáltatóink és felhasználóink megelégedésére. Fejlesszünk Python alapú tartalomkezelõ keretrendszerrel!

z elmúlt néhány hónapban megtudhattunk néhány lib/python/Products könyvtárába. dolgot a tartalomkezelésrõl, illetve egy kicsit részle- Ezt követõen a CMF könyvtárból tesebben is megismerkedhettünk a nyílt forrású a Product könyvtár CMFCore, CMFDefault, CMFTopic PloneA tartalomkezelõ rendszerrel (CMS). A Plone igen ráter- és CMFCalendar fájljaira készítsünk közvetett hivatkozáso- mett CMS rendszer, olyasmi, amit az ember telepítés után kat. Indítsuk újra a Zope-ot, és a Zope kezelõablakában az

© Kiskapu Kft. Minden jog fenntartva majdhogynem azonnal használni tud. A Plone legnagyobb Add menü alatt máris rengeteg új CMF-vonatkozású terméket elõnye az egyszerûség. Könnyû telepíteni, könnyû használni fogunk látni. és egyszerû beállítani. Mielõtt bármilyen CMF-objektumot hozhatnánk létre, A Plone (vagy bármely más CMS) testreszabásának azonban elõbb CMF-oldalunkhoz kell készítenünk egy tárolót. megvannak a határai. Ha mint nem kereskedelmi termék nem Nyilván észrevettük az egyértelmû párhuzamot a Plone- tetszik a Plone kinézete, természetesen megváltoztathatjuk oldal és a CMF-oldal létrehozása között. Az új CMF-oldal egy másik modellre. De ha teljesen más munkafolyamatot sze- létrehozásához a webalapú Zope kezelõfelületben egyszerû- retnénk, mint amit a Plone nyújt, valószínûleg csak az idõnket en csak válasszuk az Add menü CMF Site pontját. Ezt köve- vesztegetjük, ha ilyesfajta változtatást próbálunk megvalósí- tõen CMF-oldalunkat el kell neveznünk, illetve meg kell tani. Sokkal több értelme van, ha megírjuk saját CMS rendsze- adnunk a leírását. rünket, vagy (ha bonyolultabb a feladat) átszabjuk azokat, A CMF-oldal létrehozásakor válaszolnunk kell arra a kérdésre, amelyeket rugalmasan építettek fel. hogy új felhasználói könyvtárat szeretnénk-e létrehozni az A legtöbb CMS-terjesztõ mostanra már ráébredt, hogyha adott CMF-oldalon belül, vagy egy már létezõ felhasználói használható terméket szeretnének, annak testreszabhatónak könyvtárat szeretnénk felhasználni. Egyelõre tegyük az utób- kell lennie. Amennyiben J2EE alapú CMS rendszert vásáro- bit, ami azt jelenti, hogy a legfelsõbb szintû Zope-oldalon lunk (márpedig a kereskedelmi CMS rendszerek igen nagy megadott felhasználók lesznek egyúttal CMF-oldalunk felhasz- százaléka a J2EE-n alapul), várhatóan lehetõségünk lesz a nálói is. Amennyiben CMF-oldalunkat inkább önálló egység- tartalomtípusokat és azok kezelési módját leíró, új Java-objek- ként szeretnénk létrehozni, és (a lap tulajdonosán kívül) tumokat készíteni. Bizonyos ponton túl elmosódik a határ- nem szeretnénk a külsõ világra hivatkozni, nyugodtan létre- vonal a meglévõ CMS testreszabása és a saját CMS rendszer hozhatunk saját felhasználói könyvtárakat is. létrehozása között. Miután a CMF-oldal létrehozásával végeztünk, a honlapra Itt lép be a képbe a Zope tartalomkezelõje (CMF), amit kerülünk, ahol megtudhatjuk, hogy ideje meglátogatnunk az olyan módon terveztek meg, hogy hatékony hátteret nyújtson alapbeállítások ûrlapját. Minthogy a CMF eredetileg Portal saját CMS-kezelõink megírásához. Mivel a Zope-fejlesztések Toolkit néven (PTK) volt ismert, sok lap CMF-oldalak helyett igen gyorsak és egyszerûek, és mivel a Zope meglévõ háttér- portálokat emleget. Az ûrlapba írandó adatok meglehetõsen eszközeit is felhasználhatjuk, könnyen elképzelhetõ, hogy általános természetûek. Itt állíthatjuk be például azt a levél- legalább ugyanolyan gyorsan (viszont sokkal olcsóbban) ki címet, amirõl (látszólag) a létrejövõ elektronikus levelek érkez- tudjuk fejleszteni CMS rendszerünket, mint ahogyan azt nek, valamint az oldal SMTP-kiszolgálóját. valamilyen kereskedelmi CMS-megvalósításban megtehet- A dolgok mindjárt érdekesebbé válnak, ha az útmutatást nénk. A Plone nem önálló program, hanem a CMF-re épül. követve átlépünk a CMF-kezelõfelületre, ami valójában a Ennek megfelelõen, ahogy a CMF fejlõdik, úgy a Plone is CMF-oldalhoz tartozó Zope-kezelõfelület. Más szavakkal, egyre jobbá válik. ha oldalunk a /cmfdemo címen érhetõ el, az oldal tartalmába Ebben a hónapban a CMF lesz terítéken, ami a Zope-alkalma- a /cmfdemo/manage címen nézhetünk bele. A kezelõfelület, zások közül lassan a figyelem középpontjába kerül. A CMF mint azt már Zope alatt megszokhattuk, a bal oldalon egy jelenleg elérhetõ legutóbbi üzembiztos változata az 1.3.1.-es, kis navigációs menüt tartalmaz. Ugyanakkor, mint azt a az alfaváltozat pedig a 2.0-s számot viseli. Ha esetleg az elkö- múlt hónapban láthattuk, a bal oldalon számos portáleszközt vetkezendõ években a Zope irányvonala még nem lenne telje- is találunk, amelyekkel a CMF-oldalunkat állíthatjuk be sen tiszta, a CMF 2.0 egyértelmûen „a Zope3 némileg újra- és módosíthatjuk. csomagolt vezetõ alkalmazása”. A portal catalog-ra kattintva megjelenik a szótár (angolul „vocabulary”, a Zope világában ezt a szót használják az index A CMF telepítése és beállítása helyett), amibõl megtudhatjuk, hogy az oldal gazdája mikép- A CMF telepítését néhány hónappal ezelõtt már bemutattuk pen készíthet teljes körû szövegkeresést a CMF-oldalon (lásd a Kovácsmûhely rovatot a Linuxvilág 2003. májusi szá- – minden erõfeszítés nélkül. A portal types-ra (portáltípusok) mában), úgyhogy most nem részletezem. kattintva a tartalom objektumosztályokat pillanthatjuk meg. Töltsük le a forrásfájlokat a  http://cmf.zope.org lapról, Ezek az osztályok alkotják a CMF magját. Alább részlete- majd csomagoljuk ki a Zope saját könyvtárunk alatti sebben is megvizsgáljuk a tartalomosztályokat, a jövõ

66 Linuxvilág Kovácsmûhely

hónapban pedig azt is megtudhatjuk, hogyan készíthetjük használva a lap felügyelõje cikkeket vonhat vissza a lap kiadott el a saját tartalomtípusainkat. elemeinek listájából. Ez igen nagy fejlõdés a hagyományos Végül kattintsunk a portal_workflow-ra, ahol az egyes tarta- weblapokhoz képest, ahol el kellett távolítanunk a csatolásokat lomtípusokhoz használni kívánt workflow (munkafolyamat) és le kellett törölnünk a fájlokat. objektum címét gépelhetjük be. A munkafolyamat szabályozza, Továbbá a legtöbb tartalomtípus vitafórummal rendelkezhet. hogyan jut el a tartalom az írástól a kiadásig, illetve biztosítja, Ez a Comment on This Posting (Megjegyzés ehhez az íráshoz) hogy az emberek bizonyos feladatok elvégzéséhez a megfelelõ képességhez hasonlít, ami igen népszerû a weblogok világá- jogosultságokkal rendelkezzenek. A szerzõk például történe- ban, mivel lehetõvé teszi, hogy a látogató megjegyzéseket teket írhatnak, de nem tehetik közzé írásaikat az oldalon. fûzzön az oldal hivatalos rendszerfelügyelõje által feltett írá- A jó munkafolyamat-rendszer lehetõvé teszi, hogy a saját sokhoz. Amikor egy új tartalmat felrakunk, eldönthetjük, hogy szervezeti igényeinknek megfelelõen magunk állítsuk fel elfogadjuk-e a vitafórumokra vonatkozó alapértelmezés ezeket a szabályokat. szerinti oldalmeghatározást, vagy ennél az egy példánynál felülbíráljuk a hely globális beállításait. Egyszerû CMF-lap A CMF-vezérlõpanel bemutatása után ideje megvizsgálnunk Tartalomtípusok a lapunkat is. Ha nyers CMF-oldalunkra belépünk, középen Nézzük meg, hogy tulajdonképpen milyen tartalomtípu- a fõ tartalomterületet, továbbá különféle helyeken eszköz- sokat is hozhatunk létre.

tárakat és dobozokat láthatunk. A legfölsõ menüben találjuk A legtöbbjük a CMFDefault termékben van meghatározva, © Kiskapu Kft. Minden jog fenntartva meg a fontosabb navigációs pontokat, amikkel az oldal ele- a lib/python/Products/CMFDefault könyvtár különálló jére, a tagok oldalára, a hírek oldalára, illetve az oldal tartal- .py-állományaiban. Ez a termék írja le a Zope kezelõfelüle- mának a keresésére ugorhatunk. A menü alatt, de még min- ten korábban látott beállítóeszközöket, valamint az olyan dig a jobb felsõ sarokban felhasználói menükre bukkanha- CMF alatt példányosítható alap-tartalomtípusokat, mint tunk, elsõ helyen a My Preferences (saját beállítások) ponttal. a NewsItem (hírelem), a Portal, az Image (kép) és a Link Itt a bejelentkezett felhasználók felvehetik a saját beállításai- (hivatkozás). kat, hivatkozásokat adhatnak kedvenceik listájához, illetve A hozzám hasonlókat minden bizonnyal meglepi és lenyû- kijelentkezhetnek. A még be nem jelentkezett felhasználók- gözi a CMF-ben meghatározott alap-tartalomtípusok egészen nak a rendszer felkínálja a bejelentkezést, amennyiben létezik kis mérete. A lista alján a NewsItem áll, mindössze száz sorral, azonosítójuk, illetve akiknek még nincsen, lehetõséget kap- de még a Portal elem is csak 350 sort számlál. Ez nemcsak nak a csatlakozásra. Bal oldalon találjuk a navigációs menüt, azt jelenti, hogy ezeket a tartalomtípusokat szükség esetén ebben láthatjuk az elérhetõ könyvtárak listáját, illetve beál- könnyû megváltoztatni és a hibáikat felderíteni, hanem azt líthatunk néhány képességet, például a hírügynökséget is, hogy az új tartalomtípusok felvétele is igen egyszerû. (syndication) és a helyi szabályokat. Igazság szerint mára már számos új tartalomtípus született Aki már hozzászokott a Plone-oldalakhoz, az az alapértel- a CMF-hez, és továbbiak is várhatóak. Ha ellátogatunk a mezett CMF-oldalt egy kicsit talán spártainak, de minden- CMF Collective Projekt honlapjára ( http://collective.sf.net), képpen ismerõsnek fogja találni. Az egyszerûség oka, hogy számtalan CMF-vonatkozású terméket találhatunk, amik az az alapértelmezett CMF-oldal arra készült, hogy egy saját elmúlt hónapokban jelentek meg. Születõfélben lévõ CMF- CMS rendszerben felhasználhassuk; igaz, hogy teljes mér- termékek találhatók többek között e-kereskedelem, fotóalbum tékben mûködõképes, de nem önálló alkalmazásnak szánták. és weblog témakörben. Ahogy a CMF egyre népszerûbbé Új tartalomtípusok meghatározásával és a megjelenítõ felü- válik, várhatóan a CMF Collective népszerûsége is egyaránt letek módosításával pillanatok alatt életre kelthetjük a CMS-t. növekedni fog. Mivel a megjelenítõ logika a rendszer többi részétõl teljesen elkülönül, viszonylag gyorsan megváltoztathatjuk a kinézetet. Összefoglalás A CMF-oldal minden egyes tagjához egy vagy több szerepet Figyelembe véve, hogy a Zope Corp. többször kijelentette, rendelhetünk: Member (tag), Reviewer (bíráló), Manager hogy a Zope jövõje a CMF, és tudván, hogy a CMS telepítése (vezetõ) vagy Owner (tulajdonos). Ezek a bíráló kivételével felháborítóan költséges is lehet, egyértelmû, hogy a Zope Corp. valószínûleg ismerõsen csengenek a tapasztalt Zope-felhasz- komolyan megpróbálja túlszárnyalni kereskedelmi vetélytár- nálók és rendszerfelügyelõk fülének. Az új szerep a munkafo- sait, és azok árai alá ígér. Ugyanakkor, mivel a Zope és a CMF lyamatok kezeléséhez szükséges, ahol a bírálók feladata hite- nyílt forrású, saját termékeinkben nyugodtan felhasználhat- lesíteni a tartalmat, még mielõtt az felkerülhetne a Webre. juk, akár a tartalomkezelésrõl szeretnénk többet megtudni, A rendszerfelügyelõk a képernyõ bal oldalán kiterjedt menüt akár különbözõ elemeket szeretnénk szerkeszteni és kiadni. láthatnak, megtekinthetik a pillanatnyi könyvtár tartalom- A következõ hónapban egy kicsit mélyebben elmerülünk a nézetét, illetve módosíthatják a meglévõ tartalmat, valamint témában, és megnézzük, hogyan írhatjuk meg a saját CMF új tartalmat hozhatnak létre. Amikor új objektumot hozunk példa-tartalomtípusunkat. létre, nemcsak tartalmat és azonosítót (ID) rendelünk hozzá (amit a hagyományos webrendszerek fájlnévnek neveznek), Linux Journal 2003. július, 111. szám hanem egyúttal a tartalmat leíró metaadatokat is. Bár az objek- tum típusát létrehozás után már nem változtathatjuk meg,  valamennyi paraméterét átírhatjuk, ha a tartalomnézetbe Reuven M. Lerner ( http:/www.lerner.co.il/atf) visszatérve megnyitjuk a kérdéses tartalmat. Nyílt forrású programokra, valamint web- és adat- Minden egyes tartalmat ki kell adni (publish), mielõtt azt bázis-alkalmazásokra szakosodott tanácsadó. mások is láthatnák. Alapértelmezés szerint az új tartalom Könyve, a Core Perl, 2002 januárjában jelent meg állapota private (magán), de a bal oldali menüsor publish a Prentice Hall gondozásában. Reuven feleségével (kiadás) hivatkozásával kiadhatjuk õket. Ugyanezt a felületet és lányaival Izraelben, Modi’in-ben él.

www.linuxvilag.hu 2003. augusztus 67 Kovácsmûhely

Alkalmazzunk XML-t!

Manapság rengeteget lehet hallani az XML-rõl. Egyes programok reklámját olvasva néha már-már forradalmi újdonságnak tûnhet. De mi is valójában, és mire használható?

nélkül, hogy részletekbe bocsátkoznánk: az XML osztályt elkészítettem PHP-ben – ezek már sok mindenben A a HTML-hez hasonlóan az SGML-re épülõ leíró segítettek. Hamarosan azonban néhány nehézség ütötte fel nyelv. Amiben leginkább eltér tõle, az az, hogy a fejét: a PHP-ben nehéz igazi osztályokat készíteni, még nincsenek egy meghatározott feladatra (mint például a HTML- nehezebb (legalábbis az akkori, 3.0-s változatban) mutatókat nél weboldalak leírására) szolgáló tagok elõre meghatározva, alkalmazni. Ráadásul nem sikerült megvalósítanom benne a

© Kiskapu Kft. Minden jog fenntartva hanem tetszõlegesen bõvíthetõ, lényegében csak a formai fõ célomat: olyan elemeket létrehozni, amiket utána ugyanúgy (syntactic) szabályok adottak. Ebbõl eredõen rendkívül rugal- használhatok, mintha a nyelv (HTML) részei lennének. mas, mindenre ráhúzható, és vélhetõen ennek köszönhetõ A fentiek miatt elhatároztam, hogy egy másik programot írok. nagy népszerûsége is. Mivel akkoriban ódzkodtam a C-tõl, a Perl nyelvet választot- Ezzel együtt ha valaki belenéz egy-egy XML-t tartalmazó tam. Igaz, hogy lassúbb, viszont a programtesztelés gyorsabb, fájlba, észreveheti, hogy a szigorú szabályok miatt rendkívül és szinte minden könyvtár illesztését megoldották hozzá redundáns, „bõbeszédû”. Sok esetben az adattartalom szinte (lásd CPAN). Fõ elvárásaim a következõk voltak: elvész a formai elemek között. Felmerül a kérdés, hogy akkor • Legyen „kézzel”, ember által írható bemeneti formátuma. miért használják olyan sokszor, mik az elõnyei? • HTML/PHP-kimenet és önmûködõ elõállítás jellemezze. • Jól körülírt, szabványjellegû leírással bír, ha valaki tartja • A Forth nyelv szavaihoz vagy a C függvényeihez hasonlóan magát ehhez, akkor az általa készített XML-fájlt késõbb az egyszer már meghatározott elemek a régiekhez hason- és más programmal is el lehet olvasni. lóan, teljes értékûen, intuitív módon használhatóak legye- • Mivel a HTML-hez hasonlóan nem bináris kódokat tartal- nek. Ezt hiányoltam a leginkább a legtöbb HTML-elõállító maz, szükség esetén ember által is olvasható, illetve írható. programból. • Nagyon jó elemzõkönyvtárak készültek hozzá, amiket • A HTML-tagok minden meghatározás nélkül is mûköd- mindenféle programozási nyelvekhez illesztettek, így jenek (azaz egy HTML-fájl apró módosításokkal, átlátszóan viszonylag könnyen és gyorsan lehet olyan programot írni, kerüljön át rajta. Minimális módosítása az XML szigorúbb ami egy XML-állományt be tud olvasni, emellett az elõál- alaki szabályai miatt szükséges, de errõl késõbb bõveb- lítása is egyszerû. ben szólok). • Mivel a HTML (némi megszorításokkal) az XML részhal- mazának tekinthetõ, lehetséges a kettõ kombinálása (ahogy Célkitûzéseim részben meg is valósultak. Késõbb más felada- ez a korszerû böngészõkben részben meg is történik). taim adódtak, és nem foglalkoztam a HTML-lel és a weboldal- • A beépített feldolgozási utasítások (process instructions, készítéssel, így egy kissé elhanyagoltam a témát. Most közzé- PIs) és névterek (name spaces) segítségével, valamint a teszem, hátha valakinek ötletet ad, esetleg kedve támad külsõ stíluslapok felhasználásával szinte programnyelv- továbbfejleszteni. szerû, egészen bonyolult felhasználása is lehetséges. Röviden a program igényeirõl: én a Perl 5.05-ös változattal • Tetszõlegesen bõvíthetõ új elemekkel (tagokkal). írtam. Azóta vannak újabbak, elvileg futnia kell velük. Kisebb nehézségeket esetleg okozhat, hogy az újabb Perl-változatok Néhány XML-alkalmazási területet is megemlítenék: mindenáron Unicode-ban szeretnének dolgozni. Szükség • OpenOffice adatcsere-formátumként (elég nagyok a fájlok) esetén a kimeneten alkalmazható egy szûrõ, hogy a kívánt alkalmazzák. kódkészletben kapjuk meg az eredményt (például iso-latin-2). • A .NET és a .GNU rendszerek szintén adatátvitelre Az XML::Parser modulra is szükség lesz, az általam írt használják. XML::Element modulhoz. (Figyelem, késõbb jöttem rá, hogy • A fentiek régebbi és egyszerûbb változata az XMLRPC ilyen nevû modul valamelyik CPAN-os csomagban már létezik. távoli függvényhívásoknál a függvények változóinak és Ha azt telepítettük, akkor az enyémet nevezzük vagy helyez- az eredmény átvitelére is alkalmas. zük át, így kerülve el az ütközést.) Amennyiben adatbázis- • Számos program a beállítások tárolására használja. kötést is használni kívánunk, akkor a PostgreSQL Pg modul- • Nos, igen, az én HTML/PHP-elõállító programom bemene- jára is szükségünk lesz. Ha képátalakításokra (conversion) teként is ezt választottam. is szeretnénk használni, az Image::Magick modul is kell. Az utóbbi lesz írásom témája. Ha ezek megvannak, akkor a programot (xtend) másoljuk valahová a burkunk elérési útjába (központi telepítésnél, több A program felhasználó számára /usr/bin vagy /usr/local/bin)), az elõre Néhány évvel ezelõtt készítenem kellett néhány honlapot, de létrehozott elemeimet pedig az xtend program $global vál- gyorsan belefáradtam, hogy állandóan ugyanazokat a HTML- tozójában megadott könyvtárba (alapban /usr/local/httpd/ tagokat gépeljem be (a vizuális szerkesztõk nem tetszettek, xml_mod, de ez megváltoztatható). Az Element.pm modult mivel sok tekintetben korlátoznak), ezért elõször néhány a Parser.pm-mel azonos könyvtárban helyezzük el.

68 Linuxvilág Kovácsmûhely

Példa az index.xml-re

]> <_def arnyek="6" lapszin="white" lalign='center' arnyekszin="gray" width="100%" align="center" valign="center" height="">

© Kiskapu Kft. Minden jog fenntartva
<__>Ide jön a body...

Röviden a mûködésrõl • A formai szabályok leírásánál használt karakterek nem A program bemenetként XML formátumú fájlt vár. Mint szerepelhetnek a szöveges törzsekben, mert ettõl az elemzõ késõbb látni fogjuk, a mûködés egy XML MakeFile használata kiakad. Ilyenkor használjuk a segítségével jelentõs mértékben bõvíthetõ. Célszerû is így hasz- határolókat, az ezek közötti részt nem elemzi. nálni, mivel néhány képesség másként nem érhetõ el (szándé- • Megjegyzést a HTML-ben megszokott kosan írom így, nagy betûvel kezdve a szavakat a névben, határolók közé írhatunk. hogy megkülönböztessem az „igazi” makefile-tól). Mivel az • Készíthetünk egységeket (entity), amiket az &nev; XML elég érzékeny a formai szabályok betartására (valójában formában utóbb a tagok tulajdonságaiban és a szöveges a legkisebb hiba esetén elszáll), felhívnám a figyelmet az XML törzsben használhatunk. A meghatározás formája: néhány sajátosságára: ]> Például: Ennek a fájl elején kell lennie, az elsõ valódi tag elõtt. ... Természetesen több egységet is alkothatunk, ekkor több • Tartalom nélküli tagokat is lehet használni, de akkor ENTITY következik egymás után. önmagában kell zártnak lennie. Például a HTML img tagját így kell használni: Az egyszer már meghatározott elemek újrafelhasználható- ságát olyan módon oldottam meg, hogy minden meghatáro- • A tagok minden tulajdonságát (attributum) idézõjel zást külön fájlba helyeztem, ezek a tag nevét viselik, .xml vagy egyszeres idézõjel (aposztróf) között kell megadni, kiterjesztéssel. Annak érdekében, hogy különbözõ szintû a HTML-lel ellentétben akkor is, ha egy szóból áll. meghatározásaink lehessenek, a program három rétegû kere- • A teljes fájlnak is egy nyitó, illetve záró tag között kell sést alkalmaz: elõször az adott .xml-fájlt keresi abban a könyv- lennie, ha más nincs, erre jó a tárban, amelybõl futtatjuk, azaz ahol a fõ fájl helyezkedik el;

www.linuxvilag.hu 2003. augusztus 69 Kovácsmûhely

utána az úgynevezett site könyvtárban, majd a globális könyv- A rendszermeghatározások közötti különbséghez képest tárban (lásd fent is). Ha megtalálja, akkor önhívó (recursive) annyit módosítottam, hogy fent az egység meghatározásában módon kezdi el elemezni õket. Ha nem találja meg, akkor elvettem a bevezetõ / (per)jelet. Ez akkor szükséges, ha az az adott tagot egy az egyben átmásolja a kimenetre: így meg- oldalt HTTP-kiszolgálón keresztül kérjük le, és a képeket a oldott, hogy az eredeti HTML-elemek általunk írt meghatá- törzskönyvtárból induló gr könyvtárban helyezzük el, nem rozás nélkül is használhatóak legyenek. pedig az adott fájl könyvtára alatt. Nos, mivel ez eddig elég száraz volt, lássunk egy eleven példát! Ezután a következõ bemeneti fájl segítségével próbáljuk is ki: Tegyük fel, hogy kialakítunk egy (elsõre egyszerû) HTML- oldalt, amit több lap alapjául szeretnénk használni. Ennek meghatározása az alap.xml fájlban a következõ legyen: <_def tag='alap' szin='white'> A lap eleje

<__/> s vége...

© Kiskapu Kft. Minden jog fenntartva

Itt két különleges tagot láthatunk: az _def és a __ nevût. Ezt lefordítva a képünkön látható eredményhez jutunk. Általában a „rendszer” tagokat aláhúzásjellel kezdem (ez más programnyelvekben is szokásos), a megkülönböztetés érde- kében. Az _def amellett, hogy biztosítja az XML-nek szük- séges bennfoglaló tagot, alapértelmezett tulajdonságokat tud felvenni. Ebben a példában ilyen a szin, amelynek értéke white. A másik tag az __ nevû. Ennek az a feladata, hogy a tároló típusú tag meghatározásában kijelölje azt a helyet, ahol a felhasználáskor megadott tartalom bemásolásra kerül. Lássuk, hogyan használjuk ezt, és mindjárt érthetõbb lesz! Az index.xml fájlba írjuk be a következõket:

Ide jön a tartalom.

Ezután a következõképpen „fordítsuk le”:

xtend index.xml > index.html

Ekkor a következõ tartalmú index.html fájlt kapjuk: Mint látható, egy meglehetõsen összetett HTML-fájlt kaptunk, a bemenet viszont kifejezetten egyszerû. Természetesen azt is megtehetjük, hogy a lap leírásából még több részt viszünk át az Ide jön a tartalom. alapmeghatározásba: ebben az esetben az is lehetséges, hogy az egyedi fájlokban most csak a és közötti részeket írjuk be. Sorozatunk következõ részében megnézzük, hogyan tudjuk Mint látható, a meghatározásnak megfelelõen kibõvítette a az XML MakeFile segítségével egy teljes honlap oldalszer- bemenetet (ezért neveztem xtend-nek, azaz extend-nek a prog- kezetét leírni, milyen módon segít ez a különbözõ navigációs ramot). Mivel szin tulajdonságot nem adtunk meg az alap- menük elkészítésében, valamint további elemekkel ismerke- tagnak, az alapértelmezettet használta. Ha most ezt írnánk: dünk meg. A késõbbiek folyamán sorra kerül a program mint képkezelõ (átméretezés, vágás, montázskészítés stb.) alkalma- zása, valamint az SQL-illesztés, amivel nagyon elegánsan készíthetünk például árlistákat. Észrevételeket a akkor a bgcolor értéke is ez lenne, azaz az alapértelmezettet [email protected] címre várok. felülírhatjuk. Mielõtt valaki kijelentené, hogy ez eléggé fejletlen dolog, Havránek Ferenc nézzünk meg az elsõ részben egy bonyolultabb példát is. Kidolgoztam egy olyan keretet, ami úgy néz ki, mintha (meg- Automatikamérnökként dolgozik. Kedvtelései közé felelõ színválasztás esetén) egy papírlapon lenne a szöveg vagy tartozik mindenféle kétkerekû jármûvön (kerékpár és más tartalom, és árnyékot vetne a háttérre. A neve legyen: motor) való közlekedés. Ezenkívül szívesen tölti idejét lap1. Meghatározása a rendszermeghatározások között talál- programozással, nem csak PC-s, hanem egyéb ható meg, lásd listánkon (elõzõ oldal). környezetben is, például mikrovezérlõ programokat ír.

70 Linuxvilág Fogadó a Linuxhoz

Új, idegen nyelvek felfedezése Keressük meg a megfelelõ szót, tanuljuk meg kiejteni, és a kívánt szöveget fordítsuk le magyar nyelvre.

z az egész egymás megértésérõl szól, François. Vala- hányszor párbeszédbe elegyedünk valakivel, aki egy másik országból jött, arra teszünk próbát, hogy közös Ealapot találjunk az eszmecseréhez, általában egy olyan nyelv választásával, amelyet mindketten értünk, vagy ha ez nem megy, akkor oda-visszafordítgatással. Quoi? Természetesen igazad van, mon ami. Néha nem egy-

szerû dolog magunkat megértetni, még azokkal sem, akik © Kiskapu Kft. Minden jog fenntartva ugyanazt a nyelvet beszélik. Hiába gondoljuk, hogy ismerjük egy bizonyos szó jelentését, semmi nem biztosítja, hogy akihez beszélünk, a szót ugyanolyan módon értelmezi. Ez az egyik oka az értelmezõ szótárak létezésének – és a Scrabble létezésének is. Á, mes amis! Örülök, hogy látlak titeket! Isten hozott titeket 1. kép A Kdict könnyû szótári keresést biztosít a hálózaton keresztül Chez Marcelnél, az ízletes Linux-konyha és a világ legki- tûnõbb borainak otthonában! Helyezzétek magatokat kénye- lembe! François és én éppen arról beszélgettünk, hogy milyen kihívást jelent megértetni magunkat másokkal, és a valódi jelentést eljuttatni valakihez. François, neked mindez már nem új, úgyhogy gyorsan szaladj le a pincébe, és hozd vissza 2. kép A Kdict azonnali elérése azt az 1999-es Napa Valley Cabernet Sauvignont, amit koráb- ban kóstolgattunk – vagyis inkább minõségi ellenõrzésnek felsõ részén. Elsõ indításkor csak a C gomb látható (a kiválasztott vetettünk alá. szöveg megadása), a másik kettõ szürke. A szavak nagyon fontosak, a megfelelõ szavak pedig még Gépeljünk be egy szöveget a kis ablakba – akár csak egy szót inkább, mint azt bármelyik író el tudná nekünk mondani. vagy kifejezést –, nyomjunk ENTER-t, a Kdict pedig megjeleníti Ez különösen akkor van így, amikor olyasvalakivel próbáljuk azokat a meghatározásokat, amiket a különféle forrásokból felvenni a kapcsolatot, aki nem beszéli a nyelvünket. Linux- össze sikerült gyûjtenie. Arra is lehetõségünk van, hogy az rendszerünkkel élvezetes órákat tölthetünk annak megismeré- éppen nézett weboldalon vagy dokumentumban kijelöljünk sével, hogyan javíthatjuk ezt a megértést. egy szót (kettõs kattintás), és a kisalkalmazás C gombjára kat- Elõfordulhat, hogy a szavak jelentése csak egérkattintásnyira tintsunk. A Kdict önmûködõen elindul és megszerzi a kivá- van tõlünk. Ha a KDE 3.0-s vagy késõbbi változatát futtatjuk, lasztott szó meghatározását. kipróbálhatjuk a következõ fogást. Tegyük fel, hogy a cooking Ha nem a KDE-t használjuk, vagy ha az egyszerûbb megol- szó értelmezését keressük. Nyissuk ki a Konquerort, gépeljük dásokat részesítjük elõnyben, hadd mutassak be egy pehely- be a cím helyére a dict: cooking szöveget, és nyomjunk ENTER-t. könnyû szöveges módú ügyfélprogramot, ami hasonló szol- A Konqueror ennek hatására keresést hajt végre a Merriam- gáltatást nyújt. Ez Vishal Verma edict nevû programja – kíván- Webster hálózatos szótárában. Ha a szinonimaszótárban sze- csi vagyok, hogy kikerestétek-e a szó jelentését a szótárból. retnénk ugyanezt a keresést végrehajtani, a ths: cooking szöve- A programot az  http://edictionary.sourceforge.net címrõl get kell az elõbbi helyett beírnunk. tölthetjük le. Az edict nem több, mint egy Perl-parancsfájl, A KDE a kdenetwork csomag részeként Kdict néven egy de a feladatát így is rendesen elvégzi. A telepítésrõl szólva ragyogó beépített szótárprogramot is tartalmaz. A legvalószí- tényleg nincs sokkal több teendõnk, mint kicsomagolni a tarral nûbb, hogy a programot a KDE futtatómenü (a nagy K) Utili- és gzippel becsomagolt állományokat. A parancsfájlt abból a ties (segédprogramok) menüpontja alatt találjuk. A programot könyvtárból futtathatjuk, ahová kicsomagoltuk, de több mint nevének begépelésével parancshéjból is futtathatjuk (lásd az valószínû, hogy inkább a make install paranccsal akarunk 1. képet). Lépjünk be, és a Kdict csatlakozik a különbözõ hálóza- a /usr/bin könyvtárba a fájlról mentést készíteni. ton keresztül elérhetõ szótárakhoz, hogy elõkeresse az alkal- A program futtatásához írjuk be az edict parancsot, majd mas meghatározást. A források között szerepel többek között mögé azt a szót, aminek a jelentését meg szeretnénk vele a Merriam–Webster szótár, a Wordnet, a Jargon File és a Devil's kerestetni. Szinonimakereséshez az ethes parancs mögé kell Dictionary. a keresett szót beírni. Ha az általunk keresett szót nem találja, A Kdict villámgyors eléréséhez Kicker panelünkre feltehetünk egyéb választási lehetõségeket ajánl. egy kézre álló kisalkalmazást. Ennek módja a következõ: jobb kat- Az ethes program egy egyszerû közvetett hivatkozás, ami tintás a nagy K betûn, a Panel menü AddAppletDictionary az edict-re mutat, ebbõl következõen a szinonimakeresés kiválasztása. Most egy új program-kisalkalmazást kell látnunk lényegében ugyanazt a folyamatot indítja el, csak az eredmény Dictionary felirattal és három kis gombbal a Kicker panel jobb lesz különbözõ:

www.linuxvilag.hu 2003. augusztus 71 Fogadó a Linuxhoz

[marcel@mysystem edict]$ ethes program edict - Your personal command line dictionary. Verison 1.0. Looking up "program" in Merriam Webster Online Thesaurus... Entry Word: program Function: noun Text: 1 a formulated plan listing things to be done or to take place especially in chronological order Synonyms: agenda, calendar, card, docket, programma, schedule, sked, timetable Related Words: bill; slate; plan Idioms order of the day 2 Synonyms: COURSE 3, line, policy, polity, 3. kép Wordtrans – személyes fordítószótárunk  © Kiskapu Kft. Minden jog fenntartva procedure

Ha már a szótárakról beszélünk, mi a helyzet akkor, amikor maga a szótár szólal meg? Vagy még tényszerûbben: mit érde- mes elmondani Jeffrey Clement MWSpeaker nevû program- járól, amit úgy jellemez, mint „a valaha létezett legrosszabb beszédszintetizáló program”? Ezek az õ szavai, nem az enyé- mek. A gondolat egyszerû, de lehet, hogy egy kicsit bolondos. Beírunk egy szót vagy kifejezést, az MWSpeaker pedig emberi hangon felolvassa nekünk a beírtakat. A kérdéses beszéd a Merriam–Webster hálózati szótárából származik. Röviden, a program megkeresi az egyes szavakhoz tartozó wav-fájlt, letölti, és sorrendben lejátssza õket. Lévén az MWSpeaker egy Python-parancsfájl, igazából még fordításra sincs szükség. Egyszerûen töltsük le a programot a  http://www.jclement.ca/Projects/mwspeaker címrõl, ezután pedig bontsuk ki a tar és gzip által tömörített csomagot. Mielõtt ténylegesen használatba vennénk a programot, szükségünk 4. kép Az Editct felülete lesz még néhány további csomagra, leginkább a wxPythonra, a pygame-re és a PythonCardra. A program futtatásához lép- arra a nyelvre, amelyiken beszélünk. De ahogy Adams is írja: jünk be az mwspeaker-1.0 könyvtárba (ahová az MWSpeakert „Mindez nem akadályozta meg, hogy a szegény Bábel-hal kibontottuk), és gépeljük be a következõ sorokat: hatásosan lerombolja a különféle fajok és kultúrák közti összes kommunikációs akadályt, és így több és véresebb háború mkdir data okozójává váljék, mint bárki vagy bármi más a történelem python mwspeaker.pyw folyamán.” (Molnár István fordítása) A KDE webböngészõ, fájlkezelõ és svájcibicska keresztezé- A data lesz az a könyvtár, ahol a wav-fájlok tárolása történik. A fel- sével született programja, a Konqueror beépített horoggal használói felület nagyon egyszerû. Írjunk be egy szót vagy kifeje- rendelkezik az AltaVista Bábel-halához. Csak látogassunk zést, kattintsunk a Say it feliratra, és várjunk. Azért mondom, el egy idegen nyelvû oldalra – könnyedén lefordíthatjuk az hogy várjunk, mert az MWSpeaker minden egyes szónak szép ott talált információkat. Én például véletlenszerûen meg-

sorjában letölti a wav-fájlját, még mielõtt lejátszaná a szöveget.  Az eredmény nagyon szórakoztató, mert a kiválasztott szavakat elõadó hangok igen különbözõek lehetnek – elõfordulhat, hogy KAPCSOLÓDÓ CÍMEK a férfi és nõi hangok egy furcsa keverékét kapjuk eredményül. Mindez nagyszerû az angol nyelv szempontjából, de a Linux és Edict  http://edictionary.sourceforge.net a nyílt forrású programozók végül is a világ minden táján meg- A KDE honlapja  http://www.kde.org találhatók, ahogy a Linux-felhasználók is. Igaz, hogy egy angol A Kdict honlapja értelmezõ szótár hasznos azoknak, akik az angolt nem az elsõ  http://www-user.rhrk.uni-kl.de/~gebauerc/kdict nyelvükként tartják számon, de néha fordításra is szükség van. Az MWSpeak honlapja François, remplisser les verres de nos invités, s'il vous plait.  http://www.jclement.ca/Projects/mwspeaker Néha úgy érezzük, hogy ahhoz, hogy a franciát (vagy az TuxFinder  http://www.tuxfinder.org olaszt, a spanyolt, a németet) angol nyelvre le tudjuk fordítani, Wordtrans  http://wordtrans.sourceforge.net szükségünk van egy Bábel-halra. De mi az a Bábel-hal? – kér- Marcel borlapja dezhetitek. Douglas Adams, a Galaxis útikalauz stopposoknak  alkotója szerint ez egy kis sárga hal, amit ha a fülünkbe http://www.marcelgagne.com/wine.html teszünk, bármilyen nyelvet azonnal és folyamatosan fordít

72 Linuxvilág Fogadó a Linuxhoz

látogattam a Die Welt német nyelvû magazint, amirõl Mint már említettem, további szótárak hozzáadására is mód megtudtam, hogy azt jelenti: „A világ”. van, ehhez a menüsor View (nézet) menüjének Introduction Amikor az oldalunk betöltõdött, kattintsunk a Konqueror Tools (bevezetés) pontját kell a lehetséges hivatkozások végett kivá- (eszközök) menüpontjára, válasszuk a Translate Web Page lasztanunk. Ez nem csak a Wordtrans képességeinek a kiter- (weboldal fordítása) lehetõséget, és válasszunk nyelvet a le- jesztését jelentheti, léteznek olyan letölthetõ szótárak is, amik gördülõ listából. Én a „German to English” lehetõséget válasz- alaposabbak, mint az alapértelmezett fájlok. Egy letöltött nyelvi tottam, et voila! Máris olyan nyelven olvashatjuk a szöveget, fájl hozzáadásához a menüsor Dictionaries (szótárak) New aminek számunkra jóval több értelme van. (új) pontját kell kiválasztanunk, és követnünk kell a megjelenõ A saját személyes és helyi fordítószótár érdekében okos dolog- utasításokat. Számos szótárat sikerrel töltöttem le a nak tûnhet egy pillantást vetni Ricardo Villalba Wordtrans nevû  http://www.linuks.mine.nu/dictionary címrõl, és kifogástalan programjára a  http://wordtrans.sourceforge.net címen (lásd eredménnyel telepítenem is sikerült õket. a 3. képet). A program lefordítása egy kicsit trükkös is lehet, de Attól tartok, hogy nem beszélek magyarul, mes amis, de nagy gondot nem okozhat. Ellátogatva a TuxFinder honlapjára szemmel láthatóan azt kell mondanom, hogy „az idõ lejárt”, ( http://www.tuxfinder.org) jócskán találhatunk elõre lefordított ami az asztali tolmácsom szerint annyit jelent, hogy az idõ csomagokat is. Letöltöttem a Wordtrans alapcsomagját, a Word- eljárt. Csakugyan itt a záróra, de még egy pohár borra azért trans-kde RPM-csomagot, és telepítettem is õket. Ha csomagokat van idõnk, mielõtt elmennétek. Tartsátok a poharaitokat, és is le szeretnénk tölteni, akkor mindkettõre szükségünk lesz. Talál- hûséges pincérem, François, boldogan kiszolgál benneteket.

kozhatunk a Wordtrans-qt és Wordtrans-web csomagokkal is. Látjátok, egy kis felfedezõút Linux-konyháinkban, és egy nap © Kiskapu Kft. Minden jog fenntartva Alapesetben a Wordtrans angol, francia, olasz, portugál és talán minden erõfeszítés nélkül társaloghatunk a világgal. spanyol szótárakkal érkezik, de továbbiak is hozzáadhatók. A következõ alkalomig, mes amis, ürítsük poharainkat egymás A Wordtrans honlapján és a programban is találhatunk egyéb egészségére. A votre santé! Bon appétit! nyelvi fájlokra mutató hivatkozásokat. Amikor elindítjuk a Kwordtrans programot, úgy tûnhet, hogy semmi sem történt, Linux Journal 2003. július, 111. szám de pillantsunk csak a Kicker panel rendszertálcájára – itt ész- revehetünk egy kis szürke könyvet ábrázoló ikont. Erre rákat- Marcel Gagné ([email protected]) tintva megjelenik a Kwordtrans felhasználói felülete. A kívánt Mississaguában, Ontario államban él. nyelv kiválasztásához kattintsunk a menüsor Dictionaries Õ a szerzõje a Kiskapu kiadásában tavaly szep- (szótárak) pontjára, és válasszunk egyet a listából. Válasszuk temberben megjelent Linux-rendszerfelügyelet ki a fordítás irányát (például angolról spanyolra, spanyolról (ISBN 96-9301-40) címû könyvnek (jelenleg is angolra), írjunk be egy szót, és nyomjunk ENTER-t. egy könyvön dolgozik).

www.linuxvilag.hu 2003. augusztus 73 Mustra

Játékmustra

A fejlesztõk mostanában sem tétlenkedtek, és újabb játékokkal örvendeztették meg a Linux-felhasználókat. Ezek közül szemezgettünk.

FlightGear egy körülbelül négy éve indult projekt, összes téglát úgy bombázzuk szét egy pingponglabdával, hogy A amelynek a célja nem kevesebb, mint egy nyílt for- a labda ne essen le, hanem visszapattanjon a képernyõ alján rású polgári repülõgép-szimulátor létrehozása, ami általunk irányított lapról. különbözõ felületeken képes futni. Noha az elsõ üzembiztos A break-out játékok népszerûsége nem csökkent, máig is kedvelt változat még mindig nem jelent meg (jelenleg a 0.9.2-es válto- idõtöltés unalmas géptermi órákon, illetve a fõnök távollétében zatnál tart), nem kell már sok hozzá, hogy felvehesse a ver- a munkahelyeken. Sokféle képviselõje van ennek a stílusnak, senyt kereskedelmi forgalomban kapható társaival. mind közül azonban talán az LBreakout2 a legprofibb.

© Kiskapu Kft. Minden jog fenntartva Ebben a játékban minden megtalálható, amit egy ilyen szimu- Nemcsak az ötven végigjátszható pálya, a könnyen kezelhetõ látornak tudnia kell. Több választható géptípussal száguldoz- pályaszerkesztõ, illetve az Internetrõl letölthetõ témák (amelyek hatunk – a Cesnától kezdve a Boeing 747-esen keresztül egé- egyéni külsõt s hanghatásokat kölcsönöznek) miatt érdemelte szen az ûrrepülõig. Többjátékos módra is lehetõség nyílik, ám ki ezt a címet, hanem azért is, mert rengeteg olyan ötlettel pum- ez a része még nem túl kiforrott. A grafikára egy rossz szavunk pálták tele, ami színesíti, ugyanakkor nehezíti a játékmenetet. sem lehet, olyan apróságokra is odafigyeltek, hogy az ég színe Ilyenek például a fentrõl hulló rendkívül sokféle csomagocskák a napszakoknak megfelelõen valósághû legyen. A repülésnél – ezeket felszedve hol pozitív, hol negatív hatások érnek min- az egyik legfontosabb meghatározó tényezõ az idõjárás, amit ket: például pluszpontot kaphatunk, megnõhet az ütõ hossza, a felhasználó a korábbi változatban szerepelthez képest sokkal egy további életet nyerünk, esetleg még egy labdát (ez jó, mert pontosabban is beállíthat. Véletlenszerû idõjárást is választ- ha az egyik le is esik, még mindig ott van a másik). A legjobb hatunk, ekkor meglepetés lesz, hogy milyen viszonyok között dolog, ami történhet velünk, hogy alul egy fal képzõdik, amirõl kell repkednünk. a labda visszapattan (a mélybe esés helyett). Így a játékosnak semmi dolga nem akad, csak meg kell várnia, amíg a folyama- tos pattogásban lévõ labda az összes téglát szét nem veri. Természetesen kevésbé elõnyös hatások is érhetnek minket, ezek közül a legötletesebb az elsötétedés, amikor a téglákat nem látjuk, csak a labdát és az ütõt. Ennek egy kicsit nehezebb változata, amikor az ütõ is eltûnik, így csak sejtéseink lehetnek a pontos helyérõl. Téglából is rengetegféle van. Létezik olyan, amit eltalálva az egyszerûen szétesik, de akad olyan is, amelyik hatalmas rob- banás kíséretében semmisül meg, a környezõ téglákat is magá- val rántva. Olyan tégla is akad, amit nem elég egyszer eltalálni, hanem kétszer vagy akár háromszor le kell bombáznunk. Az LBreakout2 utolsó szót érdemlõ szolgáltatása a többjátékos mód, ami lehetõséget ad arra, hogy a megszállottak Interneten keresztül is összemérhessék az erejüket.  http://lgames.sourceforge.net/index.php?project=LBreakout2

Emilia Pinball Ha flipperezni támad kedvünk, ám lusták vagyunk lemenni A FlightGear azonban még koránt sincs készen. Továbbra is az elsõ kocsmába, akkor az Emilia Pinball a mi játékunk! Igaz, zajlik a hibajavítás (bugokból sajnos még mindig szép számmal a valódi élményt ez sem pótolja, sõt valószínûleg nem ez a akad), illetve az apróságok csiszolása. Ha egyszer teljesen játék a legszórakoztatóbb ebben a mûfajban, de legalább fut elkészül (ez remélhetõleg a közeljövõben várható), akkor talán Linux alatt. Fél éjszakát ezzel is el lehet szórakozni, fõként az egyik legrészletdúsabb repülõszimulátort tisztelhetjük e ilyen forróságban kitûnõ kikapcsolódás. játékban. Sõt ez már nem is csupán játék, hiszen akár pilóták  http://pinball.sourceforge.net/ kiképzésére és más „komoly” feladatokra is használható. A nyílt forrás pedig csak használ a FlightGear efféle felhasz- TuxType2 nálásának, hiszen bárki szabadon kiegészítheti, bõvítheti Nagyszerû segédprogram, segítéségével csemeténk játszva a program tudását. összebarátkozhat a billentyûzettel. A TuxType2 többféle játék-  http://filghtgear.org módot tartalmaz, amelyekkel gyakorolhatjuk, hogy melyik gomb hol helyezkedik el a billentyûzeten. Az egyik közülük LBreakout2 a „pingvinetetõs“: a képernyõn fentrõl lefelé halak úszkálnak, A „break-out” talán a legõsibb számítógépes játékok egyike, mindegyikükön egy-egy betû szerepel. Ha lenyomjuk a betû- biztos mindenki játszott már ilyennel. A feladat az, hogy az höz tartozó billentyût, pingvinünk odasétál a hal alá, és amikor

74 Linuxvilág Mustra

volt. Rick közeli rokonságban állt Indiana Jonesszal, csak míg az utóbbi a mozivásznakon menekült lezúduló kövek és gyil- kosabbnál gyilkosabb csapdák elõl, addig Rick a számítógépes játékokban tette ugyanezt. Az Xrick is azoknak az idõknek a hangulatát idézi mind a grafika, mind a hanghatások terén. Ez úgy értendõ, hogy a grafika körülbelül az alap-Nintendo csúcsteljesítményével vetekszik, a hanghatások pedig némi buta pittyegésben kime- rülnek. Mindenesetre azok számára, akik nosztalgiázni szeret- nének vagy már unják a 3D-s csodákat, kihagyhatatlan darab.  http://www.bigorno.net/xrick/

Majesty Végre elkészült a Majesty Linux alatt futó változata is. A játék sajnos nem ingyenes, viszont a játszható bemutató- példány szabadon letölthetõ a  http://demos.linuxgamepublishing.com/majesty/ oldalról.

A Majesty nem pusztán egy valós idejû stratégiai játék. A fej- © Kiskapu Kft. Minden jog fenntartva lesztõk fantasybirodalom-szimulátornak nevezik. Készítõi valójában a stratégiai elemeket ötvözték a szerep- és kaland- játékokban megtalálható elemekkel. Feladatunk az Ardiana nevû királyság irányítása. Ez nem merül ki az építgetésekben, például rendeleteket is kell hoznunk, amelyek erõsen befolyásolják birodalmunk lakóinak a viselkedéséi. A lakosságot nemcsak rendeletekkel, hanem épületek felhúzásával is befolyásolhatjuk. Ha például sok kocsmát vagy játéktermet építünk, javul a közhangulat, és így kevésbé lesznek érzékenyek az adóemelésre. De ez még mind semmi! Segítségünkre vannak az úgynevezett hõsök is, akiknek feladatokat adhatunk. Minden hõs más-más személyiségjegyekkel bír, és gyakran önállóan is cselekszik. Ha hõsünk személyisége olyan, akkor könnyen elkalandozhat, és semmibe veheti a kitûzött feladatot. az leér, menthetetlenül megeszi. A cél, hogy ilyen módon az A hõsök viselkedését azonban rendeletekkel vagy épületek összes halat megetessük Tuxszal. felhúzásával szabályozhatjuk. Ha például iskolákat, könyv- Létezik egy másik játékmód is, ebben a halak már szavakkal tárakat telepítünk, akkor a hõsök megfontoltabbak lesznek, „érkeznek”, amiket annyi idõ alatt kell begépelnünk, amíg le így küldetéseiket jobban végre tudják hajtani. nem érnek a képernyõ aljára. Mivel a nehézségi fokozat állít- A Majesty tehát egy összetett, ugyanakkor szórakoztató és ható, még azoknak is kihívást jelenthet, akiknek a keze alatt érdekes játék. Minderre rátesz a gyönyörû szép grafika és a füstölni szokott a billentyûzet. hanghatások, amelyek sajátos hangulatot adnak a játéknak.  http://tuxtype.sf.net/ Garzó András ([email protected]) Xrick Körülbelül három éve foglalkozik Linux- és más Unix-rendszerekkel. Még a Lara Croft elõtti idõkben, a nyolcvanas és a kilencvenes Legjobban az operációs rendszerek lelkivilága érdekli, de nyitott évek elején volt egy név, amire minden „mászkálós” játékok egyéniség. Kedvenc étele a palacsinta, és van egy Richard nevû iránti rajongó felkapta a fejét. Ez a név pedig a Rick Dangerous macskája. Minden észrevételt, megjegyzést, levelet szívesen fogad.

www.linuxvilag.hu 2003. augusztus 75 Mustra

Játszótér

E havi témánk a múlt hónapból öröklõdik: a Quake grafikai motorjára épülõ játékok leírását folytatom.

stenem, „bûn” lenne kihagyni benne a Wages of SiN küldetéslemez I a SiN-t. A SiN játék – mint neve támogatását. A küldetéslemezt egyszerû is utal rá – a bûnrõl, valamint másolással fel lehet rakni (2015 könyvtár, annak üldözésérõl szól. valamint a pack4.pak fájl), de mi haszna, ha sem a zseblámpa, sem az infrasze- A SiN története müveg, sem a pluszfegyverek nem hasz- Tíz évvel ezelõtt, 2027-ben Freeport az nálhatók, mert meg sem jelennek?

© Kiskapu Kft. Minden jog fenntartva összeomlás szélén állt. Az eredmény- Ugyanúgy, akárcsak a kötelek és más telen rendõri erõk elvesztették a hosszú, tárgyak, amik jellemzõen csak a Wages kemény harcot a bûn ellen. A városnak of SiN-ben találhatók meg. Pedig min- segítségre volt szüksége, a túlterhelt ha valakinek elég gyors a CD-meghaj- dehhez csak az 1.03-as változat kellene kormányzat nem tudta fenntartani a tója, akkor elégséges csak az ajánlott – sajnos ezekrõl az élményekrõl így békét az utcákon. A kormányzat új tör- tételeket felrakni a gépére. Furcsa, hogy lemaradunk. vényjavaslatot indítványozott, ami egy míg az eredeti windowsos változat nem Bevallom, mindezek ellenére ez a prog- önálló, a saját biztonsági erejüket képe- rendelkezik szériaszámmal, addig a ram az egyik kedvencem. zõ testület felállítását engedélyezte, linuxos változatot a Hyperion széria- A történet – a Soldier of Fortune-nel ennek egységei a másoderõk. Ezek a száma védi. ellentétben – többszálú. Ebben ugyanis, másoderõk alkalmasak rá, hogy gondos- A telepítést követõen a program elsõre ha valamit nem gyûjtünk be vagy nem kodjanak a városi tanács és a város nem fog futni, mert régi 1.1 változatú sikerül megszerezni, megölni, akkor polgárainak személyes védelmérõl. SDL-fájlokat keres. Nincs semmi gond, másként folytatódik a történet. Termé- A HARDCORPS segítségével a káosz csak hivatkozást kell készítenünk a meg- szetesen azért a 4–5. alkalomra elég lassan alábbhagyott a városban, vissza- kiismerhetõvé válik a program, de még tért a béke és a rend. John Blade ezre- ezután sem lehet megunni. Vajon miért des, a HARDCORPS tulajdonosa és kellett kihagyni a Wages of SiN-támo- csapata pillanatnyilag a veszélyes U4 gatást? Ki tudja? drog forrását vizsgálja. Ebben JC a A felhasználható fegyverek listája: segítõtársa. • Magnum Jelenleg a drog több helyen elõfordul • vadászfegyver – használói nemrég veszélyes dolgokat • orvlövész puska tapasztaltak vele kapcsolatban. Blade • impulzuságyú megpróbálja kideríteni, ki és mi áll e • három karomlábú akna. megmagyarázhatatlan jelenség mögött, és megpróbálja megállítani a terjedését. Soldier of Fortune A bonyolult kirakósdi lassan összeáll, és A program John F. Mullins karakterére egy pont felé mutat, a briliáns bioké- épül. A játék történetét részben John mikus, Elexis Sinclaire felé. életének pillanatai szövik át. Fõhõsünk Elexis talány a káprázatos külsõ mögött; járt Vietnamban, részt vett egy pár olyan ellenzéki képviselõ, aki megmu- diverzáns akcióban, 21 év szolgálat után tatja, hogy az üzleti világban nincs fejezte be katonai pályafutását és köz- kegyelem. A háttérben dolgozik, rejté- ben szépen feldíszítette az egyenruháját. lyes boszorkánykísérletet végez az em- Tanácsadóként részt vett a program beriség evolúciójának és ezeréves tör- kialakításában is. ténelmének a megállítása végett, de A játékban a következõ fõ karakterekkel semmi sem sikerül neki, amit eltervez, találkozhatunk: mert Blade megakadályozza benne. • John Mullins Délnyugat-Oklaho- lévõ SDL fájlra, méghozzá a program mában született, három bevetésen Telepítés által keresett néven. (A pontos fájladatra vett részt Vietnamban, és háromszor A telepítõprogram használatakor meg- akkor jöhetünk rá, ha a programot kapta meg a „Bíborszív”-et. Tagja adható, hogy milyen mennyiségû állo- xterm alól a SiN saját linuxos könyvtá- volt a vitatott Phonix csoportnak, mányt szeretnénk felrakni a gépünkre. rában kiadott paranccsal próbáljuk meg tagjai magas beosztású vietkongok Tapasztalatból kell mondanom, hogy a futtatni.) A másik furcsaság az, hogy ellen követtek el merényleteket. teljes telepítés teljesen fölösleges, mivel noha a program változatszáma 1.10-es, Mullins a hadseregbõl történõ visz- a program CD nélkül nem fog futni, így ennek ellenére nem programozták le szavonulását követõen konzultánssá,

76 Linuxvilág Mustra

még inkább zsoldossá vált a 12 év Néhány szó a telepítésrõl A történet szinte felejthetõ. Igazából alatt. Jelenleg a U.N. antiterrorista A telepítõ 725 MB-ot tesz fel a gépünkre. nem ez fogja meg a játékost, bár a csoportnak dolgozik, amit csak Telepítés közben nincs egyéb lehetõség, „mentsük meg a bolygót az idegenektõl” „A Bolt”-nak neveznek. Normál viszont a játék indulását követõen jellegû történet önmagában nem jelen- felépítése ellenére Mullins büszke beállítható a „szülõi” kontroll, amivel tene nagy kihívást, sokkal többet nyom az erejére és gyorsaságára, ami több a latban a képi világ, amit a programo- férfinak is dicsõségére válna. zók megalkottak. Én azért nem szeret- • Aaron „Hawk” Parsons Detroit köze- tem a programot, mert tele van kis pén nõtt fel, késõbb harcolt a Siva- mütyür alakokkal, de mihelyt nemcsak tagi Viharban. Parsons a hadsereg a 3Dfx tulajdonosok tudtak a program- egyik megfontolt robbantási szakér- mal 3D-ben játszani, máris nyilvánva- tõje volt. Gyakori partnere volt John lóvá vált, hogy a cselekményhez adott Mullinsnak „A Bolt”-ból érkezõ körítés, a pályák és a grafika együttese munkák esetén. mindenkit el tud varázsolni. Fedezzük • Sam Gladstone, könyvesbolt-tulaj- fel ezt az irreális világot! donos, részmunkaidõs alkalmazottja „A Bolt”-nak. Kapitányként megjárta Telepítés  Vietnamot, remek felderítõ volt, A http://www.icculus.org oldalról © Kiskapu Kft. Minden jog fenntartva késõbb néhány évet a CIA-nál töltött. letölthetõ a telepítõprogram (unreali- 62 éves és szakállas. install.run), ehhez csak a windowsos CD szükséges. CD-mellékletünkre Milyen fegyverek állnak a rendelkezé- felkerült a szükséges állomány. sünkre? • harci kés (henteskés). Fontos tulaj- Szükséges elemek donsága, hogy nemcsak kaszabolni koordinálni lehet a hörgések és a vér 1. A program futtatásához sajnos lehet vele, hanem eldobva távoli mennyiségét a játékban. szükség van egy Unreal Tournament ellenségeket is ártalmatlanná lehet A telepítést követõen az elsõ indításkor játékra, aminek telepítve kell lennie tenni, hang nélkül. nekem egyetlen hang sem jött ki a a Linuxon. • 9 mm-es pisztoly (fekete párduc) gépbõl, így felraktam az 1.06a szerviz- 2. Mielõtt elindítjuk a telepítõprogramot, • nagy pisztoly (ezüst karom). Ezüst csomagot (a CD-mellékleten megtalál- az Unreal CD tartalmát be kell fûzni. színû és sokkal nagyobb hangú és ható), ami azzal együtt, hogy kijavítja pusztító erejû, mint a „kistestvére”. az adott hibát, a Gold változatra frissíti • vadászpuska (vad harcos) a programot. Szintén megtalálható mel- • orvlövész puska (sasszem) lékletünkön a sofmappack.zip, amit a • gépkarabély (raptor) Base könyvtárba kicsomagolva a tele- • hangtompítós SMG (bulldog) pített SoF-ot Platinum változatúvá • nehéz géppuska (M-75 õr) tudjuk varázsolni. A Platinum változat • M202A2 „fényjelzõ” rakétavetõ gyakorlatilag csak új pályákat tartalmaz: • M343D lángszóró airportdm, factorydm, irqdesertdm, • H-24 henger alakú puskagolyóvetõ labdm, plantdm. • mikrohullámú impulzus- Némi ízelítõt is adunk a Platinum válto- fegyver (MP). zat nyújtotta pályák képi világából. Következzen az erre a hónapra valójá- A történet sajnos nem mondható ban eltervezett anyag: a nagy vetélytárs igazán túlkombináltnak, egy-egy pályát a játékok között, az Unreal és annak addig úgysem lehet elhagyni, amíg változatai. a feladatot nem teljesítettük. Furcsa, hogy mindenért pénzt kapunk, amit Unreal semmire nem költhetünk el. Ennek 1998-ban jelent meg az elsõ változat, ami ellenére szórakoztató és a Quake 2 már kiadásakor megosztotta a játékos grafikai motorjából az összes külön- nagyközönséget. legességet kihozó játékkal ülünk szem- Gyakorlatilag két részre szakadt a tábor: ben. Ez a Ghoul (vámpír) leképezési akadt, aki ki nem állhatta, és volt, aki rendszer érdeme, ami nem más, mint istenítette és a fellegekbe emelte a lát- a Raven-kiegészítése a Quake2-motor- vány és játékélmény miatt. Bevallom, hoz. Mit köszönhetünk neki? Az ellen- én kezdetben azok közé a kevesek közé ségek néha olyan vérfagyasztóan, hö- tartoztam, akik ki nem állhatták a prog- rögve halnak meg, hogy gyengébb ramot. Ez akkor változott meg, amikor idegzetû játékosok talán félve néznek a fejlesztõk elkezdték a javítócsomago- a képernyõre. Elõfordult, hogy egy-egy kat kiadni a programhoz, és a végleges agonizáló ellenfél hörgése betöltött 2.2.6-os változattal végre egy olyan egy egész termet, és messzirõl is vissz- játékot tudtam futtatni, ami támogatta hangzott a (például a metróban). TNT alapú kártyámat.

www.linuxvilag.hu 2003. augusztus 77 Mustra

3. Ha a telepítõ nem találja a telepített of-service hibát javítja ki (IpDrv-436- UT-t, akkor a következõ jellemzõkkel Linux-08-20-02.zip). meg kell adni neki: Teendõink az alábbiak lesznek: export UT_INSTALL=/valós/ • Le kell cserélni a gépen lévõ telepített/ut IpDrv.so-t a zipfájlban lévõvel (biz- 4. Hogyha rendelkezel egy windowsos tonsági mentés vagy tartalékmásolat- lemezrésszel, és az ott telepített készítést követõen). Unrealt szeretnéd futtatni Linux • Belátásunk szerint a már meglévõ alatt, akkor: /home/loki/ut/UnrealTournament.ini export SETUP_CDROM=/mnt/ fájlhoz hozzá kell adni az alábbiakat windows/Program\ (a IpDrv.TcpNetDriver részben): Files\Unreal AllowPlayerPortUnreach= (True or False) Mivel a program telepítéséhez kell az LogPortUnreach=( UT, valamint a telepítõprogram is egy (True or False) módosított OpenUT-t teszt fel a prog- ram indításakor, nem az Unrealra Az alapértelmezésbeli beállítások elsõre

© Kiskapu Kft. Minden jog fenntartva jellemzõ képernyõ és menüszerkezet megfelelnek. A program tökéletes fogad minket, hanem az UT-é. futásához feltétlenül ajánlom a legalább 128 MB RAM-ot, és érdemes odafigyelni Unreal Tournament a tárhelyre is, mert csak a telepítés 550 1999-ben megjelent a folytatás, ami az MB-nyi helyt foglal el, és még el sem Unreal nagyon is hiányos hálózati és a kezdõdött a játék, sem a pályamentések! UT grafikailag tökéletes, és nem véletlen, többjátékos módot érintõ hiányosságait A telepítést követõen nem kell a korong, hogy annyian (többek között én is) több- igyekszik pótolni, illetve befoltozni. a program nélküle is tökéletesen fut a re tartják a program grafikai megjelení- A program nem kapott új grafikai mo- megfelelõ erõsségû gépen. Márpedig a tését, mint a Quake3-ét! tort, csak a régit porolták le a fejlesztõk, program gépigénye – sajnos – nagy, egy kicsit belenyúlva ebbe-abba, és ezzel tisztában kell lennie annak, aki az UT2003 máris új néven került polcra a termék. UT futtatására vállalkozik. Lassabb 2002-ben kiadták az Unreal Tournament Furcsa ez azért is, mert valójában olyan kártyákon és gyengébb gépeken segít, 2003-at. Már valódi linuxos anyagról jellegû történettel, mint az Unreal, nem ha 16 bites színmélységet használunk, beszélhetünk, olyannyira, hogy a 3 CD- találkozhatunk. Miként a Tournament mert így felgyorsul a játék sebessége. bõl álló telepítõkészlet utolsó lemezén szó is mutatja, egy bajnokságról, ver- található meg a telepítõprogram. Ügye- senyrõl van szó. Egyetlen teendõnk, sen oldották meg, mivel a program azzal hogy a versenyeket – egyedül vagy egy csapat részeként – meg kell nyernünk. Kezdetben sokan megkérdõjelezték, hogy van-e egyáltalán létjogosultsága egy ilyen programnak, fõként kis ha- zánkban, ahol otthon nincs hálózat, és a program kiadásakor az Internet lassú és drága volt (igaz, most sem sokkal ró- kezdi a folyamatot, hogy átmásolja zsásabb a helyzet). magát a linuxos rendszerre, majd onnan Fontos megjegyezni, hogy a linuxos fut tovább. Ez azért is szükséges, mert változat nem létezik dobozos keres- Ezt viszont sajnos nem lehet a program- a linuxos telepítéshez is kell mind a há- kedelmi termékként. A Loki legalábbis ból állítani, mint a Quake3-ban, hanem rom korong – ezeket a telepítõprogram nem adott ki ilyet, ezért a a grafikus felületet kell beállítani. szépen sorrendben be is fogja kérni.  http://www.tuxgames.com-on meg- A legelsõ indításkor elõfordulhat, A telepítés megkezdésével együtt ve- vásárolt CD-n a windowsos, teljes hogy a játék szaggat és lassú, szintén gyünk magunkhoz egy nagy kanna kereskedelmi változat, valamint a Loki a gyengébb gépeken; ilyenkor a /home kávét, bátrabbak valami erõsebbet is által készített telepítõ található. könyvtárban létrejön egy /loki/ut/ elõkereshetnek, mivel a telepítési UnrealTournament.ini állomány, amit folyamat idegõrlõen sokáig tart. Telepítés érdemes végigböngészni, és a megfelelõ Az UT egyedi megoldásokat próbált Le kell tölteni az ftp://ftp.lokigames.com/ helyen („....=libGL.so”) a VGA kártya felmutatni, a 2003-as változat különbözõ pub/patches/ut/ut-install-436.run fájlt, OpenGL meghajtójára mutató hivatko- játékokból kísérel meg meríteni, ám és rendszergazdai jogosultsággal futtat- zásra lecserélni, például /usr/lib/libGL.so. mégsem érezzük azt, hogy megváltoz- nunk kell. A telepítõprogram keresi A Gnome és KDE esetében is beköltözik tatná a régi élményvilágot. A grafika a windowsos CD-t, így annak benne egy ikon a menübe, amit ki lehet húzni magáért beszél, azt hiszem, szükségtelen kell lennie a meghajtóban, és be is kell a munkaasztalra. jellemeznem a minõséget, illetve lát- lennie fûzve (természetesen a szükséges A játékhoz feltétlenül tudom ajánlani egy ványvilágot, mert a játékosoknak biz- állomány CD-mellékletünkön szintén USB-s egér beszerzését, különben a jel- tosan van fogalmuk róla, hogy milyen megtalálható). Mellékletünkön szerepel lemzõknél nagyon fel kel húzni az egér csodálatosan néz ki az Unreal Tourna- egy biztonsági frissítés is, ami a denial- gyorsítását. Egy dolog azonban biztos: az ment 2003. Az új játékmotor, a nagy

78 Linuxvilág Mustra

Játékhírek

Enemy Territory hogy valakinek végre eszébe jusson, hogy nyes CD-kulcsra is. A Tuxgames ígéretei Megjelent a Return to Castle Wolfenstein ezt a sokak által közkedvelt programot át szerint egy-két héten belül megjelenik a folytatása, illetve küldetése, az Enemy kellene ültetni Linuxra. Jelen pillanatban felhasználóbarát változat, ami feltehetõleg Territory. Mivel ez még nem az „igazi” Loki-alapokon végleges kiadás, csak a nagy sávszéles- nyugvó telepítõt, séggel rendelkezõk töltsék le. Az egyjáté- valamint teljes kos üzemmód teljesen kimaradt belõle. csak kiszolgáló mûködik Linux alatt. Egyéb CD-anyagot Mivel az  ftp.idsoftware.com tárhelyrõl futtatási lehetõség csak Wine vagy WineX fog jelenteni. hiányzik az anyag, a tartalmáért nem az használatával lehetséges. A program a idSoftware a felelõs. kiadást követõen WineX 3.1  http://www.castlewolfenstein.com/ egybõl változat- Örömmel jelenthetem be, hogy a Transga- számot is váltott America's Army 1.7.0 ming hozzáférést engedélyezett az anyagai- 1.30-ra. A folt Megjelent az America's Army 1.7.0 kiadása. hoz. Így a WineX-rõl egy minden részletre 40 MB méretû, A játék egy taktikai program, amit az ame- kiterjedõ anyag fog megjelenni a következõ és elsõsorban © Kiskapu Kft. Minden jog fenntartva rikai hadsereg is támogat. Újabban divat, számban. A rossz hír az, hogy a Transga- a videolejátszási hogy teljes játékokat adnak közre, a játéko- ming semmilyen formában és semmilyen gondokat orvo- sok legnagyobb örömére. A teljesen ingye- lehetõséget nem nyújtva a megoldásra solja (a video- nes program letöltéshez sok idõ és nagy megtagadta, hogy a programot a CD-mel- fájlok nem éppen sávszélesség szükséges, mivel a teljes lékleten közöljük. Linux-megfe- anyag 316 MB. Neverwinter Nights lelõk). Egyúttal bejelentették, hogy az NWN Half-Life Hosszú várakozás után végre megjelent a küldetéslemezt a Shadows of Undertide is A Linuxos Half-Life-ügyfél petícióhoz a Neverwinter Nights végleges ügyfélváltoza- támogatja a linuxos ügyfélhez.  http://www.tuxgames.com/petitions/ ta. Az ügyfél még csak tar.gz formátumban  http://nwn.bioware.com/downloads/ oldalon lehet csatlakozni. Évekkel az eredeti létezik, így a telepítéshez szükség van egy linuxclient.html játék kiadását követõen most került sor arra, windowsos NWN CD-re, valamint egy érvé-

majdhogynem játszhatatlan. net nélkül tehetjük próbára a tudásun- A játékmódok egy újjal bõvültek, a kat. Ezeknek a botoknak az intelligen- „bombing run”-nal – lásd az amerikai ciája nagy fejlõdésen ment keresztül. futballt. Körülbelül ehhez hasonló a Igaz, ezzel már az UT esetén sem volt felépítése, ugyanis a labdát meg kell gond. Gyakorolni pedig a több mint szerezni, és az ellenfél kapujába kell harminc pályán van hely, amikbõl juttatni. Lehet vetõdni, rúgni stb. pon- néhány ugyan ismerõs lehet az UT-bõl, tosan olyan módon, mint az amerikai de még ezeknek is átalakították grafikai fociban. Apróbb módosítás, hogy a megjelenítését. A látottak a legnagyobb Domination esetében 10 mp-ig nálunk részletességgel vannak kidolgozva, kell lennie a zászlónak, különben a mindenféle hatásokkal ellátva (effects). csapat nem kap pontot. Ha már unalmas lesz a gyári pálya és Megszokott fegyvereinkkel a folytatás- minden küldetés, illetve a verseny egyre ban is találkozhatunk, igaz, a modellek jobban megy, akkor az UT-nak megfele- elég nagy fejlesztésen mentek keresztül. lõen itt is rendelkezésünkre áll a pálya- Elsõsorban grafikai módosításokról be- szerkesztõ és a héjrendszer. szélhetünk, mivel maga grafikus alrend- Huh… ezek után mit is mondhatnék? szer is megváltozott. Természetesen Aki megteheti, mert a munkája megen- akadnak használatbeli módosulások is, gedi, annak jó nyaralást, aki pedig például a „translocator”-t (teleport) egy kénytelen az irodában aszalódni, az kamerával látták el, ezzel követhetjük, vegyen elõ egyet a fent felsorolt játékok- hogy mi történik a teleport során. Új ból, és indulhat a móka (az ebbõl eredõ fegyver a villámvetõ (lightening gun), munkahelyvesztésért a felelõsséget felbontású textúrák gondoskodnak róla, ez egy hatalmas villámnyalábot lövell ki azonban továbbra sem vállaljuk). hogy minden élethûbbnek látszódjék. magából, ezzel bénítva meg a gaz ellent. Kosztadinovszki Norbert Ezért viszont fizetnünk kell, és nemcsak Másodlagos fegyverként egy távcsöves a pénztárnál, de a PC-s szaküzletekben (sniper) puskát kapunk. Létezik egy ([email protected]) is. Étvágya ugyanis egy 1 GHz-nél újabb fegyver: a Shield Gun, nevébõl Linux- és játékmániás nagyobb processzort és egy GeForce3- fakadóan inkább pajzsnak felel meg. számítógépõrült. erõsségû kártyát igényel, ennél régebbi Az UT 2003 is tartalmaz gépi ellenfeleket és gyengébb eszközön a program (bot), amikkel helyi hálózat vagy Inter-

www.linuxvilag.hu 2003. augusztus 79 Falatka

Ötletbörze

trickle Hogyan fordulhat elõ, hogy nem Gyakran akadhat olyan kevésbé fontos mûködik az IP-álcázás? Mielõtt be- feladat, ami hosszú ideig fut a háttér- lefognál a rendszermag újrafordításába, ben (például egy nagy FTP-letöltés). gyõzõdj meg róla, hogy az ip- A trickle segítségével a sávszélességet forwarding (IP-továbbítás) valóban be programonként állíthatjuk be, vagyis van-e kapcsolva: cat /proc/sys/ az SSH-munkamenetek válaszideje net/ipv4/ip_forward gyors marad, mialatt az FTP-letöltés Ha ez az érték nulla, akkor a következõ folyik (bár a sebessége kisebb lesz), parancsot használd: echo 1 > és a családtagok, illetve a munkatársak /proc/sys/net/ipv4/ip_forward

© Kiskapu Kft. Minden jog fenntartva sem lesznek idegesek. Az egyetlen hát- rány, hogy nem szabad elfelejtenünk Ha a parancsfájlod összezavarodik, és elindítani azt a programot a trickle akkor is az XShipWars tetszett a legjob- túl sok HTTP-kapcsolatot létesít a rend- programon keresztül, amelynek a háló- ban, ami azóta még jobb lett. Igen, ez szereddel, egyszerûen írd be: zati forgalmát szabályozni akarjuk. egy játék, de a családom éppen a játé- route add -host hostname Futtatásához libevent, libnsl, libdl és kok miatt nem piszkál azért, hogy Ezáltal elkerülheted, hogy a hibás keret glibc szükséges. másik operációs rendszert telepítsek fel. teljesen megállítsa a saját rendszeredet.  http://monkey.org/~marius/trickle Az XShipWars (szerény véleményem szerint) alighanem fajtája legjobbja, Ha egy -rf elnevezésû fájlt szeretnél Crossfire és folyamatosan fejlõdik – nemcsak az törölni, a következõt írd be: Ha szereted a szerepjátékokat, ne keress ügyfél-, a kiszolgáló- és az olyan kiegé- rm -- -rf tovább. A Crossfire egy olyan többsze- szítõ programok, amelyek például az A -- azt mutatja meg az rm-nek, hogy replõs, varázslatos szerepjáték, ami univerzumok létrehozásához szüksége- minden, ami a -- mögött helyezkedik el, hetekre vagy még tovább megakadá- sek, hanem a rendelkezésre álló univer- az a fájlnévhez tartozik, nem pedig egy lyozza, hogy értelmes munkát végezz. zumok is, amelyekben játszani lehet. kapcsoló.  wolfpack.twu.net/Shipwars/XShipWars A Macintosh-textfájlokban található Hasznos ötletek CTRL-MS-t a következõképpen tudod Szükséged lenne régi weboldalaid átalakítani: pontos másolatára, de most már nem tr ´\r´ ´\n´ < eredeti > fixed rendelkezel érvényes azonosítóval azon a kiszolgálógépen? Átjátszóvá vált a levélkiszolgálód? Hasz- Használd a wget parancsot a náld az rlytest-et annak ellenõrzé- --mirror lehetõséggel. sére, hogy esetleg mégsem lett az.

A /usr könyvtárat használhatod csak Tegyél megjegyzésbe mindent, amit olvasható módban, kivéve, ha progra- a /etc/inetd.conf fájlban nem használsz mot telepítesz vagy bõvítesz. A csak vagy nem értesz. Játszhatsz a világszerte megtalálható írható, illetve olvasható befûzéseket kiszolgálókhoz kapcsolódva, vagy saját az fsck a befûzések számolása során fi- Egy második DNS-kiszolgálóra van szük- kiszolgálót is indíthatsz. Egyértelmûen gyelembe veszi, és az átlagos gépindítási séged? Szokás, hogy a Linux-felhasználói sokkal izgalmasabb egy kis csapattal idõ csökken. Ha a számítógéped össze- csoportok tagjai másodlagos DNS-t szol- közösen játszani, mint egyedül. Csak omlik, és újra kell indítanod, a /usr-t az gáltatnak egymás számára. Érdeklõdj egy ne felejts el enni és aludni néha! Futta- fsck nem vizsgálja át. Linux-felhasználói találkozón! tásához X-ügyfél esetén libpng12, libz, libm, libX11, libXext, glibc és libdl; Gtk- Nem tudsz belépni SSH-val a gépre? Vagy ügyfél esetén libpng, libz, libm, libgtk, talán az SSH olyankor kér jelszót, amikor Linux Journal 2003. július, 111. szám libgdk, libgmodule, libglib, libdl, libXi, azt hitted, nem fog? Az ssh -v parancs libXext, libX11, libSDL, libpthread és használatával bõbeszédû hibaüzenetet glibc szükséges. kaphatunk az SSH mûködésérõl. David A. Bandel  http://crossfire.real-time.com ([email protected]) Ha a bash parancsértelmezõben kiadott Jelenleg Panamában él, XShipWars valamelyik korábbi parancsodat szeret- Linux- és Unix-tanácsadással Három évvel ezelõtt bemutattam a néd megtalálni, nyomd le a CTRL-R foglalkozik. Társszerzõje a Downloader for X, az Xpuyopuyo és billentyûkombinációt, valamint néhá- Que Special Edition: hasonló programokat, de nekem már nyat a keresett betûk közül. Using Caldera OpenLinux címû könyvnek.

80 Linuxvilág