Beköszöntõ © Kiskapu Kft. Minden jog fenntartva
Bátran állíthatom, hogy az októberi lapszám a Linux- Amikor nyár elején szervezni kezdtem ezt az akciót, a lel- világ életében egyfajta mérföldkõ. kem mélyén tulajdonképpen éreztem, hogy ennek a dolog- Mint azt olvasóink közül nyilván már sokan tudják, néhány nak mûködnie kell. Biztos persze nem lehettem benne, hónapja azzal a kéréssel fordultunk a magyar linuxos kö- már csak azért sem, mert a nyár valahogy nem a „kirobba- zösséghez ( www.linuxvilag.hu/szerzoknek), hogy segítse- nó aktivitás” idõszaka. Ha júniusban valaki azt mondja nek nekünk megújítani a lap arculatát azzal, hogy cikkek nekem, hogy októberre nemhogy egy teljes lapszámot formájában átadják megszerzett tudásuk egy-egy darabká- „összehoznak” a magyar szerzõk, hanem számos cikket ját a többieknek. várakoztatni kell, mert egyszerûen nem fér bele a 82 oldal- A változás tulajdonképpen már a szeptemberi számon is ba, valószínûleg jót derültem volna rajta. világosan látszott, hiszen számos új, a leghatározottabban Az egész stáb nevében köszönöm nektek! tehetséges szerzõ bukkant fel benne. Az a lapszám, amit az Folytassátok! olvasó most a kezében tart attól olyan különleges, hogy ezt – a kernelhírektõl eltekintve – már kizárólag magyarok írták. Büki András
Most pedig lássuk, mit olvashatunk októberben. A jelenlegi menü: System Rescue CD, Ubuntu, Slackware, Az aktuális kernelhírek után megtudhatunk néhány pikáns Frugalware, blackPanther OS. részletet kiválasztott pingvinünk, Tóbiás szerelmi életérõl. Medve Zoltán a szerverszobák hõmérsékletének mérésére (Csak 18 éven felülieknek!) Aztán hogy Szy György fõszer- mutat be egy kissé talán rendhagyó, de mindenképpen kesztõnk kérésének – miszerint minél nagyobb számban olcsó megoldást, Sütõ János pedig a spamszûrõk mûködé- jelenjenek meg lányok a lapban – is eleget tegyünk, sének alapjait tekinti át. a Magyar Linux Dokumentációs Projekt kapcsán a nõk A „Grafika, multimédia” rovatban folytatódik a Blender és a Linux kapcsolatáról lesz szó. (Szalai András), a PoVRay (Auth Gábor) és az SVG A „Fejlesztõi sarok” rovatban két régi szerzõnk, Fülöp Balázs (Novák Áron) sorozat, illetve megtudhatjuk, hogyan készít- és Komáromi Zoltán folytatja a még az elmúlt korszakban hetünk „óriáspókos-sikongatós” horrorfilmet Blenderrel megkezdett sorozatát (Java és PEAR). (Szabó Péter). Aztán egy körkép következik a legnépszerûbb Linux Végezetül egy vállalati levelezõrendszer kialakításába terjesztések közül néhányról. A tervek szerint ezt a témát kaphatunk betekintést Pallos B. Richárd segítségével. a következõ lapszámokban még újra elõvesszük. Kellemes olvasást kívánunk! Magazin
Hírek
Átkeresztelt Mambo Netrádió kezelni, két Ethernet aljzatával pedig A népszerû, koráb- A felsõ kategóriás közvetlenül DSL- vagy kábelmodem- ban Mambo név hangszórókat gyártó hez, illetve forgalomirányítóhoz lehet alatt futó tartalomkezelõ rendszer a to- brit Acoustic Energy csatlakoztatni. A Thomson a nagykö- vábbiakban Joomla! név alatt lesz elér- „Wi-Fi internet zönség számára egyelõre nem kíván- hetõ – jelentették be a tervezet vezetõi. radio” névvel ja elérhetõvé tenni az új típust, meg- A fejlesztõk már életre hívták a terve- internetes rádióké- vásárlása kizárólag a szolgáltatók szá- zet új webhelyét is, a Joomla! 1.0 szüléket mutatott be. mára lesz lehetséges – õk viszont szá- kiadását pedig szeptemberre ígérik. A rádiókészülék rá- mos lehetõséget biztosíthatnak majd Az elsõ kiadás természetesen nem adásul vezeték nélküli is – noha ez általa, ilyen például a telefonkönyv csak annyiban fog eltérni az utolsó a hagyományos rádióknál magától ér- tartalmának szinkronizálása a háló- Mambotól, hogy átírják a nevét, ha- tetõdõ, itt arról van szó, hogy az zattal, az értesítések küldése a leve- nem számos hibajavítást is tartalmaz internetkapcsolatot is vezeték nélküli lekrõl, a webböngészés, az SMS és majd, illetve a webhelyen található úti csatolóval hozza létre. A Wi-Fi rádió MMS küldés, valamint a készülék terv szerint a jövõben is lendületesen a Real Audio, a WMV és az MP3 adat- belsõ programjának szolgáltató által folytatódik az újabb szolgáltatások folyamokat támogatja, így elvileg az végzett, távoli frissítése. A készülék megvalósítása. interneten elérhetõ rádióadások 99 operációs rendszere Linux alapú, és © Kiskapu Kft. Minden jog fenntartva www.joomla.org százalékát képes fogni. Az adók adata- a szolgáltatók számára különféle it a Reciva cég kiszolgálójáról tölti le, testreszabási lehetõségeket is biztosít Hamarosan összecsavarhatjuk mely több ezer adót ismer a világ min- – éppen ezért talán nem is fogjuk az újságot den tájáról, de a tulajdonos saját szá- Thomson névvel látni. Fontos megje- mítógépérõl származó tartalmak ott- gyezni, hogy a Thomson egységét ha- honi sugárzására is alkalmas. A rádió- gyományos telefonhálózatra is lehet vevõ Linux alapú, ennek köszönhetõ csatlakoztatni, aminek elsõsorban viszonylagos rugalmassága, amely a segélykérõ hívások lebonyolításakor a formátumok és a protokollok kezelé- lehet jelentõsége, hiszen a VoIP szol- se és a hálózati kapcsolattal összefüg- gáltatók ilyen számokat nem feltétle- gõ biztonsági szolgáltatások terén egy- nül üzemeltetnek. A Philips egyik leányvállalata, aránt megmutatkozik. A várhatóan a Polymer Vision NV a németországi novemberben megjelenõ rádió ára kis- mobil iTunes IFA kiállításon összetekerhetõ elektro- sé borsos, körülbelül 70000 forint lesz. A Motorola, a Cingular Wireless mobil- nikus kijelzõ bemutatását tervezi. szolgáltató és az Apple Computer A Readius nevû készüléket hordozha- Technológiák, egyesüljetek együttmûködésének eredményeként tó e-readernek, elektronikus újságfélé- DECT rendszerû, VoIP elindult az elsõ olyan szolgáltatás, nek szánják, létének célja egyelõre hívások kezelésére is amely mobiltelefonról teszi lehetõvé a technológia mûködésének demonst- képes telefonkészüléket zenei tartalmak vásárlását az iTunes rálása, tényleges termékként nem fog mutat be hamarosan boltból. A Motorola a MotoROKR ne- megjelenni. A Readius a PV-QML5 tí- a francia Thomson. Az vû telefonkészülékkel szállt be az üz- pusjelzésû megjelenítõre épül. A 100 EV5203-C jelzésû telefon elõnye, letbe, mely jelenleg az egyetlen mikron vastagságú eszköz 320x240 hogy használatával számítógép köz- iTunes-képes mobilkészülék, értelem- képpontos felbontást tud, átmérõje 5”, remûködése és SkyPE vagy egyéb al- szerûen a Cingular adja a telefonháló- kontrasztaránya 10:1. Ha használója kalmazás futtatása nélkül is kényel- zatot, az Apple pedig magát az online elolvasta az õt érdeklõ tartalmat, ak- mesen lehet VoIP hívásokat bonyolí- boltot – természetesen az új szolgálta- kor a kijelzõt egy 100 x 60 x 20 mm tani. A színes kijelzõvel ellátott ké- tástól mindhárom szereplõ forgalom- méretû tokba tudja összecsavarni. szülék egyszerre két hívást is képes növekedést vár.
6 Linuxvilág Magazin
ThinkFree Office lesz 16 Mbit/s sebességûre gyorsítani, A ThinkFree bemutatta ugyanakkor ellene szól, hogy használa- Office nevû program- ta a rádiós összeköttetésekhez viszo- csomagjának legújabb, nyítva továbbra is kényelmetlen marad. 3-as számot viselõ vál- www.irda.org tozatát. A Microsoft Office formátumaival Okos ellenségek teljes kompatibilitást Az izraeli Alseek az Ageia a fizikai mo- ígérõ csomag három alkalmazást tartal- dellezést segítõ PhysX lapkájának min- maz, a Write nevû szövegszerkesztõt, tájára újabb kiegészítõt tervez a számí- a Calc nevû táblázatkezelõt és a Show tógépes játékok számára: mesterséges nevû bemutatókészítõt. A ThinkFree intelligenciát növelõ célprocesszort. Office Java alapú, ennek köszönhetõen A számítógépes játékok régi problémá- nem okozott gondot, hogy azonnal há- ja, hogy a gépi játékosok túlságosan os- romféle operációs rendszerre is elké- tobák, sokszor céltalanul, rossz irányba, szítsék: Linuxra, Windowsra és Mac OS ide-oda rohangálnak, a különféle aka- X alá. A csomag sokféle eszközzel segíti dályok és tereptárgyak között nem az operációs rendszerek közötti átjárást, találják a célhelyhez vezetõ útvonalat, © Kiskapu Kft. Minden jog fenntartva ilyen például az XML és a PDF formá- esetleg éppen egymásban akadnak el. tum támogatása és az, hogy beépítve A játékfejlesztõ cégek komoly erõfeszí- tartalmazza a leggyakrabban használt téseket tettek a háttérben futó algorit- betûtípusokat, az Arialt és a Times New musok javítására, ám az eredmény Romant. A Java nyelv révén a csomag mind a mai napig megkérdõjelezhetõ. vállalati környezetben nem csak az Ennek oka részben a számítógépek szá- egyes munkaállomásokra telepíthetõ mítási kapacitásának korlátossága, illet- fel, de központi kiszolgálóról is elérhe- ve az, hogy a mesterséges intelligencia tõvé tehetõ, így csökkenthetõk a fel- biztosítása rengeteg igen/nem jellegû ügyeleti terhek, illetve kisebb gondot döntést igényel, míg a számítógépek okoz egy-egy munkaállomás meghibá- processzorai inkább lineáris jellegû sodása. A cég online változatot is kínál feladatok elvégzésére alkalmasak. Az belõle, ez a dobozos változat minden Alseek AIS-1 lapkája, melybõl már el is elemét tartalmazza, továbbá minden készült az elsõ prototípus, a tervek sze- felhasználónak 30 MB tárhelyet biztosít rint ezen fog segíteni. A feladat termé- a dokumentumainak tárolására. Az 50 szetesen sokrétû, hiszen az építkezõs- dolláros csomag jelenleg 11 nyelven be- háborúzós játékok egészen másfajta szél, a közeljövõben várhatóan további mesterséges intelligenciát igényelnek, nyelvekre is honosítani fogják. mint a lövöldözõsek vagy éppen www.thinkfree.com a sakkjátékok. A lapka négy fõ terüle- ten lesz erõs: az útvonalkeresésben, Infráék erõsítenek a terepelemzésben, a gépi harcosok Az Infrared Data vagy kisebb csoportok mozgatásában Association (IrDA) új, a ko- és az érzékelõszervek szimulálásában; rábbinál jóval nagyobb se- utóbbi révén lehetõvé válik, hogy a gé- bességet nyújtó infravörös adatátviteli pi szereplõk élethû módon reagáljanak protokollt fogadott el. Az IrSimple nevû a kívülrõl érkezõ hatásokra. Az AIS-1-et protokoll idõvel akár 100 Mbit/s sebessé- a játékosok számára PCI foglalatba il- get is képes lesz biztosítani, ami 25-szö- leszkedõ kiegészítõ kártyán kívánják rös növekedést jelentene a jelenlegi elérhetõvé tenni, illetve a gyártók szán- 4 Mbit/s-hoz képest. Az új infravörös dékaitól függõen akár a játékkonzolokba szabványt elõdeihez hasonlóan fõként beépítve is viszontláthatjuk majd – egy- hordozható készülékekhez, digitális elõre még bizonytalan, hogy mikor. fényképezõgépekhez fejlesztik, ugyan- akkor életképessége finoman szólva két- Medgyesi Zoltán ségbe vonható, hiszen a rádiós megol- ([email protected]) dások, mint a Bluetooth és a Wi-Fi, az A Linuxvilág hírszerkesz- utóbbi idõben erõsen háttérbe szorítot- tõje. Szabadidejét legszí- ták az infravörös megoldásokat. Az vesebben a barátnõjével IrSimple terjedését elõsegítheti, hogy tölti, szeret autózni és a megfelelõ szoftverfrissítés végrehajtá- bográcsban fõzni. sa után a meglévõ adó-vevõket is képes
www.linuxvilag.hu 2005. október 7 Magazin
Mi újság a rendszermag fejlesztése körül
git jelenség folytatódik. küzdenek azért, hogy felzárkózzanak. misített minden lehetséges szabványt, A saját fejlesztését kiszolgáló, Markus Klotzbuecherhas készített egy kivételt halmozva kivételre, mindezt kezdetektõl villámgyors git, érdekes új virtuális fájl rendszert, amit elegyítettek kereskedelmi titkokkal, és ésA a Cogito nevû közkedvelt csomagoló mini_fo-nak (fanout overlay) neveznek. szabadalmaztatott dokumentumokkal, (wrapper) szkriptjei folyamatosan ja- Mely engedélyezi a felhasználóknak, amitõl bárki megõrülhetne, még ak- vulnak, és mára már hatalmas lökést hogy csak olvasható fájlrendszeren ta- kor is, ha megkísérli karbantartani az adtak a kernel fejlesztésének. Különbö- lálható fájlokba írjanak, azáltal, hogy IDE kernel kódot. Ez a család, mint zõ projektek állnak át BitKeeper-rõl létrehoz egy írható területet valahol Bartlomiej és Alan, és azok az embe- git-re. A Net driver és a libata fejleszté- máshol és a felhasználó változásait egy, rek, akik elõttük jöttek, mint Mark se máris átállt. Ugyanígy tett a JFS és a csak olvasható terület fölötti rétegben Lord és Andre Hedrick, éppen ezt NTFS projekt is. A stabil w.x.z.y helyezi el. A felhasználó számára mind- csinálják hálával tartozunk ezért kernelfa, melyet Greg Kroah-Hartman ezt átlátszó módon. Ami eddig csak ol- nagylelkû természetükért. Az IDE kód és Chris Wright tartanak karban, szin- vasható adat volt, most írhatónak is tû- nélkül, legtöbbünk közel sem találná tén nem régen cserélte le a BitKeeper-t, nik, annak ellenére, hogy a csak olvas- a Linuxot ilyen használhatónak. git-re. Néhány kernelhacker számára ható adat sohasem változik. A mini_fo Benjamin LaHaiser nemrégiben meg- a git elõrelépést jelent a BitKeeperhez eszközt arra a célja, hogy elérhetõvé próbálta egyszerûsíteni és jobban kar- képest, és sokkal több munkát tudnak váljon a szoftver frissítés beágyazott bantarthatóvá tenni a szemaforra ala- © Kiskapu Kft. Minden jog fenntartva vele elvégezni, mint azelõtt. Még maga rendszerekben, de egyéb felhasználási pozott kölcsönös kizárást a teljes kernel Linus Torvalds is újragondolja a foltok területet is találtak a szoftvernek, architektúrában. A jelenlegi kód komp- kezelésének módját abból a célból, és még kétségtelenül lesz néhány. lex, nehezen olvasható, és sok architek- hogy azt a git-hez hozzáillessze. Alan Cox és Bartlomiej Zolnierkiewicz, túra specifikus részletet tartalmaz. Ezek A BitKeeper dokumentációt eltávolítot- a két remek IDE fejlesztõ, bajba kerül- a kis árnyalatnyi különbségek a támo- ták a kernel forrásából és a levelezési tek amikor egységesíteni próbálták igye- gatott architektúrák számával arányo- listák, mint amilyen a bk-commits-head, kezeteiket. Mialatt Bartlomiej a jelenlegi san nõnek, és érthetõ az erõfeszítés egy amelyek eredetileg azt a célt szolgálták, IDE karbantartó, Alan sok elõkészületet generikus szemafor rendszerre, amely hogy a BitKeeper változásait tegyék tett azért, hogy a régi IDE kódot kar- lefordítható, és mûködtethetõ egysége- rajtuk közzé, ma a git kernelfolt meg- bantartható állapotba hozza a kimond- sen az összes architektúrán. Azonban jegyzéseket fogadják. hatatlan (hulla-szór) rémálomból, a szemaforok alacsony szintû mûvele- Ugyanakkor a git nem való mindenki- amilyen már évek óta volt. Habár Alan tek, és a nagy sebességû kód szüksé- nek. Amikor Andrew Mortont megkér- az utóbbi idõben némiképp a kívülrõl gessége vitathatatlan. Pontosan ezért deztük, azt válaszolta, hogy nem áll figyelte a Linux fejlõdését, visszatért, kisebb lassulás, elképzelhetõ, hogy szándékában a git-et saját -mm kernel hogy ellenõrizze az IDE haladását, és jelentõs mértékû kernel lassulást ered- fájának menedzselésére használni, nem tetszését fejezte ki azokkal a válto- ményezne, ezért feltehetõen bármelyik mert saját patch szkriptjei teljesen ki- zásokkal szemben, amit Bartlomiej tett. kísérlet a kód egységesítésben erõs elégítik igényeit. Matt Mackwall szin- Úgy tûnik, mintha harag lenne kettejük ellenállással találkozna a különbözõ tén saját villámsebességû verzió követõ között, ahogyan ez szokássá vált bár- architektúrát karbantartók részérõl. rendszerével, a Mercuriallal dolgozik. mely két fejlesztõ között, akik egyszer- Ez volt az, ahogyan valójában A Mercurial szintén egy kiváló eszköz, re, vagy egymás után dolgoztak az IDE Benjamin munkáját fogadták. Habár és sok szempontból egyenértékû a git- fejlesztésén. Bartlomiej felajánlotta néhány javítást természetesen készítet- tel, kiváltképpen a sebesség területén. Alan-nek, hogy ágaztassák el a kódot tek, nem tûnik valószínûnek tehát, Valójában, ahogyan Linus rámutatott, és készítsék külön a fejlesztést, hogy a szemafor kód valamikor is iga- mindkettõ az alapvetõ viselkedésük te- amennyiben ez õt boldoggá teszi. zán általános és egyszerû lesz. A sebes- kintetében azonos. Valóban, mindkettõ Azt mondják az IDE fejlesztése még ség még mindig elég erõs ösztönzõerõ. a verzió követés egy teljesen új aspek- mindig ellenségeskedést szülhet a fej- tusát képviseli, és a projektek ahogyan lesztõk között. Ezért nekünk az IDE Zack Brown az arch melyek korábban vezetõk lemez iparágat magát kell vádolni, Linux Journal 2005. 137. szám voltak ezen a téren, most hirtelen amelyik teljesen egyoldalú és megsem-
8 Linuxvilág
Magazin
Novell Security Manager – Védelem egy egész hadsereg erejével A Novell Security Manager egy kényelmesen felügyelhetõ, integrált csomag a vállalatok és intézmények biztonságos mûködésének megteremtéséhez.
nformatikai rendszerünk stabil fokozottan ki vannak téve mûködésének elengedhetetlen a különféle rosszindulatú feltétele a biztonság megteremté- támadásoknak: vírusok, Ise. A külsõ fenyegetésekkel szembeni férgek, alkalmazások védelem megvalósításához azonban kihasználása, szolgálat- sokféle biztonsági eszközre és alkal- megtagadási támadások mazásra van szükség egy vállalatnál: (denial-of-service; DoS), tûzfalra, virtuális magánhálózatra, spam, információlopás behatolásvédelemre, vírus- és és még sorolhatnánk. spamszûrésre, valamint URL-szûrésre. Az egyre több irányból Mindezen védelmi módszerek külön- fenyegetõ veszélyek ellen féle gyártóktól való beszerzése és tele- többféle védekezési mód- pítése költségigényes, és a rendszer szert is kell használni felügyeletét is jelentõsen megnehezíti. – a rendelkezésre álló költ- A Novell Security Manager mindezeket ségkereten belül. A Novell egyben, egy kényelmesen felügyelhe- Security Manager minden tõ, integrált csomagban kínálja. más megoldásnál alacso- © Kiskapu Kft. Minden jog fenntartva A Novell a Linux és a személyazonos- nyabb költségszinten ké- ság alapú biztonság területén piacve- pes mindezt megvalósíta- zetõ technológiáját és az Astaro háló- ni. Mivel Linuxra épül, zati biztonsági szoftverek és berende- nem csak költséghaté- zések terén szerzett tapasztalatát öt- konysága, de páratlan biz- vözve fejlesztette ki a Novell Security tonsága miatt is népszerû. Manager legújabb verzióját. A Linux Könnyen telepíthetõ és felügyelhetõ, és a kommunikációs folyamatok meg- alapokra épülõ biztonsági megoldás méretezhetõ és mégis biztonságos. sértésének felderítése végett nyomon kihasználja a nyílt forráskódú közös- Használatával a cég teljes kimenõ és be- követi az eseményeket. ség együttmûködésének eredményeit; jövõ kommunikációs forgalma gyorsan, Blokkolja a kommunikációs forgalmat, egyetlen kereskedelmi szoftver sem teljesen és hatékonyan biztosítható. ha az nem felel meg a portokra, proto- kínálja ugyanezeket a funkciókat. A Novell teljes hálózati biztonsági kollokra, valamint a várt forrásokra A Novell Security Manager nagy telje- megoldása összesen hat határbizton- és célhelyekre beállított szabályoknak sítménye miatt hatékony védelmet sági alkalmazást és integrált felügyele- (állapotfigyelõ csomagvizsgálat és nyújt az elsõ vonalban felmerülõ ti platformot biztosít. A SUSE LINUX alkalmazásszintû szûrés). Képes meg- biztonsági fenyegetésekkel szemben, alapú alkalmazás átfogó biztonsági védeni a forgalmat a vezeték nélküli de használható egy meglévõ tûzfal infrastruktúrája a betörõk, vírusok, eszközöktõl is. mögötti kiegészítõ szintként is. férgek, levélszemét és betörések jelen- A számos hálózati kapcsolat felügye- tette biztonsági fenyegetések ellen is letének egyszerûsítésére és a teljesít- Áttekintés védelmezi a vállalatokat. mény növelésére az Astaro biztonsági A folyamatos, zökkenõmentes kommu- proxykat alkalmazza a legfontosabb nikáció az ügyfelek, az üzleti partne- Tûzfal protokollokhoz (például a HTTP, rek és az alkalmazottak között létfon- A Novell Security Manager tûzfala DNS, SOCKS, POP3, Ident és SMTP tosságú egy vállalat mûködéséhez. az összes hálózatról érkezõ kommuni- esetében). A fontos tûzfalfunkciók kö- Az internetet használó szervezetek kációs csomag fejlécét átvizsgálja, zé tartozik még a hálózati címfordítás,
10 Linuxvilág Magazin
a maszkolás, valamint a szolgálat- ismert spamküldõk listájával összeha- megtagadási támadásokkal szembeni sonlítva, saját fekete- és fehérlistákat védelem. hoz létre, szabályokat és mintázatokat használ a levelek szövegének elemzé- Virtuális magánhálózat sére és hozzájuk rendel egy „spam A távoli felhasználók számára, akik pontszámot”. A kívánt küszöbérték be- az internetet használják kommuniká- állításával a gyanús levelek eldobhatók, cióra, a Novell Security Managerben visszautasíthatók egy küldõnek szóló található virtuális magánhálózat üzenettel, figyelmeztetéssel átengedhe- (VPN) rendkívüli mértékben képes tõk a felhasználó felé, illetve karantén- csökkenteni a kommunikációs költsé- ba zárhatók, ahol a rendszergazda geket azzal, hogy megszünteti megvizsgálhatja õket és megteheti a drága bérelt vonalak szükségessé- Vírusvédelem a megfelelõ intézkedéseket. Ez a rugal- gét. Mivel a VPN-átjáró rendkívül A Novell Security Manager szûrõ ke- masság lehetõvé teszi a finom egyen- rugalmas – sokféle architektúrát retrendszere átvizsgálja az e-mail üze- súly megteremtését a spamszûrés és jó támogat –, VPN kapcsolat teremthetõ neteket, fájlokat és a webes forgalmat levelek véletlen blokkolásának elkerü- a távoli irodákkal, az otthoni munka- a vírusok, férgek, trójai programok és lése között. A Novell Security Manager helyekkel és egyéb nyilvános helyek- egyéb rosszindulatú szoftverek után jelentést készít a spamüzenetek számá- © Kiskapu Kft. Minden jog fenntartva kel (például szállodák konferencia- kutatva. A Novell Security Manager ról és méretérõl, így felismerhetõkké termeivel). A legfejlettebb titkosítási kétféle típusú vírusvédelmet kínál: válnak a mintázatok és a trendek is. algoritmusok és a hitelesítési mód- a hagyományos e-mailekhez és fájlok- szerek, valamint a VPN-kliensek hoz, valamint a webböngészõben Barangolásvédelem (URL-szûrés) széles köre áll rendelkezésre. letöltött e-mailekhez és fájlokhoz is. Az internet rendkívül fontos eszköz A Novell Security Manager saját A Novell Security Manager sokféle ví- a cégek számára, de ha a munkatársak tanúsítványhatósággal rendelkezik rusellenõrzõ módszert használ annak túl sok idõt töltenek a weben baran- a digitális aláírások egyszerû és biz- érdekében, hogy a lehetõ legtöbb ví- golva, a termelékenység csökkenhet, tonságos kezelésére, és teljes mér- rust megfogja: elemzi az e-maileket és illetve ha nem helyénvaló vagy jogvé- tékben támogatja a nyilvános kulcsú a csatolmányokat az ismert, vírusok- dett anyagokat töltenek le, akkor jogi titkosítás használatát. hoz társítható kódok megkeresésére, problémák is felvetõdhetnek. A baran- heurisztikus módszerekkel keres az is- golásvédelem lehetõvé teszi a webes Védelem a behatolásokkal szemben mert vírusmintázatokhoz hasonló kó- tevékenységek védelmét a webhasz- A Novell Security Manager behatolás- dokat és ezeket hagyja végrehajtódni nálati irányelvek kidolgozásával. védelmi összetevõje egy több mint egy védett környezetben, ahol a prob- A Novell Security Manager segítségé- 2000 mintát és szabályt tartalmazó lémák a megfertõzõdés veszélye nél- vel a cég vezetése 58 különféle kategó- adatbázis alapján (amelynek karban- kül felismerhetõk. ria használatával határozhatja meg tartását a vezetõ nyílt forráskódú A gyanús kódokat összeveti a webhasználati irányelveket, ilyenek Intrusion Detection Snort™ behatolás- a Kaspersky Lab adatbázisával, amely például a szex, a szerencsejátékok, védelmi projekt végzi) felderíti és a világ egyik legnagyobb, 100 ezer ví- a törvénytelen tevékenységek, illetve blokkolja az alkalmazás- és protokoll- rusjellemzõt tartalmazó listája. Az átjá- az amúgy törvényes, de a munkához specifikus támadásokat. Beállítható, róban történõ vírusellenõrzés lehetõvé nem szükséges tevékenységek mint hogy gyanús tevékenység észlelése teszi az új vírusokra való gyors reagá- például a vásárlás, az árverések láto- esetén e-mailben értesítse a rendszer- lást, mielõtt azok elérnék a belsõ rend- gatása, a szórakozás vagy a munkake- gazdát, vagy azonnal blokkolja szereket. Ez a szolgáltatás az asztali resés. Az üzemeltetést végzõ osztály a gyanús forgalmat a tûzfalon keresz- vírusellenõrzõk kritikus fontosságú ki- egyszerûen mérheti a webes tevé- tül. Ennek felügyeletét az egyedi sza- egészítõje, mert azokat gyakran bonyo- kenységeket és jelentéseket készíthet bályok vagy a teljes kategóriák szint- lult a teljes szervezetben frissíteni. Meg- ezekrõl a problémák azonosítására és jén is végezheti. A szabályokat adható, hogy el kívánja-e dobni a gya- a prioritások megadására, vagy blok- a Novell Up2Date szolgáltatás folya- nús leveleket és csatolmányokat, vagy kolhatja bizonyos URL kategóriák matosan frissíti; ezekhez új szabályok visszautasítja azokat a küldõnek szóló elérését, így azok hozzáférhetetlenek adhatóak, vagy a meglévõk testre üzenettel, illetve figyelmeztetéssel áten- lesznek a felhasználók számára. szabhatóak. Leállítható, vagy korlátoz- gedi a felhasználó felé vagy karanténba A Novell Security Manager egy ható a legújabb kommunikációs zárja õket, hogy az adminisztrátor (a Cobiontól származó) 20 millió kate- formákkal kapcsolatos tevékenység: megvizsgálhassa azokat és megtehesse gorizált webcímet tartalmazó adatbá- például az azonnali üzenetküldés, a szükséges intézkedéseket. zist használ, ami jelenleg a kereskedel- a csevegés vagy az egyenrangú (peer- mi forgalomban kapható legnagyobb to-peer) hálózatok. Ez kritikus fontos- Spam elleni védekezés lista. Ez a lista természetesen további ságú kiegészítõje lehet a biztonságnak, A Novell Security Manager számos saját fekete- és fehérlistákkal bõvíthe- különösen, mivel egyelõre kevés spamfelismerõ módszert használ a ké- tõ. A felhasználók különféle csoportjai védekezési mód létezik az ilyen típusú retlen levelek azonosítására és blokko- számára pedig külön fekete- és fehér- visszaélésekkel szemben. lására. Ellenõrzi a levelek forrását az listák is létrehozhatók.
www.linuxvilag.hu 2005. október 11 Magazin
Tóbiás a befutó
Elõzõ lapszámunkban felhívást tettünk közzé; olvasóink segítségét kértük pingvin-örökbefogadási vállalkozásunkhoz. Ezennel közhírré tétetik a Linuxvilág totyogó befutója: nem más õ, mint Tóbiás (szül. 1998, Rostock).
miképpen e teltkarcsú ez utóbbiakon A palimadár belopta magát foglalt helyet a szavazók szívébe, aképpen szemérmesen, én lopakodtam be az Fõvárosi Állatkert magánéletérõl fag- Kis-sziklájának pingvin-lakta tövéhez, gatóztam. Nyilván- hogy közelebbrõl szemrevételezhes- valóan korábbi sem a legtetszõbb ábrázatú példányt. idõkre tehetõ Az egyik gondozó hölgyet faggattam, eladósorba jutása, merre lelem Tóbiást. A kedves hölgy s Gilbert ama feleletébõl megtudhattam, hogy a ke- madártárs, ki nem resett egyed éppen tanúkat mellõzve hagyta õt pártában s ezért láthatatlan elvonult kötelessé- hervadni el. gét végezni – tojásain ül… Õk ketten számos Némiképp gyanakodván, hogy tán dologban hason- áldozata lettem az elhamarkodottság- lítanak, talán nak, miszerint feltételeztem, hogy legfõképpen Tóbiás ivarát tekintve hím, rákérdez- a megtévesztõ © Kiskapu Kft. Minden jog fenntartva tem egyenest a valóra. Abban a meg- látszat (és tojások) tiszteltetésben lehetett részem, hogy keltésében. Ugyan- e madár szinte érkezésemmel egy is Gilbertrõl is idõben váltott nemet. Tudniillik ping- kiderült, hogy vinéknél csemetekorban nem lehet nem éppen férfi csalhatatlan biztonsággal megmon- a talpán... dani leányságot, avagy legénységet Letépve az elõítéle- (leszámítva fölös és kockázatos vizsgá- tek láncait, akár latok igénybevételét). Így hát marad pingvin a heringes a tapasztalatokon és megfigyeléseken vödörben halászgat- nyugvó szemek általi vizsgálat, mint tam tovább a sze- például testnagyság-vizslatás, szexuá- relmi hajlandóság lis pozitúrák kifürkészése és rácsodál- zavaraiban. Úgy kozás ülep alatti tojásokra. Míg Tóbiás látszik, ha testi szomjúságot kell oltani, e szárnyasok Bízva a rajtaütés sikerében, hogy a saj- sem szõrszálhasogatóak párválasz- tótájékoztató alkalmából személyesen tásuk folyamán. Ellenben igen mo- is kokettálhatunk a jómadárral, s meg- nogám és hûséges természetûek, tudhatjuk, hogy látszat- és tojáskelté- s noha az erény mindenképpen tisz- sen kívül mikkel múlatja szabadidejét, teletet követel, mégiscsak örömteli illetve mily pontos paraméterekkel bír lenne idõvel szülõkbõl nagyszülõkké is õ derékbõségétõl kezdve gyomra is válnunk. Reményekre adhat okot, heringbefogadói képességéig. hogy a minap friss szállítmány érke- zett az Állatkertbe tucatnál is több (Folyt. Köv.) pingvinfiú személyében. Halusz Léna
12 Linuxvilág
Magazin
A nõk és a Linux
Interjú Konkoly Katalinnal, az MLDP idei díjazottjával.
Bár egyesek véleménye szerint nem értek – az apró helyesírási és Ez év tavaszán meghívást kap- a Linux HOGYAN-ok és más do- gépelési hibák kigyomlálása, valamint tam a Debrecenben megrendezett kumentumok magyarra fordítása a CD tesztelése volt a feladatom. V. LOK konferenciára elõadóként. puszta idõpocsékolás – mondván Mindez a nyári szünetben zajlott, A téma, amirõl beszéltem: A sza- a számítástechnika „hivatalos és oly mértékben fellelkesültem a sza- bad szoftverek felhasználásának nyelve” úgyis az angol – tény, hogy bad szoftverek, a Linux, a közösségi különbözõ lehetõségei (Windows különösen a kezdõk számára az szellem világa láttán, hogy a tanév- alatt, live Linuxszal, illetve telepí- anyanyelven rendelkezésre álló iro- nyitó értekezlet elõtti napon Szász tett Linux rendszeren). Az elõadás dalom óriási segítség. Éppen ezért Endre Istvánnal (Szaszka) tartottunk sikerén felbuzdulva a tantestület- jött létre Daczi László vezetésével egy Linux-bemutatót a tantestület ben is megemlítettem, hogy szíve- a Magyar Linux Dokumentációs számára, az UHU Live segítségével. sen vállalok a diákok számára is Projekt, amely minden évben díjazza Sajnos a kollégák között nem sikerült elõadást, akár osztályfõnöki, akár legjobb fordítóit, lektorait. Lapunk elérnem, hogy nagyobb számban számítástechnika óra keretében. az egyik díjazottat, Konkoly Katalint használjanak Linuxot (gyakorlatilag A kollégák mindez ideig nem éltek kérdezte arról, hogyan is keveredett egyikük sem tért át...), de azt fontos az ajánlatommal. a linuxosok közé... eredménynek érzem, hogy legalább Ez persze nem szegte kedvemet, hallottak a szabad szoftverekrõl. mert úgy gondoltam: ha kissé il- © Kiskapu Kft. Minden jog fenntartva Elöljáróban meg kell mondanom, Õsszel már úgy éreztem, én is tartozom legálisan is, de a saját tanóráimon hogy nem érzem magamat méltónak a linuxos közösségnek azzal, hogy is beszélhetek a gyerekeknek a megtiszteltetésre (úgy értem, amihez értek, azt valami módon köz- a szabad szoftverekrõl. Így aztán vannak nálam sokkal több fordítást kinccsé tegyem. Sok fórumon azt ta- az iskolai laptop és projektor segít- végzett önkéntesek), mert csak nem- pasztaltam, hogy az újonnan áttért ségével a német és francia óráimon rég kezdtem (körülbelül egy éve) felhasználóknak gyakran gondjuk van tartottam néhány érdeklõdõ csopor- Linuxszal foglalkozni, a fordítói-lekto- a dokumentációkkal, hiányos angol tomban linuxos bemutatót – termé- ri munkát is csak pár hónapja végzem. nyelvismeretük miatt. Ekkor kezdtem szetesen szigorúan csak a tanév Az is meglepett – bár nagyon jóle- el keresgélni a neten valamilyen sza- utolsó napjaiban, miután a tanterv- sett –, hogy dacas (Daczi László) bad szoftverekkel kapcsolatos fordítá- ben elõírtakat teljesítettük. Örömmel díjazásra érdemesnek tartotta si lehetõség után, s így bukkantam láttam, hogy néhányukat megérin- az eddigi munkámat. a tldp.fsf.hu oldalára, ahol örömmel lát- tette a Linux világa, segítséget, taná- A jászberényi Lehel Vezér Gimnázium- tam, hogy önkéntes fordítókra mindig csot, telepítõcédéket kértek tõlem. ban tanítok, német-francia szakos szükség van :). Jelentkeztem is dacasnál Természetesen nem célom minden tanárként, tehát papírforma szerint (Daczi László), és a fordításra váró diákom „megtérítése”, de fontos- semmi közöm a számítástechnikához. HOGYAN-ok listájából azonnal kisze- nak tartom, hogy ezen a módon 2004. júniusában került az elsõ Linux meltem a HOWTO Encourage Women is tudomást szerezzenek a szabad a gépemre, azonnal elfoglalva az addi- in Linux (Hogyan bátorítsuk a nõket szoftverekrõl, a Linuxról, s mûkö- gi Windows helyét. Ez épp az UHU 1.1 a Linux használatára) címût. Hamaro- dés közben is lássák. volt, és mivel meglehetõsen szokatlan san el is készült, népszerû is lett Sok önálló itthoni Linux-tanulás volt az új rendszer, feliratkoztam az (a HUP letöltési statisztikája szerint). és gyakorlás után úgy éreztem, UHU-listákra, ahol nagyon sokat ta- Azóta egy nagyobb frissítésen dol- egyedül már nem tudok továbblépni nultam, és sok jó barátra tettem szert. goztam: a System Administrators e téren, ezért tavasszal beiratkoztam Többek között ott ismertem meg Guide-on (Linux rendszeradminiszt- egy rendszerinformatikus tanfo- Emersont (Tersánszky Csaba), aki az rátorok kézikönyve), és két kisebb lyamra, ahol nagyon jó társaságba UHU Live CD-ket készíti. Vele aztán lektorálási munkám volt (A katedrális kerültem, és sok új ismeretre tettem egy CD erejéig együtt is dolgoztunk, és a bazár jegyzetei, illetve szert. Az iskolám anyagilag nem ahol nekem – mivel programozáshoz a Webkamera-HOGYAN). támogatja ezt a képzésemet.
14 Linuxvilág Fejlesztõi sarok
Kávéfõzés lépésrõl lépésre (5. rész)
A programozó pedig ablakokat és nyomógombokat hozott létre. Így a felhasználó kedve szerint kattinthatott, az õ legnagyobb megelégedésére...
Ha a kedves Olvasó idáig figye- (GUI, Graphical User Interface) létre- Ezek után a készítendõ program dönti lemmel kísérte a cikksorozatot, bátran hozásához. A cikksorozat eddigi részei el, hogy a mérleg nyelve merre dõl. állíthatja, hogy azokkal az objektum- a hûséges Olvasóban talán már gya- Én személy szerint azért teszem erre központúsággal kapcsolatos fogalmak- nút ébreszthetnek, ám mielõtt kimon- a nyelvre a voksomat, mert így kal, melyek sokaknak mindössze danánk a boldogító igent a Java olda- könnyen elérhetem, hogy programjai- valamilyen titkos szekta misztikus lán, mérlegeljük a mellette és az ellene mat, melyeket a Microsoft által készí- varázsigéit jelentik, bizony már szoros szóló érveket. tett operációs rendszereken kell be- baráti viszonyban áll. Az osztály, az A Java objektumközpontú, ami a je- mutatnom, szeretett Linuxom alatt objektum, az interfész, az öröklõdés lenleg ismert leghatékonyabb módszer írhatom meg. Mindenki maga dönt- és a kivételkezelés hallatán szívéhez ablakozó rendszer programozására. sön, majd a helyes döntést követõen közel álló eszközök és módszerek Emellett a futtatókörnyezettõl bájtkód olvassa tovább a cikket. jutnak eszébe, melyek segítségével szinten független, ezért könnyen hor- Ismerjük el, egy kissé kezd unalmas egy alkalmazás tervezése, megvalósí- dozható. Ugyanakkor lehetõséget ad lenni, hogy mindenki állandóan tása és karbantartása is egyszerûbbé akár az operációs rendszer által nyúj- a világot köszöntgeti. A sorozat elsõ és gyorsabbá válik. tott eszközkészlet, akár egy saját, min- részében már mi is megtettük, elsõ Joggal jelenthetjük ki tehát, hogy den rendszeren azonosan megjelenõ Java nyelven írt grafikus alkalmazá- mindent megtettünk saját magunk, eszközkészlet használatára. A képer- sunk legyen ennél valamivel érdeke- programozók örömére. Azonban ne nyõn megjelenõ vezérlõkhöz köthetõ sebb. Lássuk a kódot (1. kód)! © Kiskapu Kft. Minden jog fenntartva felejtsük el, hogy nincs programozó eseménykezelõk pedig teljes és jól Minden szerénységem megtartása felhasználó nélkül, hiszen az sem átlátható rendszert adnak. mellett meg kell jegyezzem, hogy jó színész, akit a rendezõn kívül más Ezzel szemben tudni kell, hogy egy tisztában vagyok azzal, mennyire nem látott szerepelni. Ezért most, Java alkalmazás virtuális gépet igé- lebilincselõek az írásaim. Ennek elle- hogy már elhangzottak a kenetteljes nyel (JVM, Java Virtual Machine). nére most arra kérném a kedves Olva- szentbeszédek a programozókat ki- Ez minden szélesebb körben használt sót, hogy mielõtt továbbolvasná a cik- szolgáló objektumközpontú technikák operációs rendszerre elérhetõ, de ket, gépelje be az itt látható program mellett, eljött az ideje, hogy a felhasz- nem szükségszerû, hogy fel is tele- kódját, fordítsa és futtassa azt. nálóknak is kedvezzünk. A felhaszná- pítették. Erõforrásigénye sem nevez- Két nyomós indokom van arra, ló csak annak tud örülni, amit lát, ad- hetõ kimondottan alacsonynak. hogy arra kérjem, hogy olyan sorokat junk tehát most a külcsínre. Így eleshetünk egyes, matuzsálemi gépeljen, melyeknek jelentése nem Mivel mindig hangsúlyozom, hogy az korú berendezésekkel dolgozó fel- azonnal adódik, s így ez esetleg fá- informatikában is a célnak kell megha- használóktól. Azt se felejtsük el, rasztó terhet jelenthet. tároznia az eszközt, és nem fordítva, hogy bár létezik megoldás 3 dimen- Az elsõ, hogy az alkalmazás egyfajta elõször gondoljuk meg, milyen prog- ziós ábrák és animációk használatára, feladvány, ugyan nem a komoly fejtö- ramozási környezet lenne a legalkal- kevés ilyen elemeket tartalmazó rést okozók fajtájából, de mindenkép- masabb grafikus felhasználói felület Java alkalmazást láthatunk. pen tanulságos. A kód azonnali elem-
www.linuxvilag.hu 2005. október 15 Fejlesztõi sarok
Container tartalom = ablak.getContentPane(); 1. kód tartalom.setLayout(new GridLayout(2, 1, 5, 5)); tartalom.add(szovegCimke); import javax.swing.JFrame; tartalom.add(gombokPanelje); import javax.swing.JLabel; import javax.swing.JButton; // esemenykezelok mind ebben az objektumban import javax.swing.JPanel; balGomb.addMouseListener(this); import java.awt.GridLayout; jobbGomb.addMouseListener(this); import java.awt.Container; balGomb.addActionListener(this); import java.awt.event.MouseAdapter; jobbGomb.addActionListener(this); import java.awt.event.MouseEvent; import java.awt.event.ActionListener; // vegso "simitasok" import java.awt.event.ActionEvent; ablak.setDefaultCloseOperation (JFrame.DO_NOTHING_ON_CLOSE); /** ablak.pack(); * Az AblakBezaros jatek megvalositasa. jobbGomb.requestFocusInWindow(); */ ablak.setVisible(true); public class AblakBezaros extends MouseAdapter } © Kiskapu Kft. Minden jog fenntartva implements ActionListener { /** /** * Akkor fut le, ha valamelyik gomb fole kerul *A teljes ablak * az egerkurzor. Ekkor felcsereli a ket gomb */ * szoveget es a fokuszt is athelyezi. private JFrame ablak; */ public void mouseEntered(MouseEvent esemeny) { /** Object forras = esemeny.getSource(); *A kerdest tartalmazo cimke if (((JButton) forras).getText().equals */ (igenSzoveg)) { private JLabel szovegCimke; if (((JButton) forras).equals(balGomb)) { balGomb.setText(nemSzoveg); /** jobbGomb.setText(igenSzoveg); * Bal- es jobboldali nyomogombok balGomb.requestFocusInWindow(); */ } else { private JButton balGomb; balGomb.setText(igenSzoveg); private JButton jobbGomb; jobbGomb.setText(nemSzoveg); jobbGomb.requestFocusInWindow(); /** } * Igen es Nem allandok } */ } private final String igenSzoveg = "Igen"; private final String nemSzoveg = "Nem"; /** * Akkor fut le, ha valamelyik gomb benyomodik. /** * Ha a benyomott gomb felirata "Igen", az *A konstruktor letrehozza az ablakot, * alkalmazas bezarul. * felteszi ra a vezerloket, es beallitja */ * az esemenykezeloket. public void actionPerformed */ (ActionEvent esemeny) { public AblakBezaros() { Object forras = esemeny.getSource(); // ablak es vezerlok letrehozasa if (((JButton) ablak = new JFrame("AblakBezaros.java"); forras).getText().equals(igenSzoveg)) { szovegCimke = new JLabel("Valóban szeretné System.exit(0); bezárni az ablakot?", } JLabel.CENTER); } balGomb = new JButton(igenSzoveg); jobbGomb = new JButton(nemSzoveg); /** * Belepesi pont, egy peldanyt hoz letre az // gombok onallo panelt kapnak * osztalybol. // az elrendezeskezelo miatt */ JPanel gombokPanelje = new JPanel(new public static void main(String[] args) { GridLayout(1, 2, 5, 5)); new AblakBezaros(); gombokPanelje.add(balGomb); } gombokPanelje.add(jobbGomb); } // az ablak tartalmanak feltoltese
16 Linuxvilág Fejlesztõi sarok
nem lett volna értelme újraírni õket. A két csomag remekül kiegészíti egy- mást, és jól használhatók, ha nem ha- nyagoljuk el az API tanulmányozását. Ugorjuk át most az osztály fejlécét és 1. ábra Ön mit tenne az adott szituációban? (2 pont) nézzük meg, mi van a törzsében. Elõször a tagváltozók felsorolását lát- juk. Egy ablakban egy szövegcímkét zésével a megoldás magáért beszélne. Behoztunk tehát tíz olyan osztályt, és két nyomógombot jelenítünk meg, A másik, hogy nehéz úgy egy grafikus amivel a sorozatban eddig nem talál- ez négy önálló objektumot jelent. alkalmazást megérteni, hogy az ered- koztunk. Az aggodalom azonban Itt találhatunk továbbá két állandót, ményét pusztán a képzelõerõnkre bíz- csak addig tarthat míg fény nem de- melyek a gombok feliratait adó szö- zuk. Különösen igaz ez akkor, ha még rül a Swing és az AWT mibenlétére. vegfüzérek. A final kulcsszóval nem sok tapasztalattal rendelkezünk A kezdetekben grafikus felhasználói biztosítjuk, hogy a változók értéke a grafikus felhasználói felületek készí- felületek létrehozásához Javaban az a késõbbiekben ne legyen módosítha- tése területén. Ezért mindenképpen AWT (Abstract Windowing Toolkit) állt tó. Az ilyen mezõk életükben egyszer javaslom a játék azonnali kipróbálását. csak rendelkezésre. Ez egy olyan osz- kaphatnak értéket. Ez a mûvelet ke- A felejthetetlen játékélményt követõ- tályokból és interfészekbõl álló hal- rülhetett volna a konstruktorba is, ek- © Kiskapu Kft. Minden jog fenntartva en nézzük meg, hogyan épül fel az mazt biztosított a programozónak, kor azonban feltétlenül ügyelni kellett alkalmazás. Az elõzõ részben is hasz- mellyel ablakokat hozhatott létre, volna arra, hogy még az elsõ állandó- náltuk az import kulcsszót, most rajta vezérlõket, és kezelhette a külön- ra való hivatkozás elõtt ellássuk azt viszont már-már ijesztõ méretekben féle eseményeket. a megfelelõ kezdõértékkel. fordul elõ. Az import a megadott Az egyik legnagyobb hátránya ennek Az ezután következõ konstruktor osztályt hozza be az alkalmazás névte- a megoldásnak pont az absztraktságá- hozza létre az ablakot. Elsõ sorában rébe. Ennek révén rövidebben hivat- ban rejlett. Miután az AWT használa- a JFrame osztályt példányosítjuk, és kozhatunk ugyanarra az osztályra, tával a programozó teljes mértékben a kapott referenciát az ablak tagválto- vagyis a behozatal után nem kell a futtatókörnyezetre bízta a megjele- zóban tároljuk. A JFrame egy Swing minden egyes helyen kiírni, hogy nítést, csak olyan elemek voltak elér- összetevõ, amely egy ablakot képvisel. javax.swing.JButton, elegendõ hetõek számára, amelyek minden Több konstruktora is van, mi most azt a JButton használata. Ennek termé- rendszeren megtalálhatók. Így az a változatot használtuk, mellyel rög- szetesen megvan az a hátulütõje, AWT a különféle ablakozó rendsze- tön meg is lehet adni az ablak címét. hogy nem hozhatunk létre saját rek beépített grafikus eszközkészle- Fontos tudni, hogy ettõl a sortól az JButton nevû osztályt az alkalma- tének legszûkebb keresztmetszetét ablak még nem jelenik meg. Alapér- zásban, de erre legtöbbször nincs kínálta csupán. Ráadásként az sem telmezésként a láthatósága hamis, is szükség. volt minden esetben elfogadható, ami azért jó, mert így a háttérben Miután csak három csomagból hasz- hogy nehezen megjósolható a prog- felépíthetjük az ablakot, amit csak nálunk osztályokat, nevezetesen ram kinézete is, hiszen mindent akkor jelenítünk meg, ha már teljesen a javax.swing, a java.awt és a futtatókörnyezet dönt el. készen van. a java.awt.event csomagokból, A Java 1.3 megjelenésével megérke- A következõ sorban hozzuk létre az elsõ tíz sort lerövidíthettük volna zett a Swing, amely már egy önálló a szövegcímkét. Konstruktorában így is: eszközkészlet a nyelvben. Teljesen megadjuk a szöveget, továbbá, hogy Java-ban íródott, ami jópár elõnnyel a rendelkezésre álló helyen középre import javax.swing.*; jár. A grafikus alkalmazás így nem igazítsa azt. Ez a címke még nem az import java.awt.*; veszít hordozhatóságán, ugyanakkor ablak része. Semmilyen módon nem import java.awt.event.*; több és nagyobb tudású vezérlõket fejeztük ki, hogy a vezérlõ, amit létre- használhat, mivel az ablak nem függ hoztunk, hol jelenjen meg. Ugyanez Így a csomagok összes osztálya a név- a futtatókörnyezettõl. A kinézet egy- a helyzet az ezután álló sorokban lét- térbe került volna. Ez viszont azért séges minden rendszeren, sõt, témá- rehozott Igen és Nem feliratú gombok- nem javasolt, mert ha a késõbbiekben kat is alkalmazhatunk a még egyedibb kal. Az elsõ sorokban tehát még csak akár nekünk, akár másnak elemeznie megjelenítés érdekében. különálló objektumokat hoztunk létre. kell a kódot, nem egyértelmû, hogy A Swing hátterében az AWT áll, így Ahhoz, hogy ezek az ablakban megje- melyik csomag miért kerül behozatal- nem lehet azt állítani egy alkalmazás- lenjenek, ki kell választanunk egy ra, más szóval milyen osztályokból ról, hogy „tisztán swinges”. A vezér- elrendezéskezelõt. Az elrendezés- építkezik a program. Nagy valószí- lõknél még igen szembetûnõen min- kezelõ az a láthatatlan kéz, amelyik nûséggel hibát nem követhetünk el, den osztály neve elé oda kell ragaszta- kirakosgatja az ablakhoz hozzáadott mert az adott helyen létrehozott osz- ni egy J betût (Button helyett elemeket az ablak területére. Mi tályok felülbírálják a behozott neve- JButton), az eseménykezelõ osztályok a GridLayout nevû elrendezéskezelõt ket, mégsem jó programozói gyakor- és interfészek viszont a jó öreg AWT használjuk, amely egy táblázatként ér- lat olyannal szennyezni a névteret, csomagból valók. Ez nem baj, mert ed- telmezi az ablakunkat. A GridLayout ami nem oda való. dig is kifogástalanul mûködtek, és példányosításakor megadhatjuk, hogy
www.linuxvilag.hu 2005. október 17 Fejlesztõi sarok
volna lehetõségünk a konstruktorban ezt meghatározni, így ezt itt tesszük meg. Ezt követõen az add metódussal felhelyezzük a címkét és a gombok paneljét az ablakra. Mielõtt megjelenítenénk az abla- kot, beállítjuk az eseménykezelõket. Elsõként az egérrel kapcsolatos eseményekkel foglalkozunk. Bár- mely osztály, amely megvalósítja a MouseListener interfészt, hozzá- rendelhetõ egy vezérlõhöz. Így, ha a vezérlõ területére belép az egérkurzor, vagy kilép onnan, kattin- tás történik, esetleg a felhasználó le- nyomja az egér valamelyik gombját, vagy felengedi azt, az interfészt © Kiskapu Kft. Minden jog fenntartva megvalósító osztály megfelelõ metó- 2. ábra Az ablak felépítése dusához kerül a vezérlés. Viszont ne felejtsük el, hogy egy in- terfész megvalósítása az összes elõírt hányszor hányas táblázatot szeret- paramétert, tehát nem kell megad- metódus megvalósítását jelenti. Jelen nénk használni. Ha például kétszer nunk az elrendezéskezelõt. Ilyenkor esetben nekünk erre nincs szüksé- ketteset választunk, akkor az elsõ hoz- az alapértelmezett FlowLayout günk, hiszen csak az egér mozgását záadott elemet az ablak bal felsõ sar- végzi a vezérlõk helyének meghatá- szeretnénk követni. Ha maradnánk kába helyezi, a másodikat a jobb felsõ- rozását. Ez balról jobbra folyamato- a MouseListener interfésznél, a többi be, a harmadikat a bal alsóba, a negye- san tölti fel az ablakot a vezérlõkkel, elõírt metódust üres törzzsel ugyan, diket pedig a jobb alsóba. és ha a következõ már nem fér ki de szerepeltetni kellene a program- Most egy olyan képet szeretnénk elér- az adott sorba, akkor a következõben ban. Ennek kiküszöbölésére használ- ni, ahol a címke az ablak felsõ részé- folytatja. Ez a viselkedés nagyon ható a MouseAdapter, amely egy ben van, a gombok pedig alul, egymás közel áll egy szövegszerkesztõben olyan osztály, ami megvalósítja mellett. Ennél az elrendezéskezelõnél megtekintett bekezdésre. Az ablak a MouseListener interfészt, üres maradva ezt úgy tudnánk elképzelni, mérete alapvetõen befolyásolja itt függvénytörzsekkel. Ha ebbõl szár- hogy a kétszer kettes tábla felsõ sorá- a vezérlõ helyét, mi több, az ablak maztatjuk saját osztályunkat, csak ban álló cellákat összevonjuk. Ez átméretezésével az egész megjelenés azokat a metódusokat kell felüldefini- azonban itt nem megoldható. Ehelyett megváltozhat, ezért csak kevés értel- álnunk, melyeket ténylegesen hasz- úgy tudjuk ugyanazt a hatást kelteni, mes felhasználása van ennek az nálni szeretnénk. hogy az ablakot két részre osztjuk csu- elrendezéskezelõnek. Ezzel úgyszólván átvágtuk a gordi- pán. A felsõ rész tartalmazza majd Megváltoztatható az elrendezéske- uszi csomót. Egyetlen osztályunk, a szövegcímkét, az alsó pedig egy új zelõ egy JPanel esetében a setLayout az AblakBezaros kiterjeszti panelt. Az új panel egy bal és egy metódussal. Viszont mivel a JPanel a MouseAdapter-t, ezt jelezzük is jobboldali cellából fog állni, ezekbe paraméter nélküli konstruktora létre- az osztály fejlécében. Elkészítjük kerülnek a gombok. hoz egy példányt a FlowLayout osz- a mouseEntered metódust, melynek A vezérlõk objektumainak létrehozása tályból, a felülbírálással egy felesle- meghívását az az esemény válthatja után ezt a panelt készítjük el. ges objektum létrehozását okozzuk. ki, ha az egérkurzor belép a vezérlõ A JPanel kosntruktorának rögtön át is Ezért, amikor csak lehet, érdemes területére. Az eseménykezelõvel ké- adunk egy új GridLayout objektumot, megadni még a konstruktorban sõbb foglalkozunk, itt, a konstruk- amely 1 sorból, 2 oszlopból álló táblá- a saját elrendezéskezelõt, hogy torban csak annyit állítunk, hogy zatban rendezi el az elemeket, és elkerüljük az értelem nélküli példá- a bal- és jobboldali gomb egérrel mind vízszintes, mind függõleges nyosítást. kapcsolatos eseményeivel jelen irányban 5 képpontot hagy ki a cellák Miután elkészültünk a panellel, objektum (this) törõdik. Ezt fejezik között. Miután a panel rendelkezik felrakhatjuk az elemeket az ablakra. ki az addMouseListener hívások. egy elrendezéskezelõvel, az elemek Ehhez közvetlenül nem adhatjuk Gombok esetében ennél többet is hozzáadása egy egyszerû add metó- hozzá a vezérlõket, viszont az ablak- figyelhetünk. Egy nyomógombbal dussal történik. Az ablakon belüli tartalom egyszerûen lekérdezhetõ kapcsolatos legfontosabb esemény tényleges, x és y koordinátákkal törté- a getContentPane metódussal. az, ha lenyomják. Ez történhet egér- nõ pozicionálás már a GridLayout Ehhez elõször hozzárendelünk egy rel is, de a billentyûzet segítségével dolga. GridLayout elrendezéskezelõt, 2 sor- is odalépkedhet a felhasználó, és Megjegyzem, hogy a JPanel-nek van ral, 1 oszloppal, és 5 képpontos héza- rátenyerelhet a szóköz billentyûre. olyan konstruktora, amely nem vár gokkal. JFrame esetében nem is lett Ezt az eseményt is szeretnénk
18 Linuxvilág Fejlesztõi sarok
kezelni, amit egy olyan osztály A pack metódus meghívásával példányával tehetünk meg, amely életre keltjük a láthatatlan kezet, megvalósítja az ActionListener amely szépen elrendezi az ablaktar- interfészt. Az elõzõekkel szemben talmat. Majd mivel fontos, hogy nincs ActionAdapter osztály, a fókusz ne a bal oldali gombon de ez két ok miatt sem gond. legyen, a jobboldalinak meghívjuk Egyrészt az ActionListener csak a requestFocusInWindow metódu- egyetlen metódus megvalósítását sát. Ez még nem biztosítja, hogy írja elõ, pont azt, amire szükségünk a vezérlõ valóban meg is kapta a fó- van. Másrészt többszörös öröklõdés kuszt, és egy komoly alkalmazásnál híján újabb osztályt már ki sem érdemes is megvizsgálni a visszatéré- terjeszthetnénk. si értéket e tekintetben. Viszont A szemfüles Olvasó felfigyelhet arra a legtöbb helyzetben elegendõ, ha a tényre, hogy a gombra történõ kat- csak meghívjuk a függvényt. Végül tintás egyszerre két eseménykezelõt láthatóvá tesszük az ablakot. is érint. Egyrészt az ActionListener Az alkalmazás elindításával az imént interfészt megvalósító osztály példá- tárgyalt konstruktor fut le. A további © Kiskapu Kft. Minden jog fenntartva nyának actionPerformed metódusa, meg bezárni az alkalmazást. Ez leg- két tagfüggvény csak meghatározott másrészt a MouseAdapter-t kiterjesztõ, többször a jobb felsõ sarokban találha- események hatására lépnek életbe. vagy a MouseListener-t megvalósító tó X-re való kattintást jelenti. Ezen végletekig felhasználóbarát osztály példányának mouseClicked A setDefaultCloseOperation metó- program ablakában a felhasználó a ki- tagfüggvénye. Ezt jelen esetben nem dusnak a JFrame osztály megfelelõ lépésért küzd. Ha az „Igen” feliratú valósítottuk meg, de használata nem konstansai közül kell átadnunk egyet. gomb fölé viszi a kurzort, a gombok ütközött volna semmilyen problémá- Az alapértelmezett mûvelet az elrejtés látszólag helyet cserélnek. Valójában ba. Ilyen helyzetben mindkét függ- (HIDE_ON_CLOSE). Ezt bíráljuk felül csak a felirataik változnak meg, és vény meghívásra kerül. azzal, hogy ne történjen semmi a vezérlõk a helyükön maradnak. A „végsõ simítások” megjegyzéssel (DO_NOTHING_ON_CLOSE). A leggyak- Ezt a cselt valósítja meg illetett részben elsõként megadjuk, rabban használt mûvelet minden bi- a mouseEntered metódus. hogy mi történjen, ha a felhasználó zonnyal a kilépés (EXIT_ON_CLOSE), Minden, a MouseListener által az ablakkezelõn keresztül próbálja ám itt nem erre van szükségünk. elõírt metódus paraméterként egy
www.linuxvilag.hu 2005. október 19 Fejlesztõi sarok
hivatkozást hasonlítunk össze, nagy valószínûséggel annak ellenére kapunk hamis eredményt, hogy az objektumok tartalma azonos. Miután meggyõzõdtünk arról, hogy az eseményt kiváltó gomb felirata „Igen”, hasonló eljárással megnézzük, hogy a baloldali gombról van-e szó. Ha igen, akkor a baloldali feliratát megváltoztatjuk „Nem”-re, a jobboldaliét „Igen”-re, és a baloldali kapja meg a fókuszt. Hasonló gondolatmenettel a jobb- oldali nyomógombra vonatkozó ág is értelmezhetõ. Végezetül az actionPerformed metódus adja a menekülési útvo- nalat a felhasználónak. Ha sike- rül lenyomnia a „Nem” felira- tú gombot, az alkalmazás bezárul. Ez a metó- dus a korábbiak alapján magá- ért beszél. Az egyetlen újdonság a System.exit(0) használata. Az exit a System osztály egy stati- kus metódusa, melynek para- métere az a visszatérési érték, melyet az alkalmazás a kilépéskor szolgáltat. A függvény meghívásá- MouseEvent amelyik kivál- val a program bezárul. típusú objektumot totta az eseményt. Elõbb Ebben a rövid programban szegény kap. Az egérkurzor meg kell vizsgálnunk, hogy felhasználó kergeti az egérrel azt belépését figyelõ függvény a gomb felirata Igen-e, ellenkezõ eset- a gombot, amelytõl azt várja, hogy törzsének elsõ sorában ennek ben ugyanis nincs semmi dolgunk. be tudja zárni az ablakot. Hosszabb- az eseményobjektumnak a forrását Ehhez elõbb lekérdezzük a feliratot rövidebb idõ után rá kell jönnie arra, kérdezzük le a getSource metódus a nyomógomb getText metódusával, hogy ebben a csilli-villi ablakozós segítségével. Tudnunk kell ugyanis, majd ennek a String objektumnak világban sem lehet elfelejteni a billen- hogy melyik gomb fölé került hívjuk meg az equals tagfüggvényét tyûzet jelentõségét. a kurzor, hiszen mindkettõt figyeljük. az igenSzoveg paraméterrel. Tekint- Bár ebben a hónapban még mindig Ám a getSource Object típusú refe- sük az alábbi példát: nem teljes mértékben a felhasználó ké- renciát ad vissza, nekünk pedig nyeztetése lebegett a szemünk elõtt, kö- JButton-ra van szükségünk. if ( ((JButton) forras).getText() vetkezõ alkalommal már hasznos és lát- Ezért késõbb, ahol a forras válto- == igenSzoveg ) { ... } ványos animációkat fogunk készíteni, zóra hivatkozunk, egy egyszerû bepillantva a szálkezelés mesterségébe. típuskényszerítést hajtunk végre. Helyes-e ez ebben a formában? Ugyanezt megtehettük volna már Másképp fogalmazva, ugyanazt Fülöp Balázs © Kiskapu Kft. Minden jog fenntartva a lekérdezésnél is, így: fejezi-e ki ez a sor, mint a forráskód- ([email protected]) ban látható? Bár agyunknak az 21 éves, imádja a Túró JButton forras = (JButton) a része, ami a világot egyszerûbbnek Rudit, a Debian Linuxot esemeny.getSource(); szeretné látni, azt mondatja, hogy és a teheneket. persze, sajnos nem így van. Az == Kedvenc írója Slawomir Ekkor a további típuskényszerítések operátor egyenlõséget vizsgál ugyan, Mrozek. Leginkább a számítógépes feleslegesek lennének. Viszont hang- de nézzük meg, mi áll a bal- és hálózatok biztonsága érdekli. A BME súlyozni szerettem volna a visszatérési a jobboldalon. Mindkettõ String VIK mûszaki informatikus érték típusát. A (JButton) forras referencia, azaz String típusú szak hallgatója. tehát arra a gombra vonatkozik, objektum hivatkozása. Ha két
20 Linuxvilág Fejlesztõi sarok
Sablonkezelés PHP nyelven, PEAR módra Tovább folytatjuk a PEAR modulokból történõ alkalmazásépítést. Legutóbb a DB adatbázis elvonatkoztatási réteget tanulmányoztuk részletesen, ezúttal a nem kevésbé fontos sablonkezelési témát boncolgatjuk, a legnépszerûbb témába vágó PEAR modul, az IT ismertetésével egybekötve.
ármilyen programozási a futás egy része kizárólag a kinézet nyelvrõl legyen is szó, elõállítására fordítódik. A sablonkeze- a kód tisztasága, átlátható- lõ rendszerek használata során sincs Bsága kulcsfontosságú. Nem csak ez másként, azzal a jelentõs különb- a továbbfejlesztésrõl van szó, de az séggel, hogy elhatárolódik egymástól esetleges hibakeresés is rémálommá a mûködési és a megjelenítési logika. válhat abban az esetben, ha nincs A gyakorlatban a teljes program vagy szerkezete a forráskódunknak. A cél oldal egyetlen PHP címkébõl áll, elérésének módja alapvetõen az, amely sablonkezelõ rendszert utasít- hogy a fejlesztõ rendesen dolgozik, va írja ki a megjelenítendõ HTML odafigyel, hogy milyen munkát ad kódot az alapértelmezett kimenetre. ki a kezébõl. Nem tud viszont mit kezdeni azzal a ténnyel, hogy számtalan szkriptnyelv, A sablonok és a PEAR többek között a PHP is alapértelmezetten a HTML kód- Mielõtt ismét újra feltalálnánk a kereket, érdemes egy kicsit ba épül be, tehát a kinézet és a kód összekeveredik, ami körülnézni. Azt már tudjuk, hogy a PEAR rendszer épp az nem csak logikailag és a mûködés szempontjából nézve ilyen általános megoldások kezelésére nyújt kész megoldá- számít szerencsétlen körülménynek. A fenti állapot sokat, kezdjük hát itt a nézelõdést. © Kiskapu Kft. Minden jog fenntartva spagettikóddal összemérhetõ igénytelenségû kódot ered- A sablonkezelõket a HTML kategóriában, a Template cso- ményez, amelyet a legjobb szándékkal sem lehet tisztán portban találjuk. (Megjegyzés: a kategóriában nincsenek tartani. Az egyetlen megoldás a kód és a kinézet szétvá- valódi csoportok, a sablonkezelõket is csak a nevük kezdete lasztása, elkülönítése. teszi csoporttá.) Jelenleg öt sablonkezelõ csomag áll a fej- Ez minden esetben valamilyen sablonkezelõ rendszert hasz- lesztõk rendelkezésére, mindegyikük végleges (stable) álla- nálatával érhetõ el, amely a kinézetet tartalmazó sablont potban. Az összes sablonkezelõt azonban nehéz lenne be- összeolvasztja az adatokat elkészítõ PHP kimenettel, és az mutatni. Általában a végleges állapotúakat szoktam ismer- egészet kiteszi a felhasználónak. Így nem pusztán kódot és tetni, jelen esetben ez azonban nem szûkíti a kört, úgyhogy kinézetet lehet szétválasztani, de megvalósítható a manap- a másik jellemzõ módszert választottam: népszerûségük ság oly divatos MVC architektúra is, ahol a modell a nézet és alapján döntöttem, s a statisztikák szerinti legkedveltebb a vezérlõ jól elkülönített hármasából áll össze az alkalmazás. csomagot választottam (sok tízezer ember nem tévedhet). A sablonkezelést valahogy úgy kell elképzelni, mint az elõ- Ez az Integrated Templates nevû (teljes nevén re megírt papír formanyomtatványokat, ahol ezen a bizo- HTML_Templates_IT) PEAR összetevõ, amely egy igen nyos „okmányon” szerepelnek azok a részek, amelyek min- egyszerû és jól használható, csere alapú sablonrendszer. den esetben ugyanúgy néznek ki, s nekünk az a dolgunk, hogy a változó adatokat kézzel töltsük ki. A programozás Az IT csomag területén a formanyomtatvány szerepét a program megjele- Az IT csomag egy egyszerû sablonkezelõ alkalmazás- nési felülete tölti be, ahol szintén az a dolgunk, hogy a fix fejlesztési felület (API), amely döntõen a benne elhelyezett részek közé a program futása során beírjuk a változó adato- különleges formátumú címkék értékekre történõ kicserélé- kat, magyarul „ki kell töltenünk” a sablont. sét végzi. Egy az IT számára értelmezhetõ sablon a hagyo- Ehhez a sablonban meghatározott alakú címkéket helye- mányos HTML címkékbõl, {címke} alakú ún. helyfenntar- zünk el, amelyeket aztán a program segítségével kicseré- tókból (placeholder), és az ezeket tagoló blokkokból áll. lünk, átalakítunk, vagy épp a sablonban található logika sze- Amikor a sablont „kitöltjük”, a {címke} alakú helyfenntar- rint értelmezünk. Minden program esetében igaz az, hogy tókat cserélgetjük ki a programból az általunk meghatáro-
www.linuxvilag.hu 2005. október 21 Fejlesztõi sarok
zott értékekre. A hatékony mûködés érdekében ezek a címkék blokkokba vannak szervezve. Ha nem adunk 1. lista Az elsõ sablon meg ilyet, akkor is az alapértelmezett __global blokkban szerepelnek, csak legfeljebb a mindennapos használat során A sablon ez nem tûnik fel. Amikor címkecserét hajtunk végre, elõ- ször kijelöljük, hogy mely blokkban szeretnénk mindezt
megtenni, majd a címke -> érték hozzárendelés után a sablonkezelõ értelmezi és „lefordítja” a kívánságunkat Üdvözöllek! Ma {DATE} van. igazi HTML kódra.Csak ezután fog az adott blokk megjelenni a kimeneten, ha majd arra utasítást adunk. Egy-egy blokk kitöltése, értel- mezése (fordítása) tetszõleges számban következhet egy- más után, így ismétlõdõ részeket (például) táblázatok sorait
hozhatunk létre egyedüli sorokból. Ez így elsõre talán ne- Látogató IP-je: {IP} hezen érthetõ, úgyhogy forduljunk a már jól megszokott módszerhez: lássunk egy példát! © Kiskapu Kft. Minden jog fenntartva Építsünk bemutató holnapot az IT segítségével! Esetünkben mindjárt példák egész sorával találkozhatunk. A PHP forrás A feladat: apróbb lépésenként felépíteni egy nagyon-nagyon loadTemplatefile("main.tpl.html"); pear install HTML_Template_IT
//aktuális blokk kijelölése parancs kiadásával. $tpl->setCurrentBlock("header"); //címke-érték megfeleltetés A kezdeti tipegések $tpl->setVariable("DATE",date("Y.m.d")); Az elsõ lépés egy oldal létrehozása, amelynek van egy fejlé- //az aktuális blokk lefordítása ce. Ez tartalmazza az aktuális dátumot. A sablonok az aktu- $tpl->parseCurrentBlock(); ális könyvtár templates alkönyvtárában találhatók. A kód a sablonkezelõ rendszer beemelésével kezdõdik, rög- //az oldal megjelenítése tön ezután létre is hozunk egy példányt a sablonkezelõnk- $tpl->show(); bõl, a továbbiakban ez a változó fogja megtestesíteni ?> a rendszert, amely a paraméterként átadott könyvtárban fogja keresni a sablonokat.
1. ábra Az eredmény
22 Linuxvilág Fejlesztõi sarok
$tpl->loadTemplatefile("main.tpl.html");
2. lista A kiegészített sablon Betölti a szükséges sablonfájlt, amely tartalmazza a blokko- kat és címkéket, amiken késõbb a mûveleteket elvégezzük. A sablon $tpl->setCurrentBlock("header");
Ha már betöltöttük a sablont, rendeljünk értékeket az Üdvözöllek! Ma {DATUM} van. elhelyezett címkékhez, ám mielõtt ezt megtennénk, kikell jelölni, hogy melyik blokkban szeretnénk ezt megtenni. Egy változónév egy blokkban is szerepelhet többször, de azok azonos értékekre fognak kicserélõdni. Ez a változás
azonban nem érinti a más blokkokban elhelyezett azonos Látogató IP-je: {IP} nevû változókat. $tpl->setVariable("DATE",date("Y.m.d")); © Kiskapu Kft. Minden jog fenntartva Ez a parancs végzi a konkrét megfeleltetést, és a DATE cím- kéhez a mai dátumot rendeli (természetesen csak a A PHP forrás header blokkon belül). parseCurrentBlock();
$tpl = new HTML_Template_IT("./templates"); A megfeleltetés után ezzel a paranccsal tudjuk kicseréltetni a címkéket értékekre, valamint ennek hatására az aktuális $tpl->loadTemplatefile("main.tpl.html"); blokk bekerül a megjelenítendõ tartalmak közé. Ellenkezõ $tpl->setCurrentBlock("header"); esetben, ha egy blokkal nem csinálunk semmit, azaz nem $tpl->setVariable("DATUM",date("Y.m.d")); rendelünk értékeket a címkékhez, és nem alkalmazzuk $tpl->parseCurrentBlock(); ezeket a változtatásokat, akkor az adott blokk tartalma nem fog megjelenni a kimeneten. $tpl->setCurrentBlock("footer"); $tpl->setVariable("IP",$_SERVER $tpl->show(); ['REMOTE_ADDR']); $tpl->parseCurrentBlock(); Ez a parancs végül kiteszi a már elkészült, kitöltött sablont az alapértelmezett kimenetre. Elõfordulhat azonban, hogy $tpl->show(); nekünk nem erre van szükségünk, nem kiíratni szeretnénk ?> az értéket, hanem a tartalmával mûveletet végezni (levél- ben küldeni, stb.). Ilyen esetekben a get() metódust hasz-
2. ábra Az új eredmény
www.linuxvilag.hu 2005. október 23 Fejlesztõi sarok
$drivers[2] = array('firstname'=>"Mika", 3. lista Ismétlõdõ elemek egy sablonban 'lastname'=>"Hakkinen",'number'=> 2,'age'=>33,'num_of_championships'=>2); A sablon $drivers[3] = array('firstname'=>"Jacques", 'lastname'=>"Villeneuve",'number'=>
3,'age'=>32,'num_of_championships'=>1); $drivers[4] = array('firstname'=>"Damon", Üdvözöllek! Ma {DATE}. van. 'lastname'=>"Hill",'number'=>4,'age'=>37,'num_of_championships'=>1); require_once "HTML/Template/IT.php"; $tpl = new HTML_Template_IT("./templates");
Versenyzõk
$tpl->loadTemplatefile("main.tpl.html"); Nyitólap- $tpl->setCurrentBlock("header"); $tpl->setVariable("DATE",date("Y.m.d"));
- parseCurrentBlock(); href="f1.php?number={NUMBER}">{NAME} $tpl->setCurrentBlock("list_item");
© Kiskapu Kft. Minden jog fenntartva
['firstname'][0].". ".$driver Látogató IP-je: {IP} ['lastname']); $tpl->parseCurrentBlock(); } $tpl->parse("list");
$tpl->setCurrentBlock("footer"); A PHP kód $tpl- setVariable("IP",$_SERVER['REMOTE_ADDR']); //az adatforrás $tpl->parseCurrentBlock(); $drivers[1] = array('firstname'=>"Michael",'lastname'=> $tpl->show(); "Schumacher",'number'=>1,'age'=>35, ?> 'num_of_championships'=>7);
nálhatjuk, amely egy karaktersorozat formájában visszatérési értékéül adja a kitöltött sablont.
Még mindig tipegünk A blokkok kitöltögetését természe- tesen egymás után végezhetjük, a dolgunk annyi, hogy meg kell mondani a megjelenítés elõtt, hogy melyik blokk legyen a következõ, amelyen mûveleteket szeretnénk végezni. Egészítsük ki a fenti pél- dát egy lábléccel, amely a látogató IP-jét mutatja!
Ismétlõdõ elemek, egymásba ágyazva Ugorjunk most egy kicsit nagyobbat. 3. ábra Az eredmény Készítsünk egy adatforrásból egy listát a már meglévõ lapon, amely a késõbbi- ekben megjelenítendõ világbajnokok neveit tartalmazza, amelyek mindegyi-
24 Linuxvilág Fejlesztõi sarok