Posts mit dem Label Free Software werden angezeigt. Alle Posts anzeigen
Posts mit dem Label Free Software werden angezeigt. Alle Posts anzeigen

Samstag, 4. Mai 2013

[Debian] Wheezy Release

Nach gut zwei Jahren ist es nun soweit.
Die neue Debian Version mit dem Codenamen Wheezy steht an.
Aktuell werden bereits die Installationsmedien erstellt und in den kommenden Stunden fleißig verteilt.

Ich beteilige mich beim verteilen über meine Root Server.
Diese haben eine 100 MBit/s Anbindung mit Flat, was das Verteilen sehr effektiv macht.

Ansonsten ist Wheezy bei mir auch schon in einigen VMs sowie auf einem Testrechner am laufen.
Wheezy läuft dort mit aktuellen Paketen stabil und zuverlässig.

In den kommenden 2-3 Monanten kommt dann auch schon der erste Point Release.
Mit diesem werde ich meinen Homeserver und sobald verfügbar auch meine Root Server umstellen.

Debian wird zukünftig bei mir auf meinem zweiten Desktop Rechner laufen und dort für allesmögliche herhalten.
Da ich auch mit mdadm über USB 3 oder eSata testen möchte, würde sich Wheezy sehr gut anbieten.

Sonntag, 3. April 2011

Spiegel für kernel.org

Da ich auf meinen Festplatten noch einiges an Platz habe, habe ich mich letzte Woche dazu entschlossen einen Spiegel für kernel.org einzurichten.

Diesen kann ich dann nutzen um mir direkt Kernel zu besorgen und zu erstellen.
Zwar werden damit rund 300 GB Platz genutzt aber da ich noch über 400 GB auf der Platte frei habe, ist dies kein großes Problem.

Ebenfalls kann ich endlich Erfahrungen mit rsync machen.
Bisher habe ich rsync nur indirekt über debmirror genutzt.
Da es eigentlich das beste Tool zum Synchronisieren ist, ist es optimal für eine Spiegelung.

Durch ein paar Optionen von debmirror, kenne ich auch ein paar Kniffe um die Leistung von rsync optimal zu nutzen.

Leider dauert der Download über die 16 MBit/s Leitung doch recht lange, ich lade bereits seit 7 Tagen.
Ebenfalls scheint es aktuell Probleme mit dem Funknetzwerk zugeben, da dieses gerne mal ausfällt und somit der Empfang unterbrochen ist.
Und wenn man dann nicht gerade da heim ist, kann man nichts mehr machen.

Samstag, 26. Februar 2011

jsync Umstellungen

Nachdem ich in letzter Zeit nur wenig an jsync arbeite, habe ich mit in den letzten Tagen mal wieder die Zeit genommen um ein paar Anpassungen zu machen.

Ich werde in der nächsten Zeit einige Optionen überarbeiten.
Die Option für erweitertes loggen ist bereits etwas angepasst.
So wird zukünftig VerboseInformations aus der jsync.conf verschwinden.
Diese Option wird dann nur noch für Debugging verwendet.
Per Parameter -D, --debug oder /debug wird dies dann aktiviert.
Ich werde mal schauen was noch umgestellt und ggf. als Parameter ausgegliedert werden kann.

Ansonsten versuche ich noch ein paar Optimierungen um die Ausführungsgeschwindigkeit noch weiter zu verbessern.

Leider ist Java durch seine schier endlose Liste an Parametern für die VM und den GC nicht gerade einfach zu optimieren.
Und mit dem ersten Testkandidaten des JDK 7, dass vor einigen Tagen freigegeben wurde, wird es wahrscheinlich nicht besser.

Samstag, 11. Dezember 2010

Java bald am Ende?

Ich habe in den letzten Wochen mal die Situation rund um Java im Auge behalten.
Leider durfte ich mit der Abstimmung im JCP über Java SE 7 und 8 feststellen, was aus dem ganzen geworden ist.

Die Idee hinter dem Java Community Process ist es eigentlich Java eine offene Entwicklung zu bringen.

In JCP werden alle Java Specification Requests(JSP) überprüft und bei bestehen auch in Java übernommen.
Leider ist dieser Prozess in der letzten Zeit eher zu einem Trauerspiel geworden.

Grund dafür gibt die aktuelle Abstimmung zu Java SE 7 und 8.
Diese Versionen verschleppen sich nun schon seit mehreren Jahren und sollen nun endgültig auf den Weg gebracht werden.
An sich ist hier noch alles in Ordnung.

Nun wollte die Apache Software Foundation(ASF) von Oracle eine Lizenz für die Testsuite ihrer Java Implementierung.
Somit kann Apache die Kompatibilität zur Original Java Implementierung überprüfen.
Durch die Übernahme von Oracle wäre dies eigentlich kein Problem gewesen.
Oracle selbst war Jahre lang sogar dafür das Sun Microsystems, ehemaliger Besitzer von Java nun aber durch Oracle aufgekauft, eine Lizenz an ASF aushändigt.

Nun hat Oracle aber eben seine Position geändert und verharrt wie Sun nun eben darauf, dass ASF keine volle Lizenz bekommt.
Die Lizenz die Oracle ASF zugesteht beschränkt aber die Nutzung der Java Implementierung von ASF.
Dies ist aber eben gegen den Gedanken von Freier Software und Open Source.
Ein Grundgesetz der freien Software ist es nämlich, dass die Software uneingeschränkt genutzt werden darf.

ASF hat deshalb bei der aktuellen Sitzung zur Abstimmung der Spezifikation für Java SE 7 und 8 zusammen mit Google für ein Nein gestimmt.
Die restlichen Teilnehmer haben dies korrekterweise mit Ja aber mit einigen Kommentaren zu dem Problem gestimmt.

Oracle selbst vor der Abstimmung ebenfalls gesagt, dass man mit oder ohne Zustimmung des Komitees die Spezifikationen umsetzen wird.

Somit wird sich Java wohl in den nächsten Jahren wohl selbst ins aus Katapultieren.
Ich finde diese Entwicklung sehr traurig, da ich Java wegen seiner Verbreitung und Möglichkeiten schätze.

Leider scheint Oracle ähnlich wie bei MySQL und OpenOffice mit aller Gewalt zu versuchen diese Produkte los zu werden.
Wo keine Wartungs- und Entwicklungskosten anfallen, da kann man eben Geld sparen.

Traurig was aus den guten Produkten von Sun geworden ist.
Ich werde die ganze Geschichte noch weiter verfolgen aber auf gute Nachrichten sollte man dank Oracle nicht mehr hoffen.

Ob die Übernahme durch IBM besser gewesen wäre?

Dienstag, 7. Dezember 2010

jsync Überarbeitung

Nachdem ich mit den letzten Optimierungen noch nicht ganz zu frieden bin, werde ich noch ein paar Tests und Anpassungen machen.
Aktuell verbrennt immer noch zu viel Speicher bei der Auflistung der Dateinamen.
Bei einer Synchronisation von mehren Dateien kann dies schnell zu Speicherfressern werden.

Deshalb werde ich in den nächsten Tagen mal wieder ein paar Kernprobleme angehen.
Anbei werde ich auch die Verarbeitung der Konfigurationsdateien noch überarbeiten.
Aktuell ist dies nur Case Sensitive was bei einem Tippfehler zu Defaultwerten führt.
Dies werde ich in der nächsten Version anpassen.

Dienstag, 30. November 2010

jsync wird schneller

Nachdem ich mit dem Speicherverbrauch und der Geschwindigkeit von jsync nicht sehr zufrieden bin, bastle ich in letzter Zeit mal wieder am Fundament.
Akutell habe ich durch eine Umstellung der Verarbeitung von String auf StringBuilder schon den Speicherverbrauch und die Geschwindigkeit verbessert.

Aktuell ist aber noch ein Manko beim Thema Threadsicherheit.
Dort werden ich auch noch basteln damit es zu keinen Kollisionen kommt.

Donnerstag, 18. November 2010

jsync beherrscht nun Excludes

Nachdem es seit einigen Wochen eine Sicherung mit jsync mache habe ich immer wieder folgende Situation.
Ich sichere mein Benutzerverzeichnis mit allen Dateien und Ordnern.

Dabei werden aber immer große Ordner für Musik, Videos und Downloads gesichert.
Diese habe ich sonst per Skript nach der Sicherung löschen lassen.
Da dies aber immer wieder zu langen Wartezeiten führte, habe ich mich entschlossen Excludes einzubauen.
Diese können in den jeweiligen Verbindungsdatei unter der Sektion excludes eingefügt werden.
Die Ordner oder Dateien werden dann beim synchronisieren ausgelassen.

Samstag, 23. Oktober 2010

Neue Ideen für jsync gesucht

Seit einigen Wochen geht es bei jsync nicht mehr wirklich weiter.
Grund dafür ist einfach, dass ich nicht weiß wie man jsync noch erweitern könnte damit der Nutzen für den Anwender verbessert werden kann.
Ein paar Sachen wären natürlich schon möglich aber nicht umbedingt nützlich.

So könnte ich jsync um eine Optimierung der maximalen Threads erweitern.
Pro CPU Kern würde dann ein Thread arbeiten, was optimal für eine schnelle Ausführung wäre.
Auch eine automatische Buffer Vorgabe wäre bestimmt anhand des vorhandenen Speichers erstellbar.

Trotzdem wären dies eher kleine Erweiterungen die nicht umbedigt von großem Nutzen wären.
Ansonsten bin ich für Ideen offen.

Freitag, 28. Mai 2010

jsync geht in die nächste Runde

Da ich mal wieder etwas Lust auf Java hatte, habe ich mal wieder an jsync gebastelt und einige kleine Idee umgesetzt.

So wurde erst einmal der Code des ConfigHelpers aufgeräumt.
Die Zeilen zum erstellen und validieren der Sektionen haben sich schon unnötig vermehrt.
Dies habe ich auf 4 Methoden runter gebrauchen die jeweils aufgerufen werden um die Werte anzulegen.

Das alte System der Sektionen sources, targets und connections habe ich ebenfalls abgeändert.
Also neue Option muss man nun einen Ordner angeben in dem .con Dateien liegen müssen.
Diese Dateien enthalten dann die sources, targets und connections Sektionen.
Somit kann man per Leserecht steuern ob bestimmte Dateien ausgelesen und entsprechend synchronisiert werden sollen.

Dies vereinfacht z.B. die Verwaltung von kritischen Pfaden.
Somit muss man nur noch entsprechend die Leserechte für spezielle Kombinationen setzen oder entfernen.
Somit entfallen ewige hin und her Änderungen an der jsync.conf

Ansonsten habe ich endlich alle Warnungen aus dem Code entfernen können.
Dabei handelt es sich um Warnungen die in den Bibliotheken von jsync befanden und schon seit Ewigkeiten vorhanden waren.

News von der Front

Heute gibt es mal wieder einen kleinen Zwischenstand.


Nachdem ich in der letzten Zeit mal etwas fernab jeglicher privater Programmierung war, habe ich mal wieder an jsync gebastelt.
Es gibt eine neue Option, verifyTransaction, die nach dem kopieren oder abgleichen einer Datei abhängig davon wie eine Datei auf Änderungen geprüft wird, vergleicht ob die Datei korrekt kopiert oder abgeglichen wird.
Bei einem Fehler wird dann lediglich ein Hinweis dazu ausgegeben.

Dies ist eine sehr brauchbare Option, da es vorkommen kann, dass eine Datei durch einen Fehler beim kopieren nicht richtig übertragen werden kann.
Wenn dies der Fall ist, ist die Datei unbrauchbar.
Somit kann man nun auf Nummer sich gehen und die Transaktion überprüfen lassen.

Leider ist diese Funktion noch nicht komplett optimiert.
Aktuell wird bei aktivem Hashing die Quelldatei nochmals gehasht.
Hier werden ich noch eine Optimierung einbauen.
Den bei aktivem Hashing ist der Hash beim gegenprüfen bereits bekannt.

Diese Optimierung spart Zeit, da große Dateien lange brauchen bis sie gehasht wurden, und schont die Festplatte.

Die Optimierung werde ich aber noch genauen planen müssen da der aktuelle Stand schon recht stabil ist und dies eine problematische Änderung ist.

Ansonsten gibt es auch noch erfreulichere Nachrichten.
Ich habe meinen Arbeitsvertrag am Freitag unterschrieben.
Sobald ich die letzte Prüfung am 16.Juni erfolgreich bestehe und mir die schriftliche Abschlussprüfung keinen Strich durch die Rechnung macht, bin ich ab dem ersten Juli offiziell bei DeDeNet angestellt.

Nach zwei ein halb Jahren bei DeDeNet wäre dies wirklich ein Traum.
Nachdem ich nun auch schon seit vier Jahren auf mein Ziel zum Fachinformatiker Fachrichtung Anwendungsentwicklung hinaus arbeite scheint mein kleines Lebensziel schon fast erreicht.

Am fünften Juni wird auch das Ergebnis der schriftlichen Prüfung bekannt sein.
Bis dahin heißt es noch warten und hoffen.

Zuletzt noch ein paar News des Tages.
Da ich heute mal viel Zeit habe und mein Zimmer wie ein Kriegsgebiet aussieht, werde ich mal die Zeit nutzen und aufräumen und die Schränke mal putzen.
Mal will ja nicht auf einer Müllkippe leben.

Ansonsten heißt es, dank Pfingsten, die Beine hoch machen und den Tag genießen.
Da das Wetter auch gut mitspielt, kann man den Tag wirklich gut nutzen.

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.

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 :)

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.

Donnerstag, 4. Februar 2010

Große Architektur Änderung bei jsync

Ich habe Gestern eine neue Architektur bei jsync eingeführt.
Diese soll lediglich die jFileLib erweitern.

So gibt es nun die Klassen File, Directory und Path.
Diese dienen um Attribute von Dateien zu prüfen.
Path dient hierbei als eine sehr gute Helferklasse zum überprüfen ob es sich um eine Datei oder ein Verzeichnis handelt.

Somit kann man dann über die File oder Directory Klassen dann spezifische abfragen machen.

Des weiteren lagere ich auch viele Teile zum kopieren von Binärdateien aus.
So gibt es wieder das File, FileReader und FileWriter Konstrukt.
Somit kann ein eigenes File Objekt mit einem Reader und Writer als Eigenschaften erzeugt werden um die Operationen beim Lesen und Schreiben von Dateien zu vereinfachen.

Ich finde es leider sehr bedauerlich, dass Java nicht wie C# statische Methoden in der File Klasse bietet.
In Java muss immer ein Objekt erzeugt werden und dann kann erst gearbeitet werden.
Dies hat sich in den ersten Versionen von jsync als sehr Speicherraubend erwiesen.

Diese Architekturumstellung spart nochmals 10 Megabyte RAM bei der Ausführung ein.
Ich werde schauen, ob ich dies nicht noch mehr optimieren kann.

Sonntag, 24. Januar 2010

jsync und der Arbeitsspeicher

Ich habe in den letzten Zeiten etwas recht positives festgestellt.

Trotz der Arbeit mit Dateien im Gigabyte Bereich läuft jsync immer mit der gleichen Anzahl an MB im RAM.
Aktuell verbrauch jsync bei einer Synchronisation mit 10 Threads und somit auch mit 10 Synchronisationen gleichzeitig, mit 100-120 MB RAM.

Dies wird manche natürlich doch etwas erschrecken.
Den so manches native C oder C++ Programm bräuchte für so etwas um die 20-30 MB.
Dies liegt an der Architektur von jsync.

Aktuell verwaltet jsync jede Ebene der Verzechnisse über interne Liste.
Diese enhalten dann die Dateipfade in einem Verzeichnis.
Dies wird mit absoluten Pfaden geregelt.

Dies ist bei vielen Dateien nicht gerade wenig Speicher.
Damit der Speicher aber nicht unnötig belegt bleibt, werden die abgearbeiteten Einträge aus der internen Liste entfernt, was wieder viel Speicher frei gibt.

Ich suche aber immer noch einen Weg, damit ich unter die 100 MB Ram bei jsync komme.
Die Möglichkeit mit einer Datei war mal ein guter Anfang aber erwies sich leider als Sackgasse.

Falls jemand eine gute Idee hat, ich höre immer gerne zu :)

jsync im Härtetest

Ich habe Gestern mal meine externe Sicherungsplatte komplett gelöscht.
Eigentlich wollte ich damit mal testen ob es schnellerer und effizienterer wären, wenn ich die wichtigen Ordner per tar als .tar.gz Archive sichere.

Insgesamt wäre dies eine nette Idee.
Dies hatte aber 2 Nachteile.

1.Die CPU ist extrem ausgelastet, da die Daten doppelte Verarbeitet werden müssen.
Einmal um die Daten zusammen zufügen und einmal um diese dann zu komprimieren.

