Betr. JPA

Bisher hat der Umbau der vorhanden Klassen hinsichtlich der Nutzung von JPA promblemloser funktioniert als gedacht. Bisher versuche ich halt nur, das User Objekt aus der Tabelle User auszulesen.
Letztendlich muss ich aber mein bisheriges Konzept soweit umstellen, dass ich die Validierung von Eingaben aus der User Klasse in eine sperate Application Klasse auslagere.
Allen anschein nach klappt das Laden der User Klasse mit Hilfe eines EntityManagers fehlerlos, allerdings scheint es da an einigen Stellen noch zu Problemen zu kommen.
Nach der Überarbeitung sieht die User Klasse nun wie folgt aus:

Die Methoden isLogin and isWithName werden dann wahrscheinlich auch ausgelagert werden müssen. Das Attribut error wird wohl einer Fehlerbehandlungsklasse weichen und in Folge dessen als Sammlung von Exceptions implimentiert werden.
Als Primary Key habe ich mich jetzt für das Attribut Name entschieden, da es scheinbar nur möglich ist, die find Methode des EntityManagers anhand eines Primary keys zu nutzen und ich aller Vorraussicht nach eher nach Namen als nach IDs suchen werde.
Das Laden des Objektes passiert nun in einer neuen Klasse Application:

Leider wird mir bei der Methode showID() eine NullPointerException geworfen, die ich noch nicht ganz nachvollziehen kann :-/. Letztendlich wird mir JPA aber denke ich eine Menge an Arbeit abnehmen, sobald es erstmal stabil läuft.
Bei Sun habe ich allerdings noch ein Beispiel gefunden, was wie perfekt für mich zu sein scheint, weil es schon ziemlich viel von dem behandelt, was ich eigentlich machen möchte [1]

Was bisher so geschieht…

Moin…
Ich wollte mal wieder ein wenig Feedback geben, woran ich bisher so sitze…
Letztendlich bin ich endlich mit einer schönen Datenbankklasse ausgestattet, die mir auch die Dinge bietet, auf die ich angewiesen sein werde – ob da jetzt noch etwas dazu kommt, wird sich zeigen, aber erstmal reicht mir das, was bisher vorhanden ist. Zudem bin ich auf ein paar Besonderheiten von JSP/Java und MySQL gestossen, die in meinen Augen recht unlogisch sind, aber nunja, vielleicht gibt sich das noch.
Mein bisheriger Plan ist es, jetzt erstmal die Grundfunktionen des Servers mit einer einfachen HTML Oberfläche zu erstellen, um dann den Client mit Hilfe von YUI dynamischer zu gestallten.
Aber jetzt erstmall ein Überblick über die Klassen:

Die statische Config Klasse ist erst später hinzugekommen, sodass ich die Attribute aus der Datenbankklasse, welche den Zugriff betreffen wohl dann entferne und die Benutzerdaten zentral in der Config Klasse speichere.
Ich habe jetzt auch schon erste Tests mit einer Session hinter mir, aber das Klassendesign ist noch sehr gewöhnungsbedürftig ^^.

