technisches

Friday, 15. July 2005

Wikipedia

Heut muss/soll/will ich firmenintern im Rahmen unserer Think!Loud-Reihe einen Vortrag über LDAP halten, und merke beim Zusammenstellen meiner Unterlagen, dass ich fast ausschließlich nur noch Wikipedia zusammenfasse. Sprich eine Zusammenfassung einer Zusammenfassung.

Und dann erinnert man sich an die mühsamen langwierigen Recherchen für diverse Schulreferate. Was machen denn die Schüler, bzw wir alle nun mit der vielen schönen Zeit die wir durch die technologische Entwicklung gewonnen haben...

...weiter entwickeln, vermute ich mal. Also ich mach mich wieder ran an die Arbeit.

Falls ich dennoch wider Erwarten etwas Spannendes über LDAP ausfindig mache, dann werd ich das natürlich hier reinstellen.

Nachtrag: Es wird übrigens gerade der Karl-Marx-Hof auf der Startseite von Wikipedia gefeatured.

Wednesday, 13. July 2005

(Noch unbezahlte) Werbeeinschaltung

Seitdem ich mir vor rund 2 Monaten einen neuen Laptop zulegen musste, und ich seitdem auch nur noch von diesem Laptop schwärme (ohne dass mir der bezahlte Preis noch Schuldgefühle macht), haben sich in meinem Freundes- und Firmenkreis bereits 5 andere genau diesen zugelegt. Und zwar handelt es sich ums, trara...
Samsung X20 XVM 1600 III
Ich fordere also von Samsung Provision für die bisherigen Weiterempfehlung, als auch für die hier erfolgte Werbeeinschaltung.

Bzgl Notebooktaschen bin ich noch am überlegen. Crumpler hat schwer lässige Covers, aber leider eben viel zu teuer. Ich schätze ein €9,90 Teil von Hama wird es auch tun. Oder hat sonst jemand vielleicht Tipps für mich?

Linkdump du Jour

-> http://xprofile.berlios.de/
-> http://xprofile.berlios.de/UserShortcuts
-> http://erfurtwiki.sourceforge.net/MarioSalzer
-> http://www.identitycommons.net/

Tuesday, 12. July 2005

JCaptcha in Helma, bzw auf twoday.net

Manch einer mag bemerkt haben, dass wenn man sich neuerdings auf twoday.net registrieren will, dass man ein Bild wie folgendes entziffern muss:
Nicht ganz leicht für das menschliche Auge, aber noch viel viel schwieriger für einen Spam-Bot zu lesen! Und hier offenbart sich auch schon der Sinn dieses Bildchens. Automatisiert ablaufenden Skripts, welche sich in Massen bei Services registrieren um Spam-Kommentare zu hinterlassen, soll das Handwerk legt. Gottseidank sind wir hier bei twoday.net noch ein Land Dorf der Seeligen, und sind bisher weitestgehend verschont geblieben (bis auf die Referer-Spammer). Aber man kann nie vorsichtig genug sein. Vor allem wenn wir künftig auch anonymes Kommentieren (ohne vorherige Registrierung) hier erlauben wollen.

Nun denn, nun zum Technischen:
JCaptcha ist eine Java-Library, welche genau dafür gedacht ist, solche verzerrten Bilder zu generieren. Und dies macht diese Library auch sehr brav. Mit der API-Dokumentation selbst fangt man allerdings nicht viel an, und verflucht zu solchen Anlässen mal wieder die dutzenden Interfaces/Klassen-Verschachtelungen einer solchen, eigentlich simplen Library. Nachdem man aber nach paar Beispielen gegoogelt hat, stellt sich aber die Verwendung der Library doch als recht simpel heraus:

function modJCaptcha_action() {

   if (!app.data.modJCaptchaService) {
      app.data.modJCaptchaService = new Packages.com.octo.captcha.engine.image.gimpy.DefaultGimpyEngine();
   }

   session.data.modJCaptcha = app.data.modJCaptchaService.getNextCaptcha();
   var challenge = session.data.modJCaptcha.getImageChallenge();
   var jpegOutputStream = new java.io.ByteArrayOutputStream();
   var jpegEncoder = Packages.com.sun.image.codec.jpeg.JPEGCodec.createJPEGEncoder(jpegOutputStream);
   jpegEncoder.encode(challenge);
   var captchaChallengeAsJpeg = jpegOutputStream.toByteArray();
   res.contentType = "image/jpeg";
   res.writeBinary(jpegOutputStream.toByteArray());
   return;
}
Beim Registrieren selbst muss man dann nur noch abfragen, ob der eingegebene Text auch der Challenge entspricht:

   if (!session.data.modJCaptcha) {
      throw new Exception("modJCaptcha.noChallenge");
   }
   if (session.data.modJCaptcha.validateResponse(req.data.modJCaptchaAnswer) == false) {
      throw new Exception("modJCaptcha.wrongAnswer");
   }
   session.data.modJCaptcha = null;
