ABOUT
IN4OUT Logo
IN4OUT it solutions ist ein Dienstleistungsunternehmen
im Bereich der Informationstechnologie.
 
In diesem Blog berichten IN4OUT-Mitarbeiter über Erlebnisse und Abenteuer rund um Informatik-Probleme und -Lösungen, Web-Design und -Entwicklung, Microsoft Produkte, Social Computing sowie alles andere, was die Gedanken bewegt.

  Feed abonnieren

3D-Filme oder Das Ende der Piraterie

by Nicole Strebel 4. January 2010 08:14

Nach seinem Bombenerfolg "Titantic", im Jahre 1997, hat es sich James Cameron zur Aufgabe gemacht, das Kino und die Filme zu revolutionieren. Zehn Jahre lang hat der Regisseur an seinem neusten Streifen gearbeitet - "Avatar". Obwohl mich die aufdringliche Werbung zum Film langsam zu nerven begonnen hatte, entschied ich mich den Film anschauen zu gehen. Weniger wegen dem Film und der Story, aber mehr wegen der neuen 3D-Technik. Als "Ice Age 3" ins Kino kam, hab ich ihn auch in 3D geschaut. Es war eigentlich ganz gut, aber richtig vom Hocker gehauen hats mich noch nicht.
Von "Avatar" hatte ich bis dahin schon faszinierendes gelesen und gehört : "Gestochen scharfe Bilder!", "Ein nie dagewesendes 3D-Erlebnis!", "Man spielt praktisch im Film mit!". So bin ich letzten Sonntag, also mit hohen Erwartungen und gespannt ins Kino gegangen. Ich wurde nicht enttäuscht. Der Film war der Wahnsinn! Die Story zwar vorausschaubar, aber die Bilder und das 3D-Erlebnis war echt der Hammer. Man hat richtig gemerkt, dass der Film voll und ganz aufs 3D ausgelegt ist. Ohne dass, wär der Film nur halb so gut und daher auch halb so erfolgreich gewesen, behaupte ich jetzt einmal. ;-)
Wieder zuhause hab ich mit Freunden noch lange über den Film und die Technik gesprochen. Dabei sind mehr oder weniger nur Halbwahrheiten herausgekommen und deshalb hab ich mich entschlossen ein bisschen genauer zu recherchieren, wie denn diese 3D-Technik genau funktioniert.

In jenem Kino wurden uns zu Beginn des Filmes spezielle Brillen ausgehändigt. Die Brillen funktionieren mit sogenannter Stereoskopie-Technik oder auch Raumbildprojektion genannt. Mit alter Technik wie dem Analglyphen-Verfahren (Rot-Grün-Brille) hat diese Technik nichts mehr am Hut. Der Film kommt digital von dem sogenannten DCP (Digital Cinema Package) in verschlüsselter Form. Im Unterscheid zu den "normalen" 2D-Filmen, werden beim neuen 3D-Verfahren 48 statt 24 Bilder pro Sekunde gesendet - Für jedes Auge also 24. Diese Bilder, für jedes Auge unterschiedlich, können mit Hilfe der Spezial-Brille und deren unterschiedlichen Polaroid-Gläsern, als räumliches Bild, farbgetreu wahrgenommen werden.

Viele Kinobetreiber freuen sich  über den Anklang, den die neuen Filme so mit sich bringen. In den USA stürmen dank der neuen Technologie, so viele Leute ins Kino, wie schon seit 20 Jahren nicht mehr. Deshalb wird hinter vorgehaltener Hand gemunkelt, dass 3D auch die Antwort  auf die Film-Piraterie ist. Jeffrey Katzenberg ("Shrek", "Madagaskar")  meint, dass mit den 3D-Filmen wieder die geteilte Erfahrung mit den Mitzuschauern wichtig wird. Es gibt halt momentan noch keine vernünftige Methode zu Hause 3D zu schauen. Katzenberg formuliert auch, dass über 90% aller Raubkopien mit sogenannten Minikameras, direkt im Kino, aufgenommen werden. Versucht man dies mit einem 3D-Film "kann man die Bilder auch gleich wegschmeissen", wie Katzenberg zu sagen pflegt.

Allerdings sei dies nur ein geschäftlicher Aspekt der Filmindustrie, meint Katzenberg. Ihm gehe es in erster Linie darum das Potenzial das 3D in Kombination mit guter Erzähltechnik hat, vollends auszuschöpfen. Ich teile meine Meinung voll und ganz mit Katzenberg. Auch mir ist es wichtig im Kino gute und spannende Filme zu sehen. "Avatar" hat mir gezeigt, dass trotz flacher Story 3D-Filme echt cool sind und einen trotzdem mitreissen können.



WCF und Multiple Host Header oder "This collection already contains an address with scheme http. There can be at most one address per scheme in this collection. "

by Nicole Strebel 28. December 2009 13:17

Liebe Silverlight - Gemeinde

Nach einer kleinen Ewigkeit melde ich mich bei euch mit einem Problem zurück, in der Hoffnung, Hilfe oder Lösungen zu bekommen.
Das Problem hat sich im Zusammenhang von Silverlight-Applikationen auf Webseiten mit "mutliplen Host Headern" gezeigt. Wird zum kommunzieren von Client- und Server-Seite ein WCF Service benutzt, bekommt man unweigerlich die Fehlermeldung:

Wie schon erwähnt, tritt das Problem nur bei "multiplen Host Headern" auf.  Vereinfacht gesagt, werden "multiple Host Header" benötigt, wenn man über verschiedene URL's auf die gleiche Webseite gelangen will. Auf dem unteren Bild sieht man zwei solche Host Header.

Mit mehreren Host Headern wird unser hübscher WCF Service ein bisschen verwirrt und weiss nicht mehr wo er sich denn jetzt befindet. Und weil er das nicht weiss, findet er sich sozusagen selber nicht.
Nach kurzem googlen, hat sich herausgestellt dass man im "Web.config" - File nur ganz einfach folgendes eingeben muss, damit's funktioniert:

<serviceHostingEnvironment>
      <
baseAddressPrefixFilters
>
         
<add prefix="http://*****.in4out.ch"
/>
    
</baseAddressPrefixFilters
>
</
serviceHostingEnvironment>

Jetzt funktioniert der WCF Service allerdings nur noch auf der URL http://*****.in4out.ch, dafür aber nicht mehr auf http://*****.in4out-ag.local.
Es gibt auch keine Möglichkeit zwei solcher "baseAddressPrefixFilters" zu setzen, denn dann weiss der Webservice wieder nicht wo er sich befindet.

Nach weiterem googlen stiess ich dabei auf folgendes: CreateServiceHost
Dabei lautet die Definition von Microsoft:
"Erstellt eine Instanz der Dienstklasse, die über die angegebenen Basisadressen verfügt."

Nach dem Durchstöbern zahlreicher Foren, bin ich auf das Untenstehende gekommen.

1. Man mache eine neue Klasse im App-Code-Ordner und nenne diese "CustomHostFactory"
2. Man kopiere folgenden Code rein:

    Imports
Microsoft.VisualBasic
   
Imports System.ServiceModel.Activation
   
Imports System.ServiceModel
   
Imports System.IO
   
   
Public Class CustomHostFactory
            
Inherits ServiceHostFactory
               
Protected Overloads Overrides Function CreateServiceHost(ByVal serviceType As Type, ByVal baseAddresses As Uri()) As ServiceHost
                    
Dim host As ServiceHost
                     host =
New ServiceHost(serviceType, baseAddresses(0))
                     
Return host
               
End Function
    End
Class

3. Man setze im "svc"- File das "Factory"- Property:

    <%@ ServiceHost Language="VB" Debug="false" Service="i4BambiService" CodeBehind="~/App_Code/i4Bambi/i4BambiService.vb" Factory="CustomHostFactory"%>

Nun weiter zur Erklärung...

Meistens wird die Funktion "CreateServiceHost" automatisch mit dem Aufrufen des WCF als Teil der Dienstaktivierung aufgerufen, sodass die Methode nicht manuell gesetzt werden muss.
Um aber steuern zu können, welchen Host Header der Webservice nun nehmen soll, benötige ich die Methode hier. Man werfe doch nun bitte einen Blick auf den Parameter "baseAddresses" in dieser Methode.

In diesen Parameter werden alle verschiedene Host Header geschrieben. In meinem Fall also: http://*****.in4out.ch und  http://*****.in4out-ag.local.
Mit dem Integer in der Klammer (hier also "0") wird angeben welcher Host Header aus dem Array denn gewählt werden soll.
Wenn man nun noch mals folgendes betrachtet:

ist es in diesem Fall nun der erste Host Header, nämlich: http://*****.in4out-ag.local

Ich kann nun zwar im Code-Behind steuern, welchen Host Header ich denn gerne haben möchte, allerdings kann ich hier keine Abfragen machen und so den Integer auch nicht dynamisch werden lassen. Wie es scheint, wird nur jedesmal nach dem Compilieren der Host Header neu gesetzt. Ich kann auch den Pfad zum Webservice nicht dynamisch machen.

So und jetzt kommt ihr zum Zug. Habt ihr vielleicht eine Idee für mich, oder hab ich einfach was grundlegendes falsch verstanden? Ich bitte um eure Mithilfe.
Noch ne kurze Zusammenfassung: Ich suche nach einem Weg, wie mein Webservice bei beliebig vielen Host Headern funktionieren kann, ohne dass ich manuell etwas ändern oder absolute Pfade vergeben muss.
Ich danke euch schon mal im Vorraus.



HOW TO:Silverlight 3 Applikation im Web

by Nicole Strebel 28. August 2009 16:58

Seit einiger Zeit ist Silverlight ja nun auf dem Markt. Da die IN4OUT gerne auf dem neusten Stand ist, habe wir eine Bilderverwaltung mit Silverlight 3 gemacht, welche an eine Microsoft SQL Datenbank gebunden ist. Um euch alle in die Geheimnisse von Silverlight 3 Entwicklung einzuweihen, schreib ich diesen HOW TO - Eintrag.

So, damit ihr auch etwas über den Ablauf und die Technik von Silverlight wisst, hier noch einen kurzen Abschnitt über die Architektur:

Wie man auf dem obigen Architekturschema sehen kann, befinden sich auf der Serverseite die Datenbank, ein ClassContainer und Webservice. Clientseitig befindet sich dann die eigentliche Silverlight-Applikation. Um das Ganze noch etwas genauer zu veranschaulichen, gebe ich ein Beispiel:>

Was passiert wenn aus der Datenbank Daten geladen werden, welche in einem Datagrid angezeigt werden.

  1. In der Datenbank wird eine ganz normale Stored Procedure geschrieben um die Daten aus der entsprechenden Tabelle zu lesen.
  2. Im Webservice wird der Zugriff auf die Stored Procedures gemacht. Normalerweise machen wir das über die DB-Klassen im App_Code-Ordner gemacht. 3.Da Silverlight keine 
    Datasets und  Datareader kennt, werden dann die Daten in den ClassContainer geschrieben. In diesem ClassContainer befinden sich nur Propertys.  
  3. Auf der Clientseite im Programmcode wird dann der Zugriff auf den Webservice gemacht und die gespeicherten Daten aus dem ClassContainer herausgelesen. Diese Daten können dann wie gewohnt an ein Datagrid, eine Listbox oder weitere Controls gebunden werden.
  4. Diese Daten können dann wie gewohnt an ein Datagrid, eine Listbox oder weitere Controls gebunden werden.

