Archiv zur Kategorie: Tools

Migrating from Coppermine to SmugMug with 100 LOC (or so)

Since I was spending a great deal of last weekend’s time on migrating my Coppermine photo albums over to my brand-new SmugMug account, I thought it might be helpful to others to summarize my experiences here. First of all, the whole process (transferring several thousands of photos uploaded over the last 7 years into my Coppermine installation) went pretty smooth, that is mostly because of the brilliant pysmug Python library by Brian Zimmer as well as SmugMug great and reliable API (provided as a RESTful web-service).

Here is a step-by-step instruction on how to upload your existing coppermine albums into your SmugMug account. You need to have generated an API Key inside the SmugMug control panel for the upload process.

(1) Download and install pysmug package on your system, usually boils down to something like:
tar xvzf pysmug-0.5.tgz
cd pysmug-0.5
sudo python setup.py install

(2) Prepare SmugMug API access by setting up ~/.pysmugrc according to your individual user ID and API Key:
[pysmug]
login=login_withHash
smugmug=pysmug.SmugTool

[login_withHash]
APIKey = UZm0Y4…
userId = 999999
passwordHash = $1$.s…

(3) (optional) If your camera happens to embed rotation information as EXIF inside the JPEGs, you might want to rotate the photos before uploading accordingly. Unfortunately the upload API call does not support rotating on the SmugMug server-side, and also it seems like the rotation information got somehow eaten on upload. A small bash script using the great ImageMagick toolkit can do the conversion in a moment:

#!/bin/bash
path=$1
find $path* -type f -iname "*.jpg" ! -iname "thumb*" ! -iname "square*" ! -iname "medium*" | while read FILE
do
echo $FILE
convert -auto-orient "$FILE" "$FILE"
done

(4) Download my Python script cpg2smugmug.py and modify the header according to your Coppermine installation (specifically the MySQL connection settings and the path to your album root directory).

(5) Execute python cpg2smugmug.py and watch how the categories and albums got created and after wards the photos (on an album by album batch) uploaded into your SmugMug account.

Have fun!

Spass an Logfiles

Noch nie hat das Verfolgen von Log Dateien in Echtzeit soviel Spass bereitet, wie mit glTail. Einem fantastischem (Ruby basiertem) Tool, das sich einfach per SSH an eine oder mehrere Apache Instanz verbindet, und dort inkrementell die neuesten Einträge per tail abgreift und auswertet. Die grafische Darstellung ist sehr ansprechend mit OpenGL umgesetzt und erinnert stark an ein Pong Spiel zwischen den anfragenden Usern und dem antwortendem Webserver. Das Tool lässt sich mit dem Installieren eines gem Files schnell an den Start bringen, und ist durch eine (leider so gut wie nicht dokumentierte) Konfigurationsdatei in vielen Bereichen anpassbar. Das schön dabei, nicht nur Apache access logs können visualisiert werden, sondern auch weitere Webserver, Mailserver, DB Server Logs.

Verkette Dich mit SnapLogic

Analog zu Yahoo Pipes bietet SnapLogic eine Open Source Lösung (in der Community Edition) an, mit der Informationen gefiltert, verknüpft und ausgeliefert werden können. Als Datenquellen können dazu RESTful web services eingebunden werden, das Administrieren der Pipelines geht mit dem SnapLogic Designer (einem Flex basiertem Tool) elegant von der Hand. Für Unternehmen wird ausserdem eine “Enterprise Edition” mit technischem Support angeboten. Macht einen guten Eindruck, bleibt abzuwarten ob die versprochene Really Simple Integration ein ähnlich großer Erfolg wie Really Simple Syndication (RSS) wird…

Cross-Browser Akzeptanztests

Ein weiteres feines Nutzzeug aus dem Hause Thoughtworks gilt heute die Aufmerksamkeit. Auch wenn es eher an den Chemie Unterricht erinnert (lang, lang ists her), so ist Selenium laut Webseite The coolest web testing tool money can’t buy. Es geht den mit Fitnesse eingeschlagenen Weg konsequent weiter, die Akzeptanztests einer Webapplikation werden hier unmittelbar im Browser ausgeführt (JavaScript sei Dank).

Die Testschritte werden im FIT Stil in einer HTML Tabelle gehalten und Assertions fröhlich eingebettet. Auch an continuous integration ist gedacht, so kann per ant task beispielsweise Firefox mit dem Start der Testsuite beauftragt werden, und auf eine speziell zur Verfügung gestellte Ergebnisseite. Weitere Inspirationen entnehme man dem ausführlichen Bericht von Grig Gheorghiu (sowie Teil 1).

Hibernate’s Cache unter der Haube

Die Cache Mechanismen von Hibernate sind nicht nur vielfältig konfigurierbar, sondern auch schwer validierbar. Der Artikel Gathering Performance Metrics for Hibernate (aus dem Buch Hibernate: A J2EE™ Developer’s Guide) beleuchtet eine magische Seite von Hibernate und bringt Licht ins Dunkel.

Zu Beginn wird den generierten SQL Statements der HQL Queries per P6Spy in Kombination mit IronTrack SQL auf die Finger geschaut. Anschliessend steht das Konfigurieren eines Connection an (c3p0, dbcp, proxool), bis dann richtig interessant wird und nachgewiesen wann der first- und second-level greift.

CruiseControl und Subversion

Matt Raible beschreibt, wie er CruiseControl überredet hat auf die Änderungen eines Subversion Repositories zu lauschen. Zum Einsatz kommt dabei der Ant Task svant. Nachdem nun Subversion langsam in den Projektalltag einzieht, müssen nun also die Tools auf die Ablösung von CVS durchleuchtet werden.

Log4J und Eclipse

Aus der Abteilung Ziemlich hinterhältig: Anstatt sich die log4j.properties aus dem CLASSPATH zu schnappen, mischt Eclipse mit und man muss explizit mit einer Variablen LOG4J_PROPS den Pfad auf die zu verwendene Konfigurationsdatei angeben. So gelingt es dann auch, die individuellen Log4J Einstellungen beim Ausführen eines Java Programms in Eclipse zu verwenden.

JavaGen: Ant tasks

JavaGen are very helpful ant taks for generating Java classes (POJO/Hibernate/DTO/Struts) from UML class diagrams resp. the corresponding XMI files (as provided from Poseidon 3.0).

Commonclipse eclipse plug-in

Something I was missing from IDEA, the auto-generation of hashcode and equals methods for new POJOs is also available in eclipse, of course.

Link: Commonclipse eclipse Plug-in - Commonclipse eclipse plug-in

Compass project

Compass is a powerful, transactional, high performance object/search engine mapping (OSEM) and persistence framework for Java. A promising project at sourceforge making use of Lucene.

Update: The project moved it’s homepage now over to www.compassframework.org.


Warning: stristr() [function.stristr]: Empty delimiter in /var/www/web2/web/wp-content/plugins/wassup/wassup.php on line 2093