Showing posts with label Beta. Show all posts
Showing posts with label Beta. Show all posts

Monday, March 18, 2013

Very cool! Conditional breakpoints in the SSJS Debugger

I blogged about the new SSJS Debugger in Designer 9 and how to use it to find bugs in your java script code some weeks ago. And today i want do show you how to use conditional breakpoints in the new debugger.

Every developer knows that it is very annoying when you have a problem in a loop which occurs only in a particular iteration. So you have to step through the loop many times only to get to the faulty iteration. And when you click step over one time to often you can start from the beginning. Look at the following example:

var view=session.getCurrentDatabase().getView("Employees");
var doc=view.getFirstDocument();
var money=0;
while(doc!=null){
 money=money+100/doc.getItemValueDouble("value");
 doc=view.getNextDocument(doc);
}
getComponent("result").setValue(money);

We are looping through a view and make a litte calculation. When we run this example we get a value of "inifinty". So we are pretty sure that on one iteration there is a Division by zero. But the big question is which document contains the zero value? So we can step through the whole loop to find the doc which contains a zero vale or define a conditional breakpoint.

1. Go to the source tab of your xPage.
2. Left click the breakpoint area left of the line numbers to define a breakpoint.
3. Right click the new breakpoint and select "Breakpoint Properties"

4. Define the condition when your breakpoint should stop the script execution



After the condition is set the SSJS Debugger will stop the script execution every time the code where the break point is defined is executed and the condition is true. In our example stops the execution when doc.getItemValueDouble("value") is 0. When the Execution stops you can find out with the expressions view which document is causing the error. For example you can get with doc.getUniversalID() the UNID from the document with the 0 value.

Condtional breakpoints are a very valuable tool to find bugs in complex SSJS code.

Reference to all my posts about the SSJS Debugger

Tuesday, February 26, 2013

Debuggen von SSJS in Designer 9 mit der lokalen Web Vorschau

Zum Wochenende habe ich geblogget, wie man den neuen SSJS Debugger mit einem Domino Server verwenden kann. Stephan Wissel hat dann gefragt ob ich nicht auch noch testen könnte wie man den SSJS Debugger mit der lokalen Web Vorschau im Designer verwenden kann. Nun also prinzipiell ist der Ablauf ganz der gleiche wie beim Debuggen einer xPage auf einem Server. Als erstes muss man 3 Einträge zur notes.ini des Designerclients hinzufügen.

JavaEnableDebug=1
JavascriptEnableDebug=1
JavaDebugOptions=transport=dt_socket,server=y,suspend=n,address=8001


Wichtig ist, dass falls auf dem Rechner auch ein Server mit Debugunterstützung läuft eine andere Portnummer gewählt wird. Ich habe z.B. 8001 für den Designerclient gewählt und am Server 8000. Damit kommen sich die beiden nicht in die Quere.

Danach muss die lokale Webvorschau einmal durchgestartet werden. Dies kann man im Menü Tools "Stop local web preview" machen.


Sobald man wieder eine lokale Datenbank zum Testen startet, wird der lokale nhttp Task wieder gestartet.  Wenn die SSJS Debug Unterstützung aktiviert ist, findet sich im console.log im IBM_Technical_Support Verzeichnis der Hinweis "JVM: WARNING: Remote Java Debugging is enabled, resulting in decreased performance and potentially compromised security"

Bei mir konnte sich aber trotz der Meldung im Log der SSJS Debugger nicht mit der lokalen Web Vorschau verbinden. Der Grund war, dass ich unter den Java Debugging Preferences den Punkt "Local Web Preview" angeschalten hatte. Diese Einstellung verträgt sich nicht mit den Einträgen in der notes.ini Also den Haken herausgenommen und den lokalen Vorschauprozess noch einmal beendet.



Dann unbedingt vor dem Starten der Debugsitzung einmal eine xPage in der Vorschau öffnen, damit der Lokale Vorschau Prozess wieder gestartet wird.

Dann kann man auch schon über Tools Manage Debug Configurations die SSJS Debug Sitzung starten.


Wichtig ist dann, dass man wieder die richtige Portadresse bei der Verbindung angibt.


Dann läuft wieder alles wie beim Debuggen von Javascript auf einem Server.


Für weitere Infos zur neuen Version schauen Sie auch auf meine Übersicht über alle Postings zum Thema Notes/Domino 9 
Alle Postings zum Thema SSJS Debugger