Weiter darf man nicht vergessen, die verschiedenen Packages von Silverlight zu installieren. Siehe dazu HOW TO: UPgrade von Silverlight 2 zu Silverlight3

Zuerst muss ein neues Projekt erstellt werden. Dafür wählt man in der Sprache Visual Basic ein Silverlight-Projekt. Wichtig ist dabei, dass das .NET Framework 3.5  ausgewählt ist. Wenn dann auf OK geklickt wird, erscheint ein weiterer Bildschirm. Visual Studio fragt nach ob die Silverlight-Applikation bereits in eine Webseite integriert werden soll. Wir lassen die Standardeinstellungen und klicken auf OK. So haben wir bereits genau dieselbe Umgebung wie wir es später im i4Portal benötigen. Nun ist das Projekt erstellt und die XAML-Seite Page.xaml geöffnet. Mit F5 kann die Applikation bereits gestartet werden.
Nicht vergessen denn Connectionstring im Web.config anzugeben. In der Datenbank schreiben wir eine Stored Procedure, welche uns alle Bilder aus der Datenbank liest. Diese Bilder wollen wir später in einem Datagrid anzeigen lassen.
Wenn wir mit ASP.NET arbeiten würden, würden wir in der Klasse ImageDB den Zugriff auf die Datenbank machen. Mit Silverlight ist dies alles ein bisschen speziell. Wir müssen einen Webservice machen. Dafür klicken wir mit Rechts auf das Web-Projekt und mit „Add – New item“ wählen wir den „Silverlight-enabled WCF Service“ aus und nennen in SLService. Der Webservice wird generiert und hat bereits eine vorgefertigte Funktion namens „DoWork()“.

Imports System.ServiceModel

Imports System.ServiceModel.Activation

<ServiceContract(Namespace:="")> _

<AspNetCompatibilityRequirements(RequirementsMode:=AspNetCompatibilityRequirementsMode.Allowed)> _

Public Class SLService

    <OperationContract()> _

    Public Sub DoWork()

        ' Add your operation implementation here

    End Sub

    ' Add more operations here and mark them with <OperationContract()>

End Class

Wie bereits in Kapitel 3 erwähnt, kennt Silverlight keine Datareader oder Datasets, deshalb müssen die Daten welche mit dem Webservice ausgelesen werden, in  Propertys zwischen gespeichert werden. Man erstellt also im Web eine normale VB-Klasse und macht aus den einzelnen Spalten die man mit der Stored Procedure ausgelesen hat Propertys. Jetzt wagen wir uns an den Webservice. Auf einer Seite zuvor kann man das Grundgerüst erkennen. Statt der Funktion „DoWork()“ können wir dort einfach unsere Funktion benutzen.

<OperationContract()> _

Public Function GetImagesByCategory(ByVal CategoryID As Integer) As List(Of Category)

' Create Instance of Connection and Command Object

Dim myConnection As New SqlConnection(ConfigurationManager.AppSettings("connectionString"))

myCommand.Parameters.Add(parameterModuleID)

myConnection.Open()

Dim result As SqlDataReader = myCommand.ExecuteReader(CommandBehavior.CloseConnection)

If result IsNot Nothing Then

Do While result.Read()

Dim cust = New Category With {.ImageID = result.GetInt32(0), .ImageFriendlyName = result.GetString(1), .ImageCreatedDate = result.GetDateTime(11), .ImageFormat = result.GetString(8), .ImageWidth = result.GetInt32(5), .ImageHeight = result.GetInt32(6), .ImageSize = result.GetInt32(9)}

custList.Add(cust)

Loop

End If

Return custList.ToList()

End Function

Dabei wird das <OperationContract()> immer benötigt wenn eine Funktion dann clientseitig erreichbar sein Interessant ist auch der eingekreiste Teil der Funktion. Dort kann man nämlich sehen wie die Ergebnisse aus dem Resultset in die einzelnen Propertys der Klasse geschrieben werden. ">Da nun also der serverseitige Teil abgeschlossen ist, machen wir uns an die Clientseite. Damit wir unsere Daten überhaupt anzeigen können, müssen wir den Webservice zuerst einbinden. Als wir den Webservice erstellt haben, wurde das Web.Config-File automatisch angepasst. Nehmen wir an, dass unser Webservice „SLService.svc“ heisst, sieht es in unserem Web.Config-File folgendermassen aus.


 
<system.serviceModel>

  <behaviors>

   <serviceBehaviors>

    <behavior name="Silverlight.Web.SLServiceBehavior">

     <serviceMetadata httpGetEnabled="true" />

     <serviceDebug includeExceptionDetailInFaults="false" />

    </behavior>

   </serviceBehaviors>

  </behaviors>

  <bindings>

   <customBinding>

    <binding name="customBinding0">

     <binaryMessageEncoding />

     <httpTransport />

    </binding>

   </customBinding>

  </bindings>

  <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />

  <services>

   <service behaviorConfiguration="Silverlight.Web.SLServiceBehavior"

    name="Silverlight.Web.SLService">

    <endpoint address="" binding="customBinding" bindingConfiguration="customBinding0"

     contract="Silverlight.Web.SLService" />

    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />

   </service>

  </services>

 </system.serviceModel>

