SlideShare une entreprise Scribd logo
1  sur  56
Télécharger pour lire hors ligne
BP204 It’s Not Infernal:
Dante’s Nine Circles of
XPages Heaven
Paul Withers, Intec Systems Ltd
Mike McGarel, Czarnowski Display Services Inc.

© 2014 IBM Corporation
Paul Withers
 ICS Consultant at Intec Systems Ltd
 IBM Champion 2011-2014
 Co-Author XPages Extension Library
 OpenNTF Director

 Contributor to OpenNTF
 Blogger on XPages, IBM Domino®
Designer and beyond
– http://www.intec.co.uk/blog
Mike McGarel
 Working with Web technologies for over 14 years
 Working with IBM Notes® & IBM Domino® since version 4.6

 Corporate developer
 Site developer for MWLUG

3
Dante’s Inferno
 Author: Dante Alighieri, 14th Century
 Part of Divine Comedy with Purgatorio and Paradiso
 Journey by Dante over Easter Weekend 1300
 Dante rescued and guided by the Roman poet Virgil

 “Lasciate ogne speranza, voi ch’intrate”
(“Abandon all hope, ye who enter here”)

4
The Circles
 First Circle: Limbo
 Second Circle: Lust
 Third Circle: Gluttony
 Fourth Circle: Greed
 Fifth Circle: Wrath
 Sixth Circle: Heresy
 Seventh Circle: Violence
 Eighth Circle: Fraud
 Ninth Circle: Treachery
5
First Circle: Limbo

Mihai Marius Mihu, http://www.flickr.com/photos/mihaimariusmihu/
6
Hybrid “Limbo” Applications
 Add XPages into traditional Domino web applications
 Use existing Domino databases as data source and new
XPages database for user interface
 Add mobile interface
 Add XPages for sidebar

7
SSJS – The “Limbo” Language
 Server-side JavaScript leverages pre-existing knowledge
– JavaScript syntax
• NotesDocument.getUniversalID()
• @DbLookup(@DbName(),“myViewName”,2,
“[FAILSILENT]”)
– Domino objects use LotusScript names
– Many Formula Language @Functions supported
• Kathy Brown has blogged which ones are not
• http://www.runningnotes.net/index.php/2010/03/25/listof-formula-not-supported-in-xpages/
8
“Limbo” Property Values
 Custom Language
<xp:text
value= “Database title is #{database.title}, database path
is #{javascript: @Subset(@DbName(), -1);}”>
</xp:text>

9
Demo

10
Converting LS to SSJS

 Replace “Dim” with “var”
 Replace “ As ” with “:”
 Add “;”
 Remember methods etc are case sensitive and need ()

 GetAllDocumentsByKey – need to pass key as Vector
 Full syntax required for interacting with Notes Items
 RECYCLE!
11
Second Circle: Lust

Mihai Marius Mihu, http://www.flickr.com/photos/mihaimariusmihu/
12
It’s All About Wants
 Users want:
– a familiar “look and feel”
– something easy to use
– to get in and out
 You want them to want your app

13
Looks Matter
 First impressions are key
 Better looking “equals” works better

 Steve McDonagh’s great series on design principles:
http://dominoyesmaybe.blogspot.com/2012/09/principals-ofdesign-1-balance.html

14
Interface Makeovers
 IBM’s OneUI (v3):
http://infolib.lotus.com/resources/oneui/3.0/docPublic/index.htm
 Extension Library / Dojo widgets http://dojotoolkit.org
– XPages Help Application http://xhelp.openntf.org/
 Twitter Bootstrap: http://getbootstrap.com
 jQuery Plugins
– jQuery UI: http://jqueryui.com
15
16
Demo

17
Third Circle: Gluttony

Mihai Marius Mihu, http://www.flickr.com/photos/mihaimariusmihu/
18
Don’t Make Browsers Eat Too Much!
 xsp.resource.aggregate=true

19
Temporary Gluttony – For Debugging!
 xsp.client.resources.uncompressed=true

20
Fourth Circle: Greed

21

Mihai Marius Mihu, http://www.flickr.com/photos/mihaimariusmihu/
Avoid Greed on Server

22
Demo

23
Persistence Options
 Keep Pages in Memory
– Remembering, remembering, remembering…
– xsp.persistence.mode=basic
– Best for…quick retrieval, few users
 Keep Pages on Disk
– Writing…next? You want it again? Reading…
– xsp.persistence.mode=file
– Best for…lots of users, but slower retrieval
24
Persistence Options
 Keep Only The Current Page in Memory
– Remembering, remembering, remembering…
– Oh, new page? Writing….and now…
– Remembering, remembering, remembering…
– xsp.persistence.mode=fileex
– Best for…lots of users, quick retrieval of current page

25
Persistence Options
 GZip Persisted Files
– xsp.persistence.file.gzip
– Default=false
– Writing…next? You want it again? Reading…
 Persist Files Asynchronously
– xsp.persistence.file.async
– Default=true
– Server busy, remembering. Next? (Writing, writing)
26
Persistence Options
 Maximum Pages
– xsp.persistence.tree.maxviews
• Default=4
• Remembering, remembering, remembering
• Only applies when xsp.persistence.mode=basic
– xsp.persistence.file.maxviews
• Default=10
• Writing, retrieving, writing, writing, discarding…
• Default folder defined by xsp.persistence.dir.xspstate
27
Page Persistence Mode
 xsp.persistence.viewstate=fulltree
– Default option, whole component tree persisted
 xsp.persistence.viewstate=nostate
– No component tree stored, similar to
xsp.session.transient=true
 xsp.persistence.viewstate=delta
– Valid if pages stored in memory
– Only stores changes since page loaded
28
Page Persistence Mode
 xsp.persistence.viewstate=deltaex
– Valid if multiple pages stored in memory
– Stores full component tree for current page, deltas for
others
 Viewstate property on XPage allows developer to define at
page level

29
xsp.session.transient
 xsp.session.transient=“false” sets XPage stateless
