Skip to content

Gajim ...

Nachdem ich entdeckt habe, dass ich Jabber doch wieder gebrauchen kann, habe ich meinen Lieblingsclient Gajim (Wikipedia) installiert und habe - da bin ich leider konsequent, auch die anderen Jabber-Konten (Google Talk und Facebook) hinzugefügt.

Gajim hat den grossen Vorteil, das er nur Jabber kann, das dafür aber auch richtig mit Verschlüsselung per SSL und per GPG.

(Für Facebook muss man den eigenen Usernamen und als Server chat.facebook.com eintragen).

Mit Facebook war ich kaum zwei Minuten Online, um die Kontakte zu synchronisieren und habe prompt fünf Chats parallel laufen. Äh, so war das eigentlich nicht gedacht ...

gPodder ...

Sehr hübsches Fundstück auf der Homepage von gPodder, wenn man die Windows-Version herunterladen möchte:
Keep gPodder for Windows alive

gPodder comes from the world of open source software and operating systems. You probably heard about Linux and people with beards. Here at gPodder.org, we are packaging gPodder for Windows for your convenience. This takes time and energy - please reward this effort by donating. You do not have to donate, but it will help us improve the packaged Windows version of gPodder.

Basis-Artikel für LaTeX ...

Man kann bei LaTeX tausend und dreizehn Optionen (wenigstens) angeben, um Dokumente zu strukturieren. Ich habe eine sehr kleine und einfache Vorlage, die alles tut, was ich im Normalfall brauche und sie besteht nur aus wenigen Zeilen.

\documentclass[parskip=half]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel
}
% \usepackage[swissgerman]{babel}
% \usepackage[english]{babel}
% \usepackage[UKenglish]{babel}
% \usepackage[USenglish]{babel}
\usepackage{hyperref}
\hypersetup{colorlinks=true, linkcolor=blue, urlcolor=blue}
\pagestyle{empty}

\title{Ein einfaches LaTeX-Dokument}
\author{Dirk Deimeke}

\begin{document
}

