Archive for: ‘März 2013’

Lotus Notes Clients stürzt beim Replizieren ab

18. März 2013 Posted by Manfred Meise

Es gibt Tage (wie diesen) an dem ich meinen Lotus Notes Client hasse. Habe ich doch soeben ein Dokument in einer lokalen Datenbank bearbeitet und gespeichert. Danach wollte ich Datenbank mit meinem Server replizieren..... Crash ! Mein Lotus Notes Client stürzt ab. Dieses Verhalten lässt sich sogar reproduzieren: beim Replizieren einer beliebigen Datenbank stürzt mein Client reproduzierbar ab. Leider sind die erstellten Crash-Dumps (obwohl vorsorglich aktiviert) vollkommen nutzlos (Dateien ohne Inhalt : 0kB groß).

Ein vollständiger Windows Neustart scheint anfangs Besserung zu versprechen (der Absturz beim Replizieren ließ einen Augenblick auf sich warten). Nun schien guter Rat teuer: Knowledgebase Einträge der IBM verwiesen lediglich auf einzelne Datenbanken, bei denen dieses Verhalten auftritt.

Doch nachgedacht und als Ursache eine fehlerhafte Replikatorseite in der Arbeitsumgebung in Betracht gezogen! Deshalb habe ich eine neue Arbeitsumgebung (mit den gleichen Daten wie bisher) erstellt (keine Kopie des Dokumentes !!!!) und aktiviert. Und siehe da: Alles im Grünes Bereich. Mein Lotus Notes Client repliziert wieder für mich. Nun kann ich wieder anfangen mich meiner eigentlichen Aufgabe zu widmen.

Lotus Notes Clients stürzt beim Replizieren ab

18. März 2013 Posted by Manfred Meise

Es gibt Tage (wie diesen) an dem ich meinen Lotus Notes Client hasse. Habe ich doch soeben ein Dokument in einer lokalen Datenbank bearbeitet und gespeichert. Danach wollte ich Datenbank mit meinem Server replizieren..... Crash ! Mein Lotus Notes Client stürzt ab. Dieses Verhalten lässt sich sogar reproduzieren: beim Replizieren einer beliebigen Datenbank stürzt mein Client reproduzierbar ab. Leider sind die erstellten Crash-Dumps (obwohl vorsorglich aktiviert) vollkommen nutzlos (Dateien ohne Inhalt : 0kB groß).

Ein vollständiger Windows Neustart scheint anfangs Besserung zu versprechen (der Absturz beim Replizieren ließ einen Augenblick auf sich warten). Nun schien guter Rat teuer: Knowledgebase Einträge der IBM verwiesen lediglich auf einzelne Datenbanken, bei denen dieses Verhalten auftritt.

Doch nachgedacht und als Ursache eine fehlerhafte Replikatorseite in der Arbeitsumgebung in Betracht gezogen! Deshalb habe ich eine neue Arbeitsumgebung (mit den gleichen Daten wie beisher) erstellt (keine Kopie des Dokumentes !!!!) und aktiviert. Und siehe da: Alles im Grünes Bereich. Mein Lotus Notes Client repliziert wieder für mich. Nun kann ich wieder anfangen mich meiner eigentlichen Aufgabe zu widmen.

Lotus Notes Clients stĂĽrzt beim Replizieren ab

18. März 2013 Posted by Manfred Meise

Es gibt Tage (wie diesen) an dem ich meinen Lotus Notes Client hasse. Habe ich doch soeben ein Dokument in einer lokalen Datenbank bearbeitet und gespeichert. Danach wollte ich Datenbank mit meinem Server replizieren..... Crash ! Mein Lotus Notes Client stürzt ab. Dieses Verhalten lässt sich sogar reproduzieren: beim Replizieren einer beliebigen Datenbank stürzt mein Client reproduzierbar ab. Leider sind die erstellten Crash-Dumps (obwohl vorsorglich aktiviert) vollkommen nutzlos (Dateien ohne Inhalt : 0kB groß).

Ein vollständiger Windows Neustart scheint anfangs Besserung zu versprechen (der Absturz beim Replizieren ließ einen Augenblick auf sich warten). Nun schien guter Rat teuer: Knowledgebase Einträge der IBM verwiesen lediglich auf einzelne Datenbanken, bei denen dieses Verhalten auftritt.

Doch nachgedacht und als Ursache eine fehlerhafte Replikatorseite in der Arbeitsumgebung in Betracht gezogen! Deshalb habe ich eine neue Arbeitsumgebung (mit den gleichen Daten wie bisher) erstellt (keine Kopie des Dokumentes !!!!) und aktiviert. Und siehe da: Alles im GrĂĽnes Bereich. Mein Lotus Notes Client repliziert wieder fĂĽr mich. Nun kann ich wieder anfangen mich meiner eigentlichen Aufgabe zu widmen.

“Object variable not set” beim Beenden eines Agenten – Die Rache mangelnder Fehlerbehandlung

18. März 2013 Posted by Manfred Meise

Jüngst habe ich eine Menge Zeit für die Fehlersuche bei einem Agenten (welcher zahlreich eigene Klassen nutzt) verwendet. Dieser erzeugte (in einzelnen seltenen Fällen) einen Laufzeitfehler "Object variable not" - wer kennt ihn nicht?.... Offensichtlich eine Stelle Code, bei der schlampig programmiert wurde - doch wo? Nach intensiver Analyse stellt sich heraus, dass dieser Fehler nach dem letzten ausführbaren Statement ("Exit Sub" im Terminate Event) des Agenten generiert wurde. Schnell ist mir klar: Das kann nur ein Destructor ("Sub Delete") einer eigenen Klasse sein - doch welcher?

Das Analyseergebnis (in vereinfachter Form) zeigt den Übeltäter:

 
Option
Public
Option
Declare
%Include
"LsConst.lss"
Class
myClass
    Private m_doc As NotesDocument
    Sub New (doc As NotesDocument)
            Set Me.m_doc = doc
    End Sub
    Sub Delete
            Call Me.m_doc.Save(True, False)        
    End Sub
End
Class
Sub
Initialize
    Dim objMyClass As MyClass
    Set objMyClass = New MyClass (Nothing)
End
Sub


Hier kann es (durch verschiedene Ursachen) geschehen, dass das bei der Instanziierung übergebene NotesDocument beim Zerstören eines Objektes der Klasse nicht mehr existiert.

Hätte ich hier

1. Konservativ codiert (Prüfung ob ein vermutetes Objekt auch vorhanden ist, bevor man darauf zugreift)
und/oder
2. Fehlerbehandlung in jede Routine, sowie Methoden von Klassen

eingebaut, dann wird der Umfang des Codes bei einfachen Funktionen zwar erheblich größer, doch auch die Fehlersuche ganz einfach.

 
Option
Public
Option
Declare

%Include
"LsConst.lss"
Class
myClass
    Private m_doc As NotesDocument
    Sub New (doc As NotesDocument)
            On Error GoTo ErrorBubble        
            Set Me.m_doc = doc
SingleExit:
            Exit Sub
            '......................................................................................................        
ErrorBubble:        
            Error Err, Error & Chr(13) & { --> in } & TypeName(Me) & {.} & GetThreadInfo (LSI_THREAD_PROC) &  { : } & Erl        
            Resume SingleExit
    End Sub
    Sub Delete
            On Error GoTo ErrorBubble
            If Not (Me.m_doc Is Nothing) Then Call Me.m_doc.Save(True, False)        'Konservative Programmierung
            Call Me.m_doc.Save(True, False)                                                'Riskante Programmierung
SingleExit:
            Exit Sub
            '......................................................................................................        
ErrorBubble:        
            Error Err, Error & Chr(13) & { --> in } & TypeName(Me) & {.} & GetThreadInfo (LSI_THREAD_PROC) &  { : } & Erl        
            Resume SingleExit
    End Sub
End
Class
Sub
Initialize
    On Error GoTo ErrorBubble
    Dim objMyClass As MyClass
    Set objMyClass = New MyClass (Nothing)
SingleExit:
    Exit Sub
    '......................................................................................................        
