Archive for the ‘Software’ Category

Fehlerbeseitigung ist Pflicht

Montag, Februar 6th, 2012

 

Ja ich weis, man ist selbst schuld. Seit langem erhalte ich beim Start von Windows 7 nach der Anmeldung folgenden Fehler:

Sie benötigen Administratorrechte, um Adobe Flash Player zu installieren.
Melden Sie sich als Administrator an und versuchen Sie es erneut.

Es schlägt also das automatisch Update des Flash-Players fehl. Der Witz ist, ich bin mit einer Administrator-Kennung angemeldet. Naja, fast. Denn das Problem ist die Benutzerkontensteuerung von Windows 7 (UAC), welche einem Nutzer bei der Anmeldung die Admin-Rechte entzieht. Sollte dann eine Software am System Änderungen vornehmen wollen, schlägt das aufgrund der fehlenden Rechte fehl. D.h. die Software muss für Windows 7 entsprechend angepasst sein. Beim Flash Player 10.3 ist das wohl nicht der Fall.

Wenn man so hört, welche Schwachstellen in der Software von Acrobat teilweise enthalten sind, dann ist es grob fahrlässig diesen Fehler solang hinhängen zu lassen. Doch was tun?

Da sich der Flash-Player nicht selbst aktualisieren, muss hier eine manuelle Aktualisierung durchgeführt werden. Dazu ruft man folgende Webseite auf:

http://www.adobe.com/de/software/flash/about/

Auf der Seite findet man dann auch einen Link zum Download-Center um den aktuellen Flash-Player zu installieren.

Wenn man das erledigt hat, sollte man trotzdem nochmal in der Systemsteuerung den Flash-Player überprüfen. Warum? Wer mehrere Browser verwendet, hat auch verschiedene Flash-Player Komponenten installiert. Und dummerweise installiert der Flash-Player beim manuellen Update nur die Komponenten, welche der für den Download verwendete Browser benötigt. Aber schauen wir erstmal, wo man die installierte Version einsehen kann. Dazu öffnet man die Systemsteuerung und öffnet dort die Flash-Player-Konfiguration. Bei wem in der Systemsteuerung verschiedene Kategorien angezeigt werden, der findet den Flash-Player unter “System und Sicherheit”.

Im geöffneten Einstellungsmanager wechselt man auf die Registerkarte “Erweitert” und findet dort in der Mitte zwei Versionsangaben. So wird bei mir die Plugin-Version vom Firefox genutzt. Der Internet-Explorer hingegen nutzt die ActiveX-Komponente, welche man auch selbst aktualisieren sollte. Um also die ActiveX-Komponente zu aktualisieren ruft man die oben genannte Website im IE auf und lädt dann das entsprechende Update herunter.

Nach der Installation sollte man nochmal in der Systemsteuerung prüfen, dass beide Versionen auf dem aktuellen Stand sind. Nun hoffe ich, dass zumindest diese Version in der Lage ist, neuere Versionen automatisch zu installieren. Gleichzeitig habe ich festgestellt, dass ich auch noch den Acrobat Reader in der Version 9 installiert habe. Dieser scheint ein ähnliches Problem zu haben. Auch dort hilft nur ein manuelles Update auf die aktuelle Version. Tja, man muss eben immer dran bleiben und sein System aktuell halten, denn nicht bei jeder Software funktioniert das automatisch wie man es erwarten würde. Solche Fehler sollte man daher nicht allzu lange unbeachtet lassen.

 

Diskmanagement unter Windows

Sonntag, Oktober 23rd, 2011

In der heutigen Zeit arbeiten wir mit einer Vielzahl von Speichermedien. Zum Beispiel eine oder mehrere intern fest verbaute Festplatten, extern angeschlossene Speichersticks und viele mehr. Um die Übersicht zu behalten, weist Windows diesen Geräten sogenannte Laufwerksbuchstaben (A – Z) zu, wie zum Beispiel E:\, welche als Volumes bezeichnet werden. Doch was kann man damit noch tun?

