Javazon: Modern sökning med Solr

Jag följde med lite grand i ett föredrag om Solr via Overflow och tycker det verkar bra. 🙂

De presenterar sig själva som en “open source enterprise search server” baserad på Apache Lucene. Solr körs i en web container, exempelvis Tomcat, och har ett käckt XML/HTTP och JSON-API samt ett webbaserat administrationsgränssnitt. Kort och gott en modern “webbwrapper” till Lucene.

Det verkar rätt käckt att kunna skicka in dokument (exvis med en HTTP-POST) som sedan läggs till i indexet och blir sökbart.

Det finns förstås en hemsket massa funktioner och går att göra hur avancerat som helst men grunderna är lätt greppbara och jag får känslan att det går rätt kvickt att komma igång.

Tänkt och gjort, varför inte prova? Det finns ju till och med färdiga solr-paket i universe-repositoryn för Ubuntu. En minut senare och ett “sudo apt-get install solr-common” senare är installationen klar inklusive webbservern Tomcat.

Nästa del får bli att faktiskt indexera och söka men det får bli senare. Nu är det dags att starta avslutandet av konferensen.

Posted in datorer, föredrag | Tagged , , , | 2 Comments

Javazone: Scripting i Java med JSR-223

Jag hörde nyligen ett föredrag om scripting i Java mha JSR-223.

Verkar ju lite tufft att kunna köra Python, Ruby, JavaScript (eller ja, kanske inte så tufft) mm då och då när det anses passande så jag har testkört lite.

Som standard, iaf i min JVM, finns bara javascript-stöd men det går fint att lägga till stöd för fler skriptspråk. För att ordna detta stöd är det lämpligt att lägga vantarna på fler skriptmotorer samt “själva skriptspråket”.

I vår labbmiljö som vi skapar nu kan vi kosta på oss att vara lite råa och skippa Maven. För att lägga till önskade skriptmotorer packar vi upp och lägger till de uppackningskatalog/scriptmotornamn/build/scriptnamn-engine.jar-filer som är av intresse till classpathen. Jag la till jruby (jruby-engine.jar) och jython (jython-engine.jar).

För att kunna skriva Python är det alltså, förutom jython-skriptmotorn, läge att installera Jython. I readme-filen för jython-skriptmotorn står det att den jython-skriptmotor jag laddade ner är byggd för Jython 2.2.1 så jag installerade den och valde “standalone jar” som sen las med i classpathen. Motsvarande gäller för Ruby där man kan ladda ner JRuby (1.3.1 i detta fall) och hitta en jruby.jar i lib-katalogen.

Så hur gör man rent praktiskt när man nu har de där motorerna i classpathen? Det är faktiskt mycket smidigt:
1. Lägg beslag på en ScriptEngineManager, exempelvis new ScriptEngineManager();
2. Fråga den där motorhanteraren om en viss skriptmotor, exempelvis engineManager.getEngineByName(“python”);
3. Använd dina nya möjligheter! Exempelvis triviala engine.eval(“print “Hello Python/Jython world!””);

Jag testkörde även ett litet testprogram som använder en ScriptContext som sätts på respektive skriptmotor och sedan anropar en metod på ett objekt som är knutet till denna ScriptContext.

Så när är det användbart med denna typ av högnivåskriptspråk? Ett typexempel skulle kunna vara att använda python/ruby/liknande till viss textfilsmanipulation eller liknande när skriptalternativet går att skriva på en tiondel av javakoden. Eller kanske råkar man behöva ett visst tredjepartbibliotek som enbart finns för ett av de skriptspråk som stöds av JVM:en. Istället för att skriva om det kan skriptstödet vara räddaren i nöden.

En viktig sak som är på sin plats att nämna avslutningsvis är att man alltså kan komma åt objekt kors och tvärs mellan Java och skriptmiljön så detta stöd tillför mycket än det skulle innebära att starta en ny fristående process (ex System.getRuntime.exec(skript)) som kör ett skript.

Posted in Java, programmering | Tagged , , , , , , | 2 Comments

Javazone: Operas Håkon Wium Lie om One web, CSS3 och HTML5

Det blev morgon även den andra dagen och jag sitter nu bänkad för dagens första föredrag i sal 1. Jag har checkat ut från hotellet och hämtat ut min biljett på centralstationen så att jag ska kunna se så mycket som möjligt av kollega Tobias iPhone-föredrag innan jag måste rusa till tåget som lämnar perrongen samtidigt som Tobias rundar av sitt föredrag.

Jag använder sen en tid tillbaka nästan bara Opera på min Eee eftersom Firefox inte tar hand om de begränsade resurserna på ett tillfredsställande sätt. Nyligen släpptes version 10 i skarp version och den funkar riktigt bra! Renderingsmotorn Presto är nu uppe i 2.2.15. I nuläget är det bara Safari 4.0 och Opera 10 som klarar Acid3-testet. Naturligtvis är det då intressant att höra vad teknikchefen på Opera tycker och tänker!

Angående dagens första föredragshållare så har jag hört Håkon prata tidigare på CommunityOne i våras om just dessa webbtekniker som ligger honom varmt om hjärtat. Han gjorde det bra då så jag gav honom förnyat förtroende. Det visade sig att typ hela föredraget var identitiskt men det innehåller tillräckligt mycket stoff för att funka en andra gång.

Håkon, som är CTO, på Opera och tillika mannen bakom CSS började med att ge en rejäl historisk tillbakablick. Därefter följde en beskrivning av Opera Mini och hur deras innehållskomprimering gör surfupplevelsen på mobilen mer njutbar och kostnadseffektiv.

Efter ungefär en halvtimme kom Håkon på allvar in på sitt favoritämne och baby, CSS.

Han tog bland annat upp dessa CSS-funktioner:

  • Web fonts finns och funkar fint i Opera 10 men än så länge inte i IE (vilket förstås gör att många avvaktar på den fronten).
  • Media queries gör att man kan applicera olika stilmallar beroende på hur stor upplösning webbläsaren har att tillgå. Detta gör att trubbiga media=”screen/handheld/print” kan kompletteras något som gör det möjligt att göra bättre anpassade webbgränssnitt.
  • För att göra runda hörn mha stilmallar istället för en massa enskilda bilder har nu attributet border-radius lagts till. Du kan speca både “vertikala och horisontella radien” så att du får hörnen som du vill.

Avslutningsvis pratade Håkon lite kvickt om HTML 5 och demade video-taggen.

Posted in datorer, föredrag, webbprojekt | Tagged , , , | Leave a comment

Haltande Sverige vinner igen

Sverige har snubblat in en boll till i slutminuterna och har mycket turligt plockat både Ungern och Malta i de två senaste. Som tur är sände fotbollskanalen.se live så jag kunde se matchen trots att inte hotellrummet har tv4. Reservplanen var att se via mythtv (och OpenVPN) men nu behövdes ju inte det.

Blir intressant att se hur det går för Portugal senare ikväll men jag kommer se Norge-Makedonien istället på Queens Pub tillsammans med en massa andra Javazone-människor.

Nu blir det mycket intressanta matcher mot Danmark och Albanien i oktober.

Posted in sport, tv | Tagged , | Leave a comment

Internetåtkomst på begränsade nät

Läste nyligen ett så pass bra inlägg om konsten att koppla upp sig att jag måste tipsa i min egen blogg. Läs gärna Sébastien Raveaus inlägg Internet by all means från i somras.

Jag har provat vissa av de sätt som nämns men inte alla så nu finns det fler varianter att prova nästa gång man hamnar i en sån situation…

Uppdatering lite senare på kvällen: Jag har tidigare kikat på dns2tcp (finns färdigt paket för Debian/Ubuntu) men nu tog jag mig tid att sätta upp klient och server samt testa att det funkar. Tror det kan komma till användning speciellt utomlands när bredband inte alltid finns tillgängligt via 3G-nät.

Posted in datorer, datorsäkerhet | Tagged | Leave a comment

Javazone: GlassFish v3

På eftermiddagen hörde jag en del på ett GlassFish v3-föredrag via Overflow och installerade samtidigt en preview-utgåva (build 47.4) av denna öppna applikationsserver från Sun på min eee 901. Det finns smidiga installationsprogram för Windows, Linux, MacOS X och Solaris så det är inga problem för den som vill testa.

GlassFish v3 startar i likhet med Liferay Portal hyfsat snabbt (iaf utan deployade applikationer) även på starkt begränsad hårdvara och kommer med ett snyggt och innehållsrikt webbaserat administratörsgränssnitt vilket känns viktigt för att komma igång snabbt och smidigt.

Tidigare har jag enbart använt JBoss AS och WebSphere AS när det handlar om applikationsservrar (och inte enbart webbservrar vilket det oftare har handlat om) men GlassFish v3 ser ut som en god kandidat.

Angående stöd för olika tekniker osv så handlar det i mångt och mycket om Java EE6-kompabilitet. Vi kan exempelvis nämna stöd för JAX-WS 2.2, JPA 2.0, Bean Validation, EJB 3.1, Servlet 3.0, JSP 2.2, JSF 2.0, JSTL 1.2, EL 1.2 och Web Beans 1.0.

Uppdatering dagen efter: Alexis bloggade själv om sitt föredrag och länkade till sin presentation.

Posted in föredrag, Java, programmering | Tagged , , | 2 Comments

Javazone: Overflow för bästa överblick

En tuff sak på Javazone som jag inte sett på andra konferenser är möjligheten att se alla sex pågående föredrag simultant. Förvisso klarar ingen vanlig människa av att multitaska på den nivån under en längre tid men för den som vill försöka är det fritt fram 🙂

Med “overflow” slipper man välja eller kan iaf skjuta upp valet tills man sett lite mer. Det går till så att man checkar ut ett headset (man lämnar sitt entrékort i pant) och kopplar det till en fjärrkontroll med vars hjälp man tar emot ljudet och växlar mellan de olika föredragen som även visas på skärmar (eller dukar) typ 10 meter framför en.

