Tag 1 Es ging mit dem Nachtzug von Wien nach Rom. Ich habe in einem 4rer Liegeabteil geschlafen – 89 EUR Sparschiene – war sehr ruhig in der Nacht – daher konnte ich schlafen – war ok. Die meisten Leute stiegen schon vorher aus. Auf der Reise nach Rom haben wir dann mehr als 1 Stunde Verspätung aufgerissen – daher musste ich dann den langsamen Zug nach Salerno neben – dafür hab ich aber sehr viel Geld gespart (29,90 EUR statt 40 EUR+ mit dem Frecciabianca).
Im Laufe meiner Arbeitskarriere bin ich immer wieder auf 1 Problem gestoßen: Komponente A hat einen State, andem andere Komponenten interessiert sind. Ich hab schon die unterschiedlichsten Lösungen gesehen:
DataTables mit RowChanged und anschließend über .NET Remoting Events raus WCF Events .NET Sync-Framework Auch habe ich im Laufe meiner Arbeitskarriere immer wieder die gleichen Probleme gesehen:
Bug gemeldet: State in Komponenten X passt nicht: erwartet wurde State 1 - aber State ist 2. Wie kam es zu State 2? Was waren die vorhergehenden States? Als Entwickler kann man jetzt die Log durchforsten und sich die Stimuli von Komponenten X “raussuchen” und hoffen, dass man es irgendwie nachstellen kann. Aber im Regelfall kann man nur mit der Schulter zucken - vermutlich Events durcheinander gekommen. Bug gemeldet: “komisches Verhalten” - es scheinen Events zu fehlen. Das durchschauen der Logs lenkt den Verdacht auf Verbindungsverluste / Service-Neustarts / … Das System steht: Self-Denial Attacks [1] ist der Klassiker. Eine Zentrale Komponente, bei der sich andere Komponenten registrieren. Startet diese neu, kommt es meist zu einem Neu-Subscriben - oft umgesetzt mit Snapshot-Delta Strategie. Das belastest dieses zentrale Komponente enorm. Ab und zu ist der Betreuer des Systems dazu gezwungen, Services manuell “langsam” zu starten, damit die zentrale Komponenten nicht “versagt”. Ich hab daraus drei Dinge gelernt:
Begonnen hat alles, dass bei uns zu Haus oft MotoGP lief. Mir gefiel es auch viel besser als Formel1 – hab einige Saisonen jedes Rennen geschaut. Dann kam die HTL-Zeit (Wirtschaft-Maschinenbau) und eine gewisse Grundinteresse an Mechanik und Co begann. Dazu kam, dass ich ja bei HONDA Hütter jeden Tag vorbei ging. Irgendwann habe ich mich dann dazu überwunden, 2 HONDA T-Shirts zu kaufen – das Geld – aber auch die Eier – haben für ein Motorrad immer gefehlt. Wenngleich ich mit den 250er immer geliebäugelt hab – doch dann kam das Studium und dann haben sich die Prioritäten verschoben.
Versuch 1: 400er MHz – die alte, billige – aber unflexible Lösung Schon ab ca. 20 EUR findet man Funksteckdosen, welche auf einer 400 MHz Frequenz mit einer Fernbedienung geschalten werden können. Man kann die Dosen ein- und ausschalten – das wars. Auch gibt es keine weiteren Aktoren, um z.B. eine „normale“ Deckenlampe zu steuern.
Versuch 2: Real Smart-Home für Nachrüster – ZigBee, Z-Wave und EnOcean Schnell stößt man auf diese 3 größeren Standards. Man kann Stunden damit verbringen, sich über google schlau zu machen. Was ich herausgefunden habe: Es ist teilweise eine Kompromisslösung. Man würde denken, wenn zwei Geräte über ein standardisiertes Protokoll kommunizieren, müsste es immer funktionieren. Denkste. Einmal findet das Geräte das nicht, dann kann das Gerät mit dem Profil von dem Gerät wieder nicht umgehen. Dann kauft man ein Gateway um 100 EUR+ und ist auf Entwickler des Herstellers angewiesen, dass diese das Gerät „anlernen“. Kurz meine Findings:
Weihnachtszeit und etwas Zeit sich irgendwas anschauen – da muss auch ein wenig Platz für Entwicklung sein. Diesmal: Wie könnte man einen Teil eines Actor Frameworks im C# Style mit möglichst wenig Aufwand schreiben? Es gibt nichts schlimmeres im Code als ein Threading Massaker. An 1000 Stellen Thread.Run oder new Thread – da läufts jedem Entwickler kalt den Rücken runter, wenn der nächste Bug in Jira anflattert und nur ein Hauch von Race-Condition Problemen aus der Beschreibung herauszulesen ist („Nicht mehr reproduzierbar“, „passiert nur manchmal“ usw.).
Es ging Mitte September nach Madeira. Betrachtet man das Klima, so stellt man fest, dass September der heißeste Monat ist. Auch auf Nachfrage bei Einheimischen wurde das bestätigt – die Sommermonate Juni und Juli waren feucht und neblig – also ideal. Wir hatten immer schönstes Wetter. Das Buch von Rother kann ich uneingeschränkt empfehlen.
Tag 1 Wien – München – Funchal mit Lufthansa. Vor dem Hinflug hatte ich großen Respekt, da der Flughafen von Funschal als einer der schwierigsten gilt. Doch wird hatten mit dem Wind Glück und die Landung war sehr angenehm. Der Flughafen liegt an der Ostküste in Santa-Cruz. Mit dem Taxi (12 EUR) ging es nach Machico – geschlafen haben wir im Dom Pedro – war ok.
Die Anreise von Wien nach Schladming ist langatmig. Geschlafen haben wir hier – kann ich nur empfehlen – fairer Preis und gute Lage. Außerdem bietet das Quartier die Sommer-Card an – damit gibt es viele Vergünstigungen – die Busfahrten sind sogar gratis. Mit dem Bus ging es am nächsten Tag in die Ramsau – Endstation Gletscherbahn. In 45 Minuten gelangt man zur Südwandhütte. Zimmer waren ok, Aussicht unbezahlbar und das Essen hervorragend. Am nächsten Tag geht es im 30 Minuten zum Einstieg des Anna-Steigs.
Mit dem Zug ging es nach Vierschach (über Lienz - wobei Wien - Lienz eine Direktverbindung). Geschlafen haben wir hier - Zimmer waren sehr gut und preislich ok. Am nächsten Tag ging es mit der Bahn rauf auf den Helm - Bahn startet bei 1132 Hm und endet bei 2050 Hm - also doch einiges.
Weiter geht es über einen sehr schönen Weg zur Sillianer Hütte. Die Hütte wurde gerade umgebaut - schlafen war daher nicht möglich. Allerdings gab es Essen. Der Wirt meinte, dass es sich bis zur nächsten Hütte noch ausgehen sollte - es war Gewitter am Nachmittag angesagt.
Erste Station RabbitMQ RabbitMQ ist ein etablierter Message Broker, welcher in Erlang geschrieben ist. Erlang ist für hoch parallele Applikationen interessant, da es jeden Core der CPU mehr als gut ausnutzen kann (1 Thread pro Core – Erlang Prozesse kann man Millionen machen – siehe Actor Modell). Wie funktioniert RabbitMQ?
Quelle: https://www.cloudamqp.com
Dieses Bild zeigt die Funktionsweise:
Eine Nachricht wird an einen Exchange geschickt. Anhand von konfigurierten Bindings wird die Nachricht an eine Queue weitergeleitet:
Tag 1 Es geht mit dem Nachtzug (NJ1237) nach Livorno Centrale. Diese Linie verkehrt nicht das ganze Jahr, sondern erst ab April. Der Preis pro Person und Richtung war 69 EUR für einen 4rer Liegewagen.
Tag 2 Livorno war von der Stadt jetzt nicht so berauschend (zumindest den Teil den wir gesehen haben). Der Hafen wirkte sehr “industriell” und das restliche Stadtbild machte auch den Eindruck einer Arbeiterstadt. Mit dem Zug geht es dann weiter direkt nach Piombino (ca. 1.5h). Es gibt zwei Möglichkeiten um nach Elba zu kommen: Mit einem großen Schiff (Autotransport möglich) und mit dem Highspeed Boot (20 Minuten Überfahrt). Informationen gibt’s hier. Kosten: 13 EUR