Dabei müssen die eingekreisten Teile des neuen Web.Config-Teil’s geändert werden.


<
system.serviceModel>

<bindings>

<basicHttpBinding>

binding name="ServicesBinding" maxReceivedMessageSize="200000000" maxBufferSize="200000000">

     <readerQuotas maxArrayLength="200000000"  maxStringContentLength="200000000"/>

</binding>

</basicHttpBinding>

</bindings>

  <behaviors>

   <serviceBehaviors>

    <behavior name="Silverlight.Web.SLServiceBehavior">

     <serviceMetadata httpGetEnabled="true" />

     <serviceDebug includeExceptionDetailInFaults="false" />

    </behavior>

   </serviceBehaviors>

  </behaviors>

  <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />

  <services>

   <service behaviorConfiguration="Silverlight.Web.SLServiceBehavior"

    name="Silverlight.Web.SLService">

    <endpoint address="" binding="basicHttpBinding" bindingConfiguration="ServicesBinding"

     contract="Silverlight.Web.SLService" />

    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />

   </service>

  </services>

 </system.serviceModel>

</configuration>

Nun können wir testen ob der Webservice funktioniert. Wir rufen den Webservice direkt im Browser auf: Wenn der Webservice wie auf dem linken Screen aussieht, kann er der Silverlight-Applikation problemlos hinzugefügt werden. Der rechte Screen meldet uns einen Fehler bezüglich des Webservices. Auf Fehlersuche geht man sowieso nur über den Browser. Probiert man einen fehlerhaften Webservice einer Silverlight-Applikation hinzuzufügen, kommt immer der Not-Found 404 – Fehler, welcher nicht sehr aussagekräftig ist.
Um den Webservice hinzuzufügen klicken wir mit Rechts auf „References“ und dann auf „Add Service Reference“. Nun können wir die URL des Services direkt angeben oder einfach nach allen Services suchen mit dem Klick auf „Discover“. Jetzt sehen wir dort genau unsere Methode welche auf die Stored Procedures in der Datenbank zugreift.
Unsere Webservice-Referenz nennen wir der einfachheithalber mal „Reference“.

Nachdem wir nun den Webservice hinzugefügt haben, machen wir uns an die XAML-Seite. Dort fügen wir auf der GUI-Seite ein normales Datagrid ein.


<
UserControl xmlns:data="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data"    

    x:Class="Silverlight.MainPage"

    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"  

    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

    mc:Ignorable="d" d:DesignWidth="640" d:DesignHeight="480">

       <Grid x:Name="LayoutRoot">

       <data:DataGrid x:Name="dgImages" Width="500" Height="500"></data:DataGrid>

        </Grid>

</UserControl>                     

Das x:Name ist sozusagen die ID von Objekten in ASP.NET. Danach öffnen wir die Code-Behind-Seite und geben zum Binden der Daten an das Datagrid folgenden Code an. (Der grüne Text bezeichnet dabei Kommentare.)


Partial
Public Class MainPage

Inherits UserControl

Public Sub New()

InitializeComponent()

'*** Hier wird nochmals angegeben, wie der Pfad zum Webservice heisst.

Dim uri As New Uri(Application.Current.Host.Source, "/SLService.svc")

Dim client As New Reference.SLServiceClient("BasicHttpBinding_SLService", uri.AbsoluteUri)

'*** Dieser Handler wird augerufen wenn das Abrufen der Dates

'*** aus der Datenbank über die Klasse,

'*** über den Webservice fertig ist und die asynchrone Methonde(siehe unten)

'*** ausgeführt wurde

AddHandler client.GetImagesByCategoryCompleted, AddressOf client_GetImagesByCategory

'*** Asynchrone Methonde. Die zwei in der Klammer steht dabei für die

'*** benötigten Parameter.

client.GetImagesByCategoryAsync(2)

End Sub

Private Sub client_GetImagesByCategory(ByVal sender As Object, ByVal e As Reference.GetImagesByCategoryCompletedEventArgs)

'*** Wenn alle Daten geladen sind, werden die Resulate an

'*** das Datagrid gebunden.

dgImages.ItemsSource = e.Result

End Sub

End Class              

Wenn  ich die Applikation nun starte, habe ich bereits das gefüllte Datagrid! Juchee!



HOW TO: Upgrade von Silverlight 2 zu Silverlight 3

by Nicole Strebel 27. August 2009 08:37

Seit etwa einem Monat ist Silverlight 3 nun offiziell auf dem Markt. Da viele Silverlight 2 - Applikationen jetzt ja nicht mehr auf dem neusten Stand sind, möchte ich hier eine Anleitung für das optimale Upgrade geben.

Kurz zu meinem Projekt: Ich habe ein Silverlight-Projekt und ein Web-Projekt in einer Solution welche über einen Webservice miteinander kommunizieren.

Zur Vorbereitung auf Silverlight 3 hab ich mir die verschiedenen Silverlight 3 Packages heruntergeladen:

- Microsoft® Silverlight™ 3 Tools for Visual Studio 2008 SP1
- Microsoft Expression Blend 3 + SketchFlow RC
- Silverlight 3 Toolkit

Bevor ich die Packages allerdings installiert habe, habe ich das Silverlight 2 Toolkit, Silverlight 2 SDK, Expression Blend 2 und alles Weitere was Silverlight 2 benötigte deinstalliert.

