Přeskočit na hlavní obsah

Příspěvky

JSignPdf 0.8.0 je venku

Víceméně kulaté verze 0.8.0 se dočkal open source projekt JSignPdf (digitální podepisování PDF dokumentů). Hlavní změnou je přidání podpory pro dávkové zpracování, kdy je běh programu řízen argumenty příkazové řádky (bez GUI). Novou verzi stahujte zde .

Příprava na SCJP ve dvou krocích

Nedávno jsem si u Sunů udělal Java certifikaci - SCJP , takže se teď mohu směle ohánět titulem Sun Certified Programmer for the Java Platform, Standard Edition 6 . Pro všechny, kteří to chtějí také zkusit, zde mám pár studijních tipů. Nechci se tu zabývat otázkami k čemu je nebo není taková certifikace dobrá, ale rád bych se s vámi podělil o své poznatky k přípravě na tuto certifikaci a vlastní zkoušce. Krok jedna - učení Na zkoušku jsem se připravoval přibližně jeden měsíc. Začal jsem tím, že jsem si přečetl knihu SCJP Sun Certified Programmer for Java 6 Exam 310-065 (PDF verze koluje i na internetu). Knížka je napsaná čtivě a řazení témat mi vyhovovalo. Navíc na konci každé z 10 kapitol je "Two-Minute Drill" - zopakování nejdůležitějších informací v bodech a také test na procvičení daného okruhu témat. Krok dva - cvičení Druhým a podle mého tím nejdůležitějším krokem je řešení testovacích otázek (mock tests) v různých programech. Ze začátku jsem používal Inquisit...

jOpenSpace 2009

Včera večer jsem se vrátil z Java ne-konference jOpenSpace 2009 ( jOS ), která se přes víkend konala v Jizerských horách. Minulý rok mi to nevyšlo, ale tentokrát jsem se rozhodl být u toho a prožít tu atmosféru naplněnou provoněnou parou vznášející se nad šálkem jemné kávy z dílny společnosti Sun (zde si, vážený čtenáři z budoucnosti, jestli ti společnost Sun nic neříká, jednoduchou transformací prvních tří písmenek v názvu, změň jméno společnosti na Oracle). Pár mých postřehů jsem se rozhodl z ekologických důvodů nedávat na papír a proto si tento záznam rozhodně netiskněte! Pátek Po poledni jsme vyrazili od Siemensu v Brně po D1 na Prahu. Byli jsme ze začátku tři - vezl jsem i Petra Adámka a Lukáše Vlčka z IBA. Protože jsme v Praze měli ještě naložit Lukáše Hasíka ze Sunu, spojili jsme příjemné z užitečným a zašli jsme si na Chodově do čínské restaurace na oběd. Polívka k menu zdarma zněla lákavě, ale to jsme netušili že budem další dvě hodiny plivat ohnivé koule. Kuře s bamb...

Počítáme v Javě (od sčítání k nelineárnímu modelování)

Tento záznam měl původně obsahovat jen malý komentář ke knihovně Math z Apache commons, ale trochu se to psaní rozjelo. Doufám, že vás to neodradí. Začínáme počítat Většina programátorů v Javě asi umí pracovat s čísly a dokáže si dobře spočítat, co by měl jejich program dělat. Jestli to potom opravdu dělá je věc druhá. Člověk si při učení Javy většinou začíná hrát s jednoduchými operátory ( + - * / % ) a primitivními typy ( int, double ), po čase začne zkracovat ( ++ *= ...), sem tam použije bitové operace ( | & ~ << >> >>> ) a už se mu zdá, že je za vodou. Ale pak narazí na problémy. Další level Třeba taková nevinná konstrukce dělení. Žádné neukončené desetiné rozvoje nebo nedejbože dělení nulou. double ctvrtina = 1 / 4; System.out.println(ctvrtina); //0.0 WTF? Stačí zapomenout, že výsledkem dělení celých čísel je opět celé číslo a máme oheň na střeše. Další nástrahy se skrývají v číslech s plovoucí desetinou čárkou a s tím související nutností ne...

EBookME 2.5 a JSignPdf 0.7

Trocha reklamy po ránu Mé open source Java projekty EBookME a JSignPdf se dočkaly nových verzí. Neváhejte je vyzkoušet a okomentovat. EBookME je aplikace, která slouží k vytváření elektronických knih pro mobilní zařízení (mobily, PDA). Skládá se ze dvou modulů - packager a reader. Packager je Java SE aplikace (Swing/Console/Applet), která generuje ze vstupního textu aplikace pro mobily. Základ pro tyto mobilní aplikace (ebooky) tvoří modul Reader, což je Java ME MIDlet pracující nad MIDP-1.0, CLDC-1.0. Novinkami ve verzi EBookME 2.5 jsou uživatelem definované bookmarky v Readeru, možnost ukládání projektu v Packageru, lepší integraci do Windows a experimentální podporu Tamilštiny (chuťovka v Javě). JSignPdf je Swingove GUI pro digitální podepisování PDF dokumentů. Využívá knihovnu iText a zvládá pracovat i s kódovanými dokumenty. Verze 0.7 přidává podporu viditelných podpisů (text nebo ikona na některé stránce PDF). Do další verze je plánováno i ověřování podpisů v PDF...

A všichni si rozumíme 2 - klávesové zkratky

Psali jste někdy lokalizované aplikace ve Swingu? A jak jste řešili klávesové zkratky (Mnemonics) pro různé jazyky? Já jsem se při programování JSignPdf rozhodl použít přístup, který znám z Delphi. V resource řetězcích vložím ampersand (&) před písmeno, které má být použito jako klávesová zkratka. Když chci zobrazit znak ampersand, tak napíšu dva za sebe. A jak to funguje v kódu? Mám wrapper pro ResourceBundle, který nabízí mimo metod pro přístup k lokalizovaným stringům i metodu, která vrací MnemonicIndex (pozici znaku, který je použit jako klávesová zkratka). /** * Returns message for given key from active ResourceBundle * @param aKey name of key in resource bundle * @return message for given key */ public String get(final String aKey) { String tmpMessage = bundle.getString(aKey); if (tmpMessage == null) { tmpMessage = aKey; } else { tmpMessage = tmpMessage.replaceAll("&([^&])", "$1"); } return tmpMessage; } /** * Returns ind...

Acegi - logujeme loginy

Používáte-li pro správu přístupu k vaší webové aplikaci framework Acegi, možná se vám bude hodit zaznamenávat uživatelské přístupy (platné loginy) někam do databáze. Zde je jeden ze způsobů jak se s tímto problémem vypořádat. Následující přiklad používá Hibernate a databázi Oracle. Nejdříve si připravím vlastní metodu pro zápis do databáze v DAO . Umístím ji do třídy cz.mujpackage.dao.UserDao , která rozšiřuje org.springframework.orm.hibernate3.support.HibernateDaoSupport a poskytuje metody pro správu uživatelů, rolí, apod. Pro zvýšení výkonu použiji v Hibernate SQLQuery namísto vytváření instance třídy modelu a jejího ukládání pomocí metody save(...) . /** * Adds log entry to table AUTH_LOG (Oracle database form - pk_sequence has to be configured) * @param aName username * @param aRemoteAddress remote address of request */ public void logAuthenticationSuccess(final String aName, final String aRemoteAddress) { final HibernateCallback callback = new HibernateCallback() { publ...