Standby und seine Tücken

In letzter Zeit benutze ich verstärkt die Standby Möglichkeit meines PC, so dass ich eine kürzere Bootzeit genießen kann und das bei geringerem Stromverbrauch. Leider funktioniert das aber nicht bei jeder Kombination von Hardware, jedoch bei meiner Hardware durchaus. Hier ist man immer einer gewissen Unsicherheit ausgesetzt, ob es denn nun mit der Hardware-Zusammenstellung funktioniert oder nicht.

Eine Unschönheit beim Standby ist nun bei mir, dass nach dem Aufwachen der Lüfter der Graphikkarte (Geforce XFX 7800 GT Xtreme) auf hohen Touren läuft und somit sehr deutlich hörbar ist. Recherchiert man im Internet, so stellt man schnell fest, dass nVidia bei dieser Graphikchip Reihe wohl einen Bug im Treiber hat, den sie bis heute nicht behoben haben 🙁

Man hat also nun zwei Möglichkeiten:

  1. weiterarbeiten und dabei irgendwann die Nerven zu verlieren ob des Lüfters der Graphikkarte
  2. Benutzung eines Tools wie RivaTuner (bei Guru3D) oder NTunes (bei Chip Online) um die Lüfterdrehzahl zu regeln

Ich benutze derzeit den RivaTuner, wo man diese Einstellungen unter „Driver Settings“ -> „Customize“ -> „System settings“ -> „Fan“ und dort aus der Combobox „auto control“ auswählen kann. Nach dem Aufwachen aus dem Standby ist hier „direct control“ aktiv, was die Existenz des Bugs im Treiber bestätigt. Nach Rücksetzen der Einstellungen auf „auto control“ und anschließendem Bestätigen verhält sich der Lüfter wieder zivilisiert 😉

Diese Methode ist leider etwas umständlich, aber eine 100% optimale Lösung scheint es hier nicht zu geben.

Backup von Email-Konten via IMAP

Ich trage mich derzeit mit dem Gedanken mein Webspace-Paket auf ein neues Paket umstellen zu lassen. Hierbei werden vom Hoster einige Vorgaben gemacht, worauf der Kunde achten muss. Eine dieser Vorgaben ist es, dass der Kunde ein Backup aller seiner Daten (Webspace, Datenbank, Email-Konten und Einstellungen) vornehmen muss. Dies stellt auch gar kein Problem dar, nur bei dem Punkt Email-Konten musste ich kurz stutzen.

Wie kommt man denn da in einem Webspace-Paket mit reinem FTP-Zugang und ohne entsprechenden Backup-Punkt in der Konfigurationsoberfläche ran ? Email-Daemons legen diese Daten ja in einer Verzeichnisstruktur auf derPlatte ab (*nix-Systeme), worauf ich aber in dieser Konfiguration keinen Zugriff habe. Also habe ich mich an den Support gewandt und deren Lösungsvorschlag war so einfach, dass ich mich ernsthaft fragte, wieso ich nicht selbst darauf gekommen bin. Sollte der geneigte Leser bis zu diesem Punkt des Artikels auch noch keine Ahnung haben, wie er denn diesen Backup bewerkstelligen sollte, bin ich zumindest beruhigt, dass es nicht nur mir so ging.

Die Lösung – für IMAP Konten wohlgemerkt – liegt in der Verwendung eines kleinen Programms namens IMAPSize. Natürlich war mir bekannt, dass das IMAP-Protokoll besser und effizienter zum Verwalten von Emails als das POP3-Protokoll ist, da die Daten auf dem Server verwaltet werden und nicht alles übertragen werden muss, darüber jedoch auch Backups (auch inkrementell) zu machen, kam mir nie in den Sinn. Wieder etwas dazugelernt 🙂

.Net RowFilter Multi-Wildcard Filter Expressions

