<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Leckeres aus der IT-Welt &#187; Allgemeines</title>
	<atom:link href="http://georgwaechter.de/blog/category/allgemeines/feed/" rel="self" type="application/rss+xml" />
	<link>http://georgwaechter.de/blog</link>
	<description>.NET, PHP, Software Engineering, Drupal und vieles mehr</description>
	<lastBuildDate>Wed, 24 Nov 2010 23:55:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Systemmodellierung mit SysML</title>
		<link>http://georgwaechter.de/blog/2010/11/systemmodellierung-mit-sysml/</link>
		<comments>http://georgwaechter.de/blog/2010/11/systemmodellierung-mit-sysml/#comments</comments>
		<pubDate>Wed, 24 Nov 2010 23:55:27 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Allgemeines]]></category>
		<category><![CDATA[Software Engineering]]></category>

		<guid isPermaLink="false">http://georgwaechter.de/blog/?p=474</guid>
		<description><![CDATA[Im letzten Semster konnte ich an einem sehr spannendem Seminar zum Thema Systemmodellierung mit SysML teilnehmen. SysML entspricht einer aufgebohrten UML, welches auch in der Lage ist Systeme zu modellieren, die nicht aus der IT stammen. Besonders interessant ist das Thema Metamodellierung, bei der man Sprachen wie UML bzw. SysML auf einer Metaebene betrachtet .. [...]]]></description>
			<content:encoded><![CDATA[<p>Im letzten Semster konnte ich an einem sehr spannendem Seminar zum Thema <a href="http://www.informatik.hu-berlin.de/forschung/gebiete/sam/Lehre/proseminar-sysml/index">Systemmodellierung mit SysML</a> teilnehmen. <a href="http://de.wikipedia.org/wiki/Systems_Modeling_Language">SysML </a>entspricht einer aufgebohrten UML, welches auch in der Lage ist Systeme zu modellieren, die nicht aus der IT stammen.</p>
<p>Besonders interessant ist das Thema Metamodellierung, bei der man Sprachen wie UML bzw. SysML auf einer Metaebene betrachtet .. oder sogar noch einen Schritt weiter geht und auch diese wieder auf einer weiteren Ebene, der Metametaebene analysiert. Auf der obersten Ebene sind die Sprachen gleich und koennen entsprechende Formalismen vorausgesetzt,  automatisch migriert werden in andere kompatible Modelle. Ein besonders einfaches Beispiel dafuer waere z.B. das Erzeugen von Java Klassen aus einem relationalem Datenbankmodell.</p>
<p>Hier meine Folien, welche in das Thema einfuehren .. <a href="http://georgwaechter.de/blog/wp-content/uploads/2010/11/Metamodellierung.pdf">Metamodellierung</a></p>]]></content:encoded>
			<wfw:commentRss>http://georgwaechter.de/blog/2010/11/systemmodellierung-mit-sysml/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lazy Loading von Plugins in multilingualen .NET Applikationen</title>
		<link>http://georgwaechter.de/blog/2009/01/lazy-loading-von-plugins-in-multilingualen-net-applikationen/</link>
		<comments>http://georgwaechter.de/blog/2009/01/lazy-loading-von-plugins-in-multilingualen-net-applikationen/#comments</comments>
		<pubDate>Mon, 26 Jan 2009 01:55:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Allgemeines]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[Mono]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Software Engineering]]></category>

		<guid isPermaLink="false">http://www.georan.de/georg/?p=339</guid>
		<description><![CDATA[Letztes Jahr hab ich eine kleine Anwendungs-Shell gebaut, welche mir die Entwicklung von Desktopanwendungen einfacher machen soll. Schwerpunktmäßig habe ich mich dabei auf die Features Erweiterbarkeit, Multilingualität, Lazy Loading und gute Trennung der Logik von der Oberfläche konzentriert. Als festes Standbein habe ich das Framework Mono.Addins genutzt, mit dem ich in meinen Anwendungen Erweiterungspunkte in [...]]]></description>
			<content:encoded><![CDATA[<p>Letztes Jahr hab ich eine kleine Anwendungs-Shell gebaut, welche mir die Entwicklung von Desktopanwendungen einfacher machen soll. Schwerpunktmäßig habe ich mich dabei auf die Features <strong>Erweiterbarkeit</strong>, <strong>Multilingualität</strong>, <a href="http://en.wikipedia.org/wiki/Lazy_loading"><strong>Lazy Loading</strong></a> und gute <strong>Trennung der Logik von der Oberfläche</strong> konzentriert. Als festes Standbein habe ich das Framework <a href="http://www.georan.de/georg/index.php/2007/05/monoaddins/">Mono.Addins</a> genutzt, mit dem ich in meinen Anwendungen Erweiterungspunkte in einem XML-Baum definieren kann.</p>
<p>Ähnlich wie in <a href="http://de.wikipedia.org/wiki/XUL">XUL </a>oder <a href="http://de.wikipedia.org/wiki/XAML">XAML </a>erzeuge ich außerdem etliche Teile meiner Oberflächen direkt aus dem XML-Baum, der sich aus allen XML-Knoten der geladenen Plugins ergibt. Dies ermöglichst es mir Menüs und Werkzeugleisten darzustellen ohne alle Plugin-Assemblies zu laden. Denn die Infos über Struktur, Titel und Icons der Oberfläche befinden sich bereits in den XML-Daten und müssen nicht erst vom .NET Code erzeugt werden. Mit solchen Prinzipien kann man auch große Anwendungen zu einem schnellem Start verhelfen, Visual Studio, <a href="http://www.icsharpcode.net/OpenSource/SD/">#Develop</a> und Co machen es genauso.</p>
<p><span id="more-339"></span></p>
<p><strong>Anmerkung: </strong><em><a href="http://www.mono-project.com/Mono.Addins">Mono.Addins</a> speichert die sogenannten XML-Addin-Manifests entweder in separaten Dateien (neben den Assemblies) oder in eingebetteten Resourcen innerhalb der .dll&#8217;s. In dem Fall wird beim ersten Start der Anwendung das Addin-Manifest extrahiert und binär auf der Festplatte abgelegt, um den nächsten Programmstart zu beschleunigen.</em></p>
<p>Schwieriger wird es, wenn man eine multilinguale Anwendung entwickelt und die Texte für die Oberfläche nicht mehr fix in die Metadaten eingetragen werden können. Im .NET-Umfeld ist es üblich alle zu lokalisierenden Resourcen in <a href="http://msdn.microsoft.com/en-us/library/f45fce5x(VS.71).aspx">Satelliten-Assemblies</a> (eine Assembly pro Kultur, z.B. de-DE) auszulagern. Aus dieser kann man dann die Strings und Bilder laden, doch verhindert man dadurch das verzögerte Laden des Plugins, denn die Sattelite-Assemblies und damit das gesamte Plugin werden bereits beim Laden der GUI benötigt. Folge ist, dass der Programmstart wieder ewig dauert.</p>
<p><strong>Lösung:</strong> Wir müssen die für den Start so wichtigen Texte der Oberfläche separat speichern. Das muss immer dann gemacht werden, wenn ein Plugin hinzugefügt wird, d.h. genau dann wenn auch Mono.Addins einen Scan durchführt. Zu Hilfe kommt uns dabei eine recht neue Funktion von Mono.Addins: <a href="http://www.mono-project.com/Mono.Addins_Reference_Manual#Localization_of_Add-ins">Localizer</a>. Mit diesen kann man automatisch Strings aus Satellite-Assemblies oder anderen Quellen (z.B. l18n-Verfahren) laden. Perfekt für dieses Problem, da wir nur an die Oberflächentexte wollen, sonst aber nichts über die Plugins wissen.</p>
<div id="attachment_344" class="wp-caption alignnone" style="width: 670px"><img class="wp-image-344" src="http://georgwaechter.de/blog/wp-content/uploads/2009/01/addin-gui-xml.png" alt="addin-gui-xml" width="660" /><p class="wp-caption-text">XML-Manifest zur Erweiterung eines Menüs; Titel ist in Sprachresource mit Schlüssel &quot;count-word-string&quot; gespeichert</p></div>
<p>Das einfachste wäre sich an den <a href="http://www.mono-project.com/Mono.Addins_Reference_Manual#Add-in_Discovery">Scanvorgang </a>von Mono.Addins ranzuhängen und dann die Resource Strings zu laden und selber abzuspeichern. Ich werde wenn ich etwas Zeit finde mal versuchen das ganze in Mono.Addins zu integrieren und dann öffentlich verfügbar machen. Die nahtlose Integration hätte den Vorteil, dass die Texte einfach in den sowieso schon vorhandenen Binärdateien aufgenommen werden können. Das würde die Anzahl der zu lesenen Dateien erheblich verringern.</p>]]></content:encoded>
			<wfw:commentRss>http://georgwaechter.de/blog/2009/01/lazy-loading-von-plugins-in-multilingualen-net-applikationen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Witzig: Immobilienseite gibt live &#8220;Bla&#8221; Debugmeldungen aus</title>
		<link>http://georgwaechter.de/blog/2009/01/witzig-immobilienseite-gibt-live-bla-debugmeldungen-aus/</link>
		<comments>http://georgwaechter.de/blog/2009/01/witzig-immobilienseite-gibt-live-bla-debugmeldungen-aus/#comments</comments>
		<pubDate>Fri, 23 Jan 2009 00:57:01 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Allgemeines]]></category>
		<category><![CDATA[Lustig]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.georan.de/georg/?p=332</guid>
		<description><![CDATA[Sehr witzig, heute habe ich beim Surfen auf http://www.studenten-wg.de entdeckt, wie plötzlich ein schönes &#8220;bla&#8221; mitten auf der Seite erschien. Da scheinen wohl einige Webentwickler nicht lokal testen zu wollen . Hier der Beweis:]]></description>
			<content:encoded><![CDATA[<p>Sehr witzig, heute habe ich beim Surfen auf <a href="http://www.studenten-wg.de" rel="nofollow">http://www.studenten-wg.de</a> entdeckt, wie plötzlich ein schönes &#8220;bla&#8221; mitten auf der Seite erschien. Da scheinen wohl einige Webentwickler nicht lokal testen zu wollen <img src='http://georgwaechter.de/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> . Hier der Beweis:</p>
<p><img class="wp-image-333" src="http://georgwaechter.de/blog/wp-content/uploads/2009/01/wg.png" alt="wg" width="560" height="398" /></p>]]></content:encoded>
			<wfw:commentRss>http://georgwaechter.de/blog/2009/01/witzig-immobilienseite-gibt-live-bla-debugmeldungen-aus/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Materialien zum Techtalk</title>
		<link>http://georgwaechter.de/blog/2009/01/materialien-zum-techtalk/</link>
		<comments>http://georgwaechter.de/blog/2009/01/materialien-zum-techtalk/#comments</comments>
		<pubDate>Tue, 13 Jan 2009 23:26:57 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Allgemeines]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Techtalk]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.georan.de/georg/?p=325</guid>
		<description><![CDATA[Am Samstag haben wir unseren ersten studentischen Techtalk veranstaltet. Die Veranstaltung in meinen Augen auf jeden Fall ein Erfolg, ich denke jeder von uns konnte an dem Tag einiges lernen und freut sich nun auf das nächste Mal . Die Teilnehmerzahl kann ruhig noch etwas wachsen, aber das wird sicherlich schon fast ganz alleine kommen, [...]]]></description>
			<content:encoded><![CDATA[<p>Am Samstag haben wir unseren ersten studentischen <a href="http://techtalk.mixxt.de/">Techtalk </a>veranstaltet. Die Veranstaltung in meinen Augen auf jeden Fall ein Erfolg, ich denke jeder von uns konnte an dem Tag einiges lernen und freut sich nun auf das nächste Mal <img src='http://georgwaechter.de/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> . Die Teilnehmerzahl kann ruhig noch etwas wachsen, aber das wird sicherlich schon fast ganz alleine kommen, wenn wir mit der Organisation früher anfangen und der Termin dann eher feststeht.</p>
<p>Mit etwas mehr Vorlauf ist es dann auch sogar noch mehr Teilnehmern möglich eigene Präsentationen zu zeigen, die ja doch etwas mehr Vorarbeit benötigen als ich dachte. Ich wollte eigentlich das<a href="http://de.wikipedia.org/wiki/Session-Hijacking"> Session Hijacking </a>vorführen, aus Zeitgründen hat es dann aber doch nur für eine <a href="http://de.wikipedia.org/wiki/Cross-Site_Scripting">XSS</a>-Lücke gereicht <img src='http://georgwaechter.de/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> .</p>
<p><span id="more-325"></span></p>
<p>Für mich war die Vorführung des <a href="http://de.wikipedia.org/wiki/Content_Repository_for_Java_Technology_API">Java Content Repository</a> sehr interessant, da dieses einige mächtige Konzepte vereint, die ich auch gerne in der .NET-Welt sehen würde. Zu einigen konkreten Ansätzen habe ich in mir in letzter Zeit schon Gedanken gemacht und habe angefangen dies umzusetzen. Beispielsweise die Mixin-Types, mit denen man Versionierung oder auch andere Anforderungen an die Datencontainer darstellen kann.</p>
<p>Die Diskussionen zum <a href="http://de.wikipedia.org/wiki/Representational_State_Transfer">REST</a>-Paradigma haben auch super zum Thema gepasst und haben auch mal wieder gezeigt, dass die korrekte Nutzung des <a href="http://de.wikipedia.org/wiki/Hypertext_Transfer_Protocol">HTTP-Protokolls</a> sogar Sicherheitslöcher vermeiden (speziell bei <a href="http://de.wikipedia.org/wiki/Cross-Site_Request_Forgery">XSRF</a>) und die Performance vergrößern (Stichpunkt Caching im Browser) kann.</p>
<p>So, jetzt dürfen natürlich meine Präsentationen nicht fehlen:</p>
<ul>
<li><a href="http://georgwaechter.de/blog/wp-content/uploads/2009/01/xml.pdf">XML-Präsentation</a></li>
<li><a href="http://georgwaechter.de/blog/wp-content/uploads/2009/01/sichere-webanwendungen.pdf">Sichere Webanwendungen</a></li>
</ul>
<p><a href="http://techtalk.mixxt.de/networks/wiki/index.Materialien">Hier </a>gibts im Laufe der Zeit auch die Präsentationen der anderen.</p>]]></content:encoded>
			<wfw:commentRss>http://georgwaechter.de/blog/2009/01/materialien-zum-techtalk/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Webdevelopment-Techtalk am 10.1.</title>
		<link>http://georgwaechter.de/blog/2009/01/webdevelopment-techtalk-am-101/</link>
		<comments>http://georgwaechter.de/blog/2009/01/webdevelopment-techtalk-am-101/#comments</comments>
		<pubDate>Mon, 05 Jan 2009 17:52:30 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Allgemeines]]></category>
		<category><![CDATA[Techtalk]]></category>

		<guid isPermaLink="false">http://www.georan.de/georg/?p=319</guid>
		<description><![CDATA[Im Oktober letzten Jahres hatte ich gemeinsam mit ein paar Freunden die Idee einen Techtalk im Sinne eines Barcamps zu veranstalten. Am Samstag ist es nun endlich soweit &#8230;wir werden Präsentationen zu jQuery, ASP.NET und vielen anderen spannenden Themen hören und halten. Wir nutzen ein studentisches Begegnungszentrum &#8211; MOPS - als Veranstaltungsort.  Ein relativ kleines [...]]]></description>
			<content:encoded><![CDATA[<p>Im Oktober letzten Jahres hatte ich gemeinsam mit ein paar Freunden die Idee einen Techtalk im Sinne eines <a href="http://de.wikipedia.org/wiki/BarCamp">Barcamps</a> zu veranstalten. Am Samstag ist es nun endlich soweit <img src='http://georgwaechter.de/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  &#8230;wir werden Präsentationen zu <a href="http://de.wikipedia.org/wiki/JQuery">jQuery</a>, <a href="http://de.wikipedia.org/wiki/ASP.NET">ASP.NET</a> und vielen anderen spannenden Themen hören und halten.</p>
<p>Wir nutzen ein studentisches Begegnungszentrum &#8211; <a href="http://www.pruefstand.net/">MOPS </a>- als Veranstaltungsort.  Ein relativ kleines gemütliches Café. Da wir aktuell noch nicht die maximale Teilnehmeranzahl erreicht haben, könnt ihr euch gerne auf unserer <a href="http://techtalk.mixxt.de/">Techtalk-Seite</a> anmelden&#8230;</p>]]></content:encoded>
			<wfw:commentRss>http://georgwaechter.de/blog/2009/01/webdevelopment-techtalk-am-101/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Veröffentlichung meiner Arbeit zu &#8220;Virtuelle Maschinen&#8221;</title>
		<link>http://georgwaechter.de/blog/2008/12/veroffentlichung-meiner-arbeit-zu-virtuelle-maschinen/</link>
		<comments>http://georgwaechter.de/blog/2008/12/veroffentlichung-meiner-arbeit-zu-virtuelle-maschinen/#comments</comments>
		<pubDate>Mon, 29 Dec 2008 12:29:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Allgemeines]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.georan.de/georg/?p=310</guid>
		<description><![CDATA[Im Jahr 2006 habe ich eine schriftliche Arbeit über vituelle Maschinen geschrieben. In dem 30-Seiten langem Dokument gehe ich zuerst allgemein auf verschiedene existierende VM-Typen ein. Dann werden verschiedene Vorteile und Nachteile aufgezeigt, immer an konkreten Beispielen wie z.B. Java oder der .NET-Plattform. Behandelt werden unter anderem die Themen Plattformunabhängigkeit, Geschwindigkeit, Speicherverbrauch, Sicherheit, Flexibilität und [...]]]></description>
			<content:encoded><![CDATA[<p>Im Jahr 2006 habe ich eine schriftliche Arbeit über vituelle Maschinen geschrieben. In dem 30-Seiten langem Dokument gehe ich zuerst allgemein auf verschiedene existierende VM-Typen ein. Dann werden verschiedene Vorteile und Nachteile aufgezeigt, immer an konkreten Beispielen wie z.B. Java oder der .NET-Plattform. Behandelt werden unter anderem die Themen <strong>Plattformunabhängigkeit, Geschwindigkeit, Speicherverbrauch, Sicherheit, Flexibilität und Sicherheit.</strong></p>
<p>Auch interessant ist der Abschnitt über die (grundlegende) Funktionsweise von Garbage Collectoren. Außerdem ist das letzte Kapitel der Ayox Intermediate Language gewidmet, eine Eigenentwicklung einer Zwischensprache (ein Mix aus <a href="http://en.wikipedia.org/wiki/Java_bytecode">Java Bytecode</a> und <a href="http://en.wikipedia.org/wiki/Common_Intermediate_Language">CIL</a>) mit zugehöriger Laufzeit (Interpreter, etc.).</p>
<h3><strong><a href="http://georgwaechter.de/blog/wp-content/uploads/2008/12/arbeit.pdf">Download der Arbeit (pdf)</a></strong></h3>
<p><strong><br />
</strong></p>
<p>Viel Spaß beim Lesen <img src='http://georgwaechter.de/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> <strong><br />
</strong></p>]]></content:encoded>
			<wfw:commentRss>http://georgwaechter.de/blog/2008/12/veroffentlichung-meiner-arbeit-zu-virtuelle-maschinen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Datenmodellierung mit XML Schemata</title>
		<link>http://georgwaechter.de/blog/2008/12/datenmodellierung-mit-xml-schemata/</link>
		<comments>http://georgwaechter.de/blog/2008/12/datenmodellierung-mit-xml-schemata/#comments</comments>
		<pubDate>Sat, 27 Dec 2008 16:24:01 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Allgemeines]]></category>
		<category><![CDATA[DSL]]></category>
		<category><![CDATA[Software Engineering]]></category>
		<category><![CDATA[UML]]></category>

		<guid isPermaLink="false">http://www.georan.de/georg/?p=291</guid>
		<description><![CDATA[Bisher habe ich in meinen Softwareprojekten zur Datenmodellierung immer Werkzeuge wie UML-Editoren oder die MySQL Workbench genutzt. Das sind tolle Hilfen, da man seine Ideen grafisch modellieren und hinterher in eine ausführbare Präsentation umwandeln kann. Entweder man erzeugt mit einem UML-Editor Programmcode oder mit einem Datenbanktool das SQL-Skript für das Datenbankschema. Aktuell finde ich jedoch [...]]]></description>
			<content:encoded><![CDATA[<p>Bisher habe ich in meinen Softwareprojekten zur Datenmodellierung immer Werkzeuge wie<a href="http://argouml.tigris.org/"> UML-Editoren</a> oder die <a href="http://www.mysql.de/products/workbench/">MySQL Workbench</a> genutzt. Das sind tolle Hilfen, da man seine Ideen grafisch modellieren und hinterher in eine ausführbare Präsentation umwandeln kann. Entweder man erzeugt mit einem UML-Editor Programmcode oder mit einem Datenbanktool das SQL-Skript für das Datenbankschema.</p>
<p>Aktuell finde ich jedoch die Idee zur Modellierung der Daten <a href="http://de.wikipedia.org/wiki/XML_Schema">XML Schemata</a> zu nutzen, wesentlich interessanter. Mit einem leistungsfähigem Designer könnte man seine Modelle und Beziehungen darstellen und diese dann als XSD-Datei speichern. In der Softwarebranche wird dieses Verfahren in ähnlicher Weise schon seit Jahren genutzt. Konkret nutzt man einige <a href="http://www.omg.org/">OMG</a>-Standards, um den Ansatz der <a href="http://de.wikipedia.org/wiki/Model_Driven_Architecture">Model Driven Architecture</a> zu vereinheitlichen und damit plattformunabhängiger zu machen.</p>
<p><span id="more-291"></span></p>
<p>Die Object Management Group (OMG) hat eigene XML-Formate (<a href="http://de.wikipedia.org/wiki/XML_Metadata_Interchange">XMI</a>) entworfen, die von vielen UML-Tools geschrieben werden können. Leider hat man damit auch direkt einige Möglichkeiten die reine XML-Schemata bringen würden, verworfen oder zumindest schwer umsetzbar gemacht. Beispielsweise könnten mit XSD-Dateien viele Validierungsregeln deklarativ ausgedrückt werden. Für Zeichenketten-Felder können eingeschränkte Datentypen definiert werden, die auf einer RegEx basieren, außerdem kann man die Multiplizät einzelner Beziehungen genauer definieren.</p>
<div id="attachment_294" class="wp-caption aligncenter" style="width: 670px"><a href="http://georgwaechter.de/blog/wp-content/uploads/2008/12/mysql_workbench.png"><img class="wp-image-294" title="MySQL Workbench" src="http://georgwaechter.de/blog/wp-content/uploads/2008/12/mysql_workbench.png" alt="MySQL Workbench" width="660" /></a><p class="wp-caption-text">Modellierung einer N:M Relation mit MySQL Workbench</p></div>
<p>Dazu ein kleines Beispiel: In einer klassischen Datenbank gibt es keine Möglichkeit eine N:M Relations-Tabelle so anzulegen, dass immer mindestens genau ein Eintrag in der Relations-Tabelle enthalten ist. In XML-Schemata ist nicht nur das möglich, man kann sogar noch genauer festlegen, dass beispielsweise eine Relation mindestens ein und maximal drei Einträge beinhaltet. Bis dato musste diese Funktionalität in jeder Anwendung oberhalb der Datenbank neu programmiert werden. Auch XMI hält in diesem Punkt keine Lösung bereit, wenn ich mich nicht irre (andere Meinungen?).</p>
<p>Mein Wunsch für die zukünftige Datenmodellierung ist es möglichst viele Validierungsregeln bereits in das Model zu verlagern. Dies kann durch restriktive Datentypen oder genauere Multiplizitäten geschehen. Da die Datenmodelle praktischerweise als deklarative Daten vorliegen, kann basierend darauf sehr leicht automatisch Code erzeugt werden. Besonders vorteilhaft ist dies für verteilte Anwendungen, in einer Webanwendung beispielsweise könnte man automatisch Validierungscode für den Klient und den Server erzeugen.</p>
<div id="attachment_298" class="wp-caption aligncenter" style="width: 670px"><img class="size-full wp-image-298" title="xmlschema" src="http://georgwaechter.de/blog/wp-content/uploads/2008/12/xmlschema.png" alt="xmlschema" width="660" /><p class="wp-caption-text">Modellierung einer eingeschränkten (1-3) N:M-Relation mittels XSD</p></div>
<p style="text-align: center;">
<p>Zur produktiven Nutzung fehlen mir nur noch die entsprechenden Werkzeuge. Man braucht schon einen Designer, der auf einer höheren Abstraktionsebene als ein normaler XML Schema Designer arbeitet. Essentiell ist dann natürlich außerdem die Codegenerierung. Aber mit den <a href="http://www.georan.de/georg/index.php/2008/12/domain-specific-languages/">DSL-Tools</a> sollte man sowas ja alles schnell bauen können <img src='http://georgwaechter.de/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Ursprünglich gab es in Visual Studio 2005 mal einen bereits recht brauchbaren XML Schema Designer, doch den hat Microsoft aus der 2008&#8242;er Version rausgekommen. Einen Ersatz wird es wohl allerfrühestens mit VS 2010 geben.</p>]]></content:encoded>
			<wfw:commentRss>http://georgwaechter.de/blog/2008/12/datenmodellierung-mit-xml-schemata/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Domain Specific Languages</title>
		<link>http://georgwaechter.de/blog/2008/12/domain-specific-languages/</link>
		<comments>http://georgwaechter.de/blog/2008/12/domain-specific-languages/#comments</comments>
		<pubDate>Tue, 23 Dec 2008 23:38:17 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Allgemeines]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[Software Engineering]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[UML]]></category>
		<category><![CDATA[Visual Studio]]></category>

		<guid isPermaLink="false">http://www.georan.de/georg/?p=267</guid>
		<description><![CDATA[Jetzt so kurz vor Weihnachten beschäftigt mich ein interessantes Thema, welches das Potenzial hat die Softwareentwicklung an einigen Stellen stark zu vereinfachen: DSL, genauer gesagt Domain Specific Languages. Darunter versteht man eine auf ein Problem zugeschnittene Sprache, wobei Sprache hier nicht unbedingt eine typische Text-Sprache wie Java sein muss. Es kann sich genauso gut um [...]]]></description>
			<content:encoded><![CDATA[<p>Jetzt so kurz vor Weihnachten beschäftigt mich ein interessantes Thema, welches das Potenzial hat die Softwareentwicklung an einigen Stellen stark zu vereinfachen: <strong>DSL</strong>, genauer gesagt <strong>D</strong>omain <strong>S</strong>pecific <strong>L</strong>anguages. Darunter versteht man eine auf ein Problem zugeschnittene Sprache, wobei Sprache hier nicht unbedingt eine typische Text-Sprache wie Java sein muss. Es kann sich genauso gut um eine grafische Repräsentation handeln.</p>
<p>Jeder von uns hat schon mit einer DSL gearbeitet, wir haben es nur nicht mitbekommen <img src='http://georgwaechter.de/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> . Denn genau genommen sind <strong>SQL </strong>als auch <strong>RegEx </strong>zwei DSLs, die besonders ausdrucksstark sind in ihrer Domäne. Mit einer RegEx kann ich String-Muster definieren, deren Programmierung in einer &#8220;normalen&#8221; Programmiersprache dutzende Zeilen benötigen würde. Für Abfragen aus relationalen Datenbanken eignen sich RegEx aber natürlich nicht, daher sagt man die Sprache ist auf eine Domäne &#8211; ihr Arbeitsgebiet &#8211; beschränkt.</p>
<p><span id="more-267"></span></p>
<p>In finde besonders die grafischen DSLs sehr spannend, da man mit ihnen komplizierte Zusammenhänge übersichtlich als Grafik präsentieren kann. Und wir wissen ja auch schon lange, dass eine Grafik mehr sagt als 1000 Codezeilen <img src='http://georgwaechter.de/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> . In der Praxis kann man dann mittels eines Designers z.B. in Eclipse oder Visual Studio eine DSL nutzen, um beispielsweise Architekturen, Prozesse oder Automaten zu modellieren. Alles ist möglich!</p>
<div id="attachment_279" class="wp-caption alignnone" style="width: 670px"><a href="http://georgwaechter.de/blog/wp-content/uploads/2008/12/featuredsl.png"><img class="wp-image-279" style="border: 1px solid black;" title="featuredsl" src="http://georgwaechter.de/blog/wp-content/uploads/2008/12/featuredsl.png" alt="featuredsl" width="660" /></a><p class="wp-caption-text">Definition einer DSL für Funktionsdiagramme</p></div>
<p>Einige prominente Beispiele wären die <a href="http://de.wikipedia.org/wiki/Unified_Modeling_Language">UML </a>mit entsprechend gekoppelter Codeerzeugung oder auch die Windows Workflow Foundation. Beide sind jedoch noch recht allgemein, es sind noch viel spezifischere DSLs denkbar. Man könnte z.B. grafisch die Übergänge zwischen Spielezuständen modellieren so wie es in dem Projekt <a href="http://php.cin.ufpe.br/~sharpludus/sharpludus.php?m=screenshots">sharpludus</a> gemacht wird. Ebenfalls sehr speziell aber leistungsfähig sind die DSL Tools von Microsoft mit denen man eigene DSLs erzeugen kann. Diese sind im <a href="http://msdn.microsoft.com/en-us/vsx/default.aspx">Visual Studio SDK</a> enthalten und bringen einen grafischen Designer mit, mit dem man eigene grafische Designer bauen kann. Das ganze funktioniert wunderbar, sodass man innerhalb weniger Stunden &#8211; mit ein bischen Übung &#8211; leistungsfähige Tools bauen kann.</p>
<p>Das Diagramm kann dann per Knopfdruck (oder automatisch) in eine Textform gebracht werden. In Visual Studio steht dazu eine Text Template Engine zur Verfügung mit der man XML als auch Programmcode erzeugen kann. Die DSL Tools nutzen dieses Konzept selber um tausende Codezeilen für die Integration und Umsetzung des Designers in die Entwicklungsumgebung  zu kreieren. Man könnte aber natürlich auch statt Code einfach HTML erzeugen zur Dokumentationszwecken so wie es das Projekt <a href="http://www.codeplex.com/FeatureModelDSL">Feature Model DSL</a> macht.</p>
<p>Ich werde auf jeden Fall mal selber eine DSL bauen, wenn ich dazu mehr Zeit habe und die richtige Idee. Denn lohnen tut sich soetwas meist erst wenn man die DSL in mehreren Produkten nutzen kann.</p>]]></content:encoded>
			<wfw:commentRss>http://georgwaechter.de/blog/2008/12/domain-specific-languages/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>CakePHP, der süß-saure Kuchen &#8211; Erfahrungen mit dem PHP-Framework</title>
		<link>http://georgwaechter.de/blog/2008/10/cakephp-der-suesss-saure-kuchen/</link>
		<comments>http://georgwaechter.de/blog/2008/10/cakephp-der-suesss-saure-kuchen/#comments</comments>
		<pubDate>Mon, 27 Oct 2008 19:50:36 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Allgemeines]]></category>
		<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.georan.de/blog/?p=96</guid>
		<description><![CDATA[Vor einigen Wochen war ich auf der Suche nach einem leistungsfähigem PHP-Framework für eine Webanwendung. Meine Wahl fiel Mitte September auf CakePHP, einem modernen Anwendungs-Framework, welches die Entwicklung von robusten interaktiven Internetseiten beschleunigen soll. Die Entscheidung war schnell getroffen, denn die schicke Internetseite von CakePHP überzeugt sehr schnell, besonders die Screencasts machen Lust auf mehr [...]]]></description>
			<content:encoded><![CDATA[<p>Vor einigen Wochen war ich auf der Suche nach einem leistungsfähigem PHP-Framework für eine Webanwendung. Meine Wahl fiel Mitte September auf CakePHP, einem modernen Anwendungs-Framework, welches die Entwicklung von robusten interaktiven Internetseiten beschleunigen soll.</p>
<p><img class="alignright" title="cake-logo" src="http://www.georan.de/blog/wp-content/uploads/cake-logo.png" alt="" width="144" height="144" />Die Entscheidung war schnell getroffen, denn die schicke <a href="http://cakephp.org/">Internetseite von CakePHP</a> überzeugt sehr schnell, besonders die Screencasts machen Lust auf mehr und geben einen guten Einblick in die <a href="http://de.wikipedia.org/wiki/Model_View_Controller">Model-View-Controller-Funktionsweise</a>.</p>
<p>Voller Eifer beginnt man also mit der Entwicklung und freut sich darauf, so nette Features wie die <a href="http://book.cakephp.org/view/451/findBy">dynamischen Funktionen</a> der Daten-Modelle zu nutzen: Der Aufruf <code>$User-&gt;findByName('Thorsten');</code> beispielsweise funktioniert, da es in der Datenbank eine Spalte &#8216;Name&#8217; in der &#8216;User&#8217;-Tabelle gibt. CakePHP erkennt dies automatisch und erzeugt eine korrekte SQL-Abfrage für den Methodenaufruf &#8230; und das obwohl diese Funktion zur Kompilierzeit noch nicht einmal existiert. Ich werde jetzt nicht genauer darauf eingehen, wie diese &#8220;Magic&#8221; funktioniert, aber auf jeden Fall ist es cool <img src='http://georgwaechter.de/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p><span id="more-96"></span></p>
<p>Nach den ersten Stunden Arbeit mit CakePHP war ich recht beeindruckt, wie einfach doch alles funktioniert. Selbst HTML-Formulare kann man sehr schnell &#8220;backen&#8221;. Doch stößt man auch schnell auf Beschränkungen, sobald man etwas kompliziertere Eingabeelemente realisieren will. Das automatische Anzeigen von Aufzählungen (enum) oder aber von mehrfach-selektiertbaren Listen ist z.B. nicht vorgesehen &#8230; gut, muss man halt selber Hand anlegen.</p>
<p>Anschließend wollte ich komplizierte Daten (Tabellen mit mehreren N:M Relationen) mit <a href="http://cakephp.org/">CakePHP </a> <a href="http://book.cakephp.org/view/73/Retrieving-Your-Data">abfragen </a> und bearbeiten, was aber erstmal nicht klappte.</p>
<div id="attachment_156" class="wp-caption alignnone" style="width: 670px"><img class="size-full wp-image-156" title="example-db1" src="http://www.georan.de/blog/wp-content/uploads/example-db1.png" alt="Datenmodell (Beispiel) ohne Nutzung von CakePHP" width="660" /><p class="wp-caption-text">Datenmodell (Beispiel) ohne Nutzung von CakePHP</p></div>
<p>Ich hatte in meiner N:M-Tabelle (also z.B. <code>Posts_Has_Tags</code>) nicht nur die zwei elementaren Fremdschlüssel, sondern noch weitere Felder gespeichert. Das mag CakePHP leider gar nicht! Es gibt zumindest auf den ersten Blick keine Möglichkeit an diese Daten ranzukommen, da man normalerweise nicht direkt auf diese Tabellen zugreift &#8230; sehr ärgerlich.</p>
<p>Zudem kam noch ein weiteres Problem dazu: In einer N:M-Tabelle besteht der Primärschlüssel meist aus der Kombination der beiden Fremdschlüssel. Logisch &#8230; leider kann auch damit CakePHP nicht umgehen, denn das Framework zwingt einen Primärschlüssel zu nutzen, die lediglich aus einem Feld bestehen!</p>
<div id="attachment_158" class="wp-caption aligncenter" style="width: 670px"><img class="size-full wp-image-158" title="example-db-cakephp" src="http://www.georan.de/blog/wp-content/uploads/example-db-cakephp.png" alt="Verändertes Datenmodell für CakePHP" width="660" /><p class="wp-caption-text">Verändertes Datenmodell für CakePHP (andere Primärschlüssel, schwieriger Zugriff auf rot eingerahmtes Feld)</p></div>
<p>Gerade der letzte Punkt stört micht doch ungemein, da ich es als nicht besonders schön empfinde ein Datenmodell nur zu ändern, weil ein Framework damit nicht klar kommt. Ich habe zwar gelesen, dass auch demnächst keine mehr-elementrigen Primärschlüssel unterstützt werden, doch ich hoffe mal weiter &#8230;</p>
<p>Mein Fazit: CakePHP ist ein Framework, welches sehr schönen Code ermöglicht und die Entwicklung vieler Anwendungsbestandteile beschleuinigt. Lobend kann man an dieser Stelle z.B. die HTML- und Javascript/Ajax-Helper hervorheben &#8230; auf der anderen Seite ist CakePHP an einigen Stellen noch zu unflexibel. Der Einsaz lohnt sich aber auf jeden Fall &#8230; ich bin gespannt wie sich das Projekt weiterentwickelt <img src='http://georgwaechter.de/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>]]></content:encoded>
			<wfw:commentRss>http://georgwaechter.de/blog/2008/10/cakephp-der-suesss-saure-kuchen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>World Day Against Software Patents</title>
		<link>http://georgwaechter.de/blog/2008/09/world-day-against-software-patents/</link>
		<comments>http://georgwaechter.de/blog/2008/09/world-day-against-software-patents/#comments</comments>
		<pubDate>Wed, 24 Sep 2008 19:24:30 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Allgemeines]]></category>
		<category><![CDATA[Softwarepatente]]></category>

		<guid isPermaLink="false">http://georgwaechter.wordpress.com/?p=144</guid>
		<description><![CDATA[Heute &#8211; am 24. September &#8211; ist der unterstützenswerte &#8220;World Day Against Software Patents&#8221;, eine Initiative von vielen Vereinigungen, Entwicklern und Software-Firmen. In Europa gibt es zum Glück noch keine Softwarepatente, doch in den USA sind diese schon längst traurige Realität. Erst jüngst wurde wieder ein unsinniges Patent an Microsoft erteilt, welches die Funktion der [...]]]></description>
			<content:encoded><![CDATA[<p>Heute &#8211; am 24. September &#8211; ist der unterstützenswerte &#8220;World Day Against Software Patents&#8221;, eine <a href="http://stopsoftwarepatents.org">Initiative</a> von vielen Vereinigungen, Entwicklern und Software-Firmen. In Europa gibt es zum Glück noch keine Softwarepatente, doch in den USA sind diese schon längst traurige Realität. Erst jüngst wurde wieder ein <a href="http://news.zdnet.com/2424-9595_22-218626.html">unsinniges Patent</a> an Microsoft erteilt, welches die Funktion der &#8220;Page up&#8221;- und &#8220;Page down&#8221;-Tasten patentiert.</p>
<p>Meiner Meinung nach stärken Software-Patente die Monopole großer Softwarekonzerne und verhinden kreative Innovationen. Zudem sind die meisten Software-Patente keinesfalls neue Erfindungen, sondern simple Ideen, auf die jeder Entwickler selber kommen könnte. Tun wir also alles dafür, dass Software-Patente zu Grabe getragen werden bzw. gar nicht erst nach Europa kommen.</p>
<p>Zum Abschluss noch ein kleines nettes Video, welches das Prinzip der Patente schön darstellt:</p>
<p><object width="425" height="349"><param name="movie" value="http://www.youtube.com/v/TYbDfo4q5pw&#038;hl=de&#038;fs=1&#038;color1=0x2b405b&#038;color2=0x6b8ab6&#038;border=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/TYbDfo4q5pw&#038;hl=de&#038;fs=1&#038;color1=0x2b405b&#038;color2=0x6b8ab6&#038;border=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="349"></embed></object></p>]]></content:encoded>
			<wfw:commentRss>http://georgwaechter.de/blog/2008/09/world-day-against-software-patents/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