– Default VALUES overridden between requests
– Default STATES not overridden
 NOT “Go to next page from current”
– INSTEAD “Go to next page from default”
 NOT “Toggle show detail from previous state”
– INSTEAD “Toggle show detail from default”
 Great for large, read only pages, Websites – no storage
30
Fifth Circle: Wrath

31

Mihai Marius Mihu, http://www.flickr.com/photos/mihaimariusmihu/
More Responsiveness = Less Anger
 Partial page refreshes
 Client-side processing
– Dojo JavaScript framework (included with XPages)
– jQuery JavaScript framework (easily added)
– Other JavaScript frameworks or custom scripts
 Server-side processing
– XAgent (XPage of just code with UI redirect)
– Java (design element or WebContentWEB-INFsrc)
32
Meet the Users’ Expectations
 It’s a “mad mad mad mad world”
– Devices
– Locations
– Connectivity
 Responsive design options:
– Dojo layout container
– Bootstrap responsive

 Embedded experience
33
Demo

34
Sixth Circle: Heresy

35

Mihai Marius Mihu, http://www.flickr.com/photos/mihaimariusmihu/
Java
 “IBM always wanted us to use Java” – NO!

36
Why?
 #{javascript:…} means parse this string using SSJS rules
 Pass commands to VariableResolver
 Look for corresponding variable name
 Map to a Java object/method

 So why not go straight to the source?

37
Demo

38
OpenNTF Domino API

39
OpenNTF Domino API
 Document.replaceItemValue(“myDateField”, new Date());
– Or Document.put(“myDateField”, new Date());

 for (Document doc : dc) {…}
 Transactional Processing

 SyncHelper
 Email Helpers
 OpenLog

 Document Scanner
 Database Listeners
40
Seventh Circle: Violence

41

Mihai Marius Mihu, http://www.flickr.com/photos/mihaimariusmihu/
Themes
 Themes can force controls to behave consistently
 But some elements cannot be manipulated easily
–EventHandlers don’t have a default stylekit
–They can have a themeId applied though
 Themes loaded at end of page rendering
–getStyleKitFamily() to find default theme id
–Or use Mark Leusink’s debug toolbar

42
“Strong-Arming” All Events
 Dojo Standby Control on OpenNTF
– Hijacks partial refreshes
– Adds standby message during long-running partial
refreshes
– http://openntf.org/XSnippets.nsf/snippet.xsp?id=standbydialog-custom-control

43
Eighth Circle: Fraud

Mihai Marius Mihu, http://www.flickr.com/photos/mihaimariusmihu/

44
SessionScope
 SessionScope is fraudulent
– Session only for current application
– Browser session, not user session

45
HTTPOnly Cookies
 Since Domino 9.0 SessionID and DomAuthSessId are now
HTTPOnly
 Cannot be modified or removed via JavaScript
–http://openntf.org/XSnippets.nsf/snippet.xsp?id=clearsession-whole-server does not work
 Cannot be intercepted

46
How To Add Your Own HTTPOnly Cookie
 Serdar Basegmez XSnippet
 http://openntf.org/XSnippets.nsf/snippet.xsp?id=extendedcookie-implementation-for-httponly-cookies

47
Ninth Circle: Treachery

Mihai Marius Mihu, http://www.flickr.com/photos/mihaimariusmihu/
48
Beyond Domino Designer
 Generate Javadocs
 Eclipse Modeling Tools to create UML designs
– Use latest Eclipse for RCP and RAP Developers
– Download from Eclipse Marketplace
 Atlassian SourceTree and Perforce P4Merge
 SHOW 103 Wednesday 8am
 http://www.slideshare.net/paulswithers1/beyond-dominodesigner
49
We climbed, he first, I following his steps,
Till on our view the beautiful lights of heaven
Dawned through a circular opening in the cave:
Thence issuing we again beheld the stars
Dante, Inferno, Canto 34 130-133

50
Summary
 XPages is a gateway to other worlds
 It is a journey – small steps lead to great strides
 Learn from what others have done
 Be prepared for the “Great Beyond”

51
Other Sessions
 SHOW103: Source Control 101: Implementing an End-to-End Solution
 SHOW104: Practical Java
 AD201: Domino Application Development: Today and Tomorrow

 AD202: Get The Best Out of Bootstrap4XPages
 AD207: Widgets, LiveText and Now OpenSocial
 AD209: Making Your Team More Productive with IBM Domino Designer JMP101: Java for
XPages Development
 JMP106: Make Your Business Open and Social using IBM Notes Social Edition 9.0.1
 BP207: Don’t Reinvent The Wheel – Re(use) Open Source Software from OpenNTF

 GURU101: Gurupalooza
52
IBM Resources
 XPages.Info: http://xpages.info
 XPages Forum: http://www-10.lotus.com/ldd/xpagesforum.nsf
 Notes/Domino Application Development Wiki: http://www-10.lotus.com/ldd/ddwiki.nsf

 Collaboration Today: http://collaborationtoday.info
 OpenNTF: http://openntf.org
 OpenNTF Snippets: http://openntf.org/XSnippets.nsf/home.xsp

 The “XPages trilogy”:
– Mastering XPages, 2nd Edition due shortly (IBM Press)
– XPages Extension Library (IBM Press)
– XPages Portable Command Guide (IBM Press)

53
Community Resources
 Planet Lotus: http://planetlotus.org
 Notes in 9 (videos): http://www.notesin9.com
 XPages cheat sheets: http://www.xpagescheatsheets.com

 YouAtNotes XPages wiki: http://www.xpageswiki.com
 Stack Overflow: http://stackoverflow.com/questions/tagged/xpages

54
 Access Connect Online to complete your session surveys using any:
– Web or mobile browser
– Connect Online kiosk onsite
Paul Withers
Intec Systems Ltd
pwithers@intec.co.uk
http://www.intec.co.uk/blog
@PaulSWithers

55

Mike McGarel
Czarnowski Display Services Inc.
mcgarelgramming@gmail.com
http://www.bleedyellow.com/blogs/McGarelGramming/
@mmcgarel
Acknowledgements and Disclaimers
Av ailability. References in this presentation to IBM products, programs, or services do not imply that they will be available in all cou ntries in which IBM operates.
The workshops, sessions and materials have been prepared by IBM or the session speakers and reflect their own views. They ar e provided for informational purposes only, and are neither
intended to, nor shall have the effect of being, legal or other guidance or advice to any participant. While efforts were ma de to verify the completeness and accuracy of the information
contained in this presentation, it is provided AS-IS without warranty of any kind, express or implied. IBM shall not be responsi ble for any damages arising out of the use of, or otherwise
related to, this presentation or any other materials. Nothing contained in this presentation is intended to, nor shall have t he effect of, creating any warranties or representations from IBM or
its suppliers or licensors, or altering the terms and conditions of the applicable license agreement governing the use of IBM software.
All customer examples described are presented as illustrations of how those customers have used IBM products and the results they may have achieved. Actual environmental costs and
performance characteristics may vary by customer. Nothing contained in these materials is intended to, nor shall have the ef fect of, stating or implying that any activities undertaken by you
will result in any specific sales, revenue growth or other results.

© Copyright IBM Corporation 2014. All rights reserved.
 U.S. Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.

 IBM, the IBM logo, ibm.com, IBM Collaboration Solutions and IBM Domino are trademarks or registered trademarks of Internation al Business Machines Corporation in the United States,
other countries, or both. If these and other IBM trademarked terms are marked on their first occurrence in this information w ith a trademark symbol (® or ™), these symbols indicate U.S.
registered or common law trademarks owned by IBM at the time this information was published. Such trademarks may also be regi stered or common law trademarks in other countries. A
current list of IBM trademarks is available on the Web at “Copyright and trademark information” at www.ibm.com/legal/copytrade.shtml

Illustrations of the Inferno courtesy of Mihai Marius Mihu, http://www.flickr.com/photos/mihiamariusmihu/

56

Contenu connexe

Tendances

XPages and Java (DanNotes 50th conference, November 2013)
XPages and Java (DanNotes 50th conference, November 2013)XPages and Java (DanNotes 50th conference, November 2013)
XPages and Java (DanNotes 50th conference, November 2013)Per Henrik Lausten
 
Utilizing the OpenNTF Domino API
Utilizing the OpenNTF Domino APIUtilizing the OpenNTF Domino API
Utilizing the OpenNTF Domino APIOliver Busse
 
Engage 2015 - 10 Mistakes You and Every XPages Developer Make. Yes, I said YOU!
Engage 2015 - 10 Mistakes You and Every XPages Developer Make. Yes, I said YOU!Engage 2015 - 10 Mistakes You and Every XPages Developer Make. Yes, I said YOU!
Engage 2015 - 10 Mistakes You and Every XPages Developer Make. Yes, I said YOU!Serdar Basegmez
 
OpenNTF Domino API (ODA): Super-Charging Domino Development
OpenNTF Domino API (ODA): Super-Charging Domino DevelopmentOpenNTF Domino API (ODA): Super-Charging Domino Development
OpenNTF Domino API (ODA): Super-Charging Domino DevelopmentPaul Withers
 
Managed Beans: When, Why and How
Managed Beans: When, Why and HowManaged Beans: When, Why and How
Managed Beans: When, Why and HowRussell Maher
 
JMP402 Master Class: Managed beans and XPages: Your Time Is Now
JMP402 Master Class: Managed beans and XPages: Your Time Is NowJMP402 Master Class: Managed beans and XPages: Your Time Is Now
JMP402 Master Class: Managed beans and XPages: Your Time Is NowRussell Maher
 
DanNotes XPages Mobile Controls
DanNotes XPages Mobile ControlsDanNotes XPages Mobile Controls
DanNotes XPages Mobile ControlsPaul Withers
 
CollabSphere 2018 - Java in Domino After XPages
CollabSphere 2018 - Java in Domino After XPagesCollabSphere 2018 - Java in Domino After XPages
CollabSphere 2018 - Java in Domino After XPagesJesse Gallagher
 
Play Framework: The Basics
Play Framework: The BasicsPlay Framework: The Basics
Play Framework: The BasicsPhilip Langer
 
Dr. Strangelove, or how I learned to love plugin development
Dr. Strangelove, or how I learned to love plugin developmentDr. Strangelove, or how I learned to love plugin development
Dr. Strangelove, or how I learned to love plugin developmentUlrich Krause
 
Sql Server & PowerShell
Sql Server & PowerShellSql Server & PowerShell
Sql Server & PowerShellAaron Shilo
 
Getting Started with the OpenNTF Domino API
Getting Started with the OpenNTF Domino APIGetting Started with the OpenNTF Domino API
Getting Started with the OpenNTF Domino APITeamstudio
 
Bootstrap4XPages webinar
Bootstrap4XPages webinarBootstrap4XPages webinar
Bootstrap4XPages webinarMark Leusink
 
Module design pattern i.e. express js
Module design pattern i.e. express jsModule design pattern i.e. express js
Module design pattern i.e. express jsAhmed Assaf
 
Servlet and jsp development with eclipse wtp
Servlet and jsp development with eclipse wtpServlet and jsp development with eclipse wtp
Servlet and jsp development with eclipse wtpodilodif
 
XPages Blast - Lotusphere 2011
XPages Blast - Lotusphere 2011XPages Blast - Lotusphere 2011
XPages Blast - Lotusphere 2011Tim Clark
 
HoloLens Unity Build Pipelines on Azure DevOps
HoloLens Unity Build Pipelines on Azure DevOpsHoloLens Unity Build Pipelines on Azure DevOps
HoloLens Unity Build Pipelines on Azure DevOpsSarah Sexton
 
XPages Workshop: Concepts And Exercises
XPages Workshop:   Concepts And ExercisesXPages Workshop:   Concepts And Exercises
XPages Workshop: Concepts And Exercisesddrschiw
 