ErrorBubble:        
    Error Err, Error & Chr(13) & { --> in } & GetThreadInfo (LSI_THREAD_PROC) &  { : } & Erl        
    Resume SingleExit
End
Sub


Image:"Object variable not set" beim Beenden eines Agenten - Die Rache mangelnder Fehlerbehandlung
Diese Fehlermeldung weist auf die Zeile 28 der Methode "Delete" in Klasse "MyClass", welche in Zeile 11 der Initialize Methode des Agenten ausgelöst wurde.

Also: Stets Fehlerbehandlungen einbauen (im Beispiel ein simples "Bubble up" Prinzip, das Fehler stufenweise bis an die oberste Aufruferebene zurückliefert). Man tut sich selbst etwas gutes.

“Object variable not set” beim Beenden eines Agenten – Die Rache mangelnder Fehlerbehandlung

18. März 2013 Posted by Manfred Meise

Jüngst habe ich eine Menge Zeit für die Fehlersuche bei einem Agenten (welcher zahlreich eigene Klassen nutzt) verwendet. Dieser erzeugte (in einzelnen seltenen Fällen) einen Laufzeitfehler "Object variable not" - wer kennt ihn nicht?.... Offensichtlich eine Stelle Code, bei der schlampig programmiert wurde - doch wo? Nach intensiver Analyse stellt sich heraus, dass dieser Fehler nach dem letzten ausführbaren Statement ("Exit Sub" im Terminate Event) des Agenten generiert wurde. Schnell ist mir klar: Das kann nur ein Destructor ("Sub Delete") einer eigenen Klasse sein - doch welcher?

Das Analyseergebnis (in vereinfachter Form) zeigt den Übeltäter:

 
Option Public
Option Declare
%Include "LsConst.lss"
Class myClass
        Private m_doc As NotesDocument
        Sub New (doc As NotesDocument)
                Set Me.m_doc = doc
        End Sub
        Sub Delete
                Call Me.m_doc.Save(True, False)        
        End Sub
End Class
Sub Initialize
        Dim objMyClass As MyClass
        Set objMyClass = New MyClass (Nothing)
End Sub


Hier kann es (durch verschiedene Ursachen) geschehen, dass das bei der Instanziierung übergebene NotesDocument beim Zerstören eines Objektes der Klasse nicht mehr existiert.

Hätte ich hier

1. Konservativ codiert (Prüfung ob ein vermutetes Objekt auch vorhanden ist, bevor man darauf zugreift)
und/oder
2. Fehlerbehandlung in jede Routine, sowie Methoden von Klassen

eingebaut, dann wird der Umfang des Codes bei einfachen Funktionen zwar erheblich größer, doch auch die Fehlersuche ganz einfach.

 
Option Public
Option Declare

%Include "LsConst.lss"
Class myClass
        Private m_doc As NotesDocument
        Sub New (doc As NotesDocument)
                On Error GoTo ErrorBubble        
                Set Me.m_doc = doc
SingleExit:
                Exit Sub
                '......................................................................................................        
ErrorBubble:        
                Error Err, Error & Chr(13) & { --> in } & TypeName(Me) & {.} & GetThreadInfo (LSI_THREAD_PROC) &  { : } & Erl        
                Resume SingleExit
        End Sub
        Sub Delete
                On Error GoTo ErrorBubble
                If Not (Me.m_doc Is Nothing) Then Call Me.m_doc.Save(True, False)        'Konservative Programmierung
                Call Me.m_doc.Save(True, False)                                                'Riskante Programmierung
SingleExit:
                Exit Sub
                '......................................................................................................        
ErrorBubble:        
                Error Err, Error & Chr(13) & { --> in } & TypeName(Me) & {.} & GetThreadInfo (LSI_THREAD_PROC) &  { : } & Erl        
                Resume SingleExit
        End Sub
End Class
Sub Initialize
        On Error GoTo ErrorBubble
        Dim objMyClass As MyClass
        Set objMyClass = New MyClass (Nothing)
SingleExit:
        Exit Sub
        '......................................................................................................        
ErrorBubble:        
        Error Err, Error & Chr(13) & { --> in } & GetThreadInfo (LSI_THREAD_PROC) &  { : } & Erl        
        Resume SingleExit
End Sub


Image:"Object variable not set" beim Beenden eines Agenten - Die Rache mangelnder Fehlerbehandlung
Diese Fehlermeldung weist auf die Zeile 28 der Methode "Delete" in Klasse "MyClass", welche in Zeile 11 der Initialize Methode des Agenten ausgelöst wurde.

Also: Stets Fehlerbehandlungen einbauen (im Beispiel ein simples "Bubble up" Prinzip, dass Fehler stufenweise bis an den oberste Aufruferebene zurückliefert). Man tut sich selbst etwas gutes.

“Object variable not set” beim Beenden eines Agenten – Die Rache mangelnder Fehlerbehandlung

18. März 2013 Posted by Manfred Meise

Jüngst habe ich eine Menge Zeit für die Fehlersuche bei einem Agenten (welcher zahlreich eigene Klassen nutzt) verwendet. Dieser erzeugte (in einzelnen seltenen Fällen) einen Laufzeitfehler "Object variable not" - wer kennt ihn nicht?.... Offensichtlich eine Stelle Code, bei der schlampig programmiert wurde - doch wo? Nach intensiver Analyse stellt sich heraus, dass dieser Fehler nach dem letzten ausführbaren Statement ("Exit Sub" im Terminate Event) des Agenten generiert wurde. Schnell ist mir klar: Das kann nur ein Destructor ("Sub Delete") einer eigenen Klasse sein - doch welcher?

Das Analyseergebnis (in vereinfachter Form) zeigt den Übeltäter:

 
Option
Public
Option
Declare
%Include
"LsConst.lss"
Class
myClass
    Private m_doc As NotesDocument
    Sub New (doc As NotesDocument)
            Set Me.m_doc = doc
    End Sub
    Sub Delete
            Call Me.m_doc.Save(True, False)        
    End Sub
End
Class
Sub
Initialize
    Dim objMyClass As MyClass
    Set objMyClass = New MyClass (Nothing)
End
Sub


Hier kann es (durch verschiedene Ursachen) geschehen, dass das bei der Instanziierung übergebene NotesDocument beim Zerstören eines Objektes der Klasse nicht mehr existiert.

Hätte ich hier

1. Konservativ codiert (Prüfung ob ein vermutetes Objekt auch vorhanden ist, bevor man darauf zugreift)
und/oder
2. Fehlerbehandlung in jede Routine, sowie Methoden von Klassen

eingebaut, dann wird der Umfang des Codes bei einfachen Funktionen zwar erheblich größer, doch auch die Fehlersuche ganz einfach.

 
Option
Public
Option
Declare

%Include
"LsConst.lss"
Class
myClass
    Private m_doc As NotesDocument
    Sub New (doc As NotesDocument)
            On Error GoTo ErrorBubble        
            Set Me.m_doc = doc
SingleExit:
            Exit Sub
            '......................................................................................................        
ErrorBubble:        
            Error Err, Error & Chr(13) & { --> in } & TypeName(Me) & {.} & GetThreadInfo (LSI_THREAD_PROC) &  { : } & Erl        
            Resume SingleExit
    End Sub
    Sub Delete
            On Error GoTo ErrorBubble
            If Not (Me.m_doc Is Nothing) Then Call Me.m_doc.Save(True, False)        'Konservative Programmierung
            Call Me.m_doc.Save(True, False)                                                'Riskante Programmierung
SingleExit:
            Exit Sub
            '......................................................................................................        
ErrorBubble:        
            Error Err, Error & Chr(13) & { --> in } & TypeName(Me) & {.} & GetThreadInfo (LSI_THREAD_PROC) &  { : } & Erl        
            Resume SingleExit
    End Sub
End
Class
Sub
Initialize
    On Error GoTo ErrorBubble
    Dim objMyClass As MyClass
    Set objMyClass = New MyClass (Nothing)
SingleExit:
    Exit Sub
    '......................................................................................................        
ErrorBubble:        
    Error Err, Error & Chr(13) & { --> in } & GetThreadInfo (LSI_THREAD_PROC) &  { : } & Erl        
    Resume SingleExit
End
Sub