Die Klasse TOOLS soll einfach zur Sammlung verschiedener Funktionen dienen.
Die md5 Methode dient einfach dazu, einen gegeben String als md5 Summe zurückzugeben. Dies brauche ich u.a. für die Passwörter.
Sobald ich die erste HTML Oberfläche habe (die dann einfaches Anmelden, Erstellen und Auflisten von Einträgen beherrschen wird, werd ich erste Funktionstests machen.
Das Schöne, was ich an Eclipse gefunden habe ist, dass man per Vorgabe einfache TextKlassen für Klassen erstellen kann. Dort werden alle Methoden einmal aufgerufen.
Ob das für ein Unit Testing ausreicht muss ich dann noch mal sehen.

Achja… Java und MySQL: Die erhaltenen Einträge aus der Datenbank speichert Java in einem sog. Resultset. Mit der methode next() kann man die verschiedenen Einträge durchblättern. Das komische ist nur, dass wenn – nachweislich – nur ein Eintrag vorhanden ist, muss man dennoch einmal die next() methode aufrufen.
Also muss man von 0. Eintrag auf den 1. blättern? O_o. Meiner Meinung nach irgendwie unnlogisch. Dementsprechend hat mich das auch ein wenig aufgehalten.
Betroffen war u.a. diese Methode aus der Klasse User:

public void load(){
    this.DB.Query("SELECT `ID`, `password` " + 
                   "FROM `users` WHERE `name` = '"+this.name+"' ");
    try {
        ResultSet res = this.DB.getLastResult();
        System.out.println(res.toString());
        res.next();
        this.ID = res.getInt("ID");
        this.password = res.getString("password");
    }catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

Ob ich jetzt das “erste Blättern” in der getLastResult() unterbringe habe ich mir noch nicht überlegt.
Wünsche allen frohes Schaffen und ein schönes Rest-Wochenende!

simple iPhoto Gallery Script

Some time ago, i searched for a very simple possibility for publishing some photos online.
As a Mac User i am recently using iPhoto for collecting and organizing my photos.

I reused some old PHP code and create a simple Script, that searches through some iPhoto Web Exports to build a nice index page with folder previews:

phpGallery Screen1

The folder structure should be as the following:
phpGallery Screen2

As i do not have other language Versions of iPhoto, i do not know, if the scripts works also with other Versions of iPhoto.

Here you can download the very first version of the script:

PHP_Gallery_Script_for_iPhoto06_german

Die Sache mit den Emails (vorsicht, hoher Geek Faktor!)

Da einem Kollegen von mir Namentlich Bartosz, regelmäßig teilweise wirklich unglaubliche Dinge passieren, habe ich mal angefragt, und werde jetzt hin und wieder daraus etwas schildern…. tada…. *Tusch oder so*

Bartosz Welt:

Neulich beim abendlichen Chat mit einem Bekannten:

< 23:21:19 xxxxxxxxx: die uni bei uns hat jetzt nen neuen spamfilter - exchange spam irgendwas, extern gehostet bei microsoft. halte ich nicht sehr viel von, daß auch nur eine meiner mails durch microsofts hände geht... also habe ich dem support ne mail geschrieben, daß ich bitte auf den spamfilter verzichten will. leider scheint meine nachricht bei denen im spam gelandet zu sein. klasse. gut gemacht, microsoft. >

Just ein paar Tage bekam ich von dem Administrator der Universität Coventry – wie wahrscheinlich viele Studenten der Uni Coventry folgende Email:

< There is currently a problem with email in that incoming emails to the University are being bounced back to senders. The problem has been traced to the external iCritical anti-spam service and they are currently investigating. We expect a further update from them in half an hour or so. Most external email systems will continue trying to deliver for some time and so when iCritical fix the problem, these pending emails should then be delivered. That process may take some time however (as there will be a backlog). We are currently hopeful of seeing any such delay cleared by Monday. Outgoing mail will not be affected by this fault. >

Es ist schon erstaunlich…. da nutzen die einen extra Anbieter für Ihre Spambewältigung…

Da ich obiges Gespräch noch deutlich im Hinterkopf hatte, habe ich das einfach mal meinem Kontakt mitgeteilt und verhielt folgende doch recht spassige Antwort:

< Von: Bartosz xxxxxxxxxxxxx
Datum: 20. Januar 2007 23:30:04 GMT+00:00
An: Philipp Haussleiter
Betreff: Re: Fwd: Email problem – Update
Jetzt rate mal was die fürn n spamfilter haben? 😀

Zumindest einen, dessen Webseite mehr nach Enterprise und Web 2.0 aussieht als die von unserem off-site SPAM-Filter:

https://spam.frontbridge.com/

Sicher, mir kann das an sich auch schnurz piepe sein, was die Uni einsetzt – ich habe für meine Uni-Mail-Adresse sofort eine Weiterleitung auf bartosz@xyz gesetzt, für den Fall daß irgendein Depp da ne Mail hinschickt, benutze aber auch an der Uni immer nur meine Privatadresse.

Lustigerweise ist eine Weiterleitung an eine nicht-Uni-Adresse übrigens verboten. Angeblich verursacht das sonst hohe Kosten wegen der großen zu übertragenden Datenmengen. Aber wenn alle ununterbrochen YouTube-Videos schauen und sich per MSN Messenger (ja, auf den stehen die hier alle total) und Webcam unterhalten, dann ist alles in Butter… Ich leite meine @tcd.ie-Adresse daher an meine, ebensowenig gewollte oder bewußt genutzte, @cs.tcd.ie-Adresse weiter. Von *dieser* Adresse aus dann ist eine Weiterleitung dann plötzlich erlaubt, egal ob nach Timbuktu oder Tatarstan. Das liegt daran, daß die Informatik ihr eigenes Netz betriebt und ihre eigenen Regeln aufstellt. Albern ist es aber allemal.

Und dieser ganze Unfug führt zu albernen Situationen wie dieser: Ich habe letztens eine Mail an Paul geschickt. Der sitzt am Schreibtisch neben mir, vielleicht einen Meter entfernt. Meine Mail ging erst per SSH-Tunnel, der per OpenVPN durch den SOCKS-Proxy der Uni getunnelt wird (um die blöde Regelung zu umgehen, daß nur bestimmte Dienste und Ports erlaubt sind) zum OpenWrt-Router bei meinen Eltern in Dortmund. Von dort aus ging es weiter zum Mailserver von all-inkl.de. Dieser hat die Nachricht dann an Pauls Mailserver an der Carnegie Mellon University geschickt. Paul hat die Mail empfangen und mit mutt gelesen – eingeloggt auf einem CMU-Server per SSH, über SOCKS getunnelt.

Hätte er an meine @tcd.ie Adresse zurückgeschrieben, wäre die Reise noch abenteuerlicher geworden: Von Pauls Schreibtisch aus über SSH und SOCKS mit mutt geschrieben, wäre die Nachricht nach einem kurzen Aufenthalt in den USA nach Irland zurückgekommen. Der tcd.ie-Mailserver hätte sie an den cs.tcd.ie-Server geleitet. Dieser wiederum hätte die Nachricht an bartosz@xyz und damit zu all-inkl.de in Deutschland geschickt. Von hier hätte ich sie abgerufen, mit Thunderbird über den SSH-Tunnel im OpenVPN-Tunnel zum OpenWrt-Router durch den SOCKS-Proxy. Ich mag gar nicht zählen, wie oft diese Nachricht das TCD-Netzwerk betreten und verlassen hätte – und all das nur, um deren Bandbreite zu schonen. Das sind schon ein paar ganz tolle Helden, die das hier alles geplant haben.

Und die Krönung des ganzen ist dann noch der externe Spam-Filter. Die Nachricht hätte eine weitere Runde über den großen Teich gedreht, weil sie der tcd.ie-Mailserver zur Kontrolle an frontbridge.com geschickt und von dort wieder zurückbekommen hätte.

Ja, so ist das, wenn Administratoren sich aufspielen und technisch versierte Nutzer sich widersetzen. Wahrscheinlich sollten wir, wie 99% des Univolkes, den erbärmlichen Webmailer einsetzen und niemals hinterfragen, ob dies der Weisheit letzter Schluß sein kann…

Gruß,
– Bartosz

PS: Meine Rechtschreibprüfung kennt “Timbuktu” nicht… sowas.

Ich muss mir unbedingt mal die Zeit nehmen um die Emails auf der großen Weltkarte einzuzeichnen >

Email und pgms

Ich habe mich mal wieder hingesetzt und ein paar Dinge programmiert :-).

1.) Email Formular auf meiner Seite hier sollte nun spamsicher sein.
2.) ein Programm, das Bilder aus dem .png, .bmp, .jpg, .gif Format in das .pgm greyscale Format konvertiert, dieses Format brauche ich in meiner Wahlveranstaltung Bildverarbeitung. War eigentlich nicht schwierig zu schreiben… zu finden – wie immer – hier.

Software -> Downloads