Bereitstellung in einem Unterverzeichnis

Man kann einem Speichermedium nicht nur einen Laufwerksbuchstaben zuordnen, sondern dies auch an einem bestimmten Platz im Dateisystem einhängen. Dazu öffnet man die Datenträgerverwaltung: Start -> Rechtsklick auf Computer -> Verwalten -> Datenträgerverwaltung.

Wie im Bild zu sehen ist, gibt es noch eine zweite unformatierte Festplatte. Dort legt man ein neues Volume an, weist diesem jedoch kein Laufwerksbuchstaben zu, sondern ein entsprechendes Verzeichnis, in welchem der Speicherplatz zukünftig erreichbar ist.

Nach dem Einrichten des Volumes kann man über den Explorer ganz normal darauf zugreifen. Dabei wird der Mountpoint (also der Punkt, an dem die Festplatte ins Dateisystem eingehängt wird) gesondert dargestellt. Zum Beispiel wird dort die Größe des Volumes angezeigt.

Um nun festzustellen, wie viel Platz auf dem Volume noch frei ist, öffnet man den Eigenschaftendialog. Dort gibt es einen weiteren Button, um zu den Eigenschaften des Volumes zu gelangen.

So könnte man z.B. bei Platzmangel auf einem Laufwerk einfach zusätzlichen Speicher einhängen oder bestimmte Verzeichnisse auf ein anderes Volume legen um Platz frei zu bekommen.

Hinweis: Das Verlegen von vorhandenen Verzeichnissen ist nur dann möglich, wenn es im betreffenden Verzeichnis keine geöffneten/gesperrten Dateien mehr gibt. Z.B. ist das Verschieben von C:\Users nicht so einfach, da die Registrierungsdatenbanken der angemeldeten Nutzer immer in Verwendung sind. Um solche Verzeichnisse auf ein anderes Volume zu verschieben, muss man das System mit Hilfe der Reparaturkonsole starten und die Änderungen bei nicht laufendem Betriebssystem durchführen.

Virtuelle Disks

Tja, aber was tun, wenn man keinen unpartitionierten Festplattenplatz zur Verfügung hat?

In diesem Fall kann man virtuelle Datenträger verwenden. Dies sind Dateien, welche als Datenträger genutzt werden können. Eine Art Container-Datei also.

Man kann diese auch über die Datenträgerverwaltung erstellen. Im Menü Aktion findet man hierfür den Eintrag “Virtuelle Festplatte erstellen”.

Nachdem man die Größe, den Typ und den Speicherort der virtuellen Festplatte angegeben hat, wird das neue Volume in der Datenträgerverwaltung angezeigt.

Nun muss der Datenträger nur noch initialisiert werden und dann kann man auf diesem eine Partition anlegen, einen Laufwerksbuchstaben zuordnen oder wie oben bereits beschrieben, unter einem beliebigen Verzeichnispfad einhängen.

Zum Testen ist das eine super Sache, da man die VHD-Dateien (Virtual Hard Disk) sehr einfach auf ein anderes System kopieren und dort verwenden kann. Ein kleiner Nachteil ist zu beachten: Da es sich eigentlich um Dateien handelt, sinkt die Lese- und Schreibgeschwindigkeit bei einer virtuellen Disk. D.h. man sollte den Einsatz von virtuellen Disks bei I/O intensiven Programmen sehr genau abwägen.

Virtuelle Disks nach Reboot

Einen wichtigen Punkt gibt es jedoch zu beachten. Nach einem Neustart des Systems werden virtuelle Disks nicht sofort wieder bereitgestellt. Hat man z.B. eine Virtuelle Disk unter C:\Test eingehängt, dann existiert das Verzeichnis C:\Test nach einem Neustart noch immer. Beim Versuch in dieses Verzeichnis zu wechseln, erhält man jedoch eine Fehlermeldung.

Daher müssen vDisks nach einem Reboot erst wieder beim System angefügt werden. Dafür gibt es in der Datenträgerverwaltung den Menüpunkt “Aktion -> Virtuelle Festplatte anfügen”. Danach kann man auch wieder auf das zugeordnete Verzeichnis (also hier im Beispiel auf C:\Test) zugreifen. Ein erneutes Einhängen ins Dateisystem ist somit nicht notwendig.

Für Fortgeschrittene

In den vorherigen Abschnitten wurden die Möglichkeiten der grafischen Tools beschrieben, um mit Volumes und Virtuellen Disks zu arbeiten. Doch manchmal wird es notwendig, dass man den Bereitstellungsprozess automatisiert. Hier kommen dann häufig entsprechende Kommandozeilen-Tools zum Einsatz. Deswegen wollen wir uns die gleichen Befehle nochmal in diesem Bereich anschauen.

Wichtig: Die nachfolgenden Befehle können nur ausgeführt werden, wenn der Nutzer mit Admin-Rechten ausgestattet ist. Anderenfalls erhält man eine “Zugriff verweigert” Meldung.

Ok, beginnen wir wieder am Anfang. Der Ausgangspunkt ist eine zweite unpartitionierte aber initialisierte Festplatte. Als nächstes wird eine Eingabeaufforderung mit Administrator-Berechtigung gestartet und dann sind folgende Befehle einzugeben.

C:\Windows\system32>cd \
C:\> mkdir TestDik
C:\> diskpart
DISKPART> SELECT DISK 1
DISKPART> CREATE PARTITION PRIMARY
DISKPART> ASSIGN MOUNT=C:\TestDik
DISKPART> EXIT

So, gehen wir die einzelnen Befehl der Reihe nach durch. Zunächst wird mittels “cd \” in das Verzeichnis gewechselt, wo im nächsten Schritt mit “mkdir” ein neues Verzeichnis für das spätere Einhängen des Volumes erstellt wird. Danach wird diskpart gestartet, die zweite Platte ausgewählt (SELECT DISK 1 ; Nummerierung beginnt bei 0, daher wird hier die zweite Platte selektiert) und auf dieser eine primäre Partition erstellt, welche sämtlichen verfügbaren Platz in Anspruch nimmt. Mit dem ASSIGN-Befehl wird der eben erzeugten Partition ein Verzeichnis zugewiesen, wo die Partition bereitgestellt wird.

Als nächstes ein Beispiel, für das Erstellen eine virtuellen Disk per Kommandozeile.

C:\> mkdir TestVDisk
C:\> diskpart
DISKPART> CREATE VDISK FILE="C:\TestDisk\vdisk.vhd" MAXIMUM=1000
DISKPART> ATTACH VDISK
DISKPART> CREATE PARTITION PRIMARY
DISKPART> FORMAT FS=NTFS QUICK
DISKPART> ASSIGN MOUNT=C:\PortableApps
DISKPART> EXIT

Auch hier wird zunächst ein Verzeichnis angelegt, wo später die Festplatte eingehängt werden soll. Dann wird diskpart aufgerufen und mittels “CREATE VDISK” eine Container-Datei angelegt. Diese Datei wird mittels “ATTACH VDISK” am System angemeldet, eine Partition angelegt und mit NTFS formatiert. Zum Schluss wird der Partition mittels “ASSIGN” wieder ein Verzeichnis zugewiesen.

Um nun nach einem Systemneustart die virtuelle Disk wieder beim System anzumelden, muss man folgende Befehl ausführen.

C:\> diskpart
DISKPART> SELECT VDISK FILE="C:\TestDisk\vdisk.vhd"
DISKPART> ATTACH VDISK
DISKPART> EXIT

Das “diskpart” Programm kann man auch im Skript-Modus starten. Dies erfolgt mit dem “/s” Schalter. Speichert man die oben gelisteten Befehle in einer Textdatei (z.B. C:\Scripts\mount_vdisk.txt), dann kann man über folgenden Befehl die Aktionen ausführen lassen.

C:\> diskpart /s C:\Scripts\mount_vdisk.txt

Pakt man diesen Befehl wiederum in eine bat-Datei, können virtuelle Disks auch automatisch nach einem Neustart beim System angemeldet werden.

