Markus studiert!

Projektergebnis Mobile Computing

GroupMood

Das Projektergebnis des Kurses Mobile Computing ist neben einer App auch die Erkenntnis, dass die Entwicklung unter Android wirklich Spaß macht — etwas das ich zu Beginn des Kurses vor etwas mehr als vier Monaten nicht erwartet hatte. Die Platform vereinigt nämlich einige Einschränkungen, die in der Kombination aber zu gutem und überlegten Programmieren führen.

Zum einen muss der, im Vergleich zu aktuellen Deskop-Computern, schlechten Rechenleistung Rechnung getragen werden. Jede aufwändigere Rechenoperation macht sich direkt im UI bemerkbar — man kommt also um Threading und arbeiten mit Prozessen nicht herum. Die zweite Einschränkung ist die Größe des Displays eines Smartphones und die Größe des menschlichen Zeigefingers. Dank der Touch-Bedienung kommt man mit kleinen Text-Links nicht weit, da müssen schon „riesige“ Buttons zum Einsatz kommen. Aufgrund der Größenbeschränkung bekommt man auch bei weitem nicht so viele GUI-Elemente auf einen Screen, wie z.B. auf einer Website — hier macht man sich viel eher Gedanken darüber, was wirklich wichtig ist und auf was man nicht eigentlich verzichten kann. Vom pixelgenauen Layouten muss man sich sowieso verabschieden. Im Android SDK ist zudem die Trennung zwischen GUI (XML-Layouts), Middleware (Activities) und Backend (ContentProvider, Services) so hart, dass sich prima im Team entwickeln lässt. Die XML-Layouts sind ein Traum, was Anpassbarkeit angeht und die einfache Möglichkeit, leicht zwischen GUI und Business-Logik zu trennen, beugt unbeabsichtigten Durchbrüchen zwischen den Anwendungsschichten vor. Leider hatte ich keine Zeit mich mit dem MonkeyRunner zu beschäftigen, das werde ich aber versuchen beim nächsten Android Projekt nachzuholen, dass es definitiv geben wird.

Und nun zu unserer App. Meine Grundidee war die Möglichkeit zu haben, direkt in einer Vorlesung den Vortragenden bewerten zu können, z.B. um anonym mitzuteilen, dass er zu schnell redet oder zu leise. Aus dieser Idee hat sich dann in den letzten Monaten ein etwas allgemeinerer Ansatz entwickelt:

GroupMood ist eine Anwendung für Android und ermöglich es, eine Gruppen von Personen schnell und direkt mit Hilfe ihres Smartphones zu befragen.

Eine detailliertere Beschreibung findet sich im Wiki auf der GitHub-Projektseite, deswegen erspare ich mir hier die ausführlich Beschreibung. Für einen kurzen Überblick empfehle ich die folgende Präsentation:

Die Server-Komponente habe ich übrigens in Django umgesetzt. Auch das hat mir einige „OMG! Wie geil!“-Momente, über die habe ich aber schon an anderer Stelle geschrieben.

< 22. February 2012, 15:42 Uhr

Tags:


Was ich an Django so mag

Nachdem ich im dritten Semester zum ersten Mal intensiveren Kontakt mit Python hatte, habe ich die Sprache in den vergangenen Semestern immer stärker schätzen gelernt.

In diesem Semester setzen wir für die Server-Komponente unseres Mobile-Computing-Projekts ebenfalls auf Python, und zwar in Form des Web-Frameworks Django. Und das ist wirklich ein Genuss.

Zur Implementierung des Servers lieferte Django bereits alle notwendigen Komponenten. Das Framework bietet den besonderen Vorteil, dass die typischen Aufgaben einer Webanwendung, deren Hauptaufgabe die Verwaltung von Datensätzen ist, also deren Auflisten, Anzeigen, Finden und Editieren (CRUD), nach Erstellung von nur wenig eigenem Code bereits komfortabel zur Verfügung stehen. Es muss lediglich die Datenstruktur in Form von Models definiert werden. Anhand dieser Informationen kann Djongo schon die nötige Datenbankstruktur erzeugen und passende Formulare zum Editieren der Datensätze im mitgelieferten Admin-Bereich erzeugen.

Zur Implementierung der öffentlichen Schnittstellen der Anwendung reichen auch lediglich wenige Zeile Code aus. In Django werden diese mithilfe der Views erstellt, wobei man hier nur Ausnahmen behandeln muss, die über das Anzeigen von einzelnen Datensätzen oder Listen von Datensätzen hinaus gehen. Die für die App zur Verfügung gestellt API wird ebenfalls mit Hilfe der Views erzeugt, wobei dann das Antwort-Format nicht HTML ist, sondern JSON. Die Unterscheidung wird anhand das Accept-Headers in der Anfrage getroffen. Um die Implementierung eines eigenen Controllers muss man sich nicht kümmern, hier übernimmt das Framework bereits alle nötigen Aufgaben, sofern man die vorgegebenen Konventionen befolgt und die bereitgestellten Hilfsfunktionen verwendet.

Auch die Möglichkeit zum Testen seiner Anwendung sind genial, das Test-Framework kümmert sich um alle Aufgaben, lediglich die Unit-Tests muss man selber schreiben - was elegant von der Hand geht, dank einem mitgelieferten Test-Client der URL-Request simuliert.

Django nimmt einem durch viele Konventionen unheimlich viel Arbeit ab, und man kann sich auf das Wesentliche konzentrieren. Die Geschwindigkeit, mit der man in Django entwickeln kann ist beeindruckend und ich bin schwer am Überlegen, es auch für meine Thesis ein zu setzen...

< 27. January 2012, 08:45 Uhr

Tags:


Mobile Computing: Die Sache mit den verknüpften JSON-Objekten

In unserem wöchentlichen Projekt-Standup im Kurs Mobile Computing habe ich gestern knapp das Thema verknüpfte Daten in JSON angesprochen. Im meinem Technik-Blog habe ich das Thema ausführlicher erläutert: Relationen in Linked Data

< 19. January 2012, 09:37 Uhr

Tags: