Samstag, 31. Januar 2009

By Design – Oder besser: By schlechten Design

Immer wieder finde ich fehlende Funktionen in Programmen, die ich den Herstellern melde, in der Hoffnung, dass diese das Programm in einer späteren Version darauf hin verändern. Noch besser wäre ein kostenloses Update, aber das habe ich schon aufgegeben.

Aktuelles Beispiel ist die Testversion vom Windows Vista Nachfolger Windows 7. Im Media Center kann man Fernsehsendungen mit dem elektrischen Programmführer schon ganz gut planen, doch sehr oft will man eine Sendung mit Angabe der Zeiten (von/bis) aufzeichnen. Grund sind vorrausichtliche Überziehungen, bei denen man einfach eine halbe Stunde mehr aufzeichnen möchte, sicherheitshalber.

Eine manuelle Aufzeichnung gibt man wie folgt ein (Screenshot aus Windows Vista, ist bei Windows 7 aber auch so):

image

Was mich persönlich stört ist die Tatsache, dass ich hier die Kanalnummer eingeben muss, anstatt den Kanal anhand des Sendernamens auswählen kann. Selbst bei nur 24 Sendernamen (DVB-T) ist das viel.

Ich habe über Microsoft Connect ein Feedback gegeben, und heute bereits eine Antwort bekommen:

Product/Technology - Windows 7 Beta Program
Feedback ID - 406206
Feedback Title - Not possible to select channel with real name

The following fields or values changed:

Field Status changed from [Active] to [Resolved]
Field Resolution changed from [Not Set] to [By Design]

Hm, By Design also. Klar, dass das durch einen Programmierfehler nicht möglich ist, hatte ich mir schon gedacht. Aber bedeutet By Design, dass das nicht doch vielleicht interessant ist?

Ein anderes Beispiel in Outlook:

Ich möchte für jeden Freitag im Monat einen Termin eintragen, nur am 3. Freitag habe ich für diesen Termin eine andere Uhrzeit (deswegen kann ich nicht "jeden Freitag" auswählen). Nun aber das Problem mit dem 5. Freitag und dem "letzten Freitag". Der Februar 2008 hat 5 Freitage, d.h. dort müsste ich Serientermine mit "1., 2., 4. und letzten Freitag" anlegen. Mache ich das, dann bekomme ich z.B. für den März am letzten Freitag zwei Einträge, da das der letzte als auch der 4. ist.

Ich habe dafür einen meiner Support Calls bei Microsoft geopfert, aber leider die gleiche Antwort bekommen: "das ist halt so, ist by Design”. Microsoft hat mir am Ende gesagt, ich solle halt einfach einen Anbieter von Add-Ons für Outlook speziell für Termine kaufen.

Donnerstag, 29. Januar 2009

Internet Explorer kann nur 31 Stylesheet Tags verarbeiten

Das ist ja verrückt, war mir bis gerade nicht bewusst: der Internet Explorer kann nur maximal 30 (bei mir gehen 31) Stylesheet Tags (LINK mit type=text/css oder STYLE, auch inline) verarbeiten. Alle weiteren Angaben werden einfach ignoriert.

Dabei kommt es noch nicht einmal darauf an, ob darin wirklich CSS Angaben geladen werden, z.B. weil die Datei nicht existiert. Auch leere STYLE Tags zählen dazu.

Jetzt wird jemand sagen, warum brauchst du so viele Stylesheets? Nun, wer ein wenig in Controls denkt, der wird auch seine CSS entsprechend pflegen wollen. Da gibt es z.B. bei mir einen Stillstands-Dialog (für die, die mich nicht kennen: es handelt sich dabei um einen Dialog in einer Web Anwendung an einer Maschine, der erscheint, wenn bei der Maschine ein Fehler auftritt). Dieser hat selber 40 CSS Angaben, die ich für andere Seiten der Web Anwendung nicht benötige.

Ich kann das Problem sehr einfach reduzieren, in dem ich meine Scriptengine auf CSS Dateien aufbohre, zum Glück. In dem KB Artikel 262161 steht zwar nur etwas bis zur Version 6, aber im IE7 und in der aktuellen RC des Internet Explorer 8 ist die Begrenzung von 31 Tags leider auch noch. Andere Web Browser wie der Firefox haben damit kein Problem. Warum hat Microsoft ein Problem mit 0x1F (=31)?

Dienstag, 27. Januar 2009

Das nervt – CSS Probleme mit border-collapse:collapse

Da haben wir Jahrelang die CSS Formatierungen für Tabellen versucht ordentlich zu machen, und jetzt kommt der RC1 vom Internet Explorer 8, und es gibt neue Probleme.

Beispiel:

<style type="text/css">
td
{
background-color:#D2D2D2;
border-left:15px solid black;
height:60px;width:60px;
} td.test
{
border-left:15px solid blue;
} </style> <table cellpadding="0" cellspacing="0"
border="0" style="border:15px solid green;"> <tr> <td class="test">Test</td> <td>Test</td> <td class="test">Test</td> <td class="test">Test</td> <td class="test">Test</td> <td>Test</td> <td>Test</td> </tr> </table>

Öffnet man diese Testseite im Internet Explorer 6 oder 7 als auch im Firefox, dann erhält man folgende Tabelle:

ohne border-collapse

Das Problem ist der blaue Rahmen der linken Zelle. Um das zu beheben reicht es aus der Tabelle ein weiteres CSS zu verpassen: border-collapse:collapse.

Je nach dem wie man das border-collapse in den Web Browsern implementiert, wird entweder ein grüner oder blauer Balken angezeigt. Interessant ist, dass der Firefox hier sogar die Farbe in den Ecken abschrägt, das finde ich interessant.

Internet Explorer:

IE 7 mit border-collapse

Firefox:

Firefox mit border-collapse

Wenn ich diese Version in dem RC1 des Internet Explorer 8 anschaue, dann finde ich weiße Linien an einigen Rahmen:

IE8 RC1 mit border-collapse

Hier mal in einer vergrößerten Ansicht:

border-collapse Lupe

Das ist erst einmal falsch, und sieht dann auch bei größeren Tabellen richtig dumm aus, gerade dann, wenn man Spalten als Abstandshalter verwendet, diese also leer sind, aber nun einen weißen Rahmen haben. Warum ist das noch keinem aufgefallen, oder ist das mit dem border-collapse:collapse falsch verstanden?

Und weiter: je nach Zoomeinstellung des Internet Explorer 8 werden dann weitere weiße Linien gezeichnet, z.B. bei 150% sieht das dann so aus:

IE8 RC1 mit 150% Zoom und border-collapse

Nur was mache ich jetzt mit meinen Webseiten? Auf eine korrekte Final warten? Mir bleibt wohl nichts anderes übrig…

Update: hier ist mein Feedback auf Microsoft Connect, bitte mit abstimmen.

How to learn AJAX in .NET – Hm, eine gute Frage!

Eigentlich ist der Titel des Beitrags jetzt falsch gewählt. Vielleicht sollte er lieber Wie filtere ich nervende E-Mails aus? lauten. Immer öfters bekomme ich E-Mails wie die hier:

i hont to learn .net so i want to use ajax in my site so give me guidense about  this subject

Please can you do this for me as I dont have the time. I have a urgent project with AJAX and don’t know ASP.NET.

Can you please send me the language packs for [Platzhalter], I cannot download.

Can you please tell me how to hack a web site? I know that you can do it and so please give me instructions. The site is [Platzhalter].

Das ist nur ein Auszug, und es werden von Tag zu Tag mehr. Ok, Fragen zu AJAX könnte ich ganz bestimmt beantworten, aber das sind ja allgemeine Fragen, wie ich ASP.NET programmiere.

Das mit den Sprachpaketen von Vista liegt vielleicht daran, dass man mit vista english language pack bei Google meinen Englischen Blog schon auf der ersten oder zweiten Seite findet. Warum? Keine Ahnung!

jQuery Tipp 1 – bind() verbessern

Jeder, der mit jQuery z.B. eigenen HTML Code erzeugt, und dazu irgendwelche Events wie onclick, onmouseover etc. einsetzt, kommt um die Methoden $.bind() und $.unbind() nicht herum. Diese Methoden werden auf einen jQuery Selector angewendet:

$("#testid div").bind("click", function(ev) {
    alert("Hello World!")
});

In dem oben gezeigten Beispiel geben wird nach dem Anklicken eines DIV Elementes unterhalb des HTML Elements mit der ID testid der Text Hello World! angezeigt.

Nehmen wir an, dass es 100 DIV Elemente unter dem Elternelement testid gibt, dann könnte man das obige Beispiel auch so schreiben (und so wird das auch intern abgearbeitet):

$("#testid div").each(function() {
    $(this).bind("click", function(ev) {
        alert("Hello World!")
    });
});

Um das noch etwas aufzublähen könnte man auch noch das hier schreiben:

$("#testid").find("div").each(function() {
    $(this).bind("click", function(ev) {
        alert("Hello World!")
    });
});

In einem Beispiel mit 100 Elementen komme ich auf einem Testrechner auf 10-20 Millisekunden, das ist nicht besonders viel. Baut man den Beispielcode weiter aus, und verwendet mehrere Stylesheetangaben, verschachtelt die Elemente in eine große HTML Seite von ca. 100 kB, dann werden aus den 10-20 Millisekunden schnell auch mal 100 oder auch mehr.

Wer jetzt weiter den HTML Code in kurzen Abständen aktualisieren möchte, muss zudem noch die .unbind() Methode aufrufen, da sonst der Speicher im Internet Explorer wächst.

Eine andere Lösung ist, dass man anstatt jedem einzelnen DIV Element ein onclick zuweist, und dann das Event nur noch am Elternelement abfängt. Das könnte dann so aussehen:

$("#testid").bind("click", function(ev) {
    alert("Hello World!")
});

Misst man das Zuweisen des Events kommt man auf 0-1 Millisekunde (so genau wie das eben mit dem Date Objekt in JavaScript geht).

Da wir in unserem Beispiel noch gar nicht auf das eigentliche Element zugreifen, ist hier erst einmal alles in Ordnung. Wollen wir auf das eigentliche Element zugreifen, können wir jetzt die Eigenschaft .srcElement des Ereignis ev verwenden:

$("#testid").bind("click", function(ev) {
    var ele = $(ev.srcElement);
    alert(ele.html());
});

Als kleinen Test zeigen wir mal den HTML Source Code des angeklickten Elements an. Soweit so gut.

Doch was ist ev.srcElement eigentlich wirklich? Ist es das erwartete DIV Element? Das kommt ganz auf den HTML Source Code an:

  1. Enthält das DIV Element nur Text, und ist mindestens so breit wie das Elternelement testid, dann erhalten wir das DIV Element.
  2. Ist das DIV Element schmäler, und wir haben daneben geklickt, bekommen wir den HTML Source Code von testid.
  3. Ist in dem DIV Element selber HTML enthalten, also z.B. verschiedene Links oder SPAN, B, … Tags, und wir haben gezielt auf diesen geklickt, bekommen wir dessen Inhalt angezeigt.

Beheben kann man das nur, indem man dafür sorgt, dass die DIV Elemente den leeren Bereich von testid komplett ausfüllen. Das ist besonders bei Tabellen als auch DIV Elementen sehr leicht.

Für den Fall, dass das DIV Element selber viele HTML Tags enthält, habe ich mir eine findParent Methode gebastelt. Mit dieser Methode ist es dann möglich, mit Hilfe eines jQuery Selectors das oberste DIV Element (direkt unter testid) zu finden.

function findParent(ele, selector, maxr) {

    if(ele.is(selector))
        return ele;

    var c = 0;
    while(++c < maxr && !ele.is("body") && !ele.is(selector)) {
        ele = ele.parent();
    }

    if(ele.is(selector))
        return ele;

    return null;
}

Der .bind() Aufruf sieht dann wie folgt aus:

$("#testid").bind("click", function(ev) {
    var ele = $(ev.srcElement);
    var div = findParent(ele, "div[:parent=#testidx]", 10);

    alert(div.html());
});

Und hier nochmal eine ganze HTML Seite mit dem Beispiel:

<html><body>

<div id="testid" 
style="background-color:red;width:240px;"></div> <script type="text/javascript"
src="http://jqueryjs.googlecode.com/files/jquery-1.3.1.min.js"></script>
<script type="text/javascript">

function findParent(ele, selector, maxr) {

    if(ele.is(selector))
        return ele;

    var c = 0;
    while(++c < maxr && !ele.is("body") && !ele.is(selector)) {
        ele = ele.parent();
    }

    if(ele.is(selector))
        return ele;

    return null;
}

$(document).ready(function() {

    // Beispiel HTML
    var h = [];
    for(var i=0; i<10; i++) {
        h.push("<div style=\"background-color:yellow;width:200px;cursor:hand;\">" + i + "</div>");
    }
    h.push("<div style=\"background-color:yellow;width:240px;cursor:hand;\">10</div>");
    h.push("<div style=\"background-color:green;width:240px;cursor:hand;\">11 <b>fett</b> <i>kursiv</i></div>");
    $("#testid").html(h.join(""));

    $("#testid").bind("click", function(ev) {
        var ele = $(ev.srcElement);
        var div = findParent(ele, "div[:parent=#testidx]", 10);

        alert(div.html());
    });

});

</script>

</body></html>

image Klickt man nun in den roten Bereich (das ist der Bereich, bei dem die DIV Elemente nicht bis an den Rand des Elternelements reichen, dann erhält man den kompletten HTML Source Code des Elternelements testid. Im gelben Bereich wird der richtige Source Code angezeigt, also die Zahlen 0..10.

Bei der grünen Zeile kann man jetzt auf die 11, auf fett oder kursiv klicken, und erhält immer den kompletten Source Code der Zeile. Das würde mit ele.html() nicht funktionieren.

Montag, 26. Januar 2009

Handschuh auf Touchscreen Tastatur gelegt – Wie vermeide ich ein ständiges Neuladen?

Vor einiger Zeit hatten wir ein Problem, dass immer wieder mal eine sehr Hohe Auslastung auf einem Web Server zu verzeichnen war. Beim Analysieren der Logdateien stellte sich heraus, dass es sich um ein Windows XP Embedded handelte. Nach langem Hin und Her konnte ich das Problem eingrenzen, und nach weiteren Wochen dann auch finden.

Problem war, dass ein Fahrer eines Gabelstapler mit integriertem Touchscreen und Windows XP Embedded seine Handschuhe genau auf die F5 Taste gelegt hat. Wer das mal ausprobiert hat, stellt schnell fest, dass dadurch Tausende http Aufrufe gestartet werden, der Web Browser sich aber nicht um die Antwort schert.

Nun, wie konnte man dieses Problem schnell in den Griff bekommen? Richtig, mit einem IHttpModule, welches alle Zugriffe überwacht, und im richtigen Moment dann anstatt dem Original Source Code ein kleines JavaScript mit einem alert(…) zurückliefert. Warum ein alert(…)? Weil man das mit der Maus/Touchscreen oder mir der Eingabetaste bestätigen muss.

Hier ein Auszug aus dem IHttpModule:

public class DosAttackModule : IHttpModule
{
    // ...

    void IHttpModule.Init (HttpApplication context)
    {
        context.BeginRequest += 
new EventHandler (context_BeginRequest); } private void context_BeginRequest (
object sender, EventArgs e) { HttpRequest request = HttpContext.Current.Request; string ip = request.UserHostAddress; string page = request.PhysicalPath.ToLower () .Replace (request.MapPath("~/")
.ToLower (), "").Replace ("\\", "/"); if (!page.EndsWith (".aspx")) // only log ASPX files return; string key = ip + "_" + page; if (_Banned.Contains (key)) { HttpContext.Current.Response.StatusCode = 403; HttpContext.Current.Response.Write (@"<html> <head><title>Error</title></head> <body onload=""alert('Your browser has made too many requests per second, probably by a malfunction.');document.location.reload();""> </body> </html>"); HttpContext.Current.Response.End (); } CheckIpAddress (key); } // ... }

Wenn jetzt F5 zu oft gedrückt wird (CheckIpAddress), dann steckt in der Liste _Banned die IP Adresse, hier zusätzlich noch der Seitenname. Erscheint der Dialog muss man 5 Sekunden warten, erst dann ist die IP Adresse aus der Liste entfernt worden.

Donnerstag, 22. Januar 2009

MSDN Premium Abo gewonnen – 7 glückliche Gewinner

Heute morgen war es dann so weit, diejenigen, die einen Kommentar hinterlegt hatten, wurden per C# und Random.Next() zu glücklichen Gewinnern eines MSDN Premium Abos, mehreren Visual Studio 2008 Standard Versionen als auch einer Visual Studio 2005 Standard:

string[] list = new string[] {
    "Rainer Schuster",
    "Bernd Hengelein",
    "romanp",
    "Christoph Schmid",
    "plantagoo",
    "Jürgen",
    "Hendrik"
};

List<string> products = new List<string>(new string[] {
    "MSDN Premium",
    "Microsoft Expression",
    "Visual Studio 2008 Standard",
    "Visual Studio 2008 Standard",
    "Visual Studio 2008 Standard",
    "Visual Studio 2008 Standard",
    "Visual Studio 2005 Standard"
});

foreach (string name in list)
{
    int i = new Random(DateTime.Now.Millisecond)
.Next(0, products.Count); Console.WriteLine(name + " => " + products[i]); products.RemoveAt(i); }

 

Und hier die glücklichen Gewinner:

image

Beim nächsten .NET Usergroup Franken Treffen werde ich die Software mitbringen; wer schon vorab sein Gewinn haben möchte, schickt mir einfach eine E-Mail, das regeln wir dann…

Da ich die Bücher mangels Beteiligung nicht verlost habe, bringe ich diese auch bei den nächsten Treffen mit.

Und für alle, die das Gewinnspiel verpasst haben: es gibt bald wieder ein MSDN Premium Abo zu gewinnen!!

Update: plantagoo hatte leider keinen Link auf seinen Blog, sondern nur auf diesen Beitrage selber gelinkt, musste deswegen jetzt noch disqualifiziert werden.

Mittwoch, 21. Januar 2009

Alle E-Mails bei Google Mail löschen – SSL mit .NET

In einem E-Mail Konto bei Google Mail wollte ich alle E-Mails löschen, aber wie macht man das in .NET? Google verlangt eine SSL Verbindung, also muss ich mir doch mal den SslStream im Namensraum System.Net.Security anschauen. Eigentlich ist es super einfach, denn man benutzt einfach den SslStream, der den Stream vom TcpClient kapselt, außen sieht das dann genauso aus wie ein normaler Stream.

TcpClient c = new TcpClient("pop.gmail.com", 995);
SslStream ssl = new SslStream(c.GetStream(), false, 
    new RemoteCertificateValidationCallback
(ValidateServerCertificate), null); ssl.AuthenticateAsClient("pop.gmail.com"); // ab hier ist es dann wieder gleich Console.WriteLine(ReadMessage(ssl));
byte[] message =
Encoding.ASCII.GetBytes("USER benutzer@gmail.com\r"); ssl.Write(message); Console.WriteLine(ReadMessage(ssl));
message = Encoding.ASCII.GetBytes("PASS **********\r");
ssl.Write(message);
Console.WriteLine(ReadMessage(ssl));
// ...

Na, das ist ja echt super einfach, ich liebe es. Nebenbei sei erwähnt, dass man das über die Web Oberfläche auch sehr einfach machen kann, wenn auch nicht automatisiert. Dort klickt man im Posteingang auf Alle markieren, dann auf Wählen sie alle 3585 Konversationen in Posteingang, und dann weiter auf Löschen, geht natürlich noch schneller.

image

SocketException ErrorCode 10035 – Ein Switch war dran schuld!

tahoe-ii Ein Kunde hat ein Problem mit dem .NET Micro Framework und einem Tahoe-II Board. In einem Beispielprojekt wird auf einen Web Server zugegriffen, um den HTML Quelltext herunterzuladen, eigentlich eine ganz einfache Aufgabe. Im Microsoft Emulator als auch in den Tahoe/Tahoe-II Emulatoren klappt das alles einwandfrei, nur eben nicht mit der echten Hardware. Folgenden Fehler zeigt das Visual Studio bei socket.Connect():

#### Exception System.Net.Sockets.SocketException - E_FAIL (1) ####
#### Microsoft.SPOT.Net.SocketNative::poll [IP: 0000] ####
#### System.Net.Sockets.Socket::Poll [IP: 0011] ####
#### System.Net.Sockets.Socket::Connect [IP: 0029] ####
#### NetworkTester.Program::Main [IP: 00f7] ####
#### SocketException ErrorCode = 10035
Eine Ausnahme (erste Chance) des Typs "System.Net.Sockets.SocketException" ist in Microsoft.SPOT.Net.dll aufgetreten.
#### SocketException ErrorCode = 10035
#### SocketException ErrorCode = 10035
#### SocketException ErrorCode = 10035
SocketException: Exception was thrown: System.Net.Sockets.SocketException Error-code: 10035
Der Thread 0x1 hat mit Code 0 (0x0) geendet.
Das Programm "[13] Micro Framework application: Verwaltet" wurde mit Code 0 (0x0) beendet.

Das gleiche Beispielprojekt läuft bei mir aber einwandfrei. Nach ein paar anderen Tests haben wir’s dann doch noch gefunden, es lag am Switch, an dem das Tahoe-II Board angeschlossen war. Da die Boards nur einen 10 MBit Anschluss haben, könnte es auch an der Erkennung als 10 MBit liegen. Switch durch einen anderen ausgetaucht, und schon klappt alles.

jQuery Upgrade von 1.1 auf 1.3 – Zwei wichtige Änderungen

Wer noch mit einer etwas älteren jQuery Version arbeitet (in meinem Fall ist es die Version 1.1 aus dem Jahr 2007), der muss beim Upgrade auf die aktuelle Version 1.3 etwas aufpassen. Folgende zwei Änderungen sind mir aufgefallen:

  • Attribute im Selektor werden jetzt nicht mehr mit @ geschrieben, also aus $(“div[@attr=hans]”) wird $(“div[attr=hans]”).
  • Ein untergeordnetes Element konnte man früher mit einem Slash angeben: $(“div/b”), also alle B-Tags, die direkt unter einem DIV-Tag liegen. In der aktuellen Version schreibt man dafür dann $(“div > b”), das übrigens auch schon früher so ging.

Es gibt bestimmt noch mehr Inkompatibilitäten, aber das sind die, die mir bei allen Projekten aufgefallen sind. Wer schon mit der Version 1.2 arbeitet, ist bereits aus dem Schneider.

Microsoft Entwicklungsprodukte kostenlos – jetzt auch für Schüler!

imageMicrosoft bietet nun das kostenlose DreamSpark Programm nicht nur für Studierende an, sondern nun auch für Schüler.

Was ist DreamSpark? DreamSpark stellt Schülern und Studierenden professionelle Microsoft Entwickler- und Design Tools kostenlos zur Verfügung, so dass sie Ihr volles Potential entfalten können und die Möglichkeit haben den nächsten großen Durchbruch in der Technologie mitgestalten zu können. Microsoft möchte Schüler und Studierende fit für die Zukunft machen und mit diesem Programm ihre schulische und berufliche Karriere unterstützen.

Wer kann daran teilnehmen? DreamSpark ist für Millionen von Schülern und Studierenden auf der ganzen Welt verfügbar. Die Liste der teilnehmenden Länder wächst jeden Monat weiter und kann während des Verifizierungsprozesses eingesehen werden. Solltest Du nicht in einem der gelisteten Länder wohnen, sieh bitte einfach immer wieder mal nach, da wir das ganze Jahr über immer mehr Länder hinzufügen.

Unter den Produkten ist Visual Studio 2008 Professional Edition, Windows Server 2008 Standard, SQL Server 2008 Developer, Microsoft Expression Studio 2, xna Game Studio 2.0, und auch die z.B. für .NET Micro Framework 2.5 noch benötigte Visual Studio 2005 Professional Edition.

So, dann muss ich mal bei unserer Grundschule nachfragen… ob Erstklässler auch an die Entwickler- und Design Tools rankommen?

Und für alle Nicht-Schüler/-Studierende, bei mir gibt’s ja auch noch bis heute Abend ein MSDN Abo zu gewinnen.

Dienstag, 20. Januar 2009

“Kaputte” Mercedes Nebelscheinwerfer – kein Grund zur Beanstandung

In meinem Post Mercedes-Fahrer und der kaputte Nebelscheinwerfer hatte ich mich gefragt, warum immer mehr Mercedes Fahrer nur mit einem Nebelscheinwerfer durch die Gegen fahren, und auch dann, wenn weit und breit kein Nebel zu sehen ist. Eigentlich wollte ich schon mal jemand ansprechen, doch habe heute im Internet die Antwort gefunden.

Der Grund für die einseitigen Nebelscheinwerfer ist das Abbiegelicht. Wie es aussieht, verwendet Mercedes (oder besser gesagt die Autos, bei denen ich das gesehen habe, gilt ja nicht für alle Mercedes) für das Ausleuchten in Kurven bis 40 km/h die Nebelscheinwerfer der inneren Kurvenseite. Wow, das ist für mich eher ein Abbiegelicht für Arme.

Wikipedia schreibt zum Thema Kurvenlicht:

Seit diesem Zeitpunkt bieten verschiedene Fahrzeughersteller das Kurvenlicht meist nur in Verbindung mit Xenonlicht an, Ausnahmen sind Fiat (z.B. beim Bravo schaltet sich unterhalb einer gewissen Geschwindigkeit und Betätigung des Fahrtrichtungsanzeigers oder bei einer gewissen Mindestlenkradumdrehung automatisch der linke bzw. rechte Nebelscheinwerfer, welcher Kurven wesentlich besser ausleuchtet, ein), Peugeot, Ford, Opel und Renault, die Kurvenlicht mit Halogenscheinwerfern z. B. im Peugeot 207, Ford Focus, im Opel Corsa und Meriva sowie im Renault Clio anbieten, so z. B.: Audi, BMW, Citroën, Mercedes-Benz, Opel und VW.

So, dann werde ich mir das mal genauer anschauen, die müssten ja jetzt alle irgendwie um eine Kurve gefahren sein, oder?

Globale JavaScript Objekte in AJAX/JavaScript Frameworks

Jeder, der schon ein wenig mit JavaScript programmiert hat, wird schnell feststellen, dass globale Variablen oder Objekte schnell zu Problemen führen, wenn man JavaScript von anderen Herstellern oder Entwicklern gemeinsam auf einer Seite einsetzen möchte.

Um es mal schnell zu verdeutlichen, hier ein kleines Beispiel. Der Entwickler schreibt folgende Methode in einem seiner JavaScript Dateien:

<script type=”text/javascript”>
function formatString(s, param) {
    // … hier kommt die Logik rein
}
</script>

Nun benötigt der Entwickler AJAX Funktionalitäten, und lädt sich deswegen ein JavaScript AJAX Framework aus dem Internet herunter. Mit einem einfach <script type=”text/javascript” src=”framwork.js”></script> bindet er die JavaScript Datei ein, und hier schleicht sich das Problem ein.

Das JavaScript Framework besitzt eine gleichlautende Methode formatString, die, wer hätte es gedacht, natürlich eine andere Logik implementiert hat. Sobald die Datei framework.js geladen ist, wird diese die eigene Methode überschreiben.

Mats Bryntse hat eine kleine Webseite geschrieben, die bekannte JavaScript Frameworks lädt, und die durch das Laden erstellten globalen Variablen / Objekte anzeigt. Die Frameworks mit einer hohen Anzahl globaler Objekte sind dort die Problemkinder. Im Screenshot habe ich das Microsoft ASP.NET AJAX Framework ausgewählt. Dies hat von allen hier getesteten Frameworks die meisten Objekte angelegt, aber: die meisten Variablen oder Methodennamen fangen mit $ oder Sys$ an, d.h. solange ich nicht ähnliche Prefixe verwende, bin ich schon mal auf der besseren Seite.image

Neben den globalen Objekten werden oft auch die JavaScript Datentypen wie Number, String, Date, Boolean oder Function um weitere Funktionalitäten erweitert, dies geschieht mit dem prototype Keyword. Hier gibt es immer mal wieder Probleme, die man leider mit dem Vermeiden von globalen Variablen nicht weg bekommt.

In den meisten jQuery JavaScript Dateien habe ich mir folgendes angewohnt:

var AboutDialog = (function($) {

    var _internal = 1234;
    var _ele = null;

    function display() {
        _ele.show();
    }
    function close() {
        _ele.hide();
    }
    function btnclose(ev) {
        close();
    }
    function init() {
        $(“#aboutdlg button.close”)
.bind(“click”, btnclose); } $(document).ready(init); return new function() { this.show = function(id) { _ele = $(id); show(); }; this.close = function() { close(); }; }; })(jQuery);

Damit habe ich jetzt nur ein globales Objekt AboutDialog erstellt, welches weiter die Methoden show() und close() besitzt. Die internen Variablen sind von außen nicht zugreifbar, können also keinerlei Probleme machen.

Montag, 19. Januar 2009

Unklare Verkehrsschilder

Heute Morgen habe ich gleich zwei Verkehrsschilder entdeckt, die in der gezeigten Kombination in meinen Augen verwirrend, wenn nicht sogar falsch sind.

IMG_0512

Das erste Foto zeigt die Verkehrsschilder 105-20 (Doppelkurve zunächst rechts), 274 (Zulässige Höchstgeschwindigkeit) und darunter 1004-30 (nach 100m). Bedeutet das Schild nun, dass ich nach 100m wegen einer gefährlichen zunächst rechts abbiegenden Kurve maximal 70 km/h fahren darf? Müsste dann in 100m noch einmal das Schild 274 mit der 70 stehen? Oder wie genau muss man mit einem Kilometerzähler (nicht alle Autos haben einen Kilometerzähler mit Zehntelanzeige) das während der Fahrt abschätzen können? Das Schild steht weiter ungefähr 200m vor einem Ortschild.

IMG_0522Weiter habe ich folgende Verkehrsschilder gefunden, befinden sich an einer T-Kreuzung, wenn man auf die Hauptstraße stößt. Interessant finde ich hier das Fahrtrichtungsschild in Zusammenhang mit 205 (Vorfahrt gewähren!) und dem darunter angebrachten Schild 1022-10 (Radfahrer frei). Stellen wir uns for, die Ampel fällt aus (ja, das gibt’s auch mal), dann könnte ich das Schild als Fahrradfahrer so interpretieren, dass ich das Vorfahrt gewähren Schild ignorieren kann. Gemeint ist hier aber, dass Fahrradfahrer auch geradeaus fahren dürfen, dort gibt es nämlich doch eine Straße, ist aber eine entgegen gerichtete Einbahnstraße, als keine echte T-Kreuzung.

IMG_0516 Bei uns in Stein sollten man auch die vielen Parkplatzschilder mal zusammen fassen. Auf dem Bild hier (sorry, unscharf, ist beim Vorbeifahren aufgenommen worden) sind sage und schreibe 6 davon zu sehen, je immer 2 für 2-3 Parkplätze, verrückt. Dazu kommen noch diverse Schilder, die auf ein Parkhaus in der Nähe aufmerksam machen. Interessant dazu finde ich auch den Beitrag Parken streng verboten.

Sonntag, 18. Januar 2009

Mercedes-Fahrer und der kaputte Nebelscheinwerfer

Eigentlich wollte ich das ja nicht schreiben, aber irgendwie finde ich es doch sehr merkwürdig, dass ich so viele Autos sehe, die bei klarer Sicht mit Nebelscheinwerfer fahren. Ok, ich verstehe ja, dass man den Wert des eigenen Autos damit in die Höhe jagen kann, das ist richtig cool. Aber wie peinlich ist das eigentlich, wenn dann eins der beiden Lichter auch noch kaputt ist?

Mir ist gerade in diesem Winter aufgefallen, dass hauptsächlich Autos von Mercedes mit kaputten Licht fahren. Hier in Nürnberg würde ich behaupten, dass das mindestens 80-90% sind. Woran liegt das? Baut Mercedes zu billige Lichter ein? Oder sind andere Autofahrer schneller beim Auswechseln?

Donnerstag, 15. Januar 2009

Ajax.NET Professional, ASP.NET MVC und jQuery – ein minimalistisches Beispiel

Weil ich gerade einen Test brauchte, habe ich das Projekt einfach mal hochgeladen. In dem Beispiel wird jQuery, ASP.NET MVC und Ajax.NET Professional verwendet. Einfach das VS2008 Projekt runterladen, entpacken und die Seite localhost:6341/Portal aufrufen. Dort befindet sich dann ein Link, der dann den AJAX Aufruf startet.

Und so sieht die AJAX Methode im PortalController.cs aus

        public ActionResult Test()
        {
            return new RenderJsonResult { Result = new {
                  status = "ok",
                  age = 31, 
                  date = DateTime.Now
            } };
        }

RenderJsonResult wandelt das übergebene Objekt automatisch in ein JSON Format um. Auf dem Client muss man nun den String, der zurückgeliefert wird mit der JavaScript Methode eval in ein Objekt umwandeln.

$.ajax({
    url: "/Portal/Test",
    success: function(s) {
        eval("s=" + s);
        alert("result: " + s.date);
    },
    error: function(xhr, status, e) { alert(status + "\r\n" + xhr.responseText); }
});

Liefert man nichts zurück, also in der Test Methode z.B. return new EmptyResult(), dann zeigt Firefox in der Fehlerkonsole einen Fehler an, komisch. Ganz abgesehen davon sollte man wohl immer mindestens ein OK oder so zurückliefern.

Windows 7 Maskottchen – Kampffisch als Hintergrundbild (Betta)

imageJeder, der die Windows 7 Beta schon mal installiert hat, kenn dieses neue (in meinen Augen hässliche) Hintergrundbild, das neue Windows 7 Maskottchen:

Martin Schindler ist aufgefallen, dass Microsoft da nicht nur eine neue Betaversion veröffentlich hat, sondern auch gleich noch Humor unter Beweis stellt.

Martin schreibt, dass es sich bei dem abgebildeten Fisch um einen sogenannten Kampffisch (Betta) handelt. Wir befinden uns also im Kampf, nur wer ist der Feind? Ist es Linux oder MacOS, oder gar das eigene Windows 7? Oder bedeutet Kämpfen hier, dass gekämpft wird ein richtig gutes Betriebssystem zu entwickeln?

Wer ein wenig weiter den Wikipedia Artikel liest, stolpert über folgenden Absatz:

In der Natur erreichen insbesondere die kleineren Kampffisch-Arten kein hohes Alter, da sie natürlichen Bedrohungen wie Fressfeinden, Parasitenbefall und Krankheiten unterliegen.

Hm, sind damit die anderen Hersteller von Betriebssystemen gemeint? Und ist unser Fisch jetzt klein oder groß?

Und beim Siamesischen Kampffisch (das hier scheint so einer zu sein), steht:

Sie wurden aber bereits viele Jahre zuvor von Einheimischen, vor allem wegen der Aggressivität der Männchen untereinander, für Schau- und Wettkämpfe gezüchtet.

[…]

Kampffische werden ca. 5 bis 7 cm groß und erreichen ein maximales Alter von ca. 2 Jahren.

Ok, 2 Jahre könnte ja noch stimmen, auch wenn Vista im Januar 2010 bereits 3 Jahre alt wird, aber: mit 10 Jahren Support! Hoffen wir, dass Windows 7 nicht nur für Schaukämpfe gezüchtet wird/wurde.

Zusammen mit MSDN und Mitfahrzentrale.de zur Cebit 2009

Alle, die noch nicht wissen wie sie zur Cebit 2009 (vom 3. bis 8. März 2009 in Hannover) kommen hat die Mitfahrzentrale und MSDN eine Seite speziell für Fahrten nach und von Hannover eingerichtet.

MSDN Cebit Mitfahrzentrale

Hm, vielleicht fahre ich auch zur Cebit, bin mir noch nicht ganz sicher. Zur gleichen Zeit ist nämlich hier in Nürnberg die embeddedworld2009 (vom 3. bis 5. März 2009). Ich habe noch 4 kostenfreie Tickets (anstatt 18 EUR), wer Interesse hat.

Ich liebe jQuery! Und wie sieht es mit dir aus?

Hatte ich eigentlich schon einmal erwähnt, das jQuery absolut abgefahren ist? Ich verwende es schon seit den frühen Stunden, und habe es noch nie bereut. Erst diese Woche ist die neue jQuery Version 1.3 erschienen, die enorme Performanceverbesserungen enthält. Es gab mal zwischen den Versionen Probleme beim Upgraden, konnte man aber oft sehr schnell anpassen.

jQuery 1.3 erschienen Was die Performance angeht, war ich oft schon mal enttäuscht, aber wenn man es richtig macht, kommt so schnell niemand an jQuery ran. Es gibt für die verschiedenen Aufgaben immer wieder eine etwas andere Herangehensweise, und schon ist das Skript um ein Vielfaches schneller.

Wer setzt jQuery ein? Es sind inzwischen auch die großen Webseiten, die auf jQuery aufbauen, darunter Google, Amazon oder auch Microsoft, um nur mal ein paar zu nennen.

Wer hat Lust mal seine jQuery Kenntnisse unter Beweis zu stellen? Folgende Aufgabe wäre zu bewerkstelligen:

Man nehme eine Liste von 1.000 Personennamen (oder einfach 1.000 unterschiedliche Strings in einem Array). Diese sollen zu je 10 Zeilen angezeigt werden. Zum Blättern ein Vorwärts/Rückwärts Button. Jede Zeile enthält zusätzlich einen Button zum Bearbeiten des Textes, entweder in der Zeile oder aber auch außerhalb der Tabelle. Speichern/Abbrechen Buttons für den Editiervorgang, und dann die Tabelle so wieder anzeigen.

Ist eigentlich eine einfache Aufgabe, kann aber sehr unterschiedlich implementiert werden. Ich bin gespannt auf eure Umsetzung, und wer den schnellsten Code schreibt. Zu gewinnen gibt es leider nichts, aber vielleicht macht doch der eine oder andere mit.

Mittwoch, 14. Januar 2009

Mounten einer VHD Datei unter Windows Server 2008

Ich habe mir gestern eine VHD Datei gebastelt, die ich als Installationsdatei in einem Hyper-V als auch unter Virtual Server benötige. Damit ich relativ einfach neue Dateien darauf kopieren kann, habe ich mir ein kleines VBScript gebastelt, mit dem ich VHD Dateien unter Windows Server 2008 einfach mounten kann.

Option Explicit

Dim WMI
Dim VHD
Dim filename

filename = "G:\HyperV\Windows Server 2003\Harddisk1.vhd"

Set WMI = GetObject("winmgmts:\\.\root\virtualization")

Set VHD= WMI.ExecQuery("SELECT * FROM Msvm_ImageManagementService").ItemIndex(0)

VHD.Mount(filenmame)
REM VHD.Unmount(filename)

Jetzt braucht man nur noch in die Datenträgerverwaltung gehen, und dort die Festplatte auf Online setzen.

Mount VHD on Windows Server 2008

Dienstag, 13. Januar 2009

Windows – Datenverlust beim Schreiben auf A:\$Mft

Wir haben hier eine 1 TB große USB Festplatte, eigentlich nur für Datensicherungen gedacht, ab und zu mal was auslagern. Doch seit ein paar Tagen bekomme ich Meldungen wie

Das Gerät “Standardvolume” kann zurzeit nicht beendet werden. Wiederholen Sie den Vorgang später.

…oder dann heute als Info Meldung:

Windows – Datenverlust beim Schreiben: Nicht alle Daten für die Date A:\$Mft konnten gespeichert werden. Daten gingen verloren. Mögliche Ursachen könnten Computerhardware oder Netzwerkverbindungen sein. Versuchen Sie, die Datei woanders zu speichern.

image

Ok, abgesehen davon, dass ICH die Datei A:\$Mft gar nicht speichern wollte, ist jetzt meine USB Festplatte im Eimer. Im Internet steht, dass es am Chipsatz Treiber liegt. Woanders wird behauptet, dass alle USB Platten ab 500 GB diese Probleme haben. Irgendwie kann mir das fast wurscht sein, denn meine Daten sind auf jeden Fall weg, und die Platte wird auch auf anderen Rechner nicht mehr als USB Festplatte erkannt, es tut sich nichts.

Microsoft .NET und die automatische Intranet Zone – SecurityException und AspNetHostingPermission

Gerade ist es mir wieder passiert, ich versuche eine .NET Anwendung (ok, es ist eine ConsoleApplication349.exe, eine von 348 anderen kleinen Tools die ich mir mal schnell geschrieben habe) von einem Netzwerklaufwerk zu starten. In der .NET 2.0 Konfiguration habe ich angegeben, das alle Programme von diesem Netzwerkpfad (Intranet) unter FullTrust laufen sollen, ich vertraue mir selber.

Jetzt bekomme ich aber eine Fehlermeldung:

SecurityException: Fehler bei der Anforderung des Berechtigungstyps System.Web.AspNetHostingPermission, System, Version=2.0.0.0,…

image

Mist, was ist denn das jetzt schon wieder! Nach langem hin und her habe ich es dann gefunden. Die Statuszeile des Datei Explorers zeigt es auch, wenigstens ganz unscheinbar, aber es steht da. Das Netzwerklaufwerk wird anstatt in der Intranet Zone in der Internet Zone ausgeführt, und meine Konfiguration für .NET 2.0 Assemblys ignoriert, hatte ich ja nur für die Intranet Zone verändert.

image

Doch warum denkt Windows (oder das .NET Framework), dass sich das Laufwerk plötzlich im Internet befindet? In den meisten Fällen liegt es daran, dass man das Laufwerk über einen UNC Pfad mit IP Adresse verbunden hat, aber dem ist nicht so.

Im Internet Explorer gibt es eine Einstellung, die das automatische Zuordnen von Intranet und Internet vornimmt. Stellt man die automatische Zuordnung ab, dann werden die Pfade in die Internet Zone geschoben, es sei denn, sie stehen explizit in der Intranet Liste.

image

Wieder etwas gelernt, das erste Kontrollkästchen behebt das Problem. Das ist zwar standardmäßig aktiviert, hier hatte ich aber mal etwas ausprobiert.

30 Windows 7 Secrets – Wer hat’s schon gewusst?

Tim Sneath von Microsoft hat ein paar Windows 7 Secrets auf seinem Blog veröffentlicht:

  1. Windows Management
  2. Display Projection
  3. Cut Out The Clutter
  4. Multi-Monitor Windows Management
  5. Command Junkies Only
  6. It’s a Global Village
  7. The Black Box Recorder
  8. The Font of All Knowledge
  9. Gabriola
  10. Who Stole My Browser?
  11. Rearranging the Furniture
  12. Installing from a USB Memory Stick
  13. I Want My Quick Launch Toolbar Back!
  14. It’s a Drag
  15. Standars Support
  16. Windows Vista-Style Taskbar
  17. Peeking at the Desktop
  18. Running with Elevated Rights
  19. One More of the Same, Please
  20. Specialized Windows Switching
  21. Walking Through the Taskbar
  22. The Widscreen Tip
  23. Pin Your Favorite Folders
  24. Starting Explorer from “My Computer”
  25. ClearType Text Tuning and Display Color Calibration
  26. ISO Burning
  27. Windows Mobie Maker
  28. Hiding the Windows Live Messenger Icon
  29. Enjoy The Fish
  30. When All Else Fails…

Mit Windows 7 ortsabhängig drucken – Standarddrucker passt sich an Netzwerkumgebung an

Georg schreibt auf seinem Vistablog über Windows 7 und der Location Based Printer Funktionalität in der aktuellen Beta. Damit kann man je nach Netzwerkumgebung den Standarddrucker automatisch anpassen lassen. Bis jetzt musste man dafür Zusatztools wie z.B. Mobile Net Switch installieren.

Was mich noch mehr interessieren würde ist die Möglichkeit, dass ich mir meine Drucker einmal konfiguriere, und diese am NT Benutzer (Domänenbenutzer) hängen, und nicht lokal gespeichert werden. Großer Vorteil: ich könnte mich überall anmelden, und habe immer die richtigen Drucker.

Manchmal wäre auch so etwas wie “Wo finde ich den nächsten Farbdrucker?” oder “Drucke auf den nächsten Laserdrucker” praktisch, auch wenn das noch mehr Aufwand wäre.

Neues Feedback Programm bei Microsoft

Bei so vielen Beta Versionen, CTPs oder anderen Vorabversionen von Microsoft Produkten weiß ich schon gar nicht mehr, wo ich überall Feedback geben kann. Normalerweise mache ich das über Microsoft Connect, teils über die Newsgroups (Connect) oder direkt über die Teams, wenn ich mit denen schon einmal Kontakt hatte.

Nun hat Microsoft einen neuen Weg, über input.microsoft.com:

Here's your chance to help improve Microsoft products by submitting feedback that will be sent directly to the folks working on the features.

Sobald man sich mit seiner Live ID angemeldet hat, kann man zu den verschiedenen Programmen Feedback geben. Dabei muss man unterschiedliche Tests durchführen, und dann Fragen beantworten, ähnlich der Umfragen auf Connect, nur eben ausgerichtet auf ein spezielles Thema, z.B. “Finde ein Programm im Startmenü”. Aktuell habe ich Umfragen zu Windows 7, den Netzwerk Monitor 3.2 als auch neue .NET Technologien inkl. Oslo, Dublin.

Nur noch wenige Tage, dann steht der Gewinner des MSDN Premium Abos inkl. Visual Studio Team System 2008 Team Suite fest

working file Seit ein paar Tagen verlose ich hier auf meinem Blog ein MSDN Premium Abo. Dieses MSDN Abo enthält fast alle Microsoft Produkte, mehr Infos gibt’s beim Abonnementvergleich. Der Gegenwert des MSDN Premium Abos ist dort mit ganzen 11.711,29€ angegeben, wow!!

Außerdem habe ich noch einige .NET Bücher und andere Visual Studio Lizenzen zu vergeben. Also, schreibt euren Kommentar noch bis zum 22. Januar 2009 und nehmt damit automatisch an der Verlosung teil.

Links 234 – 13. Januar 2009

Montag, 12. Januar 2009

Warum bitte ist Sri Lanka so an Windows 7 interessiert?

Ich habe gerade mal bei Google Insights for Search nach dem Begriff Windows 7 gesucht, und dabei festgestellt, dass Sri Lanka irgendwie die meisten Suchanfragen gestellt hat, obwohl die doch so klein sind, woran das wohl liegen mag?

Links 234 – 12. Januar 2009

Freitag, 9. Januar 2009

Microsoft Tag – Eine Weiterentwicklung des QRCode und Datamatrix Code

Microsoft hat nun auch einen eigene Tag Technology für Barcode Leser, High Capacity Color Barcodes (HCCBs). So in etwa sieht das dann aus aus:

Microsoft Tag Und um das gleich selber mal auszuprobieren, liefert Microsoft eine kostenlose Software an für Windows Mobile Geräte mit Kamera, oder ihr geht direkt auf http://gettag.mobi/. Unterstützt werden übrigens Windows Mobile 5 und 6, Symbian S60, J2ME Geräte als auch Blackberry 81xx,8300 und Bold… und das iPhone fehlt auch nicht, prima!

istartedsomething.com hat auch schon darüber geschrieben, scheint wirklich nicht anfällig auf Störungen zu sein, muss ich gleich mal ausprobieren.

Update: derzeit funktioniert Microsoft Tag nur mit der Spracheinstellung en-us im Web Browser, also erst einmal umstellen.

Vorzeitiges Aus für öffentliche Windows 7 Beta – Microsoft war dem Ansturm doch nicht gewachsen

Auf der Registrierungsseite für den öffentlichen Windows 7 Beta Download ist folgendes heute Nachmittag zu lesen:

image

Was heißt hier “coming soon”, das ging doch heute schon mal ein wenig. Aber irgendwie war alles ultra-langsam, hat mich an den Ansturm auf das iPhone erinnert, aber diesmal halt bei Microsoft.

AUf dem Windows 7 Blog ist weiter zu lesen, dass Microsoft nicht in der Lage ist, diesen Ansturm zu befriedigen:

Due to very heavy traffic we’re seeing as a result of interest in the Windows 7 Beta, we are adding some additional infrastructure support to the Microsoft.com properties before we post the public beta. We want to ensure customers have the best possible experience when downloading the beta, and I’ll be posting here again soon once the beta goes live. Stay tuned! We are excited that you are excited!

Auch wenn Microsoft sich über die vielen Beta Tester freut, habe ich ein schlechtes Gefühl, wenn ich an Windows Azure denke. Was ist, wenn ich meine Software auf Microsoft Servern laufen lasse, und die dann plötzlich auch einbrechen, weil die Authentifizierung meiner Live ID sich brutal verlangsamt? Hoffen wir, dass Microsoft da noch ihre Infrastruktur etwas weiter ausbaut.

Windows 7 Beta Download: Bitte versuchen Sie es am nächsten Werktag noch einmal!

Der Download bzw. die Registrierung für die Windows 7 Beta ist ja bereits für die Öffentlichkeit da. Und wer hätte das geglaubt, jeder versucht irgendwie an die Beta zu kommen. Komisch, wo doch Windows Vista so schlecht angekommen ist, interessieren sich jetzt viele für den Nachfolger, der doch um einiges schneller ist. Das erhoffen sich auf jeden Fall die vielen Interessenten, die versuchen noch einen Download der ISO Dateien zu ergattern, denn bei 2,5 Millionen ist Schluss (für alle, die kein MSDN oder TechNet Abo haben, und auch nicht über Connect auf Windows 7 Beta zugreifen können).

Interessant ist, das Microsoft inzwischen auch auf die vielen Anfragen nett reagiert, auch wenn da ein Rechtschreibfehler drin steckt:

Es besteht zur Zeit ein technisches Problem mit der Website. Bitte versuchen Sie es am nächsten Werktag noch einmal.

image

Öffentlicher Windows 7 Beta Download macht vieles langsam

Seit einigen Stunden ist so ziemlich alles langsam, was in irgendeiner Weise mit einer Live ID zu tun hat, angefangen von der Registrierung für den öffentlichen Download von Windows 7 Beta 1 bis hin zu Live.com.

image

image

Der Download, wenn er denn dann mal startet, läuft zwar sehr langsam, aber wenigstens bricht er nicht wie gestern andauernd ab. Ach wie bin ich doch so froh, dass ich meine Images schon habe. Gab es eigentlich bei Windows Vista auch so einen Ansturm?

Nebenbei hatte twitter heute auch Probleme mit manchen Konten, so auch mit meinem. Dadurch wurde dann meine Startseite auf Live.com nicht mehr geladen; jetzt wo twitter wieder richtig funktioniert, kann ich auch wieder lesen, was so in der Zwischenzeit passiert ist. Liegt das evtl. auch an der Windows 7 Beta? Es schreiben schon ziemlich viele über ihre ersten Erfahrungen mit dem neuen Betriebssystem.

Windows 7 Setup - ISO Image auf USB Stick ziehen und davon booten

Update vom 25. Februar: nicht alle USB Sticks haben nach dieser Anleitung funktioniert, deswegen gibt’s hier eine aktualisierte Anleitung, wie das mit dem Booten von USB Sticks funktioniert.

 

Weil ich’s selber immer irgendwo suchen muss, hier mal eine Kurzanleitung, wie man ein USB Stick dazu bringt z.B. die Windows 7 Setup DVD ISO Images als Bootimage zu verwenden. Eine Installation von einem schnellen USB Stick spart nicht nur die DVD Rohlinge, sondern ist auch um einiges schneller während der Installation.

Vorbereiten des USB Sticks

Um den USB als Bootimage zu verwenden, muss man ihn erst einmal formatieren, und dann eine aktive Partition anlegen. Das geht mit DISKPART.exe:

  • Start –> Ausführen anklicken, dann diskpart.exe starten
  • lis dis eingeben um alle lokalen Laufwerke anzuzeigen
  • Hat man den USB Stick gefunden (z.B. anhand der Größe), diesen mit sel dis 3 auswählen, wobei N die Datenträgernummer ist, die bei 0 anfängt zu zählen, bei mir ist es also das vierte Laufwerk.
  • Mit lis par kann man sich die aktuellen Partitionen anzeigen lassen.
  • Mein USB Stick hat nur eine Partition, diese wähle ich mit sel par 1 aus (Achtung, hier fängt die Nummerierung wieder bei 1 an).
  • Mit format fs=FAT32 LABEL=”Windows 7” QUICK OVERRIDE formatiere ich den USB Stick, das geschieht auch gleich ohne zusätzliche Nachfrage.
  • Ist die Formatierung beendet, setze ich mit active die aktuelle Partition auf aktiv und beende DiskPart mit exit.

Hier noch einmal alle Befehle an einem Stück:

diskpart.exe starten…

lis dis
sel dis N
lis par
sel par N
format fs=FAT32 LABEL=”Windows 7” QUICK OVERRIDE

Und für die, die sich mit DISKPART.exe nicht so gut auskennen ein paar Screenshots:

DiskPart - select drive

DiskPart - select partition

DiskPart - format USB stick

Kopieren der Setup-Dateien

Ok, jetzt brauchen wir nur noch den Inhalt der ISO Datei auf den USB Stick kopieren, nicht die ISO Datei selber, das bringt nichts.

Ich verwende dafür den 7-Zip Manager, einfach ein Rechtsklick auf die ISO Datei, und dann “Entpacken nach…” auswählen, und den USB Stick selber auswählen, oder aber das erst auf der lokalen Festplatte machen, und die Dateien hinterher von Hand rüberkopieren.

Das war’s schon…! Jetzt nur noch im BIOS überprüfen, ob USB Laufwerke überhaupt booten können, und los kann’s gehen mit der Windows 7 Beta Installation.

Links 234 – 9. Januar 2009

Unterschiede beim SPAM E-Mail Empfang

Nachdem wohl ein oder mehrere US-Provider der Stecker gezogen wurde, erhalte ich tatsächlich vielleicht nur noch 5-10% der vorhergehenden SPAM E-Mails, das machen inzwischen vielleicht nur noch 20% meiner gesamten E-Mails aus, da ist dank gutem SPAM Filter auch keine SPAM E-Mail mehr im Posteingang.

Als ich vor kurzem mal bei einem Bekannten nachgeschaut habe, war ich verwundert: sein SPAM Ordner sah komplett anders aus. Während bei mir hauptsächlich irgendwelche Hilfsmittel oder Gewinne angepriesen werden, kommen bei ihm fast nur chinesische oder japanische (kann ich nicht wirklich unterscheiden) E-Mails an.

SPAM E-Mails von einem anderen Konto

Meine SPAM E-Mails

Woran liegt das, am Namen innerhalb der E-Mailadresse? Oder vielleicht auf welchen Seiten man seine E-Mailadresse hinterlegt hat? Was für SPAM E-Mails bekommt ihr aufgedrängt?

Donnerstag, 8. Januar 2009

Download Windows 7 Beta 1 – Morgen dann auch für die breite Öffentlichkeit

Meine Microsoft Windows 7 Beta ISO Images werden im Moment noch von Microsoft Connect heruntergeladen. Hoffentlich sind die x64 Builds noch bis morgen komplett da, denn dann öffnet Microsoft für ganze 2,5 Millionen Downloads die Windows 7 Beta 1. Jeder, der heute schon versucht hat die Dateien herunterzuladen, wird bemerkt haben, wie stark doch die Bandbreite einsackt, auch wenn man super angebunden ist. Die Downloadserver packen das einfach nicht, das liegt nicht nur an der eigenen Anbindung. Ich selber habe heute mehrfach bis zu 4 MB/Sekunde geschafft, hatte halt einfach Glück.

Wenn die Downloadgrenze von 2,5 Millionen Downloads erreicht ist (zählen da eigentlich nur komplett heruntergeladene Downloads, oder jeder Downloadversuch??), dann kommt man nur noch über Connect, MSDN oder ein TechNet Abo an die Windows 7 Beta.

Bitte beachtet auf jeden Fall den “MP3-Bug” in Windows 7 Beta 1. Daniel Melanchthon hat nähere Infos dazu:

ACHTUNG!

Wir haben nach der Fertigstellung der Beta 1 einen Bug festgestellt, der in bestimmter Konstellation MP3-Dateien um wenige Sekunden kürzt. Sollte der Header einer MP3-Datei (zum Beispiel durch das Einbinden eines Coverbildes) größer als 16kB sein und man benutzt die Expresseinstellungen des Media Players, dann versucht der Media Player die Daten eine Datei, die man abspielt, mit Metadaten aus dem Internet zu vervollständigen. Beim Schreiben der Metadaten kommt es dann zum Abschneiden von 2 bis drei Sekunden Musik am Anfang des Stücks.

Für die Behebung des Problems stellen wir einen Hotfix bereit, welcher als erstes nach der Installation eingespielt werden sollte. Abhilfe schafft auch die Konfiguration des Media Players, Mediendateien NICHT zu automatisch zu aktualisieren. Diese Einstellung bevorzuge ich schon seit Jahren, weil ich meine Medienbibliothek manuell gepflegt habe. Trotzdem sollte jeder diesen Patch einspielen. Er wird einem, wie in dem Bild oben ersichtlich, auch direkt mit angeboten.

Das gilt auch für MP3 Dateien, die irgendwo auf Netzwerklaufwerken etc. liegen, und da ist man mit dem Windows Media Center mal schnell drauf, weil’s halt so einfach geht.

Windows Server 2008 R2 Beta ab morgen für alle als Download verfügbar

Microsoft hat gestern Abend die Betaversion des kommenden Windows Server 2008 R2 vorgestellt. Alle, die ein MSDN oder TechNet Abo haben, können dies schon heute herunterladen. Für die breite Öffentlichkeit wird dies ab morgen auf der Windows Server 2008 R2 Beta Website möglich sein.

Was mich vor allem interessiert ist Hyper-V Live Migration, ein nahezu unterbrechungsfreies Verschieben einer virtuellen Maschine von einem Hyper-V Host zu einem anderen, z.B. wegen Hardwareproblemen/-austausch.

Daniel hat mehr Infos über Windows Server 2008 RS Beta.

Windows 7 Beta Download mit 4 MB/Sekunde

Gestern Abend war es soweit, und Microsoft hat die ISO Images für die Windows 7 Beta veröffentlicht, erst einmal noch für Connect, MSDN und TechNet, angeblich am Freitag auch für den Rest der Welt. Hoffen wir, dass bis dahin die Server wieder einigermaßen laufen, denn im Moment liest man in den Connect Newsgroups als auch in anderen Foren, dass sich die Downloadrate bei nur 30 KB/Sekunde einpendelt, das ist natürlich für um die 3 GB je nach ISO Image recht lange.

Irgendwie habe ich Glück, und kann von meinem Web Server die Dateien direkt runterladen, und das bei knapp 4 MB/Sekunde, ach ist das ungerecht.

image

Visual Studio 2010 CTP abgelaufen – und was jetzt?

Visual Studio 2010 Der Visual Studio 2010 Virtual PC ist ja am 1. Januar 2009 abgelaufen. Beim Starten des Studios kommt die Meldung “The evaluation period for Visual Studio Trial Editions has ended.” Immer wieder bekomme ich die Nachfrage, wie man denn jetzt weiter Visual Studio 2010 laufen lassen kann. Das Problem selber ist, dass der 1. Januar 2009 fest in der CTP verdrahtet ist, d.h. man schafft es nur noch, in dem man die Zeit umstellt. Dabei muss man aber aufpassen, denn der auf dem VPC installierte Team Foundation Server hat ein Problem, wenn man das Systemdatum vor die letzte Aktion legt.

Mehr zu Visual Studio 2010 CTP Expiration und wie man die Produkte aktiviert findet man auf dem Blog von Brian Keller. Jeff Beehler schreibt auch, wie man die Synchronisierung der Zeit im VPC deaktivieren kann, denn nur so stellt sich die Uhrzeit nicht andauernd auf die des Host Systems.

Das Team um Charles Sterling entschuldigt sich dabei für die Unannehmlichkeiten mit dem Image:

My apologies about expiration issue.... we pulled it all together in about 4 days and missed several issues like this.

We could rebuild it with new expiration date(s) but there would be no new functionality and all the TFS data would still be stale - at the cost of another 7gig download.

Once again my apologies

Für alle, die am Microsoft Visual Studio 2010 Influentials Programm teilnehmen: Microsoft wird uns eine ungefähr ein Monat alte Version dort zur Verfügung stellen, die dieses Zeitbegrenzung dann nicht mehr hat.

Windows 7 Beta auf Microsoft Connect, MSDN und TechNet verfügbar

Gestern hat Microsoft die erste Windows 7 Beta auf Microsoft Connect, MSDN und TechNet zum Download veröffentlicht. Nachdem Microsoft zuvor PDC Teilnehmern und einzelnen MVPs bereits eine erste Version von Windows 7 ausgehändigt hatte, ist diese Beta nun einem größeren Benutzerkreis zugewandt. Die Beta läuft bis zum 1. August 2009, das ist schon mal ganz schön lange. Windows 7 wird wohl zum Januar 2010 erscheinen. Der Medienrummel hat bereits angefangen, und es scheint so, dass es wieder ein spezielles, und evtl. kostenfreies Upgrade gibt für PCs, die ab Mitte/Ende 2009 gekauft werden. Ähnliches hatten wir bereits schon bei Windows Vista, auch wenn viele davon nicht Gebraucht gemacht haben.