Archiv der Kategorie: Allgemein

Asychrones Nerdfutter

Ich weiß ja, dass einige Nutzer über Suchbegriffe zu meiner Seite finden, die sehr IT-lastig sind. Meine kleinen Notizen und Code-Beispiele sollen Menschen helfen, deren Lage ähnlich die der meinen ist. Ich suche oft nach Lösungen zu bestimmten Problemen und finde sie oft nicht – weil ich dann vielleicht doch zu praktisch veranlagt bin und mir die fehlende Theorie über konkrete Beispiele aneigne.

Nachfolgender Code-Schnipsel ist das Ergebnis einer langen Problemsuche, bei der ich sogar die Netzwerkfachleute bei meinem Kunden aufgescheucht habe. Ich hatte wirklich geglaubt, dass der Fehler dort irgendwie im Netzwerk zu finden ist – aber das war, Stand heute, wohl doch nicht der Fall. Lösung des Problems war eine Kleinigkeit – aber die muß man erstmal wissen.

Wenn man eine Web-Applikation baut und diese mit einer Datenbank verbindet, dann findet zwischen dem Client und dem Server eine besondere Interaktion statt. Da auf der Clientseite niemals Datenbankanweisungen als Klartext sichtbar sein dürfen – jeder Browser kann den Quelltext einer jeden Seite anzeigen – müssen die serverseitigen Anweisungen auf dem Server erfolgen. Die Programmiersprache hierfür ist PHP.

Aber der Nutzer der Seite interagiert mit der Applikation auf der Clientseite. In dem er z.B. ein Passwort eingibt. Das erfolgt dann vermutlich über Javascript und mit einem der passenden Frameworks. D.h. diese Eingabe muss auf dem Server landen, also vom Client (Javascript) an den Server (PHP) übergeben werden. Diesen Mechansimus nennt man AJAX (Asynchronous JavaScript and XML) . Das A steht also für asynchron, d.h. die Auswertung auf dem Server ist dem Input nachgelagert und muss erst ein Feedback zurückgeben.

Ich bin da in eine böse Falle getappt, denn es gibt einen großen Unterschied bei diesem Feedback des Servers zwischen zwei Stati: complete und success. Das war mir nicht bekannt. Und wer oberflächlich nach Lösungen zu ähnlichen Problemen sucht, wird diesen Zusammenhang vielleicht auch erst viel zu spät begreifen. Vermutlich liegt das daran, dass AJAX Requests eher selten für das Erzeugen einer Datei verwendet werden.

Der AJAX Request gibt das Feedback success wenn er erfolgreich abgearbeitet wurde. Das Feedback complete wird ausgelöst, wenn das Ergebnis des Requests vorliegt und ist unabhängig von success (kann also auch bei einem Fehler ausgelöst sein, wenn ein Ergebnis nur teilweise vorliegt).

Konkretes Beispiel: Ich wollte anhand von zwei Clientseitigen Parametern (z.B. zwei Userangaben) das Erzeugen einer Datei auf dem Server auslösen und diese Datei dann als Input in meiner Applikation nutzen. Da ich bisher nur das Feedback success kannte und mich mit complete nie beschäftigt habe, fand diese Einbindung immer bei dem success Feedback statt. Das ist aber falsch, denn success bedeutet, die Dateierzeugung wurde erfolgreich initiiert (damit ist der AJAX Request erfolgreich abgeschlossen). Fertig ist der Request aber erst mit der vollständigen Datei und dem complete Feedback.

Ich habe also die ganze Zeit herumgerätselt, warum ich meine Datei manchmal nicht in mein Programm einbinden konnte. Da wir hier im Milisekundenbereich sind kam es ab und an vor, dass die Datei mit dem success Feedback schon vorlag und alles war OK – manchmal aber auch nicht. Die Einbindung muss also mit dem complete Feedback des AJAX Requests verbunden sein – nicht mit success. So erklärt sich der zunächst naheliegende Gedanke, dass im Netzwerk ein Problem vorliegt, welches die Datei blockiert. Naheliegend, aber falsch.

So sieht das konkret aus:

Dumm, wenn einem Nerd der Unterschied zwischen success und complete nicht geläufig ist …

coveroverkill -3

Aus aktuellem Anlass muss ich den Spieß umdrehen. Diesmal geht es nicht um eine Coverversion eines Depeche Mode Songs, sondern um die Coverversion von Depeche Mode zu anderen Künstlern.

Auf der letzten Tournee gehörte ein tolles Cover von „Heroes“ als Anerkennung von David Bowie zum Programm. Bowie hatte einen enormen EInfluss auf Depeche Mode, insbesondere auf den Sänger Dave Gahan.

