Archive for: ‘September 2014’

Quick Tip: Benutzervalidierung durch erneute Passwort-Eingabe

30. September 2014 Posted by Thomas Bahn

Quick-TippIBM Notes
Ich hatte letzte Woche eine "kleine" Anforderung von einem Kunden: Er ist interessiert an der erweiterten kommerziellen Version unseres assono Password-Safes. Aber seine interne Revisionsabteilung hatte noch eine neue Anforderung: Der aktuelle Benutzer sollte vor dem Öffnen eines Dokuments oder beim Kopieren eines Passworts in die Zwischenablage direkt aus einer Ansicht vorher noch einmal sein Notes-Passwort eingeben müssen.

Dafür gibt es ein @Command: ToolsUserLogoff. Wenn es ausgeführt wird, logt es den Benutzer aus. Wenn man dieses Kommando mit etwas Code kombiniert, mit dem man auf den Server zugreift, erscheint der Passworteingabe-Dialog, wie es zum Bespiel hier beschrieben wurde: Forcing user re-entry of passwords for electronic signatures in script.

Dieser Ansatz hat aber für mich drei Nachteile:
1. Er funktioniert nicht offline, also z. B. bei einer lokalen Replik, weil der Serverzugriff notwendig ist, um den Passworteingabe-Dialog zu öffnen.
2. Ich möchte es nutzen, um das Öffnen von existierenden Dokumenten abzusichern. Wenn der Benutzer den Dialog abbricht, wird das Dokument trotzdem geöffnet.
3. Der Formel-Code muss im QueryOpen-Ereignis der Maske eingetragen werden. Dort brauche ich aber zwangsläufig LotusScript.

Also musste ich weiter suchen nach einer Lösung in LotusScript. Und ich wurde fündig bei Eknori, der in 2004 diesen Blog-Eintrag verfasst hat: @Command(ToolsUserLogoff) in Lotus Script.
Diese Lösung muss für die aktuellen Versionen von Notes angepasst werden, weil man sich jetzt nicht mehr mit F5, sondern mit Strg-F5 auslogt.

Ich war immer noch nicht überzeugt, dass dies die bestmögliche Lösung für mein Problem sein sollte. Es ist wegen der Verwendung von Windows-DLLs nicht auf andere Plattformen übertragbar, der Benutzer bleibt ausgeloggt, wenn er den Passworteingabe-Dialog abbricht, es würde wohl auch nicht lokal funktionieren usw.

Ich suchte weiter und fand diese großartige Idee: Mittels Notes C-API auf den privaten Teil der Benutzer-ID-Datei zugreifen, genauer mit der  REGGetIDInfoString-Function mit REGIDGetPrivateKey als infoType.
  • Dies würde den Passworteingabe-Dialog erzwingen, aber gleichzeitig den Benutzer nicht abmelden.
  • Es würde auch lokal ohne jeden Server-Kontakt funktionieren.
  • Und ich könnte sogar feststellen, wenn der Benutzer den Dialog abgebrochen hätte und darauf falls nötig reagieren.

Vielen Dank an Davy Vanherbergen für seinen OpenNTF Code Bin-Beitrag (von 2003!): Call notes password prompt from lotusscript 

Ich habe seine Idee genommen und auf "meine Art" neu implementiert. Dabei habe ich unsere C-API-Hilfsfunktionen genutzt, und ich lasse den Benutzer eine andere ID-Datei auswählen, wenn die in der notes.ini eingestellte nicht die seine ist.