Java for XPages Development
Java for XPages DevelopmentJava for XPages Development
Java for XPages DevelopmentTeamstudio
 

Tendances (20)

XPages and Java (DanNotes 50th conference, November 2013)
XPages and Java (DanNotes 50th conference, November 2013)XPages and Java (DanNotes 50th conference, November 2013)
XPages and Java (DanNotes 50th conference, November 2013)
 
Utilizing the OpenNTF Domino API
Utilizing the OpenNTF Domino APIUtilizing the OpenNTF Domino API
Utilizing the OpenNTF Domino API
 
Engage 2015 - 10 Mistakes You and Every XPages Developer Make. Yes, I said YOU!
Engage 2015 - 10 Mistakes You and Every XPages Developer Make. Yes, I said YOU!Engage 2015 - 10 Mistakes You and Every XPages Developer Make. Yes, I said YOU!
Engage 2015 - 10 Mistakes You and Every XPages Developer Make. Yes, I said YOU!
 
OpenNTF Domino API (ODA): Super-Charging Domino Development
OpenNTF Domino API (ODA): Super-Charging Domino DevelopmentOpenNTF Domino API (ODA): Super-Charging Domino Development
OpenNTF Domino API (ODA): Super-Charging Domino Development
 
Managed Beans: When, Why and How
Managed Beans: When, Why and HowManaged Beans: When, Why and How
Managed Beans: When, Why and How
 
JMP402 Master Class: Managed beans and XPages: Your Time Is Now
JMP402 Master Class: Managed beans and XPages: Your Time Is NowJMP402 Master Class: Managed beans and XPages: Your Time Is Now
JMP402 Master Class: Managed beans and XPages: Your Time Is Now
 
DanNotes XPages Mobile Controls
DanNotes XPages Mobile ControlsDanNotes XPages Mobile Controls
DanNotes XPages Mobile Controls
 
CollabSphere 2018 - Java in Domino After XPages
CollabSphere 2018 - Java in Domino After XPagesCollabSphere 2018 - Java in Domino After XPages
CollabSphere 2018 - Java in Domino After XPages
 
Play Framework: The Basics
Play Framework: The BasicsPlay Framework: The Basics
Play Framework: The Basics
 
Dr. Strangelove, or how I learned to love plugin development
Dr. Strangelove, or how I learned to love plugin developmentDr. Strangelove, or how I learned to love plugin development
Dr. Strangelove, or how I learned to love plugin development
 
Sql Server & PowerShell
Sql Server & PowerShellSql Server & PowerShell
Sql Server & PowerShell
 
Getting Started with the OpenNTF Domino API
Getting Started with the OpenNTF Domino APIGetting Started with the OpenNTF Domino API
Getting Started with the OpenNTF Domino API
 
Responsive interfaces
Responsive interfacesResponsive interfaces
Responsive interfaces
 
Bootstrap4XPages webinar
Bootstrap4XPages webinarBootstrap4XPages webinar
Bootstrap4XPages webinar
 
Module design pattern i.e. express js
Module design pattern i.e. express jsModule design pattern i.e. express js
Module design pattern i.e. express js
 
Servlet and jsp development with eclipse wtp
Servlet and jsp development with eclipse wtpServlet and jsp development with eclipse wtp
Servlet and jsp development with eclipse wtp
 
XPages Blast - Lotusphere 2011
XPages Blast - Lotusphere 2011XPages Blast - Lotusphere 2011
XPages Blast - Lotusphere 2011
 
HoloLens Unity Build Pipelines on Azure DevOps
HoloLens Unity Build Pipelines on Azure DevOpsHoloLens Unity Build Pipelines on Azure DevOps
HoloLens Unity Build Pipelines on Azure DevOps
 
XPages Workshop: Concepts And Exercises
XPages Workshop:   Concepts And ExercisesXPages Workshop:   Concepts And Exercises
XPages Workshop: Concepts And Exercises
 
Java for XPages Development
Java for XPages DevelopmentJava for XPages Development
Java for XPages Development
 

Similaire à BP204 It's Not Infernal: Dante's Nine Circles of XPages Heaven

It's Not Infernal: Dante's Nine Circles of XPages Heaven
It's Not Infernal: Dante's Nine Circles of XPages HeavenIt's Not Infernal: Dante's Nine Circles of XPages Heaven
It's Not Infernal: Dante's Nine Circles of XPages HeavenTeamstudio
 
Lessons from Highly Scalable Architectures at Social Networking Sites
Lessons from Highly Scalable Architectures at Social Networking SitesLessons from Highly Scalable Architectures at Social Networking Sites
Lessons from Highly Scalable Architectures at Social Networking SitesPatrick Senti
 
Reaktive Programmierung mit den Reactive Extensions (Rx)
Reaktive Programmierung mit den Reactive Extensions (Rx)Reaktive Programmierung mit den Reactive Extensions (Rx)
Reaktive Programmierung mit den Reactive Extensions (Rx)NETUserGroupBern
 
Clustered PHP - DC PHP 2009
Clustered PHP - DC PHP 2009Clustered PHP - DC PHP 2009
Clustered PHP - DC PHP 2009marcelesser
 
XPages Blast - ILUG 2010
XPages Blast - ILUG 2010XPages Blast - ILUG 2010
XPages Blast - ILUG 2010Tim Clark
 
Build an App with Blindfold - Britt Barak
Build an App with Blindfold - Britt Barak Build an App with Blindfold - Britt Barak
Build an App with Blindfold - Britt Barak DroidConTLV
 
3stages Wdn08 V3
3stages Wdn08 V33stages Wdn08 V3
3stages Wdn08 V3Boris Mann
 
Mining Social Web APIs with IPython Notebook (Strata 2013)
Mining Social Web APIs with IPython Notebook (Strata 2013)Mining Social Web APIs with IPython Notebook (Strata 2013)
Mining Social Web APIs with IPython Notebook (Strata 2013)Matthew Russell
 