Fazit

Für viele sind das hier sicherlich keinen neuen Informationen. Die Funktionen für virtuelle Disks sind bereits seit Windows Vista verfügbar. Da aber so mancher Vista ausgelassen hat, dürfe das doch noch für den Einen oder Anderen interessant sein. Vielleicht zeige ich in einem weiteren Beitrag einige praktische Einsatzmöglichkeiten.

SVN und GIT nutzen

Donnerstag, September 1st, 2011

Als Entwickler gehört das Verwenden einer Versionsverwaltung zur täglichen Arbeit. In meinem Umfeld kommt dabei häufig (“noch”) Subversion (kurz “SVN”) zum Einsatz. Dabei handelt es sich um ein sogenanntes Zentrales Versionsverwaltungssystem, wo das Repository durch einen zentralen Server verwaltet wird. Viele Aktionen (wie z.B. die History-Funktion und Commit) benötigen somit Zugriff auf diesen Server.

Anders verhält es sich da bei den sogenannten “Verteilten Versionsverwaltungssystemen”. Hier wird auf dem eigenen Rechner eine Kopie des Repositories abgelegt (oder von einem Teil des Repositories). In dieser lokalen Kopie kann man jederzeit Branches erstellen, Commits durchführen oder die Historie einsehen. Also egal wo man sich gerade aufhält, ob unterwegs, ob mit oder ohne Netzzugang, man kann an seiner eigenen Entwicklung weiterarbeiten. Zusätzlich schließen diese verteilten Versionsverwaltungssysteme den Einsatz einer zentralen Repository-Kopie nicht aus. Man kann weiterhin ein zentralen Repository mit Zugang für jeden Entwickler bereitstellen.

Da in letzter Zeit eins meiner zentralen SVNs hin und wieder nicht übers Netz erreichbar war, habe ich nach einer Alternative gesucht, wie sich die Vorteile von einer verteilten Versionsverwaltung mit einer zentralen SVN-Verwaltung kombinieren lassen. Und kurzem Suchen im Netz bin ich auf git-svn gestoßen. Dieses Tool ermöglich das Erstellen eines Git-Repositories auf Basis eines SVN-Repositories. An dem so erstellten Repo können Änderung vorgenommen werden und später wieder an das zentrale SVN übertragen werden. Klasse, genau was ich brauchte. Zusätzlich gibt es für Windows noch die TortoiseGit-Explorer-Erweiterung, die auch git-svn unterstützt. Aber dazu später noch mehr.

Lesematerial

Wer aus der “SVN-Welt” kommt und auf ein verteiltes System wie Git wechselt, muss erstmal verstehen, wie ein solches System funktioniert. Auch gibt es neue Begrifflichkeiten, die man zumindest ansatzweise verstanden haben sollte. Eine relativ guten Einstieg habe ich im Online-Buch “Pro Git” gefunden. Eine Gegenüberstellung zwischen SVN- und Git-Befehlen kann man hier nachlesen.

Installation

Nun ging es an einen ersten Test. Dafür habe ich die Git-Version 1.7.4 von http://git-scm.com heruntergeladen und installiert. Die Installation von Git ist weitestgehend selbsterklärend. Nur die Einstellung “Line Ending Conversion” ist nicht ganz selbsterklärend. Wenn man vorhat, mittels Git auf ein SVN-Repository zuzugreifen, dann sollte man hier “Checkout as-is, commit as-is” wählen.

Testen

Nach der Installation findet man im Windows-Startmenü die “Git Bash”, also die Kommandozeile für Git. Dabei handelt es sich um eine Unix-like Shell für Windows. Die Navigation im Dateisystem läuft hier etwas anders als normalerweise unter Windows. So wechselt man mit “cd /d” auf das Laufwerk D:\, und mittels “ls” kann man sich den Inhalt des aktuellen Verzeichnisses auflisten.

Mit folgender Zeile kann man mittels “git svn” eine Kopie eines SVN-Repositories erstellen:

