Freitag, 29. Juli 2011

OpenVPN-Clientverbindung als Windows-Dienst

Ich benutze schon länger OpenVPN um ins Firmennetz zu kommen. Bisher habe ich das mit OpenVPN GUI gemacht, dass mich immer brav nach dem Passwort für den Schlüssel gefragt hat, bevor es die Verbindung aufbaute. Wenn man das Passwort als Klartext-Datei ins OpenVPN-Config-Verzeichnis ablegt und in der Client-Konfiguration darauf verweist, kann man die OpenVPN-Client-Verbindung auch als Dienst starten.

Dazu einfach die Zeile askpass passwort.txt in die .ovpn eintragen und die passwort.txt gleich daneben legen. In der ersten Zeile der passwort.txt einfach das Passwort eintragen und fertig.

Die Nummer mit der Klartext-Passwort-Datei ist allerdings ein Sicherheitsproblem.

Mittwoch, 27. Juli 2011

Speicheranalyse von Java-Anwendungen mit MAT

Eclipse mit MAT
Ich benutze in den meisten Fällen die VisualVM, wenn ich mir das Speicherverhalten einer Java-Anwendung ansehen möchte. Nach dem Motto: Andere Programmierer, andere Tools, wurde mir heute der Memory Analyzer (MAT) empfohlen, den es als RCP-Anwendung sowie als Eclipse-Plugin gibt. Ich habe es mal mit dem Plugin versucht, dass auf meinem Eclipse 3.6 auch problemlos installiert. Einen großen Abhängigkeitszoo gibt es zur Abwechslung mal nicht.

MAT erlaubt die Analyse von Speicherabbildern, kann aber nicht, so wie VisualVM, eine Anwendung live untersuchen. Dafür kann MAT mit vielen Analyse-Funktionen punkten. Die Dokumentation ist ganz ordentlich, so dass man sich in recht kurzer Zeit mit den Funktionen vertraut machen kann. Auf mich macht das ganze einen sehr brauchbaren Eindruck.

Donnerstag, 14. Juli 2011

Ubuntu: Lautstärke-Schrittweite einstellen

Ein paar ordentlich Desktop-Lautsprecher haben den Weg auf meinen Schreibtisch gefunden. Der Anschluss erfolgt über USB, was mehrere Vorteile mit sich bringt. Die Boxen bringen gleich eine Fernbedienung mit, die unabhängig vom Rechner funktioniert und doch die Lautstärke des Systems und nicht nur die, der Lautsprecher selbst regeln kann. Das ist ungefähr so, wie beim Lautstärkeregler auf der Tastatur. Außerdem gewinnt die Soundqualität, weil das Signal erst in der Soundkarte der Boxen zu einem analogen gewandelt wird.

Unerträglich hingegen ist die Lautstärke-Schrittweite, die bei Ubuntu mit 6% vorkonfiguriert ist. Es tönt also immer ein bisschen zu leise oder ein bisschen zu laut aus den Lautsprechern. Ändern lässt sich das mit dem gconf-editor unter /apps/gnome_settings_daemon/volume_step. Ich habe das mal auf 2% runtergeregelt.

Mittwoch, 13. Juli 2011

Einfacher LRU-Cache in Java

Manchmal geht es erstaunlich einfach und man muss nur wissen, wie. Jedenfalls freue ich mich über alles, was einfach und ohne Zusatzbibliothek einsatzfähig gemacht werden kann. So zum Beispiel einen LRU-Cache (least recently used). Den kann man gut benutzen, wenn man einen Cache braucht, der jedoch nicht uneingeschränkt wachsen darf. Dafür lässt sich eine LinkedHashMap verwenden, der eine Maximalgröße verpasst wird. Die Objekt-Instanzen in der LinkedHashMap rutschen mit jedem weiteren, hinzugefügten Eintrag weiter nach Hinten. Die im Beispiel implementierte Methode removeEldestEntry sorgt dann dafür, dass die letzten, und somit auch die ältesten Einträge, die über die Maximalgröße hinausreichen, weggeworfen werden. Einträge wiederum die via get angefordert wurden, wandern praktischer Weise auch gleich wieder nach vorne, was dazu führt, dass sie länger im Cache verbleiben.

Hier also die versprochene Klasse. An Einfachheit wirklich kaum zu übertreffen:

/**
 * Provides support for a LRU (least recently used) cache.
 * This cache is not thread safe and would need to wrap with Collections.synchronizedMap() if thread safety is needed.
 */
public class LRUCacheMap<K, V> extends LinkedHashMap<K, V>{
    
    private final int maxSize;
    
    /**
     * @param maxSize maximum number of entries.
     */
    public LRUCacheMap(final int maxSize) {
        super(maxSize * 4 / 3, 0.75f, true);
        this.maxSize = maxSize;
    }

    @Override
    protected boolean removeEldestEntry(Map.Entry<K,V> eldest) {
        return size() > maxSize;
    }
}

via Vanilla Java

Freitag, 8. Juli 2011

Hibiscus - Java auf dem Desktop 4

Schon lange kein Geheimtipp mehr, aber erst kürzlich bei Version 2.0 angekommen. Das Online-Banking-Programm Hibiscus ist inzwischen die quasi Standard-Open-Source-Lösung für das deutsche Onlinebanking mit HBCI. Bei mir hat Hibiscus damals mein Starmoney/Wine abgelöst. Der kostenpflichtige Update-Zwang von Starmoney war unerträglich, so dass ich glücklich war, etwas alternatives zu haben.

Für eine Homebanking-Anwendung natürlich naheliegend und ideal zum Testen, ist die Spenden-Schaltfläche links unten. Eine kleine Anerkennung für den Entwickler, dessen Software in häufiger Nutzung ist, sollte ja eigentlich drin sein.

Hibiscus bei heise