Jiří Hradil blog

o software


Téma: ukládání dokumentů na serveru

Představme si následující situaci. Máme vlastní informační systém, který běží na straně serveru (na Javě, PHP…) a klientům zasílá vygenerované HTML či XHTML stránky.
Hlavní komunikaci klienta se serverem zprostředkovávají formuláře.
Systém by měl fungovat jako datový sklad pro dokumenty, uploadované na server společně s připojením popisných údajů-vlastní název souboru, poznámky, propojení s nabídnutým číselníkem, atd.
Popisná data dokumentu budeme ukládat do databáze, ale co se samotnými dokumenty, které můžou být také binární data-obrázky, mp3, všemožné doc, xls?

Nabízí se několik možností:

Popisná data uložíme do databáze (DB) a dokument přímo do filesystému (FS) na serveru. Součástí popisných dat v DB bude odkaz na tento dokument ve FS.

  • + Dokumenty ve FS je možné sdílet a přistupovat k nim i jinak, než jen přes rozhraní systému. Třeba jen pro čtení. V Linuxu lze nastavit sdílení složky s dokumenty např. přes Sambu a klienti mají možnost otevírat soubory přímo ze serveru, což může být někdy rychlejší, než přistupovat přes browser.
  • + Dokážeme tak ukládat i velké objemy dat (mnoho velkých dokumentů). Protože databáze uchovává pouze popisná data, mohla by být menší a rychlejší.
  • +/- Data na dvou místech - pokud spadne DB, dokumenty máme jinde (řeší kvalitní záloha). Avšak musíme se starat o zálohu dvojí.
  • - Obtížná implementace fulltextového prohledávání dokumentů. Pokud umíme pracovat s určitým typem dokumentu, pak výsledky vyhledávání zřejmě budeme muset taky ukládat do databáze. Pak by v DB byla popisná data a výsledky fulltextu. Odkaz na dokument ve FS.
  • - Neustále je třeba kontrolovat konzistenci dat, pokud se smaže dokument v DB, musí se smazat i ve FS a naopak. Tohle je asi největší problém.

Vše uložíme do DB. Binární data dokumentu budou jako datový typ blob, bytea, large object, apod.

  • + Vše na jednom místě. Vyřešíme tím dokonale provázání popisných dat a dat dokumentu.
  • + Fulltextové prohledávání (pokud umíme s daty dokumentu nějak pracovat) bude řešit DB.
  • ? Rychlost a náročnost DB. Tady opravdu netuším, jaké bude mít DB odezvy, pokud v ní budeme mít několik GB dokumentů.

Téma: Co si myslíte o jednotlivých řešeních? Napadá vás nějaký jiný, rozumný a pokud možno co nejjednodušší návrh?

Publikoval Jiří Hradil • 28.04.2004 v 23:04 • pod kategorií Nezařazené6 komentářů

Gmail Beta - první dojmy

Jakožto uživatel systému Blogger jsem využil nabídku být jedním z prvních uživatelů, kteří můžou vyzkoušet službu Gmail (nyní v betaverzi). Jedná se o webmail, rozšířený o řadu netradičních funkcí:

  • + Jednoduchost. Skutečně, klientské rozhraní působí velmi střídmě a přehledně.
  • + Zprávy se netřídí, ale prohledávají (velmi rychle a jednoduše). Tato funkce je pro mě jednoznačně nejužitečnější.
  • + 1 GB volného místa (bezesporu nejlákavější marketingová nabídka :)
  • + Seskupování zpráv (pokud přijde email a odpovím na něj, v detailu emailu je vidět předchozí konverzace).
  • +/- Reklama - absence vyskakovacích oken s reklamou. Systém velmi rychle pozná, odkud jsem přišel a nabízí mi statické reklamy na české stránky. Gmail by měl primárně těžit z cílené reklamy, která odpovídá charakteru textu v emailu. Toto “vylepšení” však bude zřejmě ještě upraveno. Test: poslal jsem si mail s předmětem “notebook LCD monitor” s textem “musím koupit nový hardware, software, najíst se v restauraci a vyspat v hotelu!” a Gmail mi nabídl jen reklamu na koupi luxusních bytů v Praze, o HW a SW ani zmínka :). Současný způsob reklamy však nepůsobí agresivně a dá se vydržet (možná jsem již tak otupělý reklamou ze všech možných médií, že mi tato připadá taková… neškodná :).
  • + Řazení zpráv do skupin (labels). U každé zprávy lze rozhodnout, kam obsahem zapadá a pak ji dle vytvořené a přiřazené skupiny jednodušeji filtrovat. Je to v podstatě taková obdoba složek. Klasické složky (adresáře) nelze v Gmail vytvářet. Existující složky jsou pevně dané. Docela revoluční nápad, uvidíme, jestli mi jednotlivé složky budou chybět. Myslím však, že vše dokáže nahradit účinné prohledávání (a to již dal Google Gmailu do vínku).
  • + Spolehlivost (aneb neříkej hop…). Ale je to přece jen Google, takže se dá očekávat vysoká rychlost a spolehlivost v ostrém provozu. Prostě jim věřím :)
  • + Spam filtr. Nevyžádanou zprávu lze označit ručně jako spam a systém se podle těchto informací učí.
  • + K dispozici je i nastavení filtrů po příchozí zprávy a nastavení prohledávání.
  • + Příprava pro tisk.
  • + Klávesové zkratky (jen část, seznam je dlouhý. Fungují i comba, např. g+i).
  • +/- Kontrola pravopisu, chybí však čeština. Snad jen dočasně.
  • - Adresář je jednoduchý, ale v tomto případě možná až příliš. Chci víc položek!
  • - České rozhraní chybí. Avšak čtení a odesílaní českých emailů funguje bezchybně. Google používá UTF-8. Kdo pomůže s překladem?
  • ? Externí klienti (POP3?) V budoucnu měl být systém dostupný také přes externí klienty (zdarma či za minimální částku).

Závěrem: Jsem mile překvapen, jak přehledný a jednoduchý může webmail být. Pokud se nebude zvyšovat procento agresivní reklamy a bude zachována jednoduchost, tento webmail bude u mě s přehledem nejoblíbenější.

UPDATE 28.04.2004: V komentářích reaguji na některé části příspěvku “Gmail: Nejhorší webová aplikace” z About weblogu.

UPDATE 07.05.2004: Po přihlášení mám možnost pozvat 2 kamarády, kteří si pak můžou zřídit vlastní testovací přístup. Takže prvním 2 zájemcům, kteří se mi ozvou na můj mail tuto pozvánku rád zašlu (potřebuju jen platný mail).

UPDATE 08.05.2004: Pozvánky rozeslány.

Publikoval Jiří Hradil • 26.04.2004 v 23:04 • pod kategorií Nezařazené4 komentářů

Předávání parametrů Java programům

Java Boutique popisuje několik způsobů, jakými lze předávat parametry našim Java programům:

  1. Parametry (argumenty) příkazového řádku
  2. Soubory vlastností (property files)
  3. Kombinací 1. a 2.
  4. Systémové vlastnosti (system properties)
  5. XML soubory
  6. Databáze
Publikoval Jiří Hradil • 06.04.2004 v 11:04 • pod kategorií NezařazenéŽádné komentáře

O’Reilly: edice Head First

Že učení může být zábavné, poučné a zpracované silně návykovou formou nám dokazuje série knih vydávaných v edici Head First nakladatelství O’Reilly. Zatím vyšly 2 knihy a naštěstí obě o Javě:

Kombinace obrázků, legračních historek a přirovnání (”když vytáhneme psa z ArrayList a ten nemůže dělat věci jako pes, tak musí být přece nějaký způsob, jak ho přeměnit zpátky na psa. Pes: doufám, že to nebude bolet” :) nám ukazuje, že takto bychom se mohli učit mnohem efektivněji a jednodušeji, než je tomu dnes. Zdá se, že “učení hrou” opravdu funguje.

Publikoval Jiří Hradil • 20.03.2004 v 01:03 • pod kategorií NezařazenéŽádné komentáře

Framework Adventura

Původně jako semestrální práci pro předmět IT_115 (základy softwarového inženýrství) na VŠE dávám k volnému použití framework Adventura pro tvorbu textových her v Javě. V přiloženém jar souboru je připravena ukázková hra “Ostrov pirátů”.

Ke spuštění hry stačí zadat:

java -jar adventura.jar

Snažil jsem se preferovat přehlednost a jednoduchost. Vše, co je třeba k vytvoření vlastní textové hry je nastavení lokací, postav, předmětů a samozřejmě vymyslet příběh-celou hru vygenerujeme obdobně jako v souboru Hra.java.

Publikoval Jiří Hradil • 14.03.2004 v 22:03 • pod kategorií NezařazenéŽádné komentáře

Vyvíjíme J2EE aplikace pomocí Eclipse IDE, JBoss a Lomboz

Příjemně mě překvapil až neuvěřitelně podrobný tutorial pro vývoj J2EE aplikací spojením Eclipse IDE, aplikačního serveru JBoss a pluginu Lomboz. Najdeme zde vše od detailního popisu instalace a nastavení prostředí, přes vytvoření beanů až po rozhraní klienta. Velmi poučné čtení!

UPDATE 17.03.2004: Aby JBoss nabízel DB Hypersonic, je třeba odkomentovat v souboru $JBOSS_HOME/server/default/deploy/hsqldb-ds.xml

Publikoval Jiří Hradil • 12.03.2004 v 09:03 • pod kategorií NezařazenéŽádné komentáře

"Síla třech": Eclipse, Tomcat a Struts

Na javaboutique je skvělé HOWTO: The Power of Three - Eclipse, Tomcat, and Struts. Vřele doporučuji k nahlédnutí a následování, pokud vám ještě tato kombinace nefunguje. Postup je popsán na Eclipse 3.0M4, ale bez problémů jej lze použít na poslední release 2.1.2.

Publikoval Jiří Hradil • 10.03.2004 v 22:03 • pod kategorií NezařazenéŽádné komentáře

Převod PDF do LIT formátu

Jakožto čerstvý majitel IPAQu 4150 jsem brzy objevil program Microsoft Reader, který je určen pro čtení elektronických knih ve formátu LIT.

Používám Adobe Acrobat Reader pro Pocket PC, velmi rychle mi ale začaly vadit fonty, nemožnost vlastních záložek a pomalé listování mezi stránkami. Rovněž nefunkční obsah, který se při konverzi normálního PDF do Pocket PC PDF většinou ztratí není důvodem, proč takto nefungující nástroj používat a trpět při každém čtení.

Naopak Microsoft Reader používá ClearType, což je nový druh písem zajišťující lepší čitelnost. Dá se říct, že tento produkt je dotažen k dokonalosti-čtení knih v tomto programu je naprosto dokonalé. Lze velmi jednoduše přeskakovat mezi stránkami, přidávat si vlastní záložky, do knihy barevně kreslit, doplňovat komentáře, zvýrazňovat si části textu - zkrátka skoro všechno, co lze dělat s normální knihou.

Přestože existuje MS Reader Shop na tyto knihy, nebudeme přece něco kupovat, když existuje tolik volně dostupných knih v PDF formátu.
Konečně se dostáváme ke zcela zásadní otázce: Jak převést PDF do formátu LIT Microsoft Readeru?

