Sonntag, 18. April 2010

Mal wieder C++

Nach einer langen Zeit, 2 Jahre sind es nun schon, nicht mehr aktiv C++ entwickelt habe, habe ich Gestern mal wieder damit angefangen.

Ich wollte mal wieder direkt in die native Softwareentwicklung mit ein paar einfachen Aufgaben und mal mit Paramtern an Programmen rumprobieren.

Ich habe dafür ein kleines Programm geschreiben was Primahlen berechnet.
Diese werden dann zeilenweise in eine Datei geschreiben.
Damit das Programm nicht wieder bei 0 anfangen muss, nimmt es die zuletzt berechnete Primzahl und rechnet ab dort wieder weiter.

Ich hatte dieses kleine Programm erst mit Java entwickelt.
Leider was ich sehr unzufrieden damit, da Java für das Programm selbst 48 MB reserviert, was für ein einfaches Programm etwas zu viel ist.

Und ein Aufruf des Programms ist mit Java auch nicht besonders elegant.

Leider musste ich auch feststellen, dass ich im Bereich C++ schon sehr eingerostet war.
Alleine für einfache String Operationen und die Schreib- und Leseklassen musste ich in der C++ Referenz nachschlagen.

Nach einigen Anpassungen läuft nun alles sehr flott.
Mit den Parametern m= kann man das Limit zu berechnenden Zahlen angeben.
Der Standardwert beträgt dabei 1 Millisekunden.

Der Parameter s= gibt dann an wieviele Millisekunden das Programm anch einer berechneten Zahl, nicht Primzahl, es schlafen soll.
Der Standardwert beträgt hierfür 100.

Die aktuelle Version ist im Moment nur für Linux/Unix Systeme angepasst.
Da ich einige Systemfunktionen anspreche, muss ich noch eine Trennung für Windows/Unix Systeme einbauen.

Dank dem guten alten Präprozessor und einigen vordefinierten Makros ist dies aber weniger ein Problem.
Dies wäre auch mein erster Anlauf im per Makros für unterschiedliche Systeme zu entwickeln, was die Portierung leichter macht.

Samstag, 27. März 2010

Umstellung auf dem Desktop von Debian zu Fedora

Ich habe mich dafür entschieden mich aktuell auf dem Desktop von Debian zu trennen.
Grund dafür ist, dass ich eine aktuelle Desktop Umgebung nutzen möchte.

Da ich Fedora bereits in einer VM betreibe und somit schon mit dieser Distribution auf dem Desktop Erfahrungen gesammelt habe, habe ich mich dafür entschieden.
Einen USB Installer Stick habe ich auch schon fertig.

Die Installation lief recht einfach und problemlos.
Da ich noch die Ur-Installations CD genutzt habe, waren 467 Pakete veraltet aber ein Update lief ohne Probleme durch.
Sobald Debian testing aka Squeeze stabiler ist und auch wieder Eclipse mit sich führt, werde ich dort wieder wechseln.

Solange betreibe ich erst einmal mit Fedora meinen freien Desktop :)

Freitag, 26. März 2010

Windows und Batchscripts

Ich habe für die Backups meiner Windows Kiste ein kleines Sicherungsskript gebastelt.
Dies ruft per call vereinzelte Skripts auf, die dann entsprechende Verzeichnise und Dateien sichern sollten.

Leider stört es mich sehr, dass ich in der einfachen cmd von Windows nicht wie bei Linux per & einen Aufruf in den Hintergrund schicken kann.
Dies wird bestimmt den ein oder anderen Nutzer stören.
Damit man aber nicht zwangsweise größere Änderungen machen muss, kann man einen kleinen Fake bauen.

Dafür verwende ich den Befehl start und cmd.
start ruft startet ein Programm, in diesem Fall cmd.
cmd bekommt dann die Parameter /k und den Pfad zu den Batch Datei.
Somit wird cmd dazu aufgerufen per /k die Batchdatei auszuführen.

Ein Beispiel zum kopieren meiner Sicherungen sieht dann wie folgt aus.

start cmd /k "D:\crons\backup.bat"
Somit startet sich ein weiteres cmd Fenster.
Man kann hier noch einen exit einfügen, damit die Fenster wieder geschlossen werden.
Ist zwar nicht so schön wie ein & aber es reicht alle mal für den einfachen Zweck.

Freitag, 19. März 2010

Neues Java Buch :)

Ich habe mal an der Buch Verschenk Aktion von tutorials.de teilgenommen und dabei ein neues Java Buch ergattert.
Darin werden die Themen rund um Java abgedeckt.
Egal ob es Programme mit einer Java UI oder Web Anwendungen sind.
Alle Themen werden darin abgedeckt.

Der Preis liegt mit 8 Euro in einem guten Rahmen.
Leider wäre eine CD von Vorteil gewesen auf der alle Beispiele darauf sind, die im Buch behandelt werden.

Mittwoch, 3. März 2010

Hardware, Hardware und Hardware

Ich bin mal wieder am planen meiner Hardware Aufrüstung.
So werden 2 neue Festplatten und 2 neue Grafikkarten demnächst bei mir eingeplant.

Aktuell sind meine 1 TB Platten bereits gut gefüllt.
Leider mit einem größeren Teil der eigentlich nicht gesichert werden müsste.

Deshalb wird eine neue 640 GB Platte für größere Anforderungen im Netzwerk angeschafft.
Eine 500 GB Platte wird vermutlich für meinen Debian Desktop eingeplant.
Eine neue Zocker Grafikkarte von Nvidia mit DirectX 10.1 und eine Radeon Karte für meinen Debian Server wird eingeplant.