Image:"Object variable not set" beim Beenden eines Agenten - Die Rache mangelnder Fehlerbehandlung
Diese Fehlermeldung weist auf die Zeile 28 der Methode "Delete" in Klasse "MyClass", welche in Zeile 11 der Initialize Methode des Agenten ausgelöst wurde.

Also: Stets Fehlerbehandlungen einbauen (im Beispiel ein simples "Bubble up" Prinzip, das Fehler stufenweise bis an die oberste Aufruferebene zurückliefert). Man tut sich selbst etwas gutes.

“Object variable not set” beim Beenden eines Agenten – Die Rache mangelnder Fehlerbehandlung

18. März 2013 Posted by Manfred Meise

Jüngst habe ich eine Menge Zeit für die Fehlersuche bei einem Agenten (welcher zahlreich eigene Klassen nutzt) verwendet. Dieser erzeugte (in einzelnen seltenen Fällen) einen Laufzeitfehler "Object variable not" - wer kennt ihn nicht?.... Offensichtlich eine Stelle Code, bei der schlampig programmiert wurde - doch wo? Nach intensiver Analyse stellt sich heraus, dass dieser Fehler nach dem letzten ausführbaren Statement ("Exit Sub" im Terminate Event) des Agenten generiert wurde. Schnell ist mir klar: Das kann nur ein Destructor ("Sub Delete") einer eigenen Klasse sein - doch welcher?

Das Analyseergebnis (in vereinfachter Form) zeigt den Übeltäter:

 
Option
Public
Option
Declare
%Include
"LsConst.lss"
Class
myClass
    Private m_doc As NotesDocument
    Sub New (doc As NotesDocument)
            Set Me.m_doc = doc
    End Sub
    Sub Delete
            Call Me.m_doc.Save(True, False)        
    End Sub
End
Class
Sub
Initialize
    Dim objMyClass As MyClass
    Set objMyClass = New MyClass (Nothing)
End
Sub


Hier kann es (durch verschiedene Ursachen) geschehen, dass das bei der Instanziierung übergebene NotesDocument beim Zerstören eines Objektes der Klasse nicht mehr existiert.

Hätte ich hier

1. Konservativ codiert (PrĂĽfung ob ein vermutetes Objekt auch vorhanden ist, bevor man darauf zugreift)
und/oder
2. Fehlerbehandlung in jede Routine, sowie Methoden von Klassen

eingebaut, dann wird der Umfang des Codes bei einfachen Funktionen zwar erheblich größer, doch auch die Fehlersuche ganz einfach.

 
Option
Public
Option
Declare

%Include
"LsConst.lss"
Class
myClass
    Private m_doc As NotesDocument
    Sub New (doc As NotesDocument)
            On Error GoTo ErrorBubble        
            Set Me.m_doc = doc
SingleExit:
            Exit Sub
            '......................................................................................................        
ErrorBubble:        
            Error Err, Error & Chr(13) & { --> in } & TypeName(Me) & {.} & GetThreadInfo (LSI_THREAD_PROC) &  { : } & Erl        
            Resume SingleExit
    End Sub
    Sub Delete
            On Error GoTo ErrorBubble
            If Not (Me.m_doc Is Nothing) Then Call Me.m_doc.Save(True, False)        'Konservative Programmierung
            Call Me.m_doc.Save(True, False)                                                'Riskante Programmierung
SingleExit:
            Exit Sub
            '......................................................................................................        
ErrorBubble:        
            Error Err, Error & Chr(13) & { --> in } & TypeName(Me) & {.} & GetThreadInfo (LSI_THREAD_PROC) &  { : } & Erl        
            Resume SingleExit
    End Sub
End
Class
Sub
Initialize
    On Error GoTo ErrorBubble
    Dim objMyClass As MyClass
    Set objMyClass = New MyClass (Nothing)
SingleExit:
    Exit Sub
    '......................................................................................................        
ErrorBubble:        
    Error Err, Error & Chr(13) & { --> in } & GetThreadInfo (LSI_THREAD_PROC) &  { : } & Erl        
    Resume SingleExit
End
Sub


