Freitag, 20. Januar 2012

Netbeans ab Debian Wheezy wieder im Repository

Noch vor dem Release von Debian Squeeze wurde Netbeans aus dem Repository entfernt.
Dies war leider eine sehr schlechte Entscheidung.
Seitdem wurde das Paket netbeans-ide und netbeans-platform auch nicht mehr aktualisiert.

In Debian Wheezy ist nun bei meiner Suche nach netbeans das Paket "netbeans" aufgetaucht.
Dies stellt die Version 7.0.1 von Netbeans bereit.
Somit kann man mit Debian Wheezy, aktuell noch im Testing Statdium, wieder Netbeans verwenden.
Vor wenigen Tagen ist auch die Version 7.1 von Netbeans erschienen, weshalb man ggf. noch auf Netbeans 7.1 in Wheezy rechnen kann.

Auch das OpenJDK7 ist bereits in Debian enthalten und lief vor einer Woche bereits bei kleinen Tests ganz gut.
Der neue Garbage collector G1, der per Default aktiv ist, lief auch sehr verlässlich.

Ich werde die Tage mal etwas mit Netbeans arbeiten und mal schauen ob sich ggf. ein Umstieg von Eclipse lohnen würde.

Debian Wheezy mit Hurd als Kernel

Wie ich mitbekommen habe, wird es in Debian Wheezy möglich sein den GNU Hurd Kernel zu nutzen.
Der Kernel ist fast genauso lange wie Linux in Entwicklung.
Da aber Linux mehr Aufmerksamkeit bekam und auch mehr Interesse bestand, ist Hurd mehr oder weniger in der Versenkung verschwunden.
Natürlich wurde es auch weiterentwickelt, aber eben nur sehr langsam.

Trotzdem wird es wohl mit Debian Wheezy möglich sein eine erste Version von Hurd nutzen zu können.
Dabei handelt es sich aber erst einmal um eine Preview Version.
Wahrscheinlich wird erst in der Version darauf Hurd vollständig und auch stabil laufen.
Mit Wheezy wird dann auch der FreeBSD Kernel vollständig vorhanden sein.

Samstag, 12. November 2011

News nach langer Zeit

Da ich seit einiger Zeit viel Arbeit habe, da uns im laufe der letzten Monate leider einige gute und nette Arbeitskollegen verlassen haben, hatte ich kaum Zeit was zu bloggen.

Aktuell gibt es ein paar kleine News am Rande.

So gibt es von Fedora nun der Version 16.
Da ich bereits mit Fedora 15 gute Erfahrungen gemacht hatte, eigentlich nur wegen Gnome 3, wollte ich mir mal ein Update mit Fedora 15 zu Version 16 erlauben.
Mit dem Tool preupgrade, was man sich direkt aus dem Fedora Repository laden kann, ging dies zwar langsam aber doch sauber über die Bühne.

Fedora 16 Codename Verne, angelehnt an Jule Verne ist übrigens Denis McAllister Richie gewidmet.
Dies ist leider vor einigen Tagen verstorben.

Denis Richie war bei AT&A mit Ken Thompson an der Entwicklung vom Ur Unix, Unics, beteiligt.
Deshalb wurde leider wenig darüber informiert.
Dies liet aber auch am Tod von Steve Jobs der mit Mac OS und iOS aus Unix noch ein sehr beliebtes System gemacht hat.

Ansonsten habe ich mir das neue Buch "Java 7 Mehr als eine Insel" zugelegt.
Es ist eine tolle Ergänzung zum Buch "Java ist auch eine Insel".
Für Java Einsteiger eine super Mischung und auch für Java Entwickler auch eine gute Beispielsammlung.

Freitag, 26. August 2011

Neuigkeiten von der Entwicklerfront

Aktuell arbeite ich an einem Server für UDP/TCP für ein Projekt an dem ich beruflich arbeite.
Leider scheiterte ich anfangs an der asynchronen Verabrietung mit den Async Methoden der Socket Klasse ab .Net 4.0

Damit dies trotzdem sauber läuft, habe ich erst einmal alles in den ThreadPool verlagert, was wirklich sehr einfach und hilfreich ist.
Der Server soll dabei bestimmte Datenformate empfangen und verarbeiten.
Die Entwicklung macht Spaß und kann dann der Erfahrungen, die ich wirklich zufällig vor dem Projekt privat gemacht hattem auch besser damit arbeiten.

Heute steht ein Testlauf an um zu schauen ob die Verarbeitung von zwei noch ungetesten Formaten klappt.
Wäre super wenn dies ohne Probleme laufen würde.

Da wir die UDP/TCP Server Komponente noch auslagern wollen, damit diese mit dynamischen Mitteln später auch in anderen Projekten eingebunden werden kann, nutze ich auch delegates um die Verarbeitung zu ermöglichen.

Donnerstag, 4. August 2011

C# - Pfad zur Anwendung ermitteln

Ich habe immer wieder das Problem, dass ich in dem Ordner in der meine Anwendung liegt weiter Ordner/Dateien verarbeiten oder ablegen muss.

Zum ermitteln des Pfad reicht eine Zeile.

Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
Somit erhält man den Vollständigen Pfad zum Anwendungsordner

