The state-of-the-art in Mobile app development

10 Jan

The slides below introduce the mobile app development scenario. Some statistics and usage patterns from various survey results are presented. The technologies used to build the mobile apps and its client-architectures are discussed and compared. A decision framework is chalked out in order to design the mobile strategy. The design patterns for a mobile app are categorized, listed and explained with the help of examples and case studies.

 

GETup – Getting to know your fellow PhDs

19 Mai

The Joint European Summer School on Technology Enhanced Learning is an annual get-together of PhD students and experts in the field of social, educational and computer science. This years Summer School takes place in Limassol, Cyprus in it’s 9th edition. More information on the topics and the programme can be found on the official website.

Due to the different backgrounds of the participants, the densely packed programme and the variety of disciplines problems arise, that counteract the establishing of new contacts and collaborations. Anecdotal evidence shows that at the end of the Summer School, PhDs only know about 3 to 5 new PhDs and their research topics. Often, they also forget about the new connections pretty soon, as they are not made in realistic collaboration settings but during dinner or the like. Moreover, after the Summer School participants often loose the connection to their freshly made contacts. The GETup system tries to reduce these problems by helping the participants to find relevant people and to get in touch with them in a more meaningful way.

The overall goal is to connect the participating Summer School PhDs in order to make them aware of each other, their respective PhD projects and potential overlaps in their work. The aim is to provide a technological framework in which the participants can track with whom they interacted, in which they can give feedback on others’ ideas and ask for input on their initial paper, slides or PhD project. Moreover, it aims to recommend ‘similar’ PhDs to each other. This is achieved by implementing different aspects known from Social Networks and the emerging research field of Gamification.

SOCIAL NETWORKING On the one hand, the system provides the user with the key features of a social network that supports the work and participation in typical  Summer School activities. Based on the self-provided user profiles, and detailed information on their research projects, registered users can browse the information of other participants and, through a Twitter-like principle, add them to their contacts. Using the website and the mobile client, participants can log meetings with other users and access this information again during or after the Summer School. Building up on these user-provided and other data, the underlying software reflects the social graph of the Summer School participants and calculates user-to-user recommendations. Furthermore the software enables users to organize their own events and make them available to all other participants. This feature is particularly interesting for workshop organizers, as it supports automatic grouping that takes into account the results of the recommender system.

GAMIFICATION On the other hand the incorporation of typical game elements addresses the motivation of the participants to continuously use the system. This includes among others the integration of Mozilla Open Badges, an XP based point system and, as the main element, the so-called Investment Game. This element is based on the idea behind well-known crowd funding websites and allows the participants of the Summer School to invest in the research projects of other PhD students. Every day registered users receive a certain amount of money which they can donate to their preferred projects. With each investment, a personal feedback, in form of a comment and a rating, can be issued.

These briefly described measures should help to create a closely knit network of PhDs that know about the strengths, research domains and PhD projects of each other and try to make the connections last over the end of the Summer School.

Informatik Publikationen der Universität Paderborn

25 Feb

Open Access Publikationen sind frei zugänglich und eignen sich, um einen Eindruck über die Forschung in einem Fachgebiet zu bekommen. Für Autoren bringt die Veröffentlichung im Web auch Vorteile, da elektronische Publikationen nach gegenwärtiger Erfahrung häufiger zitiert werden (DFG).

In meiner Abschlussarbeit beschäftige ich mich mit der Generierung von Vorschlägen für wissenschaftliche Publikationen. Diese Vorschläge werden automatisch berechnet. Daher ist es nötig zu prüfen, ob diese Vorschläge Sinn ergeben.

Eine Möglichkeit der Prüfung ist der Vergleich mit Datensammlungen, die von Menschen klassifiziert wurden. Ein Beispiel ist der Cora Datensatz. Eine andere Variante ist eine stichprobenartige Prüfung. Um einen Zusammenhang zwischen Publikationen bewerten zu können, ist allerdings eine gewisse Expertise erforderlich. Und diese ist bei Forschern, Lehrenden und Studierenden zu finden.