Moje zkušenosti se pokusím shrnout do několika bodů:

  • Nenašel jsem zatím nástroj, který by jednoduše a rychle umožnil tuto konverzi přímo, tzn. PDF->LIT.
  • MS nabízí zdarma Microsoft Reader add-in, který se integruje do MS Wordu a umožní otevřený dokument převést do LIT dokumentu. Problém je v tom, že složitější dokumenty převést nedokáže. Prostoduché dokumenty bez formátování převede bez problémů. Alespoň něco.
  • Existují nástroje, které se honosí bezproblémovým převodem PDF do Wordu, třeba SolidConverter. Tento se rovněž integruje do Wordu a používá se formou průvodců (wizards). Třeba PDF JDK 1.4 Tutorial (Gregory M. Travis)* převedl docela použitelně, včetně formátování a obrázků. Z tohoto krásného dokumentu MS Reader add-in samozřejmě LIT soubor udělat nedokáže. ;(. Pokud však v průvodci označíme formát výstupu jako prostý text, add-in si s ním “poradí”. Uznejme však, že výsledek použitelný není.
  • Další nástroj, který “umí” vytvořit LIT z GIF, JPG, PNG, TXT, HTML s souborů Wordu je ReaderWorks. Bohužel převod 1 HTML stránky dopadl takto.
  • Jsou firmy, které prý dokážou takový převod provést na zakázku-zkoušel jsem Texterity TextCafe. Vyplní se formulář, přiloží se dokument, který chceme převést a odešle se někam na posouzení, zda by dokument šel převést a kolik by to stálo. Jako vzor jsem použil mé oblíbené PDF Mastering Enterprise JavaBeans, Second Edition (Ed Roman)*, 672 stran (uvidíme :). Mail s odpovědí přišel do 15 minut:
    Hello,
    
    Thank you for your interest in our services.
    Converting this type of publication to LIT
    would be very expensive and not very satisfactory.
    I encourage you to look at theses samples of books
    in the Published Web Format
    -- http://pwfdemo.texterity.com/goalqpc/main.asp
    Many publishers are finding that this format is idea
    for highly formatted publications.
    
    We would welcome working with you.
    Best regards,
    
    Martin Hensel

ZÁVĚR: Dostal se někdo dál? Pokud ano, budu velmi vděčný za jakoukoli radu.

* Tyto knihy lze stáhnout po registraci zdarma ze serveru Javalobby.

Publikoval Jiří Hradil • 26.02.2004 v 00:02 • pod kategorií Nezařazené1 komentář

CVS a GUI

Každý vývojář se dříve či později začne ohlížet po nějakém nástroji, který mu umožní verzování zdrojových kódů, stejně tak jejich sdílení s ostatními kolegy. Tento produkt by měl rovněž umět hlídat veškeré změny, které se ve zdrojových kódech vyskytnou, zamykat soubory a obecně nějakým vhodným způsobem všechny zůčastněné usměrňovat tak, aby ve sdíleném prostoru (repository) nebyl nepořádek.
O výhodách CVS (a obecně RCS) vychází velmi plnotučné články na root.cz, v současné podobě mají již 11 dílů. Zájemcům doporučuji prostudovat.
Po vytvoření repository, modulů a nainstalování pserveru dle roota si můžeme začít užívat.
Pokud nejsme kamarádi s příkazovou řádkou (jakožto přežitkem z dob prehistorických), přijdou nám k chuti některé z grafických nástaveb (prostě GUI), které celý proces namlouvání a partnerského soužití zjednodušší. Zkusil* jsem 2 nástroje:

CvsGui
První dojem: U testované stabilní verze 1.2 má grafické rozhraní (pro někoho nepodstatná záležitost, ale pokud bychom neměli hodnotit toto, mohli jsme zůstat u příkazové řádky) ještě velké rezervy. Málo intuitivní. Odezvy systému jsou pomalejší. Pro SSH potřebuje externího SSH klienta, bylo třeba postupovat oklikou přes putty. Platforma: Windows, Mac, různé unix klony. Cena: zdarma, šířeno pod GPL.

SmartCVS
První dojem: verze 2.4 podporuje SSH 1 a 2 bez externího klienta. Velmi intuitivní rozhraní (průvodci-wizards), není třeba manuál. Excelentně navržené prostředí, přitom dostatečně střídmé a jednoduché. Tento klient je napsán v Javě a umožňuje instalaci také pomocí Java Web Start! Platforma: Java. Cena: foundation verze zdarma, professional verze se platí. Porovnání verzí.

* V tomto případě jako člověk čerstvý (tj. neznalý) CVS nedokážu patřičně ohodnotit všechny jeho klady a zápory. Podrobnější popis doplním, jakmile toho budu schopen.

Publikoval Jiří Hradil • 24.02.2004 v 00:02 • pod kategorií NezařazenéŽádné komentáře

Certifikace: Java 2 Platform

Certifikační programy SUNu pro Javu se skládají z několika úrovní:

J2SE:

Sun Certified Programmer for the Java 2 Platform

Sun Certified Developer for the Java 2 Platform

J2EE:

Sun Certified Web Component Developer for the Java 2 Platform, Enterprise Edition (J2EE)

Sun Certified Business Component Developer for the Java 2 Platform, Enterprise Edition

Sun Certified Enterprise Architect for the Java 2 Platform, Enterprise Edition

Dnes jsem úspěšně absoloval první test (Sun Certified Programmer for the Java 2 Platform 1.4, CX-310-035). Rád bych se tímto podělil o volně dostupné materiály ke studiu. Vyzývám proto všechny, kdo znají jiné zdroje než níže uvedené-uložte je prosím do komentářů, budu aktualizovat seznam.

  • InformIT.com: Exam Cram 2 - platform 1.2 a 1.4, SCP a SCD, 30 otázek. Nutná registrace. Otázky podobné, při každém spuštění se trochu mění. :). Obtížnost: střední-reální test je těžší, tady počítá správné odpovědi, i když nejsou úplné.
  • Boson Software - platform 1.2, SCP a SCWCD, 2×12 otázek. Nutno stáhnout a nainstalovat. Demo zdarma, plnou verzi (přes 200 otázek) nutno koupit. Obtížnost: střední.
  • Mock Java Certification Exams - platform 1.2 a 1.4, SCP. Mnoho dostupných testů (doporučuji zejména test 1, test 2, test 3 - vše platform 1.2. Obtížnost: reálný test). Obtížnost u dalších testů: Nelze jednoznačně zařadit, je jich hodně. :)
  • Computer Certification - platform 1.4, SCP, 29 otázek. Obtížnost: reálný test.
  • MeasureUP Demo Test - platform 1.2, SCP, 10 otázek. Obtížnost: reálný test.
  • javaprepare.com (test 1, test2) - platform 1.2 a 1.4, SCP, 59 otázek. Obtížnost: střední.

Zdroj: Sun Microsystems, Google.

Publikoval Jiří Hradil • 13.02.2004 v 21:02 • pod kategorií Nezařazené3 komentářů