Function ValidateCurrentUser As Boolean
        '/**
        ' * validates current user by letting him enter his password
        ' *
        ' * @return  True, if user has successfully entered his password
        ' *
        ' * @author  Thomas Bahn/assono <tbahn@assono.de>
        ' * @version 2014-09-30
        ' */

        Const MAXOUTBUFRLEN% = 4096
       
        Dim idFileName As String
        Dim returnCode As Integer
        Dim userNameBuffer As String*MAXUSERNAME
        Dim actualLen As Long
        Dim currentUserName As String                
        Dim outBufrLen As String*MAXOUTBUFRLEN
       
        If Not IsDebugMode() Then On Error GoTo errorHandler
       
        ValidateCurrentUser = False
       
        idFileName = session.GetEnvironmentString("KeyFileName", True)
        returnCode = REGGetIDInfoString(idFileName, REGIDGetName, _
                userNameBuffer, MAXUSERNAME, actualLen)
        Call ShowCAPIErrorIfAnyAndEnd(returnCode, "REGGetIDInfo", _
                NULLHANDLE)
       
        currentUserName = Left(userNameBuffer, actualLen - 1)        
        Do While session.UserName <> currentUserName
                ' ID file configured in notes.ini is not the ID file of the
                ' current user
                idFileName = uiws.OpenFileDialog(False, _
                        "Wählen Sie Ihre ID-Datei:", "*.ID|", _
                        GetNotesDataDirectory(), idFileName)(0)

                returnCode = REGGetIDInfoString(idFileName, REGIDGetName, _
                        userNameBuffer, MAXUSERNAME, actualLen)
                Call ShowCAPIErrorIfAnyAndEnd(returnCode, "REGGetIDInfo", _
                        NULLHANDLE)
               
                currentUserName = Left(userNameBuffer, actualLen - 1)
        Loop
       
        returnCode = REGGetIDInfoString(idFileName, REGIDGetPrivateKey, _
                        outBufrLen, MAXOUTBUFRLEN, actualLen)
        If returnCode = -32355 Then
                Exit Function ' user cancelled dialog
        Else
                Call ShowCAPIErrorIfAnyAndEnd(returnCode, "REGGetIDInfo", _
                        NULLHANDLE)
        End If

        ' when we get here, the user must have entered his password
        ' successfully
        ValidateCurrentUser = True
        Exit Function
       
errorHandler:
        If HandleError() = RESUME_NEXT_LINE Then Resume Next
        Exit Function
End Function

GetNotesDataDirectory() ist eine Hilfsfunktion, die das Notes-Datenverzeichnis zurück gibt. Ersetze diese Funktion durch deine eigene oder einfach eine String-Konstante.
Und passe den Fehlerbehandlungscode (IsDebugMode() and HandleError()) entsprechend deinen Standards an.

Ich benötige noch einige Deklarationen (Declarations):

Private Const LIBRARY = "Eintrag utils"

' WORD LNPUBLIC OSLoadString(HMODULE hModule, STATUS StringCode, char far *retBuffer, WORD BufferLength);
Declare Function OSLoadString Lib "nnotes" Alias "OSLoadString" (ByVal hModule As Long, ByVal stringCode As Integer, ByVal retBuffer As LMBCS String, ByVal bufferLength As Integer) As Integer

' STATUS LNPUBLIC REGGetIDInfo(char far *IDFileName, WORD InfoType, void far *OutBufr, WORD OutBufrLen, WORD far *ActualLen);
Declare Function REGGetIDInfoString  Lib "nnotes" Alias "REGGetIDInfo" (ByVal idFileName As String, ByVal infoType As Integer, ByVal outBufr As String, ByVal outBufrLen As Integer, actualLen As Long) As Integer
Declare Function REGGetIDInfoBoolean Lib "nnotes" Alias "REGGetIDInfo" (ByVal idFileName As String, ByVal infoType As Integer, ByVal outBufr As Long,   ByVal outBufrLen As Integer, actualLen As Long) As Integer

Const REGIDGetName = 7 ' Data structure returned Is char xx[MAXUSERNAME]
Const REGIDGetPrivateKey = 9 ' Data structure returned Is char xx[xx]


' STATUS LNPUBLIC NSFDbClose(DBHANDLE hDB);
Declare Function NSFDbClose Lib "nnotes.dll" (ByVal hDB As Long) As Integer


Const NOERROR = 0

Const NULLHANDLE = 0&

