Das Java Modulsystem- oder löst es Probleme die es ohne nicht gäbe?

Das Java Modulsystem bzw. die Idee dahinter hat eine lange Geschichte. Schaut man sich den JSR277 an, ist zu erkennen das dieser bereits Mitte 2005 formuliert und eingereicht wurde. Die Geburtswehen dauerten unglaubliche 12 Jahre!

Das muss den Entscheidern doch aufgefallen sein?! Das ist ein Zeichen! Sowas hat in einem Softwareprojekt etwas zu bedeuten.

Wenn Du merkst, dass Du ein totes Pferd reitest, steig ab!

… möchte man zurufen! Aber der Zug hat nun seit einigen Monaten Fahrt aufgenommen. Und alle, wirklich alle müssen sich nun mit dieser Lösung auseinandersetzen. Der tote Klepper wird geritten! Es wurden Strategien entwickelt:

  • Wir wechseln die Reiter.
  • Wir kaufen Leute von außerhalb ein, die angeblich tote Pferde reiten können.
  • Wir erstellen eine Präsentation in der wir aufzeigen, was das Pferd könnte, wenn es noch leben würde.
  • Wir erklären: „Kein Pferd kann so tot sein, das wir es nicht mehr reiten können.”
  • Wir weisen den Reiter an, sitzen zu bleiben, bis das Pferd wieder aufsteht.
  • … usw

Ganz egal das viele Projekte vorzüglichen Code hervorbrachten, bei Bedarf! existierende Modulsystem wie OSGi-  oder auch das weniger bekannte Netbeans Module System (Netbeans Platform) verwendeten, nein mit dieser Lösung soll nicht nur die monolithisch gewachsene Java-Plattform aufgeräumt werden, sondern man wollte das Problem die Lösung auch zu einem Problem einer Lösung aller machen.

Übrigens finde ich den Projektnamen Jigsaw ganz passend, erinnert er doch an ein Massaker :-(

Hier noch ein paar Infos zum thema: https://www.heise.de/developer/artikel/Modulare-Java-Zukunft-Das-Java-Platform-Module-System-erklaert-3700766.html

Talk is cheap. Show me the code.

… dieses Zitat wird Linus Torvalds zugeschrieben. Hier sind ein paar weitere: https://www.goodreads.com/author/quotes/92867.Linus_Torvalds oder hier

Auch das soll er gesagt haben: „Microsoft isn’t evil, they just make really crappy operating systems.“ Schade das es scheinbar nie eine Diskussion darüber zwischen Linus und Dave (Cutler) gegeben hat, das hätte interessant werden können :-)

 

Uncle Bob – Scribe’s Oath – Um die Ehre des Berufsstandes der Computerprogrammierer zu verteidigen und zu erhalten

Um die Ehre des Berufsstandes der Computerprogrammierer zu verteidigen und zu erhalten.

Uncle Bob – Scribe’s Oath

  1. I will not produce harmful code.
    • I will not intentionally write code with bugs.
    • This means: Do your best.
  2. I will not produce code that’s not my best.
  3. I will provide with each release a quick, testable & repeatable proof that the code works.
  4. I will not avoid release that will impede progress.
    • Short term rapid releases
  5. I will fearlessly and relentlessly improve the quality of code.
    • I will never make the code worse.
  6. I will keep productivity high.
    • I won’t do anything that decreases productivity.
  7. I will continuously ensure others can cover for me and I can cover for them.
  8. I will produce estimates without certainty, and I will not make promises without certainty.
  9. I will never stop learning and improving my craft.

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.

VS Lightswitch 2011 Final Release

Nun ist es da! Seit gestern dem 27.07.2011 kann man das Final Release von Microsoft Lightswitch laden. Das habe ich natürlich gemacht, denn die Veröffentlichung der Beta2 liegt nun schon einige Zeit zurück (Mitte März 2011).

Theoretisch sollte nach der Deinstallation der Beta2 und Installation der V1 alles reibungslos funktionieren. Praktisch kam es bei mir zu ein paar kleinen Problemen. Das nervigste war sicherlich das der Screen Designer keine Icons für die Controls anzeigte.

 

Zur Lösung des Problems folgende Ordner löschen:

%LOCALAPPDATA%\Microsoft\VisualStudio\10.0\ComponentModelCache
%LOCALAPPDATA%\Microsoft\VisualStudio\10.0\ManifestCache

Das löschen kann lt. einem MS Test Team Mitarbeiter gefahrlos erfolgen, da der Cache Inhalt bei bedarf beim nächste Build-Prozess neu erstellt wird.

Joomla Ugrade, jetzt endlich ganz einfach möglich?