That's it! So einfach kanns gehen, und so dankbar ist man dann dass man von Helma aus beliebige Java-Klassen ganz bequem scripten kann.

Will man jedoch die Höhe oder Breite des Bilds ändern, dann kann man nicht mehr die Default-Engine verwenden, und die Anzahl der Code-Zeilen verdoppelt sich dann gleich mal mit einem Schlag.

Nachtrag: Soeben wurde mir folgendes angezeigt..
usuck
Das geht ja dann doch wohl etwas zu weit. Vor allem wenn man sich gerade registrieren will :-)

Monday, 11. July 2005

Aus Fehlern lernen

Freitag stand ein OS-Wechsel von SuSE auf Debian Sarge auf einem unserer Kunden-Server auf dem Programm. Ein Task der bereits auf all unseren anderen Servern von uns durchgeführt wurde, und eigentlich keine Schwierigkeiten mehr bereiten sollte. Backup der Daten machen, Debian neu aufsetzen, Backup wiederherstellen, Apache/MySQL/Java/Helma/Exim4 installieren und schlußendlich Firewall einrichten. Und dennoch kam der minutiös geplante Ablauf durcheinander, und das gleich aus mehreren Gründen:
* Das Verzeichnis in dass Apache (laut alter vhosts.conf) hätte loggen sollen, gab es nicht. In einem solchen Fall macht Apache keinerlei Anstalten einem darauf aufmerksam zu machen, sondern startet brav, spielt aber keine einzige Seite raus.
* In der Helma-Applikation deaktivierte ich alle scheduler-Aufrufe, übersah aber eine Zeile:
cron.export.timeout = 1800000
Auch das verhinderte komplett dass Helma lief, da eine NullPointer-Exception geworfen wird, welche einen nicht auf den Fehler aufmerksam macht (Nachtrag: es blockiert Helma doch nicht komplett. Ich hab mich lediglich von der Fehler-Meldung zu sehr irritieren lassen.)
* Ich hab anstatt den AJP13-Port den XMLRPC-Port unter 8009 für Helma aktiviert.
* Ich hab MySQL-Sources vom alten Rechner genommen, und versucht diese am neuen zu kompilieren. Aber das schlug fehl, da darin anscheinend noch alte bereits kompilierte Dateien lagen. Ich musste mir also eine aktuelle Source-Distribution von der MySQL-Seite holen.
Allesamt Kleinigkeiten, und doch ärgern mich solche Fehler sehr. Jetzt wo ich sie aufgeschrieben hab, werd ich sie hoffentlich nicht noch einmal begehen. Der nächste Ablaufplan wird jedenfalls nun noch detaillierter ausfallen müssen.

Alles in allem bin ich aber heilfroh nun endlich eine stabile, leicht-zu-aktualisierende Linux-Distribution wie Debian Sarge überall im Einsatz zu haben. Kann ich nur jeden herzlichst weiterempfehlen.

Saturday, 9. July 2005

Gestern gelernt...

Write
var v = new Video();
v.name = 'video01';
root.videos.add(v);
and not
var v = new Video();
root.videos.add(v);
v.name = 'video01';
in Helma! Ansonsten kann man dann im gleichen Request über die root.videos-Collection nicht auf das Objekt über den accessname zugreifen. Man lernt anscheinend nie aus.

Search

 

About michi

michi Michi a.k.a. 'Michael Platzer' is one of the Knallgraus, a Vienna-based New Media Agency, that deals more and more with 'stuff' that is commonly termed as Social Software.

Meet my fellow bloggers at Planet Knallgrau.

my delicious

Recent Updates

My Gadgets

Credits

Knallgrau New Media Solutions - Web Agentur f�r neue Medien

powered by Antville powered by Helma


Creative Commons License

xml version of this page
xml version of this page (summary)
xml version of this topic

twoday.net AGB

Counter



berufliches
blogosphaerisches
privates
spassiges
sportliches
technisches
trauriges
Profil
Logout
Subscribe Weblog