Saturday, August 10, 2013

Was gibts neues in Java 8

Vielleicht ist es ja etwas früh sich mit Java 8 zu beschäftigen, da wir in Notes leider noch nicht einmal die Version 7 bekommen haben. Aber Java 8 bietet so viele tolle Neuerungen wie Lamda Expressions, Erweiterungen bei den Annotations und eine komplett neue Bibliothek für das Datum und Zeithandling, dass ich mich einfach schon damit beschäftigen muss. Vielleicht haben wir ja auch das Glück und die IBM überspringt die Version 7 und bietet nächstes Jahr Notes gleich mit der Version 8 an. Nicht verschweigen darf man aber, dass  einige lange erwartete Funktionen wie Projekt Jigsaw in das nächste Release verschoben wurden. Alles in allen bin ich aber von den neuen Funktionen wirklich sehr beeindruckt und sie zeigen, dass Java nach wie vor Zukunft hat und vor allem im Vergleich zu den neueren JVM Programmiersprachen wie Scala den Vorteil bietet, dass es zu 100% kompatibel mit bestehenden Code ist.

Einen sehr guten Überblick über die Neuerungen in der Programmiersprache findet man auf Heise Developer

Wenn man auf den Geschmack gekommen ist, kann man eine Vorabversion von Java 8 auf java.net herunterladen.

Friday, August 9, 2013

Amazon-Login mit falschem Passwort möglich

Eigentlich unvorstellbar, dass das größte e-commerce Unternehmen der Welt immer noch nicht so einfache Dinge wie eine Anmeldung mit einem Passwort 100% im Griff hat. Ich verwende Amazon sehr gerne und habe auch schon einige Cloud Dienste von denen in Verwendung. Aber solche Vorfälle lassen einen wieder nachdenken, ob das sinnvoll ist.

mehr->

Thursday, August 8, 2013

Force the Notes client to refresh policies from the server

One of the best Admin features of the Domino Notes eco system are the Policies. With Domino policies you can control many aspects of the configuration of your notes clients in your environment. You can prevent your users from accidentally change configuration settings to values which will not work in your environment, or you can enforce security settings in the client to match your security policies in your company. So Domino Policies are really very important part of a successful Notes client deployment. If you need information what you can do and how to implement policies properly you can find many good advice in the "Using IBM Lotus Domino 8.5 Policies to Manage Your Clients" from Darren Duke.

But one major annoyance of the implementation of Domino policies is that it is very unpredictable when the notes client will refresh his policies from the server. Especially in test environments you restart your clients often only to see that your changes on Policies are still not pushed to your test client. Or something in your client goes wrong and policies will not be updated anymore. So i have created a small lotus script program to delete the local cache of the policies and refresh all policies from the server which you can put in the click event of a button.


Sub Click(Source As Button)
 Dim s As New NotesSession
 Call s.SetEnvironmentVar("PoliciesLocalViewModTime","",True)
 Forall db In s.AddressBooks
  Call db.open("", "") ' Must open database
  'Refresh Policies View on Server  
  If db.IsPublicAddressBook Then
   Set view=db.getView("($Policies)")
   view.refresh
   Set view=db.getView("($PoliciesExt)")
   If Not view Is Nothing Then
     view.refresh
   End If
  End If
  'Remove all policydocuments on the local client  
  If db.isPrivateAddressBook And db.server="" Then
   Set view=db.getView("($Policies)")
   Set doc=view.getFirstDocument
   view.autoupdate=False
   While Not doc Is Nothing
    Set tempdoc=doc    
    Set doc=view.getNextDocument(doc)
    tempdoc.remove(True)
   Wend
   view.autoupdate=True
   view.refresh
  End If
 End Forall
 'Run Dynamic client configuration to repopulate the local policy view 
 Set s=Nothing 
 result=Shell ("ndyncfg.exe ""1""",1)
End Sub
I have tried this code in our Domino 8.5.3 environment. If you have any problems please leave a comment.

Have a look at my other postings relating policies

Wednesday, August 7, 2013

Contextsensitive help for Notesplugin developer in Eclipse

When you develop plugins for the notes platform the target platform, does not contain any javadocs. So you do not get context sensitive help on java classes in Eclipse. This makes the development especially for beginners needlessly difficult and annoying.

Here is an example: You want to make a new SWT Text Field and get only a the Constructor signature with not very helpful parameter names. What the hell is arg1? So you have to open a browser go to the javadocs of SWT and search for the Text class and after reading the description go back to eclipse.

 

Wouldn't it be so much nicer if you can get useful parameter names and the javadoc direct in the syntax completion window like you get it when you develop plugins against the standard RCP target.


Follow this steps to teach the eclipse IDE that it shoukld search for the source in another place.

First go to your plugin in the package Explorer in your eclipse IDE. Open the  "Plugin Dependenices" and search for the plugin for which you want do add java source. In our example this is org.eclipse.swt.win32.win32.x86.versionNumber.



Download the Eclipse RCP source from the eclipse download archive page in the correct version. In our example the correct version is 3.6.2.

Unzip the "org.eclipse.swt.win32.win32.x86.source.version.jar" from the downloaded SDK to a new directory where you want to store all java source packages for Notes. Do not place this directory somewhere in the Notes program directory.

Right click the Notes plugin in package explorer and select "Properties" from the context menu. Paste the fully qualified path to the extracted source plugin in the Location path or select external File and browse to the source plugin file. Then finish the dialog with ok. Now your have context help for every SWT Class in your eclipse IDE.


You can repeat the above steps for other plugins in Notes which are eclipse based, for example jface, eclipse forms or the workbench. Be aware, that most other plugins are not version 3.6.2, but 3.4.2. So you have to download the 3.4.2 SDK from the download archive.

I think this is really a great step forward for every plugin developer for Notes.



Tuesday, August 6, 2013

Holiday reading: IBM Redbooks: Lotus Domino Development Best Practices

I do not know why i did not read this redbook one year ago, but i am very happy that i read this redbook in this year holidays. It is full of very usefull informations how things in Notes/Domino work and what are the best practices to write good Domino Applications. In my opinion the best part is the performance chapter. So do not miss this part of the redbook.

Lotus Domino Development Best Practices

Performance Considerations




Tuesday, July 30, 2013

IBM Notes Traveler Administration REST API

IBM has posted a detailed description of the new REST API of the Traveler 9.0.0.1 Server. With this new API third party software developers who provide mobile device management software can access and make changes to the traveler configuration.

For example over this API you can get device, or user lists. You can access the device policies, blacklist or wipe devices.

But this API is not restricted to third party developers. Every Traveler Admin can use this to integrate their own managment solutions with the new traveler server.

As this new API is based on the Standard REST API of Domino you should read my other Posts regarding the Domino REST API

The PDF with the documentation is available in the Traveler Wiki.

Monday, July 29, 2013

New concurrent access resolution clauses in V7R1

In V6R1 and V7R1 IBM has added new very powerful clauses to control concurrent access resolution to the SQL language of the IBM i.
So what was wrong with concurrent access till V7R1. When a job changes some rows under commitment control, no other job can access this row even when this job only want to read the data for a query. The job has to wait until the blocking job commits his transaction. The query job can fail if the job reaches the access timeout  before the blocking job has finished his transaction.
But now we have new possibilities to control the behavior in the query job.
New with V6R1 "SKIP LOCKED DATA"
When you add this clause to your select statement the query will ignore every row currently blocked by an uncommited transaction. In my opinion this option is not really an improvement, because with this clause you often get wrong results.
New with V7R1 "USE CURRENTLY COMMITED"
When you add this clause to your select statement the query will ignore uncommited changes, but will process the original values of the locked rows. So the result of the query, will be correct, and the query will not wait for record locks caused by open transactions.
For further informations and examples you can have a look at developer works

Sunday, July 28, 2013

Verschlüsselungsoption die nachträgliches Entschlüsseln verhindern soll.

Nach den Enthüllungen von Ed Snowden wird klar, dass die Geheimdienste auch verschlüsselten Traffic im großen Stil aufzeichnen in der Hoffnung diesen später mit dem geheimen Schlüssel eines Diensteanbieters zu entschlüsseln. Gerüchteweise hat die NSA bereits bei Facebook und Co schon vorgefühlt, ob sie die geheimen Schlüssel bekommen können. Damit lässt sich im Nachhinein jede aufgezeichnete Kommunikation entschlüsseln. Wie das funktioniert und was man dagegen machen kann erklärt Heise Security in einem neuen Artikel http://www.heise.de/security/artikel/Zukunftssicher-Verschluesseln-mit-Perfect-Forward-Secrecy-1923800.html

ad