P R O G R A M U J E M EglClearColor(0.0f,0.0f,0.0f,0.5f); //pozadie vyfarbímeèiernouAko ïalšie <strong>na</strong>stavenie špecifikujeme hodnotu <strong>na</strong> èiste−nie obrazovky. Tentoraz nepôjde o farbu, ale o håbku.GlClearDepth(1.0f);Poslednou vecou, èo urobíme v inicializácii, je zapnu−tie håbkového testu, výber typu håbkového testu a <strong>na</strong>sta−venie reálnejších perspektívnych výpoètov.glE<strong>na</strong>ble(GL_DEPTH_TEST); //håbkový testglDepthFunc(GL_LEQUAL); //typ testuglHint(GL_PERSPECTIVE_CORRECTION_HINT,GL_NICEST);//krajšie zobrazovanieA sme <strong>na</strong> konci <strong>na</strong>šej druhej funkcie. Ak prebehla vporiadku, vráti hodnotu TRUE, ak nie, niekde bude chybaa vypíše sa hàba chybových hlásení.return TRUE;}Teraz sa presunieme <strong>na</strong> koniec a deklarujeme funkciu,ktorá má <strong>na</strong> starosti poctivé zrušenie ok<strong>na</strong>. Má názovKillGLWindow.void KillGLWindow(void){Ako prvé pri regulárnom zrušení ok<strong>na</strong> musíme zisti, èisme v celoobrazovkovom reime. Ak v òom sme, zmenímegrafický reim <strong>na</strong> pred<strong>na</strong>stavené rozlíšenie a zobrazímekurzor myši.if(fullscreen){ChangeDisplaySettings(NULL,0);ShowCursor(1);}Ïalej musíme uvo¾ni DC a RC. Ak sa v uvo¾òovacomprocese objaví chyba, RC a DC sa <strong>na</strong>stavia <strong>na</strong> hodnotuNULL.if(hRC){if(!wglMakeCurrent(NULL,NULL)) //deaktivuj RC{MessageBox(NULL,”DC a RCchyba“,”Chyba”,MB_OK,MB_ICONINFORMATION);}if(!wglDeleteContext(hRC)) //zma RC{MessageBox(NULL,”Chyba pri odstraòovaníRC”,”Chyba”,MB_OK,MB_ICONINFORMATION);}hRC=NULL; //ak prebehlo všetko OK vynuluj}Pokúsime sa uvo¾ni DC. Ak nie, objaví sa chybové hlá−senie.if(hDC && !ReleaseDC(hWnd,hDC)){MessageBox(NULL,”Chyba uvolnovaniaDC”,”Chyba”,MB_OK,MB_ICONINFORMATION);HDC=NULL;}if(hWnd && !DestroyWindow(hWnd)) //koniec aplikácie{MessageBox(NULL,”Chyba hWnd”,”Chyba”,MB_OK,MB_ICO−NINFORMATION);HWnd=NULL}if(!UnregisterClass(“OpenGL”,hInstance)) //uvo¾òujemetriedu a pamä{MessageBox(NULL,”Nejde odregistrovaokno”,”Chyba”,MB_OK,MB_ICONINFORMATION);hInstance=NULL;}}Ïalšiu funkciu máme za sebou. U máme vybavené ini−cializovanie, zmenu ve¾kosti, zrušenie, no stále nemámefunkciu <strong>na</strong> vytvorenie ok<strong>na</strong>. A práve <strong>na</strong>stáva èas <strong>na</strong> funk−ciu CreateGLWindow. Táto funkcia je pomerne rozsiahla,a preto ju <strong>na</strong>èneme v tejto èasti a v budúcej ju dokonèíme.Iba si <strong>na</strong>definujeme premenné a konèíme. Prvým para−metrom je titulok ok<strong>na</strong>, druhým je šírka ok<strong>na</strong>, tretím výškaok<strong>na</strong>, štvrtým poèet bodov <strong>na</strong> pixel a piatym je príz<strong>na</strong>kurèujúci celoobrazovkový reim.BOOL CreateGLWindow(char* title, int width, int height,int bits, bool fullscreen_);{Definujeme si premenné. Táto funkcia je pomerne zlo−itá <strong>na</strong> pochopenie, a preto sa ju nes<strong>na</strong>te silou−mocoupochopi. Nebudem komentova kadý riadok, pretoe byto zabralo celý seriál.GLuint PixelFormat;WNDCLASSEX wc; //miesto <strong>na</strong> štruktúru pre registráciuok<strong>na</strong>DWORD dwExStyle;DWORD dwStyle;RECT WindowRect; //miesto pre ve¾kos ok<strong>na</strong>WindowRect.left=(long)0; //¾avý okrajWindowRect.right=(long)width; //pravý okrajWindowRect.top=(long)0; //horný okrajWindowRect.bottom=(long)height //dolný okrajfullscreen=fullscreen_;Tým sme <strong>sk</strong>onèili definíciu premenných. Pokraèovaniefunkcie CreateGLWindow bude pre rozsiahlos uverejnené<strong>na</strong>budúce.ZÁVER. Dostali sme sa <strong>na</strong> koniec prvej èasti. Tým, ktorísa dostali s èítaním a sem, chcem poïakova za trpezli−vos. Nabudúce budeme pokraèova v inicializácii OpenGL.A ešte jed<strong>na</strong> poznámoèka. Ak píšete zdrojový kód, dávaj−te si pozor <strong>na</strong> ve¾ké a malé písmená. Mne sa toti pri písa−ní zdrojového kódu stalo, e som mal len dve malé pís−mená <strong>na</strong>miesto ve¾kých a prekladaè ma obdaril nieko¾−kými chybami. A potom je to ozaj aká práca, nájs v kó−de dve písmenká. Teším sa <strong>na</strong> vás aj <strong>na</strong>budúce.Lukáš StaòaAko <strong>na</strong> nápoveï / 2. èas<strong>Vitajte</strong> pri ïalšej èasti seriálu o nápovedi. Ako sme si mi−nule povedali, proces tvorby nápovedného súboru pozo−stáva z nieko¾kých základných krokov (pozri obrázok 1),ktoré si v struènosti vysvetlíme a zostavíme i jednoduchýsúbor nápovede.1. KROK: PÍSANIE NÁPOVEDNÝCH TÉM. Etapapísania tém sa vám môe po prvých <strong>sk</strong>úsenostiach v ob−lasti tvorby nápovede zda <strong>na</strong>máhavá a prác<strong>na</strong>. Len èovšak <strong>na</strong>dobudnete základnú zruènos, uvidíte, e je tove¾ká zábava.Ako iste viete, kadý nápovedný systém obsahuje mno−ho rôznych tematických okruhov. Tomu zodpovedá ajštruktúra súboru RTF. Jednotlivé témy, ktoré <strong>na</strong>píšete, jepotrebné formátova príslušnými z<strong>na</strong>kmi a oddeli ich odseba zalomením stránky. Uvedieme si podrobný postuptvorby súboru RTF, ktorý obsahuje iba dve témy (teda dvestrany v textovom procesore).Postupujte takto:1.Spustite Word. Ak ho u máte spustený, vytvortenový dokument.2. Na prvý riadok dokumentu <strong>na</strong>píšte text: Téma 1.3. Premiestnite kurzor pred <strong>na</strong>písaný text a z menuVloi aktivujte poloku Poznámka pod èiarou...4. V dialógovom okne prepnite prepí<strong>na</strong>è <strong>na</strong> vo¾buVlastná z<strong>na</strong>èka a do ved¾ajšieho textového po¾azadajte z<strong>na</strong>k mrieky (#). Ten <strong>na</strong>píšete ¾ahkopomocou stlaèenia klávesu ALT a zadaním èísla 35<strong>na</strong> numerickej klávesnici. Nakoniec stlaète tlaèidlo OK.5. Všimnite si, e Word vás automaticky premiestnildo oblasti poznámky pod èiarou.6. Tu zadajte názov prvej témy nápovede, <strong>na</strong>pr. T1.Týmto ste tému jednoz<strong>na</strong>ène pomenovali a budete<strong>na</strong> òu odkazova práve pomocou zadaného názvu.7. Umiestnite kurzor za text v prvom riadku (za Téma 1).8. Z menu Vloi vyberte prvú poloku Koniec...a v dialógovom okne <strong>na</strong>stavte prepí<strong>na</strong>è <strong>na</strong> monosKoniec stránky. Word automaticky vytvorí ïalšiustránku.9. Na prvý riadok <strong>na</strong>píšte text: Toto je druhá témanápovede.10.Z menu Nástroje vyberte poloku Monosti a kartuZobrazenie. Tu postupne oz<strong>na</strong>ète poloky Z<strong>na</strong>kytabulátorov, Koniec odsekov a Skrytý text.11. Zopakujte 3. a 5. krok pre druhú tému nápovede.Druhú tému pomenujte T2.12.Premiestnite kurzor <strong>na</strong> prvú stránku dokumentua celý text Téma 1 vyberte do bloku.13.Z menu Formát vyberte poloku Písmo a aplikujte<strong>na</strong> vybratý text dvojité podèiarknutie.14. Ihneï za podèiarknutý text <strong>na</strong>píšte názov druhejtémy (teda T2).15. Vyberte text T2 do bloku, opä zvo¾te menu Formát,poloku Písmo a formátujte vybraný text ako <strong>sk</strong>rytý.Ak ste tento krok u<strong>sk</strong>utoènili správne, text T2 budeteraz ma bodkované podèiarknutie (pozri obrázok 2).16.Dokument ulote vo formáte .RTF.2. KROK: TVORBA GRAFIKY PRE NÁPOVEDE. Prav−depodobne budete chcie, aby váš nápovedný súbor ne−po<strong>sk</strong>ytoval pouívate¾om iba strohé informácie, ale abybol príalivý i z grafickej a dizajnér<strong>sk</strong>ej stránky. Na vy−tvorenie obrázkov, náèrtov alebo grafov môete poui¾ubovo¾ný dostupný grafický softvér. Do klasickej nápo−vede je moné zahrnú obrázky vo formáte .BMP, .DIB,.WMF, .SHG a .MRB. Z uvedených formátov sú asi nezná−me posledné dva. Formát .SHG sa vyuíva <strong>na</strong> ukladanieobrázkov vo forme tzv. hotspotov. Ide o aktívne grafic−ké miesta, <strong>na</strong> ktoré môe pouívate¾ klepnú a vyko<strong>na</strong>tak nejakú operáciu (<strong>na</strong>pr. zobrazenie inej témy nápo−vede, spustenie makra a pod.). O blišom vyuití tohtoformátu budeme hovori v niektorej z ïalších èastí se−riálu. Posledne spomenutý formát .MRB sa pouíva <strong>na</strong>ukladanie bitových máp v nieko¾kých rozlíšeniach sú−èasne.Pokia¾ máme <strong>na</strong> mysli vyuitie grafických súborov vnápovedi, môeme uvaova o dvoch alter<strong>na</strong>tívach. Jed−noducho môete obrázok vloi do súboru s témami po−mocou schránky alebo <strong>na</strong> súbor s grafikou odkáza po−mocou špeciálneho príkazu {bmx}. Druhá monos jevýhodná <strong>na</strong>jmä vtedy, ak potrebujete poui ten istýobrázok <strong>na</strong> viacerých miestach nápovede. Pozrime sateraz blišie <strong>na</strong> zápis príkazu {bmx} <strong>na</strong> vloenie bitovejmapy. Tento zápis (samozrejme, e v modifikovanej po−dobe pod¾a vášho grafického súboru) zapíšete do súbo−ru s témami.7/2002 PC REVUE 131
P R O G R A M U J E M EObr. 1Obr. 2Obr. 4{bmx meno_súboru.bmp}, kde x môe <strong>na</strong>dobúdatieto hodnoty:c – zarovná obrázok v jednej rovine s textoml – zarovná obrázok <strong>na</strong> ¾avú stranur – zarovná obrázok <strong>na</strong> pravú stranuDodatoèná je hodnota t, ktorá sa pouíva len pri práciso 16−farebnými obrázkami a dovo¾uje <strong>na</strong>hradi bielu far−bu pozadia obrázka farbou pozadia ok<strong>na</strong> nápovede (po−tom zápis vyzerá takto: {bmxt meno_súboru.bmp}).3. KROK: VYTVORENIE PROJEKTOVÉHO SÚBO−RU NÁPOVEDE. Keï u máte pripravený súbor s té−mami, je <strong>na</strong>èase vytvori projektový súbor nápovede. Spustiteprogram Help Workshop (ïalej ako HCW) a z menu File vy−berte poloku New. V dialógovom okne, ktoré sa objaví,vyberte poloku Help Project, ako je uvedené <strong>na</strong> obrázku 3.V ïalšom okne špecifikujte názov projektové súboru.Následne program HCW otvorí novovytvorený projekto−vý súbor <strong>na</strong> editáciu. Podoba ok<strong>na</strong> by mala vyzera asiako <strong>na</strong> obrázku 4.Aby kompilátor vedel, ktorý súbor s témami má poui,musíte mu trochu pomôc. Klepnite teda <strong>na</strong> tlaèidlo Files,ïalej aktivujte tlaèidlo Add a vyh¾adajte váš súbor .RTF.Následne ulote projektový súbor.Obr. 34. KROK: TVORBA OBSAHOVÉHO SÚBORU. Ob−sahový súbor (súbor s koncovkou .CNT) sa vyuíva vtedy,keï je potrebné po<strong>sk</strong>ytnú pouívate¾ovi preh¾adnú stromo−vú štruktúru jednotlivých nápovedných tém. Uplatnenie <strong>na</strong>−chádza pri pomerne robustných nápovedných súboroch, kto−ré obsahujú nieko¾ko desiatok alebo a stoviek tém. Pre po−treby vášho prvého nápovedného súboru nie je nevyhnutné,aby ste takýto súbor zostavovali. No v budúcej èasti si tvorbua editáciu obsahového súboru preberieme podrobnejšie.5. KROK: KOMPILÁCIA PROJEKTOVÉHO SÚBO−RU. Koneèným krokom je vygenerovanie plnohodnotné−ho súboru nápovede (.HLP). Proces kompilácie u<strong>sk</strong>utoèní−te ve¾mi jednoducho. Staèí, ak iba klepnete <strong>na</strong> tlaèidloSave and Compile v spodnej èasti ok<strong>na</strong> programu HCW.Váš prvý súbor nápovede by mal vyzera ako <strong>na</strong> obrázku 5.Obr. 5Po aktivácii hypertextového odkazu Téma 1 sa zobrazíïalšia téma. Na úvodnú stránku nápovede sa potommôete dosta pomocou tlaèidla Naspä alebo tlaèidlaObsah. Vytvorený nápovedný súbor je <strong>sk</strong>utoène jedno−duchý, <strong>na</strong>pokon obsahuje iba dve témy. No pouitímpostupu, ktorý bol uvedený v 1. kroku, si môete vytvo−ri tém, ko¾ko len chcete. Aby ste si pokia¾ mono <strong>na</strong>j−rýchlejšie osvojili pracovný postup tvorby a editácienápovedných tém, pokúste sa <strong>na</strong>písa ešte aspoò dvealebo tri témy. Nebojte sa nápoveï i graficky obohati avy<strong>sk</strong>úšajte si aj pouitie príkazu {bmx} <strong>na</strong> odkazovanie<strong>na</strong> externé grafické súbory.Dovidenia <strong>na</strong>budúce.Ján HanákMalé ve¾ké databázy III. / 2. èasV predošlej èasti sme si povedali dôleité veci o k¾úèoch aindexoch. Teraz vieme, e správne postavenie indexov do−káe podstatne zrýchli vyh¾adávanie dát. Bohuia¾, klasickéindexy sa dali poui len <strong>na</strong> jednoz<strong>na</strong>èné dáta. Èo v takomprípade, ak chceme vyh¾adáva text v rôznych ståpcoch, keïpresne nevieme, kde sa h¾adaný reazec <strong>na</strong>chádza alebo akýje presne jeho zápis? Na to sa v moderných databázovýchstrojoch pouíva tzv. fulltextové vyh¾adávanie.FULL−TEXT INDEX. Fulltextové vyh¾adávanie môemepreloi ako plnotextové vyh¾adávanie, teda vyh¾adávanie vcelom texte. Aby sme mohli zrealizova fulltextové vyh¾adáva−nie, musíme v konkrétnej tabu¾ke vytvori fulltextový index. Ta−kýto index a vyh¾adávanie podporuje MySQL od verzie 3.23.23.Full−text index sa oz<strong>na</strong>èuje FULLTEXT a môe by vytvo−rený <strong>na</strong> ståpce typu VARCHAR a TEXT.Jeho vytvorenie je podobné ako pri klasických inde−xoch, teda pouitím v príkaze CREATE TABLE alebo pria−mo príkazom CREATE INDEX èi ALTER TABLE. Ak si spo−menieme <strong>na</strong> zásady, ktoré sme si vysvet¾ovali minule, mô−e by pouitie CREATE INDEX alebo ALTER TABLE omnohoefektnejšie pri rozsiahlych databázach ako vkladanie záz<strong>na</strong>−mov do prázdnej tabu¾ky s u <strong>na</strong>definovaným indexom. Akovdy správne rozhodnutie záleí <strong>na</strong> pouití aplikácie.MATCH A AGAINST. Pri zavedení fulltextového inde−xovania a vyh¾adávania sa objavujú aj nové k¾úèové slováMATCH a AGAINST. MATCH je zároveò aj funkciou. Jejúlohu si vysvetlíme ne<strong>sk</strong>ôr. MATCH môeme vo¾ne preloiako porov<strong>na</strong>nie. AGAINST môeme v tomto výz<strong>na</strong>me pre−loi ako s alebo proti. Výz<strong>na</strong>m týchto spojení si vysvetlí−me ne<strong>sk</strong>ôr <strong>na</strong> konkrétnom príklade.VZOROVÝ PRÍKLAD. Vráme do <strong>na</strong>šej virtuálnej kni−nice a majme takúto jednoduchú tabu¾ku s názvom KNIHYo kadej knihe:id<strong>na</strong>zovopisNech obsahuje dva indexy – jeden primárny index <strong>na</strong>poloku id a druhý fulltextový index <strong>na</strong> poloky <strong>na</strong>zov aopis. Je zrejmé, e tento druhý index bude tzv. zloený index.SQL zápis vytvorenia takejto tabu¾ky potom bude:CREATE TABLE knihy(id INT UNSIGNED AUTO_INCREMENT NOT NULLPRIMARY KEY,<strong>na</strong>zov VARCHAR(50),popis TEXT,FULLTEXT (<strong>na</strong>zov,opis))Na ilustráciu príkladu si <strong>na</strong>plníme tabu¾ku KNIHY týmitodátami:id <strong>na</strong>zovopis1 MySQL Tutorial DBMS stands for DataBaseMa<strong>na</strong>gement ...2 How To Use MySQL After you went through a ...Efficiently3 Optimising MySQL In this tutorial we willshow how to ...4 1001 MySQL Trick 1. Never run mysqld as root.2. Normalise ...5 MySQL vs. YourSQL In the following databasecomparison we ...6 MySQL Security When configured properly,MySQL could be ...132 PC REVUE 7/2002