sobota 8. února 2014

QR Platby v Javě

QR Platba je způsob jak do QR kódu zakódovat informace pro provedení bankovního příkazu k úhradě. Anglicky se prý QR Platba řekne SPAYD - Short Payment Descriptor. Pro generování QR Plateb v Javě existuje knihovna spayd-java, která oplývá velice nepříjemným rozhranním a není publikována do centrálního repa Mavenu.
Knihovna je pod opensource licencí Apache, takže jsem na jejím základě vyrobil knihovnu Geek SPAYD, která je orientovaná na vývojářův prožitek. Zdrojáky jsou na GitHubu a binárky v centrálním Mavenu.

neděle 14. dubna 2013

Odpustil jsem OpenJDK (a opustil Sun JDK)

Oracle se snaží seč může, aby zařízl Sun JDK ve prospěch OpenJDK, ale OpenJDK má v komunitě java vývojářů dost špatnou pověst. Přestože se mě odpor k OpenJDK také týkal, neumím přesně vysvětlit, co za ním stojí. Udělal jsem na toto téma letmou nereprezantativní anketu, a odpovědi měly společný jmenovatel: "zkoušel jsem, nefungovalo", s tím, že většina problému se týkala desktopu a SWINGu.
Shodou okolností jsem ale před časem právě na desktopu začal OpenJDK používat, a protože jsem nenarazil na žádný problém, chystám se ho vyzkoušet i na serveru. Klíčem ke štěstí je odpuštění, říká Gerald Jampolsky, ale v mém případě to bude hlavně o tom, že si instalační balíčky nebudu muset vyrábět sám, ale použiju OpenJDK, které je součástí distribuce.
Jaký je ale rozdíl mezi Sun JDK a OpenJDK? Nejmenovaný zdroj z Oracle říká, že více jak 99% zdrojových kódů je shodných, kromě částí které obsahují kód třetích stran, a které nemohly být opensourcovány (např. font resterizer).
OpenJDK také neobsahuje doplňky prohlížečů Java Plugin a Java Web Start, instalátory pro Windows nebo MacOS (podporován je zatím jenom Linux), servisní podporu (SNMP agent nebo Fligth Recorder) a speciální platformově závislá rozšíření (ucrypto security provider pro Solaris nebo Windows accessibility bridge).

středa 22. srpna 2012

Zeroturnaround: Continous Delivery webinář

Na webináři byla ukázána jednoduchá javová webová aplikace, kde ke continous delivery používali:
Zaznameníhodné záležitosti:
  • build number propagovali do maven verze artefaktů
  • všechny buildy kromě prvního byly parametrizované build číslem prvního buildu v pipeline, čímž toto číslo procházelo přes všechny fáze pipeline
  • v Nexusu měli pro každou fázi pipeline vlastní repozitář a pokud artefakt úspěšně prošel fází, do následujícího repozitáře artefakt prostě překopírovali (tj.v posledním "ready for production" bylo relativně málo artefaktů)
  • deployovali do repa nejenom war archivy, ale i další artefakty (txt soubory) a v následující fázi je z repozitáře vybírali pomocí dependency:get
Zajímavým způsobem bylo řešené zařazení manuálního testování do pipeline: mail plugin poslal QA oddělení mail, že build je možné manuálně testovat a po otestování mají kliknout na link, čímž se spustila další fáze v pipeline (pomocí buildWithParameters?xxx=yyy).

Škaredé bylo, že build příkazy pro jednotlivé fáze byly zapsané jen v konfiguraci jenkins jobů a nebyly součástí version control.

Ve výsledku to bylo opravdové continous delivery, ale celé řešení v Jenkinsu to na mě působilo strašně na koleně spíchnutým a nerobustním dojmem. Možná to bylo tím, že to celé mělo být promo na LiveRebel a ne Jenkins, i když s Jenkinsem se na webináři strávilo zdaleka nejvíc času.

středa 7. března 2012

Java tipy

Debianovský balíček java-package, který slouží k vytváření debianovských balíčků z distribučních archivů Javy, se po ukončení licence DLJ probral k životu a podporuje Sun Java 7. Musím vyzkoušet.

Eclipse ani Subversion už dlouho nepoužívám, ale co kdyby se někdy hodilo nastavení pluginu Subclipse
  • nastaveni svn+ssh
  • Linux: apt-get install libsvn-java eclipse.ini: -Djava.library.path=/usr/lib/jni
Chyba při spouštění Jetty: No suitable Log constructor - problém je v knihovně commons-logging, vyřeší překopírování webapp/WEB-INF/lib/log4j-*.jar do adresáře Jetty ext/.

pondělí 28. listopadu 2011

Oracle zakázal distribuci Sun JVM/JDK

