This document summarizes a presentation on debugging XPages applications. It discusses debugging Java and SSJS code using debuggers in Domino Designer 9, activating the debuggers on the server and in code, starting debug sessions, using breakpoints and stepping through code. It also describes the XPage Debug Toolbar, an OpenNTF project that allows logging debug messages and inspecting application state without a server console.
Extracting Plugins And Gems From Rails AppsJosh Nichols
Rails Plugins and Ruby Gems are the basic mechanism of sharing functionality between multiple projects. This talk will go over extracting functionality into a plugin, testing it, sharing it, and converting it to a gem.
Extracting Plugins And Gems From Rails AppsJosh Nichols
Rails Plugins and Ruby Gems are the basic mechanism of sharing functionality between multiple projects. This talk will go over extracting functionality into a plugin, testing it, sharing it, and converting it to a gem.
Writing a "Hello World!” application is always easy, and a Java developer can learn how to write it with JavaFX in some minutes. But if you want to create a productive application, knowledge of "Hello World!” isn't enough. A real application should be well structured, provide an automatic build that ends in usable artifacts, and contain only needed dependencies. In addition, such an application should be testable and maintainable. This session presents some general concepts regarding how you can create and structure a JavaFX application that can easily grow and become more complex without losing control of the code, functionality, and maintainability. At the end, each attendee will have a template to use to start creating JavaFX-based applications.
Stopping the Rot - Putting Legacy C++ Under TestSeb Rose
Presentation given at the ACCU 2011 Conference in Oxford, UK.
Case study of applying unit test to the DOORS codebase. Includes a quick overview of unit test & the Google Test and Mock libraries. Also 3 specific refactoring examples shown.
Most projects in CF now involve creating some type of consumable CFC Endpoint or API Service... do you Unit test your API, do you use Integration Tests on your API? How many ways do you test your API? Not all tests are created equal.
Description
Most projects in CF now involve creating some type of consumable CFC Endpoint or API Service... do you Unit test your API, do you use Integration Tests on your API? How many ways do you test your API? Not all tests are created equal.
We build our CFCs and CF API to be consumed with CF Apps, Mobile Apps, Javascript apps and devices we haven’t even thought about yet. To be smart developers we need to be able to test our CFC endpoints, and the code that uses those endpoints.
We’ll learn how to test your API serverside with Testbox and Clientside with Jasmine.
With Testbox and Jasmine both using BDD, your test code can almost be isomorphic.
Attendees should have some exposure to CFCs as endpoints, or CF API creations, and consuming with other languages/devices, in this case, JavaScript.
## Attendees will learn
How to use Testbox to test your CFCs 2 different ways
Different types and ways to test JavaScript
Overview of client/server side testing tools
Building testing into your workflow
You are one of many that are not testing your APIs thoroughly
Après avoir fait ce talk à la conférence NSSpain, Simone Civetta va nous expliquer sur quelles métriques il est possible de se baser pour évaluer la qualité d’un code source. Cette question étant toujours sujette à débat, préparez vos arguments !
Dependency injection design pattern is introduced in order to solve some common issues due to explicit wiring between a component and its collaborator or service.
Spring Framework and AngularJS are involved to show how dependency injection could simplify the way of writing code but above all testing.
Clean and concise code is obtained using DI. Real example are provided on Github and Plunkr.
CDI portable extensions are one of greatest features of Java EE allowing the platform to be extended in a clean and portable way. But allowing extension is just part of the story. CDI opens the door to a whole new eco-system for Java EE, but it’s not the role of the specification to create these extensions.
Apache DeltaSpike is the project that leads this brand new eco-system by providing useful extension modules for CDI applications as well as tools to ease the creation of new ones.
In this session, we’ll start by presenting the DeltaSpike toolbox and show how it helps you to develop for CDI. Then we’ll describe the major extensions included in DeltaSpike, including 'configuration', 'scheduling' and 'data'.
ServiceNow Knowledge11 Advanced Scripting & Debugging LabJohn Roberts
In this advanced hands-on workshop you will work with a variety of debugging tools to troubleshoot client and server scripting. You'll learn how to add error handling and debugging assistance to your scripts. We will review some advanced scripting techniques including server-side script includes extending base classes and AJAX client requests. As we will not be covering basic scripting concepts in this session participants will require some understanding of JavaScript and scripting within ServiceNow.
First Name: Stephane
Last Name: Ducasse
Video: https://youtu.be/OGkGgx4iymM
Title: A Taste for Pharo 70
In this talk I will present the roadmap for Pharo 70.
- support for Undefined Classes
- Class Parser
- new class definition
- support for namespace (not namespace) modules.
- ...
Bio:
Stéphane is directeur de recherche at Inria. He leads the RMoD
(http://rmod.lille.inria.fr) team. He is expert in two domains:
object-oriented language design and reengineering. He worked on
traits, composable groups of methods. Traits have been introduced in Pharo, Perl, PHP and under a variant into Scala and Fortress. He is also expert on software quality, program understanding, program
visualisations, reengineering and metamodeling. He is one of the
developer of Moose, an open-source software analysis platform
http://www.moosetechnology.org/. He created http://www.synectique.eu/
a company building dedicated tools for advanced software analyses. He
is one of the leader of Pharo (http://www.pharo.org/) a dynamic
reflective object-oriented language supporting live programming. The
objective of Pharo is to create an ecosystem where innovation and
business bloom. He wrote several books such as Functional Programming
in Scheme, Pharo by Example, Deep into Pharo, Object-oriented
Reengineering Patterns, Dynamic web development with Seaside.
According to google his h-index is 51 for more than 11000
citations. He would like to thanks all the researchers making
reference to his work!
Writing a "Hello World!” application is always easy, and a Java developer can learn how to write it with JavaFX in some minutes. But if you want to create a productive application, knowledge of "Hello World!” isn't enough. A real application should be well structured, provide an automatic build that ends in usable artifacts, and contain only needed dependencies. In addition, such an application should be testable and maintainable. This session presents some general concepts regarding how you can create and structure a JavaFX application that can easily grow and become more complex without losing control of the code, functionality, and maintainability. At the end, each attendee will have a template to use to start creating JavaFX-based applications.
Stopping the Rot - Putting Legacy C++ Under TestSeb Rose
Presentation given at the ACCU 2011 Conference in Oxford, UK.
Case study of applying unit test to the DOORS codebase. Includes a quick overview of unit test & the Google Test and Mock libraries. Also 3 specific refactoring examples shown.
Most projects in CF now involve creating some type of consumable CFC Endpoint or API Service... do you Unit test your API, do you use Integration Tests on your API? How many ways do you test your API? Not all tests are created equal.
Description
Most projects in CF now involve creating some type of consumable CFC Endpoint or API Service... do you Unit test your API, do you use Integration Tests on your API? How many ways do you test your API? Not all tests are created equal.
We build our CFCs and CF API to be consumed with CF Apps, Mobile Apps, Javascript apps and devices we haven’t even thought about yet. To be smart developers we need to be able to test our CFC endpoints, and the code that uses those endpoints.
We’ll learn how to test your API serverside with Testbox and Clientside with Jasmine.
With Testbox and Jasmine both using BDD, your test code can almost be isomorphic.
Attendees should have some exposure to CFCs as endpoints, or CF API creations, and consuming with other languages/devices, in this case, JavaScript.
## Attendees will learn
How to use Testbox to test your CFCs 2 different ways
Different types and ways to test JavaScript
Overview of client/server side testing tools
Building testing into your workflow
You are one of many that are not testing your APIs thoroughly
Après avoir fait ce talk à la conférence NSSpain, Simone Civetta va nous expliquer sur quelles métriques il est possible de se baser pour évaluer la qualité d’un code source. Cette question étant toujours sujette à débat, préparez vos arguments !
Dependency injection design pattern is introduced in order to solve some common issues due to explicit wiring between a component and its collaborator or service.
Spring Framework and AngularJS are involved to show how dependency injection could simplify the way of writing code but above all testing.
Clean and concise code is obtained using DI. Real example are provided on Github and Plunkr.
CDI portable extensions are one of greatest features of Java EE allowing the platform to be extended in a clean and portable way. But allowing extension is just part of the story. CDI opens the door to a whole new eco-system for Java EE, but it’s not the role of the specification to create these extensions.
Apache DeltaSpike is the project that leads this brand new eco-system by providing useful extension modules for CDI applications as well as tools to ease the creation of new ones.
In this session, we’ll start by presenting the DeltaSpike toolbox and show how it helps you to develop for CDI. Then we’ll describe the major extensions included in DeltaSpike, including 'configuration', 'scheduling' and 'data'.
ServiceNow Knowledge11 Advanced Scripting & Debugging LabJohn Roberts
In this advanced hands-on workshop you will work with a variety of debugging tools to troubleshoot client and server scripting. You'll learn how to add error handling and debugging assistance to your scripts. We will review some advanced scripting techniques including server-side script includes extending base classes and AJAX client requests. As we will not be covering basic scripting concepts in this session participants will require some understanding of JavaScript and scripting within ServiceNow.
First Name: Stephane
Last Name: Ducasse
Video: https://youtu.be/OGkGgx4iymM
Title: A Taste for Pharo 70
In this talk I will present the roadmap for Pharo 70.
- support for Undefined Classes
- Class Parser
- new class definition
- support for namespace (not namespace) modules.
- ...
Bio:
Stéphane is directeur de recherche at Inria. He leads the RMoD
(http://rmod.lille.inria.fr) team. He is expert in two domains:
object-oriented language design and reengineering. He worked on
traits, composable groups of methods. Traits have been introduced in Pharo, Perl, PHP and under a variant into Scala and Fortress. He is also expert on software quality, program understanding, program
visualisations, reengineering and metamodeling. He is one of the
developer of Moose, an open-source software analysis platform
http://www.moosetechnology.org/. He created http://www.synectique.eu/
a company building dedicated tools for advanced software analyses. He
is one of the leader of Pharo (http://www.pharo.org/) a dynamic
reflective object-oriented language supporting live programming. The
objective of Pharo is to create an ecosystem where innovation and
business bloom. He wrote several books such as Functional Programming
in Scheme, Pharo by Example, Deep into Pharo, Object-oriented
Reengineering Patterns, Dynamic web development with Seaside.
According to google his h-index is 51 for more than 11000
citations. He would like to thanks all the researchers making
reference to his work!
Improve Code Quality and Time to Market: 100% Cloud-Based Development WorkflowAcquia
Modern web development should be seamless. Unfortunately, assembling, testing, and deploying production level code on time and with confidence is a challenge that many organizations face.
Developers and IT leaders, join this webinar to learn how Acquia’s end-to-end web platform will enable you to get your applications to market faster, improve code quality, and reduce security risk.
With Acquia’s 100% cloud-based development tools optimized specifically for Drupal, building, testing, and deploying will all take place on our platform and your feet never need to touch the ground.
We’ll cover:
- How to manage the entire developer lifecycle from our platform
- How to enable continuous testing and deployment
- Why cloud based IDEs are the future of development
- How to get started with a working app on day one
- Which tools are available and how to get the most out of them
Java and in particular OSGi are now very important parts of the Notes/Domino app dev model. In this session, you will learn what techniques can be utilized to process background jobs for XPages applications. Whether you want to replace your existing agents with Domino OSGi Tasklet Services (DOTS) or use Eclipse Jobs to run time-consuming routines without interrupting the use of your application - we will show you real life examples of why and how. You should also consider attending this session to hear about some suprises you don't want to miss...
ICONUK 2013 - An XPager's Guide to Process Server-Side Jobs on IBM® Domino®Serdar Basegmez
Java and in particular OSGi are now very important parts of the Notes/Domino app dev model. In this session, you will learn what techniques can be utilized to process background jobs for XPages applications. Whether you want to replace your existing agents with Domino OSGi Tasklet Services (DOTS) or use Eclipse Jobs to run time-consuming routines without interrupting the use of your application - we will show you real life examples of why and how.
https://github.com/vorburger/opendaylight-eclipse-setup
Watch https://www.youtube.com/watch?v=TU1zjytlwFE recording of this same presentation. Same slides are also available in better quality on https://docs.google.com/presentation/d/14yLzog3OhIlVsk7Clr0Tff1YayRcFnQCUZqxHMWxiNI/.
Watch https://www.youtube.com/watch?v=BLW8aOh6WeQ screencast video to see a step by step walk through for how to use what's introduced here.
Presentation given at the OpenDaylight Open Source Software Defined Networking Mini Summit on 2016.06-21 in Berlin at the Open Platform for NFV (OPNFV) summit, by Michael Vorburger.
JavaScript has a well deserved reputation of be hard to write and debug. Put it on a mobile device and the problems increase exponentially. Mobile browsers lack all of the niceties that developers rely on to do testing and debugging including the most fundamental tool, the debugger. But it is possible to write quality JavaScript on a mobile device without relying on blind luck. In this talk I will show all of the tools and tricks that I learned in my 12 month development of the new KBB.com mobile site.
Presentation about new concepts and features that came with Android Studio.
Advantages over eclipse.
Explanation about Gradle.
Productivity with Android Studio.
Shotcuts migration from Eclipse.
original (better quality) on https://docs.google.com/presentation/d/1bnwj8CrFGo5KekONYSeIHySdkoXZiewJxkHcZjXnzkQ/
slides from OpenDaylight Summit Oct 2016 Seattle
ICON UK 2016: Modernizing an IBM Notes applicaton using with AngularJSMark Leusink
Slides from my ICON UK 2016 session. Session abstract:
Modernization of IBM Notes applications is a topic that is on the map for many IBM customers. With one of my customers, a Norwegian manufacturing company, we started a project last year to modernize a business critical Notes application. We decided early on to keep using Domino in the backend, but switch to AngularJS for the frontend. In the session I'll talk about how we approached the project and got to a working prototype. Topics I will cover include responsibilities, development workflow, technical setup and issues we ran into. I'll explain the architecture that we are using, the components involved and how we integrated with IBM Connections and Infor. Keywords for this session: AngularJS, Nginx, REST, IBM Domino, Connections, Infor M3 and Infor Document Management.
Escaping the yellow bubble - rewriting Domino using MongoDb and AngularMark Leusink
Slides from my ICON UK 2014 session held on September 13, 2014 at IBM Southbank, London.
The session was an introduction to the MEAN stack (Mongo, Express, Angular and Node).
Slides of my session at DanNotes on the use of Bootstrap with XPages, including using the Bootstrap4XPages plugin.
View the demos at http://bootstrap4xpages.com
Transcript: Selling digital books in 2024: Insights from industry leaders - T...BookNet Canada
The publishing industry has been selling digital audiobooks and ebooks for over a decade and has found its groove. What’s changed? What has stayed the same? Where do we go from here? Join a group of leading sales peers from across the industry for a conversation about the lessons learned since the popularization of digital books, best practices, digital book supply chain management, and more.
Link to video recording: https://bnctechforum.ca/sessions/selling-digital-books-in-2024-insights-from-industry-leaders/
Presented by BookNet Canada on May 28, 2024, with support from the Department of Canadian Heritage.
Climate Impact of Software Testing at Nordic Testing DaysKari Kakkonen
My slides at Nordic Testing Days 6.6.2024
Climate impact / sustainability of software testing discussed on the talk. ICT and testing must carry their part of global responsibility to help with the climat warming. We can minimize the carbon footprint but we can also have a carbon handprint, a positive impact on the climate. Quality characteristics can be added with sustainability, and then measured continuously. Test environments can be used less, and in smaller scale and on demand. Test techniques can be used in optimizing or minimizing number of tests. Test automation can be used to speed up testing.
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf91mobiles
91mobiles recently conducted a Smart TV Buyer Insights Survey in which we asked over 3,000 respondents about the TV they own, aspects they look at on a new TV, and their TV buying preferences.
Dr. Sean Tan, Head of Data Science, Changi Airport Group
Discover how Changi Airport Group (CAG) leverages graph technologies and generative AI to revolutionize their search capabilities. This session delves into the unique search needs of CAG’s diverse passengers and customers, showcasing how graph data structures enhance the accuracy and relevance of AI-generated search results, mitigating the risk of “hallucinations” and improving the overall customer journey.
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024Neo4j
Neha Bajwa, Vice President of Product Marketing, Neo4j
Join us as we explore breakthrough innovations enabled by interconnected data and AI. Discover firsthand how organizations use relationships in data to uncover contextual insights and solve our most pressing challenges – from optimizing supply chains, detecting fraud, and improving customer experiences to accelerating drug discoveries.
Pushing the limits of ePRTC: 100ns holdover for 100 daysAdtran
At WSTS 2024, Alon Stern explored the topic of parametric holdover and explained how recent research findings can be implemented in real-world PNT networks to achieve 100 nanoseconds of accuracy for up to 100 days.
Epistemic Interaction - tuning interfaces to provide information for AI supportAlan Dix
Paper presented at SYNERGY workshop at AVI 2024, Genoa, Italy. 3rd June 2024
https://alandix.com/academic/papers/synergy2024-epistemic/
As machine learning integrates deeper into human-computer interactions, the concept of epistemic interaction emerges, aiming to refine these interactions to enhance system adaptability. This approach encourages minor, intentional adjustments in user behaviour to enrich the data available for system learning. This paper introduces epistemic interaction within the context of human-system communication, illustrating how deliberate interaction design can improve system understanding and adaptation. Through concrete examples, we demonstrate the potential of epistemic interaction to significantly advance human-computer interaction by leveraging intuitive human communication strategies to inform system design and functionality, offering a novel pathway for enriching user-system engagements.
GridMate - End to end testing is a critical piece to ensure quality and avoid...ThomasParaiso2
End to end testing is a critical piece to ensure quality and avoid regressions. In this session, we share our journey building an E2E testing pipeline for GridMate components (LWC and Aura) using Cypress, JSForce, FakerJS…
Threats to mobile devices are more prevalent and increasing in scope and complexity. Users of mobile devices desire to take full advantage of the features
available on those devices, but many of the features provide convenience and capability but sacrifice security. This best practices guide outlines steps the users can take to better protect personal devices and information.
A tale of scale & speed: How the US Navy is enabling software delivery from l...sonjaschweigert1
Rapid and secure feature delivery is a goal across every application team and every branch of the DoD. The Navy’s DevSecOps platform, Party Barge, has achieved:
- Reduction in onboarding time from 5 weeks to 1 day
- Improved developer experience and productivity through actionable findings and reduction of false positives
- Maintenance of superior security standards and inherent policy enforcement with Authorization to Operate (ATO)
Development teams can ship efficiently and ensure applications are cyber ready for Navy Authorizing Officials (AOs). In this webinar, Sigma Defense and Anchore will give attendees a look behind the scenes and demo secure pipeline automation and security artifacts that speed up application ATO and time to production.
We will cover:
- How to remove silos in DevSecOps
- How to build efficient development pipeline roles and component templates
- How to deliver security artifacts that matter for ATO’s (SBOMs, vulnerability reports, and policy evidence)
- How to streamline operations with automated policy checks on container images
State of ICS and IoT Cyber Threat Landscape Report 2024 previewPrayukth K V
The IoT and OT threat landscape report has been prepared by the Threat Research Team at Sectrio using data from Sectrio, cyber threat intelligence farming facilities spread across over 85 cities around the world. In addition, Sectrio also runs AI-based advanced threat and payload engagement facilities that serve as sinks to attract and engage sophisticated threat actors, and newer malware including new variants and latent threats that are at an earlier stage of development.
The latest edition of the OT/ICS and IoT security Threat Landscape Report 2024 also covers:
State of global ICS asset and network exposure
Sectoral targets and attacks as well as the cost of ransom
Global APT activity, AI usage, actor and tactic profiles, and implications
Rise in volumes of AI-powered cyberattacks
Major cyber events in 2024
Malware and malicious payload trends
Cyberattack types and targets
Vulnerability exploit attempts on CVEs
Attacks on counties – USA
Expansion of bot farms – how, where, and why
In-depth analysis of the cyber threat landscape across North America, South America, Europe, APAC, and the Middle East
Why are attacks on smart factories rising?
Cyber risk predictions
Axis of attacks – Europe
Systemic attacks in the Middle East
Download the full report from here:
https://sectrio.com/resources/ot-threat-landscape-reports/sectrio-releases-ot-ics-and-iot-security-threat-landscape-report-2024/
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...Neo4j
Leonard Jayamohan, Partner & Generative AI Lead, Deloitte
This keynote will reveal how Deloitte leverages Neo4j’s graph power for groundbreaking digital twin solutions, achieving a staggering 100x performance boost. Discover the essential role knowledge graphs play in successful generative AI implementations. Plus, get an exclusive look at an innovative Neo4j + Generative AI solution Deloitte is developing in-house.
PHP Frameworks: I want to break free (IPC Berlin 2024)Ralf Eggert
In this presentation, we examine the challenges and limitations of relying too heavily on PHP frameworks in web development. We discuss the history of PHP and its frameworks to understand how this dependence has evolved. The focus will be on providing concrete tips and strategies to reduce reliance on these frameworks, based on real-world examples and practical considerations. The goal is to equip developers with the skills and knowledge to create more flexible and future-proof web applications. We'll explore the importance of maintaining autonomy in a rapidly changing tech landscape and how to make informed decisions in PHP development.
This talk is aimed at encouraging a more independent approach to using PHP frameworks, moving towards a more flexible and future-proof approach to PHP development.
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
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)
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
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
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
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