In .Net existiert an der Klasse System.Data.DataView ein Property namens RowFilter, das einen Ausdruck in SQL-Syntax erwartet, was wiederum ein Filtern der zugrunde liegenden Daten nach sich zieht. Der Aufbau und die Möglichkeiten des Filterausdrucks werden in in dem Property Expression der Klasse DataColumn beschrieben. Als Wildcards wird der „*“ akzeptiert und ist zugelassen.

Man hat ja von einer freien Filtereingabe die Vorstellung, dass man beliebig Wildcards platzieren kann und der Ausdruck nahezu beliebig komplex werden darf. Doch weit gefehlt: „[…] Wildcards are not allowed in the middle of a string. For example, 'te*xt' is not allowed. […]“ (Quelle: MSDN, ZEICHENFOLGENOPERATOREN).

Was tut man also in einem solchen Fall ? Nun, wenn man sich den Ausdruck 'te*xt' ansieht, so kann man diesen zerlegen in 'te* AND *xt'. Daraus ergibt sich eine Ergebnismenge, die alle Daten beinhaltet, die mit „te“ beginnen und mit „xt“ enden.

Das bedeutet natürlich im Gegenzug, dass man die Erzeugung des Filterausdrucks komplett selbst machen muss. Dafür habe ich mir nun folgendes (und erprobtes) Klassengerüst ausgedacht. Es wird hierbei auf das Factory-Pattern zurückgegriffen (klicken zum Vergrößern):

Filter Klassendiagramm

Hierbei wird auch auf die verschiedenen Editoren und Datentypen Rücksicht genommen. Die Entscheidung, welche Klasse für die Erzeugung des Teilfilterausdrucks (der Ausdruck wird partiell pro Datenspalte erzeugt) genommen wird, erfolgt so:

?View Code CSHARP
this.typesHashtable = new Hashtable();
 
this.typesHashtable.Add(typeof(bool), typeof(BoolGridFilter));
 
this.typesHashtable.Add(typeof(byte), typeof(NumericGridFilter));
this.typesHashtable.Add(typeof(short), typeof(NumericGridFilter));
this.typesHashtable.Add(typeof(int), typeof(NumericGridFilter));
this.typesHashtable.Add(typeof(long), typeof(NumericGridFilter));
this.typesHashtable.Add(typeof(float), typeof(NumericGridFilter));
this.typesHashtable.Add(typeof(double), typeof(NumericGridFilter));
this.typesHashtable.Add(typeof(decimal), typeof(NumericGridFilter));
this.typesHashtable.Add(typeof(UInt16), typeof(NumericGridFilter));
this.typesHashtable.Add(typeof(UInt64), typeof(NumericGridFilter));
 
this.typesHashtable.Add(typeof(DateTime), typeof(DateTimeGridFilter));
 
this.defaultGridFilterType = typeof(TextGridFilter);

Später wird dann mittels Reflection entschieden, welche Klasse genommen werden soll. Dies geschieht über den der DataColumn zugrunde liegenden DataType:

?View Code CSHARP
Type dataType = dc.DataType;
if (dataType != null)
{
  if (this.typesHashtable.ContainsKey(dataType))
  {
    Type gridFilterType = this.typesHashtable[dataType] as Type;
    dcFilter = gridFilterType.Assembly.CreateInstance(gridFilterType.FullName, false,
                       BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.CreateInstance,
                       null, new object[] { dc.DataField, PrepareFilterExpression(dc.FilterText) }, null, new object[] { }) as IDataColumnFilter;
  }
  else
  {
     dcFilter = this.defaultGridFilterType.Assembly.CreateInstance(this.defaultGridFilterType.FullName, false,
                       BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.CreateInstance,
                       null, new object[] { dc.DataField, PrepareFilterExpression(dc.FilterText) }, null, new object[] { }) as IDataColumnFilter;
  }
}

