Archive for Mai, 2010
Microsoft Student Partner – Newcomer Meeting

Vor einer Woche fand in Unterschleißheim das Newcomer Meeting der Microsoft Student Partner statt. Mit insgesamt 12 Student Partner aus ganz Deutschland startete am Donnerstag um 10:00 Uhr in der Firmenzentrale von Microsoft die Veranstaltung. Jürgen, unser ehemaliger MSP-Lead, erzählte anfangs etwas über die Microsoft Deutschland GmbH sowie den Arbeitsalltag bei Microsoft. Anschließend gesellte sich Frank Fischer zu uns, der uns über die zukünftige Ausrichtung des Academic / MSP Programms und angestrebte Kooperationen informierte. Im Anschluss verschaffte uns Jürgen, vor und nach dem Mittagessen,  mit einem Rundgang durch die Firmenzentrale einen Einblick in den Arbeitsalltag bei Microsoft, bevor es dann in das Microsoft Technology Center ging. Dort wurde uns ausführlichst Microsoft Surface vorgestellt, sowie erklärt was sich hinter dem MTC verbirgt.
Der restliche Tag war mit drei weiteren Vorträgen gespickt. Zuerst wurden wir über das MACH-Trainee Programm informiert und wie der Bewerbungs- / Auswahlprozess bis zur eigentlichen Einstellung ausschaut. Anschließend gab Tom Wendel seine Programmierkünste zum Besten. Denn die vorbereiteten Spieledemos wollten nicht so recht ins neue VS2010 migriert werden. Tom hat es allerdings perfekt gemeistert, so dass wir, für diese kurze Zeit, einen intensiven Einblick in die XNA Spieleprogrammierung bekamen. Wohl mit das heißeste Thema des Tages präsentierte Frank Prengel: Windows Phone 7! Leider keinen Prototypen, wäre auch zu schön gewesen um wahr zu sein. :D Aber so wie ich das im Endeffekt beurteilen kann, dürfte Windows Phone 7 wie eine Bombe einschlagen.
Zum Abschluss des ersten Tages stand als letzter Programmpunkt das gemeinsame Abendessen im Steakhaus an. Einige von Jürgens Kollegen aus der DPE gesellten sich an dem Abend mit zu uns, so dass viele Informationen zwischen Student Partnern und Microsoft Mitarbeitern,  sowie unter den Student Partnern selber, ausgetauscht wurden.

Freitags brach dann auch schon der letzte Tag des Newcomer Meetings an. Für den ganzen Tag von 09:00 Uhr – 15:00 Uhr war ein Präsentationstraining angesetzt. Kai Rosseburg aus dem MSP Team Nord, war unser Dozent für diesen Tag.
Das Präsentationstraining war gut abgestimmt und ich habe viele Anregungen mitnehmen können. Kai vielen Dank an dieser Stelle für ein super Training!
Um 15:00 Uhr hieß es dann auch schon wieder Abschied nehmen von einem super Newcomer Meeting, einer super geilen Truppe von Student Partnern und unserem ehemaligen MSP-Lead Jürgen. :) Mit einigen Student Partnern ging es dann noch zum Abschluss in den Augustiner Keller in München, bevor einige ihre Heimreise antraten.

Hyper-V VMs starten nicht mehr – IPMI

Heute wollte ich das BIOS meines Servers aktualisieren. Dafür sollte das One Boot Flash Update Tool von Intel verwendet werden. Nach der Installation und dem dazugehörigen Neustart musste ich leider feststellen, dass meine VMs nicht mehr starteten. Als ich versuchte die VMs manuell zu starten, erschien folgende Fehlermeldung:

‘computername’ Microsoft Emulated IDE Controller (Instance ID {83F8638B-8DCA-4152-9EDA-2CA8B33039B4}): Failed to restore with error ‘General access denied error’ (0×80070005). (Virtual machine D6355DA9-5D3D-4E0A-82E7-7751F8A9BA46)

Da mein Server-Mainboard von Intel ist, bin ich dann auf den folgenden Artikel in der Microsoft Knowledge Base gestolpert. Wodurch der Fehler auf den Intel IPMI Treiber zurückzuführen ist, der durch das One Boot Flash Update Tool installiert wird.
-> http://support.microsoft.com/kb/969556

Das in dem Artikel beschriebene ResetAccess Tool von Intel, welches nur unter Windows Server 2008 läuft, also unter Windows Server 2008 R2 den Kompatibilitätsmodus verwenden, funktionierte auf meinem Hyper-V (Windows Server 2008 R2) nicht. Vermutlich liegt es an der Konstellation der VMs auf dem Testserver, denn meine beiden DCs laufen als VM und der Testserver ist Mitglied in der Domäne. Daher musste ein anderer Weg her, um die Berechtigungen auf die VHD-Dateien wiederherstellen zu können. Im Endeffekt ist es sehr einfach, man benutzt einfach icacls dafür. Dazu braucht man nur den Pfad des Verzeichnisses der VM und deren GUID. Die GUID ist einfach die Zahlen- und Buchstabenfolge der XML-Datei der VM. Als nächstes muss in der CMD folgende Befehlszeile pro VM ausgeführt werden.

icacls "Pfad des Verzeichnisses der VM" /grant "NT Virtueller Computer\GUID":F /T

Danach hat die VM wieder Zugriff auf alle von ihr benötigten Dateien und lässt sich ohne Probleme starten.
Die Aktualisierung des BIOS habe ich dann auf die altbewährte Methode mittels DOS durchgeführt.

MED-V Demoumgebung – Erstellen und Testen eines MED-V Images

Hier nun der nächste Teil in der Tutorialreihe zu MED-V. Dieser befasst sich mit dem Erstellen und Testen eines MED-V Images.

Bevor man mit dem Erstellen eines Images beginnen kann, muss auf dem entsprechenden Rechner Virtual PC 2007 SP1 und die entsprechenden Updates für die Virtual Machine Additions installiert werden. Die Updates für die Virtual Machine Additions sind auf der MDOP DVD zu finden. Nach der Installation dieser Komponenten, kann damit begonnen werden das entsprechende Image zu erstellen.
In diesem Szenario habe ich mich für Windows XP entschieden. Nachdem der Installationsprozess durchlaufen wurde, sollte die entsprechende virtuelle Maschine mit allen benötigten Updates versorgt werden. Abschließend werden die Virtual Machine Additions in der VM installiert. Um das Image für den Test vorzubereiten muss mindestens das .NET Framework 2.0 installiert sein, damit das MED-V Workspace Tool installiert werden und seine Arbeit verrichten kann. In der aktuellen Version von MED-V handelt es sich um die MED-V_Workspace_1.0.105.msi auf der DVD, die in der VM installiert werden muss.
Über das Startmenü startet man jetzt das VM Prerequisites Tool, um die VM für den MED-V Workspace vorzubereiten. Dabei können alle Standardeinstellungen beibehalten werden, außer dass der automatische Logon mit einem vorher in der VM angelegten Benutzerkonto aktiviert werden sollte. Zum Abschluss der Konfiguration wird die VM heruntergefahren, in dem man das Setup des VM Prerequisites Tools abschließt.

Bevor man mit dem Test des Images beginnen kann, meldet man sich mittels der MED-V Management Konsole, die vorher natürlich auf dem Hostsystem installiert werden muss, auf dem Server an, um den Workspace zu konfigurieren.
Als Erstes wechselt man in der Management Konsole in die Rubrik Images, um unter Local Test Images das Image der VM über “New…” hinzuzufügen.

 

Danach wird in die Rubrik Policy gewechselt. Hier vergibt man nur für seinen Workspace einen Namen. Die restlichen Einstellungen werden bei den Standardeinstellungen belassen.

 

Im nächsten Abschnitt “Virtual Machine” weist man dem Workspace sein Testimage zu. Sollte dies nicht in der Liste vorhanden sein, hilft ein Klick auf Refresh. Auch hier werden sonst keine weiteren Einstellungen vorgenommen. Dies gilt im übrigen auch für die Abschnitte Deployment, Web und VM Setup.

 

Der Abschnitt Applications ist sehr interessant, da man hier direkt die Gemeinsamkeit von dem XP-Mode und MED-V erkennt. Hier können Applikationen definiert werden, die in der VM ausgeführt und auf dem Hostsystem bereit gestellt werden. Wie auf dem Screenshot zu sehen ist, wurde hier der Internet Explorer 6.0 als Applikation konfiguriert! Diese Konfiguration wird einfach übernommen, in dem man über “Add” eine neue Zeile für die Konfiguration hinzufügt und die entsprechenden Inhalte des Screenshots dort einträgt.

 

Die Einstellungen in den Abschnitten Network und Performance können aus den folgenden Screenshots übernommen werden.

  

Danach sichert man seine Einstellungen und startet den MED-V Workspace über die entsprechende Verknüpfung im Startmenü auf dem Hostsystem. Bei der Abfrage welches Image verwendet werden soll, bestätigt man das Testimage! Nachdem der Workspace gestartet ist, findet man im Startmenü den entsprechenden Eintrag für den Internet Explorer 6.0.

 

Startet man nun den Internet Explorer 6.0, so erkennt man als erstes an dem XP Design, dass die Applikation in der VM läuft. Allerdings ist dies auch durch die blaue Umrandung zu merken.

 