30 Jahre ist jetzt der Release des Black Albums von Metallica her. Am Freitag wurde eine remasterte Deluxe-Version des Album veröffentlicht. Neben vielen Live- und Demoversionen, die die Entwicklung der Songs illustrieren, gibt es auch Tribute Versionen von anderen Künstlern als Verbeugung vor Metallica.

Dave Gahan von Depeche Mode hat seinen Beitrag dazu geleistet und den Klassiker „Nothing Else Matters“ interpretiert.

Emacs – Die ersten Hürden (Tutorial 1)

Es ist mal wieder Zeit für neues Futter für die Nerds unter meiner Leserschaft 🙂

Vielleicht geht es nur mir so, aber in Zeiten, in denen eine schleichende Verdummung durch medialen Overkill mit Alterweisheit und langsam nachlassender Jugend einhergeht, da möchte man vieles einfacher gestalten. Und trotzdem auf nichts verzichten. Ich bin jetzt nicht einem bratzenhaften Minimalismus verfallen, suche aber nach Methoden, die – wenn sie einmal eingerichtet sind – den Nerdalltag vereinfachen.

Ganz konkret: wie kann ich auf einem S7+ von Samsung (Andoid Tablet mit 12″ Display) eine Nutzerumgebung einrichten, mit der ich auch Webentwicklung (wie CONSILIUM) bequem von überall aus gestalten und überwachen kann? Nicht nur für zwischendruch, sondern so, dass mir alle Möglichkeiten offenstehen. Nie wieder einen Laptop mitschleppen – Tablet einschalten, über Tethering auf dem Smartphone ins Netz und loslegen.

Eine Entwicklungsumgebung wie PHPStorm gibt es nicht für Android. Schade. Gibt es Online IDEs, die sich nutzen lassen? Ja, aber CLOUD9 von Amazon erlaubt mir keine Installation ohne node.js. Und sowas wie codeanywhere.com ist nett. Aber, da kann ich auch gleich einen einfachen Editor nutzen. Und dann kommt man an den Punkt, an dem ich schon so oft war und den ich wegen einer zu steilen Lernkurve immer aufgegeben habe. Der wohl kompletteste Editor für alle Belange von Softwareentwicklung ist „emacs“, ein Dinosaurier, unglaublich umfangreich, gemacht bereits zu Zeiten, als es noch keine Maus gab – wir brauchen also noch nicht einmal eine grafische Oberfläche. Back to the roots bedeutet hier in diesem Fall ein Gewinn an Produktivität.

Emacs in action
Sieht aus wie ein lokales Programm – ist aber keines

Wenn ich mich für so etwas einscheide und mir doch die Fähigkeiten aneigne, die ich für die Nutzung von emacs brauche – wIe kann ich dann auf meinem Windows Desktop und einem Android Tablet die gleichen Bedingungen schaffen ohne zwei Umgebungen verwalten zu müssen? In dem ich einen kleinen Server miete, für 1,- EUR im Monat, dort ein minimales Debian Linux laufen lasse und emacs installiere. Diesen steuere ich auf dem Desktop und dem Tablet über einen Telnet bzw. ssh Client an und habe überall die gleichen Bedingungen. Selbst wenn mein Rechner in Flammen aufgeht und mir die Bude abbrennt – alles liegt auf meinem eigenen Server.

Ein sehr durchdachtes Farbschema für emacs habe ich hier gefunden. Protesilaos Stavrou, so heisst der Macher dieser Farbschema, hat außerdem noch viele brauchbare Videos und Blogeinträge zum Umgang mit emacs erstellt.

Und jetzt „übe“ ich diese Tastaturkürzel, die tatsächlich sehr durchdacht sind. Für alle, die ebenfalls nach so einem Einstieg suchen, ist diese Liste vielleicht hilfreich.

--- emacs : Tastaturkürzel für Windows-User ---

Vorbemerkungen
Mit C ist bei emacs und allen Dokumenten/Handbüchern/Tutorials immer die STRG bzw. CTRL Taste gemeint. M ist ALT. Wird als Tastenkombination z.B. C-x C-f angegeben, muss nacheinander STRF+x und dan STRG+f + ENTER eingegeben werden. Manchmal folgt dann noch ein weiterer Parameter (wie etwa ein Suchkriterium). Diese Kommandozeilen-Aktionen werden immer in der unteren Kommandozeile angezeigt, unabhängig davon, ob emacs in einem Terminal läuft unter einer grafischen Oberfläche