Einen Überblick über Informatik-Themen, die an der Uni Paderborn behandelt werden, erhält man durch einen Blick in die Publikationslisten. Diese sind auf den Webseiten der einzelnen Fachgebiete zu finden. Die Veröffentlichung der Dateien im Web bringt den Autoren potenzielle Leser und dadurch vielleicht auch die ein oder andere Zitierung. Für diejenigen, die an einer Sammlung der frei zugänglichen PDFs interessiert sind, sollte diese Tabelle mit Listen von PDF-Dateien nützlich sein:

Fachgebiet Publikationen
Model Driven Software Engineering 0 Dateien
Didaktik der Informatik 37 Dateien
Codes und Kryptographie 60 Dateien
Algorithmen und Komplexität 0 Dateien
Electronic Commerce und Datenbanken 2 Dateien
Technische Informatik 76 Dateien
Computergrafik, Visualisierung und Bildverarbeitung 69 Dateien
Custom Computing 54 Dateien
Swarm Intelligence 211 Dateien
Entwurf paralleler Systeme 0 Dateien
Datenbank und Informationssysteme 363 Dateien
Softwaretechnik 0 Dateien
Theorie verteilter Systeme 213 Dateien
Rechnernetze 155 Dateien
Programmiersprachen und Übersetzer 32 Dateien
Sicherheit in Netzwerken 11 Dateien
Kontextuelle Informatik 0 Dateien
Mensch-Computer-Interaktion und Softwaretechnologie 0 Dateien
Wissensbasierte Systeme 16 Dateien
Spezifikation und Modellierung von Softwaresystemen 18 Dateien

Insgesamt 1317 Dateien und 1,3 Gigabyte (ermittelt mit du -sch).

Creative Commons Lizenzvertrag Dieses Werk bzw. Inhalt steht unter einer Creative Commons Namensnennung 3.0 Deutschland Lizenz.
Wenn möglich, verwenden Sie doch einen Link zum Originalartikel:
Adrian Wilke: Informatik Publikationen der Universität Paderborn.

Die Levenshtein-Distanz in MySQL

13 Feb

Man stelle sich vor, man hat eine größere Menge wissenschaftlicher Publikationen gesammelt. Nehmen wir mal vorsichtig an, es sind zumindest viele Tausend. Und diese Dokumente zitieren und referenzieren sich untereinander. Da kommt es vor, dass sich Tippfehler in Literaturverzeichnissen einschleichen und die Titel eigentlich identischer Dokumente sich nicht mehr vollkommen gleichen. Die Titel eigenen sich aber eigentlich sehr gut, um eine Publikation zu identifizieren. Dementsprechend kommt es bei Analysen der Beziehungen zwischen den Dokumenten zu Folgefehlern.

Um Ungleichheiten in Zeichenketten großzügig zu behandeln, kann man die Levenshtein-Distanz nutzen. Diese vergleicht zwei Zeichenketten und gibt die minimale Anzahl von Operationen (Einfügen, Löschen und Ersetzen) an, die benötigt werden, um die erste Zeichenkette die zweite umzuwandeln. Anstatt Titel auf vollkommene Gleichheit zu überprüfen, ist es hiermit also z.B. möglich, kleinere Ungleichheiten zu tolerieren.

Es gibt eine ganze Reihe von Implementierungen in verschiedenen Sprachen, z.B. in PostgreSQL. Zurzeit arbeite ich allerdings mit MySQL. Hier ist die Funktion nicht von Haus aus installiert, es gibt aber zumindest eine UDF (User Defined Function), die auf der GitHub Seite von Juan Miguel Cejuela zu finden ist. Und da die Einbindung doch ein paar Minuten in Anspruch genommen hat, folgt hier ein kleines HowTo.

Installation

Zunächst lädt man die Datei levenshtein.c runter und folgt den Installationsanweisungen im Kommentar. Bei mir fehlten zusätzliche Codedateien:

$ gcc -o levenshtein.so -shared levenshtein.c
levenshtein.c:33:23: fatal error: my_global.h: No such file or directory
compilation terminated.

Den Sourcecode kann man in Mint/Ubuntu/Debian so beziehen:

$ sudo aptitude install mysql-source-5.5

Als Nächstes wird die benötigte Datei ausfindig gemacht:

$ dpkg -L mysql-source-5.5
/.
/usr
/usr/src
/usr/src/mysql
/usr/src/mysql/mysql-source-5.5.tar.gz
/usr/share
/usr/share/doc
/usr/share/doc/mysql-source-5.5
/usr/share/doc/mysql-source-5.5/copyright
/usr/share/doc/mysql-source-5.5/changelog.Debian.gz

Das Archiv wird entpackt:

$ tar -xzf /usr/src/mysql/mysql-source-5.5.tar.gz

In den extrahierten Dateien wird nach der benötigten Headerdatei gesucht:

$ find ./ -iname "my_global.h"
./source/mysql-5.5/include/my_global.h

Ein erneuter Versuch, zu kompilieren. Dieses Mal mit Angabe des Verzeichnisses der Headerdatei:

$ gcc -o levenshtein.so -shared levenshtein.c -I source/mysql-5.5/include/
In file included from levenshtein.c:33:0:
source/mysql-5.5/include/my_global.h:77:23: fatal error: my_config.h: No such file or directory
compilation terminated.

Suche der zweiten fehlenden Datei:

$ find ./ -iname "my_config.h"
./source/mysql-5.5/builddir/include/my_config.h
./source/mysql-5.5/builddir/packaging/rpm-uln/my_config.h
./source/mysql-5.5/packaging/rpm-uln/my_config.h

Dieses Mal klappt das Kompilieren:

gcc -o levenshtein.so -shared levenshtein.c -I source/mysql-5.5/include/ -I source/mysql-5.5/builddir/include/

Suche nach dem MySQL Plugin Verzeichnis:

$ mysql
mysql> show variables;
+----------------+------------------------+
| Variable_name | Value | |
+----------------+------------------------+
| plugin_dir | /usr/lib/mysql/plugin/ |
+----------------+------------------------+

Kopieren der erstellten Datei ins MySQL Plugin Verzeichnis:

$ sudo cp levenshtein.so /usr/lib/mysql/plugin/

MySQL als root Starten und die Funktion erstellen:

$ mysql -uroot
mysql> CREATE FUNCTION levenshtein RETURNS INT SONAME 'levenshtein.so';
Query OK, 0 rows affected (0.07 sec)
mysql> CREATE FUNCTION levenshtein_k RETURNS INT SONAME 'levenshtein.so';
Query OK, 0 rows affected (0.01 sec)

Test:

mysql> select levenshtein('hello', 'world');
+-------------------------------+
| levenshtein('hello', 'world') |
+-------------------------------+
| 4 |
+-------------------------------+
1 row in set (0.00 sec)

Vladimir Levenshtein (Deutsche Übersetzung) hat den Algorithmus übrigens 1965 veröffentlicht.

Hier ist noch ein Backup der Datei mit dem C Code.

Creative Commons Lizenzvertrag Dieses Werk bzw. Inhalt steht unter einer Creative Commons Namensnennung 3.0 Deutschland Lizenz. Wenn möglich, verwenden Sie doch einen Link zum Originalartikel: Adrian Wilke: Die Levenshtein-Distanz in MySQL.

Literaturverzeichnis für URLs in LaTeX

8 Feb

Wie bindet man vorteilhaft URLs in Seminar- und Abschlussarbeiten ein? Obwohl manch Alteingesessener solche Webadressen gar nicht in einem wissenschaftlichen Text sehen mag, stecken in diesen kleinen Verweisen für viele Leser wertvolle Zusatzinformationen.