Const MAXUSERNAME = 256


And two support functions for the C API error handling:

Sub ShowCAPIErrorIfAnyAndEnd(errorCode As Integer, functionName As String, hDB As Long)
        '/**
        ' * shows user the C API error and aborts execution.
        ' *
        ' * @param   errorCode return code of the function's execution
        ' * @param   functionName name of the C API function called
        ' * @param   hDB handle to the open database
        ' *
        ' * @author  Thomas Bahn/assono <tbahn@assono.de>
        ' * @version 2014-07-17
        ' */                
       
        If errorCode = NOERROR Then Exit Sub ' exit if no error occured
       
        If hDB <> 0 Then
                ' if there is a valid handle, try to close database
                Call NSFDbClose(hDB)
        End If
       
        Error Err, "Fehler in Bibliothek '" & LIBRARY & "'" & Chr$(10) & _
        "Ein Fehler ist aufgetreten in der C-API-Funktion'" & _
        functionName & "': "  & Chr$(10) &_
        "Fehler-Code: " & Trim$(Str$(errorCode)) & Chr$(10) & _
        "Fehler-Text: " & Chr$(10) & GetCAPIErrorMsg(errorCode)
End Sub

Function GetCAPIErrorMsg(errorCode As Integer) As String
        '/**
        ' * gets error message for the C API error.
        ' *
        ' * @param   errorCode return code of the function's execution
        ' * @return  error message for the C API error
        ' *
        ' * @author  Thomas Bahn/assono <tbahn@assono.de>
        ' * @version 2014-07-17
        ' */        
       
        Dim length As Integer
        Dim buffer As String
       
        ' initialize a buffer of adequate length to accept the error string
        buffer = String$(256, 0)
       
        ' get the API error message from the internal Notes/Domino string
        ' tables
        length = OSLoadString(NULLHANDLE, errorCode, buffer, Len(buffer))
        If length > 0 Then
                ' remove any trailing characters from the string and
                ' return it to the caller
                GetCAPIErrorMsg = Left$(buffer, InStr(1,buffer,Chr$(0))-1)
        Else
                ' couldn’t locate the error message in the string tables
                GetCAPIErrorMsg = "Unbekannter Fehler"
        End If
End Function

Schließlich platziere Code ähnlich dem folgenden in das QueryOpen-Ereignis deiner Maske:

If continue Then
        continue = ValidateCurrentUser()
       
        If continue Then
                ' do some stuff if necessary
        End If
End If

Da der Code ausschließlich Notes C-API-Aufrufe benutzt, kann er leicht auf weitere Plattformen erweitert werden. Momentan ist er auf Windows beschränkt.

AdminCamp 2014: Weil sicher sicher sicher ist – Sicherheit in IBM Domino

30. September 2014 Posted by Thomas Bahn

AdminCamp
Der zweite Tag des diesjährigen AdminCamps nähert sich langsam dem Ende. Ich warte noch gespannt auf die Fragestunde nach dem Abendessen. Auf meine Frage gestern habe ich ganz viele wertvolle Antworten bekommen, so dass ich letzte Nacht gleich eine Lösung bauen konnte. Dazu gleich mehr in einem weiteren Blog-Eintrag.


Hier schon mal die Präsentation zu meinem heutigen Vortrag in Track 2, Session 3: Weil sicher sicher sicher ist - Sicherheit in IBM Domino:

XPages: Execute Events with HTTP Get

30. September 2014 Posted by Sven Hasselbach

To execute an event on the server, you normally have to send a POST request, because actions will be executed in the Invoke Application phase of the JSF lifecycle. A GET request will only process the Restore View and the Render Response phase, that why you can not execute an event with a GET request.

But with the help of a PhaseListener, the execution can be done earlier in the Restore View phase:

package ch.hasselba.xpages.util;

import javax.faces.event.PhaseEvent;
import javax.faces.event.PhaseId;
import javax.faces.event.PhaseListener;
import com.ibm.xsp.component.xp.XspEventHandler;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import com.ibm.xsp.util.FacesUtil;

