publish and discover academic work ...

Nebenläufigkeit in JavaScript

Hallo Kollegen,

ich möchte heute eine sehr interessante Frage besprechen, und zwar wie ist das möglich, dass JavaScript asynchron arbeitet, hat aber dabei nur genau ein Thread?

Ziemlich oft denk man dass in JavaScript Nebenläufigkeit möglich ist. Als Beweis dazu nennt man die Tatsache, dass man auf Antwort einer Anfrage nicht warten muss, sondern nur dann die Antwort bearbeiten, wann sie schon da ist. Oder spricht man, dass man eine Funktion mit Hilfe von setTimeout() in einem separaten Thread ausführen kann. Das ist leider (oder zum Gluck, wie man das sieht) nicht so.


Weiterlesen

URL mit JavaScript ändern

Dafür gibt es viele Bibliotheken, einige sind mehrere hunderte KByte groß, andere wesentlich kleiner. Es gibt sogar ganz kurze Methoden, die ich in diesem kurzem Artikel auch erwähne.

Also, wir haben folgende ganz einfache Aufgabe, wir müssen eine URL parsen, sprich in logische Teile zerlegen, wie Protocol, Hostname, Parametern usw. Wäre auch nicht schlecht wenn wir die URL irgendwie modifizieren könnten, zum Beispiel http durch https ersetzen.

Fangen wir an.


Weiterlesen

Monitoring von SQL Abfragen

Angenommen Sie müssen ein neues CMS kennenlehrnen und zwar nicht wie ein Benutzer sondern als ein Programmirer. In diesem Fall gibt es ein ganz wichtiges Moment: wie schreibt das CMS in Datenbank. Beispiel, wir erzeugen einen neuen User, welche SQL Abfrage wird gesendet? Oder was liefert die Datenbank, wenn wir nach einen Artikel fragen?

Natürlich gibt es ganz coole Option bei MySQL: Logging und Profiling.

Das geht aber nicht immer, z.B. wenn Sie die Datenbank bzw. ihre Konfiguration nicht anfassen dürfen. In diesem Fall können wir ein Proxy verwenden. Fast alle Werkzeuge, die aus diese Art und Weise arbeiten sind kostenplichtig. In diesem Artikel betrachten wir eine kostenlose Alternative, die mysql-proxy heißt.


Weiterlesen

Internationalisierung von Webseiten

Das Problem ist jedem Unternehmen bekannt, das in mehreren Ländern arbeitet bzw. Kunden aus verschiedenen Weltregionen hat. Es gibt verschiedene Lösungen dazu, die wir in diesem Artikel betrachten werden.

Die einfachste Variante sieht wie folgt aus, für jede Sprache wird ein Domain registriert. Für Deutschland example.de, für Frankreich exaple.fr usw. Falls wir nicht wissen, welche Sprache wir dem User anzeigen müssen, gibt es example.com, wo Englisch zum Einsatz kommt. Die Lösung passt ganz gut für die Firmen, die richtig groß sind und jede Niederlassung relativ unabhängig von anderen ist. In diesem Fall kann jede Webseite teilweiße ganz anderen Content haben, z.B. einige Produkten werden in einigen Ländern überhaupt nicht angeboten.

Die andere Vorgehensweiße ist auch nicht so kompliziert, man macht einen Unterdomain: de.example.com, fr.example.com usw.

Die zwei Lösungen sind vollkommen klar, deswegen werden wir sie in Weiterem nicht mehr besprechen.


Weiterlesen

Statische Code-Analyse

Statische Code-Analyse ist eine Suche nach Fehlern in Quelltext. Der wichtigste Unterschied zu dynamischen Test ist die Tatsache, dass das der Code nicht ausgeführt werden muss, daher heißt die Analyse statisch. Das ist eine Art von Code-Review.

Code-Review ist eine alte und zuverlässige Methode den Qualität von Quelltext zu verbessern. Der einzige Nachteil von Code-Review ist sein Preis. Zwei Programmierer müssen denselben Code anschauen, d.h. die Zeit ist mindestens doppelt bezahlt. Was auch wichtig ist, zwei Programmierer haben sehr selten dieselbe Meinung, deswegen muss man auch die Zeit für Diskussion über den Code einrechnen. Die Methode wird aber trotzdem gerne verwendet, da sie sehr gute Ergebnisse liefert, vor allem deswegen da die fremden Fehler wesentlich auffälliger als eigene sind. Wir haben folgende Situation, Code-Review ist sehr effizient aber teuer, deswegen wurde nach eine Alternative gesucht, die vielleicht nicht so effizient aber viel billiger ist. Die Lösung des Problems heißt statische Code-Analyse.


Weiterlesen
CSS

Hübscher Switch Button mit CSS

Neulich brauchte ich einen Button, der zwei Zustande hat, on und off. Natürlich ist die Aufgabe schon seit langem erledigt, es gibt sogar ein Service, der so einen Button online erstellt. Es gab allerdings ein Moment, da ich stundenweise bezahl werde und noch manchmal auf Experimentieren Lust habe, habe ich mich entschieden den Schalter selbst zu implementieren.

Es gibt mehre Varianten, die bekannteste sind ein Checkbox oder zwei Radiobuttons zu verwenden. Wir betrachten die beiden Lösungen.



