wk voetbalpool webapp: dag 11

 
16 april 2010

Deze dag begint met paniek: na een update lijkt maven ineens zijn jetty plugin niet meer te herkennen. Hoe kan dat? Gisteren werkte het nog en de plugin is geen onderdeel van onze svn. Dus…? Uiteindelijk blijkt het probleem dat het maven-commando om jetty te starten, nu op de verkeerde POM te worden uitgevoerd – bij het in elkaar schuiven van de persistentie en de backend zijn er twee omgewisseld van plaats. Google to the rescue…! En even later weten we dus wat er aan de hand is en is het probleem verholpen. Maar ik kijk er wel tegenop om ook de front-end te integreren: dat is nu een eclipse-project, dus die moeten we eerst nog zelf handmatig bij maven naar binnenschuiven.

Aan de voorkant is Christa beziggeweest met de gebruikersprofielen. Ze heeft af en toe last van rare HTTP statuscodes – niet 200 of 404 maar 0. In eerste instantie vermoedt ze dat het aan Chrome ligt, maar ook Firefox heeft dit probleem. Kennelijk is er iets mis met de GWT- of de Scala-code? Alleen op IE gaat het goed, op de andere browsers gaat het allemaal fout. En dan duurt het best even voordat je doorhebt dat het aan de GWT-development-plugin ligt – althans dat is het huidige vermoeden. Verder is het een beetje raar dat bij het ophalen van de gebruikersprofielgegevens je alleen gebruikersnaam en email binnenkrijgt, terwijl bij het updaten er ook een wachtwoord verwacht wordt – die de front-end dus niet tot zijn beschikking heeft. Hier zullen we dus in het backend ook rekening moeten houden. Sowieso moeten we het hele authenticatie/authorisatie/session token-gedeelte nog beter uitwerken; er is nu alleen nog zeer rudimentaire functionaliteit voor aanwezig. Daarbij moeten we ook nadenken over hoe we een gebruiker tot admin verheffen.

Rick is inmiddels in zijn spaarzame tijd begonnen om met Specs aan de slag te gaan, een Scala Unit test framework. Hij gaat vandaag nader uitzoeken hoe het werkt en proberen het in ons project in te zetten. Rikkert heeft gisteren dus zijn CouchDB-componentje opgeleverd; die kan dus vandaag geïntegreerd worden. Maar hij moet ook nog uitgebreid worden met DELETE-functionaliteit en iets van authenticatie gaan ondersteunen, zodat we de CouchDB-authenticatie ook kunnen aanzetten. Anatoly is nog beziggeweest met het invullen van de wedstrijdvoorspellingen. Hij heeft nog een wens om een overzicht te kunnen bouwen waar alleen wedstrijden zonder voorspellingen van de gebruiker inzitten. Het blijft nog even de vraag welke views hij daarvoor nodig heeft. Hij wil ook een lijst van aanwezige pools; we hebben inmiddels al een view waarin per groep de gemiddelde score wordt aangeboden – die kan hij wel hergebruiken. Tenslotte heeft hij nog een domme bug ontdekt: de ruststand wordt door de view ook altijd als eindstand gegeven. Oeps!

Voor de persistentie kiezen we ervoor om een hybride componentje te bouwen die gedeeltelijk synchroon en gedeeltelijk als actor werkt: bijvoorbeeld bij het wegschrijven van de state van een object is het niet zo erg om dat asynchroon te doen. Maar bij het opstarten wil je dat juist niet omdat je dan in nog ergere mate te maken met de problemen waar we gisteren en eergisteren tegenaan liepen: dat sommige actoren al live zijn en events kunnen sturen, terwijl die opgevangen zouden moeten gaan worden door andere actoren die nog niet in de lucht zijn.

In de praktijk blijkt het persistentie-componentje niet helemaal goed samen te werken met Scala: een Scala HashMap is een ander ding dan een Java HashMap, en kan meerdere null keys bevatten. XStream, dat onder Rikkert’s CouchDB-componentje hangt, die ziet dat, weet dat dat niet mag in Java, gooit een exception en het resultaat is dus dat alsnog de goeie data niet in de DB terecht komt. Dit vergt dus nog wat massage.

De rest van de dag zijn Jan-Willem en ik bezig geweest met security – vanaf nu mag alleen een administrator (dwz de gebruiker met gebruikersnaam ‘admin’) wedstrijduitslagen invoeren, alleen de pool-eigenaar mensen toelaten, en alleen de gebruiker zelf zijn eigen profiel aanpassen. Hier komen we een heel eind mee; aan het eind van de dag zit de alle code er (volgens mij) in, en hoeft het alleen nog getest worden. Ik heb nu al zin om een event-driven bank-applicatie te gaan schrijven in Scala!

En daarmee werd het half zes, en alles is wel.


Werken met ?
Kijk dan bij onze mogelijkheden voor zowel starters als ervaren engineers.


Categorieën: Development