Die hier beschriebenen Code-Fragmente wurden in Verbindung mit dem TrueDBGrid von ComponentOne implementiert, die Architektur ist aber recht lose über Interfaces handhabbar, so dass man die Technik ganz leicht zur Zusammenarbeit mit anderen DataGrids überreden können sollte. Den kompletten Quelltext werde ich hier nicht veröffentlichen, ich hoffe aber, dass dieser Beitrag als Ideengeber dienen kann 😉

Apple’s Dauerhaftigkeit – Safari um jeden Preis.

Anfang des Monats hatte ich ja über Apple’s Strategie bzgl. Safari geschrieben (Safari to the people !). Dabei ging es um die aggressive Verbreitungstaktik des Apfel-Browsers Safari und dem Versuch den Browser per Software-Update unterzujubeln, obwohl der Benutzer diese Software bisher gar nicht installiert hatte.

Begriffsdefinition:

Eine Aktualisierung, teils auch Nachführung, Evidenthaltung oder Update bezeichnet, beschreibt den Vorgang, etwas bereits Vorhandenes auf den neuesten Stand zu bringen. Eine Aktualisierung kann also nur durchgeführt werden, wenn bereits eine Version existiert.“ (Quelle: wikipedia)

Es gab entweder in der letzten c’t (ich glaube 09/08, sicher bin ich mir aber nicht) oder im heise newsticker einen Bericht, wo Apple angeblich seine Update-Oberfläche aktualisiert hat und zusätzliche Software nun gesondert darstellt. Dies habe ich bisher nicht ausmachen können. Im Gegenteil: heute morgen blitzte mir folgendes Fenster entgegen:

Apple Software-Update (Safari)

Daraus schließe ich, dass die Option „Markierte Updates ignorieren“ leider doch nicht die erhoffte Wirkung hatte 🙁

Ich will natürlich nicht ausschließen, dass diese neue Ansicht des Update-Fensters existiert. Des Weiteren möchte ich auch keine Meinungsbildung betreiben – jeder soll sich über das Vorgehen Apple’s sein eigenes Urteil bilden. Persönlich aber fühle ich mich langsam von Apple belästigt; ich will Safari nicht auf meinem PC ! Mittlerweile bin ich sogar eher auf dem Weg eine gewisse Abneigung gegen diese Software zu entwickeln, das bedeutet natürlich, sollte es anderen Anwendern genau so ergehen, verbaut sich Apple hier sehr zielsicher einen ganzen Markt. Ob das wirklich die gewünschte Wirkung ist ?

Safari to the people !

Wie Thomas in seinem Blog auch schon beschrieben hat („Apple nervt…„), listet das Apple Software Update jüngst seinen Browser „Safari“ als Softwarekomponente, die aktualisiert werden müsste. Auch heise online war es eine Meldung wert dieses Verhalten seitens Apple zu hinterfragen und bekannt zu machen.

Bei mir kam diese Aufforderung nun bereits schon zweimal und ich dachte eigentlich, dass wenn ich das Update einmal verweigert habe, es damit gegessen sei, aber weit gefehlt. Wie auf dem Screenshot zu sehen, gab es ein Update für iTunes und Quicktime sowie für den Safari. Das Safari Update wählte ich ab und installierte das Update für iTunes und Quicktime, nur um nach Abschluss der Aktualisierung erneut über ein Update für den Safari benachrichtigt zu werden. Ist es heutzutage nicht mehr erwünscht sich frei für oder bewusst gegen eine Software zu entscheiden ? Wohl dem, der sich die Update-Liste vorher anschaut, wehe dem, der einfach „Installieren“ drückt…

Man kann zumindest selektierte Updates für das aktuelle Update mittels abwählen ignorieren, traurig ist hingegen, dass es soweit kommen und eben dies der Benutzer selbst in die Hand nehmen muss. Also machte ich mich einmal auf die Suche nach einer Möglichkeit dem Update-Wahn Apples bzgl. Safari auch für die Zukunft aus dem Wege zu gehen und tatsächlich ist es so, dass Apple’s Software Update Applikation einem anbietet selektierte Updates dauerhaft zu ignorieren ! Was dauerhaft für Apple bedeutet, warte ich einmal ab…

