Tagged: Frameworks RSS

  • admin 01:21 on 06.07.2009 Permalink | Reply
    Tags: Frameworks, , ,   

    The power of Scala 

    Seit einiger Zeit beschäftige ich mich in meiner Freizeit mit der nocht recht jungen Programmiersprache Scala, eine unglaublich flexible und mächtige Sprache, die geschickt funktionale und objekt-orientierte Paradigmen vermischt. Wer abseits des normalem OOP-Paradigma etwas neues lernen will, sollte sich diese Sprache auf jeden Fall genauer anschauen.

    Übrigens wird Scala nach Java Bytecode kompiliert und ist somit praktisch kompatibel und gemeinsam einsetzbar mit allen bestehenden Java-Systemen. Ein Compiler für die Common Language Runtime ist auch in der Entwicklung, der Support für Java ist aber wesentlich besser.

    Beim Lesen des Buchs “Programming in Scala” (welches übrigens ausgezeichnet geschrieben ist) sind mir erstmals die Unterschiede zwischen den Programmierparadigmen wirklich klar geworden. Umso interessanter ist es dann nach und nach zu sehen wie Scala beides fusioniert und dabei etwas neues schafft. Das erstaunlichste an Scala ist aber wie man selber zu einem Sprach-Kreatonist werden kann! Die Programmiersprache ist in ihrem Kern recht einfach, aber dennoch so flexibel, dass jeder die Sprache erweitern kann, um sie an die entsprechenden Bedürfnisse anzupassen.

    Das beste Beispiel ist die Actors-Bibliothek zur Abstraktion der parallelen Ausführung von Programmcode. Eine Idee – ursprünglich aus der Sprache Erlang – die es mittlerweile fast in jede Sprache geschafft hat als ein normales Framework. Scala geht weiter und integriert nicht nur Funktionalität, sondern auch Syntax aus Erlang und schafft somit eine ganz natürliche Integration – so als wäre das Programmieren mit Actors schon immer Bestandteil der Sprache.

    Ein paar schöne Code-Beispiele zu Actors-Bibliothek befinden sich direkt hier.

    Im nächsten Beitrag werde ich demonstrieren wie man das nützliche in C# bekannte using-Konstrukt nachbaut, um Streams etc. automatisch zu schließen.

     
  • admin 02:55 on 26.01.2009 Permalink | Reply
    Tags: , Frameworks, , Performance,   

    Lazy Loading von Plugins in multilingualen .NET Applikationen 

    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 einem XML-Baum definieren kann.

    Ähnlich wie in XUL oder XAML 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, #Develop und Co machen es genauso.

    (More …)

     
  • admin 00:26 on 14.01.2009 Permalink | Reply
    Tags: , Frameworks, , ,   

    Materialien zum Techtalk 

    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, wenn wir mit der Organisation früher anfangen und der Termin dann eher feststeht.

    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 Session Hijacking vorführen, aus Zeitgründen hat es dann aber doch nur für eine XSS-Lücke gereicht :-) .

    (More …)

     
  • admin 21:50 on 27.10.2008 Permalink | Reply
    Tags: Frameworks, PHP,   

    CakePHP, der süß-saure Kuchen – Erfahrungen mit dem PHP-Framework 

    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 und geben einen guten Einblick in die Model-View-Controller-Funktionsweise.

    Voller Eifer beginnt man also mit der Entwicklung und freut sich darauf, so nette Features wie die dynamischen Funktionen der Daten-Modelle zu nutzen: Der Aufruf $User->findByName('Thorsten'); beispielsweise funktioniert, da es in der Datenbank eine Spalte ‘Name’ in der ‘User’-Tabelle gibt. CakePHP erkennt dies automatisch und erzeugt eine korrekte SQL-Abfrage für den Methodenaufruf … und das obwohl diese Funktion zur Kompilierzeit noch nicht einmal existiert. Ich werde jetzt nicht genauer darauf eingehen, wie diese “Magic” funktioniert, aber auf jeden Fall ist es cool :-)

    (More …)

     
  • admin 23:19 on 26.06.2008 Permalink | Reply
    Tags: , Frameworks, Netzwerkprogrammierung   

    Lidgren Netzwerkbibliothek 

    Möchte man Netzwerkspiele oder sonstige netzwerk-fähige Anwendungen schreiben, findet man eine ganze Menge guter Bibliotheken für C++ im Internet. Im .NET Bereich ist die Auswahl jedoch nicht gerade groß, dafür gibt es eine ausgezeichnete C#-Bibliothek namens Lidgren, die fast keine Wünsche offen lässt.

    Lidgren setzt auf das Netzwerkprotokoll UDP (User Datagram Protocol), baut jedoch auch Charakterisken einer TCP-Verbindung nach, was die Bibliothek sehr flexibel macht. Man kann als Programmierer selber entscheiden wie wichtig die Daten sind, die man versendet und ob die Reihenfolge beim Empfänger genau stimmen muss.

    Die Besonderheit des UDP-Protokolls besteht ja darin, dass Pakete verloren gehen können, in einer anderen Reihenfolge ankommen können … und zu allem Überfluss natürlich auch kaputt ankommen können. Alle diese Nachteile haben allerdings den Vorteil, dass diese Übertragungsart sehr schnell ist, denn das UDP-Protokoll muss nicht ständig die Reihenfolge der Pakete überprüfen. Auch werden keine Empfangsbestätigungen verschickt und dann ggf. Pakete mehrmals versendet.

    Lidgren vereint die Stärken von UDP und TCP. Jede Nachricht, die man versendet, bekommt einen Kanal zugewiesen, der den Nachrichtentyp festlegt. Folgende Kanäle sind möglich:

    • “Unreliable unordered” – Reihenfolge der Nachrichten ist unbestimmt; Nachrichten können verloren gehen.
    • “Reliable unordered” – Alle Nachrichten kommen an; Reihenfolge ist unbestimmt
    • “Sequenced” – Nachrichten können verloren gehen; Reihenfolge wird eingehalten
    • “Ordered” – Alle Nachrichten kommen in der vorgesehenen Reihenfolge an (früher oder später)

    Die Netzwerkbibliothek beherrscht darüber hinaus noch weitere Funktionen wie das kontrollierte Drosseln des Netzwerktransfers (Bandwidth Throttling), Verschlüsselung und die Zeitsynchronisation. Auch sehr interessant ist, dass man – speziell zum Testen – einen künstlichen Lag oder eine Wahrscheinlichkeit für verloren gehende Pakete definieren kann.

     
  • admin 23:21 on 11.04.2008 Permalink | Reply
    Tags: , Frameworks, ,   

    Open Toolkit 

    Vor einiger Zeit bin ich auf das Open Toolkit gestoßen, einen sehr coolen OpenGL/OpenAL .NET-Wrapper. Anders als z.B. Tao funktioniert das Toolkit bei mir auch problemlos unter Linux/Ubuntu. Außerdem bietet OpenTK zusätzlich zur normalen C-API von OpenGL/OpenAL viele High-Level-Klassen. Besonders interessant ist für mich das einfache Zeichnen von Text, der dann auch noch gut aussieht.

    Ein weiterer Pluspunkt: Es gibt ein Winforms-Control, was mit Mono und .NET gleichermaßen funktioniert und so erstmals die Entwicklung von CrossPlattform-OpenGL-Programmen mit .NET möglich macht.

    Da es bisher kein Stable-Release gibt, sind jedoch Veränderungen der Schnittstelle an der Tagesordnung. Dafür kann man aber auch noch selber Patches einsenden, um diese zu verändern. So habe ich nun beispielsweise Unterstützung für Bezier-Kurven nachgereicht, sowie die Anbindung von Mathe-Klassen an die OpenGL-API ermöglicht.

    Bekanntermaßen muss man bei vielen Matrix-Funktionen in OpenGL einen Zeiger übergeben, der auf das float[]-Array zeigt. OpenTK bringt eine Reihe von nützlichen Strukturen wie Vector3 oder Matrix4 mit, mit denen der sichere Umgang mit OpenGL problemlos möglich ist. Auch in Sprachen, die ohne Zeiger auskommen müssen – wie Visual Basic. Beispiel:

    Vector3 start = new Vector3(1.0f, 0.0f, 5.0f);
    Vector3 end = new Vector3(5.0f, 3.0f, -6.0f);
    Matrix4 projection = Matrix4.LookAt(...);
    GL.LoadMatrix(ref projection);
    GL.Color4(Color.Green);
    
    GL.Begin(BeginMode.Lines);
        GL.Vertex3(start);
        GL.Vertex3(end);
    GL.End();
    

    So einfach war OpenGL-Programmierung noch nie :-)

     
  • admin 10:08 on 10.05.2007 Permalink | Reply
    Tags: , Frameworks,   

    Mono.Addins 

    Vor ein paar Tagen habe ich die Bibliothek Mono.Addins gefunden, mit der man erweiterbare Anwendung schreiben kann. Das Konzept dahinter ist stark dem Kern von SharpDevelop angelehnt.
    Man hat ebenfalls einen Addin-Tree, der alle sogeannten Extension Points enthält. Dies sind die Punkte im Baum, an denen man sich als Addin einklicken kann. Beispielsweise könnte dies der Baumpfad “\Menu\File\” sein. Ein Addin würde nun innerhalb einer XML-Manifest-Datei eigene Knoten (Extension Nodes) zu diesem Pfad hinzufügen und sich somit bei der Anwendung registrieren. Beim Start der Anwendung werden alle Manifest-Dateien aller Addins eingelesen und zu einem gemeinsamen Baum zusammengefasst. Bei diesem Beispiel würden nun alle Einträge aus dem Pfad “\Menu\File” ausgelesen werden und auf Basis dieser Daten würde das Menü erzeugt werden.

    Insgesamt ist Mono.Addins etwas “sauberer” programmiert als der Kern von #Develop. Es gibt keine festen Verweise zu log4net oder z.B. zu WindowsForms. Möchte man Features wie das Logging eingebaut haben, kann man diese später noch mit Hilfe von Interfaces innerhalb von Mono.Addins integrieren. Die Bibliothek ist außerdem auch portabel und daher genauso gut für Linux wie für Windows geeignet.

    Eine exzellente Referenz befindet sich auf der Mono-Seite hier. Übrigens kann man in Mono.Addins auch fast alles, was man über XML-Dateien beschreibt, auch über Attribute im Code regeln. Eine weitere interessante Option (und auch meine bevorzugte) ist das Integrieren der XML-Beschreibung in die Assembly als eingebettete Ressource.

     
c
compose new post
j
next post/next comment
k
previous post/previous comment
r
reply
e
edit
o
show/hide comments
t
go to top
l
go to login
h
show/hide help
esc
cancel