$ git svn clone http://localhost/svn/arxml -s
Initialized empty Git repository in d:/git_test/arxml/.git/
r1 = 79ac10e9eacb0d38a1466fd2c834903afe81c2f8 (refs/remotes/trunk)
          A       api.h
          A       stdafx.h
...
r18 = d28954ccd89dad6eedf1331a1f8609c01cf1ce7b (refs/remotes/trunk)
Checked out HEAD:
  http://localhost/svn/arxml/trunk r18 

Die Option “-s” am Ende des Befehls gibt an, dass es sich um eine Standard-SVN-Sturktur mit Unterverzeichnissen “branches”, “tags” und “trunk” handelt. Wenn man das nicht getan hat, sollte man die Option weglassen oder falls man andere Name gewählt hat kann man das über folgenden Befehl anpassen (wobei hier auch wieder die Standard-Namen eingesetzt wurden):

$ git svn clone http://localhost/svn/arxml -T trunk -b branches -t tags

Also gut. Mit dem Befehl haben wir ein Git-Repository erstellt und dieses mit dem Inhalt eines SVN-Repository gefüllt. Mittels cd wechseln wir nun in den neu erstellten Ordner. Nach dem “git svn clone” Befehl, wird normalerweise der master-Branch gewählt, welcher dem “trunk” entspricht (oder falls man die Option -s weggelassen hat, die oberste Ebene).

Wenn man also die Historie einsehen möchte:

$ git log

Hat man Änderungen an Dateien vorgenommen, kann man diese auch in das Repository übertragen.

$ git commit -am "added new usage instructions"

Da wir aber nun mit zwei Repositories arbeiten (lokal:Git und remote:SVN), hat der “git commit” Befehl lediglich die Änderung in das lokale Git-Repository geschrieben. Um auch das SVN-Repo zu aktualisieren, nutzt man “git svn dcommit”:

$ git svn dcommit
Committing to http://localhost/svn/arxml ...
      M      Main.cpp
Committed r19 
      M      Main.cpp
r19 = 854e82f4860d474a9a5db7bca6746d101448e100 (trunk)
No changes between current HEAD and refs/remotes/trunk
Resetting to the latest refs/remotes/trunk

Unsere Änderung sind jetzt im SVN und die Revisionsnummer (r19) wurde im Git-Repository vermerkt. Jetzt kann es natürlich vorkommen, dass in der Zwischenzeit ein anderer Entwickler Änderungen in das SVN-Repo übertragen hat. In diesem Fall müssen die Änderungen vor dem “dcommit” in das Git-Repository geholt werden und das geht mit dem rebase-Befehl.

$ git svn rebase
       M      notes.txt
r20 = c373de5f458c76f3b0e2e5027cd92eebeaa0e55d (trunk)
First, rewinding head to replay your work on top of it...
Fast-forwarded master to refs/remotes/trunk.

Nun, das soll für’s erste reichen. Mehr Informationen zu den Befehlen findet man im git-svn-Manual.

Problem mit Zeilenenden

Etwas Schwierigkeiten hat mir später das automatische Konvertieren von Zeilenumbrüchen durch Git bereitet. Hier hat mir msysGit Issue 21 etwas weitergeholfen, wenn auch keine definitive Empfehlung gegeben. SVN kümmert sich normalerweise nicht um die Inhalte von Dateien (siehe svnredbook). D.h. wenn eine Datei unter Windows ins SVN übertragen wird, enthält die Datei im Normalfall CRLF Umbrüche. Installiert man jedoch Git mit den Standardeinstellungen (core.autocrlf = true), dann wird jede Textdatei im Repository ins Unix-Style-LineEnding-Format (also LF) konvertiert. Bei der ausschließlichen Nutzung von Git ist das sicherlich die beste Wahl. Wenn man jedoch mittels Git auf SVN zugreift, führt das automatische Umwandel zu Problemen (zumindest war es bei mir der Fall). Hat man wie weiter oben geschrieben ein SVN-Repo mittels “git svn” geklont und überträgt Änderungen (bei core.autocrlf=true) in das Git-Repository, dann enthält die Datei im Git-Repo lediglich LF-Umbrüche. Überträgt man diese Datei ins SVN, kann es dazu führen, dass jede Zeile als geändert markiert wird. Es ist also wichtig zu wissen, welche Zeilenumbrüche in den Dateien des SVN-Repo’s normalerweise verwendet werden.

