Mittwoch, 19. Februar 2014

Absolventenfeier der Technischen Fakultät

Campus Recruiting der CLEAR GROUP


Absolventenfeier der Technischen Fakultät

Am Freitag, den 07. Februar 2014 war es wieder einmal so weit, die Technische Fakultät der Friedrich-Alexander-Universität Erlangen-Nürnberg (FAU) lud zur Verabschiedung ihrer Absolventen ein. Veranstaltungsort war der Erlanger Audimax - Auditorium Maximum. Nach der Begrüßung überreichten Prof. Dr. Jörn Thielecke, Studiendekan der Technischen Fakultät und Prof. Dr. Marion Merklein, Dekanin der Technischen Fakultät die Diplom-, Bachelor und Masterurkunden sowie die Diplom- und Master- und Bachelorpreise. Den Festvortrag „Fachkräfteüberschuss oder Wohin mit all dem Talent“ hielt Sven Czyperreck, Mitglied der Geschäftsleitung der CLEAR GROUP.

Weil die Absolventinnen und Absolventen in den vergangenen Jahren schon zu genüge mehr- oder weniger humorvolle Rückblicke auf die Studienzeit der Redner, Philosophisches über den Sinn des Lebens und Fachbeiträge aus den Tätigkeitsfeldern der geladenen Unternehmen gehört haben, kam es dieses Jahr für die rund 1000 Gäste, etwas anders als erwartet. Die Dekanin bezeichnete die Rede unseres Geschäftsführers Sven Czyperreck, als eine „kritische und gesellschaftspolitische Rede, die mit viel Humor transportiert wurde“. Anschließend wurden die Promotions- und Habilitationsurkunden an die 46 Promovenden überreicht. Nach der Verabschiedung durch Prof. Dr.-Ing. habil. Marion Merklein, versammelten sich alle Gäste noch zum geselligen Musik & Stehempfang in der Palmeria.

Es war wie immer eine sehr feierliche Veranstaltung und für die für die CLEAR GROUP war es eine große Ehre, neben den immer wiederkehrenden großen Brands wie Siemens, Staedler und Co. als Festredner geladen zu sein.

FAU-Deutschlandstipendium des ATE

Indes arbeiten wir bei CLEAR GROUP daran die Zusammenarbeit mit der FAU noch weiter auszubauen und werden in diesem Rahmen zum kommenden Semester ein weiteres Stipendium an der Technischen Fakultät vergeben. Das Besondere dieses Stipendiums ist die enge Zusammenarbeit mit dem Absolventenverein der Technischen Fakultät (ATE), in dessen Auswahlkommission wir erstmals einen Unternehmensvertreter entsenden werden.

Mit diesem Schritt verstärken wir weiter unser vielfältiges Engagement an den Universitäten und Hochschulen in der Metropolregion Nürnberg um den Talenten von morgen die besten Bedingungen für ihre Entwicklung zu bieten.

Treffen der dodnedder am 27.02.2014

Hallo zusammen!

Und wieder einmal ist es soweit, die  treffen sich im Erlanger Raum. Diesesmal liegt der Schwerpunkt des Vortrags auf der Zusammenarbeit von Entwicklungsteams in größeren Projekten. Zumindest habe ich das so verstanden. Aber ins Detail geht es am Donnerstag mit:

Composite Apps mit Prism entwickeln


Die Entwicklung großer Softwareanwendungen ist selbst mit einem sehr guten Team schwierig und risikoreich. Deshalb werden große Anwendungen häufig aus zahlreichen kleineren und damit leichter handhabbaren Modulen zusammengesetzt. Die Entwicklung dieser sogenannten Composite Apps ist äußerst sinnvoll, stellt den Entwickler aber auch vor viele technische Herausforderungen. Konkret bedeutet das: Wie reden Module miteinander? Wie werden Module gefunden und geladen? Wie setzt sich die Benutzeroberfläche aus vielen kleinen Puzzlestücken zusammen?

In diesem Vortrag zeige ich Euch, wie Ihr diese Probleme mit der C# Library PRISM lösen könnt. PRISM stellt Euch das nötige Rüstzeug für eine schnelle und solide Entwicklung von Composite Apps zur Verfügung. Anhand vieler Code-Beispiel lernt Ihr während des Vortrags die wichtigsten Themen bei der Entwicklung Eurer Composite App mit PRISM erfolgreich zu meistern.

