Ročníkový projekt
DYNAMICKÉ HTML
Projektová dokumentace
Jan Ehrlich, Petr Marek, Tomáš Marván, Martin Paľo
Vedoucí projektu: RNDr. Vladimír Kuthan
1
Obsah 1.
Úvod .........................................................................................................................................3
2.
Zadání projektu ........................................................................................................................4 2.0.1. 2.1.
3.
4.
5.
6.
Projekt na MFF UK ....................................................................................4
Stručná specifikace ....................................................................................................5
Základní specifikace ..................................................................................................................6 3.0.1.
Uvedení do problematiky ..............................................................................6
3.0.2.
Programovací jazyk ......................................................................................6
Vývoj ........................................................................................................................................7 4.0.1.
Řešitelský tým ..............................................................................................7
4.0.2.
Dělba práce v řešitelském týmu ....................................................................7
4.0.3.
Chronologie ..................................................................................................8
Instalace ....................................................................................................................................9 5.1.
CGI modul .............................................................................................................. 10
5.2.
Modul do Apache 1.3 .............................................................................................. 11
Požadavky na Hardware a software ........................................................................................ 12 6.1.
Hardware ................................................................................................................. 13
6.2.
Software ................................................................................................................... 14
2
1. Úvod Tento dokument slouží jako dokumentace projektu Dynamické HTML. Obsahuje uvedení díla do problematiky, rozdělení práce v týmu a chronologický vývoj díla.
3
2. Zadání projektu
2.0.1. Projekt na MFF UK Dynamické HTML je vypracován v rámci předmětu ”PRG 023 - Projekt” na MFF UK v Praze. Vedoucím projektu je RNDr. Vladimír Kuthan.
4
2.1. Stručná specifikace Cílem projektu byla reimplementace základních funkcí Web DataBladu pro databázi Informix Online. Nevýhodou tohoto DataBladu je jeho závislost pouze na Informixu Online, který je cenově náročný. Z toho důvodu byla pro opětovnou implementaci vybrána lehčí verze Informixu, a to Informix SE 7.2.
5
3. Základní specifikace Vytvoření implementace základních jazykových konstruktů implementovaných ve Web DataBladu Databáze Informix. Součástí je též případné vhodné rozšíření podporovaných tagů tak, aby kód běžící ve Web DataBladu by mohl být nasazen na náš projekt a opačně.
3.0.1. Uvedení do problematiky V současné době je na poli dynamických webů velmi populární skriptovací jazyk PHP. Ovšem některé firmy se chtějí zaštítit silným partnerem, a proto volí komerční řešení, např. databázi Informix Online s Web DataBladem. Ovšem ne všichni chtějí hned drahé řešení a rádi by si nejprve navrhované řešení vyzkoušeli na levnější databázi. Tou se zdá být Informix SE, která poskytuje stejné základy SQL jako její silnější kolega Informix Online. Ovšem k této databázi neexistuje na trhu ekvivalent Web DataBladu, a proto mnozí zákazníci od této varianty ustupují. Cílem našeho projektu je implementovat základy Web DataBladu, aby bylo možno použít stejný skriptovací jazyk jako nad databází Informix Online i na databázi Informix SE.
3.0.2. Programovací jazyk Jako programovací jazyk jsme zvolili jazyk C pro jeho dobrou podporu jak při přístupu k databázi, tak při využití knihovních funkcí webservru Apache. Pro přístup k databázi potom kromě několika databázově závislých funkcí používáme Embeded SQL, aby bylo možno náš projekt v budoucnu případně portovat i nad jiné databáze.
6
4. Vývoj
4.0.1. Řešitelský tým Již od začátku byl projektový tým tvořen čtyřmi členy. Tento počet se během vývoje již neměnil, třebaže další pomocná síla by jistě měla prostor k tvůrčí práci. Členové týmu jsou: Jan Ehrlich
[email protected] Petr Marek
[email protected] Tomáš Marván
[email protected] Martin Palo
[email protected]
4.0.2. Dělba práce v řešitelském týmu Rozdělení činností nebylo zprvu přesně stanoveno, byly rozděleny jen hlavní směry vývoje (databáze, proměnné, funkce, parsování). Postupem času vyvstávaly nové obzory a členové týmu si vybírali většinou podle chuti, aby však bylo zachováno spravedlivé rozdělení, co do objemu kódu. Zde je podrobné rozdělení práce na díle: - Jádro, rozhraní k interpretu - Jan Ehrlich - Obecný parser - Jan Ehrlich - Parser tagu MISQL - Jan Ehrlich - Parser tagu MIBLOCK - Martin Palo - Parser tagu MIVAR - Petr Marek - Parser tagu MIERROR - Martin Palo - Parser tagu MIINCLUDE - Martin Palo - Parser tagu MIINFO - Tomáš Marván - Parser tagu MILIST - Martin Palo - Parser tagu MISELECT - Martin Palo - Uložení proměnných - Petr Marek - Funkce - Tomáš Marván - Aritmetika - Petr Marek, Tomáš Marván, Jan Ehrlich - Aritmetické výrazy - Petr Marek - Bufferování vstupu - Petr Marek - Zpracování chyb - Jan Ehrlich, Petr Marek - Chybové obsluhy - Petr Marek - Jazyková podpora - Jan Ehrlich - Komunikace s databází - Jan Ehrlich - Dynamické řetězce - Petr Marek - Testování, benchmarky - Jan Ehrlich - Demonstrační příklad - Martin Palo, Tomáš Marván
7
4.0.3. Chronologie Chronologický popis průběhu prací na projektu je přibližný, mnohé zmíněné činnosti přesahovaly uvedený rámec. - 3. listopad 2001 - Zahájení projektu, informační schůzka, rozdělení úloh. - prosinec 2001 - Návrh vnitřní koncepce, volba jazyka. - leden - únor 2002 - Seznamování se s jazykem a rozhodování se nad jednotlivými kroky implementace jednotlivých částí, vznikají první hlavičkové soubory. - březen - srpen 2002 - Proběhla kompletní implementace vnitřní struktury a parsování proměnných, polí a bloků, všech vestavěných funkcí, které nepřistupují do databáze. Je už implementováno ošetření chyb. Je zhotoven hlavní parser. Z těchto částí byl vytvořen modul pro Apache. - září - prosinec 2002 - Zavádění ošetření chyb, optimalizace parsovacích funkcí. - leden - únor 2003 - Optimalizace struktur proměnných. - březen - duben 2003 - Implementace funkcí pro práci s databází a databázových proměnných. - květen - červen 2003 - Optimalizace vstupního bufferování podporující vkládání souborů. Probíhá práce na chybových obsluhách a demonstračním příkladu. Testování jednotlivých částí pomocí benchmarků. - červenec - září 2003 - Přechod na desetinnou aritmetiku, jazyková podpora, nové tagy pracující s databází, testování, dokumentace. Během celé doby se konaly pravidelně projektové schůzky zpravidla jednou týdně ve večerních hodinách. Ke konci letního semestru 2003 však probíhaly denně. Na projektových schůzkách byla účast vždy stoprocentní. Velká většina schůzek je doložena zprávou o projednaných záležitostech. Zajímavou zkušeností byl také roční studijní pobyt jednoho člena projektového týmu na zahraniční univerzitě od října 2002 do srpna 2003. Bylo nutné najít způsob, jak tuto skutečnost řešit a udržovat živou komunikaci, zvláště při projednávání klíčových rozhodnutí.
8
5. Instalace
9
5.1. CGI modul 1. Přidat informixové knihovny do cesty, např. následujícím způsobem: cd /usr/lib ln -s /opt/informix/lib/esql/libifsql.so ln -s /opt/informix/lib/libifasf.so ln -s /opt/informix/lib/esql/libifgen.so ln -s /opt/informix/lib/esql/libifos.so ln -s /opt/informix/lib/esql/libifgls.so ln -s /opt/informix/lib/esql/libifglx.so 2. Upravit lokal.h a začátek Makefile 3. Zkopírovat michyba/chyby*html do adresáře uvedeného v předešlém kroku v lokal.h 4. cd misql && make 5. make 6. Nakonfigurovat Apache aby umožňoval spouštět CGI skripty z CGIDIR 7. Hotovo
10
5.2. Modul do Apache 1.3 1. Přidat informixové knihovny do cesty, např. následujícím způsobem: cd /usr/lib ln -s /opt/informix/lib/esql/libifsql.so ln -s /opt/informix/lib/libifasf.so ln -s /opt/informix/lib/esql/libifgen.so ln -s /opt/informix/lib/esql/libifos.so ln -s /opt/informix/lib/esql/libifgls.so ln -s /opt/informix/lib/esql/libifglx.so 2. Upravit lokal.h a začátek Makefile 3. Zkopírovat michyba/chyby*html do adresáře uvedeného v předešlém kroku v lokal.h 4. cd misql && make 5. make Apache 6. Zkonfigurovat Apache: Přidat řádek na LoadModule A zařídit aby se při přístupu na /ifmx/ pouštěl modul U mne se přidají do souboru httpd.conf od Apache následující řádky, je třeba případně obměnit: LoadModule ifmx_module /usr/lib/apache/1.3/mod_ifmx.so
SetHandler ifmx 7. Pod uživatelem root, make apacheinst 8. Hotovo
11
6. Požadavky na Hardware a software
12
6.1. Hardware Takový počítač aby na něm běžel požadovaný Software
13
6.2. Software - Operační systém Linux 2.4 nebo 2.2 - Apache 1.3 i s vývojovými knihovnami a nástroji - Informix SE 7.2 - make - gcc
14