% \section*{Abschnitt}
% \subsection*{Unterabschnitt}
% \subsubsection*{Unterunterabschnitt}
% \href{http://www.all2e.com/Ressourcen/Blindtexte}{all2e.com}
% \url{http://dirk.deimeke.net/}

\end{document}

Zeilen, die mit einem % beginnen, beinhalten Kommentare.

Die erste Zeile legt als Dokumentenklasse scrartcl, das ist die Artikel-Klasse aus dem Koma-Skript fest. Damit ist auch gleichzeitig die Papiergrösse auf DIN A4 und die Schriftgrösse auf 11pt gesetzt. Neben anderen Optionen gibt es standardmässig auch keine Titelseite und das Layout ist einseitig. "parskip=half" sagt, dass eine halbe Zeile Luft zwischen zwei Absätzen sein soll.

Unter Linux ist UTF8 als Kodierung der Normalfall, Windows-Nutzer können in der zweiten Zeile stattdessen auch latin1 setzen.

Die Babel-Optionen schreiben das Verhalten für die Silbentrennung fest. Ich habe einmal die für mich gebräuchlichen aufgelistet, ngerman ist für die neue deutsche Rechtschreibung, die anderen sind selbsterklärend.

Das Paket hyperref erlaubt den Einbau von klickbaren Links, hypersetup formatiert die Links so, wie man das aus dem Webbrowser gewöhnt ist. Im Dokumentteil gibt es zwei Beispiele für den Aurfuf.

Pagestyle "empty" macht keine Fusszeilen oder Kopfzeilen, lässt man das weg, ist der Stil "plain" gesetzt, in dem schon Seitennummerierungen enthalten sind.

Für Artikel nicht nötig aber für spätere Sortierungen nicht uninteressant (oder falls man mit \titlepage eine Titelseite setzen möchte), sind die Optionen "title" und "author".

Dann folgt das eigentliche Dokument, der "*" bei den Überschriften bzw. den Abschnitten sorgt dafür, dass keine Nummerierungen gesetzt werden.

Ein Beispiel mit Blindtexten, kann man hier herunterladen (pdf, 44 kB): article.pdf

Taskwarrior (3) ...

taskwarrior German text below. / Deutscher Text weiter unten.

This new part of my mini series about Taskwarrior is about recurring tasks and priorities.

- Installation and basic operation
- Dates, dateformat, due dates and wait dates

Task supports currently up to three (four) priorities High, Medium and Low (and none), you can set them by adding a "pri:h" or "pri:m" or "pri:l" or "pri:" to your task.

This affects the display of your task list, higher priority tasks are appearing first if due dates are the same. As ever, you can change this behaviour by editing your config file. If you complete a task and you have higher priotity ones, you see a nag message, which can be configured in the config file as well.

Please check all lines containing "pri" in upper or lower case in your .taskrc.

Recurring tasks are a good possibility to organise repeating duties.

Example:

task add pri:h due:eom recur:monthly pay rent

This adds a high priority "pay rent" task which will be repeated every end-of-month. In fact it adds two (!) tasks, one is invisible and contains the "meta-data" of the task you are creating. And another one which is the due task to be done. If you try to remove the current due task you will be asked if you want to delete the due task and later on, if you want to delete the "master task" as well (this only happens, if you finished the recurring task at last one time).

task recurring

Shows all recurring tasks in one view.

The general command is

task add recur:frequency until:enddate

From the man-page:
due:due-date
Specifies the due-date of a task.
recur:frequency
Specifies the frequency of a recurrence of a task.
until:end-date-of-recurrence
Specifies the Recurrence end-date of a task.

Frequencies:
daily, day, 1d, 2d, ...
Every day or a number of days.
weekdays
Mondays, Tuesdays, Wednesdays, Thursdays, Fridays and skipping weekend days.
weekly, 1w, 2w, ...
Every week or a number of weeks.
biweekly, fortnight
Every two weeks.
quarterly, 1q, 2q, ...
Every three months, a quarter, or a number of quarters.
semiannual
Every six months.
annual, yearly, 1y, 2y, ...
Every year or a number of years.
biannual, biyearly, 2y
Every two years.


To be continued ...

Deutscher Text. / German text.

Dieser neue Teil meiner Miniserie über Taskwarrior handelt von sich wiederholenden Aufgaben und Prioritäten.

- Installation und einfache Aufgaben
- Datum, Datumsformat, Zieltermine und Wartedatum

Task unterstützt bis zu drei (vier) Prioritäten Hoch, Mittel, Niedrig (und keine), Ihr könnt durch Hinzufügen von "pri:h" oder "pri:m" oder "pri:l" oder "pri:" zur Aufgabe setzen.

Das beeinflusst die Darstellung der Aufgabenliste, höher priorisierte Aufgaben erscheinen zuerst, wenn die Fälligkeitsdaten die gleichen sind. Wie immer, so kann auch dass durch Veränderung der Konfigurationsdatei geändert werden. Wenn eine Aufgabe erledigt wird und höher priorisierte Aufgaben vorhanden sind, gibt es eine nervende Nachricht ("nag message"), die auch konfiguriert werden kann.

Bitte prüft einmal alle Zeilen in der .taskrc, die "pri" in Gross- oder Kleinschreibung enthalten.

Sich wiederholende Aufgaben sind eine gute Möglichkeit, wiederkehrende Tätigkeiten zu organisieren.

Beispiel:

task add pri:h due:eom recur:monthly Miete zahlen

Das fügt eine neue "Miete zahlen"-Aufgabe mit hoher Priorität hinzu, die an jedem Monatsende (eom = end-of-month) wiederholt wird. Tatsächlich werden aber zwei (!) Aufgaben hinzugefügt. Eine ist unsichtbar und enthält die Rahmendaten der erzeugten Aufgabe. Eine weitere Aufgabe ist die terminierte Aufgabe, die zu erledigen ist. Wenn Du die Aufgabe löschen willst, wirst Du gefragt, ob Du die Aufgabe mit den Rahmendaten auch löschen möchtest (das passiert aber erst, wenn wenigstens eine Wiederholung erledigt worden ist).

task recurring

zeigt alle sich wiederholenden Aufgaben.

Das generelle Kommando ist

task add recur:frequency until:enddate

Aus der man-page (Handbuch-Seite):

due:due-date
Spezifiziert das Fälligkeitsdatum der Aufgabe.
recur:frequency
Spezifiziert die Wiederholungs-Frequenz der Aufgabe.
until:end-date-of-recurrence
Spezifiziert das Enddatum der Wiederholungen.

Frequenzen:
daily, day, 1d, 2d, ...
Jeden Tag oder alle Anzahl von Tagen.
weekdays
Montags, Dienstags, Mittwochs, Donnerstags, Freitags, Wochenende wird übersprungen.
weekly, 1w, 2w, ...
Wöchentlich oder alle Anzahl von Wochen.
biweekly, fortnight
Alle zwei Wochen.
quarterly, 1q, 2q, ...
Alle drei Monate oder alle Anzahl von Quartalen.
semiannual
Alle sechs Monate.
annual, yearly, 1y, 2y, ...
Jährlich oder alle Anzahl von Jahren.
biannual, biyearly, 2y
Alle zwei Jahre.

Fortsetzung folgt ...

Taskwarrior (2) ...

taskwarrior German text below. / Deutscher Text weiter unten.

The next part of my mini series about Taskwarrior is about dates, dateformat, due dates and wait dates.

Previous part

The standard date format is m/d/Y. That means the following:

m minimal-digit month, for example 1 or 12
d minimal-digit day, for example 1 or 30
y two-digit year, for example 09
D two-digit day, for example 01 or 30
M two-digit month, for example 01 or 12
Y four-digit year, for example 2009
a short name of weekday, for example Mon or Wed
A long name of weekday, for example Monday or Wednesday
b short name of month, for example Jan or Aug
B long name of month, for example January or August
V weeknumber, for example 03 or 37
H two-digit hour, for example 03 or 11
N two-digit minutes, for example 05 or 42
S two-digit seconds, for example 07 or 47


And, you guess it, it is configurable. Since I am not familiar with the American way of printing dates, I modified the dateformat for everything to YMD. This can be done in ~/.taskrc

$ grep ^dateformat ~/.taskrc
dateformat=YMD # Preferred input and display date format
dateformat.holiday=YMD # Preferred input date format for holidays
dateformat.report=YMD # Preferred display date format for reports
dateformat.annotation=YMD-HN # Preferred display date format for annotations


With this in mind, you can set dates to your tasks. "due" manages the due date of your task, "wait" edits a task to not show up in lists before that specific day.

task shell # makes it a lot easier since you do not need to type the word "task" before any command
task> add Pay rent
Created task 1
task> list

ID Project Pri Due Active Age Description
1 8 secs Pay rent

1 task
task> 1 due:20100731
Modified 1 task
task> list

ID Project Pri Due Active Age Description
1 20100731 1 min Pay rent

1 task
task> quit


Did you notice that the color changed?

I want to do that task tomorrow and I do not want to be bothered with seeing it before tomorrow.

task> 1 wait:20100729
Modified 1 task
task> list
No matches.


Apart from using abolut dates, you can use relative ones as well.

task ... due:today
task ... due:yesterday
task ... due:tomorrow
task ... due:23rd # next occuring 23rd
task ... due:eow # end of week
task ... due:eom # end of month
task ... due:eoy # end of year
task ... due:fri # next occuring Friday
task ... due:wed # next occuring Wednesday (not today!)


The next version of taskwarrior will have the "start of" commands as well.

With this very basic knowledge you can already do a lot of work, I will talk/write about recurring tasks later on.

task add due:20100731 wait:20100724 Pay rent
task add due:20100831 wait:20100824 Pay rent
task add due:20101225 wait:eom Buy christmas presents


To be continued ...

Deutscher Text. / German text.

In diesem zweiten Teil über Taskwarrior geht es um Daten (Termine), Datumsformate, Zieltermine und Wartetermin.

Letzte Episode

Das Standard-Datumsformat ist m/d/Y, was das folgende bedeutet:

m minimale Ziffern für den Monat, beispielsweise 1 oder 12
d minimale Ziffern für den Tag, beispielsweise 1 or 30
y zwei Ziffern für das Jahr, beispielsweise 09
D zwei Ziffern für den Tag, beispielsweise 01 oder 30
M zwei Ziffern für den Monat, beispielsweise 01 oder 12
Y four-digit year, beispielsweise 2009
a Kurzname des Wochentags in englischer Sprache, beispielsweise Mon oder Wed
A Langname des Wochentags in englischer Sprache, beispielsweise Monday oder Wednesday
b Kurzname des Monats (Englisch), beispielsweise Jan oder Aug
B Langname des Monats (Englisch), beispielsweise January oder August
V Wochennummer, beispielsweise 03 oder 37
H die Stunde mit zwei Ziffern, beispielsweise 03 oder 11
N die Minute mit zwei Ziffern, beispielsweise 05 oder 42
S die Sekunde mit zwei Ziffern, beispielsweise 07 oder 47


Und, wie Ihr wahrscheinlich vermutet, ist das konfigurierbar. Da ich mit dem amerikanischen Datumsformat nichts anfangen kann, habe ich es auf YMD gesetzt (D.M.Y) wäre auch möglich. Das kann in der Datei ~/.taskrc eingestellt werden.

$ grep ^dateformat ~/.taskrc
dateformat=YMD # präferiertes Ein- und Ausgabedatumsformat
dateformat.holiday=YMD # Bevorzugtes Eingabedatumsformat für Urlaub und Feiertage
dateformat.report=YMD # Bevorzugtes Ausgabedatumsformat für Reports
dateformat.annotation=YMD-HN # Bevorzugtes Ausgabedatumsformat für Anmerkungen


Mit dem im Hinterkopf könnt Ihr Daten an Eure Aufgaben hängen. "due" für Zieltermine, "wait" für Wartezeiten bis zu dem die Aufgabe in den Übersichten ausgeblendet wird.

task shell # das macht es ein bisschen einfacher, da braucht man nicht mehr "task" vor jedem Kommando zu tippen
task> add Miete zahlen
Created task 1
task> list

ID Project Pri Due Active Age Description
1 8 secs Miete zahlen

1 task
task> 1 due:20100731
Modified 1 task
task> list

ID Project Pri Due Active Age Description
1 20100731 1 min Miete zahlen

1 task
task> quit


Habt Ihr gesehen, dass sich die Farbe geändert hat?

Ich möchte die Aufgabe morgen erledigen und heute nicht mehr in meiner Liste haben.

task> 1 wait:20100729
Modified 1 task
task> list
No matches.


Losgelöst von absoluten Datumsangaben können auch relative verwendet werden (immer in englischer Sprache)

task ... due:today # Heute
task ... due:yesterday # Gestern
task ... due:tomorrow # Morgen
task ... due:23rd # der nächste 23te
task ... due:eow # Ende der Woche
task ... due:eom # Ende des Monats
task ... due:eoy # Ende des Jahres
task ... due:fri # der nächste Freitag
task ... due:wed # der nächste Mittwoch (nicht heute!)


In der nächsten Version von Taskwarrior wird es auch die "start of" Daten geben (sow, som, soy).

Mit dem bis jetzt erreichten Basiswissen, kann bereits eine grosse Menge an Arbeit erledigt werden. Über wiederkehrende Aufgaben schreibe ich später.

task add due:20100731 wait:20100724 Miete zahlen
task add due:20100831 wait:20100824 Miete zahlen
task add due:20101225 wait:eom Weihnachtsgeschenke kaufen


Fortsetzung folgt ...

Taskwarriror, tasks on the commandline (1) ...

taskwarrior German text below. / Deutscher Text weiter unten.

With this series of articles I want to introduce Taskwarrior, a command line tool for task management.

The reasons for my decision to use Takswarrior are quite simple:
• It is easy to learn.
• It is unbelievable powerful.
• It is platform independent (I use it on Windows and Ubuntu, via ssh even from my smartphone)
• It has an active development.
• I can influence the project by making suggestions.
• An Ubuntu personal package archive (PPA) exists.
• I know Federico, who showed some of the possibilities at German Ubucon 2009.

Installation:

On Ubuntu 9.04 or newer:
sudo add-apt-repository ppa:ultrafredde/ppa
sudo apt-get update
sudo apt-get install task


On older versions:
sudo apt-get install build-essential
wget http://www.taskwarrior.org/download/task-1.9.2.tar.gz
tar xzf task-1.9.2.tar.gz
cd task-1.9.2
./configure
make
sudo make install


On Windows (using Cygwin):
Install gcc, make, ncurses, libncurses, libncurses-devel with the graphical setup tool. Update: Meanwhile you can find the recent version in the graphical setup tool.
wget http://www.taskwarrior.org/download/task-1.9.2.tar.gz
tar xzf task-1.9.2.tar.gz
cd task-1.9.2
./configure --with-ncurses-inc=/usr/include/ncurses
make
make install


Further possibilities are explained on the download page.

Do a quick check:
task version
task add Pay rent # first task we create
task add Check Taskwarrior #second task we create
task list # shows all pending tasks
task 2 start # marks a task as active
task list
task 2 stop # marks a task as inactive
task 2 done # marks a task as done
task list


Comments are very welcome, consider contributing to Taskwarrior as well.

... to be continued.

German text. / Deutscher Text.

Mit dieser kleinen Artikelreihe möchte ich gerne Taskwarrior, ein Kommandozeilenwerkzeug zur Aufgabenverwaltung vorstellen.

Die Gründe für meine Entscheidung, Taskwarrior zu nutzen, sind relativ einfach:
• Es ist leicht zu erlernen.
• Es ist unglaublich mächtig.
• Es ist plattformübergreifend (Ich nutze es unter Windows und Ubuntu, via ssh sogar von meinem Smartphone)
• Es wird aktiv weiterentwickelt.
• Ich kann das Projekt durch eigene Vorschläge beeinflussen.
• Es gibt ein Ubuntu personal package archive (PPA).
• Ich kenne Federico, der ein paar Möglichkeiten auf der deutschen Ubucon 2009 vorgestellt hat.

Installation:

Unter Ubuntu 9.04 oder neuer:
sudo add-apt-repository ppa:ultrafredde/ppa
sudo apt-get update
sudo apt-get install task


Unter älteren Versionen:
sudo apt-get install build-essential
wget http://www.taskwarrior.org/download/task-1.9.2.tar.gz
tar xzf task-1.9.2.tar.gz
cd task-1.9.2
./configure
make
sudo make install


Unter Windows (mit Cygwin):
Installiert gcc, make, ncurses, libncurses, libncurses-devel mit dem grafischen Setup Tool. Update: Mittlerweile ist die aktuelle Version auch mit dem grafischen Setup Tool installierbar.
wget http://www.taskwarrior.org/download/task-1.9.2.tar.gz
tar xzf task-1.9.2.tar.gz
cd task-1.9.2
./configure --with-ncurses-inc=/usr/include/ncurses
make
make install


Weitere Möglichkeiten sind auf der Download-Seite beschrieben.

Eine kleine Überprüfung:
task version
task add Pay rent # first task we create
task add Check Taskwarrior #second task we create
task list # shows all pending tasks
task 2 start # marks a task as active
task list
task 2 stop # marks a task as inactive
task 2 done # marks a task as done
task list

Kommentare sind willkommen, überlegt Euch ob Ihr das Projekt unterstützen wollt.

Fortsetzung folgt ...

Audiolänge ...

Vielleicht kann ja einer von Euch auch etwas damit anfangen. Das Skript berechnet die Summe der Längen aller Audiodateien in einem Verzeichnis, dazu muss der absolute Pfad angegeben werden. Zusätzlich zu Perl muss noch das Schweizer Taschenmesser der Audiobearbeitung, SoX, installiert sein. Es gibt kaum ein Audioformat, dass SoX nicht versteht. Wenn sox, oder vielmehr das Tool soxi im Pfad ist, funktioniert das Skript auch unter allen gängigen Betriebssystemen, Windows inklusive.

Es ist für den Eigenbedarf entstanden und macht keinerlei Prüfungen oder Fehlermeldungen.

#!/usr/bin/perl -w
use strict;

use File::Find;

my $playtimesec = 0;
my $playtimetme = "";

my @directories = @ARGV;

sub audiolength {
        my $len = `soxi -D "$File::Find::name" 2>/dev/null`;
        $playtimesec += $len if ((defined $len) && ($len ne ""));
}
                                               
sub seconds2time( $ ) {
        my ($ss) = @_;
        my ($hh,$mm);
        $mm = int($ss / 60);
        $ss = int($ss) - ($mm * 60);
        $ss = "0${ss}" if (length($ss) == 1);
        $hh = int($mm / 60);
        $mm = $mm - ($hh * 60);
        $mm = "0${mm}" if (length($mm) == 1);
        return "$hh:$mm:$ss";
}

find(\&audiolength, @directories);

$playtimetme = seconds2time($playtimesec);
print "$playtimetme";

VirtualBox-Lizenzen ...

In unserer Episode zum Thema Lizensierung ist die Frage nach der VirtualBox-Lizenz offen geblieben.

Ein Hörer von DeimHart hat mich darauf hingewiesen, dass auf den Seiten von VirtualBox endlich der Web Store verlinkt ist, 50 Dollar sind ein mehr als fairer Preis für VirtualBox. Diesen Link hatte ich gesucht, weil nie zu 100% klar war, ob die Benutzung im Büro durch "Personal Use" abgedeckt war, ist sie aber.

Aber auch das ist mittlerweile in der FAQ zu den Lizenzbestimmungen angekommen. Dort heisst es unter Punkt 6:
What exactly do you mean by personal use and academic use in the Personal Use and Evaluation License?

Personal use is when you install the product on one or more PCs yourself and you make use of it (or even your friend, sister and grandmother). It doesn't matter whether you just use it for fun or run your multi-million euro business with it. Also, if you install it on your work PC at some large company, this is still personal use. However, if you are an administrator and want to deploy it to the 500 desktops in your company, this would no longer qualify as personal use. Well, you could ask each of your 500 employees to install VirtualBox but don't you think we deserve some money in this case? We'd even assist you with any issue you might have.

Use at academic institutions such as schools, colleges and universities by both teachers and students is covered. So in addition to the personal use which is always permitted, academic institutions may also choose to roll out the software in an automated way to make it available to its students and personnel.
Ganz kurz zusammengefasst, bedeutet das etwa so viel, wie: "Benutzung auf einzelnen Computern ist Personal Use. Wenn VirtualBox in einer ganzen Organisation ausgerollt wird, kostet es Geld.".

Danke Erwin!

Hintergrundgrafiken ...

Mir erschliesst es sich noch immer nicht so ganz, warum manche Menschen unglaublich viel Energie darauf verwenden, Grafiken für den Bildschirmhintergrund zu finden, wo doch dieser die meiste Zeit durch Fenster verdeckt wird. Schlimmer noch, dass die meisten Menschen - unabhängig von der Auflösung - Anwendungen im Vollbild nutzen, wie meine kleine Umfrage zeigte.

Allerdings muss ich gestehen, dass mich die Grafiken von Digital Blasphemy schwach machen könnten. Schade, dass die grösseren Bildschirmauflösungen kostenpflichtig sind.

Gefunden via Pofacs.

Mediathek ...

Ich finde ja, dass die öffentlich-rechtlichen Sender in der DACH-Region (Deutschland, Österreich, Schweiz) etwas zu bieten haben und mir gefallen auch die Mediatheken, der einzelnen Sender. Da kommt mir das Java Programm Mediathek gerade richtig.
Das Programm durchsucht die Mediathek verschiedener Sender (ARD, ZDF, Arte, 3Sat, MDR, NDR, ORF, SF), lädt Beiträge mit einem Programm eigener Wahl und kann Themen als Abos anlegen und neue Beiträge automatisch downloaden. Es gibt auch eine Möglichkeit, Podcast zu verwalten und zu Downloaden.
Die Bedienung ist ein bisschen gewöhnungsbedürftig, aber das Programm funktioniert wunderbar.

JDBC ...

Ich selber bin kein grosser Fan von Java, muss aber eingestehen, dass mit JDBC eine der brillantesten Treiberimplementierungen überhaupt erfunden wurde. JDBC steht für Java Database Connectivity und bildet eine Schnittstelle, damit Java-Programme auf Datenbanken zugreifen können.

Es gibt vier verschiedene Typen von JDBC-Treibern. Der oben verlinkte Wikipedia-Artikel erklärt die einzelnen Typen genauer. Im Groben ist Typ 1 eine Schnittstelle zwischen JDBC und ODBC, Typ 2 ist eine Schnittstelle zwischen JDBC und lokal installiertem Treiber, Typ 3 ist eine Schnittstelle zwischen JDBC und einem Brücken-Server, der eine Verbindung zur eigentlichen Datenbank herstellt und Typ 4 ist eine Implementation des Treibers in reinem Java.

In der Praxis habe ich am häufigsten mit Typ 2- und Typ 4-Treibern zu tun, wobei Typ 4 das ist, was man haben möchte, da der ganze Treiber (in der Regel) aus nur einer einzigen Datei besteht und diese Datei funktioniert (wiederum in der Regel) überall dort, wo Java installiert ist.

Beispiele für die Anwendung:

Ich benutze sowohl unter Linux, wie auch im Büro unter Windows, SQuireL SQL zum generieren von Abfragen für MySQL, Sybase, SQLite, ...

Für Perl Datenbank-Anwendungen nutze ich DBD::JDBC als Proxy-Server, um auch immer mit der gleichen Syntax und ohne die Not, lokal binäre Treiber installieren zu müssen, auf Datenbanken zugreifen zu können.

Gerade gestern durfte ich eine hysterisch historisch gewachsene Datenbank untersuchen (reverse engineering), dabei ist SchemaSpy eine sehr grosse Hilfe (ich habe bei der Implementation des DB2 Teils ein wenig mitgeholfen), allerdings sollte davon die aktuelle beta verwendet werden, da das Release einen Fehler hat. Wer es lieber grafischer mag, kann auch SchemaSpyGUI als Oberfläche benutzen.

gvim ...

Weil ich ein "fauler Hund" bin, benutze ich so viele Plattform übergreifende Werkzeuge wie möglich und erlaubt.

Da ich beruflich Windows als Client-System nutzen muss, versuche ich auch dort meine bekannten und bewährten Linux-Programme zu verwenden. So zum Beispiel auch (g)vim,

Auf der vim-Webseitebekommt man das Self-installing executable für Windows. Wie unter Minimalismus beschrieben, konfiguriere ich vim nur minimal.

Der Konfigurationsdatei (Kopie von vimrc_example.vim) füge ich noch die Zeilen "set nu" für Zeilennummern und "set enc=utf-8" für UTF8-Kodierung hinzu. Die resultierende Konfigurationsdatei muss mit "_vimrc" (Konsole) bzw. "_gvimrc" (grafische Variante) benannt und in das Home-Verzeichnis kopiert werden (copy _vimrc _gvimrc "%HOMEDRIVE%%HOMEPATH%").

Perl rename ...

Hier noch einmal ein kleiner Beitrag für Romans Blogparade zum Thema Exotische Linux-Applikationen: Perl rename

Mit "rename" aus der Perl-Installation (bei Debian und Ubuntu automatisch im Pfad, bei SUSE gibt es ein anderes rename) kann man auf sehr komfortable Art und Weise mehrere Dateien umbennenen.

Die generelle Syntax ist:

rename RegulärePerlExpression Dateien

Lässt man Dateien weg, können die umzubenennenden Dateien via StdIn an das Programm übergeben werden.

Ein vorangestelltes "-v" oder "--verbose" gibt alle umbenannten Dateien aus, ein "-n" oder "--no-act" zeigt nur, was umbenannt würde, ändert aber nichts und ein "-f" oder "--force" überschreibt bereits vorhandene Dateien.

Beispiele:

Alle Dateien in Kleinbuchstaben wandeln:
rename 'y/A-Z/a-z/' *

In allen Dateien, die auf "bak" enden, Leerzeichen durch Unterstriche ersetzen:
rename 's/ /_/g' *bak

Allen ".jpg"-Dateien ein "bak." voranstellen:
rename 's/^/bak./' *.jpg

Sehr gekünsteltes Beispiel, aber Rückwärtsbezüge funktionieren auch:
rename 's/(.*)_und_(.*).txt/$2_und_$1.txt/' *.txt

macht aus kind_und_kegel.txt kegel_und_kind.txt oder aus hof_und_hund.txt wird hund_und_hof.txt

Verheiraten von SQLite und SQuirreL SQL ...

Über mein Lieblingsdatenbankabfragewerkzeug SQuireL SQL habe ich in anderem Zusammenhang schon einmal etwas geschrieben.

Den JDBC-Treiber von SQLiteJDBC herunterladen und ins lib-Verzeichnis der Squirrel-Installation kopieren.

Einen neuen Treiber nach folgendem Muster anlegen.



Name: SQLite
Example URL: jdbc:sqlite:
Website URL: http://www.zentus.com/sqlitejdbc/
Class Name: org.sqlite.JDBC

Danach kann eine neue Datenbank nach diesem Muster angelegt werden (unter Windows Backslashes durch Slashes ersetzen), ein Login wird nicht gebraucht.: