Před několika měsíci jsem se tu rozplíval nad tím, jak přepíšu tento blogovací systém do Javy a budu se jím všude chlubit, neboť takových systémů v Javě zrovna moc není, naopak těch v PHP jsou desítky a dnes možná i stovky od těch maličkých soukromých až po časem prověřená řešení jako Wordpress, Drupal a další. Pravda je ovšem taková, že jsem si na to nakonec netroufnul. Ne že bych se bál své neznalosti, ale spíše šíře možností jazyka Java. Ono jistě, mohl jsem otevřít nový dokument Javy, napsat pár tříd, oživit jimi JSP skripty a bylo by to. Síla Javy však spočívá v technologiích a technikách, které jsou na velmi vysoké úrovni a pokud bych je nevyužil, přišel  bych o onu výhodu kouzelné Javy. Nemá smysl psát v Javě ve stylu nízkoúrovňového PHP, ale je nutno začít přemýšlet o architektuře a zvolené technologii i u takového projektu jako CMS/blog Bobík, který věru už místy začíná připomínat alespoň počtem řádků středně velký projekt. A právě proto se přepis do Javy odkládá zatím na neurčito, tedy do té doby, než si koupím nějakou pořádnou publikaci o J2EE, o Java Struts a dalších, které jsou ovšem drahé a zatím mě ani jedna neuspokojila.

Místo přepisu do Javy se tedy v letních měsících vrhnu do psaní nových funkcí a dalších udělátek. Jen ve zkratce bych zmínil některé z nich. Možná budou inspirovat i někoho druhého.

Kešování konceptu
Tak nejprve to je systém kešování konceptu. Nechápete? Víte já si občas v prohlížeči Firefox pletu klávesové zkratky. Chci otevřít nový panel a namísto CTRL-T stisknu CTRL-R, jelikož R je hned vedle T. Bohužel se mi tento překlep většinou podaří v momentu, kdy edituji nový článek. Naposledy se mi to stalo předevčírem, kdy jsem měl již zcela hotový článek o výpravě na Medvědí soutěsku v rakouském Štýrsku. Psal jsem již poslední odstavec, když tu jsem potřeboval něco zjistit na Wikipedia.org a už to tu bylo. Stránka se znovu načetla a editační WYSIWYG okno nového dokumentu zelo z čista jasna prázdnotou. Čili! Čili v novém buildu se bude koncept až do prvního uložení ukládat v pozadí pomocí techniky AJAX třebas jednou za minutu do pomocné databáze a pokud nastane třebas výpadek internetu, napsaný text bude uložen a koncept článku tak budu moci znovu oživit.

XML a CSS šablona
CMS/blog Bobík nyní používá šablonu SSM, tedy Simple-Structured Macro, což je opět můj výmysl spočívající v PHP asociativním poli maker, z nichž každá položka obsahuje určitý tématický kód HTML šablony. $ssmacro["item.list"] tak například obsahuje podobu článku v seznamu, $ssmacro["item.display"] pak zase podobu článku při plném zobrazení a podobně. To je pak celé zabaleno do TOP šablony ["general"], která obsahuje podobu neaktivní oblasti, což je hlavička, pravý sloupec a zápatí - tedy oblasti, které se při různých pohledech nemění. To je ovšem špatná cesta, cesta zastaralá. Nový šablonovací systém bude postaven na totálním využití CSS šablonování a CSS neovlivnitelná skladba struktury, tedy jaké bloky se mají vykreslit a jaké ne, bude uložena jako běžný XML dokument. Šablona tak bude mít více možností. Pohled budeme moci zcela ovlivnit pomocí CSS a pokud by nám nestačila základní struktura logických bloků ve stránce (poslední komentáře, statistika), jednoduše informaci o těchto blocích smažeme z XML. Počet možných variací tak bude dán násobkem variácí CSS a XML šablon. Zároveň nebude problém napsat šablonu třebas pro prohlížení Bobíka na PDA a jiných zařízeních.

BWAPI - Bobik Widget API
BWAPI představuje totální syndikaci obsahu formou XML/RSS. Aktivní stránka CMS/blog Bobík je složena z logických bloků. Pokud se tak například díváme na konkrétní článek, máme tu logické bloky: nadpis, perex, tělo, související, komentáře a SEO bloky v META keywords, description a další. Pomocí BWAPI se pomocí RSS dostaneme k libovolnému bloku, tedy widgetu. Takto lze jednoduše sdílet informace z mnoha aplikací postavených na CMS/blog Bobík, je-li BWAPI povoleno. Všechny takové aplikace pak mohou sdílet například společné zápatí aj.

Článek je pouze abstraktní kontejner
Nyní má článek svou fixní sémantickou podstatu. Je to prostě záznam v tabulce bobik_blok a souvisejících (bobik_guestbook, bobik_image, bobik_keywords aj.). Nyní však bude článek na stránce či v RSS pouze odkaz na určitý relativní obsah. Bude to pouze kontejner pro data různého původu. Tím původem bude například opravdu ten "fyzický" článek, ale může to být také RSS syndikovaný obsah, který se bude tvářit jako běžný článek, jelikož nový kontejner unifikuje různý obsah do jedné formy. Stejně jako BWAPI tak může vzniknout jednolitý portál publikující články z různých CMS/blog Bobík aplikací a tvářící se jako autor.

BoboHosting
Další bobíkovský novotvar se tentokráte stará o hosting uživatelských blogů v jedné CMS/blog Bobík aplikaci. Tedy velmi jednoduchá forma služeb jako blog.cz nebo bloguje.cz. BoboHosting vzniknul z mých vlastních potřeb, kdy na Bobíkovi stavím nový web a nechci pořád měnit kód obou aplikací. BoboHosting funguje již nyní.

OOP standardizace jádra
Jádro Bobíka nezvniklo na zelené louce, ale již více než rok se vyvíjí občasným přepisem čistě z nízkoúrovňového neobjektového kódu cca 80 funkcí. Dnes je sice jádro objektové, ale stále si zachovává ne zcela přirozený ráz, který dovoluje programátorovi použít prakticky obě metody vývoje. Buď lze použít Bobíka jako uričtý neobjektový framework několika desítek mnohdy statických metod, které jsou vysoce nízkoúrovňové a tedy velmi obecné a nebo lze použít čistě objektový přístup a pak lze zprovoznit Bobíka zavoláním pouhých tří metod! Cílem standardizace je postupně zefektivnit počet metod a snížit řádkovou velikost kódu, který nyní obsahuje tisíce řádků čistého PHP kódu - současná šablona je poměrně jednoduchá a prostá, ale vězte, že dobrá třetina funkcí Bobíka není díky ní plně využita.

E-marketing optimalizace
Již dnes je celkem snadné implementovat AdSense reklamu pomocí speciálních skriptů, ve kterých se nachází JS kód pro AdSense a které se pouze volají s argumentem polohy mezi bloky, formátem reklamního banneru a souborem klíčových slov, které mají co nejvíce příblížit reklamu obsahu tak, aby byla užitečná. Účelem optimalizace je automatická tvorba klíčových slov z obsahu podle váhy generálních klíčových slov. Pokud tedy generální klíčové slovo bude "výlet", pak výrazy jako výlet, turistika aj. budou mít přednost před jinými potenciálními klíčovými infinitivy.  Pomocí této optimalizace tedy pomůžeme Google AdSense k výběru opravdu správného banneru.

Vláknové komentáře
Na komentáře budete moci opět reagovat a reakce se zobrazí ve stromovém systému, který je sice omezený, ale vizuálně čistý a logický. Tyto reakce byly dočasně vypnuty z důvodu špatně napsaného CSS pro prohlížeč Opera.

No je toho mnoho, polovina je již funkční u mě doma na testovacím serveru, ale zase lepší než číst AHA! :)