Weiterlesen

Unbekanntes ThreadLocal

— Was ist ThreadLocal?
— Das ist ein Thread, nur lokal…

Die Klasse ist kaum bekannt, es gibt nur wenige Programmierer die davon etwas gehört haben. Dafür gibt es natürlich Grunde, die Klasse hat ziemlich spezifische Anwendungsfälle. In diesem Artikel möchte ich ein Beispiel betrachten, wo die klasse ThreadLocal hilfreich sein kann.

Angenommen wir haben folgende Aufgabe. Es gibt eine Klasse, die eine Datenstruktur ausfüllt oder sogar bauet, z.B. das kann ein Baum oder ein Array sein. Nennen wir die Klasse „SomeBuilder“. Ja, einfacher halber, nehmen wir an, dass die Klasse irgendwas berechnet und die Ergebnisse in einem Array speichert. Die Berechnung lässt sich ganz gut parallelisieren, deswegen möchte man diese Klasse in mehreren Threads benutzen. Wir möchten auch am Ende wissen, wie oft jedes Thread in diesen Array geschrieben hat. Dafür sehe ich zwei Möglichkeiten, wir machen einen Counter entweder im Thread, oder in der SomeBuilder. Die erste Variante ist trivial, deswegen betrachten wir die zweite.


Weiterlesen

Maven Plugins, die ich benutze

Hallo Kollegen,

ich bin mir sicher jeder von uns ab und zu benutzt Maven(einige sogar jeden Tag), deswegen muss ich nicht erklären was das ist und wie viel Zeit das Werkzeug sparen kann. Ich möchte in diesem kurzem Artikel Plugins nennen, die ich in meiner Arbeit täglich benutze und sehr nützlich finde.

Die erste drei sind Plugins, die prüfen wie mein Code gut ist. Natürlich ist das keine richtige Code-Review, aber viel besser als nichts. Außerdem ist diese Prüfung vollständig automatisiert und braucht von mir keine zusätzliche Aufmerksamkeit.

Der erste Plugin heißt CheckStyle. Wie sein Name spricht, prüft er ob der Code unseren Style Guide folgt. Die Regeln habe ich im Internet gefunden und dann nur an meine Bedürfnisse angepasst. Der Plugin prüft nicht nur die Formatierung sondern auch weitere Sachen wie die Bauweise von Klassen. Z.B. dank dem Plugin habe ich erkannt, dass eine Klasse die nur statische Methoden besitzt, muss einen privaten Konstuktor haben und als «final» deklariert werden. Wer von Ihnen hat die Klasse „Utils“? Und beim wem ist die Klasse «final» und hat privaten Konstruktor? Ich denke bei keinem, das wird leider in Uni nicht gelernt, obwohl das logisch ist.


Weiterlesen

Objekt - Pool mit C#

Hallo Kollegen!

Zuerst ein bisschen Theorie. Objekt Pool ist ein Pattern, der uns helfen soll, unsere Anwendung schneller zu machen. Das wird dadurch erreicht, dass wir ein Objekt mehrmals verwenden können. So sparen wir Zeit, die benötigt ist, um ein Objekt zu erzeugen. Außerdem muss in diesem Fall der Garbage Collector wesentlich weniger arbeiten, was zusätzliche Vorteile bringt, z.B. die Anwendung braucht weniger Speicher.

In Theorie passiert folgendes. Es gibt ein Objekt, der den Pool repräsentiert. Das Objekt erzeugt auf ein Mal viele weitere Objekte, die unsere Anwendung später benutzen wird. Das können z.B. Streams, Sokets oder Connection mit Datenbank sein. Oft wird es so gemacht, das die maximale Anzahl von erzeugenden Objekten begrenzt ist, z.B. wir wissen, dass unsere Datenbank nicht mehr als hundert gleichzeitigen Connections unterstützt, deswegen macht es einfach keinen Sinn mehr als hundert Conections zu erzeugen.


Weiterlesen

Uhr, die zurück geht

Am Wochenende hatte ich nichts zu tun, mir war es langweilig. Wie das bekannt ist, ist Müßiggang eine sehr gefährliche Sache, sie kann einen Mensch zwingen, sehr merkwürdige Dinge zu machen. Diesmal ist das mit mir passiert. Ich bin auf die Idee gekommen, meine Uhr so zu ändern, dass ihr Sekundenzeiger in umgekehrter Richtung geht. So wollte ich zwei Ziele erreichen, erstens sieht so aus, als würden die Uhr zurück gehen und zweitens die Uhr zeigt die richtige Zeit.

Eigentlich ist das kein Hexenwerk, wie kann man das Verhalten von explorer.exe ändern ist in vielen Tutorials beschrieben. In meinem Fall gab es allerdings ein kleines Problem, ich habe 64Bit Windows. Das heißt ich habe nicht so viele Werkzeuge, die mir zur Verfügung stehen. Damit Sie besser verstehen, was das bedeutet, sage ich dass solche tolle Tools wie OllyDbg und Detours in diesem Fall nutzlos sind. Ich könnte entweder IDA Pro oder WinDbg. Da ich mit dem ersten Programm nicht klar gekommen bin, hatte ich keine Auswahl mehr.


Weiterlesen