Zum Inhalt springen

Archiv

Autoren Archiv

Mit dem C++ Schlüsselwort „explicit“ kann man dem Compiler implizite Typumwandlungen verbieten. Dies kann manchmal ja auch ungewollt passieren, wie folgendes Beispiel zeigt:

#include <iostream>
#include <windows.h>
struct MyClass
{
    MyClass(const char* name) : m_Name(name) {}
    virtual ~MyClass() {}
    const char* Who() const { return m_Name; }
private:
    const char* m_Name;
};
 
struct MyExplicitClass
{
    explicit MyExplicitClass(const char* name) : m_Name(name) {}
    virtual ~MyExplicitClass() {}
 
    const char* Who() const { return m_Name; }
private:
    const char* m_Name;
};
 
 
int main()
{
    MyClass A("a");
    MyExplicitClass B("b");
 
    A = "c";  // ok, hier funktioniert das, aber war das auch so gewollt? 
              // Auf den ersten Blick zu durchschauen ist diese Zuweisung jedenfalls nicht.
 
    B = "d";  // error C2679: Binärer Operator '=': Es konnte kein Operator gefunden werden, 
              // der einen rechtsseitigen Operanden vom Typ 'const char [2]' akzeptiert (oder
              // keine geeignete Konvertierung möglich)
 
    std::cout << "A: " << A.Who() << std::endl;
    std::cout << "B: " << B.Who() << std::endl;
 
    return 0;
}

Multi-Zwischenablage

Eher zufällig bin ich beim Coden auf ein nettes Feature im Visual Studio (2008) gestoßen: VS hat eine mehrfache Zwischenablage auf die man mittels Shift+Ctrl+V zugreifen kann. Somit kann man auch auf Sachen zugreifen, die man eigentlich schon überschrieben hat.
vs2008_clipboard

Inkrementelle Datei-Suche

Mittels Ctrl+# gelangt man in das Suchen-Feld. Dort kann man mittels <of + Dateiname Dateien öffnen. Dabei werden alle Dateien der Solution inkrementell auf die Eingabe gematcht und in einer Combobox angeboten.

EIS

Easy Installation System


Mein Installations-Tool, das Easy Installation System, ist jetzt auf Google Code verfügbar. EIS ist ein vollständiges Installationssystem, das in MASM32 geschrieben wurde. Es ist in deutsch und englisch verfügbar und für RAR-Dateien ausgelegt. Weitere Details auf der Projektseite: http://code.google.com/p/eis/

Die Entscheidung es OpenSource zu machen fiel, da ich leider nicht mehr genug Zeit habe es zu pflegen. Ich fände es allerdings schade, wenn das Projekt einfach so in der Versenke verschwinden würde.

Ich werde zwar versuchen, das Projekt weiter zu verwalten, aber viel Zeit kann und will ich dafür nicht mehr investieren.

Mittlerweile gibt es ein paar hübsche neue (offizielle) Fonts in der Windows-Welt abseits Arial und Times New Roman. Diese sollen vor allem aber auch besser für Cleartype (urks!) geignet sein.
Hierzu habe ich einen interessanten Artikel gefunden, der eine kurze Übersicht der neuen bietet. Am besten gefallen hat mir persönlich dabei die serifenfreie Schriftart Corbel und die Serifenschriftart Constantia. Die monospace-Schtriftart Consolas taugt in meinen Augen überhaupt nicht als Ersatz für die gute Courier New z.B. für Text-Editoren. In Präsentationen oder Dokumenten macht sie allerdings eine ziemlich gute Figur. Vor allem die kursive Variante ist deutlich schöner als die der Courier New. Cambria ist noch eine weitere Serifenschrift, die sich aufgrund ihrer Schnörkellosigkeit gut für offizielle Dokumente eignet.

Eine abstrakte Klasse in C++ hat mindestens eine pure virtual Funktion (gekennzeichnet durch virtual ... = 0). Diese Funktionen können per Definition nicht direkt aufgerufen werden, da sie keine Implementierung haben (auch per Definition). Sollte die Methode dennoch aufgerufen werden, wird das Programm (von der Runtime) mit der Fehlermeldung “Pure virtual function call” abgebrochen. weiter lesen…

Bisher habe ich Programme immer in MASM32 geschrieben, wenn es darum ging, möglichst effiziente und platzsparende Executables zu erzeugen. Mann kann aber auch prima mit nativem C oder C++ die Dateigröße drastisch reduzieren. weiter lesen…

GPGPU

Jul 4

GPGPU means General Purpose computation on Graphics Processing Units. On this page a few basic programs and libraries are presented that show how the GPU can be used for computer vision tasks like edge detection.

Requirements

The following hardware and software is needed to run the programs:

  • A graphics card (and driver) that supports OpenGL 2.0
  • The OpenGL Utility Toolkit (GLUT)
  • C for Graphics (Cg)
  • C++ (e.g. Visual C++ 8.0)

  GLUT Win32 3.7.6 (117,1 KiB, 175 hits)
This is GLUT for Win32 version 3.7.6 as of Nov 8th 2001 by Nate Robins.

  Simple Shader Test (194,2 KiB, 239 hits)
Simple demo program that demonstrates the use of Cg shaders for GPGPU using some edge detection filters (Sobel, Laplacian, Laplacian of Gaussian, Difference of Gaussian). Program needs glut32.dll Cg.dll and CgGL.dll. shadertest

Links

Meine Diplomarbeit vom Juni 2007 (Note 1,0). Im Großen und Ganzen geht es darum zu untersuchen, wie gut sich Algorithmen für die Merkmalserkennung auf die mittlerweile immer leistungsfähigeren Grafikkarten auslagern lassen. Der Ergebnis war berauschend: eine Leistungssteigerung um den Faktor 10 ist kein Problem.
weiter lesen…

Seminararbeit aus dem WS 05/06 zum Thema Desktop Management. Erstellt zusammen mit Adalbert Ochotta.
weiter lesen…

Hier finden sich Dateien, Programme und Hilfestellungen zu Octave/Matlab, die ich während meines Studiums verfasst habe. Darunter die Implementierung verschiedener Algorithmen aus der Numerik (QR-Zerlegung, Gauss, Invertierung, …) und der Bildverarbeitungsvorlesung Augmented Reality zur Markererkennung.
weiter lesen…