Benedikt Buer leitet die Softwareentwicklung bei der Padaluma Inkjet Solutions GmbH. Als Softwareentwickler hat er sich mit den unterschiedlichsten Technologien und Anwendungsfeldern beschäftigt. Durch die Entwicklung von hardwarenahen Steuerungen über klassische Desktop Anwendungen bis zu Single Page Web Applikationen hat er sich einen breiten Überblick verschafft und viele Einblicke gewonnen. Sein momentanes Steckenpferd ist die Entwicklung modularer Software für Digitaldruckanlagen.

Datum & Zeit:
Donnerstag, 27. Februar 2014 ab 19:00

Ort:
infoteam Software AG - Am Bauhof 9, 91088 Bubenreuth

Anmeldung:
Bitte nutzt die Anmeldung auf der dodnedder-Seite, damit wir ein bisschen planen können. Das ist der Link REGISTRIERUNG gleich oben rechts ;)

Dort findet ihr auch genauere Anfahrtsdetails.

Samstag, 8. Februar 2014

Dojo Workshop #4 - Templates Widgets, Object Store

Ein zäher vierter Teil im Dojo Workshop. Ziel war es ein eigenes Widget mit Template zu erstellen. Idealerweise eine Liste, da dies unter anderem auch eine Schleife im Markup des Templates bedeutet hätte. Anschließend sollte das Template anhand eines Businessobjekt gerendert werden. Das Objekt sollte aus einem Object Store anhand eines Controllers bezogen werden.

Dojo erlaubt das Erstellen von Widgets mit Hilfe von Templates. Ob es sich dabei zwingend um ein einzelnes Steuerelement oder gar um ganze Seitenabschnitte halten muss, sei dahin gestellt. Mit define und dem _TemplatedMixin lassen sich eigene template-basierte Widgets definieren. Das Template ist entweder ein JavaScript String oder wurde zuvor mit require!text aus einer separaten Datei geladen.

Da mit define ein Name für den Prototype vergeben wurde, kann im eigentlichen Markup in Verbindung des data-dojo-type Attributs, an beliebiger Stelle eine Instanz des Widgets erstellt und gerendert werden. Alle im Template verwendeten Bindungen beziehen sich auf die Widget-Instanz selbst.

Der folgende Schnipsel zeigt eine Deklaration eine template-basierten Widgets in JS. Das Widget bezieht das Template aus einer externen Datei mit Hilfe der require Methode des Dojo Frameworks. Das Widget kann anschließend auf der Seite mit dem Markup <div data-dojo-type="templatedWidgetThing"><div> deklarativ verwendet werden.


require(["dojo/_base/declare", "dijit/_WidgetBase", "dijit/_TemplatedMixin", "dojo/text!./templates/TemplatedWidgetThing.html"], function(declare, _WidgetBase, _TemplatedMixin, template) {
    declare('templatedWidgetThing', [_WidgetBase, _TemplatedMixin], {
        templateString: template
    });
});

Die Suche nach der Möglichkeit andere Token als ${name} zu verwenden (z. B. Conditional- oder For-Statements) führte leider zu keinem positiven Ergebnis. Zwar sah Dojo.Dtl sehr viel versprechend aus, weigerte sich jedoch erfolgreich irgendetwas nützliches zu tun.

Der letzte Stop war ein kurzer Blick auf den Object Store. Der Store bietet eine einheitliche API zur Abfrage und Manipulation von Objekten an. Im ersten Schritt haben wir einen Memory Store verwendet. Der Store hält alle seine Objekte im Speicher. Eine Manipulation des Speichers kann somit nicht ausgeschlossen werden.

Der letzte Teil, das Beziehen von Objekten aus einem Store mit Hilfe eines Controllers war zeitlich leider nicht möglich.

Um wieder etwas aufzuholen, wird bis zum nächsten Workshop. Der Server um eine REST API zur Objektabfrage und Manipulation unter Berücksichtigung der JSON/Rest Store Möglichkeiten erstellt. Zusätzlich wird eine Templating-Engine angebunden um weitaus anspruchsvollere Templates darstellen zu können.

Folgende Teilnehmer waren anwesend: Marco Jacob, Heiko Dehmel und Christian Haarmann.

Samstag, 1. Februar 2014

Dojo Workshop #3 - UI Widgets, Validierungen

Steuerelemente werden durch Dijit um zahlreiche Funktionalitäten erweitert. Widgets können über eine einheitliche API in JavaScript angesprochen und erstellt werden. Dijit bietet auch die Möglichkeit eigene Themes zu verwenden.

Widgets können entweder deklarativ direkt im Markup definiert werden oder aber mit Hilfe von JavaScript erstellt werden. Wenn Widgets im Markup deklariert werden, darf ein Aufruf an den Parser nicht fehlen. Dieser sucht nach Elementen mit bekannten Dojo-Tags, z. B. data-dojo-type, und ruft die entsprechenden Konstruktorfunktionen für die betreffenden Elemente auf. Es ist hierbei jedoch überlebenswichtig dass der in data-dojo-type angegebene Typ in der korrekten Groß- und Kleinschreibung angegeben ist. Andernfalls findet sich keine entsprechende Konstruktorfunktion und das Widget wird nicht erstellt. Im Fehlerfall erscheint jedoch eine Meldung in der Konsolenausgabe des Browsers.

Zum Einstieg wurde eine Login-Seite, bestehend aus den Eingaben Anmeldename (TextBox), Passwort (TextBox) und Land (Select), erstellt. Das Land ist mehr Just For Fun auf der Seite da es im Gegensatz zum Anmeldename und Passwort keine Texteingabe, sondern eine Auswahl erfordert. Listen, bzw. Select-Widgets, können so zum Beispiel keine optgroup's und benötigen zwingend ein value Attribut. Werden optgroup's verwendet, stellt Dijit das Widget nicht korrekt dar (keine Listenelemente und Null-Breite). Wird kein value Attribut verwendet, funktioniert die Angabe von selected z. B. nicht und es ist keine Änderung der Auswahl möglich.

Die Eingabefelder für Anmeldename und Passwort waren weniger kritisch. Damit die Eingabefelder jedoch mit den Möglichkeiten von Dojox validiert werden können, bedarf es keiner normalen dijit/form/TextBox, sondern einer dijit/form/ValidationTextBox. Darüber hinaus sind die Dojox Validierungen ebenfalls modularisiert. Eine E-Mail Validierung wird erst möglich nachdem neben dem dojox/validate Modul auch das dojox/validate/web Module als Abhängigkeit definiert wird.

Das Konfigurieren der Validierung gestaltet sich an dieser Stelle aufgrund der fehlenden Dokumentation etwas umständlich. Entweder ist Reverse Engineering aus den Dojox-Sourcen erforderlich, oder aber Beispiele verraten einen bereits die notwendigen Details zur Steuerung der Schnittstelle. Die Konfiguration geschieht entweder deklarativ oder per Skript. Bei der deklarativen Schreibweise wird die Konfiguration direkt im data-dojo-props Attribut im HTML vorgenommen. Einige wenige Validierungsweisen (die bereits Teil von HTML Standards oder Drafts sind) können über die entsprechenden Mechanismen gelöst werden. Diese werden korrekt durch Dojo interpretiert. Darunter fällt z. B. das required Attribut für Pflichtfelder.

Das data-dojo-props Attribut validator: dojox.validate.isEmailAddress, invalidMessage:'Der Anmeldename muss eine gültige E-Mail Adresse sein.' an einer ValidiationTextBox sagt z. B. aus, dass zur Validierung die Methode isEmailAddress am dojox.validate Objekt aufgerufen werden soll. Ist die Validierung fehlerhaft wird die entsprechende Meldung neben der Eingabe dargestellt. Es sind ebenso eigene Validierungsmethoden möglich.

Für diese Seite werden beim Laden bereits 87 Requests an den Webserver abgesetzt. Der Grund für die hohe Anzahl der Requests ist das Nachladen der benötigten Abhängigkeiten. Da diese hohe Anzahl der Requests in Produktivumgebungen, insbesondere bei hoher Latenz, zu einer hohen Ladezeit führt, sollten mit Dojo erstellte Projekte unbedingt das Packaging bzw. Building berücksichtigen. Dies werden wir in einem späteren Workshop ausprobieren und die Anwendung noch einmal auf ihre Geschwindigkeit untersuchen.

Folgende Teilnehmer waren anwesend: Marco Jacob, Heiko Dehmel und Thorsten Kutz.