Der Browserkrieg scheint erneut entfacht zu werden: Microsoft schob nach Jahren der Pause den IE7 nach, Apple forciert seinen Browser mittels eines „Updates“, das keines ist… Da bleibe ich doch lieber meinem Firefox weiterhin treu 😉

Windows Datei Explorer (Replacements)

Heute möchte ich mich dem Thema Windows Datei Explorer widmen. Wer kennt ihn nicht, den mitgelieferten Datei Explorer (explorer.exe) ? Ich wage zu behaupten, es gibt nur zwei Arten über diesen zu urteilen:

  1. man arbeitet gern damit bzw. gibt sich damit zufrieden
  2. man verflucht ihn bis auf die Knochen und sucht sich einen Ersatz

Von meinen guten, alten AMIGA-Tagen her weiß ich, dass es deutlich bessere Möglichkeiten gibt ein Dateiverwaltungsprogramm zu entwerfen. Man erinnere sich nur einmal an das legendäre DirectoryOpus 4 (klassische Zwei-Spalten-Ansicht), das heute als Open Source Projekt weitergeführt wird. Ganz zu schweigen von dessen Nachfolger Directory Opus Magellan mit seiner Mehrfenster Arbeitstechnik. Doch auch zu DOS-Zeiten gab es einige Programme, die zu dieser Zeit bereits leistungsfähiger waren als der Datei-Explorer zu Windows 3.x Zeiten. Hier wird wohl jedem sofort der Norton Commander (Screenshots) in den Sinn kommen, der als Wurzel und Inspiration für kommende Dateimanager gelten darf.

Auch heute noch werden einige Programme von damals von Anwendern genutzt, da sie einfach gerne mit diesen arbeiten und sich an die Arbeitsweise mit diesen Tools gewöhnt haben. Doch wie sieht es heute im Zeitalter der graphischen Benutzeroberflächen mit diesem Typus von Software aus ?

Ich möchte hier nun nicht eine Abhandlung über alle verfügbaren Varianten dieses Software-Typs verfassen, sondern möchte kurz umreißen, was es gibt (sowohl für Windows als auch Linux). Speziell geht es mir aber darum das Tool meiner Wahl vorzustellen: Directory Opus 9, doch hierzu später mehr.

Generell lassen sich jedoch zwei allgemein gültige Ansätze ausmachen:

  • die klassische Zwei-Fenster-Ansicht, bestehend aus einem Quell- und einem Zielordner (NortonCommander-Abkömmlinge), wobei es einige Tools gibt, die hier MultiTabbed Views auf beiden Seiten unterstützen
  • Mehrfachfenster-Ansicht, was als Hybrid zwischen Windows Datei Explorer Ansatz und dem Quell-/Zielordner Ansatz verstanden werden kann

Doch was macht die Arbeit mit dem Windows Datei Explorer zu mühselig ? Nun, ich denke genau dann, wenn man mehrere Ordner gleichzeitig offen hält, verliert man recht schnell den Überblick. Vor allem, wenn Pfade auch nur noch abgekürzt in der Windows Taskleiste dargestellt werden (C:\Temp\An…). Wer seine Taskleiste auch noch einzeilig anzeigt, verliert bei mehreren Fenstern (nicht nur aus Windows Datei Explorer Fenstern bestehend) schnell die Übersicht. Auch mit der Überarbeitung des Datei Explorers in Windows Vista hat sich Microsoft nicht wirklich einen Gefallen getan. Zumindest ich muss gestehen, dass ich nicht auf Anhieb uneingeschränkt mit der neuen Version arbeiten konnte ohne manchmal suchen zu müssen.

