Přeskočit na hlavní obsah

Příspěvky

Zobrazují se příspěvky z 2011

Remote Notifications

Na letošním jOpenSpace jsem měl Lightning talk o tom jak jednoduše vytvořit desktopovou notifikační aplikaci, řízenou pomocí HTTP requestů. Aplikace je na pár řádků a nezávisí na žadných dodatečných knihovnách. Integruje tři nepříliš známé vlastnosti Javy: ikonka v System Tray - přidáno v Java 6 přehrání systémových zvuků (ve Windows) - od Javy 1.4 HTTP server - v Javě 6 od Sunu/Oraclu (HotSpot, OpenJDK) Ukázky zdrojového kódu a použití výsledného programu najdete v prezentaci. Prezentace na SlideShare Celý projekt naleznete pod GPL licencí na GitHubu na adrese: https://github.com/kwart/Notifier Aplikaci si můžete rovnou vyzkoušet spuštěním Notifier.jar .

jOpenSpace 2011

O víkendu proběhl další ročník tradiční (ne)konference české Java komunity jOpenSpace 2011. Tentokrát předal Šrakyi (Michal Šrajer, Inmite – znáte z Google akcí ) organizační taktovku Filemonovi (Jiří Fabián, JetMinds – znáte z CZPodcast ) a jako místo konání byly vybrány Vítkovice v Krkonoších. Základní prezentace se samozřejmě točily kolem technologií z Java světa (Spring, RPC, Graddle, Git, SQL a noSQL, JSON, Android, XMLs a Relax NG, adorované a zatracované portály, …), ale to co dělalo tuto konferenci originální jsou další témata, která vytvářela velmi inspirativní atmosféru: hands-on přímo od Oraclu – jak správně natočit pivo jak si doma postavit Boeing 737-800 programování pro Kinect s využitím Jírových aretačních misek štěstí a spokojenost završené prezentací „Veselá jehlička aneb jak udělat manželku šťastnou“ monetizace aplikací pro platformu Android již neodmyslitelná degustace vín z Bílého sklepa A protože je obrázek často za tisíc slov, hlavní body přednášek si m

Expanze proměnných – neobjevujte kolo

Možná jste už někdy řešili problém, jak nahradit proměnné jejich hodnotou třeba v konfiguračním souboru. Například ze vstupu <app-config baseDir="${projectDirectory}"> <timeout>${timeout}</timeout> </app-config> chceme ve výsledku dostat <app-config baseDir="C:\Projects\MyApp"> <timeout>30</timeout> </app-config> Asi vás napadne využít String.replaceAll(String, String) nebo v lepším případě přímo dvojice Pattern / Matcher a capturing groups . Proč ale znovu vymýšlet kolo, když knihovna Apache Commons Lang (která by mimochodem měla být standardní součástí každého netriviálního projektu) nabízí pro daný problém přesně ty třídy, které potřebujeme. Výchozím bodem je třída StrSubstitutor , která obsahuje i statické metody pro zjednodušení v nejpoužívanějších případech: Map<String, Object> properties = new HashMap<String, Object>(); properties.put("animal", "dog"); properties.put(

Zipujeme efektivně

Jedna ze základních vlastností Javy je práce se ZIP archívy, ať už jsou to knihovny tříd a spustitelné JARy, webové aplikace (war), nebo třeba JEE bumbrlíčci (ear). Není tedy divu, že i přímo v základním API je implementována práce s těmito archívy. Slouží k tomu třídy v balíku java.util.zip a nejzajímavější z nich jsou ZipOutputStream a ZipInputStream. Příkladem budiž vytvoření zipu: //Vytvorime Zip ZipOutputStream zos = new ZipOutputStream(new FileOutputStream("javlog.zip")); //V Zipu chceme mit jeden textovy soubor zos.putNextEntry(new ZipEntry("priznani.txt")); //naplnime obsah textoveho souboru zos.write("Máme rádi Javu!".getBytes()); //zavrem entry (priznani.txt) zos.closeEntry(); //zavrem stream zos.close(); a jeho rozbalení: ZipInputStream zis = new ZipInputStream(new FileInputStream("javlog.zip")); ZipEntry zipEntry; //budem predpokladat, ze v ZIPu mame jen textove soubory a tak je vypisem do konzole while ((zipEntry = zis.getNextE