Im nächsten Tutorial werde ich auf die einzelnen Einstellungen, die man mittels der MED-V Management Konsole vornehmen kann, detaillierter eingehen.

Drittes BS1 Praktikum

Leider etwas verspätet, aber besser spät als nie. Hier die Lösungen zum dritten BS1 Praktikum:

In Aufgabe 2 sollte der folgende Programmcode mit den dazu vorgegebenen Befehlen ausgeführt werden:

#include <stdio.h>
#include <unistd.h>
int main () {
    printf(“Textausgabe vor dem Fork\n”);
    fork();
    printf(“Textausgabe nach dem Fork\n”);
    return 0;
}

Befehle:

./a.out
./a.out | cat

Es galt dann die Problemstellung zu lösen, wie für beide Befehle dieselbe Ausgabe zu realisieren sei. Die Lösung ist dabei ziemlich simpel, in dem man einfach eine Pufferentleerung vor dem fork() durchführt.

#include <stdio.h>
#include <unistd.h>
int main () {
    printf(“Textausgabe vor dem Fork\n”);
    fflush(stdout);
    fork();
    printf(“Textausgabe nach dem Fork\n”);
    return 0;
}

Die Lösung zu Aufgabe 3 sieht wie folgt aus:

#include<stdio.h>
#include<sys/wait.h>
#include<unistd.h>

void ausgabe(int x){
    int i;
    for(i=0; i<20; i++){
        printf(“%d”, x);
        usleep(1000);
        fflush(stdout);
    }
}

int main() {
    if(fork()==0){
        ausgabe(0);
    }
    else if(fork()==0){
        ausgabe(1);
    }
    else if(fork()==0){
        ausgabe(2);
    }
    else{
        waitpid(-1, NULL, 0);
        waitpid(-1, NULL, 0);
        waitpid(-1, NULL, 0);
        printf(“\nfertig\n”);
    }
    return 0;
}

Hier sollten jeweils 3 Kindprozesse erzeugt werden, die zwanzig mal eine 1, 2 und 3 ausgeben. Nach jedem Durchlauf der Schleife wird 1 ms gewartet und eine Pufferentleerung durchgeführt. Der Vaterprozess wartet mittels waitpid() auf das Ende der Kindprozesse.

Zuletzt wurde eine Prozess-Synchronisation mittels pipe programmiert. Das Programm soll nur zwei Parameter als Übergabe zulassen und ansonsten eine Fehlermeldung ausgeben!

#include<stdio.h>

int main(int argc, char *argv[]){

    int pipe_connect[2];
    if(pipe(pipe_connect)==-1){
        printf(“Fehler beim Erzeugen der Pipe”);
        return -1;
    }
    if(argc>3){
        printf(“Zu viele Parameter!\n”);
        return -1;
    }
    if(fork()==0){
        dup2(pipe_connect[1], 1);
        close(pipe_connect[0]);
        execlp(argv[1], argv[1], 0);

        printf(“Der Aufruf 1 ist fehlgeschlagen!”);
        return -1;
    }
    else if(fork()==0){
        dup2(pipe_connect[0], 0);
        close(pipe_connect[1]);
        execlp(argv[2], argv[2], 0);

        printf(“Der Aufruf 2 ist fehlgeschlagen!”);
        return -1;
    }
    else{
        close(pipe_connect[0]);
        close(pipe_connect[1]);
        wait(0);
        wait(0);
    }
    return 0;
}

MED-V Demoumgebung – Fehler beim Starten des Workspace

Als ich heute meine fertig konfigurierte VM testen wollte, gab mir MED-V beim Starten des Workspace folgenden Fehler aus:

Encountered an unexpected error. Internal error: Object reference not set to an instance of an object.

Zu dem wurde im Fenster oben rechts die Event ID 57 angezeigt. Nach einer kurzen Analyse konnte ich die .vmc-Datei als Ursache feststellen. Ich hatte die VM mittels Windows Virtual PC unter Windows 7 erstellt. Allerdings funktioniert MED-V unter Windows 7 nur mit Virtual PC 2007 SP1 und zwei zu installierenden Updates. Das Problem lag im Endeffekt daran, dass Virtual PC 2007 mit der von Windows Virtual PC erstellten .vmc-Datei nicht zu 100% richtig umgehen kann. Die Lösung ist dabei ziemlich trivial: Einfach die .vmc-Datei löschen und mittels Virtual PC 2007 eine neue VM erstellen, so dass eine neue .vmc-Datei erzeugt wird. Diese konfiguriert man dann noch entsprechend und bindet die schon vorhandene VHD ein.

Danach startete der Workspace ohne Probleme und ich konnte mit dem Testen beginnen!

Review Project Springboard 2010

Letzte Woche Freitag fand zum zweiten Mal das Project Springboard statt. Im Gegensatz zu letztem Jahr war ich diesmal als Speaker mit zwei Vorträgen an der Konferenz selber beteiligt. Meine beiden Themen waren einmal “Windows Server 2008 R2 – die Neuerungen” und “Booten von VHD mit Windows 7 / Windows Server 2008 R2”. Dem Feedback nach zu urteilen sind die Vorträge bei den Zuhören gut angekommen.

Neben meinen eigenen Vorträgen habe ich natürlich die Möglichkeit genutzt auch die Vorträge der anderen Speaker zu besuchen. Die verschiedenen interessanten Themen machten eine Auswahl um so schwieriger. Im Endeffekt war ich in den Vorträgen zu “Zeitmanagement im Studium mittels Outlook 2010”, “F# in Visual Studio 2010”, “System Center Operations Manager 2007” und “Windows 7 Phones”.

Alle Vorträge waren sehr gelungen, so dass ich viele Informationen und Tipps für mich selber mitnehmen konnte. Aus dem Vortrag zum Zeitmanagement mittels Outlook konnte ich den ein oder anderen Tipp mitnehmen, um meine Arbeit noch effektiver zu verteilen und zu bewältigen. Der Vortrag zu F# hat bei mir dann das Interesse geweckt, mich intensiver mit der funktionalen Programmierung auseinander zu setzen. Leider fehlt mir momentan die Zeit dazu und es stehen noch andere Themen auf meiner Liste wie zum Beispiel die PowerShell. Ein weiteres Themengebiet, dass auf meiner Liste hinzukommt, ist der System Center Operations Manager. Die Möglichkeiten zur Überwachung der Funktionsfähigkeit der Infrastruktur sind beachtlich. Mittels der Management Packs lassen diese sich auch auf Software ausweiten, die nicht von Microsoft kommt. Zum Abschluss gab es einen sehr interessanten Ausblick auf die Windows 7 Phones.

Wie im letzten Jahr schon ist und bleibt das Project Springboard eine sehr interessante und informative Veranstaltung von Studenten für Studenten. Egal ob man jetzt als Speaker oder Besucher dabei ist. Ich für meinen Teil bin wieder sehr gerne als Speaker dann beim Project Springboard 2011 dabei. :)

Zweites BS1 Praktikum

Hier nun die Lösungen zu den Aufgaben 2-4 aus dem zweiten BS1 Praktikum!
In Aufgabe 2 sollte man die Anzahl der Parameter in der Argumentenliste und die Argumentenliste, die bei dem Programmaufruf angegeben wird, mittels des Programms ausgeben. Die Ausgabe erfolgt, wie gefordert, dabei über die Pointerschreibweise. Werden keine Parameter angegeben, so wird eine Fehlermeldung ausgegeben und ein Fehlercode an die Shell zurück gegeben.

#include<stdio.h>
#include<stdlib.h>

int main(int argc, char *argv[]) {
    int    i = 0;
    if (argc==1){
        printf(“ERROR: Kein Parameter!\n”);
        return 1;
    }
    else {
        printf(“Anzahl der Kommandozeilenparameter: %d \n”, argc);
        printf(“Die Eingabeparameter sind:\n”);
        while(*argv != 0) {
            printf(“argv[%d] = %s \n”, i++, *argv++);
        }
    }
    return 0;
}

Die Aufgabenstellung Nummer drei lässt sich schnell und unkompliziert zusammenfassen. Gefordert war die Ausgabe der Umgebungsvariablen, das Setzen einer Umgebungsvariable und das Suchen nach Umgebungsvariablen, ob diese vorhanden sind!

#include<stdio.h>
#include<stdlib.h>

void main(int argc, char* argv[], char* envp[]) {
    printf(“Liste der Umgebungsvariablen:\n”);
    while(*envp != 0) {
        printf(“%s \n”, *envp++);
    }

    setenv (“HUGO”, “Hugo”, 1);

    char search[50];
    printf(“Geben Sie die zusuchende Umgebungsvariable an:\n”);
    scanf(“%s”, &search);
    if(getenv(search)){
        printf(“%s = %s\n”, search, getenv(search));
    }
    else{
        printf(“Die gesuchte Umgebungsvariable existiert nicht!\n”);
    }
}

Das Programm für Ausgabe 4 ersetzt einen vorhandenen Prozess durch einen anderen mittels einem Befehl aus der exec-Familie. Der fork()-Aufruf durfte laut Aufgabenstellung nicht verwendet werden.

#include <stdio.h>
#include <unistd.h>

int main() {
    printf(“Eigene Prozess-ID: %i\n\n”, getpid());
    execlp(“ps”, “ps-Test”, 0);
    printf(“Ein Problem ist während dem Ersetzen des Prozesses aufgetreten!”);
return -1;
}