Wechsel des Webhosters

Viele Jahre-, ich würde sagen es waren jetzt ca. 15! Jahre habe ich DomainFactory als Webhoster verwendet. Zum Einsatz kam zum Schluss das „ManagedHosting Pro 2-Sterne-Performance“- und das „VirtualServer BestSelect“ Paket. Letzeres wurde nie offiziel verkauft-, stattdessen wurde es bestehenden Kunden zum 5 Jährigen Jubiläum von DF angeboten. Das war damals ein tolles Angebot mit viel Leistung zum kleinen Preis!

Warum nun der Wechsel? All die Jahre hat DF sein RZ nähe München betrieben, dann wurde vieles ins EU Ausland verlagert. Vermtulich durch durch div. Aufkäufe. Als Kunde hatte man die Möglichkeit weiterhin in einem RZ in DE zu bleiben, was aber mit einem Aufpreis verbunden gewesen wäre. Ich habe diese Möglichkeit nicht genutzt. Einen Nachteil habe ich durch diesen Umzug nicht direkt bemerkt. Lediglich die Performance hat in den vergangen Jahren (gefühlt) nachgelassen. Bemerkt habe ich das z.b. beim arbeiten mit WordPress. Die Ursache war sicher nicht Umzug, evtl. wurden mehr Kunden auf die Server gepackt?!

Es wurde Zeit für eine Veränderung. Gesagt getan! Mein „neuer“ Hoster ist nun: 1&1. Diese Seite auf der Du das hier liest wird nun auf einem „1&1 Webhosting UNLIMITED PLUS“ Paket betrieben.

Der Umzug hat direkt eine Verbesserung gebracht (links vorher, rechts nachher):

Getestet mit: https://testmysite.withgoogle.com/intl/de-de

 

 

Using InterSystems Caché and Apache Zeppelin

I’ve posted this Text here

I‘ have done some tests with Caché and Apache Zeppelin. I want to share my experince to use both systems together. I’ll try to describe all steps that are required to config Zeppelin to connect to Caché.

What is  Apache Zeppelin?

