Author: Ulrich Krause
Lotusphere2006 Presentations and Samples
A huge “Thank you” to all speakers at Lotusphere2006 for publishing session presentations and samples.
How to open a Notes Database in Ten Years
Assume you have a database from an employee in ODS 43 format. The employee quit the company and you put his mail file on a DVD.
Whoooosh … 10 years later you are asked to find a special document in this database. At this time you’re running Notes 12.5 with ODS 99. I know, Lotus Notes will always be downward compatible …
What I want to say is, that all archive systems offer an option to have a copy of all or of all selected documents on a cd or DVD and you can hand out this storage to anyone, regardless if he or she has the associated appication installed on his computer.
The data is written on the storage together with a runtime version of the application the data is created with.
Will we ever have this feature in Notes ? Anyone at IBM reading this and like to leave a comment ?
Notes Client On USB Key – The Starter
As I posted earlier this week, I was about to write a small starter application that would do all the necessary changes to the notes.ini when you have a notes installation on an usb key. Well here it is: nstart.exe
When you plug in your usb key to a different computer, you cannot be sure to have the same drive letter for your usb device than before.
In this case your Notes won’t start and you have to tweak the notes.ini manually.
Copy nstart.exe to the notes root directory. When you double click nstart.exe, the tool will set all occurencies of drives ( for example e:\ ) to your current drives letter and then start notes.exe.
The code is still very beta; it should have more error handling, I know. But I decided to release the code in this very early state. The code works for me but maybe not for you. So please give me a feedback when you find the code useful. Even if you think this stuff is crap, please let me know. And if you find errors ( and I’m sure you will ) just leave a comment.
// nstart.cpp
/////////////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "nstart.h"
#include "CPathSplit.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
#define NOTES_INI "notes.ini"
#define NOTES_PRG "notes.exe"
#define BACKSLASH ":\\"
CWinApp theApp;
CFile* fin = NULL;
CFile* fout = NULL;
CFileException ex;
CString Drives ="CDEFGHIJKLMNOPQRSTUVWXYZcdefghijklmnopqrstuvwxyz";
char AppPath[MAX_PATH];
int i, n, j;
using namespace std;
/////////////////////////////////////////////////////////////////////////////
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
int nRetCode = 0;
if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
{
cerr < < _T("Fatal Error: MFC initialization failed") << endl;
nRetCode = 1;
}
else
try
{
GetModuleFileName(AfxGetApp()->m_hInstance,AppPath,MAX_PATH);
CString l_oStrPath = AppPath;
CPathSplit l_oPathSplit(l_oStrPath);
CString l_oStrFileExt;
CString l_oStrPathCustom;
l_oStrFileExt = NOTES_INI;
l_oStrPathCustom = l_oPathSplit.GetPath(ePATHEL_DIRECTORY, & l_oStrFileExt);
CString BS(_T(BACKSLASH));
CString strPath(AppPath);
CString ThisDrive (strPath.Left(1) + BS);
fin = new CFile( l_oStrPathCustom, CFile::modeRead | CFile::shareDenyNone);
ULONGLONG dwLength = fin->GetLength();
char pbuf[99999] = {dwLength}; // read NOTES.INI
UINT nBytesRead = fin->Read( pbuf,dwLength );
fin->Close();
CString buffer(pbuf);
// replace drive letters with current drive
for (i=0; i < Drives.GetLength() ; i++) {
CString DriveLetter (_T(Drives.GetAt(i) + BS));
j = buffer.Replace(_T(DriveLetter), _T(ThisDrive));
}
// write notes.ini
fout = new CFile( l_oStrPathCustom ,CFile::modeWrite | CFile::shareDenyWrite);
fout->Write(_T(buffer),dwLength);
fout->Flush();
fout->Close();
// start the client
l_oStrFileExt = NOTES_PRG;
l_oStrPathCustom = l_oPathSplit.GetPath(ePATHEL_DIRECTORY, & l_oStrFileExt);
ShellExecute(0, "open", l_oStrPathCustom, 0, 0, 1);
}
catch (CFileException* pEx)
{
// if an error occurs, just make a message box
pEx->ReportError();
pEx->Delete();
nRetCode = 1;
}
catch (...)
{
nRetCode = 1;
}
return nRetCode;
}
Download Source
Lotusphere2006 – BP303 The Great Code Giveaway
you can download the sample database here.
Notes Client on USB key
IBM announced Project “Wanda” at Lotusphere2006.
Project Wanda : for roaming users you can carry for entire Notes experience on a usb key that can plug into any computer regardless of if it has notes installed.
This is a great idea. I’m not at Lotusphere; so I’m not able to ask for further details. ( anyone out there who has details and would share his knowledge ? )
I guess, that they will use U3 technologie to accomplish this.
But why wait for Wanda ?
For all of you, who haven’t already have a Notes Client “installation” on an USB-key, here is what I did:
I just copied my local Notes folder to the key and tweaked the notes.ini. That was easy, wasn’t it ?
Ok, there are a few limitations:
- The stick must have at least 350 MB of free space
- Depending on the drive letter you have to tweak the notes.ini manually once again
- You cannot start a Notes Database by double-clicking ( registry entries are missing).
As a workaround whilst waiting for Wanda, I will write a “starter” asap, so all you have to do is plug in the key and double click the nstart.exe. The nstart.exe will change the notes.ini for you.
The Unvarnished Truth
About 42% of the knowledge that people use to get their jobs done comes from other people
found in the header picture of elsmore.net
Blog, blog, blogging from Lotusphere
Sitting in good ol’ Germany, I’m eager to read the “Bloggregator” ( by Richard Schwartz )
Yesterday there was a real information overflow due to a huge amount of blog entries. Today it seems to me that soft drinks flavoured with Yak pee, coffee and other energy drinks do not work any longer for the hardcore bloggers.
You can count the number of new entries by 10 fingers. What’s up ? 😉
Anyway, have a good time there at Lotusphere2006.
Why at least pay for what you can get free of charge ?
According to Ed Brill there are plans to have “standard out-of-the-box RSS feed support as well as blog template support” .
To be honest; why do I have to pay for new “features” I can get free of charge from the Open Source community ? I can download a well working Blog template from OpenNTF and can code a RSS feed using generic Lotus Notes capabilities.
It is ridiculous to offer more and more new features but leave the core product as is.
I’ve complained about the fact that it is not possible to change the column headers at runtime. The same complaint about tabbed tables labels.
Another one is about sections. Why can i change the twistie in views using an alternative to the standard picture but cannot use this in sections ?
Developers should rather concentrate on how to implement code for this than create functions for stuff that is already available
Lotusphere2006 – No live webcast from Opening General Session
This is very, very disappointing. No live webcast. This is what I at least expected as a service for all licensed Lotus Notes customers.
Lotusphere2006 – Java Jumpstart for the Domino Developer session
Die Präsentation von Tom “Duffbert” Duff und Julian Robichaux ( a.k.a. “Java-Jedi” ) kann zusammen mit einer Beispieldatenbank hier heruntergeladen werden. Hinweis: In den Notizen zu den einzelnen Folien sind weitere Informationen enthalten.
madicon easyMail
Werbung (nicht im Sinne von SPAM) per eMail ist heute üblich und bietet eine kostengünstige Variante, Kunden oder Interessenten zeitnah mit aktuellen Informationen bzgl. neuer Produkte oder Dienstleistungen zu versorgen.
Solche Mails sollten eine individuelle Anrede aufweisen und ggf. im Text der Mail weitere, dem Empfänger der Mail zugeordnete Details enthalten. Kurz – eine solche Mail sollte personalisiert sein.
Zusätzlich sollen wichtige Textstellen optisch hervorgehoben werden können und somit auch eine (heute übliche) Zeichen- bzgl. Absatzformatierung möglich sein. Auch die Unterstützung von Dateianhängen sollte eine Selbstverständlichkeit sein.
Manfred Dillmann hat nach dem madicon RSS reader mit madicon easymail wieder einmal ein hervorragendes Programm veröffentlicht.
Team Mailbox v2.11
In jedem Unternehmen gibt es Mail-In Datenbanken wie info@acme.com oder sales@acme.com. In den meisten Fällen liegt diesen Datenbanken das Design der Standard Mailschablone zugrunde.
Diese Datenbanken werden zumeist nicht nur von einer einzigen Person genutzt, sondern von einem Team. Die Standardschablone hat aber den Nachteil, daÃ? man keine Gruppe als Datenbankeigentümer in die Vorgaben eintragen kann.
Brian Green stellt hier seine Team Mailbox v2.11 zum kostenlosen Download zur Verfügung.
[via Bruce Elgort]
Creating a database replica (stub) that contains no documents
When creating a new copy of a database with File -> Database -> New Copy, there is an option to only copy the design and no documents from the source database.
When creating a new replica of a database with File -> Replication -> New Replica, there is no option like this. The replica stub that is created will not include any documents, but it will not allow administrators to make any modifications to the database design or the Access Control List (ACL).
To create a replica of a database without any documents do the following
[via Lotus Notes Knowledgebase # 1097325]
Wink
Wink is a Tutorial and Presentation creation software, primarily aimed at creating tutorials on how to use software (like a tutor for MS-Word/Excel etc). Using Wink you can capture screenshots, add explanations boxes, buttons, titles etc and generate a highly effective tutorial for your users.
Wink is distributed as freeware for business or personal use.
[via Julian Robichaux, Jumpstart Session Sneak Peek]
Web Services – the wiki
Started a wiki today about web services in Domino 7. Read the start page for more information.
Update: Additional information by Axel Janssen
Lotusphere2006, Blackberry, Web Services
A few weeks ago, I already wrote a short note about RIM’s request to connect the Blackberry to the heldesk application !!HELP!! using the new web services feature in Domino 7.
At this time I did not know much about web services and how a Blackberry could access the services in a Domino appication. So I decided to listen to the Julian Robichaux’s podcasts about web services on Taking Notes once again. After I realized that writing a web service in LotusScript is as easy as writing an agent, I began to code a few basic services like “Create Ticket” and “GetAllTicketsBySupporter”.
I was able to load the lss into a web service just fine.
The web service imported into a MDS Studio project without problems. The final stage is to test the functionality through the service from our MDS connection service. … I am suspecting that the services will be consumed by the client without problems.
…
Assuming this all comes together on time, it will be a great showcase of your application and our platform capabilities.
What comes next ? Well, here comes the next mail from Jon:
Ulrich, update from our team meeting.
We are going to use the Help app in at least two of our hands-on training sessions at Lotusphere on Sunday and Monday.
We have another presentation session on Wed where it may get highlighted.
We have several booths on the showcase floor that will be demoing apps, and the App may make the these booth pods as well.
If you are at Lotusphere, be sure to visit the RIM booth 😉
!!HELP!! is an OpenNTF project and Bruce Elgort has a session about OpenNTF ( BP-105) . Please visit his presentation and “Learn How OpenNTF Open Source Solutions Can Save You Time, Money and Your Hair!”
And, to answer the question in advance; No, I’ll not be at Lotusphere. 😕
How to get control of your Server Availability Index (SAI) in 6.x
You upgraded your Domino 5.x server to 6.x or installed a new 6.x server and notice that:
- The SAI does not seem to behave the same in 6.x as it did in 5.x.
- The SAI is lower than expected.
- The SAI seems to move quickly between high and low.
- Your server tends to get busy (SAI=0) when it seems to still have plenty of power available.
The SAI calculation has changed between 5.x and 6.x. In 6.x, the SAI is more accurate, but consequently, being more sensitive, its default range is not appropriate for all type of servers.
Depending on the type of host server, alternate settings may be necessary to normalize the SAI.
This issue is independent of the performance of the host server or Domino server, but it can appear that the availability of the server is affected. This is because the SAI settings need to be adjusted.
By default, the server_transinfo_range in 6.x is set to 6. In many cases, this setting is too low for more powerful modern servers.
The solution is to set server_transinfo_range=25 in the notes.ini and to recycle the Domino server.
When upgrading from 5.x (or 6.x versions prior to 6.0.3), rename the file loadmon.ncf before restarting Domino. This file will be recreated.
A server_transinfo_range of 20 will bring your SAI to approximately 70, and a server_transinfo_range of 30 will bring your SAI to approximately 85.
[ Lotus Notes KnowledgeBase #1196871 ]