Die verbleibende Übertragungsrate von 384 KBit/s macht eine zeitgemäße Nutzung des Internets unmöglich

6. Mai 2013 ⋅ Geschrieben von Martin ⋅ Keine Kommentare

Soeben auf Golem in einem Beitrag über die Telekom Drosselung gelesen:

“Die verbleibende Übertragungsrate von 384 KBit/s macht eine zeitgemäße Nutzung des Internets unmöglich. Während die Geduld der Kunden bereits beim Aufruf von Internetseiten oder dem Versenden von E-Mails oder Dateien auf eine harte Geduldsprobe gestellt wird, sind manche Onlinedienste praktisch nicht mehr nutzbar. So dürfte ein unterbrechungsfreies Anschauen von Internetvideos regelmäßig scheitern und auch das Musikhören oder Telefonieren via Internet nicht mehr ohne Qualitätseinbußen möglich sein. Greifen wie üblich mehrere Anwendungen des Endgeräts gleichzeitig auf das Internet zu oder nutzen gar mehrere Endgeräte gleichzeitig den Internetanschluss, droht die Verbindung an der Drosselung zu ersticken”

mit meinem DSL Lite Anschluss ist also eine zeitgemäße Nutzung des Internets unmöglich. Und dennoch baut die Telekom in meinem Dorf weder DSL noch Mobilfunk oder LTE aus (andere Anbieter eingeschlossen). Nach der garantierten – gedrosselten – Geschwindigkeit von 384 KBit/s würde ich mir die Finger lecken, denn es gibt selten einen Tag bei dem mein Anschluss konstant mit der garantierten Bandbreite läuft. Mit schwammigen 20KB/s rumdümpeln ist Standard.

Was die Drosselung angeht – lästert ihr nur weiter über 75GB die euch viel zu wenig sind, holt euch einen T-Business Anschluss wenn ihr schon die Möglichkeit habt und heult nicht so rum.

So Retro

2. Mai 2013 ⋅ Geschrieben von Martin ⋅ Keine Kommentare

retro

Django JSON POST decorator

29. März 2013 ⋅ Geschrieben von Martin ⋅ Keine Kommentare

Für den Django API Server bei Resigame habe ich einen neuen Decorator geschrieben, welcher Daten im JSON Format, die per POST übermittelt werden automatisch in eine Liste konvertiert und nach “request.POST” schreibt. Brauchen wir, da die Daten via Backbone.js im JSON Format an die REST API gesendet werden.

resigame-api/decorators.py

from StringIO import StringIO
import json
 
 
def post_json(function):
    def wrap(request, *args, **kwargs):
        if request.raw_post_data is not '':
            try:
                request.POST = json.load(StringIO(request.raw_post_data))
            except:
                print 'invalid json in request.raw_post_data'
        return function(request, *args, **kwargs)
 
    return wrap

Einfach den Decorator @post_json anhängen, wenn z.B. folgende Daten gesendet werden:

{"x":100,"y":100,"name":"Resiiiiiiii"}

Anschließend befindet sich eine Liste mit den Daten in request.POST. Als wenn die Parameter und Werte normal übergeben worden wären.

Dynamisches JavaScript in den Chrome Developer Tools

24. März 2013 ⋅ Geschrieben von Martin ⋅ Keine Kommentare

Das neue Resigame ist ja komplett Single Page, sprich alle Inhalte werden nachgeladen und dynamisch aufgebaut ohne dass die Seite auch nur ein einziges mal neu geladen werden muss.

Hierbei lade ich natürlich die JavaScript Dateien nur dann wenn ich sie brauche, also über eine Requirejs ähnliche Schnittstelle in meine App. Ich habe das ganze noch ein wenig “verfeinert”, bzw. an meine Bedürfnisse angepasst.

Das Problem an der Sache ist nur, dass diese Dateien dann natürlich in den Chrome Entwickler Tools unter “Source” nicht auftauchen, weil dieser Tab nur die im HTML – beim Seitenaufbau – existenten Scripts erkennt. Um das zu umgehen hängt man einfach in die js Dateien ganz unten folgenden Kommentar:

//@ sourceURL=/static/lib/resigame/map.js

natürlich muss der Pfad angepasst werden. Übrigens ist dieses Verhalten ganz praktisch, wenn man auch in der Entwicklung schon mit kompilierten/komprimierten JavaScript Dateien arbeiten möchte, denn hängt man den Source Url Kommentar unten an jenes komprimiertes File an, wird das dort angegebene als sog. Source Map verwendet sprich, in den Entwickler Tools sieht man dieses und man kann bequem Breakpoints im Klartext Quellcode setzen. Allerdings muss hierzu ein Kompiler verwendet werden, der Source Maps unterstützt, dass ist meines Wissens nach momentan nur der Closure Compiler von Google. Mehr Informationen zu den Source Maps hier: http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/

Zeitgeist – nun auch auf meinem Desktop

21. Februar 2013 ⋅ Geschrieben von Martin ⋅ Keine Kommentare

Zeitgeist

XFCE Dual Head Konfiguration

15. Februar 2013 ⋅ Geschrieben von Martin ⋅ Keine Kommentare

Da XFCE von Haus aus kein Dual Head unterstützt muss man das wohl von Hand per xrandr einrichten. Ich habe mir hierzu folgendes Script aus Ask Ubuntu geschnappt und angepasst:

!/bin/bash
 
# RESOLUTION SETTINGS
# This sets your VGA2 monitor to its best resolution.
xrandr --output VGA2 --mode 1920x1080 --rate 60
# This sets your laptop monitor to its best resolution.
xrandr --output LVDS2 --mode 1440x900--rate 60
 
# MONITOR ORDER
# Put the Laptop right, VGA2 monitor left
# xrandr --output VGA2 --left-of LVDS2
# Put the Laptop left, VGA2 monitor right
xrandr --output LVDS2 --left-of VGA2
 
# PRIMARY MONITOR
# This sets your laptop monitor as your primary monitor.
xrandr --output VGA2 --primary
# This sets your VGA2 monitor as your primary monitor.
# xrandr --output VGA2 --primary

Die Namen der Angeschlossenen Monitore kann man sich per xrandr auf der Konsole anzeigen lassen.

Mit einem Rechtsklick auf die Leiste oben am Bildschirm, dann auf “Leiste” und auf “Leisteneinstellungen…” kann man die Leiste auf einen anderen Monitor verschieben. Hierzu gibt es im Tab Anzeige die Option “Ausgabe”.

Leisteneinstellungen

Python pip – Modul im Home Verzeichnis installieren

12. Februar 2013 ⋅ Geschrieben von Martin ⋅ Keine Kommentare

Bei älteren pip Versionen wird ein Python Modul wie hier z.B. “uptime” mit folgendem Kommando in das Home Verzeichnis des aktuellen Benutzers installiert (z.B. /home/foo/.local/lib/pythonX.X/)

pip install --install-option="--user" uptime

bei neueren Versionen gibt es auch folgendes Shortcut

pip install --user uptime

Telnet Client Session beenden

11. Februar 2013 ⋅ Geschrieben von Martin ⋅ Keine Kommentare

Zum beenden einer Telnet Session einfach STRG + * drücken.

telnet> open 127.0.0.1 1234
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
^]
telnet> q
Connection closed.