Aber Achtung: Man soll sich bewusst sein, dass beim Upgrade einer Silverlight-2-zu-3-Applikation, keine Downgrade mehr möglich ist. Wenn die Applikation später dann doch wieder unter Silverlight 2 laufen soll, git es keine Möglichkeit dazu. Deshalb solltem an unbedingt eine Kopie der Applikation vor dem Upgrade machen.

Nachdem alle Silverlight 2 - Komponenten deinstalliert sind, können die Silverlight 3 Komponenten installiert werden. Wenn die Installationen erfolgreich waren, kann nun ein Silverlight 2 PRojekt geöffnet werden. Beim Öffnen erscheint der "Conversion Wizard" vom Visual Studio (siehe unten)

Conversion Wizard

Der Wizard muss vollständig durchlaufen.

Nun muss noch die alte Silverlight.js Datei mit der neuen ersetzt werden. Diese befindet sich standardmässig im Verzeichnis
"C:\Program Files\Microsoft SDKs\Silverlight\v3.0\Tools".

Eigentlich sollte man das Projekt lauft Microsoft nun kompilieren können. Ich hatte jedoch ein Problem mit dem Webservice, welcher von der Silverlight Applikation zwar gefunden wurde aber die einzelnen Funktionen Fehler aufwiesen. Nach langem Suchen bin ich dann auf eine seltsame lösung gestossen:

1. Der Webservice muss aus der Silverlight-Applikation gelöscht werden. (Beispielname: "SilverlightService")
2. Nun kann der Webservice wieder hinzugefügt werden, aber unter einem anderen Namen. (Beispielname: "SilverlightService_new")
3. Jetzt muss auch dieser Webservice wieder entfernt werden. (Beispielname: "SilverlightService_new")
4. Als vierter Schritt kann nun der Webservice wieder unter seinem ursprünglichen Namen hinzugefügt werden. (Beispielname: "SilverlightService")

Nun tauchen keine Fehler mehr auf und die Applikation kann als Silverlight 3-Applikation kompiliert werden.



Gamescom 2009 in Köln

by Nicole Strebel 25. August 2009 09:16

Seit meinem 5. Lebensjahr und dem damit verbundenen ersten Computer im Haushalt bin ich verrückt nach Computerspielen. Mit Spannung hab ich "Guybrush Threepwood" von "Monkey Island" in seinen Abenteuern begleitet, "Pacman" und der Marienkäfer von "getthemall" durch zahlreiche Labyrinthe gejagt, und manchmal bei "The Legend of  Kyrandia" beim "Rest-in-Peiace-Brandon" - Screen ein Tränchen vergossen.

Hinter dir, ein dreiköpfiger Affe!

Durch meine Leidenschaft, hab ich dann letztes Jahr das erste Mal die "Games Convention" in Leipzig besucht. Die Spielermesse fand erstmals im Jahre 2002 statt und zählte damals nur 80'000 Besucher.  Die "GC" wurde dabei von der Leipziger Messe GmbH veranstaltet während als offizieller Ideenträger der Bundesverband Interaktive Unterhaltungssoftware (BIU) galt.
Urplötzlich wurde an der "GC 2008" verkündet dass der BIU die Leipziger Messe nicht mehr unterstützt, dafür aber die neue Messe Gamescom in Köln. Entrüstung ging durch die Reihen der Gamer, welche sich Leipzig und die "Games Convention" ins Herz geschlossen hatten. Kein Protest nützte und so wurde die grösste Spielemesse Europas nach Köln verlegt. Dadurch erhoffte die BIU sich noch mehr Besucher als die 203'000 in Leipzig im Jahre 2008.

Obwohl das Budget in Leipzig nicht gerade gross war, entschied man sich die Games Convention im kleinen Rahmen weiter zu führen. Aus der Games Convention wurde die Games Convention Online, welche mit ihren 43'000 Besucher, ziemlich klein gehalten wurde.

Games Convention Online

Zurück nach Köln....
Bereits im Vorfeld hatte ich auf dem
Gamescom-Camp eine Übernachtungsmöglichkeit gebucht, welche sich in unmittelbarer Nähe zur Messe befand. Dass so, das lästige Parkplatzsuchen wegfällt, war ein zusätzlicher Pluspunkt für mich. Der Camping war allerdings hoffnungslos überteuert. 30 € für eine Übernachtung pro Person ist eindeutig zufiel.

Nach einer "Helga"-reichen Nacht machte ich mich in etwa um 8 Uhr Richtung Messe auf, die um 9 Uhr öffnete. Da ich nur nen Fussweg von 10 Minuten zu bestreiten hatte, konnte ich in aller Ruhe Kaffee trinken und mich seelisch auf einen Tag voll Freaks einstellen. Da ich die Messe Samstags besuchte, war sie dementsprechend auch gut besucht. Wahnsinnig viele Leute hatten natürlich die Gleiche Idee und so fand der erste Fight auch schon beim Kaffeestand statt. ;-)
Die Messe fand für uns normale Besucher in 5 Hallen statt... Fünf Hallen voller Spiele und Leute. So musste man zum Beispiel bei den grossen Spielen eine gute Stunde warten um diese dann auch anspielen zu können. Ich beschränkte mich dann relativ shcnell auf die kleineren Spiele, was ich für mich auch als grosses Glück bezeichnen würde, denn so entdeckte ich viele Spiele die ich wahrscheinlich nicht mal angeschaut hätte.

Darunter befanden sich zum Beispiel:

- The Whispered World
- Haunted
- Little Big Planet

