jAbLoK

JBoss na vzestupu

Zasláno do Java by Pavel Kolesnikov na Prosinec 16th, 2004

Nebudu citovat z žádné analýzy či tiskové zprávy, zdroj informací je mnohem prostší a dovolím si i říci, že přesvědčivější. JBoss nabírá lidi. A teď nemám na mysli suchý přehled otevřených pozic na JBossím webu.

Včera a předevčírem totiž v JBossích e-mailových konferencích zakladatel a ředitel Marc Fleury zaslal dva maily — v prvním z nich urgoval, ať se jim sakra někdo hlásí a ve druhém už takřka úpěnlivě žádal o lidi na pozice konzultantů.

V závěru mailu situaci shrnul:

"You got it, we are swamped with demand and growing really fast."

Co z toho plyne? Pokud zrovna hledáte práci, máte zkušenosti jen s JBossem a otravuje vás, jak všude chtěji samé vebsfíry a veblodžiky, tak zkuste ještě chvíli počkat. Třeba to dorazí i k nám. Pravda, zatím v Čechách ani žádný subjekt aktivně nepůsobí v roli JBoss partnera, ale co není, brzy může být.

Aktualizace

Vzhledem k různým reakcím, které jsem zaznamenal, si dovoluji upřesnit, že pointou příspěvku bylo sdělit "JBoss jede, protože sám otec zakladatel se shání po lidech… a třeba začne closed-source aplikačním serverům šlapat na paty i u nás" než abych dumal nad atraktivitou JBosse jako potenciálního zaměstnavatele )

… v podstatě formalita?

Zasláno do Java by Pavel Kolesnikov na Prosinec 5th, 2004

aneb nebojme se výjimek

Na Intervalu jsem zahlédl článek o autentizaci pomocí filtrů — a v něm mě zaujal následující obrat:


public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {    if (request instanceof HttpServletRequest) {            chain.doFilter((ServletRequest) new MyHttpRequest((HttpServletRequest) request), response);    }}

A následoval autorův komentář:

Nejprve zjistíme, jestli je příchozí požadavek typu HttpServletRequest (v podstatě formalita)…

Variace takovéhoto uvažování už byly tepány mnohkrát, ale zjevně málo.

O co jde?

Autor kódu tuší výjimku, a veden dobrým úmyslem se jí prachsprostě vyhne. V tomto případě přetypovává ServletRequest na HttpServletRequest, a proto se ujistí, že žádoucí kód bude volán pouze pro HttpServletRequest — nejspíše proto, že se obává "ošklivé" ClassCastException.

Jenže co když k takto eliminované výjimce dojde? V případě z Intervalu se zpracování požadavku tiše zastaví a volajícímu klientovi se vrátí nulový výstup.

Řeknete si — kód je stejně určen pro webové aplikace a k volání bez HttpServletRequestu nedojde. Dobrá, ale tím spíše nás nezabije, pokud v takovémto případě necháme vyskočit ClassCastException, případně si explicitně postěžujeme nějakým assertem. Fungování programu za správých okolností to neohrozí, a pokud ke spuštění kódu dojde za nesprávných podmínek (jakkoli takovouto situaci považujeme za nepravděpodobnou), nebude to fungovat tak jako tak, ale aspoň si člověk dřív všimne, že někde nastal problém.

Extrémní, názornou a bohužel ne zcela zřídkavou variantou obcházení výjimek je pak následující kód, který je občas k vidění:


try {    // ... nejaky kod} catch (Exception e) {}

A jak to vypadá v praxi?

Abych nezůstal u planého teoretizování, přihodím předvčerejší zážitek s Xdocletem (nástroj pro generování konfiguračních souborů z Javadocových komentářů — viz xdoclet.sf.net.

Připsal jsem do projektu nový JSP tag, je jedno co dělal, podstatné bylo, že byl potomkem tagu z jiného projektu. Třída byla vkusně opatřena patřičnými Xdocletovými metadaty, spouštím ant — a nic. Vygenerovaný TLD obsahuje všechny tagy kromě čerstvě vytvořeného. Kontroluju task v build.xml — jasně je uvedeno, že se má taglib descriptor vygenerovat ze všech zdrojáků v daném adresáři, které končí na *Tag.java.

Zapínám v Xdocletu "výmluvný mód" (tedy verbose) — a nic.

Po zoufalé hodince marných snah hledánim překlepů počínaje a pokusy o programátorskou magii konče jsem si povšiml, že když nový tag neextenduje mou třídu, ale přímo TagSupport, tak se TLD vygeneruje. A bingo — v cestě onoho xdocletového tasku chyběla knihovna s původním extendovaným tagem. A autor příslušné části Xdocletu — nejspíše, aby programátora nevylekal ošklivou výjimkou — tento problém v naprosté tichosti ignoroval, zdroják s chybějící cestou něžně přeskočil a v klidu si generovál dál.

Tak tudy prosím opravdu ne )

Javascriptové přerovnávátko tabulek

Zasláno do Tech by Pavel Kolesnikov na Prosinec 1st, 2004

Velmi hezký skript je k nalezení na http://www.kryogenix.org/code/browser/sorttable/ — máte-li tabulku s daty, kliknutím na záhlaví jednotlivých sloupců vám patřičně přetřídí řádky, přičemž jediné, co se po vašem HTML kódu chce, je:

  • použít příslušný soubor s javascriptem
  • dát tabulce třídu "sortable" a nastavit (jakkoli) její id

A je to.

Aktualizace:

V diskusnim foru pan Malek z Intervalu doplnuje:

SortTable je poměrně stará záležitost a pro české tabulky dost nepoužitelná. Už před časem vyšel na Intervalu článek, který popisuje vylepšenou českou verzi Třídění řádků tabulky dle sloupce JavaScriptem a zároveň další článek Seřazení tabulky JavaScriptem snadno a rychle, který provádí totéž co SortTable, ale s lepším kódem ;-)"

Diky za upresneni