Server Side Java Script – lidt for meget op ad bakke…

Find the bug

Server Side Java Script: Næsten umuligt at debugge 🙁

Se dette eksempel – en simpel @DbColumn i et computet text felt

@DbColumn( @DbName, "(view)", 1)
Her er der en kritisk fejl:
  • Der mangler paranteser efter @DbName()

Men der kommer ingen fejlbeskeder – @DbColumn funktionen returnerer blot ‘undefined’. Samme fejl som hvis jeg havde angivet et ikke eksisterende view – eller lavet en DbLookup med en illegal key. I Log.nsf kommer denne fejl som ikke hjælper meget:

21-11-2011 15:00:25   HTTP JVM: com.ibm.xsp.webapp.FacesServlet$ExtendedServletException: com.ibm.xsp.exception.EvaluationExceptionEx: Error while executing JavaScript computed expression
21-11-2011 15:00:25   HTTP JVM: CLFAD0134E: Exception processing XPage request. For more detailed information, please consult error-log-0.xml located in d:/Lotus/Domino/Data/domino/workspace/logs

Der står ikke hvor eller hvad fejlen er – men blot en henvisning til en lokal log fil på serveren som jeg ikke har adgang til.

Konklusion:
  • Med SSJS arbejder du ‘i blinde’ – ofte får du inge hjælp til hvad der er galt
  • I bedste fald kan du fejlsøge med print() statements – men i det viste eksemple vil det ikke hjælpe meget.
  • Personligt vil jeg derfor holde SSJS til et minimun – dvs. kun til simple onliners. Alt andet vil jeg fremover lave i Lotus Script (eller evt. i Java)

Avartar’s

gravatar.com kan du oprette et profilbillede som herefter kan benyttes i Notes. Det er det samme billede der allerede bliver brugt på et utal af hjemmesider – f.eks. i WordPress blogs

Email adressen skal MD5 encodes – denne hash nøgle benyttes herefter til at finde profil billedet. MD5 encoding kan gøres med dette java script bibliotek -> md5.js

Den færdige xml kode kan se således ud:

<img height="45" width="45" alt="Person Name goes here"
src="#{javascript:'http://www.gravatar.com/avatar/'
+MD5( 'jakob@majkilde.dk' )+'?s=45'}" />

Her bliver email adressen jakob@majkilde.dk oversat til md5 koden ‘eb31173c4651bd167d51225e04dea128’. Denne kode giver via opslag til gravatar.com dette profil billede: