Archiv

Archiv für die Kategorie ‘SW-Technik’

Schachspiel über WebSockets

9. November 2014 Kommentare ausgeschaltet

Hier ein kleines Beispiel, was mit dem HTML 5 WebSocket-Protkoll möglich ist, das von fast allen modernen Web-Browsern unterstützt wird.

Eine WebSocket ist eine bidirektionale Verbindung zwischen einem Browser und einem Server. Es ist möglich, Text-Nachrichten in beide Richtungen in “fast Echtzeit” zu empfangen und zu senden. Mit “fast Echtzeit” meine ich, dass die menschlichen Sinne bei einer schnellen und stabilen Netzwerkverbindung keine signifikanten Verzögerungen feststellen können. WebSockets sind geeignet für Web-Anwendungen, die eine hohe Interaktivität und kleine Datenvolumen haben, z.B. ein Chat-Programm oder ein Computerspiel.

Dieses Beispiel zeigt ein Schachprogramm, das auf meinem Server läuft und meine fehlerhafte und unvollständige Schach-Engine benutzt, die ich vor ein paar Jahren geschrieben habe.

Mehr…

“Law of Demeter” als Software Metrik

3. Juni 2012 Kommentare ausgeschaltet

Das “Law of Demeter” (LoD) ist ein wichtiges Prinzip, um in seinem Code eine niedrige Kopplung zu erreichen. Und man könnte es relativ einfach in eine Software-Metrik überführen.

Um die Kopplung zu messen, könnte man die “Verletzungen des LODs” zählen. “0” bedeutet, dass keine Verletzungen vorhanden sind und das Ergebnis wird für jede Verletzung, die gefunden wird, um eins erhöht.

Ich frage mich, ob jemand so eine Metrik schon implementiert hat und ob sie in Eclipse oder NetBeans verwendet werden kann.

Hier noch ein kleines Beispiel.

Mehr…

Automatisches Ressourcenmanagement in Java 7

10. März 2009 Kommentare ausgeschaltet

Wenn in einem Java-Programm Ressourcen (Dateien, SQL-Verbindungen, usw.) geöffnet werden, muss der Programmierer darauf achten, die Ressourcen auch ordnungsgemäß wieder frei zu geben. Geschieht dies nicht, erzeugt das Programm ein “Ressourcen-Leck”. Die Folgen können unterschiedlich sein, von nicht spürbaren Performanceeinbußen bis hin zur Instabilität und Untauglichkeit des gesamten Programms.
Um diese Fehlerquelle im Vorfeld zu vermeiden, wäre es also wünschenswert, dass eine Programmierplattform das Ressourcenmanagement weitestgehend automatisch durchführen kann. In Java ist das bisher nicht möglich, aber für Java 7 gibt es einen Änderungsvorschlag dafür.

So sähe dann mit Java 7 z.B. das Kopieren einer Datei aus:

1
2
3
4
5
6
7
8
9
    static void copy(String src, String dest) throws IOException {
        try (InputStream in = new FileInputStream(src);
             OutputStream out = new FileOutputStream(dest)) {
            byte[] buf = new byte[8192];
            int n;
            while ((n = in.read(buf)) >= 0)
                out.write(buf, 0, n);
        }
    }

Mehr…

KategorienProgrammierung Tags:

Homeserver mit Opensolaris (Erfahrungsbericht)

3. März 2009 Kommentare ausgeschaltet

Ein alter, ungenutzter Rechner kann als Homeserver umfunktioniert werden, um beispielsweise wichtige Daten darauf zu sichern. In meinem Fall benutze ich einen AMD Duron mit 1000 MHz und 512 MB RAM.
Ein Dateiserver sollte besonders robust sein und das Risiko für Datenverluste minimieren. Um sich beispielsweise gegen den Ausfall einer Festplatte abzusichern, sollten die Daten auf einer zweiten Festplatte gespiegelt werden. Und um sich vor versehentlichem Löschen zu schützen, sollten inkrementelle Backups erstellt werden, so dass alte Zustände der Daten wiederhergestellt werden können. Das (und noch mehr) kann relativ einfach mit dem innovativen Dateisystem ZFS erreicht werden.
Für die Spiegelung werden zwei baugleiche Festplatten benötigt. In diesem Fall kommen zwei USB-2.0-Festplatten mit jeweils 1000 GB Kapazität zum Einsatz. Als Betriebssystem wird Opensolaris verwendet (Distribution: Nexenta Core Platform 2 Beta2).


Mehr…