Ersteres  wird es diese Woche in den Läden zum Kaufen geben.
Alles in allem muss ich sagen, das mir die Gamescom sehr gefallen hat. Es war alles total gut organisiert und die Leute in Köln sind echt aufgeschlossen. Auch im Nachhinein, wo ich jetzt die Zeitungsberichte lesen kann, muss ich sagen, dass ich kein einziges Wort Negatives oder Dummheiten aus der "Killerspiel"-Fraktion gehört habe.
Vielleicht kann man von den 245'000 Besucher der Gamescom doch ein kleines bisschen Toleranz lernen.

Natürlich konnte man an er Gamescom auch mit vielen Leuten sprechen, wie zum Beispiel den Redakteuren der PC-Games. Auch sonst konnte man haufenweise Freundschaften schliessen, ob real oder virtuell, bleibe dahingestellt ;-) ....

Mein neuer Freund von Little Big Planet


i4Skiweekend

by Nicole Strebel 27. March 2009 17:03

Das Team der IN4OUT hat sich für einmal ganz dem Schneesport gewidmet. In aller Herrgottsfrühe (7.20 an 'nem Samstag Yell) gings von Aarau  Richtung Baden und dann ins schöne Bünderland nach Davos. Auf dem Weg in die Berge machten wir unterwegs einen Halt und trafen uns im Heidiland mit den anderen vom IN4OUT-Team. Wir alle hatten eine sehr spirituelle und kulturelle Begegnung mit dem "Heidi" und dem "Bärli" und machten uns dann mit grossen Lachern auf in die schöne Berglandschaft

Der Höhepunkt und gleichzeitig das Ende des Tages war die wunderbar  angenehme Talabfahrt. Wink Wir waren alle schon ganz gespannt auf unser Hotel auf der Schatzalp, welches mit vielen zahlreichen historischen Geräten ausgestattet sein soll, und so machten wir uns am 16.00 auf den Weg zur Schatzalp-Bahn welche uns in die Höhe zum Hotel führte und wo wir dann die letzten Sonnenstrahlen des Tages geniessen konnten.

Der Sporttag hat hungrig gemacht und wir freuten uns alle wahnsinnig auf unser feines Abendessen mit diversen Leckereien wie Yakitori und Perlhuhn. Das Fischgericht hat bei mir allerdings irgendwie nach Mitleid gerufen. Irgendwie sah der Fisch aus wie der kleine Nemo...

Der Sonntag erwartete uns mit einem herzhaften Frühstück, aber leider nicht so schönem Wetter. Da wir Samstags auf dem Jakobshorn gefahren sind, entschieden wir uns kollektov dafür den anderen Tag ganz Parsenn zu widmen. Dort war Martin, unser Freerider, voll und ganz in seinem Element.

 

Dank des ausgiebigen Frühstücks konnten wir den Tag nutzen und hatten erst um 14.00 ein klein bisschen Hunger. Kurz nachdem wir gegessen hatten, riss die Wolkendecke wieder auf und wir hatten wieder zwei Stunden lang schönstes,herrliches Bergwetter. Um 16.00 machten wir uns wieder auf den Heimweg, wo wir den Weg bis zur Autobahn in leichtem Stau verbringen durften.  Kurz vor Zürich bahnte sich dann der grosse Stau durch die City an, wo wir von unsrem Chef gute Tipps erhielten wie man sich am Besten und Schnellsten durch die Zürcher Innenstadt drängen kann.



Lehrlingsausbildung Applikationsentwicklung – Model View Controller

by Nicole Strebel 27. February 2009 12:11

So für alle die keine Ahnung haben wie die Lehrlingsausbildung der schweizerischen Programmierer abläuft, möchte ich die Umstände dieses Themas kurz erläutern.

Von der  I-CH (Informatik Schweiz, das sind diejenigen die die absolute Macht haben, was Informatik in der Schweiz anbelangt) ist vorgeschireben, dass in der Lehrlingsausbildung sogenannte Module abgehandelt werden. Diese Module beinhalten die verschiedensten Themen  von Entwicklung bis zum First-Level-Support. Nach jedem behandelten Modul findet eine grosse Prüfung statt, ein sogenannter Modulkompetenznachweis. Am Schluss der Ausbildung werden dann alle Ergebnisse der Modulkompetenznachweise zusammengezählt und der Durchschnitt daraus ermittelt, dieser zählt dann an der Lehrabschlussprüfung als Erfahrungsnote. Die ersten zwei Jahre der Grundausbildung studieren die Applikationsentwicklung die gleichen Module wie die Systemtechniker. Nach diesen zwei Jahren werden die Klassen nach ihren Fachrichtungen aufgeteilt (Programmierer werden zu einer Klasse und die Systemer bilden eine).

Nun werden die fachspezifischen Module abgehandelt. Als Programmierer kommt man dann irgendwann mal an den Punkt, wo das Modul 120 abgehandelt wird. In diesem Modul geht um das Implementieren von Benutzerschnittstellen.

Auf Deutsch erklärt:

Design für ein Programm machen, welches ergonomisch und keinesfalls der Auslöser von Augenkrebs ist.

In diesem Modul wird früher oder später das Lernziel „MVC“ behandelt. Extrem spannend und zu Anfangs sehr schwierig, wenn man es ungewohnter weise in einer fremden Entwicklungsumgebung wie Eclipse und vor allem in Java realisieren muss…

Also nun zum eigentlichen Thema dieses Eintrages. Was ist "MVC"?

"MVC" bedeutet Model View Controller und ist ein Architekturmuster zur Strukturierung der Software-Entwicklung. Dieses Muster ist in drei Einheiten aufgeteilt:

  • Model (Datenmodell, repräsentiert den momentanten Zustand eines Objektes und speichert alle Daten. Dieses Modell bietet Methoden und Funktionen an, mit denen sich der aktuelle Zustand erfragen und ändern lässt.)

  • View (Präsentation, stellt die Daten des Modells dar. Die View nutzt die Methoden des Modells um die Daten dar zu stellen.)

  • Controller (Programmsteuerung, nach Interaktion mit der grafischen Oberfläche werden die Daten im Modell aktualisiert und dann anschliessend von der View neu angezeigt.)

Die Vorteile von "MVC" sollten nun klar  ersichtlich sein. Mit "MVC" können nämlich die gleichen Daten auf verschiedenste Weise dargestellt werden, da die Applikation ja logisch auf gesplittet ist. Auch Änderungen der Daten werden sofort in allen Darstellungen aktualisiert.

Das Ziel von "MVC" ist es eigentlich, dass der Kern einer Applikation immer der gleiche sein soll, während die View, die Darstellung beliebig geändert werden kann. Einer der Nachteile von "MVC" ist die Komplexität die das Zusammenspiel von Model, View und Controller verursacht. Die Vorteile von "MVC" sollten nun klar  ersichtlich sein. Mit "MVC" können nämlich die gleichen Daten auf verschiedenste Weise dargestellt werden, da die Applikation ja logisch auf gesplittet ist. Auch Änderungen der Daten werden sofort in allen Darstellungen aktualisiert.

Ein gutes Beispiel für die Funktion von "MVC" sind dann die Diagramme in Excel. Man hat dort Tabellen mit Spalten und kann dann sehr leicht Diagramme auf das Excel-Sheet ziehen. Und diese mit den Tabellendaten füllen. Dabei spielt es überhaupt keine Rolle ob es jetzt ein Kuchendiagramm oder ein Balkendiagramm  ist.

So für all jene die sich jetzt fragen, wie und wo man das ganze anwendet, kann ich nur sagen fragt  jemand anderen... Ich hab keine Ahnung. Wink

 



Comic's zeichnen mit Manga Studio

by Nicole Strebel 16. February 2009 09:16

Mit Manga Studio können Comic's und Cartoons am Computer erstellt werden. Das Programm ist für Comiczeichner geeignet, welche ihre Arbeitsabläufe am PC vereinfachen wollen. Die Software ist zwar hauptsächlich für schwarz-weisse Manga's gedacht, kann aber auch bei farbigen Zeichnungen eingesetzt werden.
Wenn man das Programm zum ersten Mal startet kann man zwischen einer "Beginner-Ansicht" und einer "Standard-Ansicht" wählen. Für diejenigen die noch nie mit einer Grafiksoftware (Photoshop, Illustrator) gearbeitet hat, empfehle ich die "Beginner-Ansicht", ausser man möchte von zahlreichen seltsamen Elementen und Werkzeugen erstickt werden.
Für die anderen, welche schon mit ähnlichen Programmen gearbeitet haben, wird die Manga Studio "Standard-Ansicht" nicht komplizierter sein.

Wie gesagt, auf den  ersten Blick sieht Manga Studio wie ein gewöhnliches Grafikprogramm aus. Auf den zweiten jedoch findet man zahlreiche Werkzeuge, welche speziell auf Comic's zugeschnitten sind. Man findet spezielle Stift- und Pinseltypen (sind am Anfang dicker und laufen dünn aus), wie auch jede Menge Sprechblasen und Layouts um richtige Comicbücher zu erstellen.

Um mit Manga Studio arbeiten zu können scannt man seine Skizzen ein und bearbeitet diese dann mit dem Programm. Man kann aber auch die Beispiele von Manga Studio verwenden um die verschiedensten Zeichentechniken zu lernen. Die richtig Guten jedoch zeichnen nur mit dieser Software... Wink



Wacom Grafiktablett - Digitales Zeichnen

by Nicole Strebel 3. February 2009 09:45
Vor ein paar Tagen hab ich mich relativ schnell entschieden ein Grafiktablett zu kaufen. Die richtig Guten zeichnen nicht mehr mit Bleistift und Gummi. Nein, sie benutzen statt Papier ein Tablet und zum Zeichnen einen elektronischen Stift. Dieser Stift sendet die Daten mittels Druck auf das Tablet und weiter an den Computer. So ein Tablet ist beim Gestalten nicht nur extrem zeitsparend sondern auch viel präziser. Durch die Zoom-Funktion kann man pixel-genau zeichnen.

Trotzdem aller Anfang ist schwer. Einfach "Freihand" - Zeichnen erscheint auf den ersten Blick wirklich unmöglich. Linien sind wackelig und es ist schwierig auf den Bildschirm zu schauen obwohl man auf dem Tisch zeichnet.  Hier unten könnt ihr auch meinen ersten verzweifelten Versuch sehen.


Relativ schnell hab ich mir dann eine einfache Technik für Anfänger angeeignet. Hab mir einfach Comicfiguren runtergeladen und auf eine Photoshop-Ebene gesetzt. Dann hab ich auf einer neuen Ebene einfach die Linien der Comicfiguren nachgezeichnet und mit dem "Farbtopf" ausgefüllt. Das Ergebnis war ziemlich erstaunlich. Trotz der kleinen Fläche des Tablet, kann man mit ein bisschen Übung ganz tolle Sachen zeichnen und natürlich auch malen.

Auf meiner Suche im WWW bin ich auf echt geniale Zeichnungen gestossen, die die Leute mit meinem Grafiktablett gemacht haben. So kann ich wenigstens guter Dinge sein, dass auch meine Zeichnungen mal so schön werden.

Sehr interessant ist übrigens auch wie so ein Grafiktablett überhaupt funktioniert. Der Stift dazu enthält nämlich eine Spule und diese erzeugt ein gerichtetes elektromagnetisches Feld. Andere Informationen wie der Stiftdruck oder auch das Drücken einer Taste werden digitalisiert, dem elektromagnetischen Feld aufmoduliert und zusammen mit den Positionsdaten (wo sich der Stift momentan gerade befindet) an den Computer gesendet. Der Unterschied zu einem Touchscreen ist, dass beim Touchscreen auch Dinge wie Finger die Oberfläche berühren können, denn die funktionieren ohne elektromagnetische Felder, im Gegenzug zum Grafiktablett.

Bevor ich mich auf ein Grafiktablett festgelegt hatte, habe ich viel im Internet gelesen und schlussendlich das Grafiktablett "Bamboo" von der Firma "Wacom" genommen. Dies hauptsächlich darum, weil es der beste Vertreiber ist und man im Internet am meisten Hilfe und Tutorials dazu findet.
Das Bamboo ist ausserdem vistatauglich, was ja heute bereits ein "Muss" sein sollte.

Auf der Webseite http://www.wacom.eu/bamboo findet ihr noch jede Menge Informationen dazu. Ich bin echt begeistert vom Preis-Leistungsverhältnis des Bamboo und es macht wirklich Spass. Durch den günstigen Preis, ist es auch bei Stundenten im Bereich Design/Grafik sehr beliebt.

 



Facebook - Das neue Internet

by Nicole Strebel 15. January 2009 11:36

Marc hat gerade seine Fahrprüfung bestanden, Anna hat allem Anschein nach einen super Auftrag bekommen (?!), Matthias findet Rapidshare "scho cheibe praktisch" und Leonard ist seit Dienstag Milli Vanilli-Fan.
Werden diese Informationen mein Weltbild verändern? Höchstwahrscheinlich nicht. Aber neugierige Menschen wie mich intressiert es natürlich, was mein Freundeskreis den Tag durch so treibt. Deshalb hab auch ich mich vor drei Wochen bei Facebook angemeldet und bin seitdem über alles und jedem im Bilde. Schliesslich schickt man sich die Fotos von der letzten Party nicht mehr über E-Mail - Nein, die werden nur noch bei Facebook raufgeladen. Ach ja, und warum eigentlich telefonieren? Über die Statusmeldungen weiss ich ganz genau, wer was um welche Zeit macht.

Das Beste an Facebook ist aber eindeutig diese Freundefunktion. Ich bin kaum zwei Minuten angemeldet, kriege ich drei Nachrichten von unbekannten "Freunden":

"Welcome to Crackbook"

Ich war verwirrt, geb ich zu. Nachforschungen haben jedoch ergeben, dass Facebook bei den Amis "Crackbook" genannt wird, da Facebook allem Anschein nach so süchtig mache wie "Crack". Nach dem ersten kleinen Schrecken, hab ich mich dann auch leicht beobachtet gefühlt (Warum kenne ich meine "Freunde" nicht? Ich will nicht dass mich Personen aus'm Amiland sehen?).  Also hab ich mein Profil so eingerichtet, dass nur meine "richtigen" Freunde alles sehen können.
Dadurch, dass ich mich dem "Schweizer-Netzwerk" angeschlossen habe, wurden mir schon Freunde in meiner Umgebung vorgeschlagen. (Warum weiss Facebook, mit wem ich zur Schule geh? Mit wem ich in der Schule war?)
Langsam werde ich paranoid und fühle mich irgendwie verfolgt. Nachdem ich mir nun 23 Freunde besorgt habe (Anmerkung: Die kenn ich wirklich alle!), habe ich das Ding mit den Gruppen rausgefunden.
Gruppen sind Vereinigungen in Facebook, bei denen Menschen mit denselben Interessen dabei sind. Es gibt Gruppen für ziemlich alles und jeden:

  • Ich könnte Mike Shiva pausenlos in die Fr**** hauen.
  • Als ich in deinem Alter war, war Pluto noch ein Planet.
  • Ich habe meine Fingernägel wie ein blinder, parkinson-kranker Mensch lackiert (?!).
  • Nur weil ich Informatiker bin, muss ich deinen PC nicht reparieren.

Man beachte letzte Gruppe. Viele Klassenkameraden sind dieser Gruppe beigetreten. Anscheinend hab nicht nur ich dieses kleine, aber lästige Problem ("Was du bist Informatikerin?" Du ich hab ein Problem mit...").
So bin ich dann auch dieser Gruppe beigetreten. Vor meinem Beitritt, hatte ich in der rechten Spalte schöne Werbeanzeigen mit YvesRocher-Kosmetik, Nagellack von ultraviolet bis infrarot und anderen kleinem Zeug das wir Frauen ja so brauchen.
Seit ich allerdings dieser Gruppe (man siehe oben) beigetreten bin, darf ich mich nur noch an Grafikkarten, Monitoren und USB-Sticks erfreuen (Ahhh, Facebook erstellt Persönlichkeitsprofile, nein, nein, nein...).

Nach zwei Wochen Eingewöhnungszeit, fühle ich mich doch recht wohl auf Facebook. Trotz meines anfänglichen Verfolgungswahn, gefällt es mir. Endlich bin ich wieder Teil der virtuellen Realität. Ich habe wieder Freunde, 43 ganz genau (Und die kenne ich wirklich alle!) und glaube nun auch ein bisschen an das Prinzip, dass jeder Mensch über fünf andere Menschen die gesamte Weltbevölkerung kennt.