Using RAG to create your own Podcast conversations.pdf
Using RAG to create your own Podcast conversations.pdfUsing RAG to create your own Podcast conversations.pdf
Using RAG to create your own Podcast conversations.pdfRichard Rodger
 
Designing A Project Using Java Programming
Designing A Project Using Java ProgrammingDesigning A Project Using Java Programming
Designing A Project Using Java ProgrammingKaty Allen
 
Intro to advanced web development
Intro to advanced web developmentIntro to advanced web development
Intro to advanced web developmentStevie T
 
Building Websites of the Future With Drupal 7
Building Websites of the Future With Drupal 7Building Websites of the Future With Drupal 7
Building Websites of the Future With Drupal 7Jay Epstein
 
Building Websites of the Future With Drupal 7
Building Websites of the Future With Drupal 7Building Websites of the Future With Drupal 7
Building Websites of the Future With Drupal 7Jay Epstein
 
LAMP is so yesterday, MEAN is so tomorrow! :)
LAMP is so yesterday, MEAN is so tomorrow! :) LAMP is so yesterday, MEAN is so tomorrow! :)
LAMP is so yesterday, MEAN is so tomorrow! :) Sascha Sambale
 
Think Async: Understanding the Complexity of Multithreading - Avi Kabizon & A...
Think Async: Understanding the Complexity of Multithreading - Avi Kabizon & A...Think Async: Understanding the Complexity of Multithreading - Avi Kabizon & A...
Think Async: Understanding the Complexity of Multithreading - Avi Kabizon & A...DroidConTLV
 
HAXTheWeb @ Apereo 19
HAXTheWeb @ Apereo 19HAXTheWeb @ Apereo 19
HAXTheWeb @ Apereo 19btopro
 
node.js, javascript and the future
node.js, javascript and the futurenode.js, javascript and the future
node.js, javascript and the futureJeff Miccolis
 
Puppet for SysAdmins
Puppet for SysAdminsPuppet for SysAdmins
Puppet for SysAdminsPuppet
 

Similaire à BP204 It's Not Infernal: Dante's Nine Circles of XPages Heaven (20)

May 2014-webinar
May 2014-webinarMay 2014-webinar
May 2014-webinar
 
It's Not Infernal: Dante's Nine Circles of XPages Heaven
It's Not Infernal: Dante's Nine Circles of XPages HeavenIt's Not Infernal: Dante's Nine Circles of XPages Heaven
It's Not Infernal: Dante's Nine Circles of XPages Heaven
 
Lessons from Highly Scalable Architectures at Social Networking Sites
Lessons from Highly Scalable Architectures at Social Networking SitesLessons from Highly Scalable Architectures at Social Networking Sites
Lessons from Highly Scalable Architectures at Social Networking Sites
 
Reaktive Programmierung mit den Reactive Extensions (Rx)
Reaktive Programmierung mit den Reactive Extensions (Rx)Reaktive Programmierung mit den Reactive Extensions (Rx)
Reaktive Programmierung mit den Reactive Extensions (Rx)
 
Clustered PHP - DC PHP 2009
Clustered PHP - DC PHP 2009Clustered PHP - DC PHP 2009
Clustered PHP - DC PHP 2009
 
XPages Blast - ILUG 2010
XPages Blast - ILUG 2010XPages Blast - ILUG 2010
XPages Blast - ILUG 2010
 
Build an App with Blindfold - Britt Barak
Build an App with Blindfold - Britt Barak Build an App with Blindfold - Britt Barak
Build an App with Blindfold - Britt Barak
 
All of Javascript
All of JavascriptAll of Javascript
All of Javascript
 
3stages Wdn08 V3
3stages Wdn08 V33stages Wdn08 V3
3stages Wdn08 V3
 
Mining Social Web APIs with IPython Notebook (Strata 2013)
Mining Social Web APIs with IPython Notebook (Strata 2013)Mining Social Web APIs with IPython Notebook (Strata 2013)
Mining Social Web APIs with IPython Notebook (Strata 2013)
 
Using RAG to create your own Podcast conversations.pdf
Using RAG to create your own Podcast conversations.pdfUsing RAG to create your own Podcast conversations.pdf
Using RAG to create your own Podcast conversations.pdf
 
Designing A Project Using Java Programming
Designing A Project Using Java ProgrammingDesigning A Project Using Java Programming
Designing A Project Using Java Programming
 
Intro to advanced web development
Intro to advanced web developmentIntro to advanced web development
Intro to advanced web development
 
Building Websites of the Future With Drupal 7
Building Websites of the Future With Drupal 7Building Websites of the Future With Drupal 7
Building Websites of the Future With Drupal 7
 
Building Websites of the Future With Drupal 7
Building Websites of the Future With Drupal 7Building Websites of the Future With Drupal 7
Building Websites of the Future With Drupal 7
 
LAMP is so yesterday, MEAN is so tomorrow! :)
LAMP is so yesterday, MEAN is so tomorrow! :) LAMP is so yesterday, MEAN is so tomorrow! :)
LAMP is so yesterday, MEAN is so tomorrow! :)
 
Think Async: Understanding the Complexity of Multithreading - Avi Kabizon & A...
Think Async: Understanding the Complexity of Multithreading - Avi Kabizon & A...Think Async: Understanding the Complexity of Multithreading - Avi Kabizon & A...
Think Async: Understanding the Complexity of Multithreading - Avi Kabizon & A...
 
HAXTheWeb @ Apereo 19
HAXTheWeb @ Apereo 19HAXTheWeb @ Apereo 19
HAXTheWeb @ Apereo 19
 
node.js, javascript and the future
node.js, javascript and the futurenode.js, javascript and the future
node.js, javascript and the future
 
Puppet for SysAdmins
Puppet for SysAdminsPuppet for SysAdmins
Puppet for SysAdmins
 

Plus de Michael McGarel

Extreme Development: Pair Programming
Extreme Development: Pair ProgrammingExtreme Development: Pair Programming
Extreme Development: Pair ProgrammingMichael McGarel
 
MWLUG2014 AD107 First Java App Tips
MWLUG2014 AD107 First Java App TipsMWLUG2014 AD107 First Java App Tips
MWLUG2014 AD107 First Java App TipsMichael McGarel
 
XPages Workshop: Customizing OneUI
XPages Workshop: Customizing OneUIXPages Workshop: Customizing OneUI
XPages Workshop: Customizing OneUIMichael McGarel
 
Two CCs of Layout -- Stat
Two CCs of Layout -- StatTwo CCs of Layout -- Stat
Two CCs of Layout -- StatMichael McGarel
 
XPages - The Ties That Bind
XPages - The Ties That BindXPages - The Ties That Bind
XPages - The Ties That BindMichael McGarel
 
Approaches to Enhancing the User Experience
Approaches to Enhancing the User ExperienceApproaches to Enhancing the User Experience
Approaches to Enhancing the User ExperienceMichael McGarel
 

Plus de Michael McGarel (8)

Next Level Coding
Next Level CodingNext Level Coding
Next Level Coding
 
Object(ive) Thinking
Object(ive) ThinkingObject(ive) Thinking
Object(ive) Thinking
 
Extreme Development: Pair Programming
Extreme Development: Pair ProgrammingExtreme Development: Pair Programming
Extreme Development: Pair Programming
 
MWLUG2014 AD107 First Java App Tips
MWLUG2014 AD107 First Java App TipsMWLUG2014 AD107 First Java App Tips
MWLUG2014 AD107 First Java App Tips
 
XPages Workshop: Customizing OneUI
XPages Workshop: Customizing OneUIXPages Workshop: Customizing OneUI
XPages Workshop: Customizing OneUI
 
Two CCs of Layout -- Stat
Two CCs of Layout -- StatTwo CCs of Layout -- Stat
Two CCs of Layout -- Stat
 
XPages - The Ties That Bind
XPages - The Ties That BindXPages - The Ties That Bind
XPages - The Ties That Bind
 
Approaches to Enhancing the User Experience
Approaches to Enhancing the User ExperienceApproaches to Enhancing the User Experience
Approaches to Enhancing the User Experience
 

Dernier

JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...amber724300
 
WomenInAutomation2024: AI and Automation for eveyone
WomenInAutomation2024: AI and Automation for eveyoneWomenInAutomation2024: AI and Automation for eveyone
WomenInAutomation2024: AI and Automation for eveyoneUiPathCommunity
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Kaya Weers
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...Nikki Chapple
 
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical InfrastructureVarsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructureitnewsafrica
 
React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...Karmanjay Verma
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024TopCSSGallery
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
Landscape Catalogue 2024 Australia-1.pdf
Landscape Catalogue 2024 Australia-1.pdfLandscape Catalogue 2024 Australia-1.pdf
Landscape Catalogue 2024 Australia-1.pdfAarwolf Industries LLC
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditSkynet Technologies
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
A Glance At The Java Performance Toolbox
A Glance At The Java Performance ToolboxA Glance At The Java Performance Toolbox
A Glance At The Java Performance ToolboxAna-Maria Mihalceanu
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observabilityitnewsafrica
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...BookNet Canada
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 

Dernier (20)

JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
 
WomenInAutomation2024: AI and Automation for eveyone
WomenInAutomation2024: AI and Automation for eveyoneWomenInAutomation2024: AI and Automation for eveyone
WomenInAutomation2024: AI and Automation for eveyone
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
 
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical InfrastructureVarsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
 
React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
Landscape Catalogue 2024 Australia-1.pdf
Landscape Catalogue 2024 Australia-1.pdfLandscape Catalogue 2024 Australia-1.pdf
Landscape Catalogue 2024 Australia-1.pdf
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance Audit
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
A Glance At The Java Performance Toolbox
A Glance At The Java Performance ToolboxA Glance At The Java Performance Toolbox
A Glance At The Java Performance Toolbox
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 