Auch andere Annehmlichkeiten, wie frei definierbar Tastaturkürzel oder die Unterstützung von (S)FTP/FTP mit SSL oder gar integrierten kleinen Scriptsprachen ermöglichen eine Flexibilität, die man beim Microsoft-eigenen Explorer irgendwann schmerzlich vermisst. Als Beispiel kann man sich nur einmal vorstellen, was schneller geht: das Öffnen einer Datei eines unbekannten oder bestimmten Typs (bspw. .nfo oder .reg) im Texteditor per rechte Maustaste -> Kontextmenü -> Öffnen mit… oder das Drücken eines definierten Kürzels (bspw. F8).

Ich persönlich habe mich nun vor 3 Jahren für DirectoryOpus 8 und letztes Jahr für das Upgrade auf DirectoryOpus9 entschieden. Einerseits, weil ich es aus alten Zeiten kenne, andererseits, weil man auch die Möglichkeit die Software für 60 Tage zu testen, was mich – nach einem 14-Tage Test – vollends überzeugte. Man darf nicht verschweigen, dass diese Software kommerziell ist (ab 49 Euro) man dafür aber auch regelmäßig Updates bekommt und auch die Community um DOpus sehr aktiv und hilfsbereit ist.

Wer das Geld nicht investieren möchte, kann sich auch einmal die freie Alternative FreeCommander ansehen, die auch sehr flexibel und flott zu bedienen ist. Abgesehen hiervon gibt es noch zig-Varianten; ein kleiner Überblick gibt die Seite bei Wikipedia.

Unter Linux verwende ich meist die standardmäßig bei dem Window-Manager mitgelieferten Dateimanager, habe aber auch Gentoo (nicht die Linux-Distribution) oft im Einsatz, das sich an DirOpus 4 anlehnt.

Nun aber zu dem Tool meiner Wahl unter Windows: DirectoryOpus 9.

Die Liste der Features dieses Tools ist schier endlos und ich habe es bis heute noch nicht geschafft alle Möglichkeiten auszuschöpfen. Dennoch entdecke ich jeden Tag mehr und lasse mich auch durchaus durch die Beiträge im Community-Forum inspirieren. Einige der Highlights sind u.a.:

  • sehr hohe Konfigurierbarkeit sowohl bei visuellen als auch nicht-visuellen Bestandteilen
  • Plugin-Schnittstelle (C/C++)
  • Themes (für die „Verspielten“ 😉 )
  • Icon-Sets
  • 64-Bit Unterstützung
  • Mehrfenster-Ansatz, Zwei-Fenster Ansicht und Kombinationen möglich (sog. Layouts, die auch speicherbar sind)
  • Favoriten für Schnellzugriffe
  • FTP (optionales Modul)
  • integrierte ZIP-Unterstützung (man kann in ZIP-Ordnern ganz normal navigieren und Operationen ausführen)
  • Unterstützung von regulären Ausdrücken bei der Suche, bei der (erweiterten) Datei-Selektion und auch beim Umbenennen von Dateien
  • Synchronisations-Werkzeug, um Verzeichnisse und Dateien abzugleichen
  • Möglichkeit die Sicht in einem Fenster mittels direkter Eingabe einzuschränken (Bsp.: 500 Dateien, man sucht aber nur die, die *entw* enthalten); die Sicht wird dann auf diese Dateien reduziert

Die Möglichkeiten sind schier endlos, daher verweise ich an dieser Stelle auf die Feature-Liste des Distributors für die deutsche Version: Haage & Partner.

Im Allgemeinen kann ich aber sagen, dass die Arbeit viel leichter und schneller von der Hand geht als mit dem von Microsoft mitgelieferten Datei Explorer.

Hier einige Beispiele meines DirectoryOpus:

[photoxhibit=3]

Links zu DirectoryOpus:

Schaut euch doch einmal die hier vorgestellten Varianten an und postet eure Meinungen bzw. Anregungen; ich würde mich freuen !