Subscribe to RSS feed



Silverlight Demo’s

22. Juli 2009
silverlight-demos

Hier mal ein paar sehr interessante Demo’s, die mit Silverlight erstellt wurden:


Ein kleines “Windows” im Browser:

http://windows4all.com/


Ein halbfertiges CRM (Beta):

http://labs.cas.de/silverlight/CASCRMSL3/


Und hier sieht man den Einsatz vom Deep Zoom Composer von Silverlight:

http://memorabilia.hardrock.com/


  • Facebook
  • Twitter
  • Technorati
  • del.icio.us
  • Digg
  • Google Bookmarks
  • MisterWong
  • DZone
  • Live
  • Mixx
  • MySpace
  • email
  • PDF
  • Print

Silverlight – DB

21. Juli 2009
silverlight-db

Eben entdeckt:

http://silverdb.codeplex.com/

Damit lassen sich Daten in einer kleinen Datenbank direkt bei dem jeweiligen Client unter dem Isolation Storage speichern. Natürlich mit bequemen Feature’s wie z.B. lazy loading oder die Komprimierung der Datenbank.

Hier die offzielle Projektbeschreibung:

This project implements a Isolated Storage (IsolatedStorage) based database for Silverlight. The usage of this software is very simple. You create a new database by Calling CreateDatabase. You can add tables to the database by calling db.CreateTable<T> where T is the type of entity to be stored in table rows. You can save database by calling Save, and open the database by calling OpenDatabase. This database supports version changes, so you can update your application and still be able to open the database. You can look for basic use of this database by examining test Silverlight application. Encryption and compression have been implemented; just provide a password to use encryption. Compression is based on SharpZipLib – you will have all the rights specified under that project. See http://slsharpziplib.codeplex.com/license for details. Also lazy loading has been implemented. If you open database with lazy loading flag, tables will be loaded when first accessed. Feel free to look documentation help file under current download for API details. The source code file contains unit test project that you can also examine for usage details.

Here is a list features on the radar:

  • Isolated Storage quota checks, possibly with ability to automatically request more space

  • Facebook
  • Twitter
  • Technorati
  • del.icio.us
  • Digg
  • Google Bookmarks
  • MisterWong
  • DZone
  • Live
  • Mixx
  • MySpace
  • email
  • PDF
  • Print

Cairngorm

1. Oktober 2008
cairngorm

Das Cairngorm-Framework basiert auf dem MVC-Konzept und ist eine Kombination von verschiedenen Design Patterns. Die Basis bilden dabei das Value Object und Model Locator-Pattern, die um weitere, wie z.B. Command-, Front-Controller-, Delege-Pattern, u.a., ergänzt werden.

Das Framework hilft Dir dabei, Deine Applikation gut zu organisieren. Damit kannst Du nach gleichem Muster auf das User Verhalten (Mouse-, Button-Clicks) mit Hilfe von Cairngorm-Events und -Commands reagieren, die Daten auf Clientseite übersichtlich an einem Ort, dem ModelLocator, halten und die Server-Interaktion ebenfalls an einem Ort, dem Service-Locator, mit Hilfe von Delegate-Klassen managen.

Klingt vielleicht etwas theoretisch, darum hier ein kleines Beispiel für den Ablauf im Cairngorm-Framework, wenn z.B. in einer WetterApplikation ein User die Wetterdaten für morgen anzeigen lassen will:

- User möchte neue Wetterdaten sehen und klickt deshalb auf den entsprechenden Button “Wetterdaten für morgen anzeigen”
- der Button löst ein Cairngorm-Event “ZeigeNeueWetterdatenEvent” aus
- da dieses Event über den FrontController mit dem Command “ZeigeNeue WetterdatenCommand” gekoppelt ist, wird jetzt dieser Command über die execute-Methode ausgeführt
- d.h. der Command gibt mit Hilfe einer Delegate-Klasse eine Anfrage an den Server ab. Das kann ein HTTP-, Webservice oder RemoteObject sein. Die Serverkommunikation wird an einem zentralen Ort, dem ServiceLocator, beschrieben.
- Ist ein Result vom Server da, erhält der Command, welcher ja auf Ergebnisse wartet, das Result vom ServiceLocator über die Delegate-Klasse und kann darauf reagieren
- d.h. der Command legt jetzt die neuen WetterDaten an einem zentralen Ort, dem ModelLocator ab
- durch das Binding vom ModelLocator und den Views (beruht auf das geniale Binding innerhalb von Flex) werden die neuen Daten sofort im View aktualisiert.

Und hier noch eine paar Links

Adobe’s Flex Artikel im Flex Developer Center:
Developing Flex RIAs with Cairngorm Microarchitecture – Teil 1 bis 6

Alex Uhlmanns Beispiele:
Cairngorm 2 (for Flex 2) – Simple Sample Applications

Schönes Cairngorm-Diagramm bei corbell.com:
Cairngorm Flow Chart (*.pdf)

  • Facebook
  • Twitter
  • Technorati
  • del.icio.us
  • Digg
  • Google Bookmarks
  • MisterWong
  • DZone
  • Live
  • Mixx
  • MySpace
  • email
  • PDF
  • Print

Sorting Algorithms – wie funktioniert das Ding ?

30. September 2008
sorting-algorithms-wie-funktioniert-das-ding

Jeder Entwickler hat schon etwas von Sortierung gehört und weißt dass dafür auf Algorithmen gibt.
Wie wäre es aber wenn man genau erklären soll wie z.B. Quicksort funktioniert ?

Auf dieser Seite findet man Antwort…und zwar in einer Form die wirklich jeder verstehen kann :-)

  • Facebook
  • Twitter
  • Technorati
  • del.icio.us
  • Digg
  • Google Bookmarks
  • MisterWong
  • DZone
  • Live
  • Mixx
  • MySpace
  • email
  • PDF
  • Print

Pläne für ASP.NET 4.0

4. August 2008
plaene-fuer-asp-net-4-0

Was hat Microsoft mit ASP.NET 4.0 vor ? Das findet man hier:

http://www.heise.de/ix/Plaene-fuer-ASP-NET-4-0–/blog/artikel/113195

  • Facebook
  • Twitter
  • Technorati
  • del.icio.us
  • Digg
  • Google Bookmarks
  • MisterWong
  • DZone
  • Live
  • Mixx
  • MySpace
  • email
  • PDF
  • Print

Anwendung nur einmal starten unter C#

24. Juli 2008
anwendung-nur-einmal-starten-unter-c

Bei der Entwicklung meiner Projektarbeit bin ich auf folgende Problemstellung gestoßen:
Wie schaffe ich es zu verhindern dass meine Applikation nur einmal gestartet werden kann?
Das ist aber nicht nicht alles! Ferner soll bei dem Versuch meine Applikation ein zweites Mal zu starten ein Event in der bestehenden Applikation ausgelöst werden. Und zu guter Letzt soll dieses Event auch noch die beim Startversuch an die Applikation übergebenen Parameter zum Auswerten bereitstellen.

Die Lösung ist eigentlich relativ simple, aber nicht auf den ersten Blick zu finden, denn sie verbirgt sich im Namespace Microsoft.VisualBasic.

Die Klasse WindowsFormsApplicationBase ist es die Properties wie IsSingleInstance oder ShutdownStyle sowie das wichtige Event OnStartupNextInstance(StartupNextInstanceEventArgs eventArgs) bereitstellt.

Wichtig ist die Assembly Microsoft.VisualBasic.dll einzubinden. (bei mir beispielsweise zu finden unter C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Microsoft.VisualBasic.dll)

  • Facebook
  • Twitter
  • Technorati
  • del.icio.us
  • Digg
  • Google Bookmarks
  • MisterWong
  • DZone
  • Live
  • Mixx
  • MySpace
  • email
  • PDF
  • Print

HTML5 Draft

24. Januar 2008
html5-draft

Der HTML5 Draft ist endlich da und ist online verfügbar.

Was hat sich geändert ? Das findet man hier: Untersichede zwischen HTML4 und HTML5

Was ist neues ? Neue Elementen wie z.B.: audio, video, canvas, datagrid, progress…etc

Der neue Standard beinhaltet auch neu APIs für 2D Grafik, für Arbeit mit Video und Audio und mehr.

Mehr kann man hier finden: HTML5

  • Facebook
  • Twitter
  • Technorati
  • del.icio.us
  • Digg
  • Google Bookmarks
  • MisterWong
  • DZone
  • Live
  • Mixx
  • MySpace
  • email
  • PDF
  • Print

C# gotchas – ?? operator (null coalescing operator)

3. Dezember 2007
c-gotchas-operator-null-coalescing-operator

Wie kann man sich diese Arbeit sparen ?

Data dtaResult = GetDataById(23)

if (dtaResult == null)

dtaResult = new Data()

….ganz einfach mit dem ?? Operator

Data dtaResult = GetDataById(23) ?? new Data()

Tja, manchmal sind auch die Grundlagen einer Programiersprache sehr interessant :-)

  • Facebook
  • Twitter
  • Technorati
  • del.icio.us
  • Digg
  • Google Bookmarks
  • MisterWong
  • DZone
  • Live
  • Mixx
  • MySpace
  • email
  • PDF
  • Print

Paralel FX – ein Framework für paralelle bearbeiteung einer Operation

3. Dezember 2007
paralel-fx-ein-framework-fuer-paralelle-bearbeiteung-einer-operation

Jeder Entwickler hat schon eine Lösung implementiert wo eine Operation mit Threads bearbeitet wird und jeder hat bestimmt Erfahrung mit Dingen wie Synchronisierung, Locks, Monitors etc.

Wie wäre es wenn man parallele DB-Abfragen in einer Anwedung implementieren würde ? Klar, man kann es weiterhin mit Threads und dem “Spaß” mit Monitors, Locks etc machen aber es geht auch einfacher.

Architekten der C# Sprache und LINQ (Anders Hejlsberg und Joe Duff) zeigen in diesem Video eine neue Lösung für solche Aufgaben -> Framework Paralel FX.

Link auf Video

  • Facebook
  • Twitter
  • Technorati
  • del.icio.us
  • Digg
  • Google Bookmarks
  • MisterWong
  • DZone
  • Live
  • Mixx
  • MySpace
  • email
  • PDF
  • Print

Excel-Dateien in DataSet laden

11. Oktober 2007
excel-dateien-in-dataset-laden
private DataSet LadeExcelInDataSet()
{
    DataSet dsReturn = new DataSet();
    if (dlgOpen.ShowDialog() == DialogResult.OK)
    {
        // Excel als Application initialisieren
        Microsoft.Office.Interop.Excel.ApplicationClass app = new ApplicationClass();
        // Workbook Objekt öffnen
        Microsoft.Office.Interop.Excel.Workbook workBook = app.Workbooks.Open(dlgOpen.FileName,
                                                     0,
                                                     true,
                                                     5,
                                                     "",
                                                     "",
                                                     true,
                                                     Microsoft.Office.Interop.Excel.XlPlatform.xlWindows,
                                                     "\t",
                                                     false,
                                                     false,
                                                     0,
                                                     true,
                                                     1,
                                                     0);
        // Aktives Worksheet auswählen
        Microsoft.Office.Interop.Excel.Worksheet workSheet = (Microsoft.Office.Interop.Excel.Worksheet)workBook.ActiveSheet;
        // DataTable erstellen
        dsReturn.Tables.Add(new System.Data.DataTable());
        int intColumnCount = 0;
        // Spalten aus Excel in DataSet anlegen (beginnend mit 1!)
        // in der 1. Zeile stehen die Überschriften
        try
        {
            for (int x = 1; x &lt;= workSheet.Columns.Count; x++)
            {
                if (((Microsoft.Office.Interop.Excel.Range)workSheet.Cells[1, x]).Value2 == null)
                {
                    break;
                }
                DataColumn colNew = new DataColumn();
                colNew.ColumnName = ((Microsoft.Office.Interop.Excel.Range)workSheet.Cells[1, x]).Value2.ToString();
                colNew.Caption = ((Microsoft.Office.Interop.Excel.Range)workSheet.Cells[1, x]).Value2.ToString();
                dsReturn.Tables[0].Columns.Add(colNew);
                intColumnCount++;
            }
            // Ab Zeile 2 Daten auslesen
            int rowIndex = 2;
            // Alle Datensätze ab Zeile einlesen
            while (((Microsoft.Office.Interop.Excel.Range)workSheet.Cells[rowIndex, 1]).Value2 != null)
            {
                DataRow drNew = dsReturn.Tables[0].NewRow();
                // für jede Zeile jede Spalte auslesen
                for (int x = 1; x &lt;= intColumnCount; x++)
                {
                    if (((Microsoft.Office.Interop.Excel.Range)workSheet.Cells[rowIndex, x]).Value2 == null)
                    {
                        drNew[x - 1] = DBNull.Value;
                        continue;
                    }
                    drNew[x - 1] = ((Microsoft.Office.Interop.Excel.Range)workSheet.Cells[rowIndex, x]).Value2.ToString();
                }
                dsReturn.Tables[0].Rows.Add(drNew);
                rowIndex++;
            }
            dsReturn.Tables[0].AcceptChanges();
        }
        catch (Exception ex)
        {
            MessageBox.Show("Fehler beim Einlesen der Excel-Datei \n" + ex.Message);
        }
    }
    return dsReturn;
}

Und eine Beispiel-Implementation zum Laden einer Excel-Datei in ein GridView der Firma DevExpress

DataSet dsAusExcel = LadeExcelInDataSet();
BindingSource bsDummie = new BindingSource();
bsDummie.DataSource = dsAusExcel;
bsDummie.DataMember = dsAusExcel.Tables[0].TableName;
grdUpdate.DataSource = bsDummie;
  • Facebook
  • Twitter
  • Technorati
  • del.icio.us
  • Digg
  • Google Bookmarks
  • MisterWong
  • DZone
  • Live
  • Mixx
  • MySpace
  • email
  • PDF
  • Print