C# - PID für aktuellen Prozess ermitteln

Aktuell baue ich einen kleine UDP Server.
Da ein laufender Server per PID Datei angezeigt werden soll, muss ich diese per C# ermitteln.

Die Lösung ist gerade mal eine Zeile lang.

System.Diagnostics.Process.GetCurrentProcess().Id;
Somit bekommt man die Id als int Wert.
Diese kann man dann entsprechend in einer .pid Datei speichern um einen aktiven Server zu markieren.

Samstag, 30. Juli 2011

Linux Kernel 3.0 erschienen

Im laufe der letzten Wochen wurde die 2.6 Linie des Kernels in 3.0 umgetauft.
Grund dafür waren nur Probleme mit dem alten 4 stellligem Versionsnummern.
Die neue Versionierung besteht nur noch aus 3 Stellen.

Die letzte Stelle weisst zukünftig nur noch auf Sicherheitsupdate hin.
Die mittlere Stelle auf neue Versionen der aktuelle Linie.
Und die erste Stelle verweist eben auf die aktuelle Linie.

Große Neuerungen gibt es von Version 2.6.39 zu 3.0 nicht.
Trotzdem ist es nach einigen Jahren bestimmt nicht schädlich auf Version 3.0 umzustellen.

Die aktuelle Version kann wie gehabt von kernel.org geladen und kompiliert werden.
Debian Squeeze hat mit der aktuelle Version keine Probleme und läuft sehr stabil.

C# Projekt sync

Ich habe vor einigen Wochen eine kleine Anwendung in C# gebastelt.
Bei sync handelt es sich um eine Anwendung zur, nicht überrascht sein, Dateisynchronisation.

Dabei bediene ich mich dem Threadpool, damit die Verarbeitung auch schnell erledigt wird.
Dies hat sich als Vorteilhaft bei der Verarbeitung von Dateien über eine Netzwerkfreigabe erwiesen.
Da in C# die Attribute der FileInfo Objekte erst intern aktualisiert werden, wenn diese zum ersten mal aufgerufen oder die Refresh() Methode aufgerufen wird, kann dies bei einer Datei über das Netzwerk langsam sein.

Dies bremst bei jeder einzelnen Prüfung die Verarbeitung ganz schön aus.
Hier lohnt sich dann die Verarbeitung mit dem Threadpool.

Durch Parameter an die Anwendung, kann man dann auch nicht die Anzahl der Aufgaben und auch den Ablauf steuern.
Wenn man z.B. Dateien Archivieren möchte, kann man den Löschvorgang überspringen.

Ich nutze sync bereits daheim um meine Dateien auf meinem Homeserver per Samba zu speichern.
Dies funktioniert wirklich wunderbar.

Das Projekt werden ich später noch zur Verfügung stellen.

Java 7 ist fertig

Eine Nachricht die man fast schon als running gag bezeichnen könnte.
Aber nach 4 Jahren Entwicklungszeit hat Oracle es durch die Aufteilung der Planung für das JDK geschafft die Version 7 fertig zu stellen.

Insgesamt gibt es durch das Project Coin kleine Sprachänderungen.
So ist es endlich möglich String anstelle einer Verkettung von if/else if/else durch ein switch zu schicken.
Diese Funktion ist eine erhebliche Erleichterung für die Arbeit mit Strings.

Auch weitere Funktionen und Sprachänderungen kamen hinzu.
So besitzt Java 7 mit NIO 2 endliche eine Klasse mit statischen Methoden zur Verarbeitung von Dateien.
Sowas hätte ich in Java 6 bereits gebrauchen können.
Auch ist es endlich möglich, über diese neue File Klasse, mit symbolischen Links zu arbeiten.
Diese Funktion kann ich in jsync endlich gebrauchen.
Dort folgt Java dem symbolischen Link und kopiert entsprechend die Dateien in das Zielverzeichnis, was ja eigentlich nicht gewünscht ist.

Ich werden in nächster Zeit, wenn ich dazu komme, eine Java 7 Version von jsync anlegen.

Vorher wird aber noch kräftig aufgeräumt, da einiges an Altlasten endlich verschwinden muss.
Auch ein paar Optimierungen am Code dürften nicht schaden.

Montag, 4. Juli 2011

jsync optimiert

Da ich in letzter Zeit wieder etwas in jsync aufräumen wollte, habe ich in den letzten Tagen mal mit dem Haus putz angefangen.
Als erstes hab ich mal die interne Verwaltung der Pfade optimiert.

Dies hat den Speicherverbrauch zwar leicht nach oben gedrückt, hilft aber für sauberen Code als vorher.
Im Gegensatz zum alten Code wird der Speicherverbrauch aber nicht über ein gewisses Limit gepuscht.
Grund dafür ist, dass intern nur noch die Ordner gespeichert werden.
Die Verarbeitung der Dateien erfolgt dann erst wenn eine bestimmte Ordner Ebene erreicht wird.

Auch ein paar Optionen wie die SleepTime der Threads werde ich wohl rauswerfen.
Hier wird im Code eine default Zeit von 1 Millisekunde eingetragen.
Auch andere Optionen werden wohl rausfliegen um die Konfiguration wieder sinnvoll zu gestalten.