SlideShare uma empresa Scribd logo
1 de 39
UKLUG 2012 – Cardiff, Wales
Stop (de)bugging me!
UKLUG 2012 – Cardiff, Wales
Disclaimer
This session is only for people that
make errors. All others can leave.
Suggestions:
• Re-inventing your ideas (room 3)
• The DevAdmin Chimera (room 2)
UKLUG 2012 – Cardiff, Wales
Agenda
• Debuggers in Designer
• Java debugger
• SSJS debugger
• XPage Debug Toolbar
™
UKLUG 2012 – Cardiff, Wales
Who’s that guy anyway?
• Freelance consultant/ developer
• IBM Notes/ Domino
• XPages, web, client, mobile, Unplugged
• OpenNTF Contributor
• Auto Logins
• XPage Multiple File Uploader
• XPage Debug Toolbar
• IBM Champion
• XPages4Bootstrap.com
UKLUG 2012 – Cardiff, Wales
Debugging in Designer
• For Java & SSJS (as of Designer 9)
• Based on standards
• Java Platform Debugger Architecture (JPDA)
• ‘Remote’ debugging
• Enable on server
• IDE (Designer/ Eclipse) connects to Server on
specified port
UKLUG 2012 – Cardiff, Wales
Debugging in Designer
• Not recommended for productions servers
• Impacts performance & security
• Only 1 developer can connect at a time
• … but that’s not a problem
• … since we don’t debug applications on
production servers
Right?
UKLUG 2012 – Cardiff, Wales
Java debugger
• In Designer since 8.5
• Debug:
• Java classes
• Managed beans
• OSGi plugins
• Compiled XPages Java (Local/xsp folder)
UKLUG 2012 – Cardiff, Wales
Server Side JavaScript debugger
• New in Domino 9
• Configured and works (almost) the same as
the Java debugger
• Debug SSJS in
• XPages
• Custom controls
• SSJS libraries
UKLUG 2012 – Cardiff, Wales
Activating the debuggers - server
• Add configuration to notes.ini:
JavaEnableDebug=1
JavascriptEnableDebug=1
JavaDebugOptions=transport=dt_socket,server=y,suspend=n,address=8000
• Tip: if you click on the “Debug” icon in the
toolbar, you can copy-paste these settings
from there
Add this row only if you want to
debug SSJS (too)
UKLUG 2012 – Cardiff, Wales
Activating the debuggers - server
• Restart the server
• Watch for this:
• Port needs to be open(ed) in the firewall
• Works with local HTTP preview too
• Tip: If the local preview won’t start, try starting
the local HTTP task from a command prompt
• Run “nhttp preview” from your Notes folder
UKLUG 2012 – Cardiff, Wales
Activating the debugger - code
• Set breakpoints
• Right-click in gutter
• Add ‘debugger’ statement (SSJS)
• Don’t use this in Designer < 9 !
• Stop at first line of JavaScript
code
UKLUG 2012 – Cardiff, Wales
Starting a debug session
• Click the triangle next to the “bug” icon
(this is Designer 9, icon looks slightly different in 8.5)
• Select an existing configuration or click
“Manage…”
UKLUG 2012 – Cardiff, Wales
Starting a debug session - Java
IP Address of your server
Port that the Debugger listens on
Name for this configuration (can be any)
UKLUG 2012 – Cardiff, Wales
Starting a debug session - SSJS
UKLUG 2012 – Cardiff, Wales
• Demo
UKLUG 2012 – Cardiff, Wales
Debug perspective
• Designer automatically asks to open Debug perspective when it
suspends
• Breakpoint or ‘debugger’ statement in SSJS
• Change behaviour in Preferences > Run/Debug > Perspectives
• Tip: switch perspectives using Ctrl-F8 in Designer
UKLUG 2012 – Cardiff, Wales
Source not found?
UKLUG 2012 – Cardiff, Wales
Keyboard shortcuts
• F5 Step into
• F6 Step over
• F7 Step exit
• F8 Continue
• Strange issue with the F6 key
• With the default Designer/ Eclipse binding it doesn’t work
• If you create your own binding to F6 it does
• Do this in File > Preferences > Type “keys” in filter
F5 F6 F7F8
UKLUG 2012 – Cardiff, Wales
Conditional breakpoints
• Set breakpoint
• Right-click on breakpoint
• Click “Breakpoint properties”
UKLUG 2012 – Cardiff, Wales
Display view
• Window > Show Eclipse View > Display
• Run an expression in the context of a
breakpoint and view the result
• Only works with Java debugger
• With code completion
UKLUG 2012 – Cardiff, Wales
Expressions view
• Window > Show Eclipse View > Expressions
• Inspect the current state of objects
• 2 ways to add:
• Right-click on expression in ‘Display’ view
• Type in manually
UKLUG 2012 – Cardiff, Wales
From SSJS to Java
• You can debug Java code when you’re
debugging SSJS code
• But NOT using “Step into” (F5):
• It will only stop on breakpoints in the Java class
UKLUG 2012 – Cardiff, Wales
Disconnect
• When you’re done: disconnect your debugging
session
• Java debugger
• SSJS debugger
UKLUG 2012 – Cardiff, Wales
XPage Debug Toolbar
UKLUG 2012 – Cardiff, Wales
Background/ features
• Tool for XPage developers
• Free download from OpenNTF
• Or directly from GitHub
• Features:
• Log debug messages
• View contents of scopes
• Log file reader
• API Inspector
UKLUG 2012 – Cardiff, Wales
Installation
• 2 ways to install:
• Download from OpenNTF and copy to your
application
• Use the OpenNTF Import/ export tool
UKLUG 2012 – Cardiff, Wales
Installation
• Add the ccDebugToolbar custom control to
your XPage
• Add the (dBar) managed bean
• (optionally) Change the default settings using
custom control properties
• collapseTo
• defaultCollapsed
• color
UKLUG 2012 – Cardiff, Wales
Components
ccDebugToolbar Custom control
xpDebugToolbar SSJS library
eu.linqed.debugtoolbar.DebugToolbar Java class
eu.linqed.debugtoolbar.Message Java class
debugToolbarConsole XPage optional
debugToolbarErrorPage XPage optional
dBar Managed bean
Events View OpenLog integration
Event Form OpenLog integration
UKLUG 2012 – Cardiff, Wales
Scope contents
• Shows contents of
• applicationScope
• sessionScope
• viewScope
• requestScope
• Remove a variable
• Or clean an entire scope
• Modify values through the Inspector
UKLUG 2012 – Cardiff, Wales
Environment variables
• Information about the current:
• User
• Browser
• Server
• Database
• Request
• Java heap size
• Maximum heap size
• Allocated
• Used
• Free
UKLUG 2012 – Cardiff, Wales
Inspector
• View classes for controls on the current page
• And change them
• View any variable:
• Scoped variables
• Managed beans
• Any XPage runtime object
• Drill-down to see what value/ object is
returned
UKLUG 2012 – Cardiff, Wales
Messages
• Alternative to print() or _dump() functions
• No server console access needed
• Your messages only
• Makes your admin happy 
• Add messages using:
dBar.debug( “message” );
dBar.info( “message”);
dBar.warn( “message” );
dBar.error( “message” );
dBar.dump( <object> );
UKLUG 2012 – Cardiff, Wales
Messages
• Specify a context: dBar.info( “message”, “context” );
• dBar.error() function accepts ‘error’ objects:
try {
var doc:NotesDocument = null;
var id = doc.getUniversalID();
} catch (e) {
dBar.error(e);
}
• Add a divider to the messages list: dBar.addDivider();
UKLUG 2012 – Cardiff, Wales
Messages
• Add debug messages from Java:
DebugToolbar.get().info( “message” );
DebugToolbar.get().warn( “message” );
• Or catch an Exception
• DebugToolbar.get().error( e );
UKLUG 2012 – Cardiff, Wales
Log messages to documents
• Create documents for all dBar calls
• All required code already built-in
• Uses the OpenLog (form/fields) format
• Use the OpenLog database to view them
• Log level can be set: log only messages with a
certain log level (or ‘higher’)
• warn = warn + error
• debug = debug + info + warn + error
UKLUG 2012 – Cardiff, Wales
Log messages to documents
• Configure using managed properties
• logDbPath current, logdb.nsf
• logEnabled true, false
• logLevel debug, info, warn, error
• Logging will continue even if the toolbar isn’t
displayed
UKLUG 2012 – Cardiff, Wales
Best practices
• Add [debug] role to the ACL
• Set loaded property of the ccDebugToolbar only for
[debug] role:
loaded=“#,javascript:context.getUser().getRoles().contains(‘*debug’+-”
• Enable logging to documents (errors/ warnings only)
logLevel = “warn”
• No design changes needed when moving to production
UKLUG 2012 – Cardiff, Wales
Resources
• XPage Debug Toolbar on OpenNTF & GitHub
http://www.openntf.org/internal/home.nsf/project.xsp?action=ope
nDocument&name=XPage%20Debug%20Toolbar
https://github.com/markleusink/XpageDebugToolbar
• OpenNTF Import/ export tool
http://www.openntf.org/internal/home.nsf/project.xsp?action=ope
nDocument&name=Import%20and%20Export%20for%20Designer
• Xpages OpenLog Logger
http://www.openntf.org/internal/home.nsf/project.xsp?action=ope
nDocument&name=XPages%20OpenLog%20Logger
• OpenLog
http://www.openntf.org/internal/home.nsf/project.xsp?action=ope
nDocument&name=OpenLog
UKLUG 2012 – Cardiff, Wales
Thank you !
• Twitter: markleusink
• Skype: mark_leusink
• Blog: http://linqed.eu
• Email: m.leusink@linqed.eu
• http://www.bootstrap4xpages.com

