Samstag, 15. November 2014

[.NET] Microsoft geht mit .NET in Open Source Offensive

In der letzten Woche ist etwas passiert was ich nie erwartet hätte.
Microsoft will das .NET Framework komplett Open Source legen.
Dies heißt also, dass es möglich wird bei entsprechender Lizenz das Framework auf allmögliche Systeme zu portieren.

Bisher gab es nur zwei Möglichkeiten.
Entweder unter Windows direkt auf das .NET Framework setzen.
Oder unter anderen Systemen wie Linux oder MacOS auf Mono als .NET Implementierung für Linux zu setzen.
Da es bei Mono bisher nur eine Zusage von Microsoft gab, dass man Mono nicht juristisch belangen wollte, haben die meisten Linux Entwickler/Nutzer von Mono abstand gehalten.
Meine Erfahrungen mit Mono liegen zwar schon einige Jahre zurück, aber damals konnte ich ohne Probleme einfache C# Konsolen Anwendungen programmieren, kompilieren und auch ausführen.

Da .NET bei Windows Bestandteil des Systems ist, muss man bei Linux eben das Programm mono wie bei Java Anwendungen aufrufen um die Laufzeitumgebung zu starten.
Bei Windows wird dies natürlich vom System direkt erkannt.
Dies wäre noch ein tolles Mittel um die Linux Puristen zu verwirren. :)

Ansonsten freut mich der Schritt schon sehr.
Bisher habe ich Projekte, die eben Platformübergreifend sollten, in Java entwicklet.
Dies ist aber manchmal doch umständlicher als nötig.
Wer einmal mit C# entwickelt hat, wird nie wieder ohne auto Properties arbeiten wollen.
Auch einige semantischen Lösungen wie using für Disposable Implementierungen sind in Java nur mit dem seit Java 7 bekannten Try Block umsetzenbar.

Bei Java muss man immer noch die Properties einer Klasse umständlich ausschreiben.
Hier hat C# mit get/set den saubereren Weg.

Entsprechend werde ich meine zukünftigen Projekte mit Mono auch für Linux umsetzen.
Meine bestehenden Projekte, sind auch schon einige Jahre alt, werde ich aber nicht mehr rüber portieren.

Ansonsten freue ich mich riesig.
Mal schauen wie der geplante Merge zwischen Mono und .NET ablaufen wird.
Vielleicht werden einige Lösungen von Mono bei .NET eingepflegt.
Lassen wir uns mal überraschen.

[Datenbanken] Neuigkeiten und Aussichten

Da wir bei uns im Büro mal wieder Nominatim von OpenStreetMaps aufsetzen müssen, Update des Server ist wegen fehlendem Speicherplatz nicht möglich, hatte ich mich mal wieder etwas näher mit Nominatim sowie der verwendeten Datenbank PostgreSQL beschäftigt.

PostgreSQL ist für mich aktuell das bessere MySQL.
Seit der Übernahme von MySQL hat Oracle angefangen MySQLs Entwicklungsprozess intransparenter zu gestalten.
Das Problem hier ist, dass einige wichtige Tests von Oracle nicht mehr in den Entwicklungszweig von MySQL eingepflegt werden was die QS natürlich erschwert.
Aussicht von Oracle ist natürlich klar warum man das macht.
Gerade Oracle hat mit seiner eigenen kommerzielle DB einen großen Konkurrenten mit MySQL nun im Haus.
Und gerade hier versucht man natürlich auch die kostenlose Alternative nur noch teuer gegen Geld anzubieten.
Deshalb sollte man sich gut überlegen ob man noch auf MySQL setzen möchte.
Früher oder später dürfte auch MySQL verschwinden.

Einen Fork mit dem Namen "MariaDB" gibt es schon seit einige Jahren, der dieses Problem lösen möchte.
Ebenfalls bietet er Features die die freie MySQL Variante nicht besitzt.
Es wurden auch viele Optimierungen und Verbesserungen sowie neue Tabellen Engines hinzugefügt.
Dies spricht also sehr für MariaDB und gegen MySQL.
Lediglich die Popularität von MySQL dürfte noch einige Jahre dafür sorgen, dass MySQL bevorzugt wird.

Aktuell liebäugle ich ja mit PostgreSQL.
Dabei handelt es sich ähnlich wie bei MySQL und MariaDB um eine recht freie Datenbank.
Diese befindest sich aktuell noch in der Version 9.3
Version 9.4 ist bereits im Betastadium und dürfte in den nächen 1-2 Monaten auch soweit sein.

Zwar fehlen noch die ein oder anderen Möglichkeiten bei PostgreSQL aber insgesamt ist die aktuelle Version schon von Features her genauso gut wie MySQL, MariaDB oder sogar kommerzielle Datenbanken.

PostgreSQL zeichnet sich durch gute erweiterbarkeit aus.
Man kann in eigene Funktionen sowie Datentypen in PostgreSQL einpflegen.
Projekte wie Nominatim wäre mit MySQL oder anderen Datenbanken nicht so einfach und eben frei umsetzbar.
Durch die Extensions kann PostgreSQL mit PostGIS ebend auch mit Geopositionen(Latitude/Longitude) arbeiten und rechnen.

Diese Features machen PostgreSQL für mich interessant.
Aktuell habe ich mir auch einige Bücher zu PostgreSQL besorgt.
Ebenfalls habe ich mir auch mal das Buch "SQL Performance Explained" gekauft.

In den PostgreSQL Bücher geht es um alle möglichen Themenbereiche.
Von der Installation, Kompilation sowie der Konfiguration der Instanzen bis hier zur Absicherund und auch Datensicherung.

Das letzte Buch behandelt im groben die Verwendung von Indizies.
Auch geht sie, ausgehend von Oracle Datenbanken aber auch gültig für andere Datenbanken, in die internen Verarbeitungen der Datenbanken Indizies ein.
Somit kann man auch besser verstehen wie und warum einige Abfragen mit Indizies mal gut und mal schlecht laufen.
Das Buch fängt aber schon sehr technisch an.
Man sollte sich mit Binären Bäumen und auch den Baum Strukturen auskennen.
Dies macht sich schon im ersten Kapitel bezahlt.

Insgesamt haben sich die Bücher schon gut bezahlt gemacht, da ich nun auch weiß wie ich aus der Default Config, die Debian verwendet, noch mehr Performance rausholen kann.
Ich bin nur verwundert warum gerade für Datenbankserver wie PostgreSQL so geringe Datenbank Einstellungen verwendet werden.
Hier kann die DB nicht mal im Ansatz ihre Stärken ausspielen.
Auf der anderen Seite muss sich dann aber der Administrator auch mal mit dem System auseinander setzen.
Dies ist gerade in der heutigen Zeit doch zu begrüßen.

Mal wieder was neues


Nach nun mehr als einem Jahr, möchte ich mal wieder den aktuellen Stand bekannt geben.

Seit dem letzten Eintrag vom Mai 2013 ist einiges passiert.
Seit letztem Jahr wohne ich nun in der Stadt Northeim.
Ich bin also bei meinen Eltern ausgezogen um nun das Leben auf eigenen Beinen zu bestehen.

Natürlich war es am Anfang noch recht ungewohnt und es dauerte auch eine gewisse Zeit bis man sich an die neuen Umstände gewöhnt hat.
Der Umzug sowie die Neuanschaffungen waren auch sehr kosten intensiv.
Dadurch konnte ich aber eine gute 69m² Wohnung einrichten.

Beruflich machte mich dies auch unabhängig von einem Fahrzeug, da ich jeden Tag nur 10-12 Min. Arbeitsweg zu Fuß habe.
Dies spart mir auch unnötige Kosten für Fahrzeug Wartung und Sprit.

Beruflich hat sich auch einiges getan.
Einige alte Kollegen haben uns verlassen, kurzeitig neue Kollegen kamen und gingen auch schon wieder.
Unsere letzten Auszubildenen haben alle ihre Prüfungen erfolgreich abgeschlossen und wurde fast alle übernommen.

Ansonsten läuft es beruflich aktuell ganz gut.
Unsere Projekte laufen aktuell ganz gut und fast ohne Stress.
Entsprechend kann man sich also schon langsam auf das Jahresende freuen.
Dieses Jahr werde ich mal 3,5 Wochen Urlaub machen.
Da es im April wegen einigen Problemen mit dem Urlaub nicht ganz geklappt hat und ich noch einige Tage über habe, mache ich dann mal richtigen Urlaub.

Weihnachten wird dann wieder im familiären Kreis gefeiert :)
Also Eltern und Bruder besuchen und mal wieder plauschen.

Aktuell schaue ich mal wieder dem nächsten Debian Release entgegen.
Debian Jessie ist aktuell wieder im Freeze und es wird erwartet, dass im Frühjar schon der Release ist.
  
Mich besorgt dabei aber die ganze Aufregung um systemd bei Debian.
Auch wenn ich diese gut nachvollziehen kann, so kann ich aus technischer Sicht nicht groß gegen systemd sprechen.
Gerade wenn es einige Baustellen, die Linux schon seit Jahren sorgen und alle durch Einzellösungen nur umgangen haben, dann sollte man systemd nicht ganz verteufeln oder verachten.

Einige Debianer gehen sogar soweit, dass sie wegen systemd Debian den Rücken kehren.
Dies kann ich gut nachvollziehen.
Gerade Debian möchte als universelles Betriebssystem auch alle möglichen Konstellationen versorgen.
Durch systemd, dass nun mal eine reine Linux Lösung ist, kann dies aber nicht mehr gewährleistet werden.
Ich hoffe ja, dass man Jessie deswegen nicht verschiebt aber dafür entweder als ein Point Release einen portablen Init Dienst nachschiebt oder eben erst im Jessie Nachfolger eine bessere Lösung anstrebt.

Desweiteren habe ich mir einige Skripte gebastelt um mit Default Configs, ja ich weiß das dies keine Kunst ist, Kernel von Kernel.org zu kompilieren.
Diese ziehen quasi die Kernel, entpacken diese, kompilieren und installieren diese.
Das zweite Skript entfernt diese auch wieder sauber.
Ich muss mir mal die Zeit nehmen um die Skripte zusammen zu legen und per Parameter entweder die Installation oder eben die Entfernung der Kernel zu übernehmen.
Seit Debian Wheezy kümmert sich auch Grub um das updaten der initrd, was das Skript auch etwas verkürzt hat.


So das war erst einmal die Zusammenfassung der letzten Zeit.
Ich werde in den nächsten Wochen mal wieder etwas mehr bloggen.
Genug Themen habe ich aktuell auf Lager.

Bis dahin viel Spaß und viel Erfolg.