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.
Hier gibt es Einblicke in viele Themen rund um Betriebssysteme und Softwareentwicklung.
Samstag, 12. November 2011
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.
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.
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.
Diese kann man dann entsprechend in einer .pid Datei speichern um einen aktiven Server zu markieren.
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.
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.
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.
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.
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.
Montag, 27. Juni 2011
ccache für optimiertes neukompilieren
Durch Zufall habe ich letzte Woche das Tool ccache gefunden.
Dabei handelt es sich um ein Tool, dass vom compiler generierte .obj Dateien cached.
Damit wird das erneute kompilieren eines Programmes um eine herbliche Dauer verkürzt.
Damit das Tool seine volle Leistung erreicht muss es erst eingerichtet und noch etwas angepasst werden.
In Debian Squeeze kann man es per "aptitude install ccache" installieren.
Ist dies getan, sollte man die größe des gesamten Caches noch anpassen.
Per Default steht dies bei 1 GB was leider viel zu klein ist, wenn man öfters Programme oder kernel kompiliert.
Hier muss man per "ccache -M " un einem Wert wie 25G die größe setzen.
Da ich meistens Systemplatten habe die ca. 120-250 Gigabyte fassen und selten genutzt werden, kann ich den cache locker auf 25G setzen.
Somit stellt man also den cache per "ccache -M 25G" auf schöne 25 Gigabyte.
Damit man auch eine kleine Übersicht hat kan man mit dem Parameter -s sich die Statistik anschauen.
Diese kann man mit dem Parameter -z wieder zurück setzen.
Für Leute selbst 25 Gigabyte als cache vollkriegen gibt es den Parameter -C der den gesamten cache löscht.
Wenn man den aktuellen stable Kernel 2.6.39.2 kompilieren will muss man noch 2 Variablen setzen.
Einmal muss noch die PATH Varaible angepasst werden.
Dies ist nötig, da ccache auf eigene Verlinkungen der jeweiligen compiler zugreifen muss.
Dazu verwendet man folgenden Befehl.
Nun muss zum kompilieren folgender Befehl verwendet werden.
Somit wird beim kompilieren ccache genutzt was beim erneuten kompilieren gut Zeitspart.
Zusätzlich kann man auch noch tmpfs nutzten.
Hier sollte man aber genutzt RAM haben, damit das Dateisystem bzw. der Speicher nicht vollläuft bevor man fertig mit kompilieren ist.
Dabei handelt es sich um ein Tool, dass vom compiler generierte .obj Dateien cached.
Damit wird das erneute kompilieren eines Programmes um eine herbliche Dauer verkürzt.
Damit das Tool seine volle Leistung erreicht muss es erst eingerichtet und noch etwas angepasst werden.
In Debian Squeeze kann man es per "aptitude install ccache" installieren.
Ist dies getan, sollte man die größe des gesamten Caches noch anpassen.
Per Default steht dies bei 1 GB was leider viel zu klein ist, wenn man öfters Programme oder kernel kompiliert.
Hier muss man per "ccache -M " un einem Wert wie 25G die größe setzen.
Da ich meistens Systemplatten habe die ca. 120-250 Gigabyte fassen und selten genutzt werden, kann ich den cache locker auf 25G setzen.
Somit stellt man also den cache per "ccache -M 25G" auf schöne 25 Gigabyte.
Damit man auch eine kleine Übersicht hat kan man mit dem Parameter -s sich die Statistik anschauen.
Diese kann man mit dem Parameter -z wieder zurück setzen.
Für Leute selbst 25 Gigabyte als cache vollkriegen gibt es den Parameter -C der den gesamten cache löscht.
Wenn man den aktuellen stable Kernel 2.6.39.2 kompilieren will muss man noch 2 Variablen setzen.
Einmal muss noch die PATH Varaible angepasst werden.
Dies ist nötig, da ccache auf eigene Verlinkungen der jeweiligen compiler zugreifen muss.
Dazu verwendet man folgenden Befehl.
export PATH="/usr/lib/ccache:$PATH"
Nun muss zum kompilieren folgender Befehl verwendet werden.
make CC="ccache gcc"Zusätzlich kann man für die paralelle abarbeitung noch den Parameter -j und die Anzahl der Jobs anhängen.
Somit wird beim kompilieren ccache genutzt was beim erneuten kompilieren gut Zeitspart.
Zusätzlich kann man auch noch tmpfs nutzten.
Hier sollte man aber genutzt RAM haben, damit das Dateisystem bzw. der Speicher nicht vollläuft bevor man fertig mit kompilieren ist.
Dienstag, 21. Juni 2011
Netzwerk Programmierung mit Sockets
Da ich schon seit einiger Zeit mich mit dem Thema der Netzwerkprogrammierung beschäftigen wollte, habe ich mir mal die Zeit genommen und habe dieses Thema mit C# begonnen.
Dazu habe ich erst einmal eine kleine Konsolenanwendung gebaut die per Parameter zwischen Client und Server umschaltet.
Als Daten wird dort nur der String "Testdaten" hingesendet, vom Server ausgegeben und zum Client zurück geschickt.
Dieser gibt dann die Antwort vom Server ebenfalls aus.
Ist nur eine kleine Spielerei aber trotzdem ein kleiner Anfang.
Ich habe dies ebenfall mit Java mal umgesetzt, da ich dort auch mal die Erfahrungen sammelt wollte.
Beide Programmiersprachen haben fast die selben Klassen, was die Umsetzung auch sehr einfach macht.
Vielleicht kann ich ja in Zukunft mal ein kleines Tool bauen, was über das Netzwerk Daten versenden und empfangen kann :)
Wenn ich eine gute Idee habe, werde ich diese mal versuchen umzusetzen.
Dazu habe ich erst einmal eine kleine Konsolenanwendung gebaut die per Parameter zwischen Client und Server umschaltet.
Als Daten wird dort nur der String "Testdaten" hingesendet, vom Server ausgegeben und zum Client zurück geschickt.
Dieser gibt dann die Antwort vom Server ebenfalls aus.
Ist nur eine kleine Spielerei aber trotzdem ein kleiner Anfang.
Ich habe dies ebenfall mit Java mal umgesetzt, da ich dort auch mal die Erfahrungen sammelt wollte.
Beide Programmiersprachen haben fast die selben Klassen, was die Umsetzung auch sehr einfach macht.
Vielleicht kann ich ja in Zukunft mal ein kleines Tool bauen, was über das Netzwerk Daten versenden und empfangen kann :)
Wenn ich eine gute Idee habe, werde ich diese mal versuchen umzusetzen.
Dienstag, 24. Mai 2011
Fedora 15 released
Seit heute ist Fedora 15 verfügbar.
Die wichtigste Einführung mit Fedora 15 ist für mich Gnome in der Version 3.
Ich habe bereits in einer VM mit der Beta gearbeitet und fand Gnome 3 schon interessant.
Da mein alter Rechner nun als Spielewiese genutzt werden kann, habe ich mal Fedora 15 installiert.
Die Sprache ist leider englisch, lässt sich aber nach der Installation im Menü umstellen.
Die Texte wurden auch komplett übersetzt und laufen tut auch alles.
Ich werde gleich mal schauen ob es Updates gibt und diese dann installieren.
Falls noch genug Platz da ist, würde ich auf meinem Debian Server mal ein lokale Repository anlegen.
Da ich aktuell den Debian Server unter ftp2.de.debian.org spiegele, kann ich dort auch Fedora mit spiegeln.
Die wichtigste Einführung mit Fedora 15 ist für mich Gnome in der Version 3.
Ich habe bereits in einer VM mit der Beta gearbeitet und fand Gnome 3 schon interessant.
Da mein alter Rechner nun als Spielewiese genutzt werden kann, habe ich mal Fedora 15 installiert.
Die Sprache ist leider englisch, lässt sich aber nach der Installation im Menü umstellen.
Die Texte wurden auch komplett übersetzt und laufen tut auch alles.
Ich werde gleich mal schauen ob es Updates gibt und diese dann installieren.
Falls noch genug Platz da ist, würde ich auf meinem Debian Server mal ein lokale Repository anlegen.
Da ich aktuell den Debian Server unter ftp2.de.debian.org spiegele, kann ich dort auch Fedora mit spiegeln.
Sonntag, 15. Mai 2011
Technische Umstellung daheim
Nachdem ich nun lange hin und her gegrübelt habe, habe ich mich dazu entschlossen meine kleine Technikzentrale umzustellen.
Mein Linux Dekstop wird vorerst in eine VM unter Windows 7 mit VirtualBox weichen.
Der Rechner wird dann erst einmal nur für Testzwecke von mir genutzt werden.
Ein paar spielchen wie Kernel kompilieren, Programmtests oder einfach ein wenig mit Java und Mono rumspielen werden da bestimmt mal vorkommen.
Vorallem mit Java und C# ein kleines Client-Server Projekt aufzubauen wäre mal was interessantes.
Mein Linux Dekstop wird vorerst in eine VM unter Windows 7 mit VirtualBox weichen.
Der Rechner wird dann erst einmal nur für Testzwecke von mir genutzt werden.
Ein paar spielchen wie Kernel kompilieren, Programmtests oder einfach ein wenig mit Java und Mono rumspielen werden da bestimmt mal vorkommen.
Vorallem mit Java und C# ein kleines Client-Server Projekt aufzubauen wäre mal was interessantes.
Fahrschule
Nachdem ich mich nunr viele Jahre davor gedrückt habe, wird es langsam Zeit den Führerschein zu machen.
Ich habe bereits 6 von 14 Stunden im theoretischen Teil absolviert.
Leider ist meine Lernzeit auf das Wochenende, Montag und Freitag beschränkt.
Als Lehrmaterial gab es für 50€ einen USB Stick a 2 GB mit Lernsoftware und für 20€ ein Lehrbuch.
Die Lernsoftware aktualisert sich auch ohne Probleme ist aber nur 1 Jahr haltbar.
Danach verfällt der Stick und es muss ein neuer ran geschafft werden, falls dann noch benötigt.
Das Lehrbuch ist sehr umfangreich und enthält sogar eine CD mit Videos, was sehr hilfreich ist.
Ich werde meinen Bruder das ein oder andere Wochenende noch dazu bringen müssen mit mir fahren zu lernen.
Nächste Woche gibt es dann einen Erste Hilfekurs mit Passfotos und Sehtest.
Danach habe ich auch alles für den Antrag auf die Fahrerlaubnis.
Mit etwas Glück und Mühe kann ich im dritten Quartal meinen Führerschein erarbeiten.
Ich habe bereits 6 von 14 Stunden im theoretischen Teil absolviert.
Leider ist meine Lernzeit auf das Wochenende, Montag und Freitag beschränkt.
Als Lehrmaterial gab es für 50€ einen USB Stick a 2 GB mit Lernsoftware und für 20€ ein Lehrbuch.
Die Lernsoftware aktualisert sich auch ohne Probleme ist aber nur 1 Jahr haltbar.
Danach verfällt der Stick und es muss ein neuer ran geschafft werden, falls dann noch benötigt.
Das Lehrbuch ist sehr umfangreich und enthält sogar eine CD mit Videos, was sehr hilfreich ist.
Ich werde meinen Bruder das ein oder andere Wochenende noch dazu bringen müssen mit mir fahren zu lernen.
Nächste Woche gibt es dann einen Erste Hilfekurs mit Passfotos und Sehtest.
Danach habe ich auch alles für den Antrag auf die Fahrerlaubnis.
Mit etwas Glück und Mühe kann ich im dritten Quartal meinen Führerschein erarbeiten.
Samstag, 30. April 2011
Spacer portiert auf XNA
Da ich aktuell mit XNA etwas lerne, möchte ich mal wieder mein kleines Spiel Spacer aus der Kiste kramen.
Dieses werde ich als erstes kleines Projekt mit XNA bauen.
Da ich dank Managed Code auch keinen Heap mehr verwalten muss, wird mich dies hoffentlich mehr Nerven sparen als kosten.
Ich werde nur einiges umstellen müssen.
Waren die alten Grafiken noch TGA und die Sounds OGG Dateien, werde ich hier auf andere Formate umsteigen.
Da XNA kein OGG mag und TGA auch nicht die beste Wahl ist, werde ich diese dann konvertieren.
Ansonsten ist das Grundgerüst dan XNA gegeben und muss nur ausgebaut werden.
So ist der Grundcode für den Spieler, Gegenstände und die bösen Feinde bereits geschrieben und leicht ausgebaut.
In den nächsten Tagen werde ich versuchen diesen Grundbau zu einem ersten kleinen laufenden Projekt auszubauen.
Bis es aber wirklich alles hat, Menüs, Optionen, Speichern- und Laden von Spielständen, ein ordentliches Levelsystem etc. wird es aber noch ein langer Weg sein.
Aber dank den guten Büchern und Beispielen von XNA sollte dies alles problemlos möglich sein.
Vielleicht kann ich in 1-2 Jahren sogar ein kleines 3D Spiel basteln :)
Dieses werde ich als erstes kleines Projekt mit XNA bauen.
Da ich dank Managed Code auch keinen Heap mehr verwalten muss, wird mich dies hoffentlich mehr Nerven sparen als kosten.
Ich werde nur einiges umstellen müssen.
Waren die alten Grafiken noch TGA und die Sounds OGG Dateien, werde ich hier auf andere Formate umsteigen.
Da XNA kein OGG mag und TGA auch nicht die beste Wahl ist, werde ich diese dann konvertieren.
Ansonsten ist das Grundgerüst dan XNA gegeben und muss nur ausgebaut werden.
So ist der Grundcode für den Spieler, Gegenstände und die bösen Feinde bereits geschrieben und leicht ausgebaut.
In den nächsten Tagen werde ich versuchen diesen Grundbau zu einem ersten kleinen laufenden Projekt auszubauen.
Bis es aber wirklich alles hat, Menüs, Optionen, Speichern- und Laden von Spielständen, ein ordentliches Levelsystem etc. wird es aber noch ein langer Weg sein.
Aber dank den guten Büchern und Beispielen von XNA sollte dies alles problemlos möglich sein.
Vielleicht kann ich in 1-2 Jahren sogar ein kleines 3D Spiel basteln :)
Montag, 25. April 2011
Providerwechsel
Da es 1&1 bzw. die Telekom es in den letzten 3 Jahren nicht geschafft hat in unserem Ort mehr als 16 MBit/s zur Verfügung zu stellen, wechseln wir zum Jahresende zu Kabel Deutschland mit immerhin 32 MBit/s.
Leider heißt dies für mich noch einiges Nachfragen und viel Aufwand.
Das größte Problem ist aktuell noch die Mailadressen.
Leider haben wir das Problem, dass wir die Postfächer vom Provider, also 1&1, nutzen und diese wahrscheinlich nicht mit umziehen werden.
Somit heißt es 1&1 zu den Möglichkeiten befragen und ggf. alle Seiten finden die noch eine Anmeldung mit der alten Email enthalten.
Das kann noch ein Spaß werden :/
Leider heißt dies für mich noch einiges Nachfragen und viel Aufwand.
Das größte Problem ist aktuell noch die Mailadressen.
Leider haben wir das Problem, dass wir die Postfächer vom Provider, also 1&1, nutzen und diese wahrscheinlich nicht mit umziehen werden.
Somit heißt es 1&1 zu den Möglichkeiten befragen und ggf. alle Seiten finden die noch eine Anmeldung mit der alten Email enthalten.
Das kann noch ein Spaß werden :/
Spieleprogrammierung mit XNA
Nachdem ich in den letzten 4 Jahren sehr wenig im Bereich der Spieleprogrammierung gemacht habe, und wieder einmal Lust darauf bekommen habe, will ich dieses mal mit C# und XNA ein kleines Spiel bauen.
Dies wird dieses mal etwas mehr als damals Spacer.
Da ich das Thema Portierbarkeit auch komplett streiche, Linux ist keine direkte Spielplattform und Macs bringen zusätzlichen Aufwand und sind für mich nicht interessant.
Da ich selbst kaum Erfahrung mit XNA haben, habe ich mir bei Amazon 2 Bücher bestellt.
Das erste deckt den Bereich hin bis zu 2D Spielen ab und das zweite widmet sich direkt einer Engine Entwicklung in 3D ab.
Beide Bücher scheinen sich thematisch gut zu ergänzen.
Zusätzlich habe ich noch einige alter Bücher die einiges zum Thema Spieleprogrammierung enthalten.
Mit etwas Zeit kann ich bestimmt irgendwann in den nächsten 2-3 Jahren auch ein kleines 3D Spiel entwickeln.
Nur bei Grafiken und Sound muss ich dann wieder einige Freiwillige um Hilfe bitten :)
Mal schauen was mich da so alles erwartet.
Dies wird dieses mal etwas mehr als damals Spacer.
Da ich das Thema Portierbarkeit auch komplett streiche, Linux ist keine direkte Spielplattform und Macs bringen zusätzlichen Aufwand und sind für mich nicht interessant.
Da ich selbst kaum Erfahrung mit XNA haben, habe ich mir bei Amazon 2 Bücher bestellt.
Das erste deckt den Bereich hin bis zu 2D Spielen ab und das zweite widmet sich direkt einer Engine Entwicklung in 3D ab.
Beide Bücher scheinen sich thematisch gut zu ergänzen.
Zusätzlich habe ich noch einige alter Bücher die einiges zum Thema Spieleprogrammierung enthalten.
Mit etwas Zeit kann ich bestimmt irgendwann in den nächsten 2-3 Jahren auch ein kleines 3D Spiel entwickeln.
Nur bei Grafiken und Sound muss ich dann wieder einige Freiwillige um Hilfe bitten :)
Mal schauen was mich da so alles erwartet.
Sonntag, 10. April 2011
Linux Kernel kompilieren
Aktuell versuche ich mich im Kernel kompilieren, konfigurieren und installieren.
Die Konfiguration ist dabei sogar der Löwenanteil.
Um es mir den noch einfach zu machen, nutze ich die config Datei unter /boot vom laufenden Kernel.
Damit man sich den Kernel kompilieren kann, benötigt man erst einmal das Archiv des Kernels.
Dieses bekommt man z.B. auf kernel.org.
Am besten nimmt man sich immer den stable oder einen longterm Kernel.
Die stable Kernel sind die stabilen Versionen während die longterm Kernel Langzeitig gepflegt werden.
Ich habe aktuell den Kernel 2.6.38.2 als Basis.
Das Archiv kann man dann unter /usr/src ablegen und per tar -xjf kernel.tar.bz2 entpacken.
Also Ergebnis hat man dann einen Ordner mit dem Schema linux-2.38.2 o.ä.
In diesen wechselt man dann per cd.
Dann kopiert man sich einfach die config Datei des laufenden Kernels.
Unter Debian Squeeze habe ich die config für den Kernel 2.6.32.5
Diese kopiert man dann in das Verzeichnis unter dem Namen .config
Damit wir für den neuen Kernel gerüstet sind, müssen wir die .config auf den neuen Kernel anpassen.
Man hat nun die Wahl zwischen dem leichten und dem schweren Weg.
Der Leicht weg geht über den Befehle "yes "" | make oldconfig"
Das Kommando yes "" sorgt dafür, dass alle Abfragen von make oldconfig einfach mit Enter bestätigt werden.
Somit werden empfohlene Einstellungen genutzt um mögliche neue Einstellungen entweder in den Kernel, also Modul oder gar nicht zu kompilieren.
Der schwere Weg besteht darin, dass man per "make menuconfig" alle Einstellungen für das eigene System anpasst.
Diesen Weg sollte man nur wählen, wenn man weiß welche Hardware vorhanden ist und welche Treiber ggf. erstellt werden sollen.
Eine Fehlkonfiguration führt im schlimmsten Fall dazu, dass der Rechner nicht starten kann weil bestimmte Module nicht erstellt wurden.
Nach der Konfiguration des Kernels können wir diesen kompilieren.
Dabei gibt es ebenfalls 2 Möglichkeiten.
Möglichkeit 1 ist der Debian Weg, der recht einfach ist aber nur für Debian und Derivate gültig ist.
Möglichkeit 2 ist der allgemeine Weg der für alle Distributionen gültig ist.
Dieser Weg benötigt unter Debian nur eine paar Befehle mehr.
Bevor wir mit dem erstellen des Kernels anfangen können, benötigen wir noch zusätzliche Pakete.
Als Grundpakete sollten build-essential, libncurses5-dev und fakeroot vorhanden sein.
fakeroot ist optional dient aber der Sicherheit beim kompilieren.
Damit wird dem Programm make später eine künstliche root Umgebung geboten.
Fangen wir mit Möglichkeit 1 an.
Dies ist der Debian Weg der auch sehr einfach ist und es auch Einsteigern erlaubt sich einen eigenen Kernel zu kompilieren.
Dafür benötigen wir noch das Paket kernel-package.
Dort sind wichtige Tools enthalten mit denen wir den Kernel erstellen und auch fertige .deb Pakete für die Installation über dpkg erstellen können.
Dieses bringt uns das neue Kommando make-kpkg mit dem wir dann den Kernel erstellen und gleich dazu fertige .deb Pakete bekommen.
Da wir mit der Konfiguration soweit fertig sind, können wir den Kernel erstellen lassen.
Dazu nutzen wir den Befehl "make-kpkg -j 4 --initrd kernel_image kernel_headers"
Mit -j 4 geben wir an, dass der Kernel mit 4 parallelen Jobs kompiliert werden soll.
Man sollte nie mehr Jobs nehmen als es Prozessoren gibt.
Bei mehr als 4 Jobs gab es einen internen Speicherfehler im Compiler weshalb der Kernel nicht erstellt werden konnte.
Der Parameter --initrd erstellt die Ram Disk die benötigt wird damit der Kernel auch booten kann.
Die letzten Parameter Kernel_image und kernel_headers sorgen dafür, dass am Ende des Vorgangs im Elternverzeichnis die fertigen .deb Pakete für den Kernel und die zugehörigen Header Dateien vorhanden sind.
Die Header sollte man immer mit erstellen lassen, da es ggf. Software wie VirtualBox gibt, die beim installieren die Header des laufenden Kernels nutzen wollen um Module gegen den Kernel zu kompilieren.
Dies kann je nach Hardware einige Zeit dauern.
Ein normaler Durchlauf lief bei mir zwischen 10-15 Minuten durch.
Wenn dies erfolgreich durchgelaufen ist, müsst ihr nur per "cd .." in das Elternverzeichnis wechseln und findet dann die .deb Pakete.
Mit dem Befehle "dpkg -i linux-image-2.6.38.2-2.6.38.2.deb" und dem entsprechenden Aufruf für das Header Paket, könnt ihr den neuen Kernel installieren.
Will man den Kernel wieder entfernen reicht es mit aptitude/apt-get oder direkt per dpkg die Pakete linux-image-2.6.38.2-2.6.38.2 und linux-header-2.6.38.2-2.6.38.2 zu löschen.
Wie man sehen kann wird der Kernel samt Komponenten wieder gelöscht.
Nun kommen wir zum zweiten und somit zum lagen weg.
Wenn die Konfigurationsdatei bereits angepasst ist, können wir direkt mit dem kompilieren beginnen.
Dazu nutzen wir den Befehl make.
Damit wir aber nicht ewig warten müssen, können wir den Vorgang parallelisieren.
Dazu dient ein einfaches make -j 4.
Die Option ähnelt der Option von make-kpkg.
Grund dafür ist eigentlich, dass make-kpkg auch nur make benutzt und somit die Option an den eigentlichen make Befehl weitergereicht wird.
Als Build Ziel, was man noch als letzten Parameter angeben muss, nutzen wir all.
Somit wird der Kernel und die Module kompiliert.
Der Befehl lautet dann nur "make -j 4 all".
Nun heißt es warten, da das kompilieren Zeit braucht.
Auch hier dauerte es bei mir 10-15 Minuten.
Nach dem kompilieren müssen wir den Kernel und die Module installieren.
Ebenfalls muss eine ramdisk für den Kernel angelegt werden und zusätzlich noch der Bootloader angepasst werden.
Entgegen der Vermutung brauchen wir dafür nur wenig Aufwand.
Die Installation erledigen wir mit "make install && make modules_install".
Damit wird der Kernel und die Module an die richtigen Stellen kopiert, was unnötige cp Aufrufe vermeidet.
Nach dem dieser Befehl durchgelaufen ist, erzeugen wir die Ramdisk.
Diese wird mit "update-initrd -c -k 2.6.38.2" erzeugt und unter /boot abgelegt.
Nun muss nur noch grub angepasst werden.
Dazu reicht ein einfaches update-grub und schon ist alles erledigt.
Will man den Kernel wieder entfernen, muss man hier erst einmal die Ramdisk korrekt entfernen.
Dazu muss man nur den Befehl "update-initrd -d -k 2.6.38.2" eingeben.
Dies entfernt die Ramdisk sauber.
Nun muss man nur noch unter /boot die restlichen Dateien entfernen und erneut "update-grub" ausführen.
Somit entfernt Grub die Menüeinträge und der Kernel ist sauber entfernt.
Insgesamt ist das Kernel kompilieren keine große Magie.
Es braucht lediglich etwas Zeit und ein paar Befehle.
Leider hat ein neuer Kernel aber nicht nur Vorteile.
Leider war die VirtualBox Version von Squeeze nicht mit dem neuen Kernel kompartibel, weshalb sich das Modul des Kernel Treibers für Virtualbox nicht übersetzen lies.
Somit lief Virtualbox zwar aber es lies sich keine VM ausführen.
Hier müsste man sich selbst die aktuelle Version von Virtualbox beziehen und installieren.
Da ich aber ein sauberes Debian bevorzuge, werde ich warten bis alles wichtige in testing ist und werde dann einfach umsteigen und parallel stable laufen lassen.
Ansonsten viel Spaß beim Kernel "backen" und verköstigen :)
Die Konfiguration ist dabei sogar der Löwenanteil.
Um es mir den noch einfach zu machen, nutze ich die config Datei unter /boot vom laufenden Kernel.
Damit man sich den Kernel kompilieren kann, benötigt man erst einmal das Archiv des Kernels.
Dieses bekommt man z.B. auf kernel.org.
Am besten nimmt man sich immer den stable oder einen longterm Kernel.
Die stable Kernel sind die stabilen Versionen während die longterm Kernel Langzeitig gepflegt werden.
Ich habe aktuell den Kernel 2.6.38.2 als Basis.
Das Archiv kann man dann unter /usr/src ablegen und per tar -xjf kernel.tar.bz2 entpacken.
Also Ergebnis hat man dann einen Ordner mit dem Schema linux-2.38.2 o.ä.
In diesen wechselt man dann per cd.
Dann kopiert man sich einfach die config Datei des laufenden Kernels.
Unter Debian Squeeze habe ich die config für den Kernel 2.6.32.5
Diese kopiert man dann in das Verzeichnis unter dem Namen .config
Damit wir für den neuen Kernel gerüstet sind, müssen wir die .config auf den neuen Kernel anpassen.
Man hat nun die Wahl zwischen dem leichten und dem schweren Weg.
Der Leicht weg geht über den Befehle "yes "" | make oldconfig"
Das Kommando yes "" sorgt dafür, dass alle Abfragen von make oldconfig einfach mit Enter bestätigt werden.
Somit werden empfohlene Einstellungen genutzt um mögliche neue Einstellungen entweder in den Kernel, also Modul oder gar nicht zu kompilieren.
Der schwere Weg besteht darin, dass man per "make menuconfig" alle Einstellungen für das eigene System anpasst.
Diesen Weg sollte man nur wählen, wenn man weiß welche Hardware vorhanden ist und welche Treiber ggf. erstellt werden sollen.
Eine Fehlkonfiguration führt im schlimmsten Fall dazu, dass der Rechner nicht starten kann weil bestimmte Module nicht erstellt wurden.
Nach der Konfiguration des Kernels können wir diesen kompilieren.
Dabei gibt es ebenfalls 2 Möglichkeiten.
Möglichkeit 1 ist der Debian Weg, der recht einfach ist aber nur für Debian und Derivate gültig ist.
Möglichkeit 2 ist der allgemeine Weg der für alle Distributionen gültig ist.
Dieser Weg benötigt unter Debian nur eine paar Befehle mehr.
Bevor wir mit dem erstellen des Kernels anfangen können, benötigen wir noch zusätzliche Pakete.
Als Grundpakete sollten build-essential, libncurses5-dev und fakeroot vorhanden sein.
fakeroot ist optional dient aber der Sicherheit beim kompilieren.
Damit wird dem Programm make später eine künstliche root Umgebung geboten.
Fangen wir mit Möglichkeit 1 an.
Dies ist der Debian Weg der auch sehr einfach ist und es auch Einsteigern erlaubt sich einen eigenen Kernel zu kompilieren.
Dafür benötigen wir noch das Paket kernel-package.
Dort sind wichtige Tools enthalten mit denen wir den Kernel erstellen und auch fertige .deb Pakete für die Installation über dpkg erstellen können.
Dieses bringt uns das neue Kommando make-kpkg mit dem wir dann den Kernel erstellen und gleich dazu fertige .deb Pakete bekommen.
Da wir mit der Konfiguration soweit fertig sind, können wir den Kernel erstellen lassen.
Dazu nutzen wir den Befehl "make-kpkg -j 4 --initrd kernel_image kernel_headers"
Mit -j 4 geben wir an, dass der Kernel mit 4 parallelen Jobs kompiliert werden soll.
Man sollte nie mehr Jobs nehmen als es Prozessoren gibt.
Bei mehr als 4 Jobs gab es einen internen Speicherfehler im Compiler weshalb der Kernel nicht erstellt werden konnte.
Der Parameter --initrd erstellt die Ram Disk die benötigt wird damit der Kernel auch booten kann.
Die letzten Parameter Kernel_image und kernel_headers sorgen dafür, dass am Ende des Vorgangs im Elternverzeichnis die fertigen .deb Pakete für den Kernel und die zugehörigen Header Dateien vorhanden sind.
Die Header sollte man immer mit erstellen lassen, da es ggf. Software wie VirtualBox gibt, die beim installieren die Header des laufenden Kernels nutzen wollen um Module gegen den Kernel zu kompilieren.
Dies kann je nach Hardware einige Zeit dauern.
Ein normaler Durchlauf lief bei mir zwischen 10-15 Minuten durch.
Wenn dies erfolgreich durchgelaufen ist, müsst ihr nur per "cd .." in das Elternverzeichnis wechseln und findet dann die .deb Pakete.
Mit dem Befehle "dpkg -i linux-image-2.6.38.2-2.6.38.2.deb" und dem entsprechenden Aufruf für das Header Paket, könnt ihr den neuen Kernel installieren.
Will man den Kernel wieder entfernen reicht es mit aptitude/apt-get oder direkt per dpkg die Pakete linux-image-2.6.38.2-2.6.38.2 und linux-header-2.6.38.2-2.6.38.2 zu löschen.
Wie man sehen kann wird der Kernel samt Komponenten wieder gelöscht.
Nun kommen wir zum zweiten und somit zum lagen weg.
Wenn die Konfigurationsdatei bereits angepasst ist, können wir direkt mit dem kompilieren beginnen.
Dazu nutzen wir den Befehl make.
Damit wir aber nicht ewig warten müssen, können wir den Vorgang parallelisieren.
Dazu dient ein einfaches make -j 4.
Die Option ähnelt der Option von make-kpkg.
Grund dafür ist eigentlich, dass make-kpkg auch nur make benutzt und somit die Option an den eigentlichen make Befehl weitergereicht wird.
Als Build Ziel, was man noch als letzten Parameter angeben muss, nutzen wir all.
Somit wird der Kernel und die Module kompiliert.
Der Befehl lautet dann nur "make -j 4 all".
Nun heißt es warten, da das kompilieren Zeit braucht.
Auch hier dauerte es bei mir 10-15 Minuten.
Nach dem kompilieren müssen wir den Kernel und die Module installieren.
Ebenfalls muss eine ramdisk für den Kernel angelegt werden und zusätzlich noch der Bootloader angepasst werden.
Entgegen der Vermutung brauchen wir dafür nur wenig Aufwand.
Die Installation erledigen wir mit "make install && make modules_install".
Damit wird der Kernel und die Module an die richtigen Stellen kopiert, was unnötige cp Aufrufe vermeidet.
Nach dem dieser Befehl durchgelaufen ist, erzeugen wir die Ramdisk.
Diese wird mit "update-initrd -c -k 2.6.38.2" erzeugt und unter /boot abgelegt.
Nun muss nur noch grub angepasst werden.
Dazu reicht ein einfaches update-grub und schon ist alles erledigt.
Will man den Kernel wieder entfernen, muss man hier erst einmal die Ramdisk korrekt entfernen.
Dazu muss man nur den Befehl "update-initrd -d -k 2.6.38.2" eingeben.
Dies entfernt die Ramdisk sauber.
Nun muss man nur noch unter /boot die restlichen Dateien entfernen und erneut "update-grub" ausführen.
Somit entfernt Grub die Menüeinträge und der Kernel ist sauber entfernt.
Insgesamt ist das Kernel kompilieren keine große Magie.
Es braucht lediglich etwas Zeit und ein paar Befehle.
Leider hat ein neuer Kernel aber nicht nur Vorteile.
Leider war die VirtualBox Version von Squeeze nicht mit dem neuen Kernel kompartibel, weshalb sich das Modul des Kernel Treibers für Virtualbox nicht übersetzen lies.
Somit lief Virtualbox zwar aber es lies sich keine VM ausführen.
Hier müsste man sich selbst die aktuelle Version von Virtualbox beziehen und installieren.
Da ich aber ein sauberes Debian bevorzuge, werde ich warten bis alles wichtige in testing ist und werde dann einfach umsteigen und parallel stable laufen lassen.
Ansonsten viel Spaß beim Kernel "backen" und verköstigen :)
Noch eine Woche bis Portal 2
Nach gut 4 Jahren können wir uns endlich über eine Fortsetzung des Puzzel Spiels freuen.
Valve veranstaltet dazu auch noch ein Alternate Reality Game(ARG) dazu.
Dafür wurden in einigen Spielen, die es auf Steam zu kaufen gibt, Hinweise versteckt und auch auf Youtube ein paar Videos hochgeladen von erfundenen Persönlichkeiten.
Dies zeigt mal wieder wie kreativ Valve ist und wie man die Community bei Laune halten kann.
Etwas ähnliches hatte Valve mit der Ankündigung von Portal 2 bereits gemacht.
Damals wurde in einem Update das Ende des Spiel geändert.
Zusätzlich wurde ein neues Archivment eingeführt bei dem man Radios finden sollte.
Diese empfingen ein Signal was sich später als Modem Signal entpuppte.
Die Signale wurden dann von einigen Community Mitgliedern entschlüsselt.
Dies ergab dann einige Bilder die später in einigen Artikeln bei Game Informer enthalten waren.
Insgesamt ist dies wirklich eine gelungene Umsetzung einer kleinen Schnitzeljagt nach Informationen.
Auch dieses ARG beobachte ich mit Interesse und sehe schon wie Valve wieder Kreativität zeigt.
Sei es nun ein versteckter Hinweis in den Spielen oder ein verstecktes Bild in letzten Trailer für die Turrets von Portal 2.
Ich freue mich bereits auf Portal 2 und werde es genießen.
Mein Bruder hat es sich auch gekauft, was bestimmt einigen Spaß im Coop bringen wird :)
Valve veranstaltet dazu auch noch ein Alternate Reality Game(ARG) dazu.
Dafür wurden in einigen Spielen, die es auf Steam zu kaufen gibt, Hinweise versteckt und auch auf Youtube ein paar Videos hochgeladen von erfundenen Persönlichkeiten.
Dies zeigt mal wieder wie kreativ Valve ist und wie man die Community bei Laune halten kann.
Etwas ähnliches hatte Valve mit der Ankündigung von Portal 2 bereits gemacht.
Damals wurde in einem Update das Ende des Spiel geändert.
Zusätzlich wurde ein neues Archivment eingeführt bei dem man Radios finden sollte.
Diese empfingen ein Signal was sich später als Modem Signal entpuppte.
Die Signale wurden dann von einigen Community Mitgliedern entschlüsselt.
Dies ergab dann einige Bilder die später in einigen Artikeln bei Game Informer enthalten waren.
Insgesamt ist dies wirklich eine gelungene Umsetzung einer kleinen Schnitzeljagt nach Informationen.
Auch dieses ARG beobachte ich mit Interesse und sehe schon wie Valve wieder Kreativität zeigt.
Sei es nun ein versteckter Hinweis in den Spielen oder ein verstecktes Bild in letzten Trailer für die Turrets von Portal 2.
Ich freue mich bereits auf Portal 2 und werde es genießen.
Mein Bruder hat es sich auch gekauft, was bestimmt einigen Spaß im Coop bringen wird :)
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.
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.
Windows 7 SP 1 erschienen
Auch wenn die Nachricht doch etwas spät kommt, möchte ich es doch nochmals schreiben.
Das SP1 für Windows 7 ist jetzt per Auto Update Funktion erhältlich.
Die Größe des Updates kann dabei zwischen 80 bis zu 800 MB liegen.
Bei heutigen Standard von 16 MBit/s kann dies trotzdem je nach Verfügbarkeit der Server doch schon eine Stunde dauern.
Insgeamt eine Patch Sammlung ansonsten aber läuft alles ohne Probleme und dank Service Packsogar noch sicherer.
Das SP1 für Windows 7 ist jetzt per Auto Update Funktion erhältlich.
Die Größe des Updates kann dabei zwischen 80 bis zu 800 MB liegen.
Bei heutigen Standard von 16 MBit/s kann dies trotzdem je nach Verfügbarkeit der Server doch schon eine Stunde dauern.
Insgeamt eine Patch Sammlung ansonsten aber läuft alles ohne Probleme und dank Service Packsogar noch sicherer.
Freitag, 18. März 2011
Defragmentierung
Da ich seit der Installation von Windows 7 auf meinem Desktop keine wirkliche Defragmentierung gemacht habe, nahm ich mir einfach mal am Wochenende die Zeit dafür.
Zwar lief über den Scheduler die Windows 7 Defragmentierung, diese ist aber bei weitem nicht so gründlich.
Mein C Laufwerk wies eine 30% Fragmentierung, was die Geschwindigkeit der Anmeldung erklären könnte.
Die ich bereits zu XP Zeiten ein paar Tools, Disk Defrag oder Defraggler, genutzt habe, habe ich beide installiert.
Beide laufen wirklich gut und konnten die Fragmentierung komplett beheben.
Ebenfalls die defrag.exe habe ich mir mal genauer angeschaut.
Diese wird von der grafischen Oberfläche, die seit der Installation lief, auch aufgerufen.
Per Default wird aber nicht eine komplette sondern nur eine teilweise Defragmentierung durchgeführt.
Leider ist dies auf Dauer, jetzt schon gut 2,5 Jahre, nicht ausreichend.
Damit eine Vollständige Defragmentierung durchgeführt werden kann, benötigt man den Parameter /W.
Somit lief schon einmal eine vollständige Defragmentierung.
Zwar lief über den Scheduler die Windows 7 Defragmentierung, diese ist aber bei weitem nicht so gründlich.
Mein C Laufwerk wies eine 30% Fragmentierung, was die Geschwindigkeit der Anmeldung erklären könnte.
Die ich bereits zu XP Zeiten ein paar Tools, Disk Defrag oder Defraggler, genutzt habe, habe ich beide installiert.
Beide laufen wirklich gut und konnten die Fragmentierung komplett beheben.
Ebenfalls die defrag.exe habe ich mir mal genauer angeschaut.
Diese wird von der grafischen Oberfläche, die seit der Installation lief, auch aufgerufen.
Per Default wird aber nicht eine komplette sondern nur eine teilweise Defragmentierung durchgeführt.
Leider ist dies auf Dauer, jetzt schon gut 2,5 Jahre, nicht ausreichend.
Damit eine Vollständige Defragmentierung durchgeführt werden kann, benötigt man den Parameter /W.
Somit lief schon einmal eine vollständige Defragmentierung.
Aufräumarbeiten bei jsync
Da ich bei jsync seit einiger Zeit eine gewisse Überladung der Optionen habe, habe ich damit begonnen dort mal aufzuräumen.
Einige Optionen sind bereits verschwunden.
Die Funktionalität dahinter ist entweder entfernt oder zum normalen Ablauf hinzugefügt worden.
Ebenfalls mache ich noch ein paar Optimierungen und versuche noch an der einen oder anderen Stelle zu optimieren.
In nächster Zeit werde ich dann wieder einen Release zusammen schnürren und nach einem ordentlichen Test freigeben.
Der letzte Release ist auch schon eine lange Zeit her, weshalb eine Aktualisierung und auch die Häufigkeit wirklich erhöht werden sollte.
Einige Optionen sind bereits verschwunden.
Die Funktionalität dahinter ist entweder entfernt oder zum normalen Ablauf hinzugefügt worden.
Ebenfalls mache ich noch ein paar Optimierungen und versuche noch an der einen oder anderen Stelle zu optimieren.
In nächster Zeit werde ich dann wieder einen Release zusammen schnürren und nach einem ordentlichen Test freigeben.
Der letzte Release ist auch schon eine lange Zeit her, weshalb eine Aktualisierung und auch die Häufigkeit wirklich erhöht werden sollte.
Mein erstes Smartphone
Da ich beruflich langsam mal ein Handy benötigt habe, habe ich mir am Montag mal das neue Google Smartphone Nexus S von Samsung bestellt.
Da ich auch noch einen 20€ Gutschein für Amazon von meinem Geburtstag hatte, Geschenk vom Chef, konte ich mir die Gelegenheit nicht nehmen lassen.
Für 489€ konnte ich das besagte Smartphone einkaufen.
Bisher bin ich vollkommen zu frieden und würde es gegen kein anderes Smartphone tauschen wollen.
Es macht wirklich Spaß.
Wer auf den Datenschutz achtet und die böse Datenkrake Google deshalb meidet, macht hier einen Fehler.
Android bietet wirklich viele Optionen um z.B. die aktuelle Position des Gerätes nicht weiterzuleiten.
Auch die Grundausstattung ist schon sehr gut.
Eine App für Notizen fehlte zwar, konnte aber gratis im Market runter geladen werden.
Ich werde am Wochenende noch mal schauen ob sich nicht noch die ein oder andere App finden lässt.
Ansonsten 1+ für das Nexus S.
Es liegt gut in der Hand und hat auch eine gute Laufzeit, wenn man den Bildschirm auch abschaltet.
Nach einem Tag dauerverbidung mit dem Funknetz war ich bei 76% Akkuladung was doch recht gut ist.
An sich also ein tolles Gerät.
Und da es ein reines Android ist, bekomme ich auch die Updates mit etwas Glück durch den Provider schneller :)
Da ich auch noch einen 20€ Gutschein für Amazon von meinem Geburtstag hatte, Geschenk vom Chef, konte ich mir die Gelegenheit nicht nehmen lassen.
Für 489€ konnte ich das besagte Smartphone einkaufen.
Bisher bin ich vollkommen zu frieden und würde es gegen kein anderes Smartphone tauschen wollen.
Es macht wirklich Spaß.
Wer auf den Datenschutz achtet und die böse Datenkrake Google deshalb meidet, macht hier einen Fehler.
Android bietet wirklich viele Optionen um z.B. die aktuelle Position des Gerätes nicht weiterzuleiten.
Auch die Grundausstattung ist schon sehr gut.
Eine App für Notizen fehlte zwar, konnte aber gratis im Market runter geladen werden.
Ich werde am Wochenende noch mal schauen ob sich nicht noch die ein oder andere App finden lässt.
Ansonsten 1+ für das Nexus S.
Es liegt gut in der Hand und hat auch eine gute Laufzeit, wenn man den Bildschirm auch abschaltet.
Nach einem Tag dauerverbidung mit dem Funknetz war ich bei 76% Akkuladung was doch recht gut ist.
An sich also ein tolles Gerät.
Und da es ein reines Android ist, bekomme ich auch die Updates mit etwas Glück durch den Provider schneller :)
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.
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.
Labels:
Entwicklung,
Free Software,
Java,
Open Source
Samstag, 12. Februar 2011
Mal wieder Met
Nachdem ich zu Silvester ein paar Falschen Met verköstigt hatte, habe ich mir letzten Sonntag wieder ein paar Flaschen bei Met-Lager.de bestellt.
Dort gab es leider ein Problem mit dem Versand, da der Betreiber leider krank war und sein Ersatz in einer OP war.
Deshalb musste ich die Bestellung stornieren.
Mit der zweiten und nun auch erfolgreichen Bestellung komme ich wieder in den Genuss einiger leckerer Sorten Met.
Als kleines Präsent des Betreibers gab es sogar einen kleinen Ton Trinkbecher.
Wer also mal Honigwein trinken möchte und gerne mal 5 Tage warten kann, Bezahlung per Vorkasse dauert leider bis zu 3 Tagen, kann sich auf jeden Fall auf eine gute Auswahl freuen.
Dort gab es leider ein Problem mit dem Versand, da der Betreiber leider krank war und sein Ersatz in einer OP war.
Deshalb musste ich die Bestellung stornieren.
Mit der zweiten und nun auch erfolgreichen Bestellung komme ich wieder in den Genuss einiger leckerer Sorten Met.
Als kleines Präsent des Betreibers gab es sogar einen kleinen Ton Trinkbecher.
Wer also mal Honigwein trinken möchte und gerne mal 5 Tage warten kann, Bezahlung per Vorkasse dauert leider bis zu 3 Tagen, kann sich auf jeden Fall auf eine gute Auswahl freuen.
Debian Squeeze Released
Eigentlich ist dies schon eine Woche überfällig aber trotzdem auch die News von mir.
Debian 6.0 Codename Squeeze wurde am Sonntag dem 6. Februar endlich released.
Ich habe Squeeze bereits seit einigen Monaten ohne Probleme im Einsatz gehabt.
Squeeze enthält, wie es von Debian nun einmal bekannt ist, Software die bereits etwas älter ist aber dafür auch eine lange Testphase hatte.
Als Kernel kommt 2.6.32.5 mit USB 3.0 Support daher was ich bei Zeiten mal testen werden :)
Mein Vater nutzt seit einigen Monaten auch Debian für seine gewerbliche Arbeit als Händler und konnte sich bis auf ein paar Probleme mit dem Drucker, der zusätzliche Treiber benötigte, nicht sonderlich beschweren.
Mal schauen ob er es noch in ein paar Jahren nutzt :)
Debian 6.0 Codename Squeeze wurde am Sonntag dem 6. Februar endlich released.
Ich habe Squeeze bereits seit einigen Monaten ohne Probleme im Einsatz gehabt.
Squeeze enthält, wie es von Debian nun einmal bekannt ist, Software die bereits etwas älter ist aber dafür auch eine lange Testphase hatte.
Als Kernel kommt 2.6.32.5 mit USB 3.0 Support daher was ich bei Zeiten mal testen werden :)
Mein Vater nutzt seit einigen Monaten auch Debian für seine gewerbliche Arbeit als Händler und konnte sich bis auf ein paar Probleme mit dem Drucker, der zusätzliche Treiber benötigte, nicht sonderlich beschweren.
Mal schauen ob er es noch in ein paar Jahren nutzt :)
Dienstag, 11. Januar 2011
Kleine Neuigkeiten am Abend
Mal wieder ein kleiner Zwischenstand der Dinge.
Aktuell ist bei jsync fast nichts los.
Liegt etwas daran, dass ich aktuell nach den Feiertagen mal wieder etwas Freizeit nutzen möchte und nicht nur rund um die Uhr Software entwickeln will.
Neben bei mache ich noch ein paar Erfahrungen mit dem Thema RAID.
Ein kleines Raid lässt sich mit Linux und mdadm recht einfach einrichten.
Mit den richtigen Platten kann man da schon was machen.
In meinem Dekstop mit Debian Squeeze komme ich mit einem RAID 0 mit 2 Caviar Blue Platten von WD auf eine Lesegeschwindigkeit von stolzen 250 MB als Spitze.
Da spart man sich doch gerne mal das Geld für eine 150€ SSD und nimmt lieber 2-3 HDDs und bündelt daraus ein kleines RAID 0.
Dann kommt man an die Geschwidnigkeit einer guten SSD ran und hat zusätzlich noch eine größere Kapazität.
Natürlich hat man mit einem RAID 0 einige Nachteile, aber dies sollte klar sein.
Leider eigenen sich Platten von der Caviar Green Serie nicht so ganz.
Die Spitze beträgt beim lesen zwar auch schon bis zu 150 MB aber selbst beim kopieren von Daten zwischen 2 RAID 0 mit cp/jsync komme ich gerade mal auf 80-100 MB.
Fern ab von Linux habe ich aber wieder meine Nostalgie für die 90er Jahre entdeckt.
Man mag es kaum glauben aber zu dieser Zeit war ich noch ein Kind :)
Und damals war einiges besser als Heute.
Nicht wegen der Schule, die kann ich heute noch genauso wenig wie früher leiden, sondern wegen den guten alten Filmen, der Musik und den Spaß :)
Da wäre man gerne wieder in den alten Tagen.
Aktuell ist bei jsync fast nichts los.
Liegt etwas daran, dass ich aktuell nach den Feiertagen mal wieder etwas Freizeit nutzen möchte und nicht nur rund um die Uhr Software entwickeln will.
Neben bei mache ich noch ein paar Erfahrungen mit dem Thema RAID.
Ein kleines Raid lässt sich mit Linux und mdadm recht einfach einrichten.
Mit den richtigen Platten kann man da schon was machen.
In meinem Dekstop mit Debian Squeeze komme ich mit einem RAID 0 mit 2 Caviar Blue Platten von WD auf eine Lesegeschwindigkeit von stolzen 250 MB als Spitze.
Da spart man sich doch gerne mal das Geld für eine 150€ SSD und nimmt lieber 2-3 HDDs und bündelt daraus ein kleines RAID 0.
Dann kommt man an die Geschwidnigkeit einer guten SSD ran und hat zusätzlich noch eine größere Kapazität.
Natürlich hat man mit einem RAID 0 einige Nachteile, aber dies sollte klar sein.
Leider eigenen sich Platten von der Caviar Green Serie nicht so ganz.
Die Spitze beträgt beim lesen zwar auch schon bis zu 150 MB aber selbst beim kopieren von Daten zwischen 2 RAID 0 mit cp/jsync komme ich gerade mal auf 80-100 MB.
Fern ab von Linux habe ich aber wieder meine Nostalgie für die 90er Jahre entdeckt.
Man mag es kaum glauben aber zu dieser Zeit war ich noch ein Kind :)
Und damals war einiges besser als Heute.
Nicht wegen der Schule, die kann ich heute noch genauso wenig wie früher leiden, sondern wegen den guten alten Filmen, der Musik und den Spaß :)
Da wäre man gerne wieder in den alten Tagen.
Abonnieren
Posts (Atom)