January 19, 2014

Cleaning up iTunes library to avoid duplicates

I hate duplicate music files when using UPnP. It happens because I bought some music in iTunes as .m4a and need to convert it to .mp3 to use it on different players. So a cleanup of my library was neccessary, but how to do it?
Clean your iTunes libray
  1. Identify m4a files
  2. Convert it to mp3 (with iTunes)
  3. move m4a to another location outside iTunes library
  4. remove invalid references in iTunes (because of the move)
Here is how to do on a Win 7 machine:
  1. Use terminal to list files in a text file:
    - Navigate to your music folder and then
    for /r %M in (*.m4a) do @echo "%~nxM", "%~zM", "%~dpM" >>filelist.txt
    (http://superuser.com/a/458184/291367)
  2. Identify files to convert and convert it in íTunes to mp3
  3. Move .m4a (terminal, first navigate to your music folder and then)
    forfiles /S /M *.m4a /C "cmd /c move @file C:\TARGET"
    (http://superuser.com/a/458178/291367)
  4. see http://paulmayne.org/blog/2007/11/how-to-remove-broken-or-dead-tracks-from-itunes/ how to do this

January 8, 2012

How-to create individual HTML mass mailings


HTML email example
You need to create individual smart looking invitation emails e.g. for wedding or birthday or want to create an individual mass mailing, but you don´t have a newsletter server neither want to pay for a service offering such a solution online?

Solution described here requires only some knowledge of HTML and CSS. But you have to notice that creating an html email can be a very hard work to get it working on most email clients. Some popular clients like GMail or Outlook have lack of support for several CSS definitions. Though there are several guidelines that help to achieve cross-email client support. So if your layout isn´t too wicked it won´t be magic to create an individual mass mailing.

June 28, 2011

Blog reloaded

Mein Blog war nun eine ganze Zeit nicht mehr erreichbar, aber nun habe ich es endlich geschafft mich für eine technische Lösung zu entscheiden. Letztlich ist die Entscheidung auf Google Blogger gefallen, da hier mit wenig Aufwand viel erreicht/angepasst werden kann und das Ganze auch keine Kosten verursacht.

Die alten Inhalte sind migriert auch wenn einige Formatierungen suboptimal sind, aber es sollen hier demnächst natürlich auch wieder neue Posts erscheinen.

February 10, 2010

Best Practices für die Entwicklung von DSLs

Einen sehr interessanten Vortrag von Markus Völter auf der JAX 2009 gibt es jetzt als Video Stream. Seine Ausführungen stimmen zu sehr großen Teilen mit meinen Erfahrungen/Erkenntnissen im Bereich der modellgetriebenen Softwareentwicklung überein.

An dieser Stelle ein paar unsortierte Erkenntnisse, die mir nach dem Ansehen des Vortrags im Kopf herumschwirren. Für eine konkrete Einordnung in den Kontext sei an dieser Stelle nochmals das Video empfohlen.
  • Verwendung von Standards ≠ Verständnis
    • gutes Beispiel UML + Profil was Standard (OMG) ist, aber durch die spezifische Stereotypen etc. nicht zwingend verständlich ist
    • eine klar definierte DSL mit begrenztem Scope ist meistens die bessere Alternative, da einfach auch die Toolunterstützung bzw. die Handhabung einfacher ist (z. B. Xtext)
  • die Spezifikation eines UML Profils ist mühselig, komplex und unnötig aufwändig ebenso die Verwendung/Interpretation (bspw. in einem Generator)
  • die Verwendung von verschiedenen Tools ist problematisch, erzeugt inhaltliche Brüche und führt zu unnötigen/nervigen Problemen
  • Modell-zu-Modell (M2M) Transformationen sind sinnvoll um die Komplexität von Generatoren bzw. Templates zu reduzieren
  • Prozess von Entwicklung DSLs:
    • siehe Bild rechts (Screenshot aus den Video)
    • viele, sehr kurze Iterationszyklen
  • Textuelle DSLs sind eine pragmatische Lösung, die schnell zu ersten Ergebnissen führen
    • fühlt sich an sich wie Programmieren an
    • Benutzung von seit Jahren bewährten und ausgereiften Konzepten/Tools (z. B. Eclipse Editoren)
    • wenig Probleme hinsichtlich Zusammerarbeit, da bekannte Konzepte/Techniken für Quellcode verwendet werden können (CVS/SVN, Diff/Merge, ...) - das geht natürlich auch mit XMI (abstrakte Syntax), aber das ist wirklich nicht praxistauglich » bei textuellen DSLs funktioniert das auf der konreten Syntax!
    • einfache Skalierung, Partitionierung
    Teilschritte einer Iteration zur Entwicklung einer DSL

January 11, 2010

Drupal: Benachrichtigung wird nur angemeldeten Benutzer angezeigt

Diese Phänomen stellte sich mir vor einger Zeit. Für angemeldete Benutzer, egal welcher Gruppe sie zugeordnet waren, wurden die Benachtigungen des Drupal Benachrichtigungssystems angezeigt. Allerdings tauchten diese unverständlicherweise für unangemeldete Besucher nicht auf.


Nach stundenlangem Debuggen und Suchen im Netz fand ich dann eine triviale Lösung. Drupal erwartet einen Benutzer mit der uid 0 in seiner User-Datenbank. Anscheinend wird die Benutzer-Session von anonymen Besucher auf diesen Datensatz referenziert. Warum versteh ich zwar immer noch nicht, aber durch eine update-Funktion, die diesen Datensatz (User) anlegt, war das Problem gelöst.

December 2, 2009

Spring Webanwendung generieren

Inspiriert durch den Artikel Spring ROO - Codegenerierung "the Spring Way" von Mike Wiesner in Novemberausgabe des Java Magazins, probierte ich das neue Framework vor Kurzem mal aus. Der Ansatz CRUD-Anwendungen zu generieren ist zwar nicht neu, allerdings wirkt die Entwicklungsumgebung enorm leistungsstark. Zudem erscheinen mir die verwendeten Konzepte zur Organisation/Trennung von generierten und manuellen Artefakten recht praktikabel, so dass ein leichter Einstieg in die Domain-Driven Entwicklung von Anwendungen möglich ist.

Mit Spring Roo können komplette CRUD-Webanwendungen inklusive Zugriff per REST erzeugt werden. Die umfangreiche Konfiguration, die dafür notwendig ist, wird einfach generiert. Das stellt natürlich eine enorme Erleichterung dar und die ersten Schritte zu einer minimalen Anwendung sind schnell erledigt. Wie aufwendig die manuelle Implementierung einer solchen einfachen Anwendung ist, musste ich bereits in diesem Posting feststellen.

November 25, 2009

(English) Wordpress Plugin: Download Counter Visualization

Widget Chart example
Widget Chart example

last update: 2010-04-14

This plugin adds a widget to display download statistics based on the Download Counter plugin on your site. The sidebar widget will show a highly configurable chart based on the Google Chart API. Furthermore it offers a dashboard widget that summarizes your downloads, to get information quick at a glance.

The plugin supports following chart types:
  • Bar (horizontal)
  • Pie
  • Pie 3D

You can include a chart of your downloads on a page or in a post using the downloadcounterchart-shortcut. Of course a download chart is includable in your theme. See extended documentation for detailed explanations for that.

August 21, 2009

Usain Bolts Auto?

Er läuft bei der Leichtathletik WM an diesen Tagen alles in Grund und Boden und stellt zwei neue Weltrekorde über 100 und 200 Meter auf. Aber wie bewegt sich der schnellste Mann der Welt im täglichen Leben von A nach B? Die Antwort fand ich heute zufällig auf der Straße vor meiner Wohnung...

Bolts Auto?
Bolts Auto?

July 6, 2009

REST-Anwendungen mit Spring 3.0

Die Interoperabilität zwischen heterogenen Softwaressystemen ist eine interessante Aufgabe. Zur Realisierung stehen heutzutage Web-Services über SOAP oder die Verwendung von REST zur Verfügung. Web-Services über SOAP sind unabhängig vom Übertragungsprotokoll und damit flexibler als REST, wobei HTTP verwendet wird. Außerdem sind für Web-Services ausführliche Definitionen der Schnittstellen (WSDL) und beim Austausch von Daten ein großer Anteil von Verwaltungsinformationen innerhalb der ausgetauschten XML-Nachrichten erforderlich. Das hat auch alles seine Vorteile, aber für eine einfache Anwendung, die lediglich Dienste/Informationen für andere Software zur Verfügung stellen möchte, scheint derzeit mit REST und der Verwendung des verbreiteten HTTP der pragmatischere Ansatz vorzuliegen.

In diesem Beitrag soll es aber nicht über die Unterschiede oder Vor- und Nachteile von Web-Services über SOAP gegenüber REST gehen, sondern die einfache Implementierung von Funktionalität über REST mit Spring 3.0 aufgezeigt werden. Anzumerken in diesem Zusammenhang sei noch, dass zum jetzigen Zeitpunkt Spring 3.0 noch nicht fertiggestellt ist und der Milestone 3 Verwendung findet. Allerdings sollte sich an der Anwendung nichts Grundlegendes ändern, da das Release von Spring 3.0 für das zweite Halbjahr 2009 angekündigt ist.

Zur Demonstration zeige ich in diesem und den folgenen Beiträgen die Implementierung einer rudimentären Webanwendung mit Sping MVC. Diese soll lediglich eine einfaches Ticketssystem abbilden, wobei lediglich Tickets angezeigt und die CRUD-Operationen unterstützt werden.

June 29, 2009

Quellcodeschnipsel in Eclipse

Innerhalb des WTP-Eclipse-Plugins gibt es eine Snippets-View, die zur Verwaltung von häufig verwendeten Quellcode-Abschnitten fungiert. Standardmässig sind bereits einige JSP-Codeschnipsel, wie z. B. der Include-Direktive, enthalten. Allerdings kann die Auswahl um weitere Kategorien (z. B. Java, PHP) und natürlich Codeschnipsel erweitert werden. Dabei lassen sich auch Platzhalter definieren, die beim einfügen per Doppelklick oder Drag´n Drop mit konkreten Werten ersetzt werden.

Interessant ist auch die Aktivierung/Deaktivierung der Anzeige von bestimmten Schnipsel-Kategorien je nachdem, was für ein Dateityp gerade in einem Editor geöffnet ist. Beispielsweise werden so Java-Schnippsel nur bei Java-Quellcode-Dateien angezeigt. Ebenso ist für einen Import und Export der Schnipsel im XML-Format gesorgt, so dass man seine Schnipsel auch mit anderen teilen kann.