Viele Texteditor können mittlerweile mit den verschiedenen Zeilenumbrüchen umgehen. Deswegen könnte man schnell annehmen, dass es doch egal ist in, welche Umbrüche in der Datei verwendet werden. Fakt ist jedoch, das viele andere Tools (wie z.B. Compiler, Parser) häufig erwarten, dass in den Eingabedateien Zeilenumbrüche des jeweiligen Betriebssystems verwendet werden. Aus diesem Grund ist auch die autocrlf-Variable durchaus sinnvoll. Jedoch kann aus dem gleichen Grund keine allgemeine Festlegung für die Standardeinstellung von core.autocrlf gegeben werden. Je nach Projekt, eingesetzten Betriebssystemen und SVN-Konfiguration kann eine andere Wahl sinnvoll sein. Für meine spezifischen Fall (SVN-Clients = Windows), muss autocrlf auf “false” gesetzt werden.

Jetzt nochmal, nur einfacher

Das ganze Arbeiten in der “Git-Bash” ist ja schön und gut. Hilft auf jeden Fall dabei, die Arbeitsweise von Git besser zu verstehen. Aber wer TotoiseSVN kennen und lieben gelernt hat, wird nur ungern darauf verzichten wollen. Zum Glück haben das ein paar Entwickler frühzeitig erkannt. TortoiseGit für Klicki-Bunties.

Installationsreihenfolge

  • Git für Windows installieren
    (hier sollte man während der Installation die Explorer-Context-Menü Erweiterungen deaktivieren)
  • TortoiseGit installieren

Testen, die zweite

Nach der Installation wollen wir nochmal das SVN-Repo klonen. Nur um die Möglichkeit mittels TortoiseGit zu testen. Notwendig ist es eigentlich nicht. Man kann mit dem über Git-Bash erstellten Repo auch einfach weiterarbeiten. Ich habe daher zunächst das Verzeichnis “D:\git_test” wieder geleert. Im leeren Ordner öffnet man das Kontext-Menü und wählt dort “Git Clone”.

Im folgenden Dialog gibt man das SVN-Repository an und achtet darauf im unteren Bereich die Option “From SVN Repository” zu aktivieren.

Wichtig: Wenn auf ein SVN-Repo zugegriffen wird, das beim Commit eine Authentifizierung erwartet, dann sollte man den Usernamen schon beim Clonen mit angeben (im Dialog unten rechts). Später erscheint nur noch eine Passwortabfrage und wenn vorher kein Nutzer angegeben wurde, dann verwendet das System den Usernamen vom OS-Login. In der Version 1.7.3 von TortoiseGit habe ich keine Möglichkeit gefunden, den Usernamen nachträglich anzupassen. Der Benutzername und das Passwort werden von git-svn in einer Datei unter “%USERPROFILE%\.subversion\auth\svn.simple” gespeichert. Aber manuell anlegen sollte man diese Datei nicht, und selbst bei Änderungen sollte man wissen was man tut.

Ok, zurück zum Test. Das Clonen startet direkt nach dem Klick auf “Ok”. Wenn dieser Vorgang abgeschlossen ist, stehen über das Kontextmenü im Explorer weitere Funktionen zur Verfügung. So kann man sich z.B. die Historie in einer grafischen Oberfläche anschauen und vorgenommene Änderungen einsehen. Auch werden die Dateien mit einem kleinen Symbol überlagert, so dass man direkt im Explorer geänderte oder hinzugekommene Dateien erkennen kann. Wer TortoiseSVN kennt, wird sich recht schnell zurechfinden.

Im Menü finden sich alle Aktionen wieder, die wir vorher auch schon in das Git-Bash ausgeführt haben. Das sind:

