knuspermagier.de
Er bloggt noch? Krass!

Alter Kram 1: Cameron

Immer mal wieder finde ich auf einer alten Festplatte oder in einem Ordnern mit “Archiv” im Namen alte Projekte von mir, die ich seit Jahren nicht mehr gesehen habe. In dieser neuen Blog-Serie möchte ich ein paar davon hier vorstellen.

Was ist das?

cameron war ein Tool mit dem ich meine Einnahmen und Ausgaben verwalten konnte. Laut svn info war der letzte Commit im Oktober 2007, ich denke also, ich habe es im ersten Semester des Studiums geschrieben und dann benutzt. Wann ich aufgehört habe, es zu benutzen, weiß ich nicht mehr.

Wie sieht’s aus?

install.png
add.png
graph.png
settings.png

Was kann es?

Nach kurzer Inspektion fallen mir folgende Features auf:

  • Geführter Installationsprozess
  • Passwortschutz
  • Anlegen von Buchungen mit verschiedenen Farben zur Orientierung
  • Anlegen von “Geplanten Buchungen” um monatliche Fixkosten, oder geplante, hohe Einmalzahlungen in der Zukunft im Blick zu halten. (Ich glaube er hat sogar erkannt, ob eine monatliche Buchung dann schon eingetragen wurde und hat das entsprechend angezeigt)
  • Ein superspannender Verlaufs-Graph
  • Einstellungen für die Darstellung der Zahlen

Wie ist der Code?

Frontendseitig verwendete ich mootools für ein paar dinge, wie das Farb-Popup und die Ajax-Library. Natürlich hatte dieses Projekt schon Ajax!

function YesNo(msg)
{
    return confirm(msg);
}

Abgesehen davon fand ich nichts dummes im Javascript.

Im Backend habe ich cameron natürlich mit PHP umgesetzt, komischweise ohne das knusperFramework. Ich dachte eigentlich, dass hätte ich damals schon gehabt. Immerhin gibt’s hier schon meine DB_MySQL-Klasse, die ich wirklich lange benutzte um einen (wirklich klitzekleinen) Abstraktionslayer zu mysql_query und leichte Querybuilder-Ansätze zu haben.

 $_arr_list = array();
        while($x = $db->FetchArray($y))
        {
            // überprüfen ob die monatlichen dinge in diesem monat schon getan wurden
            // TODO: optimieren,..
            if($x['type'] == "M")
            {
                $r = $db->Select("id", "konto", "WHERE MONTH(`date`) = '$month' AND YEAR(`date`) = '$year' AND `text` LIKE '". $x['text'] ."%'");
                if($r != NULL)
                    $x['done'] = true;
            }

            $x['text'] = stripslashes($x['text']);
            $_arr_list[] = $x;
        }

Wie man sieht, verteilte ich auch damals schon gerne Kommentare wie Todo: Optimieren im Code. Hat natürlich nie jemand optimiert.

Ansonsten ist alles relativ aufgeräumt, dafür dass es noch keine fancy MVC-Frameworks gab. Die Logik für die unterschiedlichen Ansichten ist in view_xyz.php-Dateien aufgeteilt, die je nach action-GET-Parameter inkludiert werden, diese bereiten dann Variablen vor und inkludieren jeweils entsprechende Templates.

Das einzige wirklich chaotische ist die ajax.php, die einfach alle Aktionen die per Javascript angerufen wurden beinhaltet. Warum auch nicht.

Den Graph erstellte ich mit jpgraph Version 2.2. Die Library gibt es immer noch!

Insgesamt bin ich zufrieden mit meinem 2007er Ich. Wahrscheinlich hörte ich irgendwann auf es zu benutzen, weil es zu anstrengend wurde jede Transaktion manuell zu tracken. Ein paar Jahre später fing ich jedenfalls mit kam (knusperAusgabenManager) erneut an, so eine Anwendung zu bauen. Version 3 davon benutze ich auch heute noch.