Image:"Object variable not set" beim Beenden eines Agenten - Die Rache mangelnder Fehlerbehandlung
Diese Fehlermeldung weist auf die Zeile 28 der Methode "Delete" in Klasse "MyClass", welche in Zeile 11 der Initialize Methode des Agenten ausgelöst wurde.

Also: Stets Fehlerbehandlungen einbauen (im Beispiel ein simples "Bubble up" Prinzip, das Fehler stufenweise bis an die oberste Aufruferebene zurĂĽckliefert). Man tut sich selbst etwas gutes.

[DE] Meine 10 Thesen zu Social Business in Deutschland auf dem #Twittwoch [Video]

17. März 2013 Posted by StefanP.

Hier die Aufzeichnung vom Twittwoch, der während der CeBIT 2013 stattfand. Pia Kleine Wieskamp hatte mich eingeladen, einige Minuten zu sprechen, und ich habe gerne meine 10 Thesen zu Social Business in Deutschland vorgetragen:

Hier Link zu Foliensatz und zum orignären Blogartikel.

Lesenswert in diesem Zusammenhang der Beitrag vom geschätzten Gunnar Sohn: Warum deutsche Unternehmen anfangen sollten, mit dem Social Web zu spielen #twittwoch #cebit #webciety


Filed under: Deutsch Tagged: CeBIT, Germany, SocBiz

[DE] Wo bleibt der Aufschrei der angeblichen Netzelite zur Einstellung von Google Reader?

17. März 2013 Posted by StefanP.

Unfassbar (mal wieder), diese Arroganz vom Gutkonzern:

Vor wenigen Tagen hatte Google bekannt gegeben, mehrere Dienste einzustellen und damit einen Proteststurm ausgelöst, vor allem, weil Google Reader ab 1. Juli nicht mehr funktionieren wird. Der beliebte Dienst aggregiert von Nutzern abonnierte RSS-Feeds unter anderem von Nachrichtenseiten und erlaubt es, diese zentral zu lesen, zu verwalten und zwischen mehreren Geräten zu synchronisieren. Die Nutzung sei in letzter Zeit zu Gunster sozialer Netze stark zurückgegangen, argumentiert Google.

via Feedly empfängt Google-Reader-Nutzer mit offenen Armen | heise online.

Die Nutzung sei zu Gunsten sozialer Netze zurückgegange. Zu Gunsten von Google+, hätte Google wohl gerne. Wo bleibt eigentlich der Aufschrei der sonst ach so gegenüber anderen Diensten wie Facebook etc. kritischen vermeintlichen Netzelite? Auf dem Google-Auge ist die wohl eher blind.


Filed under: Deutsch Tagged: Google, RSS

How to activate and use the expressions view in the SSJS debugger

16. März 2013 Posted by Ralf Petter

The "expressions" view in the java debugger is one of the most valuable tool for debugging java code. With this view you can deeply inspect the values of all objects you are using in your code at runtime and you can even run methods on this object to get values not visible in the standard "variables" view. For example when you have a document object you can invoke getItemValueString on this object to get the value of a field from the document. Knowing this you will understand my disappointment when i first try the SSJS Debugger in Desinger 9, because it looks like there is no expression view in the java script debugger. But fortunately the view is only hidden and can be activated in Designer 9.

Go to the "Window->Show Eclipse View" menu and activate the "expressions" view.
After that we can use the expressions view to analyze the state of all objects available in our code when the execution is stopped at a breakpoint in the debugger.

For example we have the following serverside java script code in our xPage.

 
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);

The following screenshot shows what is possible with the expressions view in SSJS Debugger at a brekpoint inside the loop.

You can access every field from the doc Object with getItemValueString() or every java script variable. You can get every information from the session, for example the effective username running this script. From the session you can acces databases and from the databases you cann acess views and so on and on. The possibilitys are endless.

To add, change or remove expressions in the expression view simply right click the view and select the appropriate menu action. Or use the actions in the toolbar. When you hove over a toolbar icon you get a simple description of the action.

So i hope IBM will activate the expressions view by default in future service packs of Designer 9 so that every xPage developer knows about this great tool. A right click Option "Watch this expression" in the source editor would be nice too.

How to activate and use the expressions view in the SSJS debugger