For all who think: What the heck is Apache Zeppelin?, here some details what the project site (http://zeppelin.apache.org) says:

„A web-based notebook that enables interactive data analytics. You can make beautiful data-driven, interactive and collaborative documents with SQL, Scala and more. Apache Zeppelin interpreter concept allows any language/data-processing-backend to be plugged into Zeppelin. Currently Apache Zeppelin supports many interpreters such as Apache Spark, Python, JDBC, Markdown and Shell“

Install Apache Zeppelin

The next 5 steps describe how to get Apache Zeppelin up and running:

  1. You need a Java Runtime Environment. I you haven’t download and install from here
  2. Download Zeppelin from here
  3. Extract the entire Zeppelin Zip-File into a folder like d:\zeppelin
  4. Open a shell (cmd on windows) and navigate into the folder \zeppelin\bin
  5. Execute zeppelin.bat on Windows to start ZeppelinOpen up a browser and use this url http://localhost:8080 to open the main page of zeppelin. You should see something like this:

     

 

Well done! Zeppelin is now up and running!

Connect to Caché

Now let us introduce Caché. The next steps describe how to create a jdbc connection to a Caché Namespace.

  1. Navigate to the menu item „anonymouse“ -> „Interpreter“ and scroll down to the „jdbc“ section.
  2. Now press edit and go to the end of the jdbc section and enter your Caché JDBC connection string

     

    cache.driver    = com.intersys.jdbc.CacheDriver
    cache.password   = ???
    cache.url        = jdbc:Cache://<server\ip>:<port>/<namespace>
    cache.user       = _SYSTEM

  3. Add the path to the Caché JDBC driver in the „Dependencies“. This is located at the end of jdbc section.

     

  4. Press SAVE

Great! All preparations are done, now let us use Zepplin and Caché.

Query Caché

Follow these steps to create a first Notebook to query and visualize some Caché data.

 

 

Press create new note and name it like „HELLO WORLD“ …

By typing %jdbc(cache) you inform zeppelin what data source you want to query.
In detail: The %jdbc keyword lets zeppelin call the jdbc interpreter and the cache routes the query to the Caché connection. If you want to use more connections to Caché e.g. another namespace you have to create more entries in the jdbc section you’ve done before. The prefix of the entries are the connection name.
Ok now place a sql statement in the next line. After that press execute and you will immediately  see the result:

 

Happy testing!

VS 2012 LightSwitch: Updating datasource change FK from NOT NULL to NULL

Oft nutze ich Visual Studio LightSwitch 2012 um externe Datasources einzubinden. Also bereits bestehende Datenbanken bekommen mit LightSwitch ein GUI spendiert. Änderungen am Datenmodell sind in solchen Fällen nur eingeschränkt möglich.

Wenn dann nach dem erstmaligen einlesen der Metadaten einer Datenquelle dennoch ein Update erfolgt, also Änderungen in der DB durchgeführt- und diese nun VS LightSwitch bekannt gemacht werden, kann es zu unerwarteten Fehlern kommen.

In einem konkreten Fall konnte ich LightSwitch nicht dazu bewegen die Änderung einer FK-Beziehung zu erkennen.

In meinem Datenbank Modell hatte ich eine 1-n Beziehung in eine 0-n Beziehung geändert. Dazu wurde die foreign key column von “not NULL” auf “allow NULL” gerändert. Danach kam es dann beim speichern zu folgender Meldung:

Multiplicity conflicts with the referential constraint

in Role ‚XXX‘ in relationship ‚FK_Table2_XXX‘.

Because all of the properties in the Dependent Role

are non-nullable, multiplicity of the Principal Role

must be ‚1‘.

Der Fehler ist auch anderen widerfahren und wird in dein einschlägigen Foren diskutiert. Es gibt wohl derzeit nicht allzu viele Lösungswege, einer wäre die Datasource zu löschen und neu hinzuzufügen. Das ist aber ein no go wenn das Projekt viele Screens enthält. Die würden dann in Mitleidenschaft gezogen.

Ein User gab den Tipp die Common.lsml direkt zu verändern. Und das habe ich dann auch gemacht. Wie in diesem Screenshot dargestellt:

image

Microsoft.LightSwitch.SecurityAdmin.exe

Wer nach der Installation einer 3-Tier LightSwitch App noch einen Admin hinzufügen möchte benötigt das Tool Microsoft.LightSwitch.SecurityAdmin.exe, jedenfalls sofern er nicht direkt in der DB fummeln möchte.

Doch wo findet man das Tool?

Auf einem frisch installierten Server der die “LightSwitch für Visual Studio 2012 – Serverkonfiguration ohne lokales SQL Express“ (das ist der offizielle sperrige Name) erhalten hat, konnte ich es nicht finden.

Erst eine Suche auf meiner lokalen Entwicklungsmaschine hatte Erfolg. Und zwar hier: C:\Program Files (x86)\Microsoft Visual Studio 10.0\LightSwitch\1.0\Tools

Es reicht aber nicht aus das exe-File zu kopieren. Am einfachsten den ganzen Tools Order zippen und auf die Zielmaschine kopieren um die Microsoft.LightSwitch.SecurityAdmin.exe nutzen zu können.

Aufgerufen wird Microsoft.LightSwitch.SecurityAdmin.exe mit diesen Parametern:

Administrative utility to perform security operations

for a LightSwitch application. /? Display this help text. /createadmin Creates an administrator user. Options: /user:<username> UserName of the user. /password:<password> Password of the user. Required for

Forms authentication mode. /fullname:<full name> Full name of the person represented by the user.

Required for Forms authentication. /config:<config path> Absolute path to the web.config file

of the LightSwitch application.

Wie ich später feststellte war die gefundene Microsoft.LightSwitch.SecurityAdmin.exe von Visual Studio 2010 (LightSwitch 2011) und funktioniert nicht mit VS 2012 LightSwitch Apps. In Visual Studio 2012 ist dieses Programm nach meinen Recherchen nicht mehr enthalten. Stattdessen wird es laut Doku nun mit der “LightSwitch für Visual Studio 2012 – Serverkonfiguration ohne lokales SQL Express“ auf dem Hosting Server installiert… leider nicht immer. In meinem Fall konnte ich jedenfalls keine AdminSecurity.exe auf dem Server finden. Neu installieren war leider auch nicht möglich (Details dazu hier).

Um nun endlich weiter zu kommen und das deployment abschliessen zu können, habe ich dann den Weg über die StoredProcedure gewählt. Glücklicherweise war in meiner DB bereits ein Admin enthalten. Mit der folgenden SP kann das Passwort in der DB nach eigenem gusto angepasst werden:

declare @cd datetime set @cd=getdate() exec [dbo].[aspnet_Membership_SetPassword]

‚appname‘,‚<domain>\<user>‘,‚<plainpassword>‘,’salt‘,@cd,0

Der letzte Parameter identifiziert das Passwort Format: (0=Plaintext, 1=Hashed, 2=Encrypted). Hier ist insbesondere die Möglichheit 0=Plaintext hilfreich.

Diese spannende Geschichte ;-) soll mir in erster Linie als Gedankenstütze dienen… mal schauen ob es hilft.

Can’t uninstall Lightswitch for Visual Studio 2012 – Server Configuration without local SQL-Express

Kaum zu glauben, aber das installieren einer LigthSwitch Application kann ganz schön nerven aufreibend werden!

