Vista SP1 Backup Dateien freigeben

Wer mal kurz wieder 1GB Speicher zurückhaben möchte nach der Vista SP1 Installation, der kann einfach die erzeugten Backup Dateien entfernen. Natürlich nur wenn man SP1 auch wirklich nicht mehr entfernen will.

Dazu einfach das kleine Programm vsp1cln aufrufen:

%windir%\system32\vsp1cln.exe

Die komplette Dokumentation findet sich hier:
http://technet2.microsoft.com/WindowsVista/en/library/0505991e-49c2-494b-8703-257a14c3d4721033.mspx?mfr=true

C++ Community Event am 17.04 findet in Bad Homburg statt

Der folgende Community Event findet in Bad Homburg statt und nicht wie angekündigt in Frankfurt.

C++ Community Event in Bad Homburg mit Microsoft Program Managern
Ich habe den entsprechenden Artikel geändert.

Termin & Ort:

  • Datum: 17.4.2008, 16 – 19 Uhr

  • Ort: Steigenberger Hotel Bad Homburg
    Kaiser-Friedrich-Promenade 69-75
    61348 Bad Homburg v. d. Höhe

Anmeldung erfolgt per Email über den offizieller Link für die Veranstaltung:
http://blogs.msdn.com/softwarehersteller/pages/cpp2008-4-ffm.aspx

Arithmetik mit GetTickCount

Immer wieder sehe ich Code um GetTickCount oder Aussagen, die sich um den Überlauf von GetTickCount drehen, der alle 49,7 Tage entsteht. Muss man also irgendwelche Vorkehrungen treffen, wenn man Zeitdifferenzen errechnen will?

Eigentlich muss man sich gar nicht darum kümmern, sofern man in 49,7 Tagen eben mindestens einmal diese Differenz errechnet und das damit dafür gesorgt ist, dass diese Differenz nicht größer sein kann als eben besagt 49,7 Tage.

DWORD dwStart=::GetTickCount(); 
while (::GetTickCount()-dwStart < dwTimeout) 
   DoSomething();

Die Arithmetik über unsigned Integer macht es an dieser Stelle möglich. Dieser Code funktioniert, solange eben DoSomething nicht länger als 49,7 Tage dauert. Das ist die einzige Bedingung!

Leider schweigt sich die normale Windows SDK Doku zu GetTickCount darüber aus.
http://msdn2.microsoft.com/en-us/library/ms724408.aspx

Eigentlich problematisch an dieser Stelle, ist es nicht Differenzen zu bilden sondern Vergleiche durchzuführen ❗

Einen interessanten Zusatz dazu findet sich jedoch in der Windows CE Doku. Warum dieser Zusatz nicht auch in der normalen SDK Doku steht ist eigentümlich. Im Allgemeinen empfinde ich die CE-Doku in der MSDN immer eher als lästig.
Es ist aber eben wahrscheinlicher, dass dein CE Rechner und dementsprechend Programme die darauf laufen, länger als 49,7 Tage laufen als auf einem Desktop, ohne einen Reboot, alleine schon wegen der Security Updates, so kann man sich diesen Umstand zumindest erklären.
http://msdn2.microsoft.com/en-us/library/ms885645.aspx

When using GetTickCount, subtraction is safe but comparisons such as

if (GetTickCount() > MyTickCount)

are not. You can use the GetTickCount function to time the duration of an activity as shown in the example below, but using GetTickCount for any other operation will cause issues.

wOldTime = GetTickCount(); 
DoSomething(); 
dwTimeElapsed = GetTickCount() – dwOldTime;

Gleiches findet sich in der Windows Mobile 6 Doku noch etwas besser
http://msdn2.microsoft.com/en-us/library/aa915056.aspx

When using GetTickCount, subtraction is safe, even if the rollover occurred, and subtraction always yields the correct difference and the number of clock ticks passed between two tick values. Comparing tick values directly does not always yield the correct results; only compare the differences. Be sure that your code can service the difference before the second rollover, that is, before another 49.7 days pass. Comparisons such as the following are not safe:

#define DELTA_TICKS sample_tick_value 
// initialized somewhere in the code 
DWORD dwStartTick = GetTickCount(); 
DWORD dwEndTick =   GetTickCount() + DELTA_TICKS;     

// The following function fails on a rollover. 
BOOL no_compare_tick_difference() 
{ 
  if ( GetTickCount() > dwEndTick ) 
    return ( TRUE); 
  return (FALSE); 
}

The following code shows how to properly use GetTickCount by comparing tick differences. This code handles the rollover situation.

BOOL compare_tick_difference() 
{ 
  if ( (GetTickCount() – dwStartTick) > DELTA_TICKS) 
    return ( TRUE); 
  return (FALSE); 
}

Wie man WP-Syntax noch etwas tunen kann…

WP-Syntax ist eine tolle Extension für WordPress, darauf habe ich ja schon in dem Artikel Was nicht alles mit WordPress möglich ist… hingwiesen.

Das ganze hatte nur einen hässlichen Nachteil. Wenn man < > ein oder & im Code verwendete, dann hat der Wysiwyg Editor natürlich schnell mal &lt;, &gt; und &amp; daraus gemacht und das macht den Code natürlich unlesbar.
Das bedeute also immer folgende vorgehensweise:

  1. Artikel schreiben
  2. Code einbauen und formatieren
  3. keine Änderung mehr machen
  4. Wenn Änderungen, dann alle &lt;, &gt; und &amp; im Code wieder zurück tauschen in <, > und &.

Nun es geht einfacher. Einach wp_syntax.php ändern so, dass immer die Sequenzen &lt;, &gt; und &amp; eben wieder  in  <, > und & umgewandelt werden. Dazu muss man einfach nur die Funktion wp_syntax_code_trim um die Zeilen 5 bis 10 erweitern.

function wp_syntax_code_trim($code){ 
  // special ltrim b/c leading whitespace matters on 1st line of content 
  $code = preg_replace("/^\s*\n/siU", "", $code); 
  $code = rtrim($code); 
  // MRi: changes to retranslate html code tags into the normal 
  // characters for geshi. 
  $code = strip_tags($code); 
  $arrSearch = array("&lt;", "&gt;", "&nbsp;", "&amp;");
  $arrReplace = array("<", ">", " ", "&"); 
  $code = str_replace($arrSearch, $arrReplace, $code); 
  return $code; 
}

Das war es auch schon. Man sollte sich jetzt nur noch angewöhnen auf ein < Zeichen immer ein Leerzeichen folgen zu lassen, sonst ergänzt TinyMCE evtl. sehr unsinnige closing Tags ❗

Einen herzlichen Dank an Shantz der hier den entscheiden Hinweis gab.

Wie man eine Tastatur an einem Samsung R40 tauscht

Ich habe durch eigene Blödheit die Alt-Gr Taste an meinem netten kleinen Samsung Laptop abgerissen.
Frag mich bitte keiner wie und warum (ich beantworte Rückfragen dazu nicht 🙂 )!

Über den Samsung Support fand ich schnell den entsprechenden Ersatzteillieferanten http://www.mk-electronic.de. Es wurde blitzschnell geliefert. Gegen 14:00 Uhr am Dienstag bestellt, Lieferung am nächsten Tag per UPS!

Bleibt nur noch die Frage. Wie tauscht man die Tastatur? Eine Anleitung im Netz gab es nicht und einsenden wollte ich den Laptop sowieso nicht.

Nach etwas genauerer Untersuchung und nachdem ich viel zu viele Schrauben gelöst hatte, war das ganz einfach:

  1. Auf der Rückseite sind zwei Schrauben die mit KBD markiert sind. Beide entfernen.
  2. Dann mit einem kleinen Schraubenzieher drei federnde Keile zurückdrücken, die sich am unteren Rand der Tastatur zum Gehäuse befinden. Der eine befindet sich in der Mitte der Leertaste. Dann links zwischen Strg und Windows-Taste. Eine weitere rechts auf Höhe der Pfeil-Unten Taste.
    Das Ganze macht man am Besten, so dass man die Tastatur in der Mitte gleich anhebt. Sodass die Keile unter der Tastatur liegen.
    Aufpassen, dass man nicht das Gehäuse verschrammt.
  3. Dann mit einem weiteren kleinen Schraubenzieher rechts oder links auf Höhe der Ende-Taste (Umschalt-Taste), die Tastatur aus den kleinen Haken an der Seite lösen in dem man sie etwas nach links (rechts) drückt. Das geht noch einfacher wenn man auch auf Höhe der Leertaste die Tastatur gleichzeitig ein wenig anhebt.
  4. Wenn die Tastatur vorne rechts und links nicht mehr gehalten wird kann man sie nach vorne heraus ziehen.
  5. Unter der Tastatur, nun die Klappe an der Klemmleiste des Flachbandkabels anheben. Es ist eine Klappe, keine Schieber. Flachbandkabel nach oben abheben. Jetzt kann die Tastatur ganz entfernt werden.
  6. Einbau der neuen in umgekehrter Folge.
  7. Flachbandkabel so einlegen, dass die zwei Nuten hinter den zwei Erhebungen liegt. Klappe ohne Gewalt zudrücken.
  8. Tastatur oben an den F-Tasten mit den Nuten einlegen.
  9. Funktionstest!
  10. Mit sanften Druck an der Unterseite und am Rand einrasten lassen.
  11. Schrauben eindrehen.

Fertig!

Anmerkung:

  • Die Tasten an der Samsung-Tastatur, lassen sich nicht einzeln tauschen. Sie haben eine spezielle Mechanik (kleine weiße Federn), die diese Tastatur auch so unschlagbar leise machen. Meine ganzen Toshibas, die ich in der Firma habe sind dagegen laute Klapperkisten.
  • Diese Anleitung ist ohne Gewähr und Verwendung geht auf eigenes Risiko ❗

C++ Community Event in Bad Homburg mit Microsoft Program Managern

Bei Microsoft passiert wieder mehr zum Thema C++.
Nachdem sich Dariusz Parys schon über volle C++ Vorträge bei dem Launch in Frankfurt wunderte und er nach Interessenten gefragt hat, die an weiteren lokalen Events für C++ interessiert sind tut sich nun was!

Am 17. April bietet Microsoft für die C++-Entwickler-Gemeinschaft eine dreistündige Veranstaltung zum Thema C++ in Visual Studio 2008 und dem VS2008 Feature Pack für C++ in Frankfurt/Main an.

Es wurden zwei Program Manager aus der Product Group eingeladen und sie einiges zum Thema C++ vortragen:

  1. What’s new in Visual Studio 2008
    • walkthrough new C++ features
    • VSTS for C++ developers
  2. A deeper look into the VS2008 Feature Pack for C++
    • demo of improvements to MFC
    • the value of TR1
  3. A brief glimpse into the future of Visual C++
    • highlights from what we’re building for the next version of C++

Termin & Ort (Update 31.03.2008):

  • Datum: 17.4.2008, 16 – 19 Uhr

  • Ort: Steigenberger Hotel Bad Homburg
    Kaiser-Friedrich-Promenade 69-75
    61348 Bad Homburg v. d. Höhe

Die Teilnahme an der Veranstaltung ist kostenfrei ❗

Anmeldung erfolgt per Email über den offizieller Link für die Veranstaltung:
http://blogs.msdn.com/softwarehersteller/pages/cpp2008-4-ffm.aspx

Anmerkung (31.03.2008):
Der ursprüngliche Veranstalltungsort war Frankfurt. Wurde am 31.03. endgültig auf Bad Homburg festgelegt!

Wie bekommt man den Servernamen auf den Anmeldeschirm eines Windows Servers?

Ich habe in unserem Serverraum 4 Server herumstehen. Natürlich nur einen Bildschirm mit einer elektronischen Maus-, Tastatur- und Bildschirmumschaltung. Leider liegt das alles so, dass ich den Umschalter nie im Blick habe und so rätsele ich jedesmal, auf welchen der 4 Server meldest Du Dich eigentlich jetzt an (wenn es mal direkt sein muss und nicht über einen Remotedesktop). Oft genug erwische ich den falschen Server.

Wie bekommt man nun also am Besten den Anmeldenamen des Servers in den Logonscreen?

Die Gina haken, habe ich keine Lust… und irgendwas muss ja auch mit den Bordmitteln gehen.
Etwas googlen und die direkte Suche nach allen Registry Einträgen die es für WinLogon gibt, brachten die erwünschte Info:

Unter HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon wird einfach ein neuer Texteintrag mit dem Namen Welcome erzeugt. Dort nun den Servernamen eingetragen z.b. als * SVR-02 * und schon steht in der Überschrift des Anmeldebildschirmes die Info, die ich manchmal so sehr vermisst habe.

Windows Vista SP1 verfügbar auf Windows Update

Das Windows Vista SP1 ist ab sofort als Download verfügbar.

Mehr dazu hier:
http://windowsvistablog.com/blogs/windowsvista/archive/2008/03/18/windows-vista-sp1-released-to-windows-update.aspx

Die lockeren 435MB für das standalone Update gibt es hier zum Download:
http://www.microsoft.com/downloads/details.aspx?displaylang=de&FamilyID=b0c7136d-5ebb-413b-89c9-cb3d06d12674

Wird das SP1 über Windows Update geladen ist es kleiner, er lädt ca. 70MB und dann noch einiges bei Bedarf nach!

Meine ersten Schritte mit Joomla

Jetzt steht Sie, meine erste kleine Homepage, die ich mit Joomla zusammengebastelt habe. Es ist die Homepage meiner Gemeinde http://www.efg-meerholz.de

Ich weiß, vom Template noch verbesserungsfähig, aber ich habe ertsmal alle Inhalte aus der alten Homepage transferiert und einiges aktualisiert. Das war erstmal genug Arbeit.
Ganz zu schweigen von den Anfangsproblemen, von denen ich noch berichten werde.

Das System ist wirklich flexibel. Aktuell nutze ich die folgenden Komponenten:

LoadIcon macht es nicht richtig…

… oder sollte man sagen: Nicht so wie erwartet. 

In einer der Micosoft Newsgroup fand sich eine Anfrage, die sich um folgenden Code drehte:

HICON m_hIcon[2]; 
[...] 
m_hIcon[0] = AfxGetApp()->LoadIcon(IDR_MAINFRAME); 
m_hIcon[1] = AfxGetApp()->LoadIcon(IDR_SMALL); 
[...] 
SetIcon(m_hIcon[0], TRUE);   // Großes Symbol verwenden 
SetIcon(m_hIcon[1], FALSE);  // Kleines Symbol verwenden

Das Problem des Posters war, dass er sich Mühe mit dem Layout eine kleines Icons gegeben hat, aber leider immer nur ein verkleinertes 32×32 Icon verwendet wurde.

Das Problem liegt an der Verwendung von LoadIcon! LoadIcon lädt immer das Standard-Format 32×32. Bzw. in dem Format, dass durch das System als Standard-Icon-Größe vorgegeben wird.

Um es richtig zu machen, muss man das Icon wirklich in der gewünschten Größe laden. Dazu verwendet man die Funktion LoadImage. Eine kleine Helper Routine LoadIconEx kann dann wie folgt aussehen:

HICON LoadIconEx(PCTSTR pszIconName, bool bLargeIcon) 
{ 
 HINSTANCE hInstance = ::AfxFindResourceHandle(pszIconName,RT_GROUP_ICON); 
 return reinterpret_cast<HICON>(::LoadImage( 
       hInstance, 
       pszIconName, 
       IMAGE_ICON, 
       GetSystemMetrics(bLargeIcon ? SM_CXICON : SM_CXSMICON), 
       GetSystemMetrics(bLargeIcon ? SM_CYICON : SM_CYSMICON), 
       0)); 
}