Eine Möglichkeit der Unterbringung ist, die gesammelten Adressen dem Literaturverzeichnis hinzuzufügen. Dieser Ansatz ist stimmig, wenn die hinzugefügten URLs auf Texte verweisen, die wissenschaftlichen Publikationen ähneln. Dabei sollte aber nicht vergessen werden, eine Notiz mit der Information darüber hinzuzufügen, wann die entsprechende Seite eingesehen wurde.

Ein anderer Ansatz ist, URLs als Fußnote mit einem footnote an das Seitenende zu setzen. Kombiniert mit dem url Befehl, einem passenden Titel und dem Datum des Zugriffs ist dies auch eine schöne Lösung. Diese bietet sich an, wenn die verlinken Seiten vor allem Zusatzinformationen darstellen und ein Verweis als Randnotiz bereitgestellt werden soll. Bei einer längeren Arbeit könnte diese Lösung für jemanden, der gezielt nach einer Webadresse sucht, lästig sein.

Bisher war ich mit diesen Alternativen recht zufrieden. Es scheint allerdings, als würde meine aktuelle Arbeit ein längerer Text mit einigen URLs werden. Also wären einerseits die Adressen bei der Fußnoten-Lösung zu verstreut, auf der anderen Seite häufen sich bei dem langen Text auch viele klassische Literaturangaben an, was recht unübersichtlich werden könnte. Also entstand der Wunsch, URLs übersichtlich beieinander aufzulisten und auf diese verweisen zu können. Die erste Idee war, mittels label und ref alle Adressen im Anhang zu verstauen. Nach einer Recherche habe ich jetzt eine bessere Lösung: Zwei getrennte Bibliografien.

Verwendung mehrerer Literaturverzeichnisse

Auf UK List of TeX FAQ: Multiple bibliographies? gibt es mit multibbl, multibib, bibtopic und splitbib gleich vier Ansätze für die Verwendung mehrerer Bibliografien. Ich habe mich hier für multibib entschieden. Das Paket musste in meinem Fall erst installiert werden. Dazu gibt es hier eine kurze Anleitung: Adding a new package to a latex install on linux. Dabei muss multibib runtergeladen, entpackt und anschließend die Dateien auffindbar gemacht werden:

latex multibib.ins
sudo mkdir /usr/share/texmf/tex/latex/multibib
sudo cp multibib.sty /usr/share/texmf/tex/latex/multibib
sudo texhash

Nun können neue Befehle zur Referenzierung definiert und genutzt werden. Hier ein Minimalbeispiel für zwei getrennte Literaturverzeichnisse:

multibib.tex

\documentclass{scrartcl}
\usepackage{multibib}
\usepackage{hyperref}
\newcites{Refs,Urls}{Literaturverzeichnis,Verzeichnis der Webadressen}
\begin{document}
\bibliographystyleRefs{plain}
\bibliographystyleUrls{plain} % Erstes Beispiel
%\bibliographystyleUrls{urls} % Zweites Beispiel
\nociteRefs{*}
\nociteUrls{*}
\bibliographyRefs{Bibliography}
\bibliographyUrls{BibliographyUrls}
\end{document}

Bibliography.bib

@incollection{aan2012,
year={2012},
isbn={978-1-4471-4053-5},
booktitle={Computational Social Networks},
editor={Abraham, Ajith},
title={Mining and {V}isualizing {R}esearch {N}etworks {U}sing the {A}rtefact-{A}ctor-{N}etwork {A}pproach},
publisher={Springer London},
author={Reinhardt, Wolfgang and Wilke, Adrian and Moi, Matthias and Drachsler, Hendrik and Sloep, Peter},
pages={233--267},
}

BibliographyUrls.bib