Datei und Bufferhandling
C-x C-f    + ENTER : Öffnet einen Buffer, in dem alle Dateien des aktuellen Standardverzeichnis angezeigt werden. Navigieren durch die Liste + ENTER öffnet dann diese Datei.
C-x o      Wechselt durch die offenen Buffer
C-x 0      Schliesst den aktuellen Buffer
C-x 1      Schliesst einen anderen Buffer außerhalb des aktuellen
C-x 2      Teilt den aktuellen Buffer in zwei (vertikal)
C-x 3      Teilt den aktuellen Buffer in zwei (horizontal)
 
C-x C-s    Speichert die aktuelle Datei. Wenn noch kein Dateiname vergeben 
           wurde, muss dieser angegeben werden.
C-x C-w    Speichern unter
C-x k      Schliesst die aktuelle Datei.
 
C-x C-c    Schliesst Emacs
M-x shell  Öffnet das aktuelle Verzeichnis
 
Bearbeitung
Dadurch, dass die STRG Taste eine zentrale Rolle spielt, weisen Kombinationen wie STRG+C (C-c) oder STRG+V (C-v) auf andere Funktionen in emacs hin. Dafür wurde der CUA Modus entwickelt, der einfach in den Optionen aktiviert werden kann.  Das ist vor allem für Nutzer von Windows interessant, bei denen die Shortcuts nahezu überall Standard sind und man sich ungern umgewöhnen möchte.
 
Mit CUA Mode
C-c        Kopiert den markierten Text in die Zwischenablage
C-v        Fügt den Text aus der Zwischenablage ein
C-x        Schneidet den markierten Text aus und kopiert ihn in die Zwischenablage
 
Wenn Sie bereits an diese Emacs Kürzel gewöhnt sind, dann gelten für dieser drei Optionen diese Kürzel:

Ohne CUA Mode
 
M-w        Kopiert den markierten Text in die Zwischenablage
C-v        Fügt den Text aus der Zwischenablage ein
C-w        Schneidet den markierten Text aus und kopiert ihn in die Zwischenablage
 
C-x h      Alles markieren
 
 
M-u        Wandelt den markierten Text in Großbuchstaben um
M-l        Wandelt den markierten Text in Kleinbuchstaben um
M-c        Wandelt den ersten Buchstaben in einen Großbuchstaben um
 
C-x C-+    Schrift vergrössern
C-x C--    Schrift verkleinern
M-h        Markiert einen ganzen Absatz
C-M-h      Markiert eine Funktion
C-a        Cursor an den Anfang einer Zeile
C-e        Cursor an das Ende einer Zeile
C-p        Eine Zeile nach oben
C-n        Eine Zeile nach unten
M-b        Cursor ein Wort zurück
M-f        Cursor ein Wort vorwärts
C-l        Cursor in der Mitte des Screens platzieren
M-d        + goto-line x  : Springt zur Zeile x
M-x        + comment-region : Kommentiert die aktuelle Auswahl aus
M-;        Kommentiert die aktuelle Zeile aus
M-d        Löscht das Wort am Cursor

Demnächst folgen noch weitere Infos über die verschiedene Modi in emacs und wie sich Funktionen dort automatisieren lassen.

No Man´s Sky

Ich bin mit Computerspielen aufgewachsen. Wenn man in den 1970er Jahren geboren ist, dann hat man alle bisher interessanten Entwicklungen selbst miterlebt.

Aber nur alle paar Jahre gibt es mal ein echtes Highlight. Man erkennt diese Highlights besonders in einem Rückblick, wenn selbst nach Jahren stetiger Verbesserung von Grafik und Spielumfang die einfache Idee zeitlos im Gedächnis bleibt.

Weiterentwicklungen führen auch zur Bildung ganz neuer Genres. Strategiespiele, Shooter und – seit einigen Jahren ganz hoch im Kurs – Survival-Spiele.

Und je älter man wird, desto schwerer wird es, einen alten Nerd noch so richtig zu begeistern. Man ist teilweise wirklich schon zu alt, um das komplexe Handling einiger Spiele noch erlernen zu können. So ist es also auch für mich überraschend, dass es dann doch ein Spiel gibt, dass mich richtig fesselt und das nicht nur in in meinen wöchentlichen Online-Sessions fasziniert. Dieses Spiel heisst „No Man´s Sky“ und spielt in einer ganz eigenen Liga. Es gibt einige Spiele, die einen ähnlichen Anspruch haben – „No Man´s Sky“ ist aber einzigartig.

Das Spiel ist bereits 2016 erschienen und wurde durch einen mehrjährigen Vorlauf bereits vor Erscheinen gehyped (hier ein Video aus 2014, mit Sean Murray in dem der Macher des Spiels die Technologie dahinter erklärt) – das Spiel konnte aufgrund der hohen Erwartungen nur scheitern. Genau das passierte dann auch 2016. Die Kritiken waren vernichtend.

