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.

Dienstag, 9. November 2010

Lebenszeichen

Seit längerem ist es etwas still um mich, den Blog und jsync geworden.
Dies liegt daran, dass ich aktuell eher wenig Zeit für Java und co. verwende.
Aktuell nutze ich mal die Zeit um nach der Arbeit etwas zu entspannen, Musik hören, Filme schauen und mal etwas von allem abzuschalten.

Ich werde die Zeit auch mal wieder nutzen um Abends wieder etwas unterwegs zu sein.
Die nächsten Tage wird dann auch mal wieder eine Runde um den Block gedreht.

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.

Donnerstag, 26. August 2010

Neue C# Bücher

In den letzten Wochen lese ich meine neuen C# Bücher.
Einmal C# 2008 - Profihandbuch und Referenz von Terry Nash aus der Franzis Professional Series und Mono - .NET goes Linux von Kaan Candar ebenfalls von Franzis Professional Series.

Das erste Buch basiert mehr auf dem Microsoft .NET Framework und geht etwas sehr auf das Laufzeitverhalten sowie die CLR ein.
Dabei kann man viel über das Verhalten von .NET Programmen erfahren.

Das zweite Buch basiert natürlich auf Mono und geht teilweise auch auf das .NET Framework ein.
Dort geht es mehr um die Mono Version von C# und den dazugehörigen Entwicklungsumgebungen.

Beide Bücher ergänzen sich sehr gut, wenn man auf beiden Plattformen arbeitet.

Sie sind auch sehr gut geschrieben und sind deshalb auch sehr gut zu lesen.
An Know-How und Fachwissen mangelt es definitv nicht.

C# 2008 ist zwar schon, wie der Titel sagt, ein Buch bis .NET 3.0 dies macht dankt der Architektur von .NET keine großen Probleme.

Insgesamt lese ich C# 2008 gerade intensiv um finde es als gutes Handbuch sehr nützlich.

Zusätzlich dazu kommt nächste Woche nach das Visual C# 2010 Buch von Galileo Computing als Gesamtpaket.
Mal schauen ob es genauso gut wie "Java ist auch eine Insel" ist.
Wenn ja habe ich eine neue C# Bibel :)

Mittwoch, 7. Juli 2010

jsync reift wieder

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.

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.

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, 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.

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.