Martin Lantzsch
Software Entwickler
29. März 2013

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.

24. März 2013

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/

15. Februar 2013

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

12. Februar 2013

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

11. Februar 2013

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.

10. Februar 2013

visualstudio.com Computer Name geändert

10. Februar 2013 - Geschrieben von Martin - Keine Kommentare

Mit folgendem Kommando kann man das Repository wieder gangbar machen, wenn der Computername geändert wurde:

C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE>tf workspaces /updateComputerName:ALTERCOMPUTER /s:https://DEINWORKSPACE.visualstudio.com:443/DefaultCollection
Auflistung: https://DEINWORKSPACE.visualstudio.com/DefaultCollection
Arbeitsbereich  Besitzer        Computer Kommentar
--------------- --------------- -------- --------------------------------------
ALTERCOMPUTER   Martin Lantzsch NEUERCOMPUTER