@Misc{DDI,
title = {Didaktik der {I}nformatik},
note = {Eingesehen am 07.02.2013},
url = {http://ddi.uni-paderborn.de/},
howpublished = "\url{http://ddi.uni-paderborn.de/}",
key = {DDI},
}

Um die beiden BibTeX Dateien nutzen zu können, müssen sie per Konsolenbefehl vorbereitet werden:

bibtex Refs.aux; bibtex Urls.aux

Das Ergebnis sieht so aus:

multibib Beispiel

In diesem Beispiel ist am Marker allein nicht sofort erkennbar, ob es sich um eine klassische Literaturangabe oder eine Webadresse handelt. Um dieses Problem zu umgehen, kann für die URL-Referenzen ein anderer Stil verwendet werden. Ich habe allerdings keine solche bst-Datei gefunden, die mir gefallen hat. Daher kommt mit diesem Artikel eine Datei urls.bst, die gern heruntergeladen und verwendet werden darf.

Zur Erstellung der Datei habe ich folgende Eingaben vorgenommen:

latex makebst

Name of the final OUTPUT .bst file? (default extension=bst)
\ofile=urls

STYLE OF CITATIONS:
(*) Numerical as in standard LaTeX
(a) Author-year with some non-standard interface
(b) Alpha style, Jon90 or JWB90 for single or multiple authors
(o) Alpha style, Jon90 even for multiple authors
(f) Alpha style, Jones90 (full name of first author)
(c) Cite key (special for listing contents of bib file)
Select:
\ans=c

ORDERING OF REFERENCES (if non-author/year and non-alph)
(*) Alphabetical by all authors
(c) Citation order (unsorted, like unsrt.bst)
(d) Year ordered and then by authors
(r) Reverse year ordered and then by authors
Select:
\ans=c

FINAL PUNCTUATION:
(*) Period at very end of the listed reference
(x) No period at end
Select:
\ans=x

URL ADDRESS: (without REVTeX fields)
(*) No URL for electronic (Internet) documents
(u) Include URL as regular item block
(n) URL as note
(l) URL on new line after rest of reference
Select:
\ans=u

Finished!!
Batch job written to file `urls.dbj’
Shall I now run this batch job? (NO)
\yn=y

Damit wurde eine fertige Datei urls.bst erstellt. Bei Einträgen mit dem Feld url wird in dieser generierten Zwischenlösung noch ein unschönes Präfix “URL” bei jeder Referenz eingefügt. Das kann mit einer Nachbearbeitung der Datei urls.bst behoben werden:

"\providecommand{\urlprefix}{URL }"
wird zu
"\providecommand{\urlprefix}{}"

Hier der im zweiten Beispiel genutze Code:

multibib.tex

\documentclaß{scrartcl}
\usepackage{multibib}
\usepackage{hyperref}
\newcites{Refs,Urls}{Literaturverzeichnis,Verzeichnis der Webadreßen}
\begin{document}
\bibliographystyleRefs{plain}
%\bibliographystyleUrls{plain} % Erstes Beispiel
\bibliographystyleUrls{urls} % Zweites Beispiel
\nociteRefs{*}
\nociteUrls{*}
\bibliographyRefs{Bibliography}
\bibliographyUrls{BibliographyUrls}
\end{document}

BibliographyUrls.bib

@Misc{DDI,
title = {Didaktik der {I}nformatik},
note = {Eingesehen am 07.02.2013},
url = {http://ddi.uni-paderborn.de/},
NICHT_BENOETIGT_howpublished = "\url{http://ddi.uni-paderborn.de/}",
NICHT_BENOETIGT_key = {DDI},
}

Und so sieht das finale Resultat aus:

multibib Beispiel mit URLs

Das ganze klappt übringens auch mit der Vorlage classicthesis von Andre Miede.

Hier noch die für diesen Artikel verwendeten Dateien:

Creative Commons Lizenzvertrag Dieses Werk bzw. Inhalt steht unter einer Creative Commons Namensnennung 3.0 Deutschland Lizenz.
Wenn möglich, verwenden Sie doch einen Link zum Originalartikel:
Adrian Wilke: Literaturverzeichnis für URLs in LaTeX.