středa 28. ledna 2009

On-line versus desktopové aplikace

Desktopová čtečka FeedDemon možná přidá podporu pro synchronizaci s on-line RSS čtečkou Google Reader. Zajímavé. Kdysi jsem pro čtení RSS používal FeedReader a potom právě FeedDemon. Už si přesně nevzpomínám na důvody, proč jsem přešl právě ke Google Readeru, ale patrně v tom hrála značná nenažranost desktopových programů a pak taky možnost přístupu odkudkoli.
Nějakou dobu už nepoužívám na poštu a kalendář Outlook, ale dvojici Gmail/Gkalendář. Pár funkcí mi chybí (hlavně lepší připomínky), pár funkcí je navíc (sdílené kalendáře, lepší ovládání pošty), pár funkcí ještě musím rozjet (synchronizace s mobilem). Dnes se můj pozittivní dojem ještě vylepšil. Protože na Gmailu jsem jen zkušebně, mám v něm poštu jen za minulý rok. Dnes jsem při hledání staršího emailu nastartoval Outlook -- pomalý a s blbým hledáním...
Dnes Gmail přidává podporu práce off-line -- takže by se ten článek měl jmenovat "Webové versus desktopové aplikace" -- a tím zároveň mizí jedna ze zásadních nevýhod webových aplikací: nutnost stálého připojení.

Jetty součástí projektu Eclipse Runtime

Greg Wilkins oznámil návrh na připojení projektu www serveru a servletového kontejneru Jetty k projektu Eclipse Runtime. Eclipse už nyní Jetty obsahuje a používá ho například k zobrazování nápovědy. Tato změna by se neměla týkat stávající verze 6, která je distribuovaná pod licencí Apache 2.0, ale až příští verze 7, která bude duálně licencovaná pod licencí Apache 2.0 a licencí Eclipse Public. Společně s plánovanými změnami API ve verzi 7 tak dojde rovnou k přesunu do balíčků org.eclipse.
Greg jako pozitivum tohoto kroku vidí možný přínos nápadů, přispěvatelů a zdrojů do projektu, a také možnost příznivě těžit ze značky Eclipse, čímž by se Jetty zbavilo stigmatu projektu jednoho člověka a jediné firmy.
Jetty 7 by mělo vyjít společně s příští verzí Eclipse v červnu 2009 na konferenci JavaOne.

středa 14. ledna 2009

Hibernate Collection Of Elements a Criteria API

Navykl jsem si používat Hibernatovský CollectionOfElements ve spojení s Java 5 enumy. Collection of elements je zjednodušený vztah one-to-many, na jehož druhém konci není entita (s příslušnou tabulkou), ale jednoduchý typ jako string nebo enum.
Například mám předmět, u kterého chci mít zaznamenané jeho barvy (může mít víc barev). Barvy jsou jasně a pevně dané, není potřeba na ně mít v databázi číselníkovou tabulku.

public enum Color {
   RED, GREEN, BLUE, ...
}

@Entity
public class Item {
  @CollectionOfElements(targetElement=Color.class)
  @Enumerated(EnumType.STRING)
  protected Set<Color> color = EnumSet.noneOf(Color.class);
  ...
}

Tím pádem  mám v databázi jen "vazební" tabulku item_color se sloupečky id (primární klíč a zároveň cizí klíč do item) a element, kam jsou jako stringy serializované barvy.
Potud ideální. Pokud laskavý čtenář nehodlá používat Criteria API, může odejít spokojen. V opačném případě může zakusit něco horkých chvil a pokud nečte FAQ, tak i dost beznaděje, protože pokus o vytvoření Criteria k vybrání předmětů dané barvy skončí totiž výjimkou org.hibernate.MappingException: collection was not an association.
Ve FAQ se totiž praví, že Criteria API a Collection of Elements nelze. Ne že by samotné přečtení tohoto smutného faktu situaci vylepšilo... Na tento problém existuje záznam v Jira a dobrotivý přispěvatel mě navedl na řešení.

Vrátíme se zpět k SQL:
session.createCriteria(Item.class).add(Restrictions
  .sqlRestriction("{alias}.id in (select item_id from item_color where {alias}.id=item_id and element=?)", 
     i.name(), Hibernate.STRING));

pátek 9. ledna 2009

ING Konto, mBank EMAX a FIO Konto - srovnání úročení

Od ledna snižuje úročení ING Konto (na 3%) i mBank EMAX (na 2,7%), FIO Konto zůstává na 3,5%.

Následující graf ukazuje vývoj úročení spořících účtů spolu s vývojem dvoutýdenní reposazby ČNB.



V samostatném článku najdete srovnání spořících účtů.