Welcome
I spent a little bit too much time figuring out how to output UTF-8 encoded resources with Velocity and the Spring MVC, so I figured I should share.
First thing was figuring out that ReloadableResourceBundleMessageSource actually had a property "defaultEncoding" in contrast to the ordinary ResourceBundleMessageSource. Nice. ReloadableResourceBundleMessageSource is a slightly faster implementation than ResourceBundleMessageSource and also you can specify how long it should cache the resource with cacheSeconds.
Next problem was getting it to find the resource bundle file. I found out you can't have reloadable resources in WEB-INF/classes where you normally put your properties-files. I found an example by Mat Raible: http://issues.sourcebeat.com/browse/SPL-130 and stupid as I am I thought the basename path "/WEB-INF/messages" was a path to a directory. Stoopid. It was the name of the resource-file without .properties.
So after a couple of hours everything worked. Sometimes your head is slooow. The finished bean-configuration in applicationContext.xml:
|
品)も見ごろを迎えます。皆様ぜひご来館ください。
Testar lite japanska, arabiska och kinesiska i utf-8.
شاطئ الأحزان وقابلتك والدمعة في
海交通大学关于本科生毕业设计(论文
"The effect is a very stunning and balanced tank":
http://members.tripod.com/~drwonga/articles/aquascape/aquascape.html
"In our tanks, we try to place our plants in clumps, as this proves to be much more realistic."
http://members.tripod.com/~drwonga/articles/aquascape2/article2.html
Där ser man.
Min gode vän Martin på ICQ:n:
"ordet "pop" finns ju inte i svenskan, iaf inte för att beteckna något som hoppar fram (den betydelsen finns i engelska)
alltså borde det heta "ploppupfönster" istället för "popupfönster"! :D"
Så nu vet ni det. Det heter alltså "Ploppuppfönster"!. Betydligt roligare, sötare och bättre ord helt klart. Att Win-XP/IExploader >6.x dessutom ploppar till för varje blockerat ploppuppfönster sätter det i sten.
Efter att ha testat utveckling med genererade dao-objekt mha Torque när www.megastore.se skapades så ville jag utvidga vyerna lite och blickarna gick mot Hibernate.
Jag har även hållt ett getöga på Spring framework av lika många anledningar som detta framework innehåller finesser. Ett komplett smörgåsbord för nästan alla delar av avancerad applikationsutveckling, webservices osv. Enkelkonfigurerat dessutom, även om dependency injection och aspektorienterad programmering AOP innehåller ett visst mått av xml-runkande som jag inte direkt diggar. En kompis, Rickard Öberg, försökte få in mig på AOP för flera år sedan när han själv upptäckte det men jag hajjade aldrig riktigt grejjen. Då.
Så nu ville jag testa AOP och dependency injection, gärna med någon form av DAO-lager jag inte testat innan, t ex Hibernate.
Jag försökte få igång Hibernate när jag utvärderade dao-lösning till Megastore, men jag fick det inte att fungera. Torque hoppade igång ganska enkelt, men det är även ett enklare koncept att förstå färdiggenererad dao-kod jämfört med dynamiskt genererad sådan som Hibernate håller på med. Man kan ju liksom se och titta in i den genererade koden och debugga sig fram till vad som händer.
Den starkaste fördelen med Hibernate, att man kan välja vilket håll man vill på utvecklingen (bottom-up, middle-out, meet-in-the-middle, top-down) är också dess svaghet då det behövs lite erfarenhet att genuint förstå och uppskatta fördelarna med varje metodik.
Redan tidigt i skisserna på Megastore ville min kompis Martin att vi skulle försöka hålla utvecklingen bottom-up, då han är en hejjare på db-design. Dvs man ska kunna rodda om i databasen ala vilda västern och de övre lagrena ska kunna följa med. På senare tid, med ännu mer professionell erfarenhet av lite fetare databaser på Intentia och Ericsson har jag även kommit att uppskatta databaser på ett nytt sätt. Numera ser jag inte databaser som något man kan lägga objekt-information i, utan som informationen som man bygger objekten runt. Det är en otrolig resurs att ha databasexperter som kan jonglera med databaser och utnyttja deras potential fullt ut, mycket pga agiliteten det ger i utvecklingen: Man är inte rädd för att stuva om tabeller och kolumner hur som helst för att få hypersnabba optimerade sökningar och låta databsen växa med information - och när man säger såhär till en Javautecklare blir den ofta svettig i pannan och den ser framför sig hur mycket tid och klurande varje db-förändring kommer ta i java-lagret, speciellt om vi börjar snacka lite coolare SQL.
-"Ja men det är smidigare att bara köra top-down hela tiden coh skita i db:n, typ med CMP-bönor i EJB"
Problemet är då bara att man inte ser den skog av fiffigt designade databaser därute i den riktiga världen, som inte vet vad EJB är.
Jag ville testa bottom-up. Jag ville bara pyssla med databasen och varje förändring ska inte behöva timtal av omfaktorisering av en massa domänobjekt.
Hibernate it is.
Det fiffiga med Spring och Hibernate är att Spring tar bort ca 50% av all Hibernate-konfigurering, läste jag någonstans. Det låter ju bra, och det verkar faktiskt stämma. Det tog inte många minuter innan jag fick igång min livs första HQL-baserade query. Egentligen kräks jag på tanken av ännu en SQL-omskrivning, men det är inte så stor skillnad.
Men det som var *riktigt* porrigt var Middlegen, speciellt i kombination med MySQL:s fina nya admingränssnitt som gör databasmanipulering/design jätteenkel.
Jag satt några minuter och skissade på vilka tabeller jag ville ha, slog in allt i MySQL, startade Middlegen och den vissade ett komplett relationsdiagram. Jag fipplade med kardinaliteterna lite och klickade generate, och vips så var Hibernate-konfigureringen klar.
Några sekunder senare så var alla POJO:s genererade med hbm2java.
Ytterligare några sekunder senare så fixade en Spring-controller att hämta ut domänobjekt.
Nice.
www.pmdd.se
Kan det bli tydligare och enklare? Perfekt domännamn också. Alla tummar upp.
Sådärja. Då var www.defblog.se reggat. Jag måste ge www.loopia.se en massa beröm dels för priset ~165:- med moms och dels för en klockren webbapplikation där man mycket enkelt kan redigera domäninställningarna.
Ericssons domänservrar var uppdaterade bara några timmar från det att jag registrerade domänen, men bredbandsbolagets domänservrar är fortfarande inte uppdaterade.
Jag upptäckte att jag stängt av domänuppslagningen i Tomcat (går lite snabbare) och jag som undrat varför inte domännamnen har resolvats i loggarna. Duh. Den är på igen eftersom host-resolvern måste kolla på domännamnet i requesten för att routa till rätt servlet-context.
[2013-4] [2013-3] [2012-5] [2012-3] [2012-1] [2011-12] [2011-8] [2011-5] [2011-4] [2011-3] [2011-2] [2011-1] [2010-12] [2010-11] [2010-10] [2010-9] [2010-8] [2010-7] [2010-6] [2010-5] [2010-4] [2010-3] [2010-2] [2010-1] [2009-12] [2009-11] [2009-10] [2009-9] [2009-8] [2009-7] [2009-6] [2009-5] [2009-4] [2009-3] [2009-2] [2009-1] [2008-12] [2008-11] [2008-10] [2008-9] [2008-8] [2008-7] [2008-6] [2008-5] [2008-4] [2008-3] [2008-2] [2008-1] [2007-12] [2007-11] [2007-10] [2007-9] [2007-8] [2007-7] [2007-6] [2007-5] [2007-4] [2007-3] [2007-2] [2007-1] [2006-12] [2006-11] [2006-10] [2006-9] [2006-8] [2006-7] [2006-6] [2006-5] [2006-4] [2006-3] [2006-2] [2006-1] [2005-12] [2005-11] [2005-10] [2005-9] [2005-8] [2005-7] [2005-6] [2005-5] [2005-4] [2005-3] [2005-2] [2005-1] [2004-12] [2004-11] [2004-10] [2004-9] [2004-8] [2004-7] [2004-6] [2004-5] [2004-4] [2004-3] [2004-2] [2004-1] [2003-12] [2003-11] [2003-10] [2003-9]