Denna form att gå på föredragen kan vara vettig exempelvis ifall man är osäker på vilket föredrag man ska gå på eftersom det är lättare att trycka på “kanalbyte” på fjärren än att knö sig ur en fullsatt lokal och leta upp ett annat mer passande föredrag.

Det kanske bör tilläggas att man bör ha hygglig syn för att se det finstilta i vissa presentationer om man sitter några rader upp men för min del funkar det fint.

Overflow på Javazone 2009

Posted in föredrag, Java, programmering | Tagged , | Leave a comment

Javazone: Google App Engine

Efter lunch gick jag på en introduktion till Google App Engine. För min del har det hittills inte varit aktuellt att bygga nåt för denna plattform men jag kan helt klart se scenarion där det är lämpligt.

Föredraget var inte jättebra men gav i stort sett den information som finns i Googles egna introduktion.

Om man ska starta en tjänst som kan tänkas växa men som man inte vill investera stort i från början erbjuder Google App Engine ett attraktivt alternativ.

Man kan välja mellan ett Java- eller Python-API och det är Python-API:et som är originalet. Enligt föredragshållaren är Python-verktygen mognare och man bör enbart välja Java-varianten om man man har goda anledningar. Dock verkar det finnas Eclipse- och Maven-plugins så jag skulle nog iaf kika på Java-API:et och se om det duger för att slippa två obekanta faktorer samtidigt.

Även om Google App Engine är gratis på flera sätt och vis finns det en hel del begränsningar gällande vad som kan lagras osv som kan vara bra att känna till innan man hoppar på tåget.

Hursomhelst vore det lite kul att prova så det kanske kommer mer när jag kommit så långt.

Posted in föredrag, Java, programmering, webbprojekt | Tagged , | Leave a comment

Liferay Portal – en första titt

Eftersom jag snart kommer att jobba med portalutveckling och portalprodukten Liferay Portal har jag tagit mig en titt.

En sak som blir tydlig direkt är att Liferay Portal är en förhållandevis liten och kvick krabat. Installationen av Liferay Portal som är bundlad med Tomcat 6.0 väger in på 135 pannor (okej, MB) och går att starta inom en evighet på en Asus EEE 901 med 1,6 GHz Atom-processor och 2 GB RAM. Behöver jag tillägga att det hade tagit ungefär en vecka att ladda ner och installera en annan känd och funktionsmässigt jämförbar portalprodukt från en stor trebokstavsaktör (hint: inte SUN) inom datorvärlden?

Det finns även ett Eclipse-plugin som verkar funka (har installerat och pillat lite) men som skulle kunna vidareutvecklas.

Jag lär få anledning att återkomma i ämnet senare.

Posted in datorer, Java, programmering, webbprojekt | Tagged , | Leave a comment

Javazone: Nyheter i Spring 3.0 med Arja Poutsma

Vid lunchtid höll Arja, som jag sett vid några tidigare tillfällen, ett föredrag om nyheterna i Spring 3.0. Han lyfte framför allt fram att Spring iom 3.0 anpassats för att utnyttja funktionaliteten i Java 5 och då alltså företrädelsevis generics och annotations.

Den nya feature som jag personligen tycker verkar mest intressant är Unified EL++ som jag tror kommer att förenkla livet för Spring-utvecklaren på flera fronter. Läs mer exempelvis från Spring in Practise.com.

Arja, som är rätt gedigen inom webservices, pratade även en del om det förbättrade REST-stödet i trean.

Avslutningvis kikade vi på roadmappen och konstaterade att Spring har den sista milestone-releasen (M4) av 3.0 ute nu och att man kan förvänta sig en funktionskomplett och fullt dokumenterad release candidate nästa vecka (korrekturläsning av dokumentationen pågår för tillfället). Den produktionsklara GA-releasen är tänkt att släppas till SpringOne 19-22:a oktober.

Om man redan nu blickar framåt mot nästa version, 3.1, så hoppades Arja att de skulle kunna utveckla den lite snabbare än 3.0 som dragit ut lite på tiden (eventuellt delvis pga det pågående uppköpet?). Han nämnde att 3.1 ska släppas i början av 2010 (borde betyda senast sista juni iaf :)) och vara fullt Java EE6-kompatibel. För oss som använt Spring WebFlow en längre tid kan det vara lite intressant att Arja nämner att conversation-scopet (typ mellantinget av request- och session-scope) är tänkt att ta plats även i Spring Core från version 3.1. Vad det kommer att innebära rent praktiskt vet jag inte i nuläget men det låter intressant.

Under frågestunden frågade jag Arja om vmware-uppköpet som pågår redan nu har påverkat utvecklingen i någon omfattning. Kanske inte helt oväntat svarade Arja att påverkan för oss som Spring Framework-användare troligen blir minimal och att Spring Framework troligen inte kommer att påverkas alls (“they think that what we are doing is good, and want us to keep doing that” typ) men att det kikas på hur Spring kan användas i Cloud-tillämpningar vilket kan vara en marknad som vmware är intresserade av att avancera inom.

Posted in Java, programmering, Uncategorized | Tagged , | Leave a comment