Monday, February 25, 2013

Server 9 Probleme bei compact -replica

In einem meiner letzten Postings habe ich über den Befehl Load compact -replica geschrieben. Dabei ist mir jetzt noch ein Problem aufgefallen. Wenn man während der Ausführung des Befehls andere Befehle auf der Serverkonsole eingeben will, dann werden die "drop database" Befehle die der Compact Task zum Beenden der Verbindung ausgibt mit den Befehlen die man selber eingibt vermischt. Diese funktionieren dann natürlich nicht. Also aufpassen, dass man während eine compact -replica keine Befehle am Server eingibt.


Ich habe das Problem auch im Beta Forum gemeldet.

Monday, January 14, 2013

Notes 9 Verbesserung beim e-mail typeahead

Das Typeahead bei e-mail Adressfeldern ist eine sehr praktische Sache, aber seit Einführung dieser Funktion stört mich die Tatsache, dass immer zuerst die lokalen Adressbücher vor den Serveradressbüchern durchsucht werden, obwohl davon auszugehen ist, dass die Serveradressbücher im Normalfall die viel akuraten Informationen enthalten. Mit Notes 9 wurde nun eine neue notes.ini Variable (TypeaheadShowServerFirst=1) eingeführt mit der man dieses Verhalten umkehren kann.

Ohne TypeaheadShowServerFirst=1



Mit TypeaheadShowServerFirst=1

Die Notes.ini Variable kann natürlich auch über eine Desktoppolicy gesetzt werden. Leider gibt es jedoch keine Benutzerschnittstelle für diese meiner Meinung nach extrem wichtige Einstellung.

Laut Doku in der Version 9 soll diese Variable auch in 8.5.3 funktionieren. In meinem 8.5.3 FP1 Client hat die Variable jedoch keine Funktion.


Für weitere Infos zur neuen Version schauen Sie auch auf meine Übersicht über alle Postings zum Thema Notes/Domino 9

Wednesday, January 2, 2013

Notes 9 SE erste Eindrücke aus Sicht des Plugin Entwicklers

Nach dem ich mir ein wenig den neuen Client, iNotes und das Browserplugin angeschaut habe, möchte ich mir heute den neuen Client aus der Sicht eines Plugin Entwicklers ansehen.

Die Einrichtung von Eclipse zur Entwicklung von Plugins für Notes 9 Social Edition hat schon Mikkel Heisterberg in einem sehr guten Howto (Eclipse 3.x, Eclipse 4.2) beschrieben. Deshalb kann ich mir dies hier sparen.

Ich habe dann also mal in meine neue Notesumgebung sämtliche Features und Plugins, die wir für den Notes Client entwickelt haben eingespielt und erfreulicherweise laufen alle Plugins ohne Probleme und Einschränkungen in Notes 9 Social Edition. Aber auch hier zeigt sich, dass sich die IBM wenig Mühe gegeben hat, ein konsistentes UI zu erreichen. Notes 8.x war sehr gut an das Farbschema (blau weiße Farbverläufe) von Eclipse angepasst. Deshalb haben sich Plugins die das Standarddesign der Platform übernommen haben sehr gut in den Notes Client eingefügt. Als kleines Beispiel wie das aussieht hier ein Screenshot aus unserem Hardwareinventoryplugin unter Notes 8.5.3:


Die Blautöne der Eclipsebereiche harmonieren relativ gut mit den Blautönen die in Lotus Notes 8.x verwendet wurden.

Leider passen die blauen Farbverläufe nicht mehr zu den grauen Farbverläufen von Notes 9


Dabei sollte es für die IBM ein leichtes sein, die Eclipseplugins dahingehend anzupassen, dass zum ausgewählten Theme passende Farben zurückgegeben werden, wenn ein Plugin Defaultfarben abruft. Ich habe mal Quick and Dirty das "org.eclipse.ui.forms" Plugin von Notes gepatched und schon sehen alle Plugins etwas mehr nach der Farbgebung von Notes aus.


Mit etwas Mühe hätte man da jeden Pluginprogrammierer viel Arbeit ersparen können und selbst erstellte Plugins würden sich automatisch ohne viel Aufwand in den neuen Notesclient einfügen.

Leider gibt es ausser den Änderungen beim Design praktisch kaum etwas neues für Plugin Entwickler. Für eine 8.5.4 wäre es ja auch durchaus in Ordnung gewesen, dass die IBM keine Updates an den Frameworks gemacht hat. Aber wenn man schon mit Notes 9 eine komplett neue Version akündigt kann ich nicht verstehen, warum man den Eclipse RCP Basiscode nicht aktualisiert hat. Wenn man bedenkt, dass jedes Jahr eine neue Version von Eclipse erscheint, dann ist relativ klar, dass viele aktuelle Plugins nicht mehr die uralte 3.4.2 Version von Notes 9 unterstützen. Hier würde ich mir wünschen, dass die IBM so rasch wie möglich zumindest auf die neueste 3.x Version updated. Derzeit ist ja schon 4.2 aktuell. Auch dass noch immer auf Java 1.6 statt 1.7 gesetzt wird, finde ich persönlich sehr schade. Ein echtes Highlight wäre für mich, wenn die IBM hier noch nachbessert und vielleicht bei nächster Gelegenheit Java FX integriert.

Auch die Domino Java API's haben kein Update erfahren. Hier wäre wirklich schon dringender Handlungsbedarf, da sich die Java API von Domino vom Design her sich immer noch wie Java 1.1 anfühlt. z.B. wird noch immer Vector verwendet, statt den mit 1.2 verbesserten Collectionsklassen. Auch Generics werden nach wie vor nicht unterstützt. Nicht einmal die neuen Calendarklassen werden offiziell unterstützt, wenn Sie auch in der Betaversion scheinbar drinnen sind.

Als Fazit kann man nur sagen, dass die IBM alle Leute die sich mit 8.x stark in der Pluginentwicklung engagiert haben mit Version 9 hängen lässt. Bei uns in der Firma geht der Trend dahin, dass wir unsere Plugins die wir für den Notesclient entwickelt haben, nach Vanilla Eclipse portieren und den Notes nur noch da verwenden, wo es gar nicht anders geht.


Für weitere Infos zur neuen Version schauen Sie auch auf meine Übersicht über alle Postings zum Thema Notes/Domino 9

Friday, December 28, 2012

Notes 9 als Anwender; erster Blick Hui, zweiter Blick leider Pfui.

Endlich über die Weihnachtsfeiertage bin ich auch mal dazu gekommen mir die Beta von Notes 9 Social Edition im Detail anzusehen. Vorweg schicken möchte ich, dass ich Notes seit über 12 Jahren sowohl als Anwender als auch als Administrator und auch als Entwickler verwendet habe und auch nach wie vor verwende. Ich stehe Notes prinzipiell sehr positiv gegenüber und war auch immer ein Verfechter des Standardclients auch wenn die ersten Versionen des Standardclients sehr buggy waren. Ich war aber speziell ab der 8.5.1 der Meinung, dass Notes auf einen sehr guten Weg war. Die neuen Features wurden immer stabiler und auch die Performance wurde langsam besser. Als ich dann gehört habe, dass bei Notes 8.5.4 bzw. jetzt Notes 9 nocheinmal Verbesserungen am UI gemacht würden, war ich begeistert.

Für den Test habe ich eine komplett neue Umgebung installiert, ohne irgendeine Übernahme von Altdaten, damit sollten die besten Voraussetzungen geschaffen sein, dass Notes 9 sein volles Potential ausspielen kann.

Der Startschirm von Notes sieht auch wirklich sehr gut aus. Die reduzierte Farbwahl und die Fonts sehen wirklich sehr stimmig aus.



Auch die Mailansicht sieht auf den ersten Blick sehr ansprechend aus und erzeugt ein starkes ich will das so bald wie möglich auf meinem Arbeitsrechner haben .



Aber all diese Dinge haben auch schon in 8.5.3 schon ziemlich gut ausgesehen und leider hat die IBM es versäumt das wichtigste zu machen. Die Dinge in Notes die bisher schon total veraltet und vom Design inkosistent waren auf das Design von 8.5.3 oder 9 zu heben. In diesem Bereich versagt Notes 9 völlig. Eher ist es so, dass neue Inkosistenzen dazu gekommen sind.

Und bei diesen Dingen im alten Design handelt es sich nicht etwa um wirklich selten verwendete Features. Hier ein paar Beispiele:



Der Öffnen Dialog eine sehr of verwendete Funktion sieht immer noch weitgehend wie in Notes 7 aus. Die Fensterdekorationen und auch der Hinweis für die Vergrösserung des Fensters sind für Windows 7 vollkommen untypisch. Die Icons passen überhaupt nicht zum Rest des Clients. Die Knöpfe sehen ziemlich nach Windows 98 aus.