2.Die Daten müssten später auch wieder dekomprimiert werden was ebenfalls wieder viel Rechnezeit kosten würde.

Also habe ich die Platte wieder mit jsync anfangen lassen zu füllen.

Leider scheint dies nun einige Tage zu dauern.
Den USB 2.0 ist leider nicht sonderlich schnell.
Und da die Platte nur mit 5400 Umdrehungen läuft, ist die Schreib- und Lesegeschwindigkeit nicht sonderlich hoch.

Mit ca. 35 MB/s kann es noch Ewigkeiten dauern.

Mittwoch, 20. Januar 2010

Debian Spiegelserver mal aufgesetzt :)

Da ich sehr häufig Debian in allen Farben und Formen aufsetze, brauche ich langsam ein eigenes Repository.
Dies bedeutet, dass ich einfach die offiziellen Repositories spiegele.

Dies kann man dank dem Tool apt-mirrir aus den Main Repository von Debian recht einfach.
Dazu braucht man aber eine Dicke Leitung und etwas Platz.

Im Ubuntuuser.de Wiki findet man eine einfache Anleitung dafür.
Ich werde den lokalen Server heute befüllen und am Wochenende mal antesten.




Nachtrag

Ich habe den Spiegel nun aufgesetzt und bin recht zufrieden.
Es kostet zwar zum Anfang einiges an Platz und auch Zeit zum befüllen, aber danach kann man alle Programme für die jeweilige Einstellung kopieren.

Bei einem Gigabit LAN und einer ordentlichen Platte geht dies recht fix.

Ich werde darüber noch einen Eintrag im Blog schreiben.
Es lohnt sich für alle, die nicht immer wieder 20 Minuten bei einem Update warten wollen weil die Leitung wieder belastet wird.

Sonntag, 10. Januar 2010

jsync und seine kleinen Macken

Nach dem ich in letzter Zeit eigentlich dachte, dass jsync rund laufen würde, musste ich doch feststellen, dass es noch ein paar Macken gibt.
So habe ich in den letzten Tagen gemerkt, dass alte Ordner noch nicht richtig gelöscht wurden.
Dies ist nun angepasst und die aktuelle Version wandert gleich ins SVN.

Ich werde aber noch eine Erweiterung schreiben müssen.
Aktuell ist die Überprüfung auf ausreichend Speicherplatz auf einem Medium noch recht dünn.

In Zukunft wird dies aber etwas stabiler.
Dafür werde ich weitere Optionen einfügen.
Auch die jsync.conf wird sich in Zukunft noch gewaltig ändern.
So wird die options Sektion in den nächsten Zeiten in mehrere Sektionen wie hashing, threads und weiteren, aufgeteilt.

Somit soll die Übersicht in der config etwas klarer und passender werden.

Dies sind erst einmal die wichtigsten Aussichten für die Zukunft.

Freitag, 11. Dezember 2009

jsync beim hashen schneller

Nachdem ich die Programmierung nun etwas aufgeräumt habe, ist jsync nun schneller.
Leider habe ich in der letzten Zeit einen sehr offensichtlichen Fehler mitgeschleppt.
Und zwar habe ich Dateien in der Kopiermethode der FileManager Klasse nochmals auf Änderungen prüfen lassen.
Und beim hashen heißt dies natürlich doppelte Arbeit was bei großen Dateien lange dauern kann.
Der aktuelle Entwicklungsstand ist aber noch nicht ganz reif für eine neue Version.
Ich werde den neuen Stand aber in den nächsten Tagen ins SVN spielen.

Donnerstag, 10. Dezember 2009

jsync bekommt größere Logs

Nachdem ich in letzter Zeit immer wieder sehe, dass bei mir Dateien täglich gemergt werden die eigentlich unverändert sind, habe ich das logging ausgebaut.
Nun werden entweder Dateinamen mit den entsprechenden hashes oder die Dateinamen, Änderungsdatum sowie die Größe in Byte geloggt.
Somit wird sichergestellt, dass es beim vergleichen keinen Fehler gab und auch alles problemlos funktioniert.

Ebenfalls kann man somit erkennen, ob sich der Hash der Datei oder Änderungszeit und Größe geändert wurden.

Ich teste dies noch bei mir durch und beheben noch andere Schwierigkeiten.
Wenn alles gut geht, kann ich in der kommenden Woche ein Update ins SVN spielen.