System Properties an Tests in Maven Build übergeben

25. Mai 2010

Leider funktioniert die normale Übergabe von System Properties via

-DpropXYZ=...

nicht direkt, sondern erfordert (zumindest mit dem Surefire-Test-Plugin) folgenden “Umweg”:

-DargLine="-DpropXYZ=..."

Alternativ kann man die Properties auch im Config-Abschnitt für das Surefire-Plugin setzen:

...
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <configuration>
    <systemPropertyVariables>
      <propXYZ>...</propXYZ>
      [...]
    </systemPropertyVariables>
  </configuration>
</plugin>
...

siehe auch: http://www.cowtowncoder.com/blog/archives/2010/04/entry_385.html

KDE4 per ssh und DBus fernsteuern

23. Februar 2010

Um Amarok oder andere KDE Anwendungen “aus der Ferne” zu steuern, loggt man sich zunächst via ssh auf dem Rechner ein:

ssh user@machine

Für die “Fernsteuerung” nutzen wir DBus – dafür ist es notwendig, die laufende (dem KDE-Prozess zugeordnete) Session zu ermitteln:

export DBUS_SESSION_BUS_ADDRESS="`cat /proc/$(pidof kded4)/environ | tr '\0' '\n' | grep DBUS_SESSION_BUS_ADDRESS | cut -d '=' -f2-`"

Anschließend startet man qdbus und ruft die gewünschte Methode auf, z.B.:

qdbus org.kde.kwin /KWin org.kde.KWin.toggleCompositing

Das Beispiel zeigt übrigens, wie per DBus für eine laufende KDE-Session die Desktop-Effekte (Compositing) ein- bzw. ausgeschaltet werden können.

Fedora 12 und IBM Lotus Notes 8.5.x

14. Dezember 2009

Nach dem Update von Fedora 11 auf 12 stellte ich fest, dass der Notes Client nicht mehr funktioniert – genauer gesagt einige Seiten (Anwendungen) werden nicht korrekt dargestellt bzw. erscheinen als leere Seite. Eine Google-Recherche hat ergeben, dass dieses Problem auch schon einige Ubuntu-User beschäftigt und dort findet man auch einen Hinweis auf die Lösung des Problems unter Fedora 12. Die Dateien aus dem Archiv kopiert man als root nach /opt/ibm/lotus/notes und nach einem anschließenden chown/chmod ist das Problem gelöst.

sudo chown root:root /opt/ibm/lotus/notes/libg*
sudo chmod 644 /opt/ibm/lotus/notes/libg*

Wer ohne root-Berechtigungen klarkommen muss, sollte sich die Libs in ein Unterverzeichnis im eigenen Home kopieren und die Umgebungsvariable “LD_LIBRARY_PATH” entsprechend vor dem Aufruf von Notes setzen. Also z.B.:

LD_LIBRARY_PATH=${HOME}/notes-\
                libs${LD_LIBRARY_PATH:+:}${LD_LIBRARY_PATH}
export LD_LIBRARY_PATH

SQL Abfragen in Trac mit SQLQueryMacro

12. August 2009

Für Trac 0.11 gibt es via Macro-Nachrüstung mit SqlQueryMacro die Möglichkeit, SQL-Abfragen in das Wiki zu integrieren:

{{{
#!SQL
SELECT farbe AS __group__, id, name
  FROM test
  ORDER BY __group__
}}}

Leider sind die Module pymills (Python Erweiterung) und SqlQueryMacro (Trac Macro) nicht für die fehlerfreie Verarbeitung von UTF-8-Daten (z.B. mit deutschen Umlauten) geeignet:

Trac detected an internal error:

UnicodeDecodeError: 'utf8' codec can't decode bytes ...

Abhilfe schaffen die Patches für PyMills 3.4 und für SqlQueryMacro — damit kommt man zu recht nützlichen Ergebnissen:

trac-sql-utf8-works

vim Kurztipp: Zeilennummern einfügen

25. Juni 2009

Mittels vim kann man sehr leicht eine Textdatei mit Zeilennummern versehen:

%s/^/\=line('.')/

Unter UNIX kann man alternativ auch folgendes tun:

:%!cat -n

Probleme mit Grails 1.1 Applikationen in Tomcat 5.5.x

8. Mai 2009

Beim Start einer mit Grails 1.1 erstellten Webapplikation in Tomcat 5.5.23 (CentOS 5.3) tauchte folgender Fehler im Catalina-Log auf:

ERROR  initWebApplicationContext, Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error
creating bean with name 'grailsApplication' defined in ServletContext
resource [/WEB-INF/a pplicationContext.xml]: Invocation of init
method failed; nested exception is java.lang.RuntimeException:
XPathFactory#newInstance() failed to create an XPathFactory for the
default object model: http://java.sun.com/jaxp/xpath/dom with the
XPathFactoryConfigurationException: javax.xml.xpath.XPathFactoryCo
nfigurationException: No XPathFctory implementation found for the object
model: http://java.sun.com/jaxp/xpath/dom

Die offensichtlich fehlende XPathFactory-Implementierung kann mit einem

ln -s /usr/share/java/jaxp_transform_impl.jar \
/usr/share/tomcat5/common/endorsed/\[jaxp_transform_impl\].jar

nachgereicht werden. Das JAR-File ist Bestandteil des Paketes xalan-j2-2.7.0-6jpp.1.

Datei-basiertes Xen-VM Disk Image vergrößern

12. Januar 2009

Bestehendes Disk Image auf 4GB vergrößern:

dd if=/dev/zero of=System.img count=1 bs=1 seek=4G conv=notrunc

… als Loop-Device einbinden, danach per fdisk o.ä. Partition(en) anpassen.

losetup -f System.img

Anschließend die Partitionen im laufenden System zur Verfügung stellen:

kpartx -av /dev/loop0

Vor dem Vergrößern sollte unbedingt das Filesystem geprüft und ggf. repariert werden:

e2fsck -f -y /dev/mapper/loop0p2

Danach das Vergrößern starten:

resize2fs /dev/mapper/loop0p2

Anschließend alles wieder “auslösen”:

kpartx -dv /dev/loop0
losetup -d /dev/loop0

Zugriff auf VMware Disk Image (Linux/LVM)

10. Oktober 2008

Für Backup und andere Zwecke kann es manchmal erforderlich sein, “von aussen” auf eine VMDK zuzugreifen. Normalerweise erledigt dies vmware-mount – vorausgesetzt es handelt sich im Inneren der VMDK um “normale” Partitionen mit entsprechenden Filesystemen, z.B. ext3:

vmware-mount /srv/vmware/testvm/testvm.vmdk /mnt/vmdk

Schwieriger gestaltet sich der Fall, wenn statt ext3-Partitionen LVM-Volumes eingebunden werden sollen. Aber auch das gelingt:

vmware-mount -f /srv/vmware/testvm/testvm.vmdk /mnt/vmdk
kpartx -a /mnt/vmdk/flat
lvm pvscan
lvm vgchange -a y
mount /dev/mapper/myLvmVolume /mnt/lvmvol

Die “Zauberoption” ist “-f” – dadurch wird die VMDK quasi als “flat” Blockdevice eingebunden. Nachdem das LVM Volume nicht mehr benötigt wird, geht’s den umgekehrten Weg zurück:

umount /mnt/lvmvol
lvm vgchange -a n
kpartx -d /mnt/vmdk/flat
vmware-mount -d /mnt/vmdk

Mit Perl Werte aus Excel-Datei lesen

17. Juli 2008

Möchte man Daten aus einem Excel-Sheet verarbeiten, so gibt es u. a. die Möglichkeit dies mittels Perl und dem Modul Spreadsheet::ParseExcel zu tun. Von Vorteil hierbei ist die Unabhängigkeit von Plattform und Office/Excel, d. h. im Gegensatz zur Methode mittels Win32::OLE auf die Excel-Applikation benötigt man keine MS Office Installation.

Hier nun eine kleine Verwendungsdemonstration (ohne Anspruch auf Vollständigkeit):

# Beispiel für Wert-Extraktion aus Excel-Dateien mittels Perl.
#
# Voraussetzungen:
# - Perl (z.B. ActivePerl 5.10)
# - Modul Spreadsheet::ParseExcel via CPAN oder PPM installieren

use strict;
use warnings;

use Spreadsheet::ParseExcel;

my $xlsFile  = "c:\\temp\\test.xls"; # wo kommt's denn her?
my $sheetIdx = 0;                    # Tabelle1
my $column   = 2;                    # Spalte 3
my $cellFmt  = "%8.2f";              # Zellformat

my $xls = Spreadsheet::ParseExcel::Workbook->Parse( $xlsFile );

my $sheet = @{ $xls->{ 'Worksheet' } }[ $sheetIdx ];

foreach my $row ( $sheet->{ 'MinRow' } .. $sheet->{ 'MaxRow' } ) {
  my $cell = $sheet->{ 'Cells' }[ $row ][ $column ];
  if ( $cell ) {
    printf( "$cellFmt\n", $cell->{ 'Val' } );
    # weitere Verarbeitung ...
  }
}

Fedora 7: Endlich wieder Suspend-To-RAM

26. Juli 2007

Nach wochenlanger Odysee durch alle möglichen koji-Kernel und pm-Quirks funktioniert nun endlich wieder Suspend-To-RAM auf meinem T60. Das Problem war die fehlende Execute-Permission für die Datei /etc/pm/config.d/unload_modules – der Inhalt an sich war die ganze Zeit korrekt:
[th@dualknecht] tmp$ cat /etc/pm/config.d/unload_modules
SUSPEND_MODULES="iwl3945 mac80211 fglrx"

Hmmh, es sieht eigentlich so ein bisschen aus, als wäre dies hier ein reines Fedora 7-Blog – ich denke das wird sich in der nächsten Zeit ändern.