Springe zum Inhalt

1

Mein bevorzugter Editor ist Notepad++. Seit längerem beherrscht Notepad++ auch die Suche nach regulären Ausdrücken. Standardgemäß gibt es mit regulären Ausdrücken keine Möglichkeit, Zeilen zu finden, die einen Suchbegriff nicht enhalten. Mit einem kleinen Trick kann diese Einschränkung umgangen werden: mit negativen Look-Arounds.

"(?!pattern)"
	 A zero-width negative look-ahead assertion.  For example
	 "/foo(?!bar)/" matches any occurrence of "foo" that isn't
	 followed by "bar".  Note however that look-ahead and
	 look-behind are NOT the same thing.  You cannot use this
	 for look-behind.

	 If you are looking for a "bar" that isn't preceded by a
	 "foo", "/(?!foo)bar/" will not do what you want.  That's
	 because the "(?!foo)" is just saying that the next thing
	 cannot be "foo"--and it's not, it's a "bar", so "foobar"
	 will match.  Use look-behind instead (see below).

Damit ist eine Suchbedingung möglich, die den Suchbegriff nicht enthält. Falls z.B. alle Zeilen gesucht werden sollen, die foobar nicht enthalten, dann lautet der Suchbegriff:

^((?!foobar).)*$

Um ein Windows-Programm z.B. per Klick auf einen Button als Administrator auszuführen, kann folgender Code verwendet werden:

// Elevate the process if it is not run as administrator.
if (!fIsRunAsAdmin)
{
    wchar_t szPath[MAX_PATH];
    if (GetModuleFileName(NULL, szPath, ARRAYSIZE(szPath)))
    {
        // Launch itself as administrator.
        SHELLEXECUTEINFO sei = { sizeof(sei) };
        sei.lpVerb = L"runas";
        sei.lpFile = szPath;
        sei.hwnd = hWnd;
        sei.nShow = SW_NORMAL;

        if (!ShellExecuteEx(&sei))
        {
            DWORD dwError = GetLastError();
            if (dwError == ERROR_CANCELLED)
            {
                 // The user refused the elevation.
                 // Do nothing ...
            }
        }
        else
        {
            EndDialog(hWnd, TRUE);  // Quit itself
        }
    }
}

Die Benutzung des Verbs "runas" ist in der aktuellen MSDN weder unter ShellExecuteEx noch unter SHELLEXECUTEINFO dokumentiert.

Vorweg: virtuelle Server sind für kleine Aufgaben eine feine Sache. Sie können im aktuellen Betriebszustand gestoppt, gestartet, auf einen anderen Server umgezogen oder Snapshots von den Platten angefertigt werden. Viele Hoster bieten sie zum Betrieb eines eigenen Webservices, so z.B. der eigenen Homepage an. Da der virtuelle Server quasi einen kompletten Computer darstellt, muss man sich um die Aktualisierung der darauf aufgespielten Software und auch um das Betriebssystem selbst kümmern.

So schön es auch ist, einen kompletten Computer mit garantierter CPU-Leistung, fest zugewiesenem Hauptspeicher und einer entsprechend großen virtuellen Festplatte zu bekommen, so kann man genau diese Funktionen nicht beeinflussen.

Genau das zeigte sich leider wieder einmal bei dem virtuellen Server (vServer), auf dem dieses Blog läuft. Das IO-System der Virtualisierungssoftware spielte verrückt. So lag die Zeit, die für einen Schreibvorgang auf die Platte vom System gebraucht wurde stellenweise bei 3,8 Sekunden! Ein normales System zeigt dabei Werte von ca. 20 Millisekunden. Falls die aktuellen Werte der Hard- und Software durch eine Monitoring-Software protokolliert werden (hier kommt Munin zum Einsatz), lassen sich diese Extremfälle gut grafisch darstellen:

Munin sda-day

In der Grafik ist zu erkennen, dass seit ca. 4 Uhr die Reaktionszeit des IO-Systems extrem abnahm. Ein Lesevorgang dauerte zu dieser Zeit 82,81 Millisekunden, ein Schreibvorgang ganze 3,86 Sekunden! Mittlerweile hat sich die Lage wieder normalisiert. Lesen/Schreiben erfolgt jetzt mit 1,99/16,73 ms.

Google Reader LogoDas Ende des Google Reader ist beschlossene Sache. Google hat damit, zumindest bei mir, ein ganzes Stück Vertrauen verloren, wenn vielbenutzte Services einfach so mir nichts dir nichts eingestellt werden. Seit 2005 gibt es den Google Reader mit einer nicht zu unterschätzenden Userbasis. Leider scheint sich Google auch nicht von einer Petition zum Erhalt des Google Readers überzeugen zu lassen, die mittlerweile schon über 120.000 Unterzeichner hat. Also gilt es, einen Ausweg zu finden, um weiterhin die täglichen News stressfrei sichten zu können.

