Nachdem ich in letzter Zeit durch den Abschluss meiner Ausbildung wenig Zeit für jsync hatte, habe ich in den letzten Tagen mehr Zeit in das Projekt gesteckt.
Dabei habe ich mir einige Gedanken zum Speicherverbrauch gemacht und wie ich diesen etwas optimieren kann.
Durch einen Thread in einem Forum, in dem ich das Problem angesprochen hatte, bekam ich auch einen interessanten Anfangspunkt.
So wäre eine Möglichkeit statt rekursiv durch alle Verzeichnisse zu gehen einfach alle Pfade von Ordner rekursiv einzuladen um diese dann iterativ durchzulaufen.
Dies klingt im ersten Augenblick nach einer guten Lösung hat aber auch einen Speichernachteil.
Bei vielen Ordnern und Unterordnern kann dies viel mehr Speicher kosten als die rekursive Methode.
Da dies aber eine Lösung sein kann um den Speicherverbrauch unter bestimmten Umständen zu verringern, werde ich dafür eine Option in jsync einbauen.
Ansonsten muss ich noch schauen ob es eine Möglichkeit gibt einige Methoden zu optimieren um den Garbage Collector dazu zu bewegen nicht benötigte Objekte zu löschen.
Leider gibt es nicht viele Möglichkeiten den GC per Programmierung zu optimieren.
Hier muss das Programm java mit entsprechenden Parametern aufgerufen werden.
Ich werde am Wochenende mal ein paar Durchläufe an einigen Testdaten machen umd einen möglichst optimalen Aufruf zu finden.
Sobald ich was passendes habe werde ich die Dokumentation von jsync um einen Eintrag erweitern.
Hier gibt es Einblicke in viele Themen rund um Betriebssysteme und Softwareentwicklung.
Mittwoch, 7. Juli 2010
Ausbildung beendet
Nach 2 Jahren habe ich nun erfolgreich meine Ausbildung am 16.06 mit meiner Präsentation und dem Fachgespräch bestanden.
Mit 75% und somit einer 3 habe ich erfolgreich den Abschluss geschafft.
Anbei habe ich mal das Design des Blogs etwas angepasst, was man wohl seit geraumer Zeit machen kann.
Ich hoffe das neue Design gefällt.
Mit 75% und somit einer 3 habe ich erfolgreich den Abschluss geschafft.
Anbei habe ich mal das Design des Blogs etwas angepasst, was man wohl seit geraumer Zeit machen kann.
Ich hoffe das neue Design gefällt.
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.
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.
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.
Labels:
Allgemein,
Arbeit,
Ausbildung,
Debian,
Entwicklung,
Free Software,
GNU/Linux,
Java
Mittwoch, 12. Mai 2010
Schriftliche Prüfungen sind durch
Heute habe ich mit meinem Kollegen die schriftliche Abschlussprüfung durchgearbeitet.
Diese war auch recht interessant und teilweise auch einfach.
Nun heißt es bis Anfang Juni warten bis es die vorläufigen Ergebnisse gibt.
Ich muss gestehen, dass die schriftliche Prüfung für mich der schwere Teil ist.
Leider ist meine Handschrift alles andere als gut Lesbar.
Und wenn man dann in 90 Minuten mehrere Seiten durcharbeiten muss, ist Chaos vorprogrammiert.
Ich kann nur hoffen, dass der Prüfungsausschuss gnädig gestimmt ist und sich die Qual an tun wird.
Ansonsten heißt es erst einmal abwarten und auf das noch anstehende Fachgespräch vorbereiten.
Dort werde ich meine Projektarbeit in 15 Minuten vorstellen, Probleme und deren Lösungen bei der Entwicklung durchgehen und zum Schluss folgen noch 15 Minuten für Fragen und Antworten.
Wenn dann alles gut geht, bekomme ich hoffentlich meinen Schein auf dem steht ob ich bestanden habe oder nicht.
Letzteres möchte ich nicht hoffen.
Diese war auch recht interessant und teilweise auch einfach.
Nun heißt es bis Anfang Juni warten bis es die vorläufigen Ergebnisse gibt.
Ich muss gestehen, dass die schriftliche Prüfung für mich der schwere Teil ist.
Leider ist meine Handschrift alles andere als gut Lesbar.
Und wenn man dann in 90 Minuten mehrere Seiten durcharbeiten muss, ist Chaos vorprogrammiert.
Ich kann nur hoffen, dass der Prüfungsausschuss gnädig gestimmt ist und sich die Qual an tun wird.
Ansonsten heißt es erst einmal abwarten und auf das noch anstehende Fachgespräch vorbereiten.
Dort werde ich meine Projektarbeit in 15 Minuten vorstellen, Probleme und deren Lösungen bei der Entwicklung durchgehen und zum Schluss folgen noch 15 Minuten für Fragen und Antworten.
Wenn dann alles gut geht, bekomme ich hoffentlich meinen Schein auf dem steht ob ich bestanden habe oder nicht.
Letzteres möchte ich nicht hoffen.
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.
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.
Labels:
Allgemein,
C++,
Entwicklung,
Java,
Software
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 :)
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.
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.
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.
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.
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.
Abonnieren
Posts (Atom)