RSS-Feed

David Hadizadeh

E-Mail

Xing-Profil

LinkedIn

Impressum

 




Programmierung

Inhalt:

Android-App: MapTrack (Reise-Tracking)

Android: Import von vCards (ohne störende Toasts und Notifications)

C++ Mau-Mau

Huffman-Code Implementierung (C++): Cpp String-Compression

LSF Noten Checker
(Automatische Noten-Benachrichtigung per E-Mail)


Mensa-Speiseplan auf dem Desktop

Programmierung eines kompletten Netzwerkes

Sudoku-Löser

Team Challenger Teil 1: Technische Planung

Team Challenger Teil 2: Spielidee

Team Challenger Teil 3: Synchronisation

Team Challenger Teil 4: OpenGL

Team Challenger Teil 5: Pseudo-Zufallsspiele

Update des LSF Noten Checkers

zum Inhaltsverzeichnis


Im Rahmen meiner Spezialisierung entstand in Zusammenarbeit mit Alexander Czyrny eine Android App, die ich an dieser Stelle vorstellen möchte.
Die App ermöglicht es, Reisen zu tracken, POIs (Point of Interest) hinzuzufügen und diese Reisen dann abzuspielen.
Als erstes möchte ich auf die Hauptfunktionen der App eingehen:
[weiter lesen…]

Keine Kommentare »

zum Inhaltsverzeichnis


Für das Importieren von Kontakten in das Android-Adressbuch gibt es unterschiedliche Wege. Es gibt die Möglichkeit über ContentValues die Kontaktinformationen anzulegen und anschließend über den Android-ContentResolver den Kontakt hinzuzufügen. Hierfür müssen aber alle Werte einzeln angelegt und entsprechenden Konstanten von Android zugewiesen werden. Somit ist die vCard zuerst zu parsen und für jedes Element eine Bedingung, die zur richtigen Konstanten führt, anzulegen. Das ist bei sich ändernden vCard-Versionen schwer erweiterbar und wartbar. Daher ist der gewünschte Weg ein direkter Import der vCard. Dafür ist eine nahe liegende Lösung ein Content Provider.

[weiter lesen…]

Keine Kommentare »

zum Inhaltsverzeichnis


C++ Mau-Mau
24.11.2011

Es gab mal wieder einen Beleg für das C++ Modul. Da dies etwas amüsant ist, will ich das hier mal posten.
Es handelt sich um das Spiel Mau-Mau, das objektorientiert und auf Console basierend programmiert werden sollte.

Mein Programm ermöglicht es nun 0-4 menschlichen Spielern und dem Rest vom PC gesteuerten Spielern (also auch 0-4) Mau-Mau mit den bekannten Grundregeln und den Sonderregeln (7: Ziehen, Bube: Wünschen, Ass: Aussetzen, Bube auf Bube nicht erlaubt) zu spielen.

[weiter lesen…]

1 Kommentar »

zum Inhaltsverzeichnis


In den letzten Tagen habe ich für einen Vortrag den Huffman Algorithmus in Cpp implementiert.

Da ich das Thema der String-Kompression sehr interessant finde, will ich euch heute den Code und die verschiedenen algorithmischen Herangehensweisen dazu vorstellen.

Zum Überblick aber erst mal ein paar Daten des Projekts:

Die Huffman-Klasse selbst, stellt alle notwendigen Möglichkeiten zur Verfügung, die der Huffman-Algorithmus ermöglicht.

Er ist stark an den Shannon-Fano-Algorithmus angelehnt. Allerdings ist die Optimalität des Binärbaums garantiert (Beweis siehe: Wikipedia-Artikel)

Dort sind auch weitere Beschreibungen zur theoretischen Funktionsweise nachzulesen. Auf diese möchte ich nicht länger eingehen, sondern mich auf die Implementierung konzentrieren. Eine Präsentation von mir auf Englisch über die theoretischen Ansätze, Vor- und Nachteile des Huffman Codes findet ihr aber auch in meiner Filebase.

[weiter lesen…]

1 Kommentar »

zum Inhaltsverzeichnis


Das LSF (Lehre Studium Forschung) dient für viele Hochschulen als Kurs- und Notenverteilung.
Leider besitzt es keine Benachrichtigungsfunktion für neu eingetragene Noten.
Alexander Czyrny und ich (David Hadizadeh) haben uns heute die Aufgabe gestellt, diese Funktion unabhängig vom LSF zu realisieren.
Den Code dazu wollen wir hier veröffentlichen.
Der LSF Noten Checker besteht aus fünf Dateien.
Die saveCount.txt und tmpSave.txt beinhalten das Ergebnis des letzten Aufrufes und reduzieren den Traffic zum LSF.
Beide Dateien sollten 777 (chmod) Rechte erhalten (Lese-, Schreibrechte sind mindestens notwendig).
Die einzige Datei, die angepasst werden muss, ist die config.php.
Diese beinhaltet euer LSF-Passwort, den LSF-Loginname (Matrikelnummer) und eine E-Mail-Adresse, an die die Benachrichtigungen für neue Noten gesendet werden.
Das Hauptscript selbst befindet sich in der lsf_reader.php. Diese stellt eine Verbindung mit der PHP eigenen Funktion Curl zum LSF her und liest die entsprechenden Daten aus.

[weiter lesen…]

Keine Kommentare »

zum Inhaltsverzeichnis


Wie einigen vermutlich bekannt ist, bin ich ein leidenschaftlicher Esser oder anders gesagt Nahrungsvernichter.
Aus dem Grund habe ich mir vor längerer Zeit ein kleines Widget gebastelt, um die Mensa-Speisekarten auf meinem Desktop zu sehen.
Dieses wurde dann noch an die HTW angepasst.
Eingeblendet werden alle Beilagen und die „Standard-Essen“. Aktionsessen habe ich ausgeblendet, da die sowieso meistens überteuert sind.
Da es sich hier ja um die Seite eines Informatik-Studenten handelt, will ich natürlich auch kurz auf die technischen Aspekte eingehen.
Das Ganze ist ein Widget für das Programm Samurize, das ich allen, die ihren Desktop ein wenig individueller gestalten wollen, ans Herz legen will.

[weiter lesen…]

Keine Kommentare »

zum Inhaltsverzeichnis


Dieses Projekt entstand im Rahmen einer großen Belegarbeit im Modul „Kommunikationssysteme“.
Das Projekt wurde in Groovy programmiert (war vorgeschrieben), was eine Abwandlung von Java ist. Ein Groovy-Framework wurde uns zur Verfügung gestellt.
Inhalt war die Programmierung eines Netzwerkes mit folgenden Daten:
2 File-Server, 1 Client, 1 Nameserver, insgesamt 4 Router, ein Hub.
Hierbei gab es 2 Netzwerke, die durch die Router mit verschiedenen Wegen verbunden wurden.
Das eine Netzwerk hatte die Token-Ring Topologie, das andere war ein Stern-Netzwerk.
Implementiert wurden alle Schichten und Protokolle der Netzwerke und der Geräte, mit zusätzlicher Fehlersteuerung und Wegefindung.

[weiter lesen…]

Keine Kommentare »

zum Inhaltsverzeichnis


Sudoku-Löser
19.11.2011

Ein kleines Praktikum an der Universität, das finde ich auf Grund seines praxisnahen Anwendungsbereichs erwähnenswert ist.
Das in Java geschriebene konsolenbasierte Programm liest automatisch ein Sudoku ein und löst es.
Hierbei ging es nicht um das Lösen allein, sondern auch um die Effizienz, bei der es das Tool unter die Top 10 geschafft hat.
Es hat am Ende ca. 30 verschieden schwierige Sudoku in 2 Sekunden gelöst.
Eine gute Lösung, um dem Sudoku-Wahn einen Strich durch die Rechnung zu machen.
Sollte allerdings behutsam eingesetzt werden, da es zu unerwarteten Reaktionen der Betroffenen kommen kann, wenn das neu gekaufte Sudoku-Buch auf diese Weise zu nichte gemacht wird.

Keine Kommentare »

zum Inhaltsverzeichnis


In den letzten Tagen habe ich angefangen ein Multiplattform-Spiel für Android und PC (Windows / Unix) zu planen und zu entwickeln. Dieses soll auf einem Client-Server Modell aufbauen.

Bei meinen Texten darüber will ich auf zwei Elemente genauer eingehen, die mich interessieren:

  • Client-Server-Synchronisation
  • Open-GL-Parser

[weiter lesen…]

Keine Kommentare »

zum Inhaltsverzeichnis


Heute will ich kurz auf die Spielidee eingehen.
Es ist keine innovative neue Idee, sondern eine Weiterführung einer App, die mir im Playstore sehr zugesagt hat. Es handelt sich dabei um ein Multiplayer-Spiel, das aus vielen verschiedenen einfachen Spielen besteht.
Dabei geht es im Groben um Wissen und um Geschwindigkeit.

[weiter lesen…]

Keine Kommentare »

zum Inhaltsverzeichnis


Kommen wir zum 3. Teil der Android-App-Planung, zur Synchronisation.
Dazu gibt es mehrere Möglichkeiten.
Bei vielen Tools spielt die Zeit eine Rolle, zu der die Daten vom Client beim Server ankommen.
Das zu realisieren ist trivial.
In meinem Fall benötige ich aber die Zeit des Absendens der Daten vom Client zum Server.
Der Grund dafür ist, dass bei einem Geschwindigkeitsspiel, wie im letzten Beitrag beschrieben,
interessant ist, wann der Spieler beim Client den Button gedrückt hat und nicht, ob er eine bessere
Anbindung zum Server hat, als ein anderer Client.

[weiter lesen…]

2 Kommentare »

zum Inhaltsverzeichnis


Heute will ich auf die Spiele selbst eingehen, die über das Client-Server-Modell gespielt werden können.
Im ersten Artikel hatte ich erwähnt, dass ich vermeiden will, jedes mal die App zu updaten, wenn es ein neues Einzelspiel gibt.

Dazu wollte ich einen OpenGL-Parser programmieren. Dies habe ich auch lange Zeit gemacht, was sehr aufwändig ist. Eine wirkliche Freiheit hat man dadurch aber nicht, da man stark eingeschränkt ist, was die Funktionen angeht (welche für den Parser implementiert wurden). Daher bin ich von diesem Gedanken weg gegangen und habe einen viel schöneren Weg gefunden.

[weiter lesen…]

2 Kommentare »

zum Inhaltsverzeichnis


In Artikel 2 hatte ich die verschiedenen Spielarten bereits erklärt. Dabei fällt auf, dass bei allen Spielen Zufallswerte eine große Rolle spielen.
Es macht keinen Sinn das Farbspiel mit immer der gleichen Abfolge zu spielen. Man wüsste dort schon vorher, wann zu drücken ist.
Genauso wenig macht es Sinn beim Client diese Abfolge per Zufall zu ermitteln. Beide Clients hätten dann unterschiedliche Abfolgen.

[weiter lesen…]

Keine Kommentare »

zum Inhaltsverzeichnis


Ich habe den LSF Noten Checker heute mal um eine interessante Funktion erweitert.

Es ist jetzt auch möglich, die geschützte PDF mit allen Studienleistungen anzusehen und daran auch den berechneten Notendurchschnitt zu prüfen. Dieser berechnet sich anhand folgender Formel: (Note * LP) / Gesamt-LP

Das Script parst die PDF und liest dadurch alle notwendigen Informationen auf.

Der Quellcode wurde wieder im Download-Center veröffentlicht.

Die Liste und der Notendurchschnitt sind über die Datei „average_calculator.php“ aufgerufen.

Viel Spaß mit den neuen LSF-Funktionen!

Keine Kommentare »

Impressum