public class ExecuteOnServerPhaseListener implements PhaseListener {

    private static final long serialVersionUID = 1L;

    public void beforePhase(PhaseEvent event) {}

    public PhaseId getPhaseId() {
        return PhaseId.RESTORE_VIEW;
    }

    public void afterPhase(PhaseEvent event) {
        
        FacesContextExImpl = FacesContextExImpl.getCurrentInstance();
        ExternalContext ec = fc.getExternalContext();
        String url = ec.getRequestPathInfo();
        String[] pathes = url.split( "/" );
        
        try{
            if( pathes.length > 2 ){
                if( "executeOnServer".equals( pathes[pathes.length -2 ] ) ){
                    String[] fullId = pathes[ pathes.length - 1 ].split(":");
                    String actionId = fullId[ fullId.length - 1 ];
                    XspEventHandler eventHandler = (XspEventHandler)
                        FacesUtil.findComponentWithFullId( fc.getViewRoot(), actionId );
                    if( eventHandler != null ){
                        eventHandler.getAction().invoke( fc, null );
                        fc.responseComplete();
                    }
                }
            }
        }catch(Exception e){
            e.printStackTrace();
        }
        
    }

}

To activate the PhaseListener, it has to be enabled in the faces-config.xml:

<?xml version="1.0" encoding="UTF-8"?>
<faces-config>
   <lifecycle>
      <phase-listener>ch.hasselba.xpages.util.ExecuteOnServerPhaseListener</phase-listener>
   </lifecycle>
</faces-config>

The following Javascript snippet extends the XSP object and adds the new function executeOnServerGet to it. The parameter is the if of the event to invoke.

XSP.executeOnServerGet = function( eventId ){
    var viewId = dojo.query('[name="$$viewid"]')[0].value;
    var url = document.forms[0].action;
    url += "/executeOnServer/" + eventId;
    url += "?$$viewid=" + viewId;
    url += "&$$ajaxid=@none";
    dojo.xhrGet({url: url});
}

When calling the function, it sends a GET request and adds the current view id to the request. With the parameter $$ajaxId set to @none, the XPages Engine is forced to send no HTML code back to the client.

And here is an example XPage:

<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">

    <xp:eventHandler id="helloworld" event="helloworld" submit="false">
        <xp:this.action>
            <![CDATA[#{javascript:
               print("hello world " + java.lang.System.currentTimeMillis() );
            }]]>
        </xp:this.action>
    </xp:eventHandler>


    <xp:scriptBlock id="scriptBlock1">
        <xp:this.value><![CDATA[
            dojo.addOnLoad( function(){
                XSP.executeOnServerGet = function( eventId ){
                      var viewId = dojo.query('[name="$$viewid"]')[0].value;
                    var url = document.forms[0].action;
                    url += "/executeOnServer/" + eventId;
                    url += "?$$viewid=" + viewId;
                    url += "&$$ajaxid=@none";
                    dojo.xhrGet({url: url});
                  }
            });
        ]]></xp:this.value>
    </xp:scriptBlock>
    
    <xp:button value="Execute" id="button1">
        <xp:eventHandler event="onclick" submit="false">
            <xp:this.script>
                <![CDATA[XSP.executeOnServerGet( "#{id:helloworld}" );]]>
            </xp:this.script>
        </xp:eventHandler>
    </xp:button>
</xp:view>

When clicking the button, the following URL is opened in the background:

http://example.com/db.nsf/EventGet.xsp/executeOnServer/view:_id1:helloworld?$$viewid=!dwjldz64w0!&$$ajaxid=@none

A GET request was sent to the server:If you look on the server console, you will see that the Action was invoked:

[DE] Netz der Fremden statt Heimat der feurigen Debatte

30. September 2014 Posted by Stefan Pfeiffer

Das Netz – eingefrorene Kommunikationskanäle statt feuriger Debatte?

Lesenswert ist er auf jeden Fall, der Beitrag von Mathias Müller von Blumencron in der FAZ. Hier “meine” Kernauszüge”:

Bürger, Wähler sind in der Regel keine Fachleute, und sie müssen es nicht sein. Sie nutzen Filter, die für sie das Weltgeschehen sortieren, analysieren, kommentieren. Filter können Medien sein. Die waren über Jahrzehnte die wichtigsten Initiatoren informierter Diskurse.

Ein ebenso bedeutender Filter sind die Empfehlungen und Ansichten der Nächsten, der Familie, der Freunde. Sie beruhen allerdings nicht immer auf großem Fachwissen. Deshalb haben Medien, bei aller Anfälligkeit für Fehlleistungen, in demokratischen Gesellschaften eine konstituierende Bedeutung: als Vermittler zwischen Fachleuten und Laien, zwischen Politik und Gesellschaft …

Doch seit einigen Jahren wählen immer mehr Leute Informationswege jenseits der klassischen Medien. Sie konfigurieren sich Informationsströme – in der Mehrheit nicht nach Sachthemen, sondern nach Personen. Der persönliche Newsfeed … ist für immer mehr Nutzer der zentrale Informationsstrom, … Doch die Reihung willkürlich zusammengesuchter Texte zu subjektiven Informationsströmen führt zur Einseitigkeit. Genauso wie im richtigen Leben gruppieren sich die Leute im Netz um ihresgleichen: Heimat ist nicht der Platz der feurigen Debatte, Heimat ist die Geborgenheit unter Gleichdenkenden.

Dabei war es ein Teil des Traums, dass die sozialen Medien, diese Meisterwerke der Kommunikationstechnologie, den Schweigsamen eine Stimme geben, den Unterdrückten eine Möglichkeit zum Protest verschaffen, …

Der Schwarm werde es richten, sagen unverdrossen die Optimisten. Die Menschheit sei ja nun vereint durch das eine Medium. Doch den Schwarm gibt es nicht. Es gibt nur Schwärme. Die schwimmen selbstbewusst durch die Weiten der digitalen Sphären. Nur begegnen sie sich seltener, verlernen langsam die gemeinsame Sprache.

via Cyberwelt: Das Netz der Fremden – Denk ich an Deutschland – FAZ.

Ich kann dem nicht ganz folgen. Das Netz – ich benutze den Begriff einfach mal so, obwohl man das sicher näher definieren müsste – hat auf jeden Fall neue Reichweiten und Möglichkeiten geschaffen, sich unabhängig von klassischen Medien zu gruppieren oder zu informieren. Doch nicht erst seit dem Netz haben sich Gleichgesinnte gesammelt und oft nur “ihre” Meinung zugelassen, nur ihre Publikationen und Medien gelesen und gehört. Ignoranz und Intoleranz sind nicht mit oder durch das Netz entstanden.

Bei aller Sympathie für unabhängige Medien: Wurde nicht das Netz und seine Mechanismen von vielen der klassischen Medien schlicht verschlafen? Von wegen Vermittlung zwischen Fachleuten und Laien: Wieviele Bürger haben denn die klassischen Medien noch erreicht bzw. erreichen sie noch? Ja, das Netz wird auch von Fanatikern und Radikalen missbraucht. Ja, sogar demokratische Regierungen haben abgehört, hören ab und verletzen die Rechte des Einzelnen.

ABER: Das Netz ist eine nicht aufzuhaltende Transparenzmaschine, NSA hin, Blockadeversuche her. Der arabische Frühling wäre nie ohne das Netz möglich gewesen – mit allen Konsequenzen, mit denen wir jetzt zu kämpfen haben. Das Netz und die damit erzeugte Öffentlichkeit ist die stärkste Waffe für Unterdrückte. Ja, wir brauchen dort mehr Diskurs, Quailität und Inhalte, weniger Propaganda und Infiltration. Vermittler, nicht Fanatiker sind gefragt. Aber das Glas ist nicht halb leer. Es ist mindestens halb voll.


