Mein 16. Award als deutscher MVP für Visual C++

Alle Jahre wieder. 😀 Es ist zwar schon ein paar Tage her, aber FedEx brauchte fast einen Monat (Jaaa!) bis ich meine kleine Award-Kiste aus den USA bekam.

Und wieder dachte ich: „Das wird diesmal wohl nicht langen!“´, aber es kam anders als ich dachte:

MVP Urkunde 2014

Das ist nun mein 16. Award als MVP für C++.

Ich war einer von 1.031 MVPs, die zum 1. Oktober Ihren Award erhalten haben und damit einer von ca. 4.000 in der ganzen Welt:
http://blogs.msdn.com/b/mvpawardprogram/archive/2014/10/01/congratulations-to-all-the-new-and-renewed-mvps.aspx

 

 

 

Was nicht alles mit dem schönen alten CMD.EXE geht: Ein Verzeichnis mit dem Datum im Format YYYY.MM.DD anlegen

Man lernt nie, aus. In dem Fall betrifft es ein wenig die Batch-Programmierung mit CMD.EXE.

Für einen Batch, der einen Teil eine Datensicherung eines Hyper-V Servers machen sollte benötigte ich ein Verzeichnis mit dem Tagesdatum, aber im Format YYYY-MM-DD. %date war mir bekannt und auf unseren Rechner liefert das aber, DD.MM.YYYY.

Ein wenig Suche im Netz brachte mich zu Substring-Funktionen bei der Variablenersetzung, die ich noch gar nicht kannte. Hängt man hinter eine Variable Doppelpunkt und Tilde kann man Startposition und Länge eines Substrings angeben.

Entsprechend ist der Batch also ganz schnell geschrieben 😉 :

SETLOCAL
SET TargetDir=D:\BackupHyperV %date:~6,4%.%date:~3,2%.%date:~0,2%
MD "%TargetDir%"

Eine Überraschung mit GetModuleFileName

Ich habe ein Programm um COM-Automation erweitert. Der Test verlief super. Das Programm lief stand alone oder wurde über die Automation (CoCreateInstance) gestartet. Das Programm wurde im Installer integriert und ab da ging erst mal nichts mehr.

Wurde der externe COM Server über die Automation gestartet wurden auf einmal Satelite-DLLs nicht mehr gefunden. Das Programm ermittelte mit GetModuleFileName den Programmnamen. Ergänzte DEU zum Beispiel für die Deutsche Programmversion und suchte eine entsprechende DLL. Eigentlich ganz einfach. Das funktionierte aber nicht, weil GetModuleFileName den kurzen Dateinamen zurück gab. Also: aus PROGRAMM.EXE wurde PROGRA~1.EXE und Die Datei PROGRA~1DEU.DLL wurde gesucht, anstatt PROGRAMMDEU.DLL. Aber dann nicht gefunden…

Der Installer erzeugt scheinbar bei mir kurze Dateinamen in der Registrierung und auch MsiGetComponentPath, dass beim Start über CoCreateInstance konsultiert wurde, lieferte den kurzen Dateinamen.

Wirklich erstaunlich ist aber, dass der Name der in CreateProcess verwendet wurde auch später durch GetModuleFileName zurückgegeben wird. Wird also der kurze Dateiname beim Start verwendet, dann liefert GetModuleFileName einen kurzen Dateinamen.

Grundsätzlich kann man also nicht davon ausgehen, dass GetModuleFileName den langen Dateinamen zurück liefert.

Wenn man mal schnell eine Foren Software braucht…

Für den internen Gebrauch und Austausch mit einem paar Freunden benötigte ich eine Foren Software.

Also ging ich auf die Suche nach „Forensoftware nicht kompliziert, leistungsfähig, funktional, schnell, kostenlos“!

Meine Wahl viel letzten Endes auf SMF (Simple Machines Forum).
Ich kann nur sagen, dass die Wahl äußerst gut, war. Einrichtung und kleine Anpassungen waren im Nu durchgeführt. Eine Shoutbox habe ich auch noch gefunden und nun läuft dieses kleine geschlossene Forum wie eine 1.

Die ein oder zwei Fragen, die auftauchten waren schnell mit dem Online Handbuch bei SMF geklärt, oder es gab die entsprechende Antwort im Support Forum bereits.

PS: Ja klar. PhpBB war natürlich auch im Blickfeld, aber irgendwie hat mich dieser Dinosaurier nicht angelockt.  SMF erschien mir einfacher, kleiner kompakter, moderner und vor allem pflegeleichter.

 

Visual Studio 2013 Update 2 RC ist nun verfügbar

Mit dem neuen SQL 2014 der gestern veröffentlicht wurde kamen auch ein RC für Visual Studio 2013 Update 2. Dabei ist das Update 1 erst ende Januar heraus gekommen.
Das Update 2 für den TFS 2013 ist bereits veröffentlicht worden.
Siehe:  http://blogs.msdn.com/b/bharry/archive/2014/04/02/tfs-2013-2-update-2-released.aspx

Besonders gespannt bin ich auf die Linker Enchantements, die mit Update 2 kommen.
http://blogs.msdn.com/b/vcblog/archive/2014/03/25/linker-enhancements-in-visual-studio-2013-update-2-ctp2.aspx

Die Geschwindigkeit mit der aktuell Updates und Releases veröffentlicht werden ist geradezu verstörend. Man kommt kaum dazu sich auf eine Entwicklungsumgebung festzulegen und da ist schon das nächste Update, dass mit neuen Features Funktionen und Fixes reizt. 🙁

PS: Die Veröffentlichung von MS-SQL 2014 erinnert mich schmerzhaft, dass es nur noch 5 Jahre Support für OLE-DB gibt. Das ist noch einen traurigen Smiley wert 🙁

Advanced Developers Conference zu native C++ in Münchem vom 29.-30.04

Wer das lange Wochenende zum 1. Mai auf ganz besondere Weise einleiten will, dem rate ich die ADC C++ Konferenz vom 29.-30.04.2014 in München zu besuchen.

Die Agenda enthält alt bekannte Themen, aber auch interessantes Neues. Nachdem mit C++x11, C++/RT wieder etwas Schwung in die Weiterentwicklung von C++ gekommen ist und auch die Geschwindigkeit in denen neue Compiler und Library Features veröffentlich werden beschleunigen, lohnt sich ein Blick über den Tellerrand.
Oft genug finden wir als Entwickler nicht die Zeit uns neuem zu widmen, dass bereits verfügbar ist oder in nächster Zeit verfügbar wird.

Veranstalter ist die ppedv AG (hinter der Johannes Preishuber steht). Ich habe die Konferenzen der letzten Jahre, an denen ich teilgenommen habe, immer in guter Erinnerung. Sowohl in der Auswahl der Themen und Redner, als auch in der exzellenten Durchführung, mit immer sehr schon gewählten Konferenzorten und Hotels.
Insofern lohnt sich sicherlich ein Blick in die Agenda.
Und ganz gespannt bin ich persönlich auf die Abendveranstaltung am Mittwoch, denn hier wird auf den ADC-Konferenzen den Teilnehmern immer etwas wirklich außergewöhnliches geboten.

Da ich letztes Jahr aus privaten Gründen leider nicht teilnehmen konnte freue ich mich dieses Jahr wieder dabei sein zu können; ,alte Kontakte beleben zu können, neue Entwickler kennen zu lernen und Neues aus der C++ Welt zu hören.

ADC

VSOne in München vom 17.-18. Februar 2014

Am 17. und 18. Februar 2014 wird in München de VSone stattfinden. Die VSone ist eine Entwickler-Konferenz mit einem sehr weit gefächertem Spektrum, das reicht von der App-Entwicklung, über SQL-Server Themen, klassischen .NET Themen bis hin zu JQuery und Azure.

Veranstalter ist die ppedv AG (hinter der Johannes Preishuber steht). Ich habe die Konferenzen der letzten Jahre, an denen ich teilgenommen habe, immer in guter Erinnerung. Sowohl in der Auswahl der Themen und Redner, als auch in der exzellenten Durchführung, mit immer sehr schon gewählten Konferenzorten und Hotels.
Insofern lohnt sich sicherlich ein Blick.

Weitere Informationen und die Liste der geplanten Sessions und Redner findet sich hier.

VSone

 

Das Problem, wenn man Fehler richtig erkennt, richtig dokumentiert aber dann den gleichen Blödsinn wieder macht

… oder auch: Es gibt Tage, da könnte man sich in der Tischplatte verbeißen…

Wir haben vor ein paar Wochen einen sehr mystischen Fehler in unserer Software gefunden.
Das Problem war eine Funktion, die einen (const) Zeiger auf einen Datenblock bekam.
Die Funktion hat aber unter Umständen eine UI-Interaktion (Dialog) ausgelöst und die entsprechende offene Nachrichtenschleife hat es wiederum einen Hintergrundthread erlaubt (unter bestimmten Umständen) Nachrichten an den Mainthread zu senden, der wiederum die Anzeige aktualisierte und auch den Datenblock, der eben noch als Zeiger übergeben wurde, ungültig machte.

Die Funktion sah in etwa so aus:

bool CSomeClass::SomeAction(const S_FOO *pData)
{
...

pData war nun ungültig und wurde verändert, war aber immer noch gültiger Speicher in dem ein paar Ids aus einer Datenbank standen. Das Programm stürzte nicht ab. Tat aber aufgrund der falschen Ids auch nicht das, was es eigentlich sollte.

Der Code wurde dann wie folgt geändert und ein entsprechender Kommentar geschrieben:

bool CSomeClass::SomeAction(const S_FOO &data)
{
// We use a copy of the result object. There is a chance that the
// global result gets replaced while we are inside this routine and 
// the storage where our pointer points gets deleted and replaced 
// by a new result object.
...

Oha. Aber was passierte hier. Anstatt wirklich eine Kopie zu verwenden, wurde wieder nur ein Zeiger verwendet. Nur diesmal in Form einer Referenz.

Es wird nun niemanden wundern., dass mir die selbe Fehlebeschreibung wieder auf den Tisch flatterte. Im Debugger  wurden die selben Probleme festgestellt und ich musste dreimal auf die Code-Zeile schauen und den Kommentar dreimal lesen, bevor ich verstand was hier geändert wurde.

  • Fehler erkannt.
  • Fehler dokumentiert.
  • Fehler aber nicht gefixed.

So hätte es aussehen müssen:

bool CSomeClass::SomeAction(const S_FOO data)
{
...

PS: Ich oute mich mal. Der Trottel war ich…

Visual Studio 2013 ist nun verfügbar

Heute ist Visual Studio 2013 verfügbar gemacht worden.

Weitere Infos finden sich im VC++ Blog und in Somasegar’s Blog:
http://blogs.msdn.com/b/vcblog/archive/2013/10/17/visual-studio-2013-available-now.aspx
http://blogs.msdn.com/b/somasegar/archive/2013/10/17/visual-studio-2013-available-for-download.aspx

 

Mein 15. Award als deutscher MVP für Visual C++

Da denkt man: „Das war es dann wohl!“, aber dann kommt doch anders.

Pünktlich am 01. Oktober bekam ich eine Email mit dem folgenden Inhalt:

Sehr geehrte(r) Martin Richter,
herzlichen Glückwunsch! Wir freuen uns, Ihnen den Microsoft® MVP Award 2013 verleihen zu können! Diese Auszeichnung wird an herausragende, führende Mitglieder der technischen Communities verliehen, die ihre wertvollen praktischen Erfahrungen mit anderen Menschen teilen. Wir schätzen Ihren außerordentlich bedeutenden Beitrag in den technischen Communities zum Thema Visual C++ im vergangenen Jahr hoch ein.

Das ist nun mein 15. Award als MVP für C++.

Ich bleibe dabei: Alles hat seine Zeit (Prediger 3, 1-11) 😉

PS:
Kleiner Nachtrag. Ich war einer von fast 1.000 MVPs:
Nachzulesen hier http://blogs.msdn.com/b/mvpawardprogram/archive/2013/10/01/new-and-renewed-mvps-announced.aspx