publish and discover academic work ...

NoWorryBox: Anonymes Internet fĂŒr Alle

Teilen Sie Ihr Internet mit wem, wann und soviel Sie wollen! Unter diesem Leitspruch entwickelt eine Entwickler Gruppe eine innovative Lösung fĂŒr
die Anonymisierung des Internetverkehrs.

NoWorryBox ist eine technische Zusammensetzung aus Hardware, Software und Support, um freie WLAN-Hotspots zu betreiben. WLAN Hotspots werden vorallem in öffentlichen Einrichtungen, wie Hotels, Restaurants oder aber auch in Unternehmen betrieben, um Ihren Besuchern einen unkomplizierten Zugang ins Internet zu ermöglichen. Mit bestehendem Internet-Anschluss wird ein NoWorryBox WLAN-Router aufgestellt, mit dem ein freier Zugang zum Internet ohne Anmeldung ermöglicht wird.

Dem Gesetzgeber nach haftet immer der Betreiber fĂŒr illegale AktivitĂ€ten an seinem (freien) Internet-Anschluss. Im Falle eines freien WLAN’s kann er dies jedoch nicht kontrollieren und riskiert somit, eine Abmahnung wegen illegaler AktivitĂ€ten zu bekommen. Mit einer beigelegten UnterlassungserklĂ€rung kommt man in diesem Falle einer Klage relativ gĂŒnstig davon. Eine Wiederholung könnte jedoch erheblich höhere Strafzahlungen sowie weitere Konsequenzen zur Folge haben.


Weiterlesen

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