Filed under: Deutsch Tagged: Internet, Netz, Politik

Lenovo steht kurz vor dem Abschluss der Übernahme des IBM x86-Servergeschäfts

30. September 2014 Posted by IBM Press Releases - All Topics - Germany

Lenovo und IBM geben heute bekannt, dass die Bedingungen für die Übernahme des IBM x86-Servergeschäftsbereichs von beiden Parteien erfüllt sind und am 1. Oktober 2014 mit dem Abschluss der Transaktion begonnen werden kann.

Fraunhofer warnt Unternehmen vor Apps

30. September 2014 Posted by IBM Experts

60 Prozent der beliebtesten iOS-Apps sind nicht für den Unternehmenseinsatz geeignet. Das haben Wissenschaftler des Fraunhofer-Instituts für Sichere Informationstechnologie im Rahmen einer Testreihe...

CIOs sehen sich am Scheideweg

30. September 2014 Posted by IBM Experts

IT-Manager haben es nicht leicht – ständig müssen Sie neue Techniken und Prozesse implementieren, dabei wären sie mit der Betreuung der bestehenden Systeme völlig ausgelastet. Aber es hilft nichts:...

Stiefkind ERP

29. September 2014 Posted by IBM Experts

Mittelständler, die auf Cloud Computing setzen, profitieren von Cloud-Vorteilen wie Flexibilität und Skalierbarkeit, insbesondere aber von den geringeren Kosten. Ein Viertel der Kosten sparen KMUs,...

Personalentscheider wünschen sich mehr Technologie

29. September 2014 Posted by IBM Experts

Alle Prozesse von HR müssen auf den Prüfstand! Unternehmen benötigen maßgeschneiderte Prozesse und passende Technologien, die sicherstellen, dass der Personalbedarf im Einklang mit der...

IT-Firmen übernehmen den Automobilmarkt

29. September 2014 Posted by IBM Experts

Der Automobilmarkt steht vor einem großen Umbruch: Durch die zunehmende Vernetzung der Fahrzeuge gewinnen IT-Firmen immer mehr Einfluss. Das ist die zentrale Aussage einer aktuellen Branchenstudie...

Verwendung der iNotes Active-X Controls in restriktiven Arbeitsplatzumgebungen

28. September 2014 Posted by Manfred Meise

Benutzer, die restriktiv konfigurierte Arbeitsplätze verwenden, können iNotes nicht mit dem vollen Funktionsumfang nutzen, da sie die entsprechenden Active-X Controls nicht installiert werden können/dürfen. "The installation of the IBM Lotus Control has been blocked or declined. Do you want to use the IBM Lotus Control".
Seit Version 8.5.2 stellt IBM deshalb diese Softwarekomponenten als separates Installationspaket (.msi) zum Download und Installation druch den Administrator auf jedem Domino Server zur Verfügung.

Nach dem Download des Paketes

http://{servername}/IBM_Lotus_iNotes_ActiveX_Installer_{version}.msi
oder für lokale Sprachversionen
http://{servername}/IBM_Lotus_iNotes_ActiveX_Installer_{version}_{ISO}.msi


Also z.B.: http://meineFirma.de/IBM_Lotus_iNotes_ActiveX_Installer_8.5.3_DE.msi

Kann dieses dieses entweder über die Kommandozeile oder im Internetnet-Explorer installiert werden:

1, Kommandozeile. Start des ".msi" unter Angabe des vollen Pfadnames zum Paket (sinnvollerweise "als Administrator ausführen")
2. IE: "Tools - Manage Add-Ons" (Menübaum je nach IE Version unterschiedlich).

Verwendung der iNotes Active-X Controls in restriktiven Arbeitsplatzumgebungen

28. September 2014 Posted by Manfred Meise

