AGB gelesen?

Wer kennt es nicht, man meldet sich bei Dienst XY an und bestätigt natürlich auch das man die AGBs oder die „Terms of Services“ gelesen hat. Das einzige Problem an diese Geschichte ist, das niemand diese ließt. Und so weiß man eigentlich gar nicht was man da gerade „unterschrieben“ hat.

Abhilfe schafft hier das Angebot „Terms of Service; Didn’t Read“ welches unter http://tos-dr.info zu finden ist. Hier werden die AGBs in die Klassen A – E eingeteilt, wobei A die beste und E die schlechteste Klasse ist. Zu jeden Dienst kann man sich dann noch die Pro und Contras anschauen. Wer das Angebot unterstützen möchte der kann dies noch 16 Tage unter http://www.indiegogo.com/terms-of-service-didnt-read tun.

Binärdaten über Websockets verschicken

Über Websockets kann man Binärdaten verschicken, leider ist dies nicht ganz so einfach wie es sein sollte. Das erste Problem ist, das es in JavaScript bis vor einiger Zeit keine „Binärtypen“ gab. Aber dank einiger Dinge ist es mittlerweile möglich Binärdaten per JavaScript und Websockets zu versenden. Mein Problem an der binären Datenübertragung war bisher, das es augenscheinlich nirgens ein komplettes Beispiel gibt, welche diese einfach mal demonstriert. Dabei ist das ganze relativ einfach:

<!DOCTYPE html>
<html>
  <head>
    <title>Websocket Binary Test</title>
    <meta charset="utf-8" />
  </head>
  <body>
    <script type="text/javascript">
      websocket = new WebSocket("ws://echo.websocket.org");
      websocket.binaryType = "arraybuffer"; //Binärtyp auf arraybuffer setzen

      //OnOpen verdraten
      websocket.onopen = function (e) {
        //Array zusammenbauen
        var message = new ArrayBuffer(9);
        var dataViewMessage = new DataView(message);

        dataViewMessage.setInt8(0, 25); //Command ID
        dataViewMessage.setInt16(1, 11); //Account ID
        dataViewMessage.setInt32(5, 43333020); //Anzahl der Credits

        //message per Websocket wegschicken
        websocket.send(message);
      }

      //OnMessage verdraten
      websocket.onmessage = function (wsPackage) {
        //Datentyp ermitteln
        if(wsPackage.data instanceof ArrayBuffer) alert("ArrayBuffer");
        else if(wsPackage.data instanceof Blob) alert("Blob");
        else if(typeof wsPackage.data === "string") alert("string");

        //Daten empfangen und auseinander bauen
        var dataViewPackage = new DataView(wsPackage.data);
        alert(dataViewPackage.getInt8(0));
        alert(dataViewPackage.getInt16(1));
        alert(dataViewPackage.getInt32(5));
      }
    </script>
  </body>
</html>

Im den ersten Zeilen im Skriptteil wird zuerst ein Websocket angelegt, welches sich mit „ws://echo.websocket.org“ verbindet. Dieser Server gibt immer genau das zurück was er empfängt und eignet sich somit ausgezeichnet für diesen kleinen Test.

Danach wird der „binaryType“ des Websockets auf „arraybuffer“ gesetzt, da wir mit einem solchen arbeiten wollen. In der verknüpften „OnOpen“ Methode wird ein „ArrayBuffer“ mit der passenden Größe angelegt und mit diesem ein „DataView“ initialisiert. Mit diesem ist es dann möglich problemlos möglich die entsprechenden Werte in den „ArrayBuffer“ zu setzen.

Dies geschieht dann mit den Zeilen:

dataViewMessage.setInt8(0, 25); //Command ID
dataViewMessage.setInt16(1, 11); //Account ID
dataViewMessage.setInt32(5, 43333020); //Anzahl der Credits

Am Ende wird das ganze weggeschickt und anschließend wieder in der „OnMessage“ Funktion empfangen. Dort wird der Datentyp ermittelt (für den Fall das man mit mehreren Typen arbeitet) und anschließend wird das Paket wieder Binär auseinander genommen.

Weitere Informationen gibt es unter:
http://www.websocket.org/echo.html
http://www.html5rocks.com/en/tutorials/webgl/typed_arrays/
https://developer.mozilla.org/en-US/docs/JavaScript_typed_arrays
http://msdn.microsoft.com/de-de/library/br212463%28v=vs.94%29.aspx
https://developer.mozilla.org/en-US/docs/JavaScript_typed_arrays/ArrayBuffer
http://stackoverflow.com/questions/11390021/transferring-files-with-javascript-through-websockets

osTicket

Im Open Source Bereich gibt es ja durchaus einige Ticketsysteme, wie z.B. das Open Ticket Request System (OTRS). Problematisch an den meisten Open Source Ticketsystemen ist dabei der Umstand das diese meist nicht bei den Wald- und Wiesenprovidern laufen, da es dort meist nur PHP und MySQL gibt. OTRS z.B. benötigt Perl, andere Systeme benötigen Ruby. Auf der Suche nach einem System welches auf einem solchen LAMP System läuft, habe ich osTicket gefunden. Dabei handelt es sich um ein freies Ticketsystem unter GPL. Problematisch sehe ich bloß das letzte Release welches im Jahr 2010 aufgelegt wurden. Das System selbst ist unter http://osticket.com zu finden. Derzeit scheint es leider kein halbwegs aktuelles Open Source Ticketsystem (welches unter PHP und MySQL läuft) zu geben.

Weitere Informationen gibt es unter:
http://de.wikipedia.org/wiki/Open_Ticket_Request_System
http://en.wikipedia.org/wiki/Comparison_of_ticket-tracking_systems

Androidgerät mittels adb löschen

Falls man mal in die Verlegenheit kommt ein Androidgerät löschen zu müssen, aber das Gerät keinen funktionierenden Bildschirm mehr besitzt, so hilft „adb“ aus dem Android SDK welches unter http://developer.android.com/sdk/index.html bezogen werden kann.

Nach dem Download wird man feststellen das „adb“ nicht mehr im „tools“ Ordner des SDKs liegt. Stattdessen erwartet uns dort eine Datei mit dem Namen „adb_has_moved.txt“. Dort wird man darüber informiert das „adb“ nun in dem Ordner „plattform tools“ zu finden ist. Um diesen Ordner zu bekommen führt man unter Linux die Applikation „android“ aus dem „tools“ Ordner aus und installiert das entsprechende Paket.

Sollte anschließend beim Start von „adb“ die Meldung:

./adb Datei oder Verzeichnis nicht gefunden

erscheinen so hilft hier ein:

sudo apt-get install ia32-libs

Nun schließt man das aktive Gerät an und gibt im Terminal folgendes ein:

./adb remount
./adb shell

In der Shell geben wir dann die entscheidenden Befehle ein:

wipe all
exit

Damit ist das Telefon von privaten Nutzdaten befreit.