Mais conteúdo relacionado

Mais procurados

JavaFX JumpStart @JavaOne 2016
JavaFX JumpStart @JavaOne 2016JavaFX JumpStart @JavaOne 2016
JavaFX JumpStart @JavaOne 2016Hendrik Ebbers
 
Stopping the Rot - Putting Legacy C++ Under Test
Stopping the Rot - Putting Legacy C++ Under TestStopping the Rot - Putting Legacy C++ Under Test
Stopping the Rot - Putting Legacy C++ Under TestSeb Rose
 
vJUG - The JavaFX Ecosystem
vJUG - The JavaFX EcosystemvJUG - The JavaFX Ecosystem
vJUG - The JavaFX EcosystemAndres Almiray
 
Java script Examples by Som
Java script Examples by Som  Java script Examples by Som
Java script Examples by Som Som Prakash Rai
 
3 Ways to test your ColdFusion API - 2017 Adobe CF Summit
3 Ways to test your ColdFusion API - 2017 Adobe CF Summit3 Ways to test your ColdFusion API - 2017 Adobe CF Summit
3 Ways to test your ColdFusion API - 2017 Adobe CF SummitOrtus Solutions, Corp
 
Java Intro: Unit1. Hello World
Java Intro: Unit1. Hello WorldJava Intro: Unit1. Hello World
Java Intro: Unit1. Hello WorldYakov Fain
 