Oracle prosazuje OpenJDK a jako způsob zvolil zrušení licence "Operating System Distributor License for Java" (DLJ), která linuxový distribucím dovolovala vzít Sun JVM/JDK a poskytovat ji uživatelům prostřednictvím distribučních balíčků. Jediným způsobem jak získat Sun JVM/JDK je jejich stažení z Oracle webu. Laxně to na svém blogu oznámil Dalibor Topic (můžete si ho pamatovat z Oracle Java Developer Conference 2011) s tím, že tím pádem končí i distribuční web http://jdk-distros.java.net/

Žádná linuxová distribuce (Debian, Ubuntu, CentOS,...) tak nesmí distribuovat balíčky s Javou 7 a možná bude nutné balíčky odebrat i z vydaných distribucí, ale především také bezpečnostní aktualizace Javy 6. Uživatelé, kteří mají nainstalované balíčky se Sun Javou, tak už neobdrží žádnou bezpečnostní aktualizaci a jejich systémy jsou tak zranitelné vůči bezpečnostním chybám.
Z unstable verze Debianu už byla odebraná Sun Java 6 a podrobně o situaci na svém blogu informuje správce debianovských balíčků. Ubuntu 11.10 (Oneiric Ocelot) už Sun Javu také neobsahuje.

Jediným způsobem jak provozovat Javu v Linuxu tak zůstává OpenJDK (i se všemi jeho nedostatky) nebo instalace po stažení z webu Oracle -- naštěstí Oracle alespoň pro Javu 7 už nepoužívá instalátor a tar.gz balíček stačí stáhnout a rozbalit do /usr/lib/jvm podle návodu.

sobota 18. června 2011

Social overdose

Mám účty na různých sociálních sítích a webech (Facebook, Twitter, Picasa, Youtube,...) a poslední dobou mě čím dál míň baví pravidelně obrážet skvadru serverů a zjišťovat, co je kde nového, kdo dal komu palec, pěst nebo kopačky. Když k tomu přidám konkrétní specifika těch sítí jako nepochopitelné řazení zpráv Facebooku nebo Twitter klienty, kteří mi na různých zařízeních (počítač/notebook/mobil/tablet) pořád do kolečka cpou jako novinky zprávy, které už jsem četl, moje frustrace dosahuje vrcholu.

Před lety byl podobný problém s blogy, a aby těchto důvodů člověk nemusel dokolečka mezi svými oblíbenými blogy pendlovat, vznikl formát RSS. Prostřednictvím něho blogy upozorňují na nové články, a uživatel upozornění nebo přímo plný článek dostane do své RSS čtečky (např. Google Reader). Samozřejmě pro web, které vlastní RSS nemají je tady RssGeek :) Nedělám si ale iluze, že by bylo možné, aby vznikl nějaký univerzální formát pro výměnu zpráv ze sociálních sítí.

Úplně by mi stačila aplikace, která by na jednom místě zobrazila novinky, fotky, linky a další obsah, co mí 'kamarádi' do těchto sítí zadají. Také by měla zobrazovat, jestli můj obsah dostal palec, hvězdičku, retweet nebo podobně. Aplikace by odlišila už přečtené zprávy a decentně by zobrazila různé notifikace nebo zprávy méně důležité (např. odkaz dostal další palec nahoru). Měla by umět kvalitně filtrovat (např. žádná videa od uživatele X, nebo žádné twíty z tagem #xyz) a měla by se umět rozumně se vypořádávat s duplicitami (video poslané na Facebook a zároveň YouTube nebo zpráva poslaná na Twitter a zároveň na Facebook) ať už od uživatele stejného nebo více různých. Aplikace by asi měla být webová a vhodná by byla mobilní verze nebo alespoň rozhraní uzpůsobené pro mobil nebo tablet.

Velké naděje jsem vkládal do Google Buzz - ten zobrazuje zprávy z různých sítí jenomže jen od lidí, se kterými na Buzzu kamarádím a dělá tak přesný opak toho co potřebuji: místo aby objem informací redukoval je násobí. Ten stejný případ je FriendFeed. Nejblíže mým představám je Friend Stream od HTC, ale kromě jiného je jenom pro mobil.

Znáte takovou aplikaci? Pokud ne, chybí Vám? Chtěli byste takovou používat?

pondělí 16. května 2011

Proč jsou informace v informačním věku téměř bezcenné

Marek Prokop, 29.4.2010, video, textový přepis

  • Dříve: informací málo, drahé
  • Google prodává pozornost uživatelů
    • Attention Economy
  • Free - Chris Anderson
    • Náklady na zpracování informací klesají, ale cena pozornosti roste
  • Too cheap to meter