BP204 It's Not Infernal: Dante's Nine Circles of XPages Heaven

  • 1. BP204 It’s Not Infernal: Dante’s Nine Circles of XPages Heaven Paul Withers, Intec Systems Ltd Mike McGarel, Czarnowski Display Services Inc. © 2014 IBM Corporation
  • 2. Paul Withers  ICS Consultant at Intec Systems Ltd  IBM Champion 2011-2014  Co-Author XPages Extension Library  OpenNTF Director  Contributor to OpenNTF  Blogger on XPages, IBM Domino® Designer and beyond – http://www.intec.co.uk/blog
  • 3. Mike McGarel  Working with Web technologies for over 14 years  Working with IBM Notes® & IBM Domino® since version 4.6  Corporate developer  Site developer for MWLUG 3
  • 4. Dante’s Inferno  Author: Dante Alighieri, 14th Century  Part of Divine Comedy with Purgatorio and Paradiso  Journey by Dante over Easter Weekend 1300  Dante rescued and guided by the Roman poet Virgil  “Lasciate ogne speranza, voi ch’intrate” (“Abandon all hope, ye who enter here”) 4
  • 5. The Circles  First Circle: Limbo  Second Circle: Lust  Third Circle: Gluttony  Fourth Circle: Greed  Fifth Circle: Wrath  Sixth Circle: Heresy  Seventh Circle: Violence  Eighth Circle: Fraud  Ninth Circle: Treachery 5
  • 6. First Circle: Limbo Mihai Marius Mihu, http://www.flickr.com/photos/mihaimariusmihu/ 6
  • 7. Hybrid “Limbo” Applications  Add XPages into traditional Domino web applications  Use existing Domino databases as data source and new XPages database for user interface  Add mobile interface  Add XPages for sidebar 7
  • 8. SSJS – The “Limbo” Language  Server-side JavaScript leverages pre-existing knowledge – JavaScript syntax • NotesDocument.getUniversalID() • @DbLookup(@DbName(),“myViewName”,2, “[FAILSILENT]”) – Domino objects use LotusScript names – Many Formula Language @Functions supported • Kathy Brown has blogged which ones are not • http://www.runningnotes.net/index.php/2010/03/25/listof-formula-not-supported-in-xpages/ 8
  • 9. “Limbo” Property Values  Custom Language <xp:text value= “Database title is #{database.title}, database path is #{javascript: @Subset(@DbName(), -1);}”> </xp:text> 9
  • 11. Converting LS to SSJS  Replace “Dim” with “var”  Replace “ As ” with “:”  Add “;”  Remember methods etc are case sensitive and need ()  GetAllDocumentsByKey – need to pass key as Vector  Full syntax required for interacting with Notes Items  RECYCLE! 11
  • 12. Second Circle: Lust Mihai Marius Mihu, http://www.flickr.com/photos/mihaimariusmihu/ 12
  • 13. It’s All About Wants  Users want: – a familiar “look and feel” – something easy to use – to get in and out  You want them to want your app 13
  • 14. Looks Matter  First impressions are key  Better looking “equals” works better  Steve McDonagh’s great series on design principles: http://dominoyesmaybe.blogspot.com/2012/09/principals-ofdesign-1-balance.html 14
  • 15. Interface Makeovers  IBM’s OneUI (v3): http://infolib.lotus.com/resources/oneui/3.0/docPublic/index.htm  Extension Library / Dojo widgets http://dojotoolkit.org – XPages Help Application http://xhelp.openntf.org/  Twitter Bootstrap: http://getbootstrap.com  jQuery Plugins – jQuery UI: http://jqueryui.com 15
  • 16. 16
  • 18. Third Circle: Gluttony Mihai Marius Mihu, http://www.flickr.com/photos/mihaimariusmihu/ 18
  • 19. Don’t Make Browsers Eat Too Much!  xsp.resource.aggregate=true 19
  • 20. Temporary Gluttony – For Debugging!  xsp.client.resources.uncompressed=true 20
  • 21. Fourth Circle: Greed 21 Mihai Marius Mihu, http://www.flickr.com/photos/mihaimariusmihu/
  • 22. Avoid Greed on Server 22
  • 24. Persistence Options  Keep Pages in Memory – Remembering, remembering, remembering… – xsp.persistence.mode=basic – Best for…quick retrieval, few users  Keep Pages on Disk – Writing…next? You want it again? Reading… – xsp.persistence.mode=file – Best for…lots of users, but slower retrieval 24
  • 25. Persistence Options  Keep Only The Current Page in Memory – Remembering, remembering, remembering… – Oh, new page? Writing….and now… – Remembering, remembering, remembering… – xsp.persistence.mode=fileex – Best for…lots of users, quick retrieval of current page 25
  • 26. Persistence Options  GZip Persisted Files – xsp.persistence.file.gzip – Default=false – Writing…next? You want it again? Reading…  Persist Files Asynchronously – xsp.persistence.file.async – Default=true – Server busy, remembering. Next? (Writing, writing) 26
  • 27. Persistence Options  Maximum Pages – xsp.persistence.tree.maxviews • Default=4 • Remembering, remembering, remembering • Only applies when xsp.persistence.mode=basic – xsp.persistence.file.maxviews • Default=10 • Writing, retrieving, writing, writing, discarding… • Default folder defined by xsp.persistence.dir.xspstate 27
  • 28. Page Persistence Mode  xsp.persistence.viewstate=fulltree – Default option, whole component tree persisted  xsp.persistence.viewstate=nostate – No component tree stored, similar to xsp.session.transient=true  xsp.persistence.viewstate=delta – Valid if pages stored in memory – Only stores changes since page loaded 28
  • 29. Page Persistence Mode  xsp.persistence.viewstate=deltaex – Valid if multiple pages stored in memory – Stores full component tree for current page, deltas for others  Viewstate property on XPage allows developer to define at page level 29
  • 30. xsp.session.transient  xsp.session.transient=“false” sets XPage stateless – Default VALUES overridden between requests – Default STATES not overridden  NOT “Go to next page from current” – INSTEAD “Go to next page from default”  NOT “Toggle show detail from previous state” – INSTEAD “Toggle show detail from default”  Great for large, read only pages, Websites – no storage 30
  • 31. Fifth Circle: Wrath 31 Mihai Marius Mihu, http://www.flickr.com/photos/mihaimariusmihu/
  • 32. More Responsiveness = Less Anger  Partial page refreshes  Client-side processing – Dojo JavaScript framework (included with XPages) – jQuery JavaScript framework (easily added) – Other JavaScript frameworks or custom scripts  Server-side processing – XAgent (XPage of just code with UI redirect) – Java (design element or WebContentWEB-INFsrc) 32
  • 33. Meet the Users’ Expectations  It’s a “mad mad mad mad world” – Devices – Locations – Connectivity  Responsive design options: – Dojo layout container – Bootstrap responsive  Embedded experience 33
  • 35. Sixth Circle: Heresy 35 Mihai Marius Mihu, http://www.flickr.com/photos/mihaimariusmihu/
  • 36. Java  “IBM always wanted us to use Java” – NO! 36
  • 37. Why?  #{javascript:…} means parse this string using SSJS rules  Pass commands to VariableResolver  Look for corresponding variable name  Map to a Java object/method  So why not go straight to the source? 37
  • 40. OpenNTF Domino API  Document.replaceItemValue(“myDateField”, new Date()); – Or Document.put(“myDateField”, new Date());  for (Document doc : dc) {…}  Transactional Processing  SyncHelper  Email Helpers  OpenLog  Document Scanner  Database Listeners 40
  • 41. Seventh Circle: Violence 41 Mihai Marius Mihu, http://www.flickr.com/photos/mihaimariusmihu/
  • 42. Themes  Themes can force controls to behave consistently  But some elements cannot be manipulated easily –EventHandlers don’t have a default stylekit –They can have a themeId applied though  Themes loaded at end of page rendering –getStyleKitFamily() to find default theme id –Or use Mark Leusink’s debug toolbar 42
  • 43. “Strong-Arming” All Events  Dojo Standby Control on OpenNTF – Hijacks partial refreshes – Adds standby message during long-running partial refreshes – http://openntf.org/XSnippets.nsf/snippet.xsp?id=standbydialog-custom-control 43
  • 44. Eighth Circle: Fraud Mihai Marius Mihu, http://www.flickr.com/photos/mihaimariusmihu/ 44
  • 45. SessionScope  SessionScope is fraudulent – Session only for current application – Browser session, not user session 45
  • 46. HTTPOnly Cookies  Since Domino 9.0 SessionID and DomAuthSessId are now HTTPOnly  Cannot be modified or removed via JavaScript –http://openntf.org/XSnippets.nsf/snippet.xsp?id=clearsession-whole-server does not work  Cannot be intercepted 46
  • 47. How To Add Your Own HTTPOnly Cookie  Serdar Basegmez XSnippet  http://openntf.org/XSnippets.nsf/snippet.xsp?id=extendedcookie-implementation-for-httponly-cookies 47
  • 48. Ninth Circle: Treachery Mihai Marius Mihu, http://www.flickr.com/photos/mihaimariusmihu/ 48
  • 49. Beyond Domino Designer  Generate Javadocs  Eclipse Modeling Tools to create UML designs – Use latest Eclipse for RCP and RAP Developers – Download from Eclipse Marketplace  Atlassian SourceTree and Perforce P4Merge  SHOW 103 Wednesday 8am  http://www.slideshare.net/paulswithers1/beyond-dominodesigner 49
  • 50. We climbed, he first, I following his steps, Till on our view the beautiful lights of heaven Dawned through a circular opening in the cave: Thence issuing we again beheld the stars Dante, Inferno, Canto 34 130-133 50
  • 51. Summary  XPages is a gateway to other worlds  It is a journey – small steps lead to great strides  Learn from what others have done  Be prepared for the “Great Beyond” 51
  • 52. Other Sessions  SHOW103: Source Control 101: Implementing an End-to-End Solution  SHOW104: Practical Java  AD201: Domino Application Development: Today and Tomorrow  AD202: Get The Best Out of Bootstrap4XPages  AD207: Widgets, LiveText and Now OpenSocial  AD209: Making Your Team More Productive with IBM Domino Designer JMP101: Java for XPages Development  JMP106: Make Your Business Open and Social using IBM Notes Social Edition 9.0.1  BP207: Don’t Reinvent The Wheel – Re(use) Open Source Software from OpenNTF  GURU101: Gurupalooza 52
  • 53. IBM Resources  XPages.Info: http://xpages.info  XPages Forum: http://www-10.lotus.com/ldd/xpagesforum.nsf  Notes/Domino Application Development Wiki: http://www-10.lotus.com/ldd/ddwiki.nsf  Collaboration Today: http://collaborationtoday.info  OpenNTF: http://openntf.org  OpenNTF Snippets: http://openntf.org/XSnippets.nsf/home.xsp  The “XPages trilogy”: – Mastering XPages, 2nd Edition due shortly (IBM Press) – XPages Extension Library (IBM Press) – XPages Portable Command Guide (IBM Press) 53
  • 54. Community Resources  Planet Lotus: http://planetlotus.org  Notes in 9 (videos): http://www.notesin9.com  XPages cheat sheets: http://www.xpagescheatsheets.com  YouAtNotes XPages wiki: http://www.xpageswiki.com  Stack Overflow: http://stackoverflow.com/questions/tagged/xpages 54
  • 55.  Access Connect Online to complete your session surveys using any: – Web or mobile browser – Connect Online kiosk onsite Paul Withers Intec Systems Ltd pwithers@intec.co.uk http://www.intec.co.uk/blog @PaulSWithers 55 Mike McGarel Czarnowski Display Services Inc. mcgarelgramming@gmail.com http://www.bleedyellow.com/blogs/McGarelGramming/ @mmcgarel
  • 56. Acknowledgements and Disclaimers Av ailability. References in this presentation to IBM products, programs, or services do not imply that they will be available in all cou ntries in which IBM operates. The workshops, sessions and materials have been prepared by IBM or the session speakers and reflect their own views. They ar e provided for informational purposes only, and are neither intended to, nor shall have the effect of being, legal or other guidance or advice to any participant. While efforts were ma de to verify the completeness and accuracy of the information contained in this presentation, it is provided AS-IS without warranty of any kind, express or implied. IBM shall not be responsi ble for any damages arising out of the use of, or otherwise related to, this presentation or any other materials. Nothing contained in this presentation is intended to, nor shall have t he effect of, creating any warranties or representations from IBM or its suppliers or licensors, or altering the terms and conditions of the applicable license agreement governing the use of IBM software. All customer examples described are presented as illustrations of how those customers have used IBM products and the results they may have achieved. Actual environmental costs and performance characteristics may vary by customer. Nothing contained in these materials is intended to, nor shall have the ef fect of, stating or implying that any activities undertaken by you will result in any specific sales, revenue growth or other results. © Copyright IBM Corporation 2014. All rights reserved.  U.S. Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.  IBM, the IBM logo, ibm.com, IBM Collaboration Solutions and IBM Domino are trademarks or registered trademarks of Internation al Business Machines Corporation in the United States, other countries, or both. If these and other IBM trademarked terms are marked on their first occurrence in this information w ith a trademark symbol (® or ™), these symbols indicate U.S. registered or common law trademarks owned by IBM at the time this information was published. Such trademarks may also be regi stered or common law trademarks in other countries. A current list of IBM trademarks is available on the Web at “Copyright and trademark information” at www.ibm.com/legal/copytrade.shtml Illustrations of the Inferno courtesy of Mihai Marius Mihu, http://www.flickr.com/photos/mihiamariusmihu/ 56