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…

Remote File System für NetBeans 6.9.1

12. Februar 2011 7 Kommentare

Vor ein paar Monaten habe ich einen Patch für das “Remote File System” plugin für NetBeans zur Verfügung gestellt, damit es mit der aktuellen NetBeans Version 6.9.1 funktioniert. Der Patch ist im Kenai-Repository vorhanden, aber bis jetzt war keine Distribution verfügbar. Mehrere Leute haben mich danach gefragt und so habe ich eine erstellt: nb-remotefs-0.1.3

Zusätzlich habe ich heute einen Bug in dem SFTP Modul behoben, so dass jetzt sowohl SFTP als auch FTP funktioniert. Remotefs ist immer noch in einer frühen Phase und viele Funktionen fehlen noch, aber ich habe die Grundfunktionalität wiederhergestellt, so dass man seine Remote-Files in NetBeans 6.9.1 editieren kann.

Der ursprüngliche Entwickler hat keine Zeit mehr, um das Projekt fortzuführen und ich habe auch wenig Zeit. Ich weiß nicht, ob die fehlenden Features jemals implementiert werden. Vielleicht könnt ihr mir sagen, was ihr am meisten vermisst und ich werde diese Dinge dann – falls ich Zeit habe – als Erstes hinzufügen.

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…