Aktuell läuft mein Server zwar rund, doch ungefährt 150 Gigabyte müssten nicht gesichert werden, was nochmals Platz schaffen würde.
Und die Grafikkarte stört durch aktive Kühlung sehr.

Mittwoch, 24. Februar 2010

jsync, nio und der Speicherverbrauch

Gestern habe ich mal einen Test gemacht, der mich doch sehr überrascht hat.
So hat sich die Implementierung zum Dateien kopieren ohne nio als Speicher schonender und effizienter herausgestellt.

Grund für die Umstellung war, dass mir die Tools top und htop unter Debian Lenny immer zeigten, dass der Speicher immer im Gigabyte Bereich gefüllt ist sobald größere Dateien kopiert werden.

Legt man nun aber eine Speichergrenze von 1 MB in der jsync.conf und stellt nio ab, kommt man nur auf 1 MB Speicherverbrauch zusätzlich zu den intern gespeicherten Pfaden.
Bei einer Kopieraktion lag ich im Schnitt bei 100 MB.

Deshalb empfehle ich, auch wenn nio in Java 7 eine wichtigere Rolle spielen wird als die alten io Schnittstellen, eher auf die klassische Art zu setzen, wenn man Speicher schonen will.

Von apt-mirror zu debmirror

Ich mache gerade eine Umstellung von apt-mirror zu debmirror um den main Zweig von Debian stable und testing zu spiegeln.
Grund dafür ist, dass apt-mirror einen seit mehr als 1 Jahr unbehandelten Bug besitzt.
Ebenfalls scheint sich in Sachen apt-mirror in der Entwicklung nichts mehr zu tun.

Deshalb habe ich Gestern mal debmirror isntalliert und bin sehr zufrieden damit.
Das Programm wird nur mit Parametern aufgerufen, weshalb eine statische Konfigurationsdatei komplett entfällt.
Leider muss ich mir durch diese Umstellung das gesamte main Archiv für stable und testing erneut ziehen.

Da debmirror aber weiterentwickelt wird und wirklich mit einfachen Parametern konfiguriert wird, ist die Einstellung recht simpel.

Man benötigt für die Spiegelung wirklich nur ein Skript mit dem Aufruf von debmirror und den Parametern.

Einige gute Anleitungen gibt es hier:
http://wiki.debianforum.de/debmirror
http://www.lug-wr.de/wiki/index.php/Debmirror

Samstag, 13. Februar 2010

jsync, GPL und der erste Release

Gestern hat sich ein Sourceforge Benutzer bei mir nach den aktuellen jsync Dateien informiert.

Leider musste ich diesem sagen, dass es aktuell noch keinen Release gab.
Ich habe mir dies aber auch zu Herzen genommen und habe mich heute um die letzten Probleme in der aktuellen Version gekümmert.

Dazu zählt eine Anpassung zum Validieren der jsync.conf, Einbau des GPL Hinweis in den Kopf einer jeden Code Datei, Anpassungen der aktuellen Dokumentation und und und.

Ich habe auch einen positiven Kommentar auf sourceforge bekommen.
Dort hat sich ein Mac User bedankt und mir mitgeteilt, dass er mit jsync seine Dokumente mit seinem PC synchronisiert.

Es ist schon sehr cool wenn man solche Kommentare lesen kann :)

Mittwoch, 10. Februar 2010

Google wird zum Provider

Wie ich gerade gelesen habe, will Google in Amerika zum Internet Provider werden.
Das ganze wird erst einmal als Versuch ablaufen.
Dabei sollen Anbindungen von 1GBit/s drin sein.

Man versucht dabei 50.000 bis 500.000 Haushalte anzubinden.
Ich wäre froh wenn ich solch ein Experiment mitmachen dürft.

Ich stelle mir nur die Frage wozu man eine 1GBit/s Leitung benötigt.
Damit kann man schon Dateien in einer extremen Größenordnung verteilen und dies über einen schnellen Ablauf.

Für Torrents wäre es mal eine angenehme Geschwindigkeit.
Aber für den privaten Surfer sehe ich keinen Sinn in dieser Größenordnung.

Sonntag, 7. Februar 2010

jsync beherrscht nun symbolische Links

Ich habe bei mehren Tests in der Vergangenheit immer das Problem gehabt, dass jsync nicht mit einem Link angesprochen werden konnte.

Hierbei war das Problem, dass doe jsync.conf immer direkt neben der jsync.jar liegen muss.
Der Pfad zu dieser Datei war bisher immer relativ.
Wenn man nun aber einen symbolischen Link als Verweis nutzt, dann wird versucht in dem Verzeichnis des Links nach der jsync.conf zu suchen.

Dieses Problem lässt sich auch leider nicht wie in C# mit einer Klasse einfach lösen.
Das Problem habe ich so gelöst, dass ich mit die Url für die ConfigHelper.class aus der jar Datei habe geben lassen.

Das Format ist dann file://D:/jsync/jsync.jar!/jsync/helpers/ConfigHelper.class

Somit musste ich nur die URL um file:// kürzen und den Pfad von jsync.jar nehmen um dem absoluten Pfad zu ermitteln.

Dies ist etwas trickie aber funktioniert ohne Probleme.
Im Code liegt auch ein Fix für Entwickler vor.
Den in einer Entwicklungsumgebung hat man keine fertige .jar Datei.

Ansonsten bin ich froh, dass dieses Problem endlich gelöst ist.
Somit kann ich endlich meine ganzen Backup Skripte anpassen.
Es ist ziemlich nervig immer wieder per cd in das Verzeichnis von jsync zu wechseln.