Da bei mir die Nutzung auf mehren Geräten eine große Rolle spielt, kamen lokale Programme nicht in Frage. Wenn ich auf dem einen Gerät einen Artikel gelesen habe, möchte ich diesen nicht auf einem anderen Gerät wieder als neu angezeigt bekommen. Eine Synchronisation kann also nur über einen Service erfolgen, der unabhängig vom Gerät arbeitet. Allerdings wollte ich auch nicht auf einen externen Dienstleister setzen (so wie Google mit ihrem Reader), sondern eine Software selber hosten, die mir die Reader-Funktionen bereitstellt. Nach längerer Suche bin ich auf Tiny Tiny RSS gestoßen, welches leicht zu installieren und mit ein paar Änderungen im CSS sogar noch ähnlich dem Google Reader Design dargestellt werden kann.

Tiny Tiny RSS

4

Logo Magix kleinSeit kurzem beschäftige ich mich mit der Produktion von Videos am heimischen PC. Als sehr gutes Programm zum Schneiden und für verschiedene Effekte wurde mir Magix Video Deluxe empfohlen. Gesagt, getan: das Produkt bei Magix als Downloadversion gekauft und dabei auch noch einen im E-Mail-Postfach herumliegenden 10€ Gutschein aus einer früheren Anmeldung bei Magix eingesetzt.

Die Installation erfolgt wie von heutigen Programmen gewohnt reibungslos. Anschließend können über das Menü Hilfe -> Gratis-Download... zahlreiche Effekte und Vorlagen nachinstalliert werden. Bei der Erstbenutzung eines lizenzpflichtigen Codecs (MP4, Dolby usw.) ist eine einmalige Aktivierung erforderlich, die direkt aus dem Programm heraus mit wenigen Klicks ausgeführt werden kann.

Wer sich ein bisschen mit Offline-Schnittprogrammen auskennt, wird sich in Magix Video Deluxe schnell zurechtfinden. Keyframes werden für jede Art von Effekten unterstützt. Auch mit umfangreichem Ausgangsmaterial hat Magix Video Deluxe kein Problem und ist recht flott bei der Anzeige der Vorschau.

Hier auf meinem Rechenknecht (i5-3570K, also Ivy-Bridge) hatte ich erst wenige Videos, bei denen die Zeit für das Encoden größer war, als die eigentliche Filmlaufzeit. Allerdings habe ich bisher alle Filme per CPU encodet. In den Einstellungen von Magix Video Deluxe findet man auch Punkte zur CUDA-Unterstützung. Da in meinem Rechner eine Nvidia GTX 660 Ti steckt, versprach ich mir durch die Verwendung von CUDA noch einen entscheidenden Leistungsschub. Leider quittiert der Encoder jeden Versuch, die CUDA-Unterstützung zu verwenden, mit einer Fehlermeldung. Nach viel Suche und verlorener Zeit bin ich im Magix-Forum dann auf folgenden Eintrag mit einem Zitat der Magix-Hotline gestoßen:

Nach Rückfrage bei unseren Entwicklern ist der derzeitige Stand leider so, dass hardwarebeschleunigte Encodierung bei NVidia Karten mit Kepler Archtiktur nicht unterstützt wird. Für diese Funktion verwenden wir den Codec der Firma Mainconcept, welcher mit diesen Karten momentan nicht zusammenarbeitet. Sobald wir von Mainconcept eine Version mit der Unterstützung bekommen, werden wir diese auch einbinden können. Leider gibt es aber dafür noch keinen Termin.

Das ist insoweit sehr ärgerlich, da die Nvidia-Kepler-Architektur seit Anfang 2012 auf dem Markt verfügbar ist. Leider hat sich zum aktuellen Zeitpunkt an der Situation noch nichts geändert. Anscheinend ähnlich sieht es lt. dem Magix-Forum auch mit aktuellen GPUs von AMD aus. Hier sollte Magix dringend etwas unternehmen! Wer also mit dem Gedanken spielt, sich eine aktuelle Grafikkarte zur Geschwindigkeitssteigerung des Encodings in Magix Video Deluxe anzuschaffen, sollte sich vorher genau informieren, ob den die einzusetzende Grafikkarte auch von den CUDA- oder OpenCL-Treibern unterstützt wird.

Update vom 13.03.2013: Auch auf der Herstellerseite des von MAGIX verwendeten CUDA-Encoders (Mainconcept) wird klargestellt, dass der Encoder die NVIDIA-Kepler-Architektur nicht unterstützt. Unter "Tech Specs" ist unter anderem zu lesen:

Boards with Kepler architecture are not supported.

Titelbild: ASUS GTX-650 Ti TOP Cu-II PCI Express 3.0 x16 graphics card von Dsimic