Overview Currently, I’m investigating what can be improved in the new release of Proxy Switcher. For those of you, who don’t know what Proxy Switcher is a few facts: - Proxy Switcher automatically set the proxy depending on your current network connection
- Beside of that, it can set other things too. E.g.: Execute scripts, change default printer, etc.
- Click here to go to the project site for more info
Windows 7 Sensor and Location Platform With Windows 7 Microsoft created a new “Sensor and Location Platform”. Until now, there is not much hardware compatible with it, but this hopefully will change in the near future. With this API, applications can easily access the available sensors. Here you can find some examples and also a “manual” location provider by clicking on a map. For the location API, there is a cool free “software” device called Geosense. From their website: Geosense is designed to use a hybrid mix of geolocation service providers and geolocation methods to pinpoint the most accurate location information possible - including but not limited to WiFi triangulation, cell tower triangulation and IP lookup. Source: http://www.geosenseforwindows.com/ While your laptop vendor has not yet integrated a Windows 7 compatible hardware GPS sensor, Geosense is a good compromise. Proxy Switcher Integration For Proxy Switcher this will become a new option for switching proxy configurations, or doing some other stuff as you can see here: (click to open in a new window) Code To access the Windows 7 location API all you need is the .NET Framework 4. There is a new System.Device.dll (contained in the Client Profile of the .NET Framework). Adding a reference allows you to access the current location. First, add the following using statement: using System.Device.Location;
Use the following code to get the address:
GeoCoordinateWatcher watcher = new GeoCoordinateWatcher();
watcher.TryStart(false, TimeSpan.FromMilliseconds(1000));
// Get the location, including lat, long, speed, altitude, etc.
GeoCoordinate location = watcher.Position.Location;
// Try to get the current address, including street, city, etc.
CivicAddressResolver resolver = new CivicAddressResolver();
CivicAddress address = resolver.ResolveAddress(location);
Summary
With this new functionality, Proxy Switcher is not a pure “Proxy Switcher” anymore, but a multi-functional network/location based “generic” extensible execution tool. New actions can be easily created by developers through the MEF AddIn Framework. More on this in a later post.
If you want to become a beta tester, feel free to contact me at “mail” at thisdomain.
Das sieht doch mal sehr vielversprechend aus: Mit einer Oberfläche, die der des Zune ähnelt und mir auch dort schon sehr gut gefallen hat. Developer Infos gibts erst zu MIX, vielleicht gibts bis dahin dann auch das SDK. Ich jedenfalls will so ein Windows Phone! Gibts dann hoffentlich zu Weihnachten nicht nur in den USA, sondern auch hier.
Yeah! Gerade eben diese Mail im Postfach gehabt! Download läuft, ich bin sehr gespannt. Ich werde berichten.
With the Windows API Code Pack, Microsoft released a really cool managed wrapper for most of the new Windows 7 features. See here for more details and download. One thing you can do is to create a .NET app with Jumplist support. Jumplists are these cool menus appearing on right click on an icon in the task bar: But there is something wrong with the jumplist: It can only launch new apps! The demo solution for the Code Pack launches notepad and some other things, but there is no word about how to open the same app but with a new form. So here is my solution, which is not very nice, but it works like a charm. Scencario: AppInstance1 is running –> click on a jumplist item starts a new instance –> appInstance2 now knows, that this is the second instance, so appInstance2 calls appInstance1 through remoting (IPC) and terminates–> appInstance1 receives the remoting call und execute something. Ok, how to implement this? First of all, create a new Windows Forms app and go to the Program.cs file. Within this class create a new class which works as your service for the remoting part and also a static reference to your form: static class Program
{
public class RemotingService : MarshalByRefObject
{
public RemotingService() { }
public void ShowText(string text)
{
Program.formMain.SetTextToTextBox(text);
}
}
internal static Form1 formMain;
Then you will need some remoting code for the communication. I created two methods “InitRemoting” and “CallRunningInstance”. InitRemoting is called from the main method if this is the first instance. CallRunningInstance is called if the main method detects, that this is the second instance.
For the detection I use a system wide mutex.
I hope you get the idea. Because there are some more lines of code I created a demo project for you to download:
Download the entire working demo solution here.
Ich hab mal ausnahmsweise ein bisschen Zeit gehabt um ein paar neue / nicht mehr ganz so neue Technologien anzusehen und auszuprobieren. Da ich ja nun doch schon seit einiger Zeit meine halbwegs aktuelle Position per Virtual Earth auf woist.mwiedemeyer.de visualisiere und es seit kurzem ein Virtual Earth Silverlight Control gibt, ist es wie geschaffen, um endlich einen ernsthafteren Einstieg in Silverlight 2 zu starten. Das interactive SDK ist wirklich genial und die Bedienung ist super einfach. Zumindest dann, wenn man bereits ein wenig WPF oder Silverlight Erfahrungen gesammelt hat. Beispiel: Man möchte in einer Silverlight Anwendung einfach nur die gesamte Karte darstellen. Dazu reicht es das Map Control zur Seite hinzuzufügen: <UserControl x:Class="VirtualEarthSilverlightTest.Page"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:m="clr-namespace:Microsoft.VirtualEarth.MapControl;assembly=Microsoft.VirtualEarth.MapControl"
Width="800" Height="600">
<Canvas x:Name="LayoutRoot" Background="White">
<m:Map Name="MyMap"></m:Map>
(...)
Um per code einen Pin (oder jedes andere UIElement, z.B. auch Bilder, Videos, etc.) auf der Karte an einer bestimmten Position anzuzeigen, reicht folgender code: // Neuen MapLayer hinzufügen um Elemente an Locations anzuzeigen
MapLayer mapLayer = new MapLayer();
MyMap.Children.Add(mapLayer);
// Beliebiges UIElement (Canvas, Border, etc) an der Position latitude, longitude anzeigen
mapLayer.AddChild(anyUIElement, new Location(latitude, longitude));
Ich habe für einen ersten Versuch mal den letzten Urlaub in die Silverlight Karte eingefügt. Hier gibts das ganze nun zu sehen:
http://woist.mwiedemeyer.de/silverlight
UPDATE:
Was ich an der Stelle noch vergessen habe zu erwähnen: Es funktioniert nicht nur im Internet Explorer, sondern auch in Opera (und natürlich auch Firefox…)!
Der SharePoint Designer 2007 wird seit dem ersten April (nein kein Aprilscherz) kostenlos angeboten! Kunden, die den SharePoint Designer gekauft haben, dürfen nun kostenlos auf Expression Web upgraden. Auch wenn ich übrigens durchaus der Meinung bin, dass der SharePoint Designer einen der oberen Plätze bei Dreckstool.de verdient hätte, ist er manchmal ja leider doch ganz nützlich. 
Eine sehr coole Neuerung in Windows 7 ist, dass OpenSearch in den Explorer integriert ist. So kann man eine einfache Textdatei erstellen und diese in *.osdx umbenennen. Der Inhalt ist einfaches XML. Hier das ganze mal für mein Blog: marcos blog search.osdx Nach dem download einfach die OSDX Datei doppelklicksen und schon hat man mein blog in die Windows Search integriert. Und so siehts aus wenn man nach “sharepoint” sucht: Das ganze kann man natürlich leicht anpassen und für diverse Seiten einbauen. Chris Pirillo hat das ganze schon mal für Amazon, eBay, etc hier gemacht, dort gibts auch ein ZIP file mit einigen search connectors.
Seit heute habe ich das Service Pack 1 für das .NET Framework 3.5 und den SQL Server 2008 auf meinem Server installiert. Ein paar neue kleine private Projekte warten und können nun mit den neuen Features ausgerüstet werden (z.B. Entity Framework und auch ASP.NET MVC obwohl das nur eine CTP ist). An der Stelle kann ich das .NET 3.5 Enhancements Training Kit empfehlen! Sehr guter Überblick über alle Neuheiten. Außerdem werde ich vielleicht die Datenbank von WoIstMarco? auf die neuen SQL Server 2008 Geo Datentypen upgraden. Mal schauen, was das so für Vorteile bringt. Jetzt brauche ich nur noch viiel Zeit...
I have an issue creating a new Web Site programatically. Sometimes, the following exception occurs: Content type '0x01010007FF3E057FA8AB4AA42FCB67B453FFC100E214EEE741181F4E9F7ACC43278EE811' not found in web 'xxx' Live Search has no solution (by the way: Google has no solution as well ). The only thing you can do is re-run the SharePoint Products and Configuration Wizard. After that, the error disappears and the site creation process is successful. The weird thing is, that the content type ID is the ID from the “PageLayout” Content Type... If anyone found another solution I would be very interested.
Es ist kaum zu glauben! Mit Visual Studio 2008 SP1 hat nun endlich die Funktion einzug gehalten, die man schon seit Jahren vermisst, wie ich gerade entdeckt habe... Man hat z.B. folgendes geschrieben: public bool IsFoo(object x)
{
}
Früher war es so: Den “Fehler” dass nicht alle Pfade der Methode einen Wert zurückgeben bekommt man erst, wenn man “Build” aufruft.
Jetzt neu: Der Fehler wird sofort im Error Log sichtbar! Ohne speichern, ohne Build! Danke Microsoft!
Mikhail Dikov has written a very good article about how to use and deploy global resources within SharePoint. He uses a Feature Receiver and creates a one-time scheduled job which copies the resource files from the feature folder to the App_GlobalResources folder under Inetpub\wwwroot\wss\VirtualDirectories\[port]. Now, why I'm writing about this? Because there is one little thing within his code, that makes this solution unusable for a farm with more than one WFE (Web front-end server). The resource files were copied only on one WFE each time I activated the feature. After searching the web a while, I found that the parameter SPJobLockType is the problem. In Mikhails solution this parameter is set to "Job", which defines that this job executes only on one machine at a time. In a farm, I want to execute this job on each WFE. So set this parameter to "None" and it works! Another solution is the article from Maxime Bombardier "Deploying resource files across a farm". For me it seems to be a little bit difficult and more complex than the solution from Mikhail.
Ich weiß, dass es einige Webseiten gibt, die insgesamt wahrscheinlich eine Menge Gründe nennen können, warum man Variations mit SharePoint 2007 nicht einsetzen sollte. Im aktuellen Projekt war die Entscheidung für Variations bereits lange vor Beginn gefallen... Daher ein paar nützliche Hinweise die man evtl. vorher beachten sollte oder die im Nachhinein vielleicht noch was retten können.  - Insgesamt ist das Variationsystem leider sehr instabil, auch mit installiertem SP1.
Beispiel: Für die Migration von einem vorhandenen alten System haben wir u.a. ein Tool geschrieben, um aus Einträgen einer SharePoint Liste Sites und Pages auf einem Zielsystem zu erstellen. Sei es über as SP Objektmodell oder über stsadm, stellenweise und aus unerfindlichen Gründen knallt es beim Anlegen der Variations. Da die Sourcesprache aber (durch unseren code) (meistens) korrekt angelegt wird, ist der dahinterliegende Timerjob des Variationsystems das Problem. Eine wirkliche Lösung gibt es offensichtlich bisher nicht, daher führen wir das Erstellen der Sites und Pages nun verzögert aus, um jeweils nach ein paar Sites erstmal auf den SharePoint Timerjob zu warten... - Variations per SharePoint Solution/Feature deployen bereitete uns ebenfalls einige Kopfschmerzen.
Die Labels der Variationen die man anlegen möchte, lassen sich noch relativ leicht über ein paar Zeilen code in einem Feature Receiver anlegen. Um nun die Hierarchien zu erstellen, kann man entweder über die GUI gehen und auf den Button "Create Hierarchies" klicken oder man macht auch das per Code. Sinnvoll ist es, damit man später das ganze wirklich ohne manuelle Eingriffe von einem Administrator installieren lassen kann. Leider will Microsoft das wohl nicht, denn die zugehörige Klasse, bzw. Methode ist als internal deklariert und somit nicht verfügbar. Da das inakzeptabel ist, half nur ein Artikel von Codeplex, in dem beschrieben wird, wie man mittels Reflection doch noch zum gewünschten Ergebnis kommt. Und ja, die Alternative die Seite per WebRequest aus dem Code raus anzustoßen und vorher entsprechend zu manipulieren funktioniert nur bedingt und natürlich schon gar nicht zusammen mit Mehrsprachigkeit  - Custom ASP.NET 2.0 WebParts und Variations vertragen sich leider gar nicht!
Beispiel: Eine Page erstellen, ein (selbst geschriebenes) WebPart hinzufügen und Publish klicken. Das Ergebnis ist ein leerer Eintrag im Variation Log, wo dann zwar Datum und Uhrzeit, aber weder Success, noch Failure Meldungen stehen. Weiterhin passiert dann einfach nichts mehr. Entfernt man das WebPart und klickt erneut auf Publish, funktioniert alles wieder wie es sollte. Nach einiger Recherche gibt es dazu offensichtlich 2 Lösungen: 1. Man erbt von Microsoft.SharePoint.WebPartPages.WebPart anstatt von System.Web.UI.WebControls.WebParts.WebPart, was jedoch laut Microsoft nicht empfohlen ist, oder 2. Installiert neben den Post-SP1 Hotfixes vom 31. Januar 2008 auch noch das 21. Februar 2008 Hotfix Package, was genau dieses Problem behebt. Somit können dann auch bereits vorhandene ASP.NET WebParts verwendet werden. Weitere Teile folgen, denn noch ist das Projekt nicht zu Ende... Im nächsten Beitrag geht es dann um das ebenfalls allseits beliebte Content Deployment und warum ich das ganze nahezu komplett neu Entwickelt habe...
Heute geht die CeBIT zu Ende und gestern war ich wie angekündigt also dort auf dem Avanade Stand, um ein paar sehr nette Gespräche mit potentiellen Bewerbern zu führen. Hier ein Bild vom Stand mit Martin und Silvia. War sehr nett, auch wenn es erwartungsgemäß am Samstag natürlich viele "Beutelratten" gab, die auf Kugelschreiber Jagd waren... Zum Trost gabs dann wenigstens bei Microsoft nach 18Uhr noch ein paar Cocktails. 
Ich werde wohl voraussichtlich am Samstag den 8. März auf der CeBIT anzutreffen sein, und zwar am Stand von Avanade (den wir uns mit Microsoft teilen). Wer mich also endlich (mal wieder) live treffen möchte, der sollte am Samstag in Halle 6, Stand C23/24 vorbeischauen.
Ich habe die letzten Tage dazu genutzt, meinen bisherigen Anbieter zu verlassen, da er leider übernommen wurde, und seitdem kaum noch auf Mails reagiert... Mein neuer Anbieter ist jetzt Hetzner. Dort gibt es nämlich recht günstige Rootserver, auf denen man eigene Betriebssysteme installieren kann. Daher ist dieses Blog ab sofort auf Windows Server 2008 x64. Leider noch nicht virtualisiert, da Hyper-V ja erst Mitte des Jahres released wird. Die Mailserver Software ist und bleibt aber weiterhin hMailServer, ein sehr zu empfehlender kostenloser Mailserver für Windows. Die Performance ist fühlbar gestiegen, aber ist ja jetzt auch ein Dual-Core (2x2,8GHz) mit 2GB RAM, außerdem 2x400GB Platte...
Heute mussten wir eine sehr fragwürdige Entdeckung machen: Bei SharePoint/MOSS ist die Reihenfolge der styles im .css file wichtig! Ok genauer gesagt liegt es wahrscheinlich am ASP.NET Menu Control. Wie kommt man nun zu so einer Erkenntnis? Dazu fügt man ein neues SharePoint Menu Control zu einer MasterPage hinzu, alternativ auch das Standard ASP.NET Menu Control. Nun die CSS Klassen für die verschiedenen Level festlegen, und auch die Selected Eigenschaft. Die Styles liegen dabei in einem extra .css file, was etwa so aussieht:
Nun werden die MenuItems zwar korrekt dargestellt, aber nur bis man eines selektiert. Das Problem ist hier, dass SharePoint, oder eben das ASP.NET Menu, den HTML code folgendermaßen rendert:
Es werden einfach alle styles in die class Eigenschaft gerendert, nur leider in der Reihenfolge in der sie auch im .css file aufgeführt sind.
Vertauscht man im .css file nun einfach die Reihenfolge der class angaben so
Dabei sollte man im Normalfall davon ausgehen können, dass wenn man schon das "selected" class property setzt, die style angabe automatisch ans Ende gesetzt wird und man nicht in einem mehrere 1000 Zeilen großen .css file auf die Reihenfolge achten muss...
Lang hat es gedauert, aber jetzt hab ich ihn! Mein Weihnachtsgeschenk an mich selbst. Einen hübschen neuen MP3 Player... den Zune! Zwar nur die 4 GB Version aber das sollte erstmal reichen. Sieht jedenfalls schon mal schick aus, und die WLAN synchronisation ist eine super Erfindung. Zusammen mit meinen schon seit einiger Zeit vorhandenen Bose TriPort In-Ear Kopfhörern einfach der Knaller.
Wie ja bereits seit Tagen an diversen Stellen zu lesen ist, steht das Visual Studio 2008 für alle MSDN Subscription Kunden zum Download zur Verfügung! Dies ist die erste VS Version, mit der man für alle .NET Framework Versionen entwickeln kann, weshalb ich direkt mal VS 2005 deinstalliert und 2008 installiert habe. Bisher bin ich ganz zufrieden. Der Team Explorer 2008 läuft sogar mit TFS 2005. Wer den Team Explorer 2008 übrigens sucht, hier ist der Download. Jetzt warte ich nur noch auf Windows Server 2008... wohl leider bis Februar.
I found a really nice feature of Outlook 2007: Publish my free/busy information. An example: You are an employee of a company and use Outlook and its calendar. If you are using Exchange already you know this "meeting request" feature. Make a new appointment and see if your colleagues have time for you: But what about other people from other companies? Yes you're right: They cannot see if you are busy, because they don't use the same Exchange environment. And here is the solution: First of all you need some webspace where you can use WebDAV to upload files. If you have trouble with WebDAV, basic authentication and Vista see this post. Then go to Tools->Options->Calendar Options->Free/Busy Options->Other Free/Busy... and enter the server to upload your free/busy information (leave the "Search location" empty): So for now your free/busy information is uploaded to your server, without any appointment details. Now you can send a link to your .vfb file to everyone who uses Outlook or any other compatible application. The other user have to enter this URL in the Details Tab in their contact card from you: (I have a redirection from this URL to the .vfb file, so here is no file extension) After your new friend have done this, he can now use the meeting request feature and see your free/busy times! Really nice if you work with clients and have many meetings and little time  However if you like to know whether I'm busy, check my free/busy information (see the "Free/Busy" link in the right pane).
Ich hatte ja bereits seit einiger Zeit eine Karte hier, wo ich eingetragen habe, wo ich mich so rumtreibe. Jetzt hat das ganze eine neue Dimension. Ich habe nämlich ein neues Spielzeug, einen GPS Logger. Dies ist ein kleiner Kasten den ich jetzt mit mir rum trage und der in gewissen Zeitintervallen die aktuelle Position speichert. Das ganze wird in einer Microsoft Virtual Earth Karte dargestellt (funktioniert aber leider nicht mit Opera, hoffe Microsoft bessert da demnächst mal nach... mit v6 wird jetzt immerhin Safari unterstützt). Damit es aber die Stasi 2.0 nicht so leicht hat, ist die Karte nicht öffentlich. Wer dabei sein will, schreibt mir einfach eine Mail oder hinterlässt einen Kommentar, dann lass ich euch gerne das Kennwort zukommen (oder ihr habt es bereits in eurem Postfach). Abgeguckt hab ich mir die Kartenintegration bei Daniel, es dann aber noch um ein paar neue Features erweitert. Zum Beispiel kann man Kommentieren und auch seinen eigenen Standort hinterlassen. Daniel bietet seine Karte auch öffentlich an, dort kann man sehen wie es aussieht. Der Link findet sich ab jetzt auch rechts in der Leiste oder direkt: http://woist.mwiedemeyer.de Wer noch mehr ideen hat, meldet sich per Kommentar.
Nachdem ich SSL für die Reporting Services auf einem anderen Port als dem Standard aktiviert habe (Port 444), konnte ich keine Verbindung mit dem SQL Management Studio mehr herstellen. Es kam folgende Fehlermeldung: "The file you are attempting to save or retrieve has been blocked from this Web site by the server administrators." Wobei im Event Log etwas genauer steht, dass er versucht auf https://domain/ReportServer... zuzugreifen. Die Portangabe muss manuell in der Datei "C:\Program Files\Microsoft SQL Server\MSSQL.2\Reporting Services\ReportServer\rsreportserver.config" hinzugefügt werden. In dem o.g. Microsoft Dokument steht, dass man dies nur manuell ändern muss, wenn man die E-Mail delivery extensions verwendet. If you are using the report server e-mail delivery extension, you can create subscriptions that included a report URL in the e-mail message. To construct the report URL, the report server uses the UrlRoot configuration setting in the RSReportServer.config file.
Setzt man das SharePoint GridView (Microsoft.SharePoint.WebControls.SPGridView) in eigenen Seiten ein, und benutzt man für die Datenquelle die DataSource Eigenschaft
dann zeigt das GridView beim sortieren keine Pfeile neben der sortierten Spalte an.
Dank Reflector stellt man fest, dass das SPGridView leider die Spalten Sortierung nur anzeigt wenn man als Datenquelle "DataSourceID" verwendet... Warum? Ich sehe da keinen Grund. Deshalb hier in etwa die Implementierung wie es das SPGridView auch intern macht:
Im Einsatz ist ein InfoPath 2003 Formular für einen länger dauernden Workflow. Das Dokument selbst wird dabei von jemandem erstellt, in einer SharePoint Document Library abgelegt und dann an einem anderen Tag von jemand anderem erneut aufgerufen (mit einer anderen View). Problem ist, dass auf beiden Views innerhalb des Dokumentes zwei verschiedene Textfelder sind, die das Datum anzeigen sollen an dem das Dokument jeweils geöffnet wird. Dafür gibt es eine Funktion, nämlich today(). Das Problem ist, dass today() nun leider nicht heute, wie der Name sagt zurückliefert, sondern den Tag an dem das Formular zum ersten Mal geöffnet wurde... Bug oder Feature? Hätte man aber auch schneller drauf kommen können, wenn man mal bei Office Online nachliest: Gibt das Datum als Daten vom Typ Datum (date) zurück, wenn das Formular zum ersten Mal geöffnet wird.
Ein Kunde, der InfoPath 2003 einsetzt, hat einige Anforderungen, die sich nicht so einfach umsetzen lassen. Da das große weite Internet leider fast nichts dazu hergibt, hier meine Probleme inkl. Lösungen. Anforderung 1: Eine "multi-select list box", also eine ListBox zum anhaken. In InfoPath 2007 bereits enthalten, muss diese bei 2003 leider selbst gebaut werden. Dazu gab es einen recht guten Artikel bei InfoPathDev, den ich nun (nach deren umgestaltung) leider nicht mehr wieder finde... Deshalb hier nochmal in Kürze: Die DataSource Struktur (der InternetPortals Knoten ist repeatable und "internetPortalSelected" ist vom Typ boolean): Nun erstellt man eine optionale Section auf dem Formular, und bindet sie an den "PortalsGroup" Knoten. Innerhalb der optionalen Section erstellt man eine Scrolling Region. Dort zieht man dann den "InternetPortals" Knoten hinein und wählt "Repeating Table". In den Eigenschaften hakt man "Allow users to insert and delete rows" und "Include Header" ab. Außerdem sollte die Tabelle natürlich keine Rahmen haben. Jetzt nur noch das ganze entsprechend ansortieren, die Textbox durch ExpressionBox ersetzen und als default Wert für den Namen etwas schreiben wie "loading...". Die ID muss dabei dem Benutzer gar nicht gezeigt werden und kann gelöscht werden. So sieht das ganze dann aus: Anforderung 2: Und hier wird es komplizierter. Die ListBox soll nun mit Daten von einem WebService befüllt werden, und zwar erst beim öffnen der Section. Problem 1 daran ist, dass es im IP 2003 Objektmodell keinerlei Events gibt, die ein aufklappen einer section anzeigen. Das einzige Event, was an der Stelle hilft ist das OnContextChange Event. Dieses wird allerdings ziemlich häufig gefeuert, z.b. bei jedem klick irgendwo auf das Formular, etc. Problem 2 ist, dass man an die selbstgebaute ListBox keine DataSource anbinden kann (zumindest nicht über Wizards). Hier die Lösung (siehe Kommentare im Code): [InfoPathEventHandler(EventType = InfoPathEventType.OnContextChange)] public void OnContextChange(DocContextChangeEvent e) { if (e.Type == "ContextNode") { LoadPortals(); } } private void LoadPortals() { // Zunächst den Knoten finden der den Repeatable Knoten enthält IXMLDOMNode ipGroup = thisXDocument.DOM.selectSingleNode("my:Fields/my:PortalsGroup/my:Portals1"); // Ist dieser null dann ist die section nicht aufgeklappt, es muss nichts getan werden if (ipGroup == null) return; // Die DataSource abrufen (hier: "GetInternetPortals"). Diese muss zunächst über // Tools->Data Connections angelegt werden und das häkchen bei "Automatically retrieve data // when form is opened" muss nicht selektiert werden, denn die Daten sollen ja nur bei Bedarf // geladen werden, um so das öffnen des Formulars nicht unnötig zu verlangsamen. DataObject dob = thisXDocument.DataObjects["GetInternetPortals"]; dob.Query(); // Hier müssen die Namespaces gesetzt werden um auf das DOM des WebServices zugreifen zu können. // Der erste Namespace ist IP 2003 standard, der zweite muss durch den Namespace // des WebServices ersetzt werden. IXMLDOMDocument2 d = (IXMLDOMDocument2)dob.DOM; d.setProperty("SelectionNamespaces", "xmlns:dfs=\http://schemas.microsoft.com/office/infopath/2003/dataFormSolution\ xmlns:tns=\"http://MY-WEB-SERVICE-URL.COM/SERVICES\""); // Den Knoten des WebService Response holen (wie dieser Knoten heißt lässt sich am einfachsten // raus finden, in dem man im debug modus einfach mal den Inhalt von d.xml anschaut). IXMLDOMNode rootNode = d.selectSingleNode("dfs:myFields/dfs:dataFields/ tns:GetInternetPortalsResponse/tns:GetInternetPortalsResult"); // Erst jetzt kann man feststellen, ob die Daten bereits in der Listbox enthalten sind if (ipGroup.childNodes.length > rootNode.childNodes.length) return; bool removeFirst = true; foreach (IXMLDOMNode node in rootNode.childNodes) { // Hier die beiden Knoten die vom WebService zurückgeliefert werden. string id = node.selectSingleNode("tns:Id").text; string name = node.selectSingleNode("tns:Name").text; IXMLDOMNode group = thisXDocument.DOM. selectSingleNode("my:Fields/my:PortalsGroup/my:Portals1"); IXMLDOMNode field = thisXDocument.DOM. selectSingleNode("my:Fields/my:PortalsGroup/my:Portals1/my:InternetPortals"); IXMLDOMNode newNode = field.cloneNode(true); if (removeFirst) { group.removeChild(field); removeFirst = false; } // Werte vom neuen Knoten setzen newNode.selectSingleNode("my:internetPortalId").text = id; newNode.selectSingleNode("my:internetPortal").text = name; group.appendChild(newNode); } }
Demnächst mehr aus der InfoPath Hell...
Folgendes Szenario: Ein (relativ umfangreiches) InfoPath 2003 Formular, mit Managed Code in .NET 2.0 und ein paar Data Connections die Daten von WebServices abrufen. Das Formular selbst ist inzwischen ziemlich groß geworden und von einer Sekunde auf die andere lädt das Forumlar einfach nicht mehr. Dazu folgende Fehlermeldung: The query cannot be run for the following DataObject: XXX InfoPath cannot run the specified query. Attachment: Maximum retry on the connection exceeded. - HRESULT=0x80004005: Unspecified error Nach ein paar google recherchen ist dieser Fehler scheinbar nur in anderen Zusammenhängen bekannt... Also alles mögliche probiert, aber keine Besserung. Dann mal ein neues Formular erstellt, data connection hinzugefügt, geladen --> lädt ohne Probleme. Nach etwa einem Tag verzweifelten rumprobieren, das Formular mal auf einem anderen Rechner geladen --> lädt ohne Probleme! Der Unterschied der beiden Systeme: Auf dem, auf dem es nicht läuft, ist nur das Office 2003 SP1 installiert, auf dem anderen SP2! Lösung also: SP2 installieren. Trotzdem bleibt es natürlich sehr fragwürdig, wieso es a) lange ging und erst auf einmal nicht mehr und b) ein neues Formular mit den komplett selben Einstellungen läuft. Mag vielleicht an der größe des Formulars liegen oder an dem Wetter... 
Danke Microsoft für die Implementierung dieses fundamentalen Features in der kommenden Version des Team Foundation Servers / VS 2008... endlich! 
Die Beta 2 vom Visual Studio 2008 (ehemals Orcas) ist ab sofort verfügbar. Die beste Einstiegsseite ist die MSDN Subscription Seite falls verfügbar oder hier: http://msdn2.microsoft.com/en-us/vstudio/aa700831.aspx Dort gibt es auch bereits fertige VPCs mit VS 2008 Team Suite und Team Foundation Server (TFS) vorinstalliert.
Der Team Foundation Server ist im großen und ganzen ein sehr nettes Tool. Insbesondere im Gegensatz zu SourceSafe nicht nur deutlich umfangreicher, sondern er "soll" auch besser sein. Problem / Bug(?): - Neue Datei zu einem Projekt hinzufügen oder besser noch durch copy/paste eine vorhandene, eingecheckte Datei in das gleiche Projekt kopieren - Die soeben neu erstellte Datei umbenennen - Alles einchecken Die Datei lässt sich nicht einchecken, obwohl es zunächst so aussieht. Nach beenden und neu starten des Studios hat die Datei überhaupt kein Zeichen mehr vor dem Dateisymbol und ist somit nicht mehr unter Quellcodekontrolle. Lösung des Problems: Die Team Foundation Server Power Tools runterladen, installieren und mit der Kommandozeile in den Ordner mit der Solution wechseln, bsp.: cd "C:\Documents and Settings\user1\Visual Studio 2005\Projects\testproject" Dann tfpt.exe aufrufen mit: "tfpt.exe online" Im erscheinenden Fenster die entsprechende Datei anhaken und auf "Pend changes" klicksen. Studio neu starten und die Datei lässt sich wieder einchecken wie gewohnt.
Geschafft. Auf dem Web zum MCPD EA habe ich nun etwas Zeit gehabt um schon mal die ersten beiden Prüfungen zu machen. Zum einen die 70-536 (Microsoft .NET Framework 2.0 - Application Development Foundation) und direkt hinterher die 70-528 (Microsoft .NET Framework 2.0 - Web-Based Client Development). Damit bin ich jetzt also MCTS Web. Beide Prüfungen waren ganz ok, wobei ich bei der Web Prüfung die Möglichkeit der Kommentierung genutzt habe und bei 3-4 unklaren/falschen Fragen meinen Kommentar hinterlassen habe. Ob das jemand liest ist eine andere Frage...
Wie ich gerad bei Channel 9 gelesen habe, gibt es ab sofort den Windows Live Writer als Beta 2 zum Download! Allein für den hübschen neuen SplashScreen lohnt sich der Download   Ansonsten hat sich nicht nur die Optik verbessert sondern auch viele andere Dinge, wie z.B., dass man nun endlich auch neue Kategorien erstellen kann, dass man sich warnen lassen kann Kategorien/Titel hinzuzufügen, bevor man einen Artikel published, etc. Mehr zu den Neuigkeiten gibt es im LiveSide Blog oder direkt beim Windows Live Writer Team. Ach und wer noch nicht genug Betas auf seinem Rechner hat: Der Live Messenger ist nun auch als Version 8.5 Beta verfügbar.
Hier noch ein paar Bilder die von den professionellen Fotografen gemacht wurden: Das war die große Bühne auf der wir auch die VSTO Session hatten (die war wirklich so groß):  Dann noch der etwas kleinere Raum für die Games Development Sessions (hier spricht übrigens gerade Dirk Primbs):  Und noch ein paar Bilder in Action  
Für mich endete die STC ja bereits gestern, aber als Fazit kann ich sagen, dass zum einen die Location zwar ganz nett war, aber irgendwie hat es mir 2005 in Kassel besser gefallen. Auch die Party am Abend war sehr verteilt in den ganzen Räumen, was eher nicht so toll war, auch wenn es sehr coole Aktivitäten wie z.B. Hochofenaufstieg bei Nacht, GPS Rally, XBox Contest, etc. gab.
Meistens war ich allerdings beim AntMe Coding Contest zu finden, um einigen Teams noch ein paar Tipps zu geben. Und so sah das ganze auf der Leinwand aus, wenn zwei Ameisenvölker gegeneinander angetreten sind:
Moderiert und gemanaged wurde das ganze von Wolfgang und Tom:
Schönes Bild wie ich finde 
Ok, und damit alle die da waren nochmal nachlesen können, und alle die nicht da waren, aber gerne da gewesen wären, sehen können, was sie verpasst haben, gibt es hier die Slides und Demos der beiden Sessions "AntMe! - Teil 2" und "VSTO - Office Programmierung mit .NET":
Download AntMe! Teil 2 Slides + Demos / Plugins Download VSTO Slides + Demos
Wer noch fragen hat, gerne hier melden oder per Mail, siehe Slidedecks.
Heute bin ich auf der STC in Duisburg.  Dort hat Avanade natürlich auch einen Stand, der von Maryla betreut wird. Hier ein (Teil-) Auszug aus der Agenda. Ich steh auch drauf... Die Slides zu den Vorträgen gibt es dann später an dieser Stelle. Jetzt erstmal zur nächsten Session...
Mit der Überschrift hab ich doch sicherlich schon mal einige Leser gewonnen  Aber worum es geht: In diesem Blog Eintrag auf windows-now.com geht es um ein Gespräch mit Dave Wancha, dem Director of Microsoft's Windows Client Partner Platform Group. Dort enthüllt er ein paar Details über Vista die ich zumindest bis jetzt nicht wusste. Dazu zählt z.B. dass Vista mehr als 1,9 Millionen Geräte (-treiber) unterstützt! Ich finde das eine gigantische Zahl. Was ebenfalls interessant ist, das Vista mehr als 10 Millionen Tests durchlaufen hat...
Wie ich hier und hier ja schon mal angedeutet hatte, werde ich ebenfalls am 21. Mai auf der Student Technology Conference sein.
Diesmal nicht als Student sondern als Speaker und zwar für das Thema AntMe! Teil 2, wo sich alles um die Architektur und Plugin Entwicklung drehen wird. Außerdem evtl. für eine Session gemeinsam mit einem Kollegen zum Thema Office Entwicklung mit VSTO (entscheidet sich Montag).
Ich freue mich schon auf alle Besucher meiner Session(s) und natürlich auf die Party am Montag abend... 
Für die, die nicht kommen können, wollen oder dürfen, gibt es die Slides und Demos nach der Konferenz dann übrigens hier zum Download.
Wer bis dahin wissen will, wie es bei den vergangenen Konferenzen war, der schaut hier bei der STC 2005 und/oder hier (2004).
In Office 2007 gibt es ein sehr nettes von mir erst soeben entdecktes Feature:
Den Übersetzungstooltip. Zuerst auf einem Dokument per Rechtsklicks Translate->Beliebige Sprache wählen
Hält man dann den Cursor über ein Wort, erscheint die Übersetzung als ToolTip. Und so sieht das ganze dann aus:

Für alle die mit SQL Server Datenbanken kämpfen, insbesondere auch im Team, denen möchte ich heute Visual Studio Team Edition for Database Professionals empfehlen. Vor einiger Zeit habe ich es installiert und dann erstmal vergessen. Aber jetzt wo ich ein Datenbankschema erstellen wollte, mich direkt dran erinnert und ich muss sagen: Wow, sehr gelungen. Man hat Datenbankänderungen bestens im Griff, kann alle Änderungen sehr leicht in (verschiedene) Datenbanken deployen und auch dem Kunden später einfach ein einziges File geben, was die gesamte DB erzeugt, auf Wunsch auch mit Daten. Außerdem lassen sich Unit Tests z.B. für Stored Procedures erstellen, usw. Es lohnt sich also das ganze mal auszuprobieren!
Länger gab es nichts Neues, deshalb hier ein kurzes Update. 1. Ein MOSS 2007 Problem: Ich versuche über folgende Zeilen (aus einer Windows Forms Anwendung) eine Verbindung zum SharePoint aufzubauen: SPSite site = new SPSite("http://moss2007/sites/test"); SPWeb web = site.OpenWeb(); SPListCollection lists = web.Lists; Bereits in der ersten Zeile bekomme ich eine Exception (ausgeführt mit einem MOSS Admin Account) geworfen die auch noch relativ unverständlich ist: "FileNotFoundException: The web application at http://moss2007/sites/test could not be found. (...)" Mit einem globalen Domain Admin Account (der kein eingetragener MOSS Admin ist, aber auf allen System in der Domäne admin permissions hat) läuft das ganze hingegen ohne Probleme. Ich habe schon rausgefunden, dass der Account in der WSS_Admin_WPG Gruppe sein muss und zusätzlich Zugriff auf die SharePoint_Config Datenbank haben muss, dann gehts... aber wieso? Was genau macht dieser API Call, wenn er nicht über das SharePoint User Objekt Modell geht? Falls jemand eine Erklärung oder ein paar Links zur Hand hat, immer her damit. 2. Die STC 2007 ist zwar noch etwas hin, aber meine Präsentation zum Thema AntMe werde ich bereits auf unserem Avanade Team Meeting vorstellen, dementsprechend bin ich dabei diese bereits vorzubereiten. Einige Plugins sind dafür in der Entstehung und die Slides füllen sich auch langsam mit Inhalt... Die Agenda steht inzwischen übrigens auch schon fest.
Wer versucht auf ein WebDAV Folder was mit Basic Authentifizierung geschützt ist mit Windows Vista zu zugreifen, der wird schnell merken, dass das so nicht geht. Das Problem ist nämlich, dass Vista die Basic Authentication standardmäßig für unsicher hält (auch wenn die Verbindung SSL verschlüsselt ist). Um dieses Verhalten zu ändern ist es nötig den Wert von HKLM\SYSTEM\CurrentControlSet\Services\WebClient\Parameters\BasicAuthLevel auf 2 zu ändern: (hier im Bild steht der Wert noch auf 1) Danach das System neu starten und über Map Network Drive das Laufwerk einbinden:  Wichtig dabei: Nicht über den Link "Connect to a Web site that you can use to store..." gehen, sondern die WebDAV URL direkt als Folder eingeben (siehe Screenshot).
So, es ist geschafft. Der Server Umzug ist weitesgehend ohne Problem abgelaufen. Wurde aber auch dringend Zeit. Jetzt wird dieses Blog (und noch einige andere Dinge) auf einem schnellen Athlon XP 1800+ mit 1 GB RAM ausgeführt. Im Gegensatz zu dem vorigen virtuellen Server mit 1 GHz und geradezu lächerlichen 256 MB RAM ein rasend schnelles Teil.  Natürlich läuft das System auf Windows Server 2003 mit ASP.NET 2.0 und SQL Server 2005. Kein PHP, kein MySQL!  Als Mailserver kommt übrigens der hMailServer zum Einsatz. Sehr zu empfehlen, wird ständig weiterentwickelt und läuft mit MySQL oder SQL Server. Ich glaube der einzige vernünftige kostenlose Mailserver für Windows.
Das hat hier, hat mein Explorer gestern kurzzeitig angezeigt, als er den Inhalt von einem Ordner versucht hat aufzulisten: Wenn ich nur so eine große Platte hätte um diese Datei zu speichern...
Notiz an mich, Dinge die man besser lassen sollte: In Windows Vista den Disk Cleanup (Festplatten Bereinigungsassistent) "mal eben" ausführen und dabei alles anklicksen. Ergebnis: Er hat auch das Hibernatefile gelöscht, was an sich kein Problem wäre, aber seitdem gibt es die Option nirgenwo in den PowerOptions mehr und auch sonst habe ich gerade eine halbe Stunde versucht, Hibernate wieder zu aktivieren... In XP war das noch ein einfaches Häkchen in Systemsteuerung->System->Ruhezustand... Nach einiger Recherche fand ich dann die Lösung, und dass es dafür keine grafische Oberfläche gibt. Einfach in der Console folgendes eingeben: powercfg.exe /hibernate on
Dieses Jahr wird es (endlich) wieder eine STC in Duisburg geben... nur bin ich kein Student mehr, schade. Aber alle die es sind, denen Empfehle ich sich sofort anzumelden, denn es gibt nicht nur unter den ersten Anmeldungen Office 2007 zu gewinnen, sondern es lohnt sich. In den 2 Tagen wird es um viele Interessante Themen gehen (hier Voten!), u.a. wahrscheinlich auch um AntMe, die Ameisensimulation. Und vielleicht werde ich auch dort sein, obwohl ich kein Student mehr bin... aber mehr wird noch nicht verraten.
Wie ich hier schon mal geschrieben habe, zeigt Windows Vista das "Phänomen", dass fast der gesamte Arbeitsspeicher auch tatsächlich verwendet wird. Das das was gutes und nichts schlechtes ist, beschreibt Daniel Melanchton in diesem Artikel. Dort schreibt er z.B.: Warum das einige "Experten" so stört, wird mir nicht klar. Bei einem Prozessorcache fragt sich auch keiner, wieviel denn davon benutzt wird. Ganz im Gegenteil: Wir erwarten, dass größere 1st, 2nd und 3rd Level Caches mehr Performance ermöglichen. Nur beim Hauptspeicher scheint es einigen wichtig zu sein, dass davon möglichst viel *nicht* benutzt wird. Das macht für mich keinen Sinn. Insbesondere die Sache mit den "Experten" ist mir gerade vor ein paar Tagen auch mal wieder auf einigen Privatsendern aufgefallen... Da wird der Vista Experience Index gezeigt, ein USB-Stick angesteckt und dann kommen Kommentare wie: "Der Index zeigt immer noch das gleiche, fazit: ReadyBoost nützt ja gar nichts." Da kann einem schlecht werden... Daher hier meine Empfehlung an alle Computer-, Internet- und Vista-"Experten": Diesen Artikel und am besten noch einige andere gründlich lesen!
Installiert man zunächst Outlook Web Access (OWA) 2007 in einen frischen IIS auf Windows Server 2003, gibt es noch keine Probleme. Installiert man nun die WSS 3.0, um z.B. die "öffentlichen Ordner" mit Exchange/Outlook verwenden zu können, kommen die Probleme. Möglichkeit 1: Man installiert die WSS in eine eigene neue Website. Problem: Port 80 wird nun also von der Standardwebsite und von der SharepointSite verwendet => Nicht möglich (mit nur einer IP). Möglichkeit 2: Mit dem Sharepoint Administrationstool lassen sich auch die Services in die vorhandene Standardwebsite installieren. Problem: Da beim ersten Einrichten kein Ordner angegeben werden kann wird WSS direkt in die Standardwebsite in "/" eingerichtet. => Das Problem ist bekannt und für Exchange 2003 gibt es hier auch eine Lösung: Microsoft KB 823265 In diesem Artikel werden die von OWA benötigten Ordner einfach der Kontrolle durch WSS entzogen. Das ganze hilft trotzdem nicht bei Exchange 2007! Nach diversen Experimenten am heutigen Nachmittag habe ich nun die Lösung gefunden: 1. OWA 2007 muss installiert und funktionsfähig sein. Ordner: http(s)://localhost/owa Dann so vorgehen wie in Möglichkeit 2 beschrieben, also eine neue Sharepoint "Webanwendung" in die vorhandene Standardwebsite installieren. 2. Testen ob nun die Sharepoint Services laufen. Dazu im Adminstrationstool eine neue "Websitesammlung" erstellen (Ich frage mich wirklich wie das in der englischen Version heißt) und schauen ob diese läuft. Im Beispiel unter http://localhost/websites/test1 (Der Unterordner "websites" war bereits als websitepräfix vorgegeben) 3. "Verwaltete Pfade definieren" wählen, und den Pfad "/" markieren und löschen. 4. Als letztes muss nun die web.config im Root der Standardwebsite geändert werden, denn sonst läuft OWA nicht und quittiert den Aufruf mit einer Sicherheitsfehlermeldung im Eventlog. Also die Web.config öffnen und folgendes hinter den letzten <location> Eintrag anfügen: <location path="owa">
<system.web>
<trust level="Full" originUrl="" />
<identity impersonate="false" />
<authorization>
<allow users="*" />
</authorization>
<httpModules>
<clear />
</httpModules>
<pages enableSessionState="true" enableViewState="true" enableViewStateMac="true" validateRequest="false" />
</system.web>
</location>
Wichtig ist vor allem das Trustlevel, denn das Standardtrustlevel für die gesamte Website wurde von WSS auf "WSS_Minimum" festgesetzt. In dieser "Trust-Umgebung" verweigert aber OWA seinen Dienst.
Der <pages> Eintrag ist nicht notwendig, kann aber bei anderen Applikationen notwendig werden, die auf SessionState angewiesen sind. (Z.B. OWAAdmin)
Nach den Änderungen den IIS neu starten und schon laufen die Sharepoint Services gemeinsam mit Outlook Web Access auf einer IIS Website, auf einem Port.
Nachdem ich hier ja schon vom SP1 geschrieben habe, ist nun auch das VS2005 SP1 Update for Vista (Beta) zum Download verfügbar. Nach der Installation startet das Studio jetzt mit einer anderen Warnmeldung: Man soll das Studio doch bitte mit Adminrechten starten... naja, mal sehen ob es auch ohne Adminrechte (wie bisher ohne SP1 bestens) läuft...
Hmm... Gerade auf Vista installiert (und Windows Vista wird als gültiges Betriebssystem in den Systemrequirements aufgeführt) und jetzt erscheint diese tolle Meldung:  Aha... also nochmal auf die Microsoft Seite, und was lese ich da jetzt? Das "SP1 Vista Update" ist derzeit a) nur als Beta erhältlich und b) ist der Downloadlink tot! Ach ja, die Installation dauerte nur 25 Minuten.
Gerade hier gelesen, dass das Service Pack 1 von Visual Studio 2005 ab sofort erhältlich ist. (Für die Express Edition hier) Und dann nachgesehen und erstmal über solche Aussage gestolpert: "When installing on Windows Vista™ with User Account Control (UAC) active, there can be a substantial delay before the initial setup dialog is displayed. During this time, a UAC function is verifying digital signatures within the installation package. This service pack carries a large number of files causing the process to take up to one hour in some cases." Ein "erhebliches" Delay... eine Stunde! Wow... Mal gucken wie lange es auf meinem Vista mit einem "Experience Index" von 4,4 dauert... (naja, an meinen Platten wirds nicht liegen... mit 5,4 von 5,9 möglichen Punkten) Bin gespannt ob sich dann auch wirklich soviel getan hat, insbesondere beim Betrieb unter Vista. Bei einem knapp 500MB großen Service Packt dürfte man da einiges erwarten...
Heute gibt es mal einen Beitrag auf Englisch. Yesterday I read the new dotnet-magazin issue (1/2.07), and the best article was: "Die Zwischenablage wird lebendig" (Page 107), an article about Microformats and Microsoft Live Clipboard. The LiveClipboard is XML-based and using Microformats to transport Businesscards (vCard), Appointments (iCal) or other things you can think about. What can I do with Live Clipboard? An Example: You are on Xing (openBC) or LinkedIn and want easily copy one of your contacts to your Outlook Addressbook, you normally have to create a new Contact in Outlook, copy each line from the website with CTRL+C, CTRL-V to the corresponding fields in Outlook and save. With Live Clipboard you can right click the contact on the website, select Copy from context-menu (or use CTRL+C), go to Outlook and paste it there. Ready! No more things to do. Well, because Live Clipboard isn't really widespread, most Websites are not yet Live Clipboard enabled. An alternative is using Firefox with Tails. Xing supports the Firefox Tail extension, but I think Live Clipboard will be the better technology, if more websites will support it. You can use Live Clipboard today, with Internet Explorer and Firefox (I hope Opera will support it in the next release too). Ray Ozzie has a sample website where you can play around with LiveClipboard, and also implement Live Clipboard (and your contact informations) on your own website (more on this in one of my next posts). What about Outlook? Yes you're right... Outlook does not support LiveClipboard out-of-the-box, but I build an AddIn for Outlook 2007 with VSTO 2005 SE. If you want to try it, download the Live Clipboard Outlook AddIn here! Systemrequirements: VSTO runtime, Outlook 2007. (Successfully tested with Windows Vista RC1 and Outlook 2007 B2TR). Don't know if it will work with Outlook 2003, but when, let me know. After installing and change to a Folder containing Contacts, there is a new MenuItem: Also there is a new context-menu-item on a Contact available: If you now go to a website that offers a contact through Live Clipboard, indicated by this icon , you can copy and paste to Outlook easily. More on VSTO can be found in MSDN or at outlookcode.com.
Nachdem irgendwie der Voice Chat Live Call mit Trillian leider aus unbekanntem Grund nicht funktionierte, habe ich den Live Messenger 8.1 Beta installiert. Kleiner Test, und alles funktioniert bestens.
Nur jetzt das große ABER: Ich bin es von Trillian gewöhnt, dass ich a) die Tastenkombination zum senden einer normalen Textnachricht frei konfigurieren kann und b) das es CTRL+Enter (=STRG+Enter oder Alt+S, oder Alt+Enter, etc...) ist!
Nur wieso kommt man auf die Idee, das senden einer Nachricht gerade auf [Enter] zu legen? Das ist und bleibt für mich ein Zeilenumbruch.
Um das Problem zu beheben, dachte ich, mit einem AddIn lässt sich sicher irgendwas entwickeln... aber leider bietet das SDK (besser gesagt die MessengerClient API) keine Möglichkeit in das Texteingabe-Fenster einzugreifen. Einzig das senden einer Nachricht lässt sich abfangen...
Wer ein AddIn entwickeln möchte, findet hier die nötigen Infos.
Und wenn jemand Kontakt zu den Live Messenger Entwicklergruppe hat, möge er diesen doch bitte mitteilen, dass der Senden-Shortcut konfigurierbar sein sollte! 
Ich habe das Highscore Plugin für AntMe aktualisiert. Es besteht nun die Möglichkeit, sein Ameisenvolk gleich mit dem Punktestand mit hochzuladen. So können andere nun auch fremde Völkchen analysieren... Geplant für die nächste Zeit ist jedoch eine Trennung der Highscore, so dass besser differenziert werden kann zwischen "globalem", "lokalem" und "keinem" Gedächtnis der Ameisen... Dazu dann später mehr. Vorläufig also erstmal AntMe downloaden, Highscore Plugin downloaden und sein Ameisenvolk auf Platz 1 positionieren...
Da leider NDoc für das .NET Framework 2.0 derzeit nicht funktioniert, und es sich unter Vista noch nicht mal installieren lässt, weil es Version 1.1 vermisst, habe ich nach einer Alternative geschaut. Ich wusste, dass Microsoft seine eigenen Dokumentationen mit einem Tool erstellt, was es seit noch nicht allzulanger Zeit auch kostenlos zum Download gibt: Sandcastle. (Direkt Download) Vor kurzem hatte ich damit bereits rumprobiert, allerdings schrecken die x einzelnen Aufrufe auf der Kommandozeile ein wenig ab, zumal es nicht so funktionierte wie ich wollte... Da ich nun aber wirklich eine Dokumentation für das Diplomprojekt benötige, hab ich mich nochmal ein wenig umgesehen und bin auf den Sandcastle Help File Builder gestoßen. Eine grafische Oberfläche für Sandcastle die im Prinzip genauso aussieht wie die GUI von NDoc. Somit ist die Bedienung sehr einfach und ich habe meine Dokumentation im VS2005 Style erstellt bekommen.
Sooo, nachdem ich mich ein wenig mit AntMe beschäftigt habe, gibt es nun mein (und das erste) PlugIn! Es dient dazu seinen Punktestand hochzuladen. Die Rangliste findet sich auf http://mwiedemeyer.de/AntMe. Dort gibt es ebenfalls den Download des PlugIns. Für alle die noch nicht wissen was AntMe ist: Eine Ameisen Simulation in .NET, bei dem man seinem eigenen Ameisenvolk künstliche Intelligenz auf einfachste Art und Weise verleiht programmiert. Mehr zu AntMe auf Coding4Fun (Forum) oder in meinem vorigen Beitrag. So, und nun versucht mich von Platz 1 zu verdrängen! 
Entstanden aus einem Spaßprojekt für die GC Leipzig ist daraus jetzt wohl was richtig nettes geworden. Es ist im Prinzip ähnlich wie RoboCode oder auch Terrarium (wovon man aber auch lange nichts gehört hat...wohl gestorben!?). Man programmiert in diesem Fall jedoch ein Ameisen Volk, wie es auf bestimmte Situationen, wie z.B. "Futter in Reichweite" oder "Gegenerische Ameise entdeckt" reagieren soll. Danach lässt man es dann in einer Simulation, also in einem Spielfeld selbstständig agieren und kann seinem Völkchen zusehen, was es für Dummheiten macht. Später soll laut Uwe auch noch ein "Kampfmodus" hinzukommen, wo man verschiedene Völker gegeneinander antreten lassen kann. Das ganze ist komplett in C#, aber dank .NET kann man seine Ameisen natürlich auch in beliebigen anderen .NET Sprachen schreiben. Also: Download (inkl. Sourcen) hier! Und ein extra Forum gibts nun auch. Ich weiß..eigentlich sollte ich meine Diplomarbeit schreiben, aber jetzt wird erstmal am Ameisen Volk gehackt... 
Ich bin zur Roadshow in Hannover angemeldet. Vielleicht trifft man ja den ein oder anderen? Könnt gerne bescheid sagen, noch sind 1 oder sogar 2 Plätze im Auto von Paderborn über Bielefeld nach Hannover frei. Aber Achtung: Frühbucherrabatt gibt es nur noch bis 25.10.! Also schnell anmelden. Mehr Infos hier!
Nachdem ich inzwischen wirklich versuche produktiv mit Windows Vista und Office 2007 zu arbeiten und meine Diplomarbeit zu schreiben ist mir gerade etwas aufgefallen, was hoffentlich bis zum Release von Office noch behoben wird. Die Rechtschreibprüfung während der Eingabe lässt sich nämlich derzeit scheinbar nur global für das gesamte Office Paket aktivieren oder deaktivieren. Das stört mich ungemein, denn während ich die Rechtschreibkorrektur in Word eingeschaltet haben möchte, möchte ich trotzdem weiterhin Mails schreiben können, ohne das alles rot unterkringelt ist... ich bin mir dessen bewusst, dass ich in mails gerne mal alles klein schreibe und eher umgangssprachlich als korrekt schreibe...
Wie ich eben bei Sebastian Weber gelesen habe, stehen die Termine für die Roadshow zu Windows Vista, Office System und Exchange Server 2007. Es handelt sich um eine Eintägige Veranstaltung und die Agenda hört sich äußerst Interessant an. Und das beste kommt noch: Es gibt Windows Vista Ultimate und Office 2007 Pro kostenlos! Ich denke es lohnt sich, deshalb werde ich auf jedenfall dabei sein, nur wo weiß ich noch nicht so recht... Mehr Infos und Anmeldung: Ready for a New Day - Bereit für die IT-Infrastruktur von morgen
Viele Leute glauben ja, sie bräuchten unheimlich viel freien Arbeitsspeicher und schaffen sich dafür sogar Tools an, mit denen sich der RAM vergrößern lassen soll... Aber hier gibt es einen interessanten Blogeintrag, den man unbedingt lesen sollte. Denn es machte mir auch erst ein wenig angst, dass mein freier Speicher bei Windows Vista nur mit 20 MB angezeigt wird..und das von 2 GB! Während unter Windows XP immer ca 1,5 GB frei waren... Das der RAM aber ein Cache ist, und jeder ungenutze Cache vollkommen überflüssig ist, zeigt da Vista. Kaum was frei, also ist der Cache gut ausgelastet, weshalb auch das (nicht nur subjektive) empfinden alle Anwendungen schneller werden lässt. Windows XP dagegen scheint extrem ineffektiv mit dem Cache/RAM umzugehen... Aber am besten ihr lest selbst: Why does Vista use all my memory?
Wie ich nach einiger Suche soeben rausfinden musste, wird DatabaseMail von der Express Edition nicht unterstützt (siehe hier). Das ist allerdings nicht in irgendeiner Weise bereits im SQL Server Express so verankert... Alle StoredProcedures, der ServiceBroker, usw. sind vorhanden. Die Mails werden sogar in die Queue geschrieben. Nur wenn man dann in das Eventlog schaut, stellt man fest, dass es daran scheitert, dass der SQL Server den externen Prozess "DatabaseMail90.exe" nicht starten konnte. Informiert man sich darüber, müsste diese im MSSQL\Binn Verzeichnis liegen. Da der SQL Server Express DatabaseMail aber nicht unterstützen will unterstützt, ist diese Datei einfach nicht vorhanden. Ich wollte wissen, ob es wirklich nur daran liegt, also schnell die Dateien DatabaseMail90.exe, DatabaseMailengine.dll und DatabaseMailprotocols.dll von der Standard Edition in das Express Verzeichnis kopiert und siehe da: Die Mail wird nach einem "sysmail_stop_sp" und "sysmail_start_sp" sofort ohne Probleme versendet. Schade, dass man darauf verzichtete, DatabaseMail auch in der Express Edition zur Verfügung zu stellen. Ein wirklich sehr nettes Feature.
So, nach dem kleinen Download von 2,6GB und dem Brennvorgang wollte ich also die "Pre-RC1" Version mit der Build Nummer 5536 über meine Beta 2 Version installieren.
Das war leider nicht möglich da ich auf der Partition nur noch 6GB frei hatte, Vista für das Upgrade aber min 7,x GB haben möchte. Zweiter Grund dass das Updgrade nicht möglich war: Sprachdifferenzen (Beta 2 war auf deutsch, während es Pre-RC1 nur auf englisch gab).
Also Partition platt gemacht, und neu installiert. Die Installation ging relativ flott und ohne Probleme, sofern man einen gültigen Lizenzkey hat.
Nach der Installation fallen natürlich einige neuerungen sofort ins Auge (neuer Balken beim booten, größeres Vista Logo vor dem Anmeldebildschirm, etc).
Insgesamt habe ich jetzt erstmal das nötigste was ich zum Arbeiten brauche installiert. Also das Visual Studio 2005, Office 2007 Beta, Opera, Trillian, Winamp, RssBandit und eigentlich auch WinTV. Womit wir bei den Problemen wären: RssBandit läuft immer noch nicht vernünftig und ist nicht durch die Menüs zu bedienen und WinTV läuft auch nicht, da ich eben eine Ur-alte Hauppauge PCI Karte habe, wofür selbstverständlich keine Vista Treiber verfügbar sind...
Ansonsten läuft es auf meinem System wirklich sehr flüssig, ich habe sogar das Gefühl es geht alles schneller als unter XP. Und das mit einem "Windows Experience Index" von 4,4 und das ist im gesamten nur das Minimum. Für RAM- und Festplattenperformance hat mein System sogar eine 5,0, bzw. 5,3 bekommen.

