Home  |  Über den Autor  |  Impressum  |  .NET Developer Group Braunschweig  |  Hönigsberg & Düvel

RSS 2.0 | Atom 1.0 | CDF | Send mail to the author(s)  
 Sunday, June 15, 2008
dotnet-braunschweig
 
 
Das nächste Treffen der .NET Developer Group Braunschweig findet am Dienstag, den 17.06.08, ab 19 Uhr statt in Kilian's Raffinerie statt.
 
Dieses Mal werde ich selber einen Vortrag zum Thema Silverlight halten:

Pac-Man meets Silverlight

Mit Version 2.0 von Silverlight geht für viele Webentwickler ein Traum in Erfüllung: Animierte Webanwendungen bauen ohne Flash und das auch noch in der eigenen .NET Lieblingssprache. In meinem Vortrag zeige ich am Beispiel von Pac-Man, wie man mit Silverlight 2.0 (Beta1 Beta2) ein kleines Spiel entwickeln kann. Dabei werde ich auch Expression Design und Expression Blend benutzen und die Zusammenarbeit mit Visual Studio zeigen.
 
 
Die Teilnahme ist wie immer kostenlos und neue Gesichter sind natürlich immer gerne gesehen.
 
 
Weitere Infos:
 

  

posted on 6/15/2008 12:47:28 PM (W. Europe Standard Time, UTC+01:00)  #    Comments [0]

 Friday, May 16, 2008
dotnet-braunschweig
 
Das nächste Treffen der .NET Developer Group Braunschweig findet am Dienstag, den 20.05.08, ab 19 Uhr statt.
wir treffen uns dann zum ersten Mal in Kilian's Raffinerie. Auf der Homepage gibt es auch eine Anfahrtsbeschreibung. Echte .NET Freaks benutzen aber die Virtual Earth Karte auf der Homepage von .NET Braunschweig ;-)
 
 
Wir feiern bei diesem Treffen das Launch Event für Windows Server 2008, SQL Server 2008 und natürlich Visual Studio 2008.
Es wird Vorträge zum Thema geben und natürlich auch die eine oder ander Lizenz zu gewinnen geben.
 
 
Weitere Infos:
 
 
posted on 5/16/2008 9:44:55 AM (W. Europe Standard Time, UTC+01:00)  #    Comments [0]

 Thursday, April 03, 2008

Heute will ich mal was dazu schreiben, wie man die LATIKA Knowledgebase an seine Bedürfnisse anpassen kann. Als Beispiel habe ich mir überlegt, wie man YouTube Videos in einen Artikel einbetten kann und zwar mit einem eigens "entwickelten" Tag. Aber vielleicht sollte ich erstmal erklären was ein Tag ist.

 

Für LATIKA haben wir die LATIKA Markup Language (LML) entwickelt, dabei handelt es sich um eine erweiterte Markupsprache, um das Schreiben von Artikeln zu vereinfachen. Beispiele für Standardtags findet man hier.

Ein Tag hat folgenden Aufbau:

[[command:param_1;param_2;...;param_n]subject]

Die Parameter und das Subjekt sind je nach Kommando/Tag optional.

 

Ein Wiki-Tag im Bearbeitenmodus sieht zum Beispiel so aus:

LATIKA Tags unterstützen auch [[wiki]Javascript].

Im Lesemodus wird dann folgendes generiert:

LATIKA Tags unterstützen auch Javascript.

 

Die Tag-Konfiguration befindet sich in der Datei ~\Configuration\TagDecrypter\tagdecrypter.config und hat folgenden Aufbau:


<?xml version="1.0" encoding="utf-8" ?> 
<Tags>  
...  
<Tag> 
    <Command type="wiki">Verlinkt zu Wikipedia.</Command> 
    <Subject optional="false">Der zu verlinkende Text.</Subject> 
    <Params> 
    </Params> 
    <ErrorReplacement>$subject$</ErrorReplacement> 
    <Transformation type="SimpleTagTransformation" replaceEqualTags="true"
      <Html> 
        <![CDATA[<a href="http://de.wikipedia.org/wiki/$subject$" title="Definition von
'$subject$' bei Wikipedia nachschlagen" target="_blank">$subject$</a>]]>
 
      </Html> 
      <Text>$subject$</Text>       
    </Transformation> 
  </Tag> 
... 
</Tags>

 

Diese XML-Datei kann nach belieben verändert und ergänzt werden. Die Tags können von beliebig implementierbaren TagInterpretern verarbeitet werden. Ein TagInterpreter wiederum benutzt verschiedene TagTransformationen um die Tags zu rendern. Standardmässig wird die Knowledgebase nur mit der SimpleTagTransformation ausgeliefert. Mit einer SimpleTagTransformation können wir ein Tag durch einen statischen Inhalt austauschen, der über Parameter angepasst werden kann. Für die Zwecke meines Beispiels reicht eine SimpleTagTransformation aber vollkommen aus.

 

Ein eigenes Tag erstellen

So, kommen wir nun aber zum Thema: Videos von YouTube einbetten mit einem eigenem Tag.

Dafür hab ich mir mal folgendes Video rausgesucht: http://www.youtube.com/watch?v=U4sjNtH3pRI ...Wer mein Blog schon länger liest weiß warum ;-)

Es gibt auf der YouTube-Seite zu (fast) jedem Video ein Stück HTML-Code das man kopieren kann und somit in seine eigene Seite einbauen kann:

<object width="425" height="355">
  <param name="movie" value="http://www.youtube.com/v/U4sjNtH3pRI&hl=en"></param>
  <param name="wmode" value="transparent"></param>
  <embed src="http://www.youtube.com/v/U4sjNtH3pRI&hl=en" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"></embed>
</object>

Natürlich könnten wir diesen Code auch nehmen, um ihn direkt in der Codeansicht des Bearbeitenmodus eines Artikels einzufügen. Ein Tag macht das Ganze aber noch etwas "smoother".

 

Die Basis

Als erstes kopieren wir ein beliebiges Tag aus der Tagkonfiguration und fügen es erneut ein. Nehmen wir zum Beispiel das oben bereits erwähnte wiki-Tag und löschen alle Inhalte:

<Tag> 
    <Command type=""></Command> 
    <Subject optional="false"></Subject> 
    <Params> 
    </Params> 
    <ErrorReplacement>$subject$</ErrorReplacement> 
    <Transformation type="SimpleTagTransformation" replaceEqualTags="true"
      <Html> 
        <![CDATA[...]]> 
      </Html> 
      <Text>$subject$</Text>       
    </Transformation> 
  </Tag> 

 

Als nächstes geben wir dem Tag einen Namen (youtube) und fügen den HTML-Code von der YouTube-Seite ein:

<Tag> 
    <Command type="youtube"></Command> 
    <Subject optional="false"></Subject> 
    <Params> 
    </Params> 
    <ErrorReplacement>$subject$</ErrorReplacement> 
    <Transformation type="SimpleTagTransformation" replaceEqualTags="true"
      <Html> 
        <![CDATA[<object width="425" height="355">
<param name="movie" value="http://www.youtube.com/v/U4sjNtH3pRI&hl=en"></param>
<param name="wmode" value="transparent"></param>
<embed src=http://www.youtube.com/v/U4sjNtH3pRI&hl=en" type="application/x-shockwave-flash"
wmode="transparent" width="425" height="355"></embed>
</object>]]>
 
      </Html> 
      <Text>$subject$</Text>       
    </Transformation> 
  </Tag> 

 

Der Code (U4sjNtH3pRI) über den das Video identifiziert wird, habe ich schwarz markiert. Dies sind die einzigen Stellen an denen sich der Code von den Videos unterscheidet.

Unser Tag könnte also wie folgt aussehen [[youtube:U4sjNtH3pRI]]

 

Dafür müssen wir aber noch einen erforderlichen Parameter definieren und an den entsprechenden Stellen einsetzen. Da wir kein Subjekt benötigen müssen wir das entsprechende Attribut auf "true" setzen.

Schließlich fügen wir für das Kommando und das Subjekt einen beschreibenden Text ein. Dies ist wichtig, da aus der Konfigurationsdatei auch gleichzeitig der Hilfetext für die Tags generiert wird. Jedes neue Tag das wir erstellen erscheint also auch automatisch in der Taghilfe (siehe Ende des Artikels).

 

<Tag> 
    <Command type="youtube">Einbetten eines YouTube-Videos.</Command> 
    <Subject optional="true"></Subject> 
    <Params> 
      <Param id="1" optional="false">Eindeutiger Code des Videos der aus dem URL (Parameter "v=") kopiert werden kann.</Param>
    </Params> 
    <ErrorReplacement>$subject$</ErrorReplacement> 
    <Transformation type="SimpleTagTransformation" replaceEqualTags="true"
      <Html> 
        <![CDATA[<object width="425" height="355">
<param name="movie" value="http://www.youtube.com/v/$param_1$&hl=en"></param>
<param name="wmode" value="transparent"></param>
<embed src=http://www.youtube.com/v/$param_1$&hl=en" type="application/x-shockwave-flash"
wmode="transparent" width="425" height="355"></embed>
</object>]]>
 
      </Html> 
      <Text>$subject$</Text>       
    </Transformation> 
</Tag> 

 

Nun können wir das Ganze auch mal testen:

 

Bearbeitungsmodus

latika_youtube_01

 

Lesemodus

latika_youtube_02

 

Funktionalität ergänzen

Um das Tag noch ein bisschen weiter auszubauen, habe ich mir überlegt, dass es ganz gut wäre, wenn man noch einen Textlink zur YouTube-Seite einbauen könnte. Weiterhin sollte man auswählen können, ob man nur das Video, nur den Link oder beides anzeigen lassen möchte. Mit ein bisschen Javascript-Unterstützung sieht das fertige Tag wie folgt aus:

 

<Tag> 
    <Command type="youtube">Einbetten eines YouTube-Videos.</Command> 
    <Subject optional="true"></Subject> 
    <Params> 
      <Param id="1" optional="false">Eindeutiger Code des Videos der aus dem URL (Parameter "v=") kopiert werden kann.</Param>
      <Param id="2" optional="true">0 = Video nicht einbetten.</Param>
    </Params> 
    <ErrorReplacement>$subject$</ErrorReplacement> 
    <Transformation type="SimpleTagTransformation" replaceEqualTags="true"
      <Html> 
        <![CDATA[
        <script>
          if("$subject$"!="") {
            document.write('<p><a href="http://www.youtube.com/watch?v=$param_1$" target="_blank">$subject$</a></p>');
          }
          if("$param_2$"!="0") {
            document.write('<object width="425" height="355"><param name="movie" value="http://www.youtube.com/v/$param_1$"></param>
<param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/$param_1$&hl=en" type="application/x-shockwave-flash"
wmode="transparent" width="425" height="355"></embed></object>');
          }
        </script>]]>
      </Html> 
      <Text>$subject$</Text>       
    </Transformation> 
</Tag> 

 

Die Syntax für die 3 Fälle sieht wie folgt aus:

Nur Video
[[youtube:U4sjNtH3pRI]]

Video und Link
[[youtube:U4sjNtH3pRI]How We Do!]

Nur Link
[[youtube:U4sjNtH3pRI;0]How We Do!]

 

Zu guter Letzt werfen wir noch einen Blick auf die dynamisch generierte Hilfe:

latika_youtube_03

 

So, das wars erstmal. Ich denke in einem anderen Blogeintrag werde ich zeigen wie man eine eigene TagTransformation implementieren kann, die etwas mehr kann, als nur statisch Texte auszutauschen.

posted on 4/3/2008 1:51:17 PM (W. Europe Standard Time, UTC+01:00)  #    Comments [1]

 Friday, March 28, 2008

Gerade hat der Postbote die neueste Ausgabe des dot.net magazins vorbeigebracht. An sich nichts Besonderes, wenn in dieser Ausgabe nicht die LATIKA Knowledgebase auf der CD wäre :)

 

Zu LATIKA siehe auch:
http://www.eljed.de/blog/PermaLink,guid,ca4b21b9-2546-43ec-8798-7d699303e774.aspx

posted on 3/28/2008 11:18:16 AM (W. Europe Standard Time, UTC+01:00)  #    Comments [0]

 Thursday, March 20, 2008

Ich hatte gerade einen sehr interessanten Fehler in Visual Studio. Beim Starten meiner Webapplikation öffnete sich immer UltraEdit anstatt des Internet Explorers:

 

UltraEdit und VS 2008

 

Die Dateiverknüpfungen in UltraEdit und VS 2008 waren alle so wie sie sein sollten. Es war nix zu finden, was daraufhin deutete warum nun UltraEdit versucht einen Url als Dokument zu öffnen.

Fehlermeldung:

C:\Program Files (x86)\UltraEdit\hhtp:\\localhost:5215\Default.aspx enthält eine ungültige Pfadangabe.

 

Die einfache Lösung die ich gefunden habe:

1) VS beenden

2) UltraEdit.exe umbenennen

