Post on 31-Aug-2014
description
#engageug
Improving Your IBM Domino Designer
ExperienceJulian Robichaux :: panagenda Kathy Brown :: PSC Group
!1
#engageug
Who We Are• Julian Robichaux
• panagenda • nsftools.com • @jrobichaux
• Kathy Brown • PSC Group LLC • runningnotes.net • @runningkathy
!2
#engageug
The Goals of this Session• Understand how Eclipse™ and IBM® Domino® Designer
work together • especially by using helpful things that “come for free” with Eclipse
• Avoid breaking things • and learn how to fix them when they break
• Work more efficiently • Some information will be old hat, some
(hopefully) will be brand new
!3
#engageug
Domino Designer in Eclipse• “DDE” to you and me
• Is it in, on, with, or next to Eclipse? • perhaps we should say “wrapped inside of”
• But I thought Eclipse was just an IDE! How can it do all this “wrapping” stuff?
!4
#engageug
An Informal History of Eclipse• Began life as an IBM project to replace the VisualAge®
IDE • VisualAge had compilers for C, C++, Smalltalk, Java, Cobol, and
several other languages
• Eclipse developed as a platform (written in Java) that could:
• run on multiple operating systems • allow development for many different languages & content types • provide (but not require) a GUI • use plugins for extensibility
!5
#engageug !6
“The Eclipse platform itself is a sort of universal tool platform - it is an IDE for anything and nothing in
particular.”
http://www.eclipse.org/platform/overview.php
#engageug
A Very Abbreviated Timeline• 1999: Development of Eclipse begins at IBM • 2001: Eclipse 1.0 released, eclipse.org created • 2002: Eclipse 2.0 released • 2004: Eclipse Foundation formed, Eclipse 3.0 released
under the new Eclipse Public License • 2004-2013: New Eclipse “simultaneous release” every year
• 3.x through 2011 • 4.x starting in 2012
!7
#engageug
Also in 1999...
!8
#engageug
Why Are You Telling Me This?• Things to understand:
• Eclipse has a long, rich history completely outside of Domino • Many (most?) of the “new” DDE things are actually “old” Eclipse
things • Name overlaps (view, navigator, workspace, etc.) • Two completely separate JVMs • When you mix two very different (and established) technologies
like this, things are bound to be confusing or... difficult
!9
#engageug
Installing (and reinstalling)measure twice, cut once
!10
#engageug
Considerations: Fresh Install• A well defragged hard drive • Disable virus scan on entire Notes directory if possible,
NSF and JAR files in Notes directory at minimum • Disable the Windows Search/Index service • Don’t use an encrypted portion of your disc • Disable Aero on Windows 7
!11
#engageug
Considerations: VMWare• Fixed size page file, 1.5 to 2 times your RAM
• Defrag first, then restart and fix the page size
• Turn off things that poll • CD auto-play, Bluetooth, shared or mapped drives
• Defrag+compact regularly (or use a fixed size VM) • Keep your VMWare Tools (drivers) updated
!12
#engageug
Considerations: VMWare Fusion
!13
#engageug
Install Tips• If you’re using VMWare, take a snapshot • Install EVERYTHING (check all the boxes, even if you don’t
think you’ll use Sametime, Connections, etc.) • Don’t get clever with your install paths • Reboot when you’re done, then delete the temp folder • If you’re using VMWare, take another snapshot
!14
#engageug
Upgrade Tips• Install over the old copy, or nuke it and start over?
• Always better to nuke (uninstall first, then reboot and delete -- don’t just delete) and start fresh *
• If you can’t, at least consider deleting or renaming the framework and the data\workspace\.config folders first (gets rid of old JAR files)
• Resist the urge to do the trick where you rename the old directory so you can have multiple versions of the client on your workstation
!15
*Spin your chair 3 times clockwise while throwing salt over your LEFT shoulder
#engageug
Upgrade Tips• “Install Interrupted” and other errors
• Often caused by incomplete or improper uninstall of previous client version (registry entries pointing to files that no longer exist, etc.)
• Use the IBM “NICE” tool • http://www-01.ibm.com/support/docview.wss?uid=swg21459714
!16
#engageug
Reinstalling• Best bet is to uninstall, use the NICE tool, then reinstall
• Also reinstall/repair options if you re-run the installer
• Command line option: • setup.exe /v"REINSTALLMODE=vamus REINSTALL=ALL"
!17
#engageug
JVM Memory Settings• make sure Xms is smaller than
Xmx, for garbage collection purposes
• you might have issues with Xmx larger than 1024
• NOTE: these settings can get reset after a FixPack install
• http://nsftools.com/blog/blog-08-2013.htm
• DDE 9.0.1 GETS MORE MEMORY BY DEFAULT!
!18
http://www-01.ibm.com/support/docview.wss?uid=swg21617708
#engageug
Understanding Eclipse Terminology
and a few configuration details
!19
#engageug
Perspectives and Views• What are they? • Perspectives are layouts of Views
• Think of a painter’s palette
• Views are panels or tabs with the tools you need • Think of the colors on the palette
!20
#engageug
Perspectives and Views
!21
Perspective
View
#engageug
Perspectives• Default perspectives:
• Debug, Domino Designer, Forms/Views, Java, Java Browsing, Javascript, and XPages
!22
#engageug
More Perspectives• Each perspective has Views, menu items, and toolbars
needed for that focus • For example: the navigator in the Domino Designer perspective
has Frameset and Pages, the one in the XPages perspective does not
!23
#engageug
Customizing Perspectives• Menu option “Customize Perspective...”
• Add or remove Eclipse views • Add or remove Menu and Toolbar items
!24
#engageug
Customizing Perspectives• “Manual” customization
• Move view panes all to the left or right for more screen real estate
• Drag up Outline • Add Package Explorer
(Window - Show Eclipse Views)
!25
#engageug
Saving Perspectives• Save Perspective As...
• Always a good idea to do this BEFORE customizing
• You CAN make changes in a copy, however if you make them in the default perspective, then your changes will be there whenever you open DDE
• i.e. changing IDs opens the default perspective
• Unfortunately, you cannot make DDE open to your custom perspective
!26
#engageug
My Favorite View: Progress
!27
Window - Show Eclipse Views -
Other... - General - Progress
#engageug
Tips for Views & Perspectives• Make the tab full screen
• Double-click the tab title, and double-click again to reset it • Or click the small “maximize” icon on the tab bar • Or use Ctrl-M
• Use Window - Reset Perspective when you’ve totally borked it
!28
#engageug
Working Sets• It’s an Eclipse thing for organizing your projects
(Notes DB == Eclipse project) • All applications for a client, or all applications
for a project, or only templates, or only production applications, etc.
• Switching working sets does NOT release the open applications from memory (!)
!29
#engageug
Working With… Working Sets• Select one or more working sets, or no working sets (shows
all applications ever opened in the history of time) • Edit Current Working Set • Manage Working Sets
!30
#engageug
More Working Sets• New in Notes 9: select Applications Not in a Working Set • Working Set preferences
• “Ask me” is good if you often (ever) open the wrong app
!31
#engageug
Preferences and Settings• Notes client and DDE shared storage of settings
• Eclipse is a cornucopia of plugins • Every plugin has its own folder in [notesdata]\workspace
\.metadata • There is also a central Eclipse preference store
(a tiny bit like Windows registry, but much better behaved)
• OSGi handles plugin lifecycle and caching
!32
#engageug
The Workspace Folders• Main subfolders under the [notesdata]\workspace folder
are: • .config -- OSGi cache, JVM cache, Eclipse startup config • .metadata -- plugin folders, preference files • applications -- third-party plugins you’ve installed • logs -- Eclipse logs, Java core dumps and heap dumps • UDM -- spellcheck files • also a folder for each server you access from DDE
(including “Local”), with subfolder for each database
!33
#engageug
Deleting the Workspace• Removes caches, configurations, preferences, settings
• including Notes/DDE UI customizations
• Deletes [most] third-party plugins you’ve installed
• Deletes extra settings in rcpinstall.properties
• Everything will be rebuilt with default settings
!34
#engageug
The -clean Option• -clean is a less nuclear option • Rebuilds the plugin caches and some
of the Eclipse/OSGi config files • but you don’t lose your preferences
• Make a COPY of your Notes shortcut, change target to:
• notes.exe -RPARAMS –clean
• Delete the copy of your shortcut when you’re done so you don’t accidentally do this every time you open Notes
!35
#engageug
Cleaning a Broken DDE• Files you could delete (or rename) manually
• Special workspace folders for each server+db you access
• workspace\.metadata\.plugins\ • org.eclipse.core.resources (additional DDE project cache) • com.ibm.rcp.personality.framework (perspective info) • org.eclipse.ui.workbench\workingsets.xml • com.ibm.designer.domino.ide.resources\wsInfo.xml
!36
#engageug
Back Up Your Settings• Can’t I just back up my whole workspace folder?
• You could, but not always portable between installations/versions
• What about my workspace\.metadata folder? • Still too much
• What about this specific list of folders... ? • There is an easier way if you will just
stop asking questions
!37
#engageug
Back Up Your Settings• Hat tip to Paul Withers
• http://www.intec.co.uk/quick-setup-restore-of-domino-designer
• Switch to a non-Domino perspective in DDE (like “Java”) • File - Export - General - Preferences
• Saves as a .epf file (text file, you can look to see what’s there)
• To import: File - Import - General - Preferences
!38
#engageug
Back Up Your Settings
!39
Bonus: also backs up your SAVED custom Perspectives
#engageug
General Settingsaka: boxes you can check
!40
#engageug
File - Preferences• There are so many settings in DDE, you might not have
seen them all – here are a few useful ones • Please don’t be insulted if you’ve seen some of these before • Not everyone is as smart as you • Newer versions of DDE sometimes have new settings
• Almost all of the DDE specific preferences (from File - Preferences) map to Eclipse preferences
!41
#engageug
Default Language Type
!42
#engageug
Line Numbering
!43
#engageug
Spellcheck (you shud prolly turn this off)
!44
#engageug
Colors and Fonts
!45
Basic - Text Font is the default editor font, you can override for Java and JavaScript here,
LotusScript has its own settings under Domino Designer.
#engageug
Hotkeys• Help - Key Assistor...
• Control - Shift - L or...
• File - Preferences - General - Keys
!46
#engageug
Hotkeys
!47
#engageug
Hotkeys Shortlist• Ctrl + / -- toggle single-line comments • Ctrl + Shift + / -- toggle block comments • Ctrl + i -- auto-format • Ctrl + F6 -- switch between editor tabs • Ctrl + M -- maximize or restore a tab • Ctrl + Space -- all sorts of code-completion things
!48
#engageug
Other People’s Preferences• http://www.slideshare.net/SocialBizManager/ibm-domino • http://notesin9.com/index.php/2012/02/12/notesin9-043-
domino-designer-tips-and-tweaks • http://xpagetips.blogspot.com/search/label/Designer%20Tip • http://nathantfreeman.wordpress.com/taming-ibm-domino-
designer • http://www.slant.co/topics/67/~what-are-the-best-
programming-fonts
!49
#engageug
Working With Codeand doing things more easily
!50
#engageug
Search Tips• Old skool: File - Application - Design Synopsis...
• It still exists!
!51
#engageug
Search Tips• Single code element: Control + F
• make sure you use “wrap search” • regular expressions!
!52
#engageug
Search Tips• Full design search: Search - File... (or Ctrl + H)
!53
#engageug
Search Tips• Full design search: Search - File... (or Ctrl + H)
• Search: • entire workspace (open databases) • all databases in a working set • all design elements in a database (project) • selected design elements
• File patterns allow you to specify certain design elements (use the “Choose” button for a list), or use * for all design elements
• Non-code elements (forms, views, etc.) have their DXL searched • Regular expressions • Results listed in a Search view (tab) you can leave open
!54
#engageug
Searching Help - Scopes
!55
#engageug
LotusScript Tips• Comment and Code Templates
!56
#engageug
LotusScript Tips• Determining the correct error line number
• Navigate - Go to erl line... • Needed in DDE 8.5.x, seems to be less necessary in 9.0
!57
#engageug
XPages Tips• Changing the local web server port (8.5.3+)
• not just XPages, any DDE local web preview • great if you’re running a local web server (on purpose or
unknowingly (Skype!))
!58
#engageug
XPages Tips• Troubleshooting local web server port conflicts
• TCPView from sysinternals.com (now Microsoft Sysinternals)
!59
#engageug
XPages Tips• Where do all the print statements go for local debugging?
• log.nsf -or- data\IBM_TECHNICAL_SUPPORT\console.log
• Extra logging info • config file: data\domino\workspace\.config\rcpinstall.properties
• see the commented log levels at the bottom of the file
• logs at: data\domino\workspace\logs\trace-log-0.xml • might have to shut down local web preview for logs to flush • notice the “domino” in that path...
!60
#engageug
XPages Tips• The dreaded “Error 500” on local XPages preview
• Turn on runtime error notification (Application Properties, XPages tab)
• Test a very basic XPage (is it all XPages, or just that one?) • Add error handling (JavaScript and Java) • Check the logs (see previous slide) • Check for duplicate (previous version) JAR files in notes\osgi:
• Troubleshooting tips in Julian’s April 2012 Clippings Newsletter
• http://www.socialbizug.org/communities/community/clippings
!61
#engageug
XPages Tips• Problems Tab, “configure contents...”
• Show only errors “On any element in same project”
!62
#engageug
XPages Tips• To Build Automatically or Not To Build Automatically
!63
Working Local?
Yes No
Sure, Build Automatically No, Just No
#engageug
Java Tips• Get stack trace line numbers from Java agents and
script libraries • No performance penalty
!64
#engageug
Java Tips• Save the whole agent when you save a class in the
agent
!65
#engageug
Java Tips• Code templates
• Java - Editor - Templates • Ctrl + Space (FTW!) • Default shortcuts to start with:
• for, while, try, new, final, toarray
• Make your own for fun and profit!
!66
https://www.socialbizug.org/blogs/2ec5d0ed-d04e-4b18-9610-9819fcebca79/entry/using_code_templates_in_dde?lang=en_us
#engageug
Java Tips• TODO and FIXME
• Eclipse view: Other - General - Tasks
!67
#engageug
Java Tips• Adding Domino API Javadocs for hover help
• Domino Javadoc Generator: http://domino-javadoc.sourceforge.net
!68https://www.socialbizug.org/blogs/2ec5d0ed-d04e-4b18-9610-9819fcebca79/entry/adding_hover_help_to_domino_designer
#engageug
Java Tips• Code Snippets
• Built-in Eclipse functionality • Right-click code and choose “Add to snippets” • Drag and drop to paste into editors
!69
#engageug
Java Tips• Scrapbook pages
• from Package Explorer: • Right-Click - New - Other • Java - Java Run\Debug • Scrapbook Page
• Use a Console view for output • Highlight code, right-click, execute • System.out.println() goes to console
(Other - General - Console)
!70
#engageug
Java Tips• Scrapbook Pages
• Evaluate String commands, regular expressions, XML parsing, etc.
!71http://www.socialbizug.org/blogs/2ec5d0ed-d04e-4b18-9610-9819fcebca79/entry/java_scrapbook_pages
#engageug
Java Tips• Debugging
• you CAN debug Java from DDE • server or client, although debugging a server is a pretty bad idea
!• see Julian and Mark Myers’ presentation from Lotusphere 2012: • http://londondevelopercoop.com/ldc.nsf/pages/goodies
#engageug
Java Tips• Eclipse Tips and Tricks page
• http://help.eclipse.org/indigo/topic/org.eclipse.jdt.doc.user/tips/jdt_tips.html
!73
#engageug
Pluginssoup up your ride
!74
#engageug
Source Control• Even if you aren’t working with a team
• Easily roll back specific changes • Track changes (what/when/who) • Simple system for having a backup, while working locally
• OpenNTF project for 8.5.2, native in 8.5.3 • SVN, CVS, Git, Mercurial
!75
#engageug
Source Control - Setting• Sometimes DDE hangs (GASP!)
• Turning off On Disk Project syncing can help
• Tip! • You have to remember to then manually sync
!76
#engageug
Source Control - Resources• https://www.socialbizug.org/blogs/articles/entry/
setting_up_source_control • https://www.socialbizug.org/blogs/articles/entry/
using_source_control • https://www.socialbizug.org/blogs/articles/entry/
5_tips_for_source_control_in_domino • http://xpagetips.blogspot.com/2013/04/source-control-good-
stuff.html • From Lotusphere 2012: AD102 – Source Control For The
IBM Lotus Domino Developer, by Declan Lynch
!77
#engageug
Extension Library• Depending on version of Domino, no install required
• 8.5.3 UP1 or 9
• For latest and greatest, go to OpenNTF.org
• Install via an Update Site • Wiki entry on installing an update site: • http://bit.ly/UpdateSite
!78
#engageug
Extension Library Install Tips• Do NOT install multiple versions
• If you’ve got 8.5.3 UP1 and you go get the latest from OpenNTF.org, REMOVE the library that came with 8.5.3 UP1
• Install the Extension Library on DDE AND your server
• Get the sample database
• Don’t mix and match versions (Server/DDE)
!79
#engageug
Third Party Plugins• Finding third-party plugins
• Looks for plugins compatible with Eclipse 3.2 - 3.4 (they might work)
• Before you install • Completely restart the Notes client • Take a snapshot if you’re using VMWare
!80
#engageug
Third Party Plugins• File - Application - Install
• You might have to be in a DDE (non-custom) perspective to get the Application - Install menu option
• There is a DDE Preference to allow plugin installs
• After you install • Manually shut down and restart the Notes client again
(don’t use the “Restart now” option)!81
#engageug
FreeMem• http://www.junginger.biz/eclipse/freemem.html
!82
#engageug
QuickREx• http://sourceforge.net/p/quickrex/wiki/Home
!83
#engageug
FindBugs for Domino Designer• http://openntf.org/p/FindBugs+for+DominoDesigner • Christian Güdemann
!84
#engageug
Writing Your Own Plugins• What you need:
• DDE 8.5.1+ • Eclipse 3.4.2 (Ganymede for RCP/Plugin Developers)
• http://www.eclipse.org/downloads/packages/release/ganymede/sr2 • You should use EXACTLY this version (not 3.2, not 3.5, not 4.2...)
• Lotus Expeditor Toolkit 6.2.x • http://www.ibm.com/developerworks/lotus/downloads/toolkits.html
• Hints, tips, and instructions • http://bit.ly/pluginredwiki • http://www-10.lotus.com/ldd/lewiki.nsf • Tim Tripcony and Maureen Leland’s Lotusphere 2011 presentation
• “AD102: Hacking IBM Lotus Designer (Gently)”!85
#engageug
Thank You!
!86
Kathy BrownPSC Group LLCkathy@runningnotes.netTwitter: @runningkathy
Julian Robichauxpanagendajrobichaux@panagenda.comTwitter: @jrobichaux