Übrigens im Designer wurde der selbe Dialog gegen einen neuen ausgetauscht, der nicht nur eine Windows 7 Fensterdekoration sondern auch die richtigen Knöpfe und auch ganz andere Icons für die Anwendungen und Ordner verwendet. Man muss aber sagen, dass auch diese Icons noch im 8.x Gewand sind und von der Farbe nicht zu Notes 9 passen :-( Wie viel Aufwand wäre es wohl gewesen diesen Dialog ohne Workingset Rubrik auch im Client zu verwenden.


Super konsistent sind auch die Beschreibungen ("On My Computer" vs. "local").


Fast noch schlimmer, der Passwortdialog von Lotus Notes der ebenfalls schon lange nicht mehr neu designed wurde.



Dieser Dialog ist die erste Visitenkarte die jeder Anwender bei der Verwendung von Notes bekommt. Leider vermittelt dieser Dialog und vor allem auch der Schlüsselring ein für das Jahr 2012 unerträgliches Windows 98 Feeling.

Alle Dialogboxen in Notes verwenden total unterschiedliche UI Widgetsets.Hier mal eine kurze Zusammenstellung was die UI Designer der IBM so an verschiedenen Buttonstilen zu bieten haben.

 
 


Es kann doch nicht sein, dass ein und die selbe Awendung vier verschiedene Stile für normale Schaltflächen in Dialogen (In normalen Notesmasken wird natürlich wieder eine andere Optik benützt) verwenden muss. Bevor man das bereits gute Design der Notes PIM CA's wieder komplett überarbeitet wäre es doch mal an der Zeit gewesen, eventuell alte Dialoge an das aktuelle Design anzupassen. Übrigens wenn man für die Schaltflächen die Widgets vom Operating System verwenden würde, wie in den Eclipseteilen der Anwendung, dann hätte man automatisch immer einheitliche Schaltflächen und diese würden auch immer automatisch nativ aussehen.

Das selbe gilt natürlich für alle anderen UI Elemente genauso. z.B. für die Checkboxen.

Einmal richtig, wie es unter Windows 7 aussehen soll.

Dann wieder im Stil von Windows 98 und das nicht etwa an einer ganz anderen Stelle sondern im selben Einstellungsdialog von Notes 9!

Ebenfalls unverständlich die schon unter Notes 8 wie ein Fremdkörper wirkende Follow Up Ansicht, die bei uns in der Firma sehr gerne verwendet wird, wurde nicht aktualisiert. Wie viel Aufwand wäre das wohl gewesen (hochgerechnet mit testen und übersetzen vielleicht 1 Mannwoche).


So passen halt weder die Schriftarten, noch die Aktionsleiste noch die Spaltenköpfe noch das generelle Design der Ansicht zum neuen bzw. auch nicht zum 8.x.x Inbox design.

Das in der Maildatenbank für die Follow Up Funktion unterschiedliche Symbole für die Darstellung der selben Priorität verwendet werden, ist da nur noch die Spitze des Eisbergs.

z.B. im Dialog zur Erstellung eines Follow Ups
 z.B. in der Inbox View


Sollte doch normal eine Bildressource sein und dann überall gleich aussehen oder nicht?

Auch uralte Bugs bei der Fontauswahl wie z.B. SPR KSOR/USEJ3 im Standardclient sind in Notes 9 noch immer nicht gefixt.

Man könnte diesen Rant jetzt ewig fortsetzen, aber das erspare ich mir. Als Resumee bleibt Notes 9 sieht auf den ersten Blick fantastisch aus, aber leider hat die IBM wieder nur die Komponenten die bereits unter Notes 8 Standard sehr gut ausgesehen haben verbessert. Die anderen Komponenten sehen nach wie vor wie in Notes 7 aus und werden berechtigterweise von Endbenutzern sehr häufig kritisiert.

 P.S. Ich bin nach wie vor der Meinung, dass IBM Notes eine gute Software ist, aber leider wird nie dieser letzte Aufwand betrieben um die ganzen Ecken und Kanten abzuschleifen die derzeit verhindern, dass Notes ein von Anwendern gliebtes Programm wird.


Für weitere Infos zur neuen Version schauen Sie auch auf meine Übersicht über alle Postings zum Thema Notes/Domino 9
ad