16. März 2013 Posted by Ralf Petter

The "expressions" view in the java debugger is one of the most valuable tool for debugging java code. With this view you can deeply inspect the values of all objects you are using in your code at runtime and you can even run methods on this object to get values not visible in the standard "variables" view. For example when you have a document object you can invoke getItemValueString on this object to get the value of a field from the document. Knowing this you will understand my disappointment when i first try the SSJS Debugger in Desinger 9, because it looks like there is no expression view in the java script debugger. But fortunately the view is only hidden and can be activated in Designer 9.

Go to the "Window->Show Eclipse View" menu and activate the "expressions" view.
After that we can use the expressions view to analyze the state of all objects available in our code when the execution is stopped at a breakpoint in the debugger.

For example we have the following serverside java script code in our xPage.

 
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);

The following screenshot shows what is possible with the expressions view in SSJS Debugger at a brekpoint inside the loop.

You can access every field from the doc Object with getItemValueString() or every java script variable. You can get every information from the session, for example the effective username running this script. From the session you can acces databases and from the databases you cann acess views and so on and on. The possibilitys are endless.

To add, change or remove expressions in the expression view simply right click the view and select the appropriate menu action. Or use the actions in the toolbar. When you hove over a toolbar icon you get a simple description of the action.

So i hope IBM will activate the expressions view by default in future service packs of Designer 9 so that every xPage developer knows about this great tool. A right click Option "Watch this expression" in the source editor would be nice too.

Entwicklercamp 2013 – Responsive Web Design

15. März 2013 Posted by Super User

Das Entwicklercamp 2013 ist vorüber. Alle Teilnehmer haben einen reichhaltigen Korb an wertvollen Informationen mit nach Hause genommen.

Meine Präsentation zum Thema "Responsive Web Design" ist auf Slideshare zu finden.

Eine Demo Applikation kann unter der Apache 2.0 Lizenz heruntergeladen werden.

Wir danken Rudi Knegt für die tolle Organisation und Moderation des Camps und freuen uns schon auf das nächste Jahr.

IBM bekennt sich ausdrücklich zu Notes/Domino

15. März 2013 Posted by Manfred Dillmann

Martina Koederitz, Geschäftsführerin IBM Deutschland, bekennt sich in einem Interview von CIO auf Nachfrage eindeutig zu IBM Notes/Domino. Auf die Frage ob sie den Kunden garantieren kann, dass die Notes-Produktwelt auf Dauer weiter entwickelt und gepflegt wird, antwortet sie mit "Ja. Wir sind ja auch selbst ein großer Anwender." Quelle: Stefan Gebhardt Das ganze Interview vom 06.03.13 gibt es bei CIO.

DNUG Pavillon zur CeBIT 2013 – Präsentationen des Standforums sind verfügbar

14. März 2013 Posted by Roswitha Boldt

 

Der Fokus der Präsentationen lag auf dem kollaborativen Arbeitsplatz der Zukunft mit interessanten Integrationsszenarien rund um den Activity Stream. Integrative Aspekte standen auch im Vordergrund, als es um die Zusammenführung der verschiedenen Informationswelten in neuen oder bestehenden Business Anwendungen ging.

Bezug nehmend auf die wichtigsten Einsatzmöglichkeiten von Social Software in Unternehmen wurde den Besuchern deutlich, was Unternehmen heute erfolgreicher macht.  Anhand konkreter Kommunikationsapplikationen wurde zudem gezeigt, welchen Anforderungen moderne Kommunikationsmittel heute genügen müssen.

Moderator des Forums war auch in diesem Jahr Joachim Haydecker, Selbstständiger IT-Consultant und Mitglied im DNUG Beirat / der Leitung des Arbeitskreises Social Software & Knowledge Management.

Die Präsentationen stehen Interessenten zum Download zur Verfügung.
 

 

T-Mobile Germany rolls out BB 10 10.0.10.90

14. März 2013 Posted by Heiko Voigt

Finally !T-Mobile in Germany rolls out the first carrier-driven update for the BlackBerry Z10 device. From what I read so far, a lot of bug fixes and battery lieftime improvements are part of it.Looki ...