Was waren die Erwartungen? Nun, die Macher versprachen ein Open-World Spiel im Weltraum mit acht Trillionen(!) durch KI genierte, frei erkundbare Planeten mit immer wieder neu genierten Lebenwesen und Landschaften – strategische Handelssimulation wie einst beim Klassiker „Elite“, Shooter und Survival Game inklusive. 2016 waren davon bestenfalls Ansätze erkennbar. Die Spieler waren enttäuscht und wandten sich ab.

Das ist jetzt fünf Jahre her – seitdem hat es 21 Updates des Spiels gegeben. Sechs davon haben das Spielprinzip fundamental ergänzt und ausgebaut. Zuletzt die Inhaltergänzung „Origins“ und das grafische Update „Prisms“. Diese Updates waren alle kostenfrei. Das Ergebnis ist phänomenal. Die Screenshots in diesem Artikel stammen übrigens alle aus meinem aktuellen Spielstand – die Vielfalt, die sie suggerieren entspricht der Vielfalt in No Man´s Sky.

Es ist tatsächlich so, dass der Spieler in einem gigantischen Universum unterwegs ist. Vorab wird der Spielmodus eingestellt. Neben dem „normalen Modus“, bei dem zunächst grundlegende Ressourcen erschlossen werden müssen, gibt es auch den grandiosen „Kreativmodus“ – hier kann man sich komplett auf die Erkundung der Planeten konzentrieren ohne sich über das Überleben Gedanken machen zu müssen.

Im Anflug auf einen neuen Planeten

Die Planeten können paradiesisch, zugefroren, nuklear verseucht oder tektonisch instabil sein. Die zugehörigen Monde ebenfalls – aber alles lässt sich dank Exo-Anzug erkunden und wird in Echtzeit beim Überflug, der Erkundung zu Fuß oder im Exofahrzeug inspiziert. Hat man eine passende Stelle gefunden, kann man dort eine Basis bauen. Die vorgefertigten Bauteile dazu erlauben höchste Kreativität. Fangemeinden haben auf Planeten schon ganze Städte gebaut.

Eine Basis auf einem Berg errichtet
Blick in den Niemandshimmel zur Basis auf dem Nachbarplaneten

Hat man irgendwann alle Komponenten für einen Hyperantrieb des Raumschiffs zusammen, dann erkundet man einfach die nächsten Planeten. Man warpt einfach in das nächste Sonnensystem. Die vielfältigen Möglichkeiten, sich durch das Spiel zu bewegen, werden im Spiel selbst angeleitet – baue ich die nächste Basis oder suche ich nach den Hintergründen des empfangenen Notrufs? Oder springe ich zur nächsten Raumstation und versuche, mein Ansehen durch Handel aufzubauen oder kaufe ich mir ein organisches Raumschiff? Wie komme ich in den Nexus, dem Zentrum der Galaxie und was habe ich für Möglichkeiten in der Weltraumanomalie?

Zum Entspannen kann ich auch jederzeit meinen Lieblingsplaneten weiter kartographieren, ihn nach neuen, unglaublich fantasievollen Lebewesen absuchen, denen ich meine ganz eigenen Namen geben kann. Oder ich baue eine gigantische Untersee-Station in einem der Ozeane der Planeten. Damit alles was davon haben, kann ich meine Erkenntnisse und meine Basen in das No Man´s Sky Netzwerk hochladen.

Um in dieser gigantischen Welt an Orte zu gelangen, die andere Mitspieler oder Communities bereits erforscht und für besonders sehenswert deklariert haben, ist die erste große Herausforderung über Artefakte, Monolithen und Glyphen ein Portal zu aktivieren, in dem eine Kombination der Glyphen eingegeben werden kann, um sich dorthin zu teleportieren. Um diesen Spielstand zu erreichen, müssen bereits einige Spielstunden investiert worden sein.

Zu weit entfernen Stellen reisen – das geht nur über Portale

Die Adresse für die No Man´s Sky Portale gibt es auf vielen Community-Seiten. Auch die eigene Position kann über ein solches Portal ermittelt werden. Auf der Homepage von No Man´s Sky kann man diese Position in die Galaxy Map eingeben.

Meine Reise zum Mittelpunkt der Galaxie hat gerade erst begonnen

Fazit: No Man´s Sky ist das ultimative Spiel. Obwohl dieser Artikel recht lang ist, habe ich viele Aspekte noch gar nicht erwähnt. Das Spiel ist unglaublich abwechslungs- und umfangreich. Schaut man sich dann noch die vielen Videos auf Youtube von anderen Spielern an und schaut sich deren Planeten und Basen an, dann wird das Spiel zum Zeitfresser – aber zu einem, bei dem man nicht das Gefühl hat, seine Zeit mit Quatsch verbracht zu haben.