3) VS starten

4) Webapplikation starten

5) UltraEdit.exe umbenennen rückgängig machen

 

komisch, komisch...

posted on 3/20/2008 5:08:25 PM (W. Europe Standard Time, UTC+01:00)  #    Comments [0]

 Monday, March 17, 2008

Für alle die nicht bei der MIX waren hat Brad Abrams das Silverlight 2 Developer Reference Poster in seinem Blog zum Download zu Verfügung gestellt. Es gibt eine Übersicht über die Namensräume und was alles neu darin ist, sowie eine Liste der Controls, Tools und der unterstützten Plattformen und Browser. "A must have" sozusagen.

posted on 3/17/2008 5:37:55 PM (W. Europe Standard Time, UTC+01:00)  #    Comments [0]

 Tuesday, March 11, 2008

Zwar schon "etwas" länger her, aber eben gerade erst gefunden: Shawn Burke hat in seinem Blog den Quellcode der in Silverlight 2 Beta 1  enthaltenen Controls inklusive Unit Tests veröffentlicht. Der Quellcode dürfte sehr hilfreich für die Entwicklung von Silverlight-Applikationen sein.

Die Controls stehen übrigens unter der Microsoft Source License for Silverlight Controls.

posted on 3/11/2008 3:14:44 PM (W. Europe Standard Time, UTC+01:00)  #    Comments [0]

 Monday, March 10, 2008

Das war sie nun wieder die CeBIT. Einen neuen Besucherrekord hat es wohl auch gegeben, wie ich heute Morgen im Radio gehört habe. Eine halbe Million Besucher, nicht schlecht. Das neue Messe-Konzept scheint also aufgegangen zu sein.

Auch Lars und ich waren auf der CeBIT. Als Axinom Partner war der Besuch beim Axinom Stand natürlich Pflicht. Die perfekte Gelegenheit sich die neue Version 8.0 von einem Entwickler oder in unserem Fall von einer Entwicklerin persönlich vorführen zu lassen.

Neue Features für die Benutzer des CMS gibt es allerdings nicht gerade in Unmengen, aber dafür einige Sinnvolle. Beispielsweise kann man nun die Übersichtsseiten so filtern, dass man nur die Elemente angezeigt bekommt die man bearbeiten darf. Bei größeren Seiten eine sehr angenehme Arbeitserleichterung. Die meisten Verbesserungen sollen unter der Haube passiert sein und sind nur für Entwickler von Interesse. Das Anpassen der Übersichtsseiten und der Filter z.B. sollen nun leichter von der Hand gehen.

Highlight war natürlich das Silverlight 2.0 Frontend, dass über spezielle Services Objekte aus dem AxCMS abrufen und visualisieren kann. Axinom hat das außergewöhnliche Glück schon mit einer Vorabversion arbeiten zu können. Nicht das ich jetzt neidisch bin oder so... :-)

Sobald man die neue Version herunterladen kann, werde ich das Ganze mal testen und wenn es die Zeit zulässt schreibe ich noch einen detaillierteren Blogeintrag über die neuen Features.

 

Ach ja, bevor ich es vergesse. Mein persönliches Highlight der CeBIT war übrigens, dass ich mit meinem Wagen direkt in der Halle parken durfte ;-)

Mein_Auto

posted on 3/10/2008 9:19:25 AM (W. Europe Standard Time, UTC+01:00)  #    Comments [0]