Benutzer, die restriktiv konfigurierte Arbeitsplätze verwenden, können iNotes nicht mit dem vollen Funktionsumfang nutzen, da sie die entsprechenden Active-X Controls nicht installiert werden können/dürfen.
"The installation of the IBM Lotus Control has been blocked or declined. Do you want to use the IBM Lotus Control".
Seit Version 8.5.2 stellt IBM deshalb diese Softwarekomponenten als separates Installationspaket (.msi) zum Download und Installation druch den Administrator auf jedem Domino Server zur VerfĂĽgung.

Nach dem Download des Paketes

http://{servername}/IBM_Lotus_iNotes_ActiveX_Installer_{version}.msi
oder fĂĽr lokale Sprachversionen
http://{servername}/IBM_Lotus_iNotes_ActiveX_Installer_{version}_{ISO}.msi


Also z.B.: http://meineFirma.de/IBM_Lotus_iNotes_ActiveX_Installer_8.5.3_DE.msi

Kann dieses dieses entweder ĂĽber die Kommandozeile, Softwareverteilung oder im Internetnet-Explorer installiert werden:

1, Kommandozeile. Start des ".msi" unter Angabe des vollen Pfadnames zum Paket (sinnvollerweise "als Administrator ausfĂĽhren")
3. Softwareverteilung: Installation ĂĽber das Tool der Wahl
2. IE: "Tools - Manage Add-Ons" (MenĂĽbaum je nach IE Version unterschiedlich).

Verwendung der iNotes Active-X Controls in restriktiven Arbeitsplatzumgebungen

28. September 2014 Posted by Manfred Meise

Benutzer, die restriktiv konfigurierte Arbeitsplätze verwenden, können iNotes nicht mit dem vollen Funktionsumfang nutzen, da sie die entsprechenden Active-X Controls nicht installiert werden können/dürfen.
"The installation of the IBM Lotus Control has been blocked or declined. Do you want to use the IBM Lotus Control".
Seit Version 8.5.2 stellt IBM deshalb diese Softwarekomponenten als separates Installationspaket (.msi) zum Download und Installation druch den Administrator auf jedem Domino Server zur Verfügung.

Nach dem Download des Paketes

http://{servername}/IBM_Lotus_iNotes_ActiveX_Installer_{version}.msi
oder für lokale Sprachversionen
http://{servername}/IBM_Lotus_iNotes_ActiveX_Installer_{version}_{ISO}.msi


Also z.B.: http://meineFirma.de/IBM_Lotus_iNotes_ActiveX_Installer_8.5.3_DE.msi

Kann dieses dieses entweder über die Kommandozeile, Softwareverteilung oder im Internetnet-Explorer installiert werden:

1, Kommandozeile. Start des ".msi" unter Angabe des vollen Pfadnames zum Paket (sinnvollerweise "als Administrator ausführen")
3. Softwareverteilung: Installation über das Tool der Wahl
2. IE: "Tools - Manage Add-Ons" (Menübaum je nach IE Version unterschiedlich).

Verwendung der iNotes Active-X Controls in restriktiven Arbeitsplatzumgebungen

28. September 2014 Posted by Manfred Meise

Benutzer, die restriktiv konfigurierte Arbeitsplätze verwenden, können iNotes nicht mit dem vollen Funktionsumfang nutzen, da sie die entsprechenden Active-X Controls nicht installiert werden können/dürfen.
"The installation of the IBM Lotus Control has been blocked or declined. Do you want to use the IBM Lotus Control".
Seit Version 8.5.2 stellt IBM deshalb diese Softwarekomponenten als separates Installationspaket (.msi) zum Download und Installation druch den Administrator auf jedem Domino Server zur Verfügung.

Nach dem Download des Paketes

http://{servername}/IBM_Lotus_iNotes_ActiveX_Installer_{version}.msi
oder für lokale Sprachversionen
http://{servername}/IBM_Lotus_iNotes_ActiveX_Installer_{version}_{ISO}.msi


Also z.B.: http://meineFirma.de/IBM_Lotus_iNotes_ActiveX_Installer_8.5.3_DE.msi