Ich nutze gerne Joomla um kleinere Webprojekte umzusetzen. image

Auch für die ein oder andere eigene Webseite kommt Joomla zum Einsatz. Leider habe ich bisher neidisch auf die WordPress User schielen müssen wenn ein Joomla Update anstand. Das soll jetzt anders werden! Denn mit Joomla 1.7 verspricht die Entwicklergemeinde

“One-click updates are here”

also genau das richtige für mich! Und Zeit auf Joomla .17 umzusteigen. Los geht’s!

Joomla Ugrade, jetzt endlich ganz einfach möglich? weiterlesen

Visual Studio Lightswitch

Seit einigen Wochen arbeite ich nun mit der Beta2 von Microsoft Visual Studio Lightswitch und muss sagen die Entwicklung damit macht Spaß. Man erreicht sehr schnell funktionale Ergebnisse, was dazu führt das man sich mit der Entwicklung solcher „Daten getriebener“ Anwendungen nicht länger als unbedingt notwendig beschäftigen muss Zwinkerndes Smiley

So beschreibt Microsoft sein neues Entwicklungswerkzeug:

Visual Studio LightSwitch ist ein flexibles Entwicklungswerkzeug, das technische Power User und pragmatische Programmierer in die Lage versetzt, schnell und einfach Geschäftsanwendungen zu erstellen. Diese sehen professionell aus und können einfach und schnell auf Desktopcomputern, im Web und in der Cloud bereitgestellt werden.

Eingabemaske

 

Visual Studio LightSwitch ermöglicht es Benutzern aller Fertigkeitsstufen, schnell leistungsfähige und benutzerfreundliche Geschäftsanwendungen zu erstellen und dafür eine intuitive Entwicklungsumgebung zu nutzen. Mit Features für das Design von Benutzerschnittstellen und den Entwicklungswerkzeugen von Visual Studio LightSwitch können Sie schnell und einfach eine benutzerdefinierte Anwendung erstellen, die aussieht als wäre sie von einem professionellen Designer gestaltet worden.

Wobei hier keine neuen Systeme bzw. Laufzeitumgebungen erfunden und eingesetzt wurden… bei denen man sich fragen muss: Ist das Reif für die Produktion?!. Stattdessen setzt Microsoft auf bewährtes aus seinem Technology-Stack: WCF-RIA-Services, Silverlight 4.0 und das Entity Framework.

Business integration

Hier gibt gab es einige Erweiterungen für die Business Integration Engine(kurz BIE)

Was ist den BIE???

BIE ist ein Java basierender Integration Server. Er erlaubt es verschiedene Quellen anzuzapfen die Daten zu transformieren und einem Ziel zur Verfügung zu stellen. Vergleichbar ist das ganze mit z.b. mit dem Microsoft Biztalk Server.

Der etwas sperrige vollständige Name lautete: Brunswick WDI’s Business Integration Engine und geht auf den Hersteller Brunswick zurück der das Produkt ca. 2003 auf den Markt brachte. Besucht man heute deren Webseite landet man auf einem Russischen Angebot, welches nichts mehr mit dem eigentlichen Firmenauftritt gemein hat. Aber Dank der Wayback Maschine kann man sich anschauen wie die Seite damals aussah:

image

Die Leistungspalette und möglichen Anbindungen waren umfangreich:

SOAP
Simple Object Access Protocol (SOAP) 1.1 is fully supported by BIE.

EDI X12
Natively read and write EDI X12 documents for use with EDI Value-Added Network Services (VANS) and other EDI applications.

SMTP
Send data using Simple Mail Transfer Protocol (SMTP).

HTTP and HTTPS
Send and receive data with trading partners by using HTTP and securely over the Internet using HTTPS.

XSLT
Transform documents to virtually any format using Extensible Stylesheet Language Transformations (XSLT).

XML Web Services
Use XML web services to exchange data with modern business applications.

FTP
Send and receive documents easily to almost any system using the widely support File Transfer Protocol (FTP).

HIPAA
BIE supports the documents, protocols, and security standards defined by the 1996 Health Insurance Portability and Accountability Act (HIPAA).

Plug-in API
A rich set of pluggable API’s exist to extend BIE to support any protocol, document format, validation, or virtually anything else you might need.

Der Hersteller verkaufte das Open Source Produkt damals an Redberri die es überarbeitet in einer kommerziellen Variante auf den Markt brachten und auch heute noch vertreiben. Einige der ehemalige Entwickler bildeten den fork des beliebten Integration Servers auf Sourceforge. Leider wird dieser scheinbar nicht mehr benutzt bzw. weiterentwickelt.