Git Commit
Änderungen ins Git-Repo speichern

SVN DCommit
Änderungen aus dem Git-Repo in das SVN-Repo übertragen

SVN Rebase
Änderungen aus dem SVN-Repo ins lokale Git-Repo holen

Switch/Checkout
Zu einen anderen Branch/Trunk/Tag wechseln

Fazit

Immer wieder schreckt man vor Neuem zurück. Zum einen aus Gewohnheit und zum anderen weil es einem eine Menge Zeit kosten kann. Doch mit Git und dessen Subversion-Unterstützung sollte man auf keine Fall zögern. Die Tools sind weitestgehend ausgereift und arbeiten problemlos mit Subversion zusammen. Gedanken sollte man sich kurz um die Zeilenumbrüche machen, um nicht später Schwierigkeiten mit anderen Nutzern zu bekommen. Auch ist das Thema SVN-Authentifizierung in TortoiseGit noch verbesserungswürdig. Mit der Arbeitsweise von Git sollte man sich auf jeden Fall vertraut machen. Irgendwann wechselt man mit Sicherheit komplett von SVN zu einem verteilten Versionsverwaltungssystem.

Es gibt natürlich eine Reihe von Editoren und Tools, die eine direkte SVN-Integration unterstützen. Für die Größeren und Bekannteren gibt es auch Git-Integrationen. In manchen Bereichen sind die SVN-Integrationen jedoch im Funktionsumfang etwas voraus. Aber das kann sich ja noch Ändern und soll auch nicht Gegenstand dieses Artikels sein.

Links
Git-SCM
TortoiseGit
ProGit Book
git Manual
git svn Manual

Portieren einer C++-Anwendung nach 64-bit

Sonntag, März 20th, 2011

Wer einmal eine C++ Anwendung nach 64-bit portieren muss, dem ist nicht sofort klar welche Codeanpassungen vorgenommen werden müssen oder worauf dabei zu achten ist. Auf viva64.com gibt es zu dem Thema eine gute Sammlung. Natürlich möchten die Authoren ihre eigene VisualStudio-Erweiterung verkaufen. Dennoch finden sich in dem in 28-Teile untergliederen Trainings-Kurs, sehr gute und wichtige Informationen, die einem mögliche Fallstricke und Fehlerquellen aufzeigen. Das ganz läßt sich auch in einer druckfähigen Version auf einer einzigen Seite darstellen; somit kann man sich das sehr einfach als PDF-Dokument speichern.

Lessons on development of 64-bit C/C++ applications

C++ STL Einstieg

Freitag, März 4th, 2011

Die Abkürzung STL steht für Standard Template Library, einer C++ Biliothek mit Schwerpunkt auf Datenstrukturen (wie Arrays oder Hashes) und Algorithmen (sort, foreach). Stephan T. Lavavej ist einer der Entwickler, welche für die Pflege dieser Bibliothek im Visual C++ Team von Microsoft tätig sind. Er hat im Laufe der letzten Monate eine englischsprachige Video-Reihe veröffentlicht, in welcher er die allgemeine Funktionsweise der STL und im speziellen die Neuerungen in Visual Studio 2010 erklärt. Dabei kratzt er nicht nur an der Oberfläche, sondern zeigt in vielen Fällen auch die Beweggründe, warum eine Funktion so umgesetzt wurde. Das hilft beim Verstehen und späteren Einsetzen ungemein. Momentan arbeitet Stephan an eine neuen Video-Reihe, welche erweitere Techniken erklären soll. Doch hier ersteinmal die Videos für den Einstieg. [Quelle]

[STL Introduction]

Part 1 (sequence containers)

Part 2 (associative containers)

Part 3 (smart pointers)

Part 4 (Example: Nurikabe solver)

Part 5 (Nurikabe solver, continued)

Part 6 (algorithms and functors)

Part 7 (algorithms and functors, continued)

Part 8 (regular expressions)

Part 9 (rvalue references)

Part 10 (type traits)