Das Bild habe ich übrigens mit dem Windows Vista "Snipping Tool" gemacht. Auch sehr nett.
Ab sofort gibt es MSDN Solve auch auf Deutsch! Dort gibt es kurze Codeclips, ähnlich wie Webcasts, zu einigen Interessanten Themen und auch sonst viel Wissen. Das besondere: Wenn man jetzt bis Oktober einige der Codeclips ansieht, kann man ein Visual Studio 2005 kostenlos bekommen!
In diesem MSDN Artikel beschreibt Jeff Prosise zehn häufige Fehlerquellen in ASP.NET Anwendungen. Insbesondere die auch in ASP.NET 2.0 (trotz Masterpages) häufig eingesetzte LoadControl Funktion kann wirklich tückisch in Verbindung mit dem OutputCache sein. Aber am besten selbst lesen und dazu lernen!
Nachdem ich seit einiger Zeit versuche ernshaft mit Office 2007 Beta zu arbeiten, musste ich einen scheinbaren Bug im PDF Export feststellen. Das Problem besteht darin, dass beim unveränderten speichern als PDF, die Schriftarten irgendwie merkwürdig aussehen (Vergleich: Text und Text wie er eigentlich aussehen sollte) Nach einigem suchen, entdeckte ich im Optionen Dialog, dass man dort das ISO 19005-1-kompatibel Häkchen setzen kann.
Danach wird dann der Text und die Schriftarten alle korrekt angezeigt! Aber danach wird die tolle SmartArt Grafik nicht mehr vernünftig angezeigt: SmartArt Grafik mit ISO Normalerweise sollte das so aussehen: SmartArt Grafik
Nach den Diskussionen, ob nun PDF Export ja (in der Beta 2), nein und dann doch wieder ja, hoffe ich natürlich, dass das Problem in der Final irgendwie behoben wird.
Download von den überlasteten Servern: 20 Stunden ISO brennen: 20 Minuten Vista installieren: 1 Stunde Tolle bunte grafische Effekte wie auf Mac OSX genießen: Zeitlos
Es ist soweit! Die erste öffentliche Beta von MS Office 2007 steht zum freien Download! Wie es mit Windows Vista aussieht ist bisher nicht bekannt... geplant war auch gestern, zum Beginn der WinHEC... An der Stelle überlege ich, ob ich nicht meine Diplomarbeit auch in Word 2007 schreiben werde... Naja, zumindest neben einer zweiten Version in Word 2003, bei einer Beta weiß man ja nie... Mehr zur Diplomarbeit und zu den Erfahrungen dabei mit Office 2007 demnächst (September 2006) in diesem Kino. Update: Wie ich gerade bei Heise gelesen habe, muss ich mir nicht mal antun, dass mit ISDN runterzuladen, sondern ich muss nur bis Samstag auf die Post warten!
Also habe gerade eine Singleton Klasse in C# erstellt, und wollte nun aber doch mal bei Google gucken, was denn so Standard ist...
Dabei bin ich auf mehrere Seiten gestoßen und bin mir nicht mehr sicher, was "gut" ist und was nicht.
Da hätten wir zunächst die "offizielle" MSDN Seite: MSDN: Implementing Singleton in C#
Dann eine andere, die aber recht seriös wirkt: Implementing the Singleton Pattern in C#
Leider weiß ich nicht was ich jetzt für "gut" halten soll... ich hab mich jetzt für:
private static readonly ServiceManager instance = new ServiceManager();entschieden, was auf der MSDN Seite als threadsafety steht, und auch auf der anderen Seite als Beispiel 4 angewendet wird. Nur das dort steht, dass man unbedingt einen static Constructor braucht, da der C# Compiler sonst die Klasse mit beforefieldinit markiert... sollte da jemand Licht ins dunkle bringen können, immer her damit!
Wie ich gestern im MCP Newsletter erfahren habe, hat MS wieder ein "2. Chance Angebot"... diesmal gilt das Angebot sogar recht lange wie ich finde.
Nämlich ab sofort bis zum 30. Juni 2006. Mehr Infos gibts hier: Zweite-Chance-Angebot
So, nachdem ich gelesen habe, dass es den IE7 als Beta 2 gibt, hab ich ihn mir mal runtergeladen ( Download)... nach einiger Zeit warten (ca 11MB) installation gestartet.
Folgende Dinge die mich stören:
1. Man muss den Rechner neu starten nach der Installation... (bleibt wohl nicht aus, da der IE7 den vorigen IE komplett killt)
2. Es wird ClearType im IE verwendet! Das lässt sich scheinbar auch nicht abstellen... Vor allem stört, dass jetzt auch Outlook und RSSBandit und alle anderen Anwendungen die das IE Control verwenden alles in ClearType anzeigen!
3. Das immer ein Tab geöffnet ist... bei Opera kann man auch einfach mal alle Tabs schließen...
Was das Design angeht, ist es aber ganz nett ( Screenshot auf Heise.de), obwohl ich auch weiterhin Opera einsetzen werde!
Hmm... Irgendwie hab ich gerad festgestellt, dass die bisherigen MSDN Webcasts (http://www.microsoft.com/germany/msdn/webcasts/bisherige.mspx) nicht mehr runtergeladen werden können... Weiß jemand warum? Die Seite sieht noch gleich aus, nur nach dem Klicks auf Download landet man auf der Event-Anmeldeseite...
Schade, wollte mir ein paar für die Zugfahrt Sonntag nach Leipzig mitnehmen...
|