Kann dieses dieses entweder über die Kommandozeile, Softwareverteilung oder im Internetnet-Explorer installiert werden:

1, Kommandozeile. Start des ".msi" unter Angabe des vollen Pfadnames zum Paket (sinnvollerweise "als Administrator ausführen")
3. Softwareverteilung: Installation über das Tool der Wahl
2. IE: "Tools - Manage Add-Ons" (Menübaum je nach IE Version unterschiedlich).

App des Monats: Die Welt mit anderen Augen sehen mit Wikitude

26. September 2014 Posted by Corinna Barth

Die digitale Erweiterung der Realität

Augmented Reality = Erweiterte Realität Sie befinden sich auf einer Geschäftsreise oder im Urlaub und möchten Sehenswürdigkeiten einer fremden Stadt erkunden ohne dabei ein Navigations-system zu nutzen? Schon mal etwas von Augmented Reality (AR) gehört? Aktuell zählt AR zu einer der spannendsten technologischen Entwicklungen. Die Technologie lässt die tatsächliche mit der digitalen Welt verschmelzen. Dabei wird durch Texte, Bilder oder auch Videos das aktuelle Kamerabild mobiler Endgeräte mit Zusatz-informationen in Echtzeit angereichert. Alles was man dazu benötigt, ist ein sogenannter AR Broswer. Einen davon, den Wikitude World Browser, möchte ich heute als App des Monats vorstellen.

Alles nur Science Fiction?

Wikitude App Abgesehen vom standortbezogenen Abrufen von Informationen zu Sehenswürdigkeiten oder Restaurants, können mit Wikitude auch augmentierte Printanzeigen oder Verpackungen gescannt werden. Damit wird Gedrucktes lebendig. Beeindruckende Beispiele hierzu können Sie mit den Wikitude Demos testen. Neben der Smartphone-Kamera ist zur Nutzung des World Browsers eine aktive Internetverbindung erforderlich, um auf die Anwendung zugreifen zu können sowie GPS-Empfang, um standortbezogene Informationen zu erhalten. Wikitude kann für die Betriebssysteme Google Android und Apple iOS kostenlos heruntergeladen werden und ist ohne vorherige Anmeldung sofort einsatzbereit.

Standorte in der Nähe erkunden

Wikitude App Das Menü ist klar und übersichtlich strukturiert. In den Einstellungen können metrische Einheiten und der Radius der zu scanenden Umgebung festgelegt werden. Sobald Sie die App aufrufen, startet die Kamera-Ansicht, weiter können Sie auch zwischen der Karten- oder Listenansicht wählen. Alternativ können Sie Points of Interest auch mithilfe des Suchfelds rechts oben ausfindig machen. Die App zeigt alle Sehenswürdigkeiten, Restaurants, Hotels oder Events in Ihrer Umgebung an. Mit Auswahl des gewünschten Orts, erhalten Sie nützliche Zusatzinformationen wie historische Hintergründe zur Sehenswürdigkeit, Öffnungszeiten des Restaurants oder auch Gästebewertungen des ausgewählten Hotels. Die Daten stammen aus Quellen wie Wikipedia, Google Maps oder Tripadvisor.

Fazit

Wikitude App Wikitude ist eine praktische App, die auf keinem Smartphone oder Tabelt fehlen sollte. Der World Browser empfiehlt sich für jeden, der öfter in unbekannten Städten unterwegs ist und sich schnell zurecht finden möchte. Bei Augmented Reality handelt es sich um eine sich rasant entwickelnde Technologie, die durch vielseitige Einsatzmöglichkeiten zunehmend in Unternehmen und Industrie Einzug hält. Wir dürfen gespannt sein, was die erweiterte Realität uns in Zukunft bringt.

Weitere Informationen finden Sie auf der Wikitude Website.

Inwieweit sind Sie bisher mit der Augmented Reality Technologie in Berührung gekommen? Welchen AR Browser nutzen Sie? Ich freue mich über Ihre Kommentare und weitere Anregungen.