Instrukce pro vytváření vizualizačních appletů
Vaše práce bude navazovat na diplomovou práci Ondřeje Hanouska, který připravil Java třídy pro vizualizaci algoritmů.
Úkolem každého z vás bude implementovat jeden algoritmus týkající se komprese dat. Algoritmus budete prezentovat pomocí webových stránek a Javovských appletů. Ke svému appletu přidáte jeho stručný popis. Šablonu popisu najdete ve vzorových stránkách.
Stránky i applet budou napsány česky a anglicky. U stránek budete vytvářet dvě kopie (podle šablony). U realizace appletu můžete využít speciální třídy, které umožňují psát kód jen jednou a překlady provádět v externích souborech. Jedná se o třídy java.util.Locale a java.util.ResourceBundle. Popis použití najdete na stránkách javovské dokumentace nebo v diplomové práci Ondřeje Hanouska.
U vytváření stránek se snažte co nejvíce držet předlohy a kód zapisujte podle standardů xhtml. Používejte kódování utf-8.
Struktura výsledného projektu bude takováto
- styl.css - neměňte i když se vám nelíbí :-)
- compression.jar - archív od Hanouska, neměňte
- epsgraphics.jar - archív od Hanouska, neměňte
- ...
- Adresář se jménem vašeho algoritmu
- index_cs.html - vaše česká verze
- index_en.html - vaše anglická verze
- případné obrázky - obrázky pokud budou třeba
- jméno-algoritmu.jar - váš program i se zdrojovými kódy
Stáhněte si šablonu a přímo přepisujte konkrétní soubory. Strukturu ani odkazy neměňte. Pokud budete chtít do popisu vložit nějaký obrázek, umístěte ho do adresáře vašeho algoritmu.
Klíčovou částí je vkládání appletu. Kód vypadá následovně.
<div class="applet"> <applet code ="jmenoBalicku.jmenoTridyAppletu.class" archive = "../compression.jar, ../epsgraphics.jar, ..." Doplníte vámi použité archívy width = "100%" height = "500"> Preferovaná výška appletu <param name="locale" value="cs"> Konkrétní locale - en nebo cs </applet> </div>
Podívejte se na šablonu. V jaru jsou zabaleny kódy jednoduché testovací aplikace, která využívá třídy z balíčku gui.*, který je součástí zmíněné diplomové práce. Kód v JAR šabloně představuje algoritmus pro Huffmanovo kódování. Tento applet je už zároveň i součástí diplomky. Ovšem je záměrně vyjmut ven do vlastního jaru a používá svoji vlastní lokalizaci, aby bylo lépe vidět jak věci pracují. Stejně tak i vy budete svůj algoritmus zabalovat do vlastního jaru. Třídy od Hanouska můžete využít, ale neměňte je. Pokud budete potřebovat změnit nějakou třídu, tak jí rozšiřte a novou třídu dejte do vlastního jaru. Stručně řečeno: jary, které jsou vně adresáře s vaším algoritmem, musí zůstat nezměněny - budou využívány všemi studenty.
Doporučuji aplikaci vyvíjet v nějakém prostředí, které umožňuje spouštět aplikaci přímo jako applet. Jednou z možností je vývojové prostředí Eclipse.
Pokud budete chtít applety vyzkoušet v prostředí webového prohlížeče, v nejčastějších případech budete muset JAR podepsat svým vlastním certifikátem. Je to jednoduché, návod naleznete třeba na http://www.linuxzone.cz/index.phtml?ids=2&idc=637 - kapitola Jak podepsat jar. Odevzdávejte ale archívy nepodepsané.
Poznámky k implementaci appletů
-
U algoritmů, kde to má smysl, přidejte do appletu panel, kde se bude zobrazovat binární výstup. Čili nakonec tam budou tři - vstup, výstup a binární výstup. Výstupní entity budou odděleny mezerou. Binární shluky budou také odděleny mezerou, podle výstupních entit - ke každé výstupní entitě jeden shluk jedniček a nul. Zároveň jakmile zakódujete (POZOR! ne přečtete - u některých algoritmů probíhá zakódování jindy než načtení) vstupní znak, oddělte ho mezerou od ještě nezakódované části. Čili výsledkem bude vstupní řetězec, kde budou všechny znaku odděleny mezerou. Při restartu vstup zase spojte dohromady, aby se proces mohl opakovat.
-
Jestliže grafické okno nestačí na zobrazení celého obrázku, pak posouvejte viditelnou část okna tak, aby byly vždy vidět právě provedené změny.
-
Jestliže je to možné, pak nastavte automaticky poměr oken GRAFIKA - KÓD tak, aby kód byl ještě čitelný a z grafického okna bylo vidět co nejvíce detailů.
-
Upravte algoritmy tak, aby jako vstupní abecedu přijímaly všechny alfanumerické znaky - písmena anglické abecedy a čísla. Mezera není nutná.
-
Dbejte na správné překlady, ať se vám v appletu zobrazuje kód správným jazykem.
-
U metod, kde se vypočítává četnost znaků a tento výpočet je graficky znázorněn, barevně odlište znaky (uzly znaků), u kterých se v právě provedeném kroku změnila hodnota četnosti.
-
Nezapomeňte znázorňovat kompresní poměr, velikost vstupního textu a velikost výstupního textu.
-
U aritmetického kódování zvýrazněte vybranou hodnotu ve výsledném podintervalu.
-
U algoritmů, u kterých se dá zjistit, uveďte do HTML stránek paměťovou a časovou složitost.