13 september, 2012

Custom datumformat i ROME



ROME är ett ramverk som jag tänkt hylla har på bloggen ett flertal gånger men det har inte blivit av.
ROME (Rss and atOM utilitEs) skapar ordning i versions-soppan inom syndikeringsformaten, eller vad sägs om att skriva egen kod för att parsa/skapa/konvertera mellan följande format:
  • RSS 0.90
  • RSS 0.91 Netscape
  • RSS 0.91 Userland
  • RSS 0.92
  • RSS 0.93
  • RSS 0.94
  • RSS 1.0
  • RSS 2.0
  • Atom 0.3
  • Atom 1.0
Med ROME är det en enkel sak att konsumera feeds, skapa feeds och att konvertera mellan olika format. Något som annars är en diger uppgift, begrunda bara den mängd av olika datumformat som används inom dessa format. Den sajt jag jobbar med just nu använder ROME för att konsumera feeds från flera olika källor och en av dessa källor skickar datum på ett sätt som ROME inte kunde parsa, "2012-08-22 22:34" eller yyyy-MM-dd HH:mm som man säger inom Javavärlden. 

För att få ROME att kunna parsa detta datumformat måste det nya datumformatet definieras i filen rome.properties som skall placeras på classpath. Innehållet i rome.properties blir en enda rad:

datetime.extra.masks=yyyy-MM-dd HH:mm

Det går att lägga till flera customformat, i sådant fall separeras de av ett '|' tecken. Mönstret följer syntaxen i java.text.SimpleDateFormat

12 september, 2012

UTF-8 med BOM

EF BB BF who?
En enkel inläsning av en UTF-8 encodad textfil blev stökigare än väntat. Filen är en enkel semikolonseparerad fil med siffror i första kolumnen. Av någon anledning gick det inte att använda Integer.valueOf() på just det första värdet! Vaaarföör! NumberFormatException for String "1"... Say again please?! Efter en stunds koll av kod och fil så laddade jag ner en Hex-editor för att se vad som fanns där i starten av filen.

EF BB BF, glöm aldrig dessa. Dessa sköna bytes kallas BOM (Byte Order Mark) och Java gillar inte BOM. Men som vanligt finns det folk som löst det problem man ställs inför, i det här fallet hette lösningen BOMInputStream och den är din vän när du måste hantera UTF-8 encodade filer med BOM´s.

Man lär så länge man lever!



06 augusti, 2012

Back in business


Netbeans 7.2? Jomantackar!

Idag är första dagen på jobbet sedan december 2011! Njaa, inte riktigt. Jag jobbade tre dagar i maj då jag höll kursen Enterprise Javabeans 3.0 för Informators räkning. Men idag sitter jag och jobbar med kod, riktigt jobb alltså!

Uppdraget känns väldigt roligt och lagom stort, kunden är Svensk Travsport som vill göra om en av sina kampanjsajter till ett nytt och spännande format.




09 januari, 2012

Nytt uppdrag!

Like a boss!
Från och med idag har jag ett nytt uppdrag på heltid. Det blir även en del övertidsarbete, framförallt nätter men ersättningen gör att det är helt klart värt det! Uppdraget omfattar kompetensområden som långa promenader, korta (och plågsamt långsamma) promenader, pulkaåkning (när snön kommer), pussel, bygga med klossar och annan nyckelkompetens.

Avtalet är skrivet på livstid, men heltidsdelen gäller fram till sommaren.

11 november, 2011

GZIP-komprimering med Glassfish 3

Häromdagen ville jag använda GZIP för att komprimera storleken på HTML-dokumenten som skickas till till klienten (klienten är en smartphone). I min iver att kunna spara viktig nedladdningstid började jag fräscha upp kunskapen om GZIP, ServletFilter m.m. ända tills jag snubblade över ett tips om hur man "enablar" GZIP i Glassfish 3 (via webbkonsolen).

-För bra för att vara sant tänkte jag, här ska kodas!

Men... Det visade sig att det fungerade utmärkt att få GZIP-komprimering helt automatiskt, inte en rad kod i applikationen! Så här gör man:

Configurations/server-config/Network Config/Network Listeners/http-listener

Scrolla ner en bit, "on", ja tack!
Man kan även lägga till de mime-types som skall komprimeras, perfekt för HTML/Text men även för XML, JSON samt egna Javascript & CSS-filer (ej komprimerade). Den nya inställningen slår igenom direkt på servern, ingen omstart behövs.

Mina enkla tester visade att 100Kb okomprimerat blev ca. 20Kb med GZIP, en ganska stor vinst för vissa sorters klienter. Denna teknik används nu i min lilla mobila nyhetssajt (optimerad för smartphones) som är byggd med JQuery Mobile & JEE 6 på Glassfish 3.

13 oktober, 2011

Hello iMessage, goodbye SMS/MMS

SMS/MMS har varit det mest populära meddelandeformatet för mobila enheter ända fram till igår. Det var också en av de dyraste formerna av kommunikation räknat per Kbyte och en härlig källa till gratispengar för operatörerna (lite som plastpåsar i mataffären fast i mobilvärlden).

Men nu är det slut med det, igår rullade Apple ut iOS 5 och iMessage. iMessage kommer troligtvis ersätta SMS och MMS helt och hållet på iOS-plattformen (GTalk har gjort detsamma på Android), vinnarna är konsumenterna som nu kan avsluta sina "SMS"-specifika abonnemang och använda modern teknik för att kommunicera istället för teknik från 1990-talet.

Mobiloperatörer; välkomna till 2010-talet!