Code quality par Simone Civetta
Code quality par Simone CivettaCode quality par Simone Civetta
Code quality par Simone CivettaCocoaHeads France
 
Stop (de)bugging me!
Stop (de)bugging me!Stop (de)bugging me!
Stop (de)bugging me!Mark Leusink
 
JavaOne - The JavaFX Community and Ecosystem
JavaOne - The JavaFX Community and EcosystemJavaOne - The JavaFX Community and Ecosystem
JavaOne - The JavaFX Community and EcosystemAlexander Casall
 
KraQA #29 - Component level testing of react app, using enzyme
KraQA #29 - Component level testing of react app, using enzymeKraQA #29 - Component level testing of react app, using enzyme
KraQA #29 - Component level testing of react app, using enzymekraqa
 
DataFX 8 (JavaOne 2014)
DataFX 8 (JavaOne 2014)DataFX 8 (JavaOne 2014)
DataFX 8 (JavaOne 2014)Hendrik Ebbers
 
JavaFX in Action (devoxx'16)
JavaFX in Action (devoxx'16)JavaFX in Action (devoxx'16)
JavaFX in Action (devoxx'16)Alexander Casall
 
Java11 New Features
Java11 New FeaturesJava11 New Features
Java11 New FeaturesHaim Michael
 
ServiceNow Knowledge11 Advanced Scripting & Debugging Lab
ServiceNow Knowledge11 Advanced Scripting & Debugging LabServiceNow Knowledge11 Advanced Scripting & Debugging Lab
ServiceNow Knowledge11 Advanced Scripting & Debugging LabJohn Roberts
 
Dynamic Groovy Edges
Dynamic Groovy EdgesDynamic Groovy Edges
Dynamic Groovy EdgesJimmy Ray
 
A Taste of Pharo 7.0
A Taste of Pharo 7.0A Taste of Pharo 7.0
A Taste of Pharo 7.0ESUG
 

Mais procurados (20)

JavaFX JumpStart @JavaOne 2016
JavaFX JumpStart @JavaOne 2016JavaFX JumpStart @JavaOne 2016
JavaFX JumpStart @JavaOne 2016
 
JavaFX Pitfalls
JavaFX PitfallsJavaFX Pitfalls
JavaFX Pitfalls
 
Stopping the Rot - Putting Legacy C++ Under Test
Stopping the Rot - Putting Legacy C++ Under TestStopping the Rot - Putting Legacy C++ Under Test
Stopping the Rot - Putting Legacy C++ Under Test
 
vJUG - The JavaFX Ecosystem
vJUG - The JavaFX EcosystemvJUG - The JavaFX Ecosystem
vJUG - The JavaFX Ecosystem
 
Java script Examples by Som
Java script Examples by Som  Java script Examples by Som
Java script Examples by Som
 
3 Ways to test your ColdFusion API - 2017 Adobe CF Summit
3 Ways to test your ColdFusion API - 2017 Adobe CF Summit3 Ways to test your ColdFusion API - 2017 Adobe CF Summit
3 Ways to test your ColdFusion API - 2017 Adobe CF Summit
 
Java Intro: Unit1. Hello World
Java Intro: Unit1. Hello WorldJava Intro: Unit1. Hello World
Java Intro: Unit1. Hello World
 
Code quality par Simone Civetta
Code quality par Simone CivettaCode quality par Simone Civetta
Code quality par Simone Civetta
 
Stop (de)bugging me!
Stop (de)bugging me!Stop (de)bugging me!
Stop (de)bugging me!
 
Dependency injection
Dependency injectionDependency injection
Dependency injection
 
JavaOne - The JavaFX Community and Ecosystem
JavaOne - The JavaFX Community and EcosystemJavaOne - The JavaFX Community and Ecosystem
JavaOne - The JavaFX Community and Ecosystem
 
KraQA #29 - Component level testing of react app, using enzyme
KraQA #29 - Component level testing of react app, using enzymeKraQA #29 - Component level testing of react app, using enzyme
KraQA #29 - Component level testing of react app, using enzyme
 
DataFX 8 (JavaOne 2014)
DataFX 8 (JavaOne 2014)DataFX 8 (JavaOne 2014)
DataFX 8 (JavaOne 2014)
 
JavaFX in Action (devoxx'16)
JavaFX in Action (devoxx'16)JavaFX in Action (devoxx'16)
JavaFX in Action (devoxx'16)
 
Apache DeltaSpike the CDI toolbox
Apache DeltaSpike the CDI toolboxApache DeltaSpike the CDI toolbox
Apache DeltaSpike the CDI toolbox
 
Java11 New Features
Java11 New FeaturesJava11 New Features
Java11 New Features
 
ServiceNow Knowledge11 Advanced Scripting & Debugging Lab
ServiceNow Knowledge11 Advanced Scripting & Debugging LabServiceNow Knowledge11 Advanced Scripting & Debugging Lab
ServiceNow Knowledge11 Advanced Scripting & Debugging Lab
 
Dynamic Groovy Edges
Dynamic Groovy EdgesDynamic Groovy Edges
Dynamic Groovy Edges
 
A Taste of Pharo 7.0
A Taste of Pharo 7.0A Taste of Pharo 7.0
A Taste of Pharo 7.0
 
EJB Part-1
EJB Part-1EJB Part-1
EJB Part-1
 

Semelhante a Stop (de)bugging me - ICON UK 2013

Ar*@!+$es to this. getting IBM connections to do what you want
Ar*@!+$es to this. getting IBM connections to do what you want Ar*@!+$es to this. getting IBM connections to do what you want
Ar*@!+$es to this. getting IBM connections to do what you want Mark Myers
 
How to generate code coverage reports in xcode with slather
How to generate code coverage reports in xcode with slatherHow to generate code coverage reports in xcode with slather
How to generate code coverage reports in xcode with slatherallanh0526
 
Improve Code Quality and Time to Market: 100% Cloud-Based Development Workflow
Improve Code Quality and Time to Market: 100% Cloud-Based Development WorkflowImprove Code Quality and Time to Market: 100% Cloud-Based Development Workflow
Improve Code Quality and Time to Market: 100% Cloud-Based Development WorkflowAcquia
 
Golang @ Tokopedia
Golang @ TokopediaGolang @ Tokopedia
Golang @ TokopediaQasim Zaidi
 
2.3 (Architecture) Moving to Managed Code
2.3   (Architecture) Moving to Managed Code2.3   (Architecture) Moving to Managed Code
2.3 (Architecture) Moving to Managed CodeMicro Focus
 
An XPager's Guide to Process Server-Side Jobs on Domino
An XPager's Guide to Process Server-Side Jobs on DominoAn XPager's Guide to Process Server-Side Jobs on Domino
An XPager's Guide to Process Server-Side Jobs on DominoFrank van der Linden
 
ICONUK 2013 - An XPager's Guide to Process Server-Side Jobs on IBM® Domino®
ICONUK 2013 - An XPager's Guide to Process Server-Side Jobs on IBM® Domino®ICONUK 2013 - An XPager's Guide to Process Server-Side Jobs on IBM® Domino®
ICONUK 2013 - An XPager's Guide to Process Server-Side Jobs on IBM® Domino®Serdar Basegmez
 
OpenDaylight Developers Experience 1.5: Eclipse Setup, HOT reload, future plans
OpenDaylight Developers Experience 1.5: Eclipse Setup, HOT reload, future plansOpenDaylight Developers Experience 1.5: Eclipse Setup, HOT reload, future plans
OpenDaylight Developers Experience 1.5: Eclipse Setup, HOT reload, future plansMichael Vorburger
 
Enterprise Strength Mobile JavaScript
Enterprise Strength Mobile JavaScriptEnterprise Strength Mobile JavaScript
Enterprise Strength Mobile JavaScriptTroy Miles
 
Next Step, Android Studio!
Next Step, Android Studio!Next Step, Android Studio!
Next Step, Android Studio!Édipo Souza
 
Gradle,the new build system for android
Gradle,the new build system for androidGradle,the new build system for android
Gradle,the new build system for androidzhang ghui
 
JavaFX - Sketch Board to Production
JavaFX - Sketch Board to ProductionJavaFX - Sketch Board to Production
JavaFX - Sketch Board to ProductionYoav Aharoni
 
Schneider Electric Scada Global Support Provides Troubleshooting and Technica...
Schneider Electric Scada Global Support Provides Troubleshooting and Technica...Schneider Electric Scada Global Support Provides Troubleshooting and Technica...
Schneider Electric Scada Global Support Provides Troubleshooting and Technica...Preeya Selvarajah
 
Magento Imagine 2011 - Magento Debugging - Erik Hansen, Classy Llama Studios
Magento Imagine 2011 - Magento Debugging - Erik Hansen, Classy Llama StudiosMagento Imagine 2011 - Magento Debugging - Erik Hansen, Classy Llama Studios
Magento Imagine 2011 - Magento Debugging - Erik Hansen, Classy Llama StudiosErik Hansen
 
Angular 2 overview
Angular 2 overviewAngular 2 overview
Angular 2 overviewJesse Warden
 
OpenDaylight Developer Experience 2.0
 OpenDaylight Developer Experience 2.0 OpenDaylight Developer Experience 2.0
OpenDaylight Developer Experience 2.0Michael Vorburger
 
NA Developer Day - Taking your COBOL apps to Net & JVM
NA Developer Day - Taking your COBOL apps to Net & JVM NA Developer Day - Taking your COBOL apps to Net & JVM
NA Developer Day - Taking your COBOL apps to Net & JVM Micro Focus
 

Semelhante a Stop (de)bugging me - ICON UK 2013 (20)

Ar*@!+$es to this. getting IBM connections to do what you want
Ar*@!+$es to this. getting IBM connections to do what you want Ar*@!+$es to this. getting IBM connections to do what you want
Ar*@!+$es to this. getting IBM connections to do what you want
 
How to generate code coverage reports in xcode with slather
How to generate code coverage reports in xcode with slatherHow to generate code coverage reports in xcode with slather
How to generate code coverage reports in xcode with slather
 
Improve Code Quality and Time to Market: 100% Cloud-Based Development Workflow
Improve Code Quality and Time to Market: 100% Cloud-Based Development WorkflowImprove Code Quality and Time to Market: 100% Cloud-Based Development Workflow
Improve Code Quality and Time to Market: 100% Cloud-Based Development Workflow
 
Golang @ Tokopedia
Golang @ TokopediaGolang @ Tokopedia
Golang @ Tokopedia
 
2.3 (Architecture) Moving to Managed Code
2.3   (Architecture) Moving to Managed Code2.3   (Architecture) Moving to Managed Code
2.3 (Architecture) Moving to Managed Code
 
An XPager's Guide to Process Server-Side Jobs on Domino
An XPager's Guide to Process Server-Side Jobs on DominoAn XPager's Guide to Process Server-Side Jobs on Domino
An XPager's Guide to Process Server-Side Jobs on Domino
 
ICONUK 2013 - An XPager's Guide to Process Server-Side Jobs on IBM® Domino®
ICONUK 2013 - An XPager's Guide to Process Server-Side Jobs on IBM® Domino®ICONUK 2013 - An XPager's Guide to Process Server-Side Jobs on IBM® Domino®
ICONUK 2013 - An XPager's Guide to Process Server-Side Jobs on IBM® Domino®
 
OpenDaylight Developers Experience 1.5: Eclipse Setup, HOT reload, future plans
OpenDaylight Developers Experience 1.5: Eclipse Setup, HOT reload, future plansOpenDaylight Developers Experience 1.5: Eclipse Setup, HOT reload, future plans
OpenDaylight Developers Experience 1.5: Eclipse Setup, HOT reload, future plans
 
Enterprise Strength Mobile JavaScript
Enterprise Strength Mobile JavaScriptEnterprise Strength Mobile JavaScript
Enterprise Strength Mobile JavaScript
 
Next Step, Android Studio!
Next Step, Android Studio!Next Step, Android Studio!
Next Step, Android Studio!
 
Gradle,the new build system for android
Gradle,the new build system for androidGradle,the new build system for android
Gradle,the new build system for android
 
JavaFX - Sketch Board to Production
JavaFX - Sketch Board to ProductionJavaFX - Sketch Board to Production
JavaFX - Sketch Board to Production
 
Schneider Electric Scada Global Support Provides Troubleshooting and Technica...
Schneider Electric Scada Global Support Provides Troubleshooting and Technica...Schneider Electric Scada Global Support Provides Troubleshooting and Technica...
Schneider Electric Scada Global Support Provides Troubleshooting and Technica...
 
Magento Imagine 2011 - Magento Debugging - Erik Hansen, Classy Llama Studios
Magento Imagine 2011 - Magento Debugging - Erik Hansen, Classy Llama StudiosMagento Imagine 2011 - Magento Debugging - Erik Hansen, Classy Llama Studios
Magento Imagine 2011 - Magento Debugging - Erik Hansen, Classy Llama Studios
 
tut0000021-hevery
tut0000021-heverytut0000021-hevery
tut0000021-hevery
 
tut0000021-hevery
tut0000021-heverytut0000021-hevery
tut0000021-hevery
 
Angular 2 overview
Angular 2 overviewAngular 2 overview
Angular 2 overview
 
OpenDaylight Developer Experience 2.0
 OpenDaylight Developer Experience 2.0 OpenDaylight Developer Experience 2.0
OpenDaylight Developer Experience 2.0
 
Plantilla oracle
Plantilla oraclePlantilla oracle
Plantilla oracle
 
NA Developer Day - Taking your COBOL apps to Net & JVM
NA Developer Day - Taking your COBOL apps to Net & JVM NA Developer Day - Taking your COBOL apps to Net & JVM
NA Developer Day - Taking your COBOL apps to Net & JVM
 

Mais de Mark Leusink

Now what can you really build with DQL and web components?
Now what can you really build with DQL and web components?Now what can you really build with DQL and web components?
Now what can you really build with DQL and web components?Mark Leusink
 
ICON UK 2016: Modernizing an IBM Notes applicaton using with AngularJS
ICON UK 2016: Modernizing an IBM Notes applicaton using with AngularJSICON UK 2016: Modernizing an IBM Notes applicaton using with AngularJS
ICON UK 2016: Modernizing an IBM Notes applicaton using with AngularJSMark Leusink
 
Creating mobile apps - an introduction to Ionic (Engage 2016)
Creating mobile apps - an introduction to Ionic (Engage 2016)Creating mobile apps - an introduction to Ionic (Engage 2016)
Creating mobile apps - an introduction to Ionic (Engage 2016)Mark Leusink
 
The future of web development write once, run everywhere with angular js an...
The future of web development   write once, run everywhere with angular js an...The future of web development   write once, run everywhere with angular js an...
The future of web development write once, run everywhere with angular js an...Mark Leusink
 
Escaping the yellow bubble - rewriting Domino using MongoDb and Angular
Escaping the yellow bubble - rewriting Domino using MongoDb and AngularEscaping the yellow bubble - rewriting Domino using MongoDb and Angular
Escaping the yellow bubble - rewriting Domino using MongoDb and AngularMark Leusink
 
A 20 minute introduction to AngularJS for XPage developers
A 20 minute introduction to AngularJS for XPage developersA 20 minute introduction to AngularJS for XPage developers
A 20 minute introduction to AngularJS for XPage developersMark Leusink
 
Bootstrap4XPages webinar
Bootstrap4XPages webinarBootstrap4XPages webinar
Bootstrap4XPages webinarMark Leusink
 
Get the best out of Bootstrap with Bootstrap4XPages - Engage 2014
Get the best out of Bootstrap with Bootstrap4XPages - Engage 2014Get the best out of Bootstrap with Bootstrap4XPages - Engage 2014
Get the best out of Bootstrap with Bootstrap4XPages - Engage 2014Mark Leusink
 
Get the best out of Bootstrap with Bootstrap4XPages (AD202)
Get the best out of Bootstrap with Bootstrap4XPages (AD202)Get the best out of Bootstrap with Bootstrap4XPages (AD202)
Get the best out of Bootstrap with Bootstrap4XPages (AD202)Mark Leusink
 
Bootstrap and XPages (DanNotes 2013)
Bootstrap and XPages (DanNotes 2013)Bootstrap and XPages (DanNotes 2013)
Bootstrap and XPages (DanNotes 2013)Mark Leusink
 
Introduction to Bootstrap (with XPages)
Introduction to Bootstrap (with XPages)Introduction to Bootstrap (with XPages)
Introduction to Bootstrap (with XPages)Mark Leusink
 

Mais de Mark Leusink (11)

Now what can you really build with DQL and web components?
Now what can you really build with DQL and web components?Now what can you really build with DQL and web components?
Now what can you really build with DQL and web components?
 
ICON UK 2016: Modernizing an IBM Notes applicaton using with AngularJS
ICON UK 2016: Modernizing an IBM Notes applicaton using with AngularJSICON UK 2016: Modernizing an IBM Notes applicaton using with AngularJS
ICON UK 2016: Modernizing an IBM Notes applicaton using with AngularJS
 
Creating mobile apps - an introduction to Ionic (Engage 2016)
Creating mobile apps - an introduction to Ionic (Engage 2016)Creating mobile apps - an introduction to Ionic (Engage 2016)
Creating mobile apps - an introduction to Ionic (Engage 2016)
 
The future of web development write once, run everywhere with angular js an...
The future of web development   write once, run everywhere with angular js an...The future of web development   write once, run everywhere with angular js an...
The future of web development write once, run everywhere with angular js an...
 
Escaping the yellow bubble - rewriting Domino using MongoDb and Angular
Escaping the yellow bubble - rewriting Domino using MongoDb and AngularEscaping the yellow bubble - rewriting Domino using MongoDb and Angular
Escaping the yellow bubble - rewriting Domino using MongoDb and Angular
 
A 20 minute introduction to AngularJS for XPage developers
A 20 minute introduction to AngularJS for XPage developersA 20 minute introduction to AngularJS for XPage developers
A 20 minute introduction to AngularJS for XPage developers
 
Bootstrap4XPages webinar
Bootstrap4XPages webinarBootstrap4XPages webinar
Bootstrap4XPages webinar
 
Get the best out of Bootstrap with Bootstrap4XPages - Engage 2014
Get the best out of Bootstrap with Bootstrap4XPages - Engage 2014Get the best out of Bootstrap with Bootstrap4XPages - Engage 2014
Get the best out of Bootstrap with Bootstrap4XPages - Engage 2014
 
Get the best out of Bootstrap with Bootstrap4XPages (AD202)
Get the best out of Bootstrap with Bootstrap4XPages (AD202)Get the best out of Bootstrap with Bootstrap4XPages (AD202)
Get the best out of Bootstrap with Bootstrap4XPages (AD202)
 
Bootstrap and XPages (DanNotes 2013)
Bootstrap and XPages (DanNotes 2013)Bootstrap and XPages (DanNotes 2013)
Bootstrap and XPages (DanNotes 2013)
 
Introduction to Bootstrap (with XPages)
Introduction to Bootstrap (with XPages)Introduction to Bootstrap (with XPages)
Introduction to Bootstrap (with XPages)
 

Último

Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 

Último (20)

Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 

Stop (de)bugging me - ICON UK 2013

  • 1. UKLUG 2012 – Cardiff, Wales Stop (de)bugging me!
  • 2. UKLUG 2012 – Cardiff, Wales Disclaimer This session is only for people that make errors. All others can leave. Suggestions: • Re-inventing your ideas (room 3) • The DevAdmin Chimera (room 2)
  • 3. UKLUG 2012 – Cardiff, Wales Agenda • Debuggers in Designer • Java debugger • SSJS debugger • XPage Debug Toolbar ™
  • 4. UKLUG 2012 – Cardiff, Wales Who’s that guy anyway? • Freelance consultant/ developer • IBM Notes/ Domino • XPages, web, client, mobile, Unplugged • OpenNTF Contributor • Auto Logins • XPage Multiple File Uploader • XPage Debug Toolbar • IBM Champion • XPages4Bootstrap.com
  • 5. UKLUG 2012 – Cardiff, Wales Debugging in Designer • For Java & SSJS (as of Designer 9) • Based on standards • Java Platform Debugger Architecture (JPDA) • ‘Remote’ debugging • Enable on server • IDE (Designer/ Eclipse) connects to Server on specified port
  • 6. UKLUG 2012 – Cardiff, Wales Debugging in Designer • Not recommended for productions servers • Impacts performance & security • Only 1 developer can connect at a time • … but that’s not a problem • … since we don’t debug applications on production servers Right?
  • 7. UKLUG 2012 – Cardiff, Wales Java debugger • In Designer since 8.5 • Debug: • Java classes • Managed beans • OSGi plugins • Compiled XPages Java (Local/xsp folder)
  • 8. UKLUG 2012 – Cardiff, Wales Server Side JavaScript debugger • New in Domino 9 • Configured and works (almost) the same as the Java debugger • Debug SSJS in • XPages • Custom controls • SSJS libraries
  • 9. UKLUG 2012 – Cardiff, Wales Activating the debuggers - server • Add configuration to notes.ini: JavaEnableDebug=1 JavascriptEnableDebug=1 JavaDebugOptions=transport=dt_socket,server=y,suspend=n,address=8000 • Tip: if you click on the “Debug” icon in the toolbar, you can copy-paste these settings from there Add this row only if you want to debug SSJS (too)
  • 10. UKLUG 2012 – Cardiff, Wales Activating the debuggers - server • Restart the server • Watch for this: • Port needs to be open(ed) in the firewall • Works with local HTTP preview too • Tip: If the local preview won’t start, try starting the local HTTP task from a command prompt • Run “nhttp preview” from your Notes folder
  • 11. UKLUG 2012 – Cardiff, Wales Activating the debugger - code • Set breakpoints • Right-click in gutter • Add ‘debugger’ statement (SSJS) • Don’t use this in Designer < 9 ! • Stop at first line of JavaScript code
  • 12. UKLUG 2012 – Cardiff, Wales Starting a debug session • Click the triangle next to the “bug” icon (this is Designer 9, icon looks slightly different in 8.5) • Select an existing configuration or click “Manage…”
  • 13. UKLUG 2012 – Cardiff, Wales Starting a debug session - Java IP Address of your server Port that the Debugger listens on Name for this configuration (can be any)
  • 14. UKLUG 2012 – Cardiff, Wales Starting a debug session - SSJS
  • 15. UKLUG 2012 – Cardiff, Wales • Demo
  • 16. UKLUG 2012 – Cardiff, Wales Debug perspective • Designer automatically asks to open Debug perspective when it suspends • Breakpoint or ‘debugger’ statement in SSJS • Change behaviour in Preferences > Run/Debug > Perspectives • Tip: switch perspectives using Ctrl-F8 in Designer
  • 17. UKLUG 2012 – Cardiff, Wales Source not found?
  • 18. UKLUG 2012 – Cardiff, Wales Keyboard shortcuts • F5 Step into • F6 Step over • F7 Step exit • F8 Continue • Strange issue with the F6 key • With the default Designer/ Eclipse binding it doesn’t work • If you create your own binding to F6 it does • Do this in File > Preferences > Type “keys” in filter F5 F6 F7F8
  • 19. UKLUG 2012 – Cardiff, Wales Conditional breakpoints • Set breakpoint • Right-click on breakpoint • Click “Breakpoint properties”
  • 20. UKLUG 2012 – Cardiff, Wales Display view • Window > Show Eclipse View > Display • Run an expression in the context of a breakpoint and view the result • Only works with Java debugger • With code completion
  • 21. UKLUG 2012 – Cardiff, Wales Expressions view • Window > Show Eclipse View > Expressions • Inspect the current state of objects • 2 ways to add: • Right-click on expression in ‘Display’ view • Type in manually
  • 22. UKLUG 2012 – Cardiff, Wales From SSJS to Java • You can debug Java code when you’re debugging SSJS code • But NOT using “Step into” (F5): • It will only stop on breakpoints in the Java class
  • 23. UKLUG 2012 – Cardiff, Wales Disconnect • When you’re done: disconnect your debugging session • Java debugger • SSJS debugger
  • 24. UKLUG 2012 – Cardiff, Wales XPage Debug Toolbar
  • 25. UKLUG 2012 – Cardiff, Wales Background/ features • Tool for XPage developers • Free download from OpenNTF • Or directly from GitHub • Features: • Log debug messages • View contents of scopes • Log file reader • API Inspector
  • 26. UKLUG 2012 – Cardiff, Wales Installation • 2 ways to install: • Download from OpenNTF and copy to your application • Use the OpenNTF Import/ export tool
  • 27. UKLUG 2012 – Cardiff, Wales Installation • Add the ccDebugToolbar custom control to your XPage • Add the (dBar) managed bean • (optionally) Change the default settings using custom control properties • collapseTo • defaultCollapsed • color
  • 28. UKLUG 2012 – Cardiff, Wales Components ccDebugToolbar Custom control xpDebugToolbar SSJS library eu.linqed.debugtoolbar.DebugToolbar Java class eu.linqed.debugtoolbar.Message Java class debugToolbarConsole XPage optional debugToolbarErrorPage XPage optional dBar Managed bean Events View OpenLog integration Event Form OpenLog integration
  • 29. UKLUG 2012 – Cardiff, Wales Scope contents • Shows contents of • applicationScope • sessionScope • viewScope • requestScope • Remove a variable • Or clean an entire scope • Modify values through the Inspector
  • 30. UKLUG 2012 – Cardiff, Wales Environment variables • Information about the current: • User • Browser • Server • Database • Request • Java heap size • Maximum heap size • Allocated • Used • Free
  • 31. UKLUG 2012 – Cardiff, Wales Inspector • View classes for controls on the current page • And change them • View any variable: • Scoped variables • Managed beans • Any XPage runtime object • Drill-down to see what value/ object is returned
  • 32. UKLUG 2012 – Cardiff, Wales Messages • Alternative to print() or _dump() functions • No server console access needed • Your messages only • Makes your admin happy  • Add messages using: dBar.debug( “message” ); dBar.info( “message”); dBar.warn( “message” ); dBar.error( “message” ); dBar.dump( <object> );
  • 33. UKLUG 2012 – Cardiff, Wales Messages • Specify a context: dBar.info( “message”, “context” ); • dBar.error() function accepts ‘error’ objects: try { var doc:NotesDocument = null; var id = doc.getUniversalID(); } catch (e) { dBar.error(e); } • Add a divider to the messages list: dBar.addDivider();
  • 34. UKLUG 2012 – Cardiff, Wales Messages • Add debug messages from Java: DebugToolbar.get().info( “message” ); DebugToolbar.get().warn( “message” ); • Or catch an Exception • DebugToolbar.get().error( e );
  • 35. UKLUG 2012 – Cardiff, Wales Log messages to documents • Create documents for all dBar calls • All required code already built-in • Uses the OpenLog (form/fields) format • Use the OpenLog database to view them • Log level can be set: log only messages with a certain log level (or ‘higher’) • warn = warn + error • debug = debug + info + warn + error
  • 36. UKLUG 2012 – Cardiff, Wales Log messages to documents • Configure using managed properties • logDbPath current, logdb.nsf • logEnabled true, false • logLevel debug, info, warn, error • Logging will continue even if the toolbar isn’t displayed
  • 37. UKLUG 2012 – Cardiff, Wales Best practices • Add [debug] role to the ACL • Set loaded property of the ccDebugToolbar only for [debug] role: loaded=“#,javascript:context.getUser().getRoles().contains(‘*debug’+-” • Enable logging to documents (errors/ warnings only) logLevel = “warn” • No design changes needed when moving to production
  • 38. UKLUG 2012 – Cardiff, Wales Resources • XPage Debug Toolbar on OpenNTF & GitHub http://www.openntf.org/internal/home.nsf/project.xsp?action=ope nDocument&name=XPage%20Debug%20Toolbar https://github.com/markleusink/XpageDebugToolbar • OpenNTF Import/ export tool http://www.openntf.org/internal/home.nsf/project.xsp?action=ope nDocument&name=Import%20and%20Export%20for%20Designer • Xpages OpenLog Logger http://www.openntf.org/internal/home.nsf/project.xsp?action=ope nDocument&name=XPages%20OpenLog%20Logger • OpenLog http://www.openntf.org/internal/home.nsf/project.xsp?action=ope nDocument&name=OpenLog
  • 39. UKLUG 2012 – Cardiff, Wales Thank you ! • Twitter: markleusink • Skype: mark_leusink • Blog: http://linqed.eu • Email: m.leusink@linqed.eu • http://www.bootstrap4xpages.com