Auf einem frischen Windows Server 2008 R2 Enterprise SP1 habe ich die “Lightswitch for Visual Studio 2012 – Server Configuration without local SQL-Express” per Web Platform Installer zur Installation ausgewählt.

Danach lief alles autom. und fehlerfrei, auch wenn nun der Web Platform Installer anzeigt das “Lightswitch for Visual Studio 2012 – Server Configuration with local SQL-Express” ungefragt auf den Server kopiert wurden:

image

Als ich danach diverse Probleme während des deploments einer LightSwitch Application hatte wollte ich die “Lightswitch for Visual Studio 2012 – Server Configuration” entfernen und erneut installieren… die Vergangenheit zeigt das dann plötzlich Oh-Wunder! das ein oder andere Problem gelöst werden warZwinkerndes Smiley

Leider nicht hier! Denn seht selbst:

image

Da sind keine “Lightswitch for Visual Studio 2012 – Server Configuration” unter Progamme eingetragen?!?!? Was nun? Wie ist hier eine „Neuinstallation“ möglich?

Einfache Active Directory Validierung

Wer schon mit der eingebauten Userverwaltung von VS LightSwitch gearbeitet hat, kennt die bequeme Funktion das der eingegeben Name gegen das AD validiert-, und wenn erfolgreich, der Full Name komplettiert wird:

image

Der Screenshot zeigt die Userverwaltung von VS LightSwitch 2012, die Funktionalität gibt es aber auch in der “alten” Version.

Ich war auf der Suche nach der gleichen Funktionalität, sträubte mich aber davor für diesen Anwendungsfall extra einen RIA Service zu bauen. Nach ein wenig stöbern bin ich glücklicherweise auf folgende Methode gestoßen:

try
{
  Microsoft.LightSwitch.Security.WindowsUserInfo info = 
        this.DataWorkspace.SecurityData.GetWindowsUserInfo(Property1);
  YourNameColumn = info.FullName;
}
catch (Exception e)
{
  // handle exception
}

GetWindowsUserInfo macht hier das gewünschte Smiley Wer eine simple Active Directory Validierung benötigt und dafür nicht einen RIA Service anlegen möchte, sollte diese Methode versuchen.

Noch ein Hinweis: Der Anwender muss in der Gruppe “SecurityAdministration” sein! Ansonsten kommt es beim Aufruf zu einer Exception.

Excel Export verursacht Performance Probleme

Wer viele Daten ohne Paging mit Lightswitch anzeigen möchte, wird unter gewissen Umständen einen deutlichen Performance Einbruch bemerken:

… And the result was huge performance hit. Screen with 2600 records opened in 30 seconds. At first we thought that slowest part is SQL data retrieval, but when we looked in SQL Profiler, it showed that SQL request took only 1-2 seconds. During window opening there is network activity for approx. 3 seconds, then CPU usage goes up to 50 percent and stays there until screen fully loads. So, we think that the problem is with data serialization/deserialization or rendering.

OK, you could say: If you request so many records, of course, you have to wait a little longer. Okay, I agree. But waiting for screen to load is just one problem, even fully loaded screen with more than 50 records is laggy and scrolling is really slow. …

Im Microsoft eigenen Lightswitch Forum wird das in diesem Thread detailliert diskutiert: Unacceptable performance for more than 50 records.

Kurz zusammen gefasst ist die Ursache das Export to Excel Feature! Diese Funktion steht nur Desktop Anwendungen zur Verfügung. Daher ist auch nur dort der Performance Einbruch zu beobachten. Also einfach mal abschalten wenn es langsam wird!

Visual Studio Lightswitch zeigt meine DB Views nicht an?!

Das einbinden von Datenquellen (z.b. eine bestehende Datenbank) ist in Visual Studio sehr einfach möglich. Umso verwunderter ist man, wenn im nächsten Schritt nur einige oder keine Datenbank Views zu Auswahl angezeigt werden.

image

Was ist die Ursache?

VS Lightswitch 2011 zeigt nur Datenbank Views an, wenn diese einen Primary Key- oder mindestens eine Not Nullable Spalte enthalten (welche LS dann intern als Key nutzen kann). Alle anderen Views werden ohne weitere Meldung ausgeblendet.

Praxistauglicher fände ich den View als Readonly zu Kennzeichen, damit stände dem Einsatz nichts mehr im Wege. Leider hat Microsoft das anders gesehen Zwinkerndes Smiley

Welche Möglichkeiten hat man trotzdem an den VIEW zu kommen? Oft ist an eine Änderung des Views nicht zu denken, wenn z.b. eine Lightswitch Applikation auf einer bestehenden Datenbank basiert und der DB Admin nur ein müdes lächeln für den Änderungswunsch übrig hat…

Hier heißt die Lösung WCF RIA Services! Ein Beispiel folgt das nächste mal.