Archiv für Windows

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 😉

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 !