Schön, Dich auf meinem Blog zu sehen! Hier befindet sich ein Sammelsurium an Tipps und Tricks entstanden beim täglichen Umgang mit Hard- und Software, aufgeschrieben direkt aus dem IT-Alltag.

Windows MiniDumps lesen

Beim Absturz von NT-artigen Windows wird eine Speicherabbilddatei unter C:\WINDOWS\Minidump erstellt. Diese kann mit den durch Microsoft zur Verfügung gestellten Debugging Tools for Windows gelesen und analysiert werden.

Der Knowledgebase-Artikel 315263 beschreibt die Vorgehensweise ausführlich.

Laden der Symbole vom Microsoft-Symbolserver:

windbg.exe -y srv*c:\symbols*http://msdl.microsoft.com/download/symbols -i c:\windows\i386 -z c:\windows\minidump\minidumpXXXX.dmp

Vorraussetzung dafür ist, das der Inhalt des Ordners I386 von der Windows-Installations-CD in den Ordner C:\WINDOWS\I386 kopiert wurde.

ILMerge

Auf einer .NET-Informationsveranstaltung habe ich den Begriff DLL-Hell aufgeschnappt. Hier wollte die .NET-Entwicklungsumgebung eigentlich neue Maßstäbe setzen und die DLL-Flut weitgehend verhindern. Fakt ist jedoch, daß aus jedem einzelnen .NET-Projekt eine eigene Assembly (als DLL- oder EXE-Datei) resultiert. Das fehlende Utility ist ILMerge. Mit diesem Utility kann man die einzelnen zum Projekt hinzugehörenden DLL-Dateien in eine einzige Assembly verpacken.

ILMerge is a utility that can be used to merge multiple .NET assemblies into a single assembly. ILMerge takes a set of input assemblies and merges them into one target assembly. The first assembly in the list of input assemblies is the primary assembly. When the primary assembly is an executable, then the target assembly is created as an executable with the same entry point as the primary assembly. Also, if the primary assembly has a strong name, and a .snk file is provided, then the target assembly is re-signed with the specified key so that it also has a strong name.

[Mehr]

Konvertieren zwischen CString und std::string

Q: How to convert between ‘CString’ and ‘std::string’?

A:

‘CString’ to ‘std::string’:

CString cs("Hello");
std::string s((LPCTSTR)cs);

‘std::string’ to ‘CString’:

std::string s("Hello");
CString cs(s.c_str());

std::string cannot always construct from a LPCTSTR i.e. the code will fail for UNICODE builds.

As std::string can construct only from LPSTR / LPCSTR, a programmer who uses VC++ 7.x or better can utilize conversion classes such as CT2CA as an intermediary.

Like this:

CString cs ("Hello");

// Convert a TCHAR string to a LPCSTR
CT2CA pszConvertedAnsiString (cs);

// construct a std::string using the LPCSTR input
std::string strStd (pszConvertedAnsiString);

Audio-Dateien mit .NET abspielen

Der mit .NET 2.0 eingeführte Namespace My beinhaltet My.Computer.Audio. Mit den darin enthaltenen Methoden ist es einfach möglich, Audiodateien wiederzugeben:

Dim musicFile As String
musicFile = My.Computer.FileSystem. _
    GetFiles("C:\WINDOWS\Media", _
    FileIO.SearchOption.SearchAllSubDirectories, _
    "*.wav")(0)
My.Computer.Audio.Play(musicFile)

UrlEncode von std::string

inline unsigned char toHex(const unsigned char x) {
	return x > 9 ? (x + 'A' - 10) : (x + '0');
}

std::string URLEncode(const std::string &sIn)
{
	std::string sOut;

	const size_t length = sIn.length();
	for (size_t idx = 0; idx < length;) {
		const char ch = sIn.at(idx);
		if (isalnum(ch))
		{
			sOut.append(1, ch);
		}
		else if (isspace(ch) && ((ch != '\n') && (ch != '\r')))
		{
			sOut.append(1, '+');
		}
		else
		{
			sOut.append(1, '%');
			sOut.append(1, toHex(ch>>4));
			sOut.append(1, toHex(ch%16));
		}
		idx++;
	}
	return sOut;
}

XP-Styles und CHtmlView

Um in CHtmlView bei Verwendung von CSS auch visuelle Styles anzugeigen, muss lt. MSDN folgende Headerzeile in die HTML-Seite eingefügt werden:

<META HTTP-EQUIV="MSThemeCompatible" CONTENT="Yes">
CSS 

Microsoft Installer

Benutzerdefinierte Aktionen bei Install/Uninstall

Dem Installer können benutzerdefinierte Aktionen für die Phasen Install, Commit, Rollback und Uninstall hinzugefügt werden. Die Assembly (die als benutzerdefinierte Aktion ausgewählt wird) muß ein Klasse enthalten, die von System.Configuration.Install abgeleitet ist. Dort können die angegebenen Methoden überschrieben werden. Der Installer ruft dann die entsprechenden Methoden in der angegebenen Assembly auf.

Für Windows-Dienste wird empfohlen, den Dienst in der Methode Commit zu starten und in Uninstall zu stoppen.

[Mehr]

MySQL-Tabellen mit Drupal ausgeben

Beispiel der Ausgabe einer MySQL-Tabelle mit den Drupal-Formatierungsfunktionen:

<?php
  $result = db_query("SELECT * FROM {my_table}");
  $output = '';
  $rows = array();
  $header = array('id','Domain','Module');
  $rows = array();
  $i = 0;
  while($row = db_fetch_object($result)){
    $data = array();
    $data[] = $row->sid;
    $data[] = $row->domain;
    $data[] = $row->module;
    $rows[] = $data;
    $i++;
  }
  $output .= theme('table', $header,$rows);
  echo $output;
?>

Zur Anzeige ist einfach der obige Code in eine neue Drupal-Seite einzufügen und als Eingabeformat PHP code auszuwählen. Aber Vorsicht! Der PHP-Code sollte syntaktisch korrekt sein und man sollte wissen, wie man fehlerhaften Code per Hand wieder aus der Drupal-Datenbank bekommt.

Größe der Typen in C

  • sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long) <= sizeof(long long)
  • sizeof(short) >= 2
  • sizeof(int) >= 2
  • sizeof(long) >= 4

Breaking News

Nun ist er doch noch umgefallen!