While setting up Microsoft Team Foundation Server 2010 Beta 2 one might into an non obvious issue with user rights. The error observed would look the following:

New Project TFS Error TF30224

The  TFS installation considered is a single machine installation with SQL Server Reporting and Analysis services and SharePoint Services installed during the TFS installation.

The full descriptions of the error is:

Error
TF30224: Failed to retrieve projects from the report server. Please check that the SQL Server Reporting Services Web and Windows services are running and you have sufficient privileges for creating a project.

Explanation
The Project Creation Wizard encountered a problem while creating reports on the SQL Server Reporting Services on http://coruscant/ReportServer/ReportService2005.asmx. The reason for the failure cannot be determined at this time. Because the operation failed, the wizard was not able to finish creating the SQL Server Reporting Services site.

User Action
Contact the administrator for the SQL Server Reporting Services on http://coruscant/ReportServer/ReportService2005.asmx to confirm that the SQL Server Reporting Services server is running and you have sufficient privileges to create a project . Your user account on SQL Server Reporting Services must have Content Manager permission to create a new project. Also, you might find additional helpful information in the project creation log. The log shows each action taken by the wizard at the time of the failure and may include additional details about the error.

A wild guess might be checking all rights for SQL Server, SharePoint sites, SQL Server Reporting Services etc. Pat Ramadass comes up with the right hint that origins from the previous TFS version.

First of all do not look for the Reporting Service Configuration Manager. Go straight to http://localhost/Reports/ (logged in on your TFS server machine with administrator rights). You will get the SQL Server Reporting Services site. Select the Properties page and click on New Role Assignment.

SQL Server Repoting Services - Home

Now add exactly the user (or group) you tried creating the TFS Team Project with. Select at least Content Manager and confirm by pressing OK.

SQL Server Reporting Services - New Role Assignment

Go back to you local machine and try to create the TFS Team Project again. The users should now have sufficient rights to create the project.

Posted at Thursday, January 21, 2010 1:16:56 AM (W. Europe Standard Time, UTC+01:00) 
Comments [0] #      | 

There is an urban legend that Google Calendar Sync would not run on Windows 7. Indeed, if you follow the installation instructions Google Calendar Sync will first ask you for your credentials and consequently fail to connect to Google Calendar. In the following you’ll find an solution how to use Google Calendar Sync with Microsoft Outlook 2007 on a Windows 7 system that that is provided under a works on my machine premise.

Google Calendar Sync 0.9.3.5

Once saved, Google Calendar Sync will try to connect but fail with error 2006. There is not many information about this error beside various frustrated users ranting about this and some statements that the current version of Google Calendar Sync (0.9.3.5) is not supported under Windows 7 yet.

Google Calendar Sync Error 2006

In the current case we will even run Google Calendar Sync on a Windows 7 64-bit system. Before you continue, make sure you exit Google Calendar Sync. First of all open a Explorer window and navigate to C:\Program Files (x86)\Google\Google Calendar Sync or C:\Program Files\Google\Google Calendar Sync on a 32-bit Windows 7 system.

GoogleCalendarSync.exe

Right click on GoogleCalendarSync.exe and select Properties. Now select the Compatibility tab, check the Run this program in compatibility mode for and choose Windows Vista (Service Pack 2) from the drop down list. Click on OK and restart Google Calendar Sync either from your desktop icon or from the start menu entry.

GoogleCalndarSync.exe Properties - Compatibility Tab

Once restarted you can happily sync Google Calendar with Microsoft Outlook 2007 on (even a 64-bit) Windows 7 system.

Google Calendar Sync running on Windows 7

The Compatibility mode of Windows is a great feature to make usage of legacy programs that have not been or will never bee updated to the latest Windows version. Since Windows 7 even mode modes (including Windows Server) back to Windows 95 are supported. The number of supported versions might vary depending on the Windows 7 version you use, however, the Vista and XP mode should always be available.

Posted at Saturday, January 16, 2010 4:35:58 PM (W. Europe Standard Time, UTC+01:00) 
Comments [0] #      | 

Microsoft’s Windows 7, Outlook 2007 and Adobe’s Acrobat just do not play well together on 64-bit systems. After receiving a PDF document via email, Outlook usually cannot display the PDF.

Outlook PDF Preview

When selection Preview File, you will simply get the message PDF Preview Handler for Vista (Vista!?) caused an error.

Outlook PDF Preview Handler for Vista

For now, the only way to view the PDF file is to open it in an external PDF reader. Leo Davidson provides a fix that finally solves this issue. Just get the fix, and run the Adobe Reader preview handler x64 fixer.exe which is included in the file.

Leo Davidson's Preview Handler Fix 

After applying the fix, both, the 32-bit AppID as well as the 64-bit AppID will show the value as correct.

Leo Davidson's Preview Handler Fix

No reboot required, just go back to Outlook (worked even without restarting the application) and et voilà.

Fixed Outlook PDF Preview

Thanks to Leo Davidson, who provides this outstanding fix. Well played.

Posted at Tuesday, January 12, 2010 12:49:18 AM (W. Europe Standard Time, UTC+01:00) 
Comments [0] #      | 

One major drawback of ReSharper 4.5 was the fact that when navigating to a compiled class, ReSharper always opened the Visual Studio Object Bowser. However, personally I prefer the Metadata View of Visual Studio:

Visual Studio Metadata View 

With Version 5.0 ReSharper (currently available as EAP) there comes a major improvement. The first time you navigate to a pre-compiled class, ReSharper offers you to choose your favorite view: Object Browser, Metada View or directly the .NET framework sources.

JetBrains ReSharper 5.0

In case your change your mind (or the selected sources is not available) you can define the order for the code navigation within Visual Studio at the ReSharper Options from ReSharper / Options… / Tools / External sources:

ReSharper Options: External sources

Flattr this
Posted at Sunday, December 27, 2009 5:35:48 PM (W. Europe Standard Time, UTC+01:00) 
Comments [0] #      | 

If you experience issues with a USB device not being recognized under Windows 7, there might be a simple solution to solve this. For example the MSI USB 2.0 All IN 1 Card Reader aka MSI StarReader is recognized as eHome Infrared Receiver (USBCIR) using Windows 7. The device works great using Windows Vista or even the Windows 7 pre-release versions. Unfortunately, with the final Windows 7 the device just won’t work.

MSI USB 2.0 All IN 1 Card Reader

A quick look into the Device Manager will show that the device is recognized as eHome Infrared Receiver (USBCIR). When connecting the first time Windows 7 won’t give any notice that the installation of the driver failed or that the device is not ready to use. It will simply not work.

Device Manager

This seems to be known problem, however, there is no need to wait for a Software Update from Microsoft. The solution is to manually choose the device.

  1. Start Device Manager
  2. Right-click the eHome Infrared Receiver (USBCIR) entry
  3. Select Update Driver Software
  4. Choose Browse my computer for driver software
  5. Choose Let me pick from a list of device drivers on my computer
  6. Make sure the Show compatible hardware box is checked
  7. Select the USB Composite Device and you are done

Show compatible hardware

After a few seconds the driver should be installed and the device should be ready.

Driver Software Installation

Flattr this
Posted at Saturday, December 12, 2009 11:12:06 PM (W. Europe Standard Time, UTC+01:00) 
Comments [8] #      | 

AWStats is a free, Perl-based analyzer for log files. To get results quickly on a Windows Server 2008 with IIS 7 you only have to follow a few steps. These are not well documented in the AWStats documentation and require some time of research. This post will show you how to set up AWStats with IIS7 in only a few minutes.

  1. Install Perl, e.g. ActivePerl. There are 32-bit and 64-bit versions available. Make sure that Perl is added to your PATH environmental variable. The ActivePerl installer usually provides this option during the installation.

  2. Install AWStats. Remember the path AWStats is installed. Paths used below are based on the installation folder of AWStats. In this example we use c:\awstats.

  3. Run the configuration script at c:\awstats\tools\awstats_configration.pl. Follow the on screen instructions. This will create a default configuration file in c:\awstats\wwwroot\cgi-bin e.g. called awstats.www.example.org.config. The site name www.example.org depends on whatever site name was provided while running the script. When asked for the Apache Web server path type in none.

    AWStats Configuration File

  4. Open the configuration file awstats.www.example.org.config with any text editor of your choice.

  5. AWStats already supports IIS, however, it is required to tweak the config file. First change the entry for LogFile. Log files for IIS might be found at c:\inetpub\logs\LogFiles\W3SVCNNN where NNN is a different number for each web site, IIS creates log files for. Change the entry to

    LogFile=”c:\awstats\tools\logresolvemerge.pl c:\inetpub\logs\LogFiles\W3SVC1\*.log |”

    This will merge all log files for a site provided by IIS. Adjust the paths corresponding to your installations and desired log file folders.

  6. The AWStats configuration file offers the possibility to set the LogFormat to IIS (LogFormat=2), however, the log entries provided by a standard installation of IIS 7 won’t match. The AWStats documentation recommends to change the settings of IIS. The change will take effect only after restarting the Web site and is only valid for entries after that particular moment. Consequently, this is not an option if you are going to analyze the logs of the last 12 months where the original settings were used. To make AWStats work with the standard log format of IIS 7 change the LogFormat  to

    LogFormat=”%time2 %other %method %url %other %query %other %host %other %code % %other %other %bytesd”

  7. Change SiteDomain and HostAliases to meet the settings of your site.

  8. Change to c:\awstats\wwwroot\cgi-bin\ and run

    awstats.pl -config=www.example.org

    This will build the statistics database for AWStats.

  9. To create output run

    awstats.pl -config=www.example.org –output –staticlinks > …\example_org_stats.html

  10. Not that example_org_stats.html is created one folder up. In case you do miss this, the output will not work correctly until you adapt the entries for DirCgi and DirIcons in the configuration file.

  11. The output file is now located in c:\awstats\wwwroot. You might want to create a Virtual Directory or set up a Web site to view the reports via the Web or your Intranet.

    AWStats Output

Repeat steps 3-7 fore each site you want to create reports for. Repeat step 8 and 9 every time you want to create a new report.

Posted at Sunday, August 30, 2009 4:06:40 PM (W. Europe Daylight Time, UTC+02:00) 
Comments [7] #      | 

My Web Page Starter Kit is a lightweight content management system, entirely written in ASP.NET 2.0. It comes with a wide range of components that can be easily arranged and set up. However, it seems there is no possibility to include external application into the navigation structure of MWPSK.

In the following example you will learn how to integrate a application using the URI http://blog.example.org into a website using MWPSK at http://www.example.org.

Log into the site and navigate to select Administration / Pages and Navigation. Select New Page to create a new

My Web Page Starer Kit - New Page

Choose a virtual path such as blog. This will allow you to use a new URI in the form of http://www.example.org/blog.aspx.

Now open the global.asax file located in the root folder of your MWPSK installation and add the following method.

void Application_BeginRequest(object sender, EventArgs e)
{
    if (HttpContext.Current.Request.Url.ToString().ToLower().Contains
("www.example.org/blog.aspx")) { HttpContext.Current.Response.Status = "301 Moved Permanently"; HttpContext.Current.Response.AddHeader("Location", Request.Url.ToString().ToLower().Replace( "www.example.org/blog.aspx", "blog.example.org/")); } }
This will cause an URL rewrite of the HTTP-request, which is then sent to the external application at http://blog.example.org.
Posted at Sunday, August 23, 2009 8:06:54 AM (W. Europe Daylight Time, UTC+02:00) 
Comments [0] #      | 

After upgrading Windows Vista to Windows 7 you might encounter an issue with VMware Workstation and its network adapter.

VMware Workstation Error Message

When setting up a NAT or bridged network connection in VMware Workstation it shows a message telling

The virtual network drivers on the host are incompatible with the installed VMware application. Expected version 5. Please reinstall the product. Failed to connect virtual device Ethernet0.

Make sure all your virtual machines are powered off and quit VMware Workstation. Open a command shell as administrator and follow the steps below.

First cd %windir%\system32\drivers, check for the file vmnetadapter.sys, right-click it, select Details and check its version. It should be 4.0.2.0. If the file is not there,

cd "%ProgramFiles(x86)%\VMware\VMware Workstation"

rundll32 setupapi,InstallHinfSection VMnetAdapter1.Install 128 %CD%\netadapter.inf

vnetlib -- install devices

This will install the required adapters and devices. Do again a cd %windir%\system32\drivers and check for the First cd %windir%\system32\drivers, check for the file vmnetadapter.sys file.

vmnetadapter.sys

After a reboot of the host system, the NAT settings for the VMware network adapters should work again. Switching to bridged mode will probably result in another message.

VMware Workstation Error Message

Reason for the message saying

The network bridge on device VMnet0 is not running.  The virtual machine will not be able to communicate with the host or with other machines on your network.
Failed to connect virtual device Ethernet0.

might be the missing VMware Bridge Protocol on the according host network adapter.

Got to Network and Sharing Center and select Change adapter settings. Choose the network connection you want to use with your VMware network adapter, right-click, select Properties, Install, Service and finally Add. This will allow you to select the VMware Bridge Protocol. In case the entry is not listed, select Have Disk… and navigate to %ProgramFiles(x86)%\VMware\VMware Workstation.

VMware Bridge Protocol

After installing  the VMware Bridge Protocol restart the VMware Workstation and choose the bridged mode for the network adapter.

VMware Network Adapter

Flattr this
Posted at Monday, August 17, 2009 9:52:47 AM (W. Europe Daylight Time, UTC+02:00) 
Comments [1] #      | 

For a while, I am working on a project where I use WPF to its limits. Unfortunately, Visual Studio has its limitations in rendering the stuff we do here.

We started with Visual Studio 2005, without any native support for XAML in Visual Studio doing a lot of the work in Notepad2, using one CTP after another including Visual Studio 2008 Beta 2 up to the final version of Visual Studio 2008. Things became better over time, however, I wished simply to switch off the Design view in in Visual Studio.

Hidden in the Visual Studio settings, there is this switch A hidden jewel for anybody working a lot with the WPF markup language in Visual Studio.

You’ll find it at: Tools / Options… / Text Editor / XAML / Miscellaneous

Open XAML always in XAML view in Visual Studio

Posted at Wednesday, February 11, 2009 6:05:55 PM (W. Europe Standard Time, UTC+01:00) 
Comments [1] #      | 

Another nice feature, unrevealed in Internet Explorer 7: Adding your own search providers is quite easy. When you select the drop down menu at your search box, you can select your currently installed search providers.

Search Providers Menu

To add more, select Find More Providers… from the menu.

Add Search Providers to Internet Explorer

Now, go to your favorite search engine and perform a search for TEST. I did this for the Beolingus translation provider. Paste the URL from the previous source and specify a name for your new search provider.

Create your own Search Provider

That’s the XML used for the installation. Press install and can directly access this search provider using the search box in IE 7.

<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">
  <ShortName>Beolingus</ShortName> 
  <Description>Beolingus provider</Description> 
  <InputEncoding>UTF-8</InputEncoding> 
  <Url type="text/html" template="http://dict.tu-chemnitz.de/dings.cgi?lang=en&service=deen&opterrors=0&optpro=0&query={searchTerms}&iservice=&comment=" /> 
</OpenSearchDescription>

If you want to modify the settings later, you can do so using Tools / Internet Options / Change Search Defaults Settings.

It was the first time I played with these settings of Internet Explorer and I am quite surprised in a positive way about it.

Change Search Defaults Dialog

Posted at Saturday, December 27, 2008 10:09:01 AM (W. Europe Standard Time, UTC+01:00) 
Comments [1] #      | 

We just spend this afternoon trying to upgrade a Xbox 360 to a 60GB HDD with a friend, called “The-one-without-a-Web-presence”. Without success, yet. Somewhat frustrated, I started doing some research on this to understand. Some background information might be helpful.

I just upgraded my Xbox 360 to 120GB. That went quite well. After fighting an epic battle with the blister box, I obtained three essential pieces as reward: the HDD, some kind of odd cable and a green CD/DVD. One end of the cable to the Xbox, the other one to the back of the Xbox. There is only way how it fits, so its quite idiot-proof. Then you insert the disc.

Data Migration Kit

The next few steps are shown on the screen. Confirm the transfer and, depending on the amount of data on your old hard disc, the transfer might take up to 1 hours 30 minutes from the 20 GB disc. Transfer works from one way only. This means, once the transfer is completed, your old disc will be wiped out. It will be a plain disc, just with the XNE (or dashboard if not updated, yet) on it. No profiles, no save games.

The trasfer seems to work only from a smaller to a larger disc. This means

20GB –> 60GB
20GB –> 120GB
60GB –> 120GB

I was also told that the the same size of a HDD is supported. This means the following might also work (not confirmed):

20GB –> 20GB
60GB –> 60GB
120GB –> 120GB

Said that, my friend “The-one-without-a-Web-presence” bought the 60GB Live Starter Kit. That’s a quite fair deal including a 60GB HDD, a head set and three months of gold subscription and a Ethernet cable. He was never live before, so the three months of gold subscription was a reason to buy this kit as he wants to start playing live (Do you get it? Live Starter Kit? For those who want start being live?). Besides this, he gains much more reward for fighting the blister box.

What’s not included in this package is a Data Migration Kit (containing the odd cable as well as the CD/DVD). So he asked me, if we could use my kit. After several attempts we finally figured out: Yes, we could use my kit, however, it does not work. What went wrong at the end? Everything was connected properly, we tried several permutations in connection orders and we read through a whole bunch of support articles.

The simplest way is contacting Microsoft Support and asking for the Data Migration Kit. To do so you simply have to follow the steps indicated in this support article. Obviously we already have an Data  Migration Kit from my 120GB disc that does not work.

The answer seems pretty simple: At the time when the 120GB disc was released, there was no 60GB disc available.  That way, the software does only support the copy process to a 120GB disc. It seems this as a known issue and meanwhile Microsoft released a newer software that also supports this process to 60GB discs.

this means, the software only can process the following transfers:

20GB –> 60GB
20GB –> 120GB
60GB –> 120GB

However, you might be not in luck and you end up with a old software version indeed. Having a newer version this will be no problem at all. How can you tell what version you have?

Hard Disc Transfer Disc

Check out the number on the right bottom of the green CD/DVD being part of your Data Migration Kit. Does it end with “–01”?  Bad luck then. That’s the old version only supporting 120GB discs. Give a call to your local Microsoft support and ask for a newer version or ask your friends if anybody has the newer version. Now you should be able to identify the right disc.

Personally, I would recommend to ask if anybody of your friends has the disc and the odd cable. You’ll need this cable/software only once and ordering it for a single transfer is a waste of resources. As there is no way back now cable will be of no use after the transfer other than giving it to a friend.

Why this confusion? The 60GB Live Starter Kit does not include a cable/software as it is meant to be for Xbox 360 Arcade users who want to migrate. So It might be called “Xbox 360 Arcade 60GB Upgrade Kit” to avoid some confusion for those how want start with Xbox live using the “Xbox 60GB Live Starter Kit”.

Posted at Sunday, December 21, 2008 9:28:21 PM (W. Europe Standard Time, UTC+01:00) 
Comments [1] #      | 

This evening, I moved my thesis documents and all it's dependencies to a new machine. Using Windows Vista, most documents are located in %UserProfile%. Most of them, but not all. EndNote X stores its styles in its program folder by default. The styles are located in %ProgramFiles (x86)%\EndNote X\Styles (on my X64 system). To change this, go to Edit / Preferences... / Folder Locations and change the Style Folder option.

EndNote Styles 

It's a simple tweak, however, it allows you to manage and backup your own styles in a much more efficient way.

Posted at Tuesday, December 02, 2008 11:31:09 PM (W. Europe Standard Time, UTC+01:00) 
Comments [0] #      | 

It's quite annoying to keep the Blogroll on your weblog up-to-date while using offline readers. Using RSSBandit and dasBlog">dasBlog brings a quite handy solution to you. First of all, open your dasBlog configuration and check the 'Enable Config Web Service' option.

Enable Config Web Service

Now open the 'Options' dialog of RSSBadit and select the 'Remote Storage' pane. Here check 'Use remote storage', select 'dasBlog' from the drop-down list and fill out the required login credentials. Your API usually is located at something like http://YouBlog/ConfigEditingService.asmx'. 

RSSBandit Options

To sync, simply select the 'Upload Feeds...' or 'Download Feeds...' command from the tools menu.

Upload and Download Feeds Option

No idea, why I haven't seen this, yet. But this option finally allows my keep my online Blogroll up-to-date with a few mouse clicks.

Sync'ed blogrolls

Posted at Monday, September 15, 2008 1:07:41 PM (W. Europe Daylight Time, UTC+02:00) 
Comments [0] #      | 

Today, I run into a quite annoying error message while developing a application for Windows Mobile 6.1.

"An error message is available for this exception but cannot be displayed because these messages are optional and are not currently installed on this device. Please install ‘NETCFv35.Messages.EN.wm.cab’ for Windows Mobile 5.0 and above or  ‘NETCFv35.Messages.EN.cab’ for other platforms. Restart the application to see the message."

The required files are located at C:\Program Files (x86)\Microsoft.NET\SDK\CompactFramework\v3.5 \WindowsCE\Diagnostics, assuming you have installed the Windows Mobile SDK. I copied the file NETCFv35.Messages.EN.wm.cab to my device and run the installation. So far it worked fine, until the same exception popped up again.

Using the .NET CF Logger, from Power Toys for .NET Compact Framework 3.5, I was able to track it down to the following error:

"Failed to load [System.SR, Version=3.5.0.0, Culture=neutral, PublicKeyToken=969DB8053D3322AC]"

To do so, you choose the device you want to log and select which logging options you want. The log files can be found then in your application folder on the mobile device.

.NET CF Logging Options

With this new input, I found Martijn Hoogendoorn's blog entry. He came across the same issue some time ago and provided a solution to this miracle. If you have a look inside the .cab file, check the _setup.xml file.

 NETCFv35.Messages.EN.wm.cab _setup.xml 

Extract and rename the file SYCCFA~1.001 to System.SR.dll and include it into your project. Rebuild, deploy and debug it - it should work fine.

 

 

Posted at Monday, September 08, 2008 2:49:47 PM (W. Europe Daylight Time, UTC+02:00) 
Comments [3] #      | 

Simple but powerful: http://live.sysinternals.com

What they say:

"This is a file share allowing access to all Sysinternals utilities. We have developed this to test an alternate distribution mechanism for our utilities. This will allow you to run these tools from any computer connected to the Internet without having to navigate to a webpage, download and extract the zip file."

What you get:

live.sysinternals.com

Posted at Tuesday, August 05, 2008 11:05:46 AM (W. Europe Daylight Time, UTC+02:00) 
Comments [0] #      | 

Did you now where to find the shortcuts for Word 2007? Pressing F1 does not provide too much help. With some luck you end up at this Knowledge Base article  providing you this list:

 
   All Caps                      CTRL+SHIFT+A
   Annotation                    ALT+CTRL+M
   App Maximize                  ALT+F10
   App Restore                   ALT+F5
   Apply Heading1                ALT+CTRL+1
   Apply Heading2                ALT+CTRL+2
   Apply Heading3                ALT+CTRL+3
   Apply List Bullet             CTRL+SHIFT+L
   Auto Format                   ALT+CTRL+K
   Auto Text                     F3 or ALT+CTRL+V
   Bold                          CTRL+B or CTRL+SHIFT+B
   Bookmark                      CTRL+SHIFT+F5
   Browse Next                   CTRL+PAGE DOWN
   Browse Previous               CTRL+PAGE UP
   Browse Sel                    ALT+CTRL+HOME
   Cancel                        ESC
   Center Para                   CTRL+E
   Change Case                   SHIFT+F3
   Char Left                     LEFT
   Char Left Extend              SHIFT+LEFT
   Char Right                    RIGHT
   Char Right Extend             SHIFT+RIGHT
   Clear                         DELETE
   Close or Exit                 ALT+F4
   Close Pane                    ALT+SHIFT+C
   Column Break                  CTRL+SHIFT+ENTER
   Column Select                 CTRL+SHIFT+F8
   Copy                          CTRL+C or CTRL+INSERT
   Copy Format                   CTRL+SHIFT+C
   Copy Text                     SHIFT+F2
   Create Auto Text              ALT+F3
   Customize Add Menu            ALT+CTRL+=
   Customize Keyboard            ALT+CTRL+NUM +
   Customize Remove Menu         ALT+CTRL+-
   Cut                           CTRL+X or SHIFT+DELETE
   Date Field                    ALT+SHIFT+D
   Delete Back Word              CTRL+BACKSPACE
   Delete Word                   CTRL+DELETE
   Dictionary                    ALT+SHIFT+F7
   Do Field Click                ALT+SHIFT+F9
   Doc Close                     CTRL+W or CTRL+F4
   Doc Maximize                  CTRL+F10
   Doc Move                      CTRL+F7
   Doc Restore                   CTRL+F5
   Doc Size                      CTRL+F8
   Doc Split                     ALT+CTRL+S
   Double Underline              CTRL+SHIFT+D
   End of Column                 ALT+PAGE DOWN
   End of Column                 ALT+SHIFT+PAGE DOWN
   End of Doc Extend             CTRL+SHIFT+END
   End of Document               CTRL+END
   End of Line                   END
   End of Line Extend            SHIFT+END
   End of Row                    ALT+END
   End of Row                    ALT+SHIFT+END
   End of Window                 ALT+CTRL+PAGE DOWN
   End of Window Extend          ALT+CTRL+SHIFT+PAGE DOWN
   Endnote Now                   ALT+CTRL+D
   Extend Selection              F8
   Field Chars                   CTRL+F9
   Field Codes                   ALT+F9
   Find                          CTRL+F
   Font                          CTRL+D or CTRL+SHIFT+F
   Font Size Select              CTRL+SHIFT+P
   Footnote Now                  ALT+CTRL+F
   Go Back                       SHIFT+F5 or ALT+CTRL+Z
   Go To                         CTRL+G or F5
   Grow Font                     CTRL+SHIFT+.
   Grow Font One Point           CTRL+]
   Hanging Indent                CTRL+T
   Header Footer Link            ALT+SHIFT+R
   Help                          F1
   Hidden                        CTRL+SHIFT+H
   Hyperlink                     CTRL+K
   Indent                        CTRL+M
   Italic                        CTRL+I or CTRL+SHIFT+I
   Justify Para                  CTRL+J
   Left Para                     CTRL+L
   Line Down                     DOWN
   Line Down Extend              SHIFT+DOWN
   Line Up                       UP
   Line Up Extend                SHIFT+UP
   List Num Field                ALT+CTRL+L
   Lock Fields                   CTRL+3 or CTRL+F11
   Macro                         ALT+F8
   Mail Merge Check              ALT+SHIFT+K
   Mail Merge Edit Data Source   ALT+SHIFT+E 
   Mail Merge to Doc             ALT+SHIFT+N
   Mail Merge to Printer         ALT+SHIFT+M
   Mark Citation                 ALT+SHIFT+I
   Mark Index Entry              ALT+SHIFT+X
   Mark Table of Contents Entry  ALT+SHIFT+O
   Menu Mode                     F10
   Merge Field                   ALT+SHIFT+F
   Microsoft Script Editor       ALT+SHIFT+F11
   Microsoft System Info         ALT+CTRL+F1
   Move Text                     F2
   New                           CTRL+N
   Next Cell                     TAB
   Next Field                    F11 or ALT+F1
   Next Misspelling              ALT+F7
   Next Object                   ALT+DOWN
   Next Window                   CTRL+F6 or ALT+F6
   Normal                        ALT+CTRL+N
   Normal Style                  CTRL+SHIFT+N or ALT+SHIFT+CLEAR (NUM 5)
   Open                          CTRL+O or CTRL+F12 or ALT+CTRL+F2
   Open or Close Up Para         CTRL+0
   Other Pane                    F6 or SHIFT+F6
   Outline                       ALT+CTRL+O
   Outline Collapse              ALT+SHIFT+- or ALT+SHIFT+NUM -
   Outline Demote                ALT+SHIFT+RIGHT
   Outline Expand                ALT+SHIFT+=
   Outline Expand                ALT+SHIFT+NUM +
   Outline Move Down             ALT+SHIFT+DOWN
   Outline Move Up               ALT+SHIFT+UP
   Outline Promote               ALT+SHIFT+LEFT
   Outline Show First Line       ALT+SHIFT+L
   Overtype                      INSERT
   Page                          ALT+CTRL+P
   Page Break                    CTRL+ENTER
   Page Down                     PAGE DOWN
   Page Down Extend              SHIFT+PAGE DOWN
   Page Field                    ALT+SHIFT+P
   Page Up                       PAGE UP
   Page Up Extend                SHIFT+PAGE UP
   Para Down                     CTRL+DOWN
   Para Down Extend              CTRL+SHIFT+DOWN
   Para Up                       CTRL+UP
   Para Up Extend                CTRL+SHIFT+UP
   Paste                         CTRL+V or SHIFT+INSERT
   Paste Format                  CTRL+SHIFT+V
   Prev Cell                     SHIFT+TAB
   Prev Field                    SHIFT+F11 or ALT+SHIFT+F1
   Prev Object                   ALT+UP
   Prev Window                   CTRL+SHIFT+F6 or ALT+SHIFT+F6
   Print                         CTRL+P or CTRL+SHIFT+F12
   Print Preview                 CTRL+F2 or ALT+CTRL+I
   Proofing                      F7
   Redo                          ALT+SHIFT+BACKSPACE
   Redo or Repeat                CTRL+Y or F4 or ALT+ENTER
   Repeat Find                   SHIFT+F4 or ALT+CTRL+Y
   Replace                       CTRL+H
   Reset Char                    CTRL+SPACE or CTRL+SHIFT+Z
   Reset Para                    CTRL+Q
   Revision Marks Toggle         CTRL+SHIFT+E
   Right Para                    CTRL+R
   Save                          CTRL+S or SHIFT+F12 or ALT+SHIFT+F2
   Save As                       F12
   Select All                    CTRL+A or CTRL+CLEAR (NUM 5) or CTRL+NUM 5
   Select Table                  ALT+CLEAR (NUM 5)
   Show All                      CTRL+SHIFT+8
   Show All Headings             ALT+SHIFT+A
   Show Heading1                 ALT+SHIFT+1
   Show Heading2                 ALT+SHIFT+2
   Show Heading3                 ALT+SHIFT+3
   Show Heading4                 ALT+SHIFT+4
   Show Heading5                 ALT+SHIFT+5
   Show Heading6                 ALT+SHIFT+6
   Show Heading7                 ALT+SHIFT+7
   Show Heading8                 ALT+SHIFT+8
   Show Heading9                 ALT+SHIFT+9
   Shrink Font                   CTRL+SHIFT+,
   Shrink Font One Point         CTRL+[
   Small Caps                    CTRL+SHIFT+K
   Space Para1                   CTRL+1
   Space Para15                  CTRL+5
   Space Para2                   CTRL+2
   Spike                         CTRL+SHIFT+F3 or CTRL+F3
   Start of Column               ALT+PAGE UP
   Start of Column               ALT+SHIFT+PAGE UP
   Start of Doc Extend           CTRL+SHIFT+HOME
   Start of Document             CTRL+HOME
   Start of Line                 HOME
   Start of Line Extend          SHIFT+HOME
   Start of Row                  ALT+HOME
   Start of Row                  ALT+SHIFT+HOME
   Start of Window               ALT+CTRL+PAGE UP
   Start of Window Extend        ALT+CTRL+SHIFT+PAGE UP
   Style                         CTRL+SHIFT+S
   Subscript                     CTRL+=
   Superscript                   CTRL+SHIFT+=
   Symbol Font                   CTRL+SHIFT+Q
   Thesaurus                     SHIFT+F7
   Time Field                    ALT+SHIFT+T
   Toggle Field Display          SHIFT+F9
   Toggle Master Subdocs         CTRL+\ 
   Tool                          SHIFT+F1
   Un Hang                       CTRL+SHIFT+T
   Un Indent                     CTRL+SHIFT+M
   Underline                     CTRL+U or CTRL+SHIFT+U
   Undo                          CTRL+Z or ALT+BACKSPACE
   Unlink Fields                 CTRL+6 or CTRL+SHIFT+F9
   Unlock Fields                 CTRL+4 or CTRL+SHIFT+F11
   Update Auto Format            ALT+CTRL+U
   Update Fields                 F9 or ALT+SHIFT+U
   Update Source                 CTRL+SHIFT+F7
   VBCode                        ALT+F11
   Web Go Back                   ALT+LEFT
   Web Go Forward                ALT+RIGHT
   Word Left                     CTRL+LEFT
   Word Left Extend              CTRL+SHIFT+LEFT
   Word Right                    CTRL+RIGHT
   Word Right Extend             CTRL+SHIFT+RIGHT
   Word Underline                CTRL+SHIFT+W
Posted at Thursday, July 31, 2008 7:07:15 PM (W. Europe Daylight Time, UTC+02:00) 
Comments [0] #      | 

Since running my own mail server I am bombed with SPAM. With the newly released Mercury/32 v4.61 I also decided to install SpamHalter. If you have never worked with this before, you might be as lost as I was in the beginning. So, here  a few tips to get started easily.

After installing the latest Mercury/32, the setup will probably ask you to install SpamHalter among other plug-ins. To get it running quickly, get the words4.zip file from the SpamHalter web site. Start the SpamHalterTools.exe from the Mercury directory and import the database.

SpamHalter: Merge Word Database

At first you have to enable the '+' forms within Mercury. You'll find this option at the 'Advanced' tab at the 'Mercury Core Module Configuration'.

image

Now, you define two local mailboxes for SPAM and NOSPAM corrections:

SPAM/NOSPAM Correction Mailbox

The correction mailboxes must be specified within the SpamHalter settings on the 'Basic Setting' tab.

SpamHalter Basic Settings

I actually was not sure, so I created also the corresponding aliases for those two mailboxes: Maybe this might work without, but since I am running this mail server for multiple DNS entries, I wanted to be sure.

If SPAM is detected by SpamHalter, you'll get the corresponding header information that can be evaluated, e.g. using Rules within Microsoft Outlook.

Message Header Information

The mailboxes you've created before are used to correct false positives or missed SPAM. Some accidentally as SPAM classified mail can just be forwarded to the NOSPAM mailbox created before to teach the system about this mail. Not recognized SPAM mails are sent to the SPAM mailbox to get processed. Simply add the password you have chosen before to enable the remote

Correct False Positives

Following these steps you get a quite reliable system within a few minutes. After sending couple of SPAM mails to the system it already started to recognize German SPAM.

There is much more to tweak on the system, but this should be enough to get a fast satart with SpamHalter. To get a more detailed instruction read the original documentation [pdf] and the web page.

Posted at Monday, June 23, 2008 2:31:04 AM (W. Europe Daylight Time, UTC+02:00) 
Comments [0] #      | 

This post will give some insight into the distributed version control ad the Distributed and Self-organizing Systems Group. Usually, I am keen about trying out new things, e.g. distributed version control systems such as GIT, Mercurial or Bazaar. However, currently the group's infrastructure is set up with Subversion as internal revision control system.

For the next few months we will start an evaluation phase with the students, working on the WebComposition/DGS approach, based on a distributed version control concept. Core components of the WebComposition project are branched into a dedicated student branch where all students can commit changes. Based on this branch each student creates his or her private branch for local changes.

The coordinator (usually some DSS staff) takes care of regular forward integration of the core components into the student branch. Each student in turn is responsible for forward integration into his or her own branch.

Changes can be submitted after testing and evaluation back into the central student branch by each student performing backward integration. The group working on the project has to agree in the LAKS meeting on the change before backward integrating the updates.

The coordinator finally takes care if these changes are also backward integrated into the original project trunk.

Distributed Version Control at the DSS 

Step 1: Create a local working copy

First, look for a place where to checkout the working copy. Create a folder, e.g. branches\students and use Tortoise to checkout a working copy.

Initial Checkout

Select the student branch and the local folder where to store the working copy to start the checkout.

Branch 

After the checkout is finished, you should will have a local working copy of the student branch.

 Checkout Complete

Step 2. Create a private branch

Select 'Branch/tag' from the context menu of your working copy.

Branch

Use the path of your private project within the repository to create the branch.

image

Step 3: Forward integrate changes from the student branch

When the student branch was updated you might be interested in getting these updates into your private branch. To forward integrate these changes into your private branch, select the folder where your local working copy lives, and use the Tortoise context menu to select 'Merge...'.

Merge Branches

Select the repository folder you want to forward integrate Probably this will be the student branch - the paths in the screenshot below will thus differ from yours. Select the revision from where the forward integration should start. Now select the revision where it should end. Usually, this will be the head revision. After merging submit the changes of your working copy to the repository and you are done.

image

To get some more information on Subversion, or to learn how to perform the steps above on command line, refer the Subversion book.

Posted at Sunday, April 20, 2008 12:58:13 AM (W. Europe Daylight Time, UTC+02:00) 
Comments [4] #      | 

Here we go...

Install Windows Server 2008

You probably run into the same problem that Windows Server 2008 won't be able to recognize the virtual hard disk you have planned to installed it on. Get the corresponding SCSI drivers as floppy image from the VMware site. Select the image and connect the drive.

Mounted SCSI Drivers 

Now say 'Browse' and choose drive 'A:' - don't forget: After selecting the .flp image you also have to connect the drive. Otherwise Windows cannot read the device.

VMware SCSI Drivers

Click on 'Next' and after a few seconds the hard disk will be found. The currently available drivers for Windows Server 2003 seem to work fine also for Windows Server 2008.

Virtual HDD for Windows Server 2008

Installing the VMware Tools might be a good idea. You can find the image at /usr/lib/vmware/isoimages/windows.iso or just install them from the VMware management console's menu. While the image is mounted go to 'Device Manager' and install the drivers for the network adapter which probably does not work yet.

Installed Network Drivers

Now some tweaking for the IP, gateway and DNS servers and one more step in my master plan achieved.

  1. Got root
  2. Install VMware
  3. Install a Windows Server 2008
  4. Move my existing site to the new server
Posted at Friday, April 11, 2008 1:54:05 AM (W. Europe Daylight Time, UTC+02:00) 
Comments [0] #      | 

In a previous post I told about my master plan after gaining my new root server:

  1. Got root
  2. Install VMware
  3. Install a Windows Server 2008
  4. Move my existing site to the new server

After almost 16 hours my request for my own RIPE subnet was approved. Now I can concentrate on the next point: Installing VMware. Since I want to set up this machine for virtualization I have to perform a few steps first. That way, this post will be mostly about my fight with Debian Linux which is the host system.

After logging in, I just realize that updating the package database might not the worst idea. Consequently I do so and install some Norton Commander like tool for real men

apt-get update 
apt-get install mc  

This actually makes things much easier.

Now, I have to activate IP forwarding in /etc/sysctl.conf by the adding

net.ipv4.ip_forward=1

and bringing the additional IP on the host system by adding

up ip add 192.168.1.1/29 dev eth0

to /etc/network/interfaces. Additionally, I have to add some host-route (by using my gateway 192.168.0.1) so my new subnet is reachable by adding

pointopoint 192.168.0.1

to eth0 in /etc/network/interfaces. Installing iproute by a

apt-get install iproute

restarting the interface by calling

/etc/init.d/network restart

finally makes my IP ping-able. Quite a fight so far if you don't do this on a regular base. Additionally I installed the powersaved package and reconfigured several settings to increase the performance in /etc/powersave.

I just got the tip to put my virtual machines to the separate disc. Since I have one spare 400GB disc. I have to create some partition and to format it.

cfdisk /dev/sdb
mkfs -t ext3 /dev/sdb1

Let's create some directory for the virtual machines and mount the disc

mkdir VMs
mount -t ext3 /dev/sdb1 /Vms

Now some final tweak at /etc/fstab by adding

/dev/sdb1 /VMs et3 defaults 0 0

and I am done.

Finally I start installing the VM. I was pointed to some German How-To written by Till Brehm which is includes quite detailed instructions.

Some prerequisites are required before I start. I do the required 220 MB update by

apt-get install linux-headers-`uname -r` libx11-6 libx11-dev x-window-system-core x-window-system xspecs libxtst6 psmisc build-essential

VMware can be downloaded from http://www.vmware.com/download/server/. I skip the management console since I will use it on my Windows workstation and focus only on the server and management interface binaries using:

wget http://download3.vmware.com/...
tar xvz VMware-server-*.tar.gz
cd vmware-server-distrib
./vmware-install.pl

Now, I simply accept the defaults for the following installation. only at one point I had to tell the script that my virtual machines will be located at /VMs. No I have to continuing with the management interface

tar xvfz VMware-mui-*.tar.gz
cd vmware-mui-distrib
./vmware-install.pl

The Web-based managmeent interface seems to work perfectly after installing.

VMware Management Interface

After installing the management console on Windows I run into some trouble. During compilation of the corresponding modules, the VMware script was not able to start the inetd service. Therefore, I was not able to connect to the VMware server. After restarting the service manually it worked perfectly and I set up my virtual machine.

VMware Management Console

So far, I've reached the next level of my master plan.

  • Got root
  • Install VMware
  • Install a Windows Server 2008
  • Move my existing site to the new server

    Now I have to copy the installation files for the Windows Server 2008.

  • Posted at Thursday, April 10, 2008 10:22:18 PM (W. Europe Daylight Time, UTC+02:00) 
    Comments [0] #      | 

    Sometimes it is maybe necessary to bring some order into your unit tests in Visual Studio. Indeed, this is not really the idea of unit testing, however it might be necessary for a variety of reasons. Facing this issue, I had to search the MSDN documentation for a while.

    I was desperately looking for some syntax like:

    [TestMethod(Order = 1)]

    However, the only way to bring some order in your tests is, by creating some ordered tests in addition to your unit tests.

    To do so, you first create a set of unit tests. In my case, some of the tests should be only executed after other run successfully. Otherwise the result might look like:

    Failed Unit Test

    Now we create a new test project called Order Test:

    Add New Ordered Test

    When opening the project you actually can arrange the order of the previously written unit tests:

    Arrange an Ordered Test

    Running the test then is possible by selecting the test from the Test View window. Your tests will actually only appear as one entry in the list but you will see that all the selected tests run successfully - in the correct order.

    uccesfull Ordered Test

    Posted at Monday, April 07, 2008 3:38:38 PM (W. Europe Daylight Time, UTC+02:00) 
    Comments [2] #      | 

    Today, Daniel helped my to solve a long standing miracle. For some unknown reason, Vista decided not to support hibernate on my Toshiba m400 anymore. So what to do:

    Start the command prompt and type powercfg -H ON.

    You won't see anything on the screen, but when going back to your advanced power potions you will see both, hibernate and hybrid sleep again.

     Vista Power Options

    That's all - and you can send your machine to hibernate again.

    Send to Hibernate

    Posted at Tuesday, January 08, 2008 11:01:07 AM (W. Europe Standard Time, UTC+01:00) 
    Comments [0] #      | 

    Since I read "Design Patterns. Elements of Reusable Object-Oriented Software" by the GoF the very first time in 1999, I am a big fan of patterns at all. Making heavy use of factory patterns such as the Factory Method or Abstract Factory I came along with a useful pattern we call a Declarative Factory. A Declarative Factory is based especially on the Attribute construct in the .NET Framework and allows you to extend new classes with factory capabilities in a zero-effort manner. The idea behind this pattern is to extend your application with new constructs in form of extensions without touching already existing code. This is possible when your extensions are provided by container objects. The key element here is about the new elements which you are not aware in your code yet.

    This pattern is much like a Abstract Factory, however, there is no need  to create a concrete Factory class.
    Also you add factory capabilities to  a new class by only adding the corresponding attribute.

    Declarative Factory Pattern

    First we have a look at the actual container object. Here we tell the container object to provide factory capabilities to create ConcretePrototype instances. The FactoryContainer can be any class we are using within our application, as example this could be a sub-class of ListViewItem in a WPF-based application.

    [DeclarativeFactory(typeof(ConcretePrototype))]
    public class FactoryContainer { }

    The declaration of the ConcretePrototype is also straightforward. The IPrototype is the common interface for all prototypes that can be created by the Declarative Factory. If this pattern is applied to a WPF-based object this could also something like a DependencyObject or a FrameworkElement. In this case the DeclarativeFactory cold provide factory capabilities for the corresponding types.

    public class ConcretePrototype : IPrototype

    The attribute itself looks as following:

    DeclarativeFactory Attribute

    The magic now, lies in the way how to invoke the factory method provided by the Declarative Factory.

    FactoryContainer container = new FactoryContainer();
    
    DeclarativeFactoryAttribute[] a_attrib =
       (DeclarativeFactoryAttribute[]) container.GetType().GetCustomAttributes(
    typeof(DeclarativeFactoryAttribute), true); IPrototype prototype = a_attrib[0].Create() as IPrototype;

    You just resolve the factory attribute and call the factory method. Very easy, isn't it? However, you have to keep a few things in mind about this pattern.  First of all, it makes no sense if you already know about the class you want to instantiate. So, there is absolutely no reason to apply the Declarative Factory to the class itself. In this case you should definitely stay with common patterns such as the Factory Method. If you are going to make you project extensible where new types are provided through container objects this pattern appears to be very handy .

    You can download the example source code for this pattern (under MS-Pl) at CodePlex [1].

     

    [1] http://www.codeplex.com/declarativefactory

    Posted at Tuesday, January 01, 2008 12:33:33 PM (W. Europe Standard Time, UTC+01:00) 
    Comments [0] #      | 

    Sometimes, simple things end up as epic battles. If you try to MSN Search and Google for the nasty "You have create a Service" page for IIS hosted WCF services, you will and up with a lot of pre-release information and noise in the search results. Actually, you might spend days in finding some relevant information.

    You have created a service.

    Yesterday, I was finally pointed to the right place in the MSDN documentation [1] where you can find this specific information:

    <serviceDebug httpHelpPageEnabled="Boolean"
        httpHelpPageUrl="Uri"
        httpsHelpPageEnabled="Boolean"
        httpsHelpPageUrl="Uri"
        includeExceptionDetailInFaults="Boolean" />

    With the serviceDebug tag it should be possible to get rid of the page. It is easy to find as long as you know you have to search for HTML help page.

    [1] http://msdn2.microsoft.com/en-us/library/ms788993.aspx

    Posted at Friday, December 21, 2007 9:18:05 AM (W. Europe Standard Time, UTC+01:00) 
    Comments [1] #      | 

    The new Web Programming Model [1] of WCF and the .NET Framework brings some very useful features such as the WebGet and the WebInvoke Attribute and the capability to deal directly with HTTP requests. But how do we access the HTTP request in these methods? Dealing with HTTP requests and responses using the System.Net namespace is quite straight forward. Therefore, we have a look in sending and receiving a simple HTTP request:

    HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(myUrl);
    byte[] a_dataBytes = Encoding.UTF8.GetBytes(data);
    request.ContentType = "application/x-www-form-urlencoded";
    request.ContentLength = a_dataBytes.Length;
    
    Stream requestStream = request.GetRequestStream();
    requestStream.Write(a_dataBytes, 0, a_dataBytes.Length);

    WebResponse
    response = request.GetResponse(); StreamReader responseReader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
    var content = responseReader.ReadToEnd();

    Now we want to access the HTTP context within a operation with the following signature:

    [OperationContract]
    [WebInvoke(Method = "PUT", UriTemplate = "{uri}")]
    bool Put(string uri);

    Accessing the context of the incoming request is straightforward using the WebOperationContext class.

    IncomingWebRequestContext context =
        WebOperationContext.Current.IncomingRequest;
    
    var length = context.ContentLength;
    var type = context.ContentType;
    var headers = context.Headers;

    Since the documentation does not provide many example code, and the ORCAS samples do not cover this yet, I had to figure out how to access the content of the incoming request. After spending hours on MSN Search, Google and the MSDN Library I finally tried out something. In some general examples, either a Message or a Stream is passed over as single parameter to the operation. Hence, I changed the contract as follows:

    [OperationContract]
    [WebInvoke(Method = "PUT", UriTemplate = "{uri}")]
    bool Put(string uri, Stream stream);

    Reading the content then is easy:

    var reader = new StreamReader(stream);
    string content = reader.ReadToEnd();

    This solution however comes up with one major drawback: If you try to access your foo.svc via browser you will end up some error telling you "For request in operation Post to be a stream the operation must have a single parameter whose type is Stream.". Also calling foo.svc?wsdl will end up in some exception in the WSDL export extension.

     

    [1] http://msdn2.microsoft.com/en-us/library/bb412169(VS.90).aspx

    Posted at Sunday, December 09, 2007 9:22:53 AM (W. Europe Standard Time, UTC+01:00) 
    Comments [0] #      | 

    If you are going to un-install Visual Studio 2008 beta 2 due to the installation of  the final version, you should have a look at [1] to make sure you haven't missed anything during this procedure.

    [1] http://blogs.msdn.com/buckh/archive/2007/11/20/how-to-uninstall-vs-2008-beta-2-before-installing-the-final-version-of-vs-2008.aspx

    Posted at Wednesday, November 21, 2007 8:43:48 AM (W. Europe Standard Time, UTC+01:00) 
    Comments [0] #      | 

    After switching from WEP to WPA2 (shame on my it took so long), of course I had to update several XP and Vista machines. However, the 360 made most trouble since I used a D-Link 700AP before which was configured as a wireless bridge. Since I run a Linksys WRT54GS as gateway, it seemed to be the easiest way to get a second device of the same kind to be set up as wireless bridge being flashed with an alternative firmware. However, I realized that there is a endless number of devices in this series [1]. After getting the device I had to figure out, the new device is version 7. Due to an change in the manufacturer firmware, the ROM size of the device was continuously reduced. At this time I thought about the fact, getting a WRT54G (which is the old hardware factor and Linux based) might have been the better choice. Now I simply replaced the existing device with version 4 with the new one. and the old one providing 4 MB of RAM became the wireless gateway.

    There are a couple of alternative firmware projects for the WRT54GS. After reading though a couple of posts in various forums, it seemed that OpenWrt [2] is the best choice. In addition, X-Wrt [3] seemed to be suitable for easy setup. During the setup of OpenWrt I encountered several problems ending up in my router being bricked. So I had to recover the device using TFTP [4] and the original firmware [5].

    After several failures and digging a bit more I found more and much better documentation on DD-WRT [6] including documentation for setting up wireless bridges [7]. While v23 does only support WPA2-mixed mode, I switched over to v24 RC4 which finally supports WAP2 Personal.

     

    [1] http://en.wikipedia.org/wiki/Wrt54g
    [2] http://openwrt.org/
    [3] http://x-wrt.org/
    [4] http://www.dd-wrt.com/wiki/index.php/Recover_from_a_Bad_Flash
    [5] http://www-de.linksys.com/...
    [6] http://www.dd-wrt.com/
    [7] http://www.dd-wrt.com/wiki/index.php/Wireless_Bridge#WPA-Personal

    Posted at Sunday, November 18, 2007 12:39:14 PM (W. Europe Standard Time, UTC+01:00) 
    Comments [0] #      | 

    While charging an iPod on a Windows Vista system without having iTunes installed, you might face the issue that the iPod is not willing to play any music as long as it is charging. Therefore, simply choose Safely Remove Hardware from the Vista task tray.

    Safely Remove Hardware

    There you select Generic volume and click Stop. In the second dialog do the same, select Generic volume and click Stop.

     Stop a Hardware device

    After a few seconds your iPod will re-start and awaiting your commands while it is still charging.

    Posted at Sunday, November 11, 2007 11:04:48 AM (W. Europe Standard Time, UTC+01:00) 
    Comments [0] #      | 

    I already had some thoughts on designing "good" user interfaces [1] before even if you are not a designer. Now, I just found the SSW Rules to Better Interfaces [2] with a couple of interesting statements also to think about.

    SSW Rules to Better Interfaces

    [1] http://blog.aheil.de/2007/04/27/WPFAndTheVistaUserExperience.aspx
    [2] http://www.ssw.com.au/ssw/Standards/Rules/RulesToBetterInterfaces.aspx

    Posted at Monday, August 27, 2007 2:23:37 PM (W. Europe Daylight Time, UTC+02:00) 
    Comments [0] #      | 

    ... in Windows Vista to be fixed by KB 938979 [1] and KB 938194 [2] if you can't wait for Windows Vista Service Pack 1.

    [1] http://support.microsoft.com/kb/938979
    [2] http://support.microsoft.com/kb/938194

    Posted at Wednesday, August 08, 2007 1:46:39 PM (W. Europe Daylight Time, UTC+02:00) 
    Comments [0] #      | 

    I just surfed on Geekpedia. I did not have a lot of time to look though the site, but is seem as there are tons if interesting articles and information about cool stuff there. So if I find I will seek though their archives for some useful tips and tutorials

    Geekpedia 

    Source: http://www.geekpedia.com/

    Share this post :

    Posted at Thursday, August 02, 2007 8:29:28 AM (W. Europe Daylight Time, UTC+02:00) 
    Comments [0] #      | 

    I am working on a user interface (UI) for a client tool of our current project. Though, the last two have been a epic battle fighting with a various of minor things. However, each and every of these things does cost a remarkable amount of time.

    Starting with WPF many developers will spend mcuh time with skinning in WPF. It's a cool thing, but you should leave these things to designers. It is a enormous time sink. You make huge progress in the beginning but end up with endless fine-tuning in the end. The first have a look at the Windows Vista User Experience Guidlines [1]. The really thing: you don't have to read everything online, just download the 630 pages as PDF document [2]. You will see that skinning should be used carefully. Much more important are some new guidlines to keep in sync with the Vista UI. BTW: if you are looking for the Vista icons you should have a look at [3] (but I haven't told you that and so use them only to inspire you by creating own icons).

    Well, what's about the cool stuff such as the new Command Link in Vista? Should be a new control? Well, not that easy. Daniel Moth found out [4] to check the Vista Bridge Samples [4] comming with the Windows SDK. you should go definitely for the Windows SDK Update for Vista [6]. Daniel also gives a first impression how to use the TaskDialogs provided by the VistaBridgeLibrary [7].

    Now you will definitely run into trouble if you don't create a manifest file for you application using the following dependency:

    <dependency>
      <dependentAssembly>
        <assemblyIdentity
          type="win32"
          name="Microsoft.Windows.Common-Controls"
          version="6.0.0.0"
          processorArchitecture="x86"
          publicKeyToken="6595b64144ccf1df"
          language="*"
        />
      </dependentAssembly>
    </dependency>

    In my case I also had to use strong-named assemblies since they are used within VSIP [8] packages. You will realise that the VistaBridgeLibrary uses friendly assemblies, Junfeng gives a short introduction into friendly assemblies at [9]. You'll discover that is not as easy since there have been some changes in Visual Studio 2005. Adrian figured out how it works at [10]. David cover's the further steps in [11] and also provides a small tool to obtain the public key token of a signed assembly ready to be copy 'n' pasted into your Assembly.cs file.

    [1] http://msdn2.microsoft.com/en-us/...
    [2] http://download.microsoft.com/download/...
    [3] http://www.istartedsomething.com/20060924/vista-fitted-nearly-finished/
    [4] http://www.danielmoth.com/Blog/2006/06/vistabridge_12.html
    [5] http://msdn2.microsoft.com/en-us/library/...
    [6] http://www.microsoft.com/downloads/...
    [7] http://www.danielmoth.com/Blog/2006/06/...
    [8] http://www.microsoft.com/downloads/...
    [9] http://blogs.msdn.com/junfeng/archive/2004/07/...
    [10] http://geekswithblogs.net/dotnetrodent/archive/...
    [11] http://davidkean.net/archive/2005/10/06/1183.aspx

    Posted at Friday, April 27, 2007 8:05:36 PM (W. Europe Daylight Time, UTC+02:00) 
    Comments [0] #      | 

    While setting up my dev machine this morning I realized my Gemplus USB Smartcard reader [1] did not work on Windows Vista. Fortunately, the driver [2] provided for Windows 2000/XP and Server 2003 works fine on Vista.

    [1] http://support.gemplus.com/gemdownload/readers/index.aspx
    [2] http://support.gemplus.com/gemdownload/readers/drivers.aspx?prodid=5

    Posted at Wednesday, April 25, 2007 12:49:52 PM (W. Europe Daylight Time, UTC+02:00) 
    Comments [0] #      | 

    SearchIndexer.exe does all the indexing stuff on your Vista machine. Not bad at all it is not possible to schedule when the indexer is running as it was able using MSN Desktop Search. E.g., there you have been able to send the indexer to sleep for a 10, 20 or 60 minutes or to avoid running the indexer whilst working on the machine. it looks like the only way to calm the machine down is by switching of the service at all. Another work around I am trying right now is to got to Control Panel / Power Options and choosing the High Performance Change power plan settings. There chose Change advanced power settings Search and Indexing values to Power Saver or Balanced. This should lower the indexing effort of the Vista Search significantly.

    Search and indexing Power Options

    Posted at Thursday, April 19, 2007 2:39:38 PM (W. Europe Daylight Time, UTC+02:00) 
    Comments [0] #      | 

    Today I found an online resource providing some tips and information how a research poster might look like. I have seen a lot of bad ones and do do not consider mine as perfect yet. So maybe [1] does help in improving the research posters...

    For those writing papers I still recommend Simon Peyton Jones' "How to write a good research paper" [2]. 

    [1]  http://www.ncsu.edu/project/posters/NewSite/#Note0
    [2] http://research.microsoft.com/Users/simonpj/papers/giving-a-talk/giving-a-talk.htm

    Posted at Thursday, April 05, 2007 12:32:09 PM (W. Europe Daylight Time, UTC+02:00) 
    Comments [0] #      | 

    For some good reasons, the Toshiba BT Update [1].

    [1] http://aps.toshiba-tro.de/bluetooth/redirect.php?page=pages/download.php

    Posted at Friday, October 13, 2006 12:42:34 PM (W. Europe Daylight Time, UTC+02:00) 
    Comments [0] #      | 

    "%windir%\Microsoft.NET\Framework\version\aspnet_regiis.exe" -i also works for the latest Framework versions...

    "After you install the Microsoft .NET Framework Software Development Kit (SDK), Microsoft Visual Studio .NET 2002, Visual Studio .NET 2003, or Visual Studio 2005, Microsoft Internet Information Service (IIS) mappings are created to associate the new file extensions and settings for ASP.NET. If you did not have IIS installed when you ran the SDK or Visual Studio Setup, or if you uninstalled and reinstalled IIS after you ran the SDK or Visual Studio Setup, those settings will not be in place. You experience unexpected behavior when you try to view ASP.NET pages."

    [1]  http://support.microsoft.com/default.aspx?id=kb;en-us;Q306005

    Posted at Tuesday, October 10, 2006 4:43:48 PM (W. Europe Daylight Time, UTC+02:00) 
    Comments [0] #      | 

    Ever stuck in sorting a huge bullet list? One of the 90% unknown Word features found at [1].

    The Sort Text command can be used to alphabetize lists instantly.

    1. Type a list of names, pressing ENTER after each name. Your list should look something like:
      • Madeleine Kelly
      • Brian Cox
      • Tamara Johnston
    2. Select the entire list.
    3. On the Table menu, click Sort.
    4. Click Options, click Other, press SPACEBAR and then click OK.
    5. In the Sort by list, click Word 2, and then click OK.

      Now your list looks like this:

      • Brian Cox
      • Tamara Johnston
      • Madeleine Kelly
    6. Repeat steps 1 through 5, but click Word 1 in the Sort by list, and your list will look like this:
      • Brian Cox
      • Madeleine Kelly
      • Tamara Johnston

    [1] http://office.microsoft.com/en-us/assistance/HA101154421033.aspx

    Posted at Thursday, October 05, 2006 10:48:36 AM (W. Europe Daylight Time, UTC+02:00) 
    Comments [0] #      | 

    Due to some unknown reasons, Windows told me synchronizing with my Windows Mobile device was not able anymore. The error message told me some issues with the COM port. For some reason the COM port in ActiveSync was rest to port 3. Using the Toshiba Bluetooth Manager on my m200 I have to reset the port to 7.

    Afterwards I had to update the partnership on my mobile device. After checking ActiveSync in the Bluetooth settings dialog for the specific device, the Bluetooth connection worked again.

    Posted at Wednesday, October 04, 2006 5:21:30 PM (W. Europe Daylight Time, UTC+02:00) 
    Comments [0] #      | 

    Why (and how) IE is restricted in simultaneous DLs is described in the knowledge base [1].

    "WinInet limits connections to a single HTTP 1.0 server to four simultaneous connections. Connections to a single HTTP 1.1 server are limited to two simultaneous connections. The HTTP 1.1 specification (RFC2616) mandates the two-connection limit. The four-connection limit for HTTP 1.0 is a self-imposed restriction that coincides with the standard that is used by a number of popular Web browsers."

    [1] http://support.microsoft.com/default.aspx?scid=htt...

    Posted at Monday, September 11, 2006 2:51:29 PM (W. Europe Daylight Time, UTC+02:00) 
    Comments [0] #      | 
    DDS
    Posted in Knowledge Base

    At [1] there is a bunch of information, tools and links about .dds files.

    [1] http://developer.nvidia.com/object/nv_texture_tool...

    Posted at Friday, September 01, 2006 2:45:48 PM (W. Europe Daylight Time, UTC+02:00) 
    Comments [0] #      | 

    After getting a licence and re-installing the MAPILap NNTP [1] Outlook plug-in I was kind of frustrated that the plug-in did not work anymore. Basically I found the reason in the registry settings of the tool. There the account was still disabled since I have chosen this option during a test installation before [2].

    Just delete the folder with the deactivated profile name. After the next start of Outlook the plug-in wizard appears again.

    [1] http://www.mapilab.com/outlook/nntp/
    [2] http://blog.aheil.de/MAPILabNNTPForOutlook.aspx

    Posted at Friday, August 18, 2006 9:37:26 AM (W. Europe Daylight Time, UTC+02:00) 
    Comments [0] #      | 
    Krugle
    Posted in Coding | Knowledge Base

    "I know what to do, and how to solve the problem, but I do not know the bloody API." - I just met the guys implementing the Krugle [1] search engine over here at ICWE 2006. And it does work quite well.

    [1] http://www.krugle.com

    Posted at Friday, July 14, 2006 9:05:04 PM (W. Europe Daylight Time, UTC+02:00) 
    Comments [0] #      | 

    How to do can be found in [1].

    [1] http://support.microsoft.com/kb/q102712/

    Posted at Thursday, June 29, 2006 10:07:16 AM (W. Europe Daylight Time, UTC+02:00) 
    Comments [0] #      | 

    Having trouble to create a A1 poster out of a PowerPoint Slide? Is the bottom of the poster messed up? Mirko [1] got the solution: Actually it does not matter what page size you choose for the PowerPoint slide. Print first a A4 (or maybe Letter) PDF. This usually works quiet fine. Then open the A4 PDF and re-print it to A1. In many cases this shall help.

    [1] http://www.ipvs.uni-stuttgart.de/abteilungen/ks/abteilung/mitarbeiter/mirko.knoll/en

    Posted at Thursday, June 22, 2006 3:51:48 PM (W. Europe Daylight Time, UTC+02:00) 
    Comments [0] #      | 
    RegEx
    Posted in Coding | Knowledge Base

    Havin some trouble in remebering regualr expressions, I use the MSDN site [1] to get the basics to create them.

    [1] http://msdn2.microsoft.com/en-us/library/2k3te2cs.aspx

    Posted at Tuesday, June 20, 2006 11:57:24 PM (W. Europe Daylight Time, UTC+02:00) 
    Comments [0] #      | 

    Today I decided to pimp my Tablet PC somehow. The first I pushed the available RAM of the Toshiba M200 to the absolute limit of 2GB. Finally I decided against a second Samsung M40L2923 [1] module. Instead I use a 1GB DIMM-S0 Infineon module [2]. 

    Still not satisfied, I wanted to update my BIOS to the current BIOS version 1.7 [3]. This sound pretty easy while Toshiba offering a windows-based update utility [4] if you do not have any disk or DVD drive available. Anyway some issues appeared:

    If you search for a while, you'll find that the problem is well known and described in this technical support bulletin [5]. All you have to do is downloading the Toshiba Utilities [6] to make the missing dlls available. Beside the installation of the BIOS some more utilities are available, too.

    After starting the update utility again, the system need only a few seconds, until reboot. The after logging into the system the tool is finishing the (un-)installation for a few seconds. After that everything works properly again.

    [1] samsung.com
    [2] infineon.com
    [3] http://www.toshiba-tro.de/subpage/bios.html
    [4] http://support.toshiba-tro.de/tools/bios/portege/pm200/win/bios-pm200-170win.zip
    [5] http://support.toshiba-tro.de/kb0/TSB5100TC0007R01.htm
    [6] eu.computers.toshiba-europe.com

    Posted at Sunday, October 09, 2005 7:47:25 AM (W. Europe Daylight Time, UTC+02:00) 
    Comments [0] #      | 

    While playing with Indigo I spend several hours on duplex services and clients finally leading to an annoying issue. I tried two different examples, one from the book Programming "Indigo" and another one from the WinFX SDK documentation [1]. In both cases I spend hours writing down all the code, e.g. the examples in the book do not fit with the current release of the WCF anymore. So some minor fixes have been necessary. Having both examples I tried to start the clients, but they did not receive any response from the service. If you are patient enough (which means waiting 5 to 10 minutes) the client will result in a ChannelConnectException.

    What is wrong? Bindings? Any mistake in the XML config-files? The solution is as simple as it could be: Just right-click the web site in the solution browser and choose Start Options... 

    Uncheck NTLM Authentication which is checked by default and restart your service and client.

    After restarting the service and the client, the client is processing, the service is responding and the Quick Console shows the expected output:

    [1] winfx.msdn.microsoft.com

    Posted at Thursday, October 06, 2005 12:49:17 AM (W. Europe Daylight Time, UTC+02:00) 
    Comments [0] #      | 

    Have you realized already this cool feature in Visual Studio 2005?

    If you write down some interface or class names which do not exist yet, they appear in black (as long as you still use the default settings for the editor). As soon as you write down the appropriate class or interface the color changes from black to light blue. Why this is cool? It makes it pretty easy to find typos in your code right before compiling. If you see such code not in the appropriate color, either you have a typo in its name or the class or the interface is not implemented yet. It makes a lot of sense when you write down code but the implementation of a class or interface is not yet available because it is written by another person. It's a nice feature in VS 2005.

    Posted at Wednesday, October 05, 2005 2:28:52 PM (W. Europe Daylight Time, UTC+02:00) 
    Comments [0] #      | 

    While writing papers, there are some really usefull hints you must know. If you write down topics, usualy it's a royal pain on your back always to grap the mouse to choose the Heading 1 formatting. Just press [Ctrl]-[Alt]-[1] to [Ctrl]-[Alt]-[3] to mark the lines as a heading. Unfortunately this doesn't work for Heading 4.

    Another great thing is the rand macro. Sometimes it is usefull to have some arbitrary text betwwen all the headings which make the structure of you document. Just type in =rand() for some paragraphs of text or =rand(2) if you want exact two paragraphs. Of course you can choose any other number as well.

    Word provides you some text to fill your empty space:

    The quick brown fox jumps over the lazy dog.  The quick brown fox jumps over the lazy dog.  The quick brown fox jumps over the lazy dog.  The quick brown fox jumps over the lazy dog.  The quick brown fox jumps over the lazy dog.

    The quick brown fox jumps over the lazy dog.  The quick brown fox jumps over the lazy dog.  The quick brown fox jumps over the lazy dog.  The quick brown fox jumps over the lazy dog.  The quick brown fox jumps over the lazy dog.

     

    Posted at Monday, October 03, 2005 11:51:53 AM (W. Europe Daylight Time, UTC+02:00) 
    Comments [0] #      | 

    While preparing some demos to show cool stuff at PDC 05 I installed the hot new DirectX SDK Update August 2005 [1]. Unfortunately VS 2005 does not like the update. After starting my already testet applications using DirectInput an Exception occured. A LoaderLock was detected... what the heck?

    Actually you can find something about this issue in the Visual C++ 2005 Library and Runtime Enhancements transcript [2]. Also Tone Engel has found this isue already and posted the solution in his blog [3].

     

    Just set a new string value mda = "0"  under HKEY_LOCAL_MACINE\SOFTWARE\Microsoft\.NETFramework. Looks like it does not solve the problem, but at least the error message disapears.

    [1] http://www.microsoft.com/downloads/search.aspx?displaylang=en&categoryid=2
    [2] http://msdn.microsoft.com/chats/transcripts/vstudio/vstudio_091604.aspx
    [3] http://tonesnotes.org/2005/08/23/loaderlock-warning-2005-beta

    Posted at Tuesday, September 06, 2005 5:34:25 PM (W. Europe Daylight Time, UTC+02:00) 
    Comments [0] #      | 

    IIS is not willing to start anymore. At least in the Microsoft Knowledge Base [1] you can find a hint for this problem. So first, I thought it could be all the beta WinFX and Indigo stuff, I have installed on my machine. Finally I found the reason: Skype grabed port 80. After closing Skype I was able to restart the IIS.

    [1] http://support.microsoft.com/default.aspx?scid=kb;en-us;816944

    Posted at Thursday, September 01, 2005 1:49:12 PM (W. Europe Daylight Time, UTC+02:00) 
    Comments [0] #      | 

    I found a overview of international system unit prefixes [1]:

    Factor  Name  Symbol  Origin               Derivation 
    2^10    kibi  Ki      kilobinary: (2^10)^1 kilo:  (10^3)^1
    2^20    mebi  Mi      megabinary: (2^10)^2 mega: (10^3)^2
    2^30    gibi  Gi      gigabinary: (2^10)^3 giga:  (10^3)^3
    2^40    tebi  Ti      terabinary: (2^10)^4 tera:  (10^3)^4
    2^50    pebi  Pi      petabinary: (2^10)^5 peta:  (10^3)^5
    2^60    exbi  Ei      exabinary:  (2^10)^6 exa:   (10^3)^6 

    Examples and comparisons with SI prefixes
    one kibibit   1 Kibit = 2^10 bit = 1024 bit
    one kilobit   1 kbit  = 10^3 bit = 1000 bit
    one mebibyte  1 MiB   = 2^20 B   = 1 048 576 B
    one megabyte  1 MB    = 10^6 B   = 1 000 000 B
    one gibibyte  1 GiB   = 2^30 B   = 1 073 741 824 B
    one gigabyte  1 GB    = 10^9 B   = 1 000 000 000 B


    [1]  http://physics.nist.gov/cuu/Units/binary.html

    Posted at Monday, July 25, 2005 11:59:14 PM (W. Europe Daylight Time, UTC+02:00) 
    Comments [0] #      | 

    Ups, I've done it. It's fubar [1] now.

    However it's possible to send an error report using the errorreport switch: csc *.cs /errorreport:prompt

    Actually I found why the compiler screw up. I use a lot of plattform invokes and because I am lazy I use a constant with the library name.

    private const string LIB = "MyNativeDll.dll";

    [DllImport(LIB)]
    //...

    While changing the code, I removed the const modifier by accident, which causes the compiler to fail...

    [1] dict.tu-chemnitz.de
    [2] msdn.microsoft.com

    Posted at Tuesday, July 12, 2005 1:39:10 PM (W. Europe Daylight Time, UTC+02:00) 
    Comments [0] #      | 

    If you write managed code using P/Invoke, sometimes you have to handle structures returnd by the called methodes. These MSDN articles about marshalling structures [1] and the StructLayoutAttribute class [2] should provide enought information to do so.

    [1] msdn.microsoft.com
    [2] msdn.microsoft.com

    Posted at Tuesday, July 12, 2005 11:18:47 AM (W. Europe Daylight Time, UTC+02:00) 
    Comments [0] #      | 

    This table took me a few minutes, but will save me hours.

    Windows Data Type .NET Data Type
    BOOL, BOOLEAN Boolean or Int32
    BSTR String
    BYTE Byte
    CHAR Char
    DOUBLE Double
    DWORD Int32 or UInt32
    FLOAT Single
    HANDLE IntPtr, UintPtr or HandleRef
    HRESULT Int32 or UInt32
    INT Int32
    LANGID Int16 or UInt16
    LCID Int32 or UInt32
    LONG Int32
    LPARAM IntPtr, UintPtr or Object
    LPCSTR String
    LPCTSTR String
    LPCWSTR String
    LPSTR String or StringBuilder*
    LPTSTR String or StringBuilder
    LPWSTR String or StringBuilder
    LPVOID IntPtr, UintPtr or Object
    LRESULT IntPtr
    SAFEARRAY .NET array type
    SHORT Int16
    TCHAR Char
    UCHAR SByte
    UINT Int32 or UInt32
    ULONG Int32 or UInt32
    VARIANT Object
    VARIANT_BOOL Boolean
    WCHAR Char
    WORD Int16 or UInt16
    WPARAM IntPtr, UintPtr or Object
    Posted at Monday, July 11, 2005 11:35:25 PM (W. Europe Daylight Time, UTC+02:00) 
    Comments [0] #      | 

    I found a blog entry written by the C# Team, about how to to update user interface from a thread that did not create it [1]? This blog about C# questions could be really awesome, but unfortunately the entries are once in a blue moon.

    [1] http://blogs.msdn.com/csharpfaq/archive/2004/03/17/91685.aspx
    [2] http://blogs.msdn.com/csharpfaq/default.aspx

    Posted at Monday, July 11, 2005 8:06:13 PM (W. Europe Daylight Time, UTC+02:00) 
    Comments [0] #      | 

    It usually takes ages until I find the page with the format strings on MSDN. So here's a short note, not to forget it.

    C or c Currency
    D or d Decimal
    E or e Scientific (exponential)
    F or f Fixed-point
    G or g General
    N or n Number
    P or p Percent
    R or r Round-trip
    X or x Hexadecimal

    [1] msdn.microsoft.com

    Posted at Saturday, July 09, 2005 11:25:56 AM (W. Europe Daylight Time, UTC+02:00) 
    Comments [0] #      | 

    Because I needed this for a demo CD: just some information how to build autorun.inf files [1].

    [1] http://autorun.moonvalley.com/autoruninf.htm

    Posted at Wednesday, June 08, 2005 2:11:16 PM (W. Europe Daylight Time, UTC+02:00) 
    Comments [0] #      | 

    Sometimes you think: "What the heck... where is this process from?". This list with Windows processes [1] helps to identify processes listet in the Task Manager.

    [1] http://www.liutilities.com/products/wintaskspro/processlibrary/

     

    Posted at Monday, May 23, 2005 2:19:52 PM (W. Europe Daylight Time, UTC+02:00) 
    Comments [0] #      | 

    The current iteration release of NUnit 2.2.2 [1] should work fine with assemblies build in Visual Studio .NET 2005. Nevertheless some problems occur after installing Visual Studio .NET 2005 Beta 2. Check out the installation folder of NUnit, usually C:\Program Files\NUnit 2.2.2\bin. Here you should modify the file nunit-gui.exe.config.

    <startup>
      <supportedRuntime version="v2.0.50215" />
      <supportedRuntime version="v1.1.4322" />
      <supportedRuntime version="v1.0.3705" />
     
      <requiredRuntime version="v1.0.3705" />
    </startup>

    The version of .NET 2.0 on your system is slightly different due to the installation of Visual Studio .NET Beta 2.

    [1] http://www.nunit.org/download.html
    [2] http://lab.msdn.microsoft.com/vs2005/default.aspx

    Posted at Friday, May 06, 2005 3:54:37 PM (W. Europe Daylight Time, UTC+02:00) 
    Comments [0] #      | 

    I need this so often, but every time I forget, how it works (from Visual Studio Help).

    Project Folder Not Secure Dialog Box

    You attempted to create a project on a UNC path. By default, a UNC path is not a trusted location for a project. Your project may not run correctly when you attempt to debug or run from this location. For more information, see Configuring Security Policy.

    The following tools modify the policy affecting the file share.

    • .NET Framework Configuration Tool (Mscorcfg.msc)
    • Code Access Security Policy Tool (Caspol.exe)

    Mscorcfg.msc

    One simple way to modify the policy affecting a file share is to give a specific file share FullTrust permission using mscorcfg.msc. You must be an administrator on the computer to make this change.

    To give a file share FullTrust permission

    1. Start mscorcfg.msc.
    2. Expand the Runtime Security Policy node, the Machine node, the Code Groups node, the All_Code node, and then highlight the LocalIntranet_Zone node.
    3. In the right pane select Add a Child Code Group.
    4. Choose Create a new Codegroup and enter a name for the code group, then click Next.
    5. Choose a Condition Type of URL, then enter the UNC path to the share location of your project, using the format file///\\servername\sharename\* where \\servername\sharename is the name of the share. Click Next.
      Note   Make sure to add the asterisk at the end of the path.
    6. Choose Use Existing Permission Set of FullTrust, then click Next.
    7. Click Finish.
    8. Restart Visual Studio.

    Caspol.exe

    Using caspol.exe to accomplish this change, you would use the following command line (you must be an administrator on the computer to make this change.):

    caspol -m -ag 1.2 -url urlname FullTrust

    See Also

    Configuring Security Policy

    Posted at Tuesday, February 15, 2005 8:46:09 AM (W. Europe Standard Time, UTC+01:00) 
    Comments [0] #      | 

    Hat man ein ArrayList und will die darin gespeicherten Integer-Werte in ein Array auslesen, klappt dies in C# ganz umständlich aber zuverlässig mit folgendem Befehl:

    int[] args = (int[]) arrayList.ToArray(typof(int));

     

    Posted at Monday, November 29, 2004 8:15:47 AM (W. Europe Standard Time, UTC+01:00) 
    Comments [0] #      | 

    Leider kann man .NET Applikationen nicht ohne weiteres von Desktop Systemen auf Comapct Framework basierte Systeme kopieren. Das CF unterstütz nicht den vollen Umfang des .NEt Frameworks. Zwei Probleme die bei der Portierung multi-thread-fähiger Applikationen auf das CF auftreten können werden im folgenden gelöst:

    Die erste Falle lauert im Aufruf

    System.TimeSpan yield = new System.TimeSpan(10);
    System.Threading.Thread.Sleep(yield);

    Das CF unterstütz den Sleep-Aufruf nicht mit einerm TimeSpan Struct als Paramter. Ein Integer ist hier die Lösung und im Handumdrehen implementiert:

    System.TimeSpan ts = new System.TimeSpan(10);
    int yield = ts.Milliseconds;
    System.Threading.Thread.Sleep(yield);

    Spannender wird es beim Aufruf der WaitOno-Methode. Diese wird im CF lediglich ohne Paramter unterstützt. Wer neben dem externen Signal auf einen timeout wartne möchte, kann dies lange tun. Eine einfache Möglichkeit bietet ein PInvoke-Aufruf:

    [System.Runtime.InteropServices.DllImport("CoreDll.dll")]
    private extern static System.Int32 WaitForSingleObject(
        System.IntPtr Handle,
        System.Int32 Wait);

    Jetzt kann der Aufruf

    foo.WaitOne((int)((bar - System.DateTime.Now.Ticks), false);

    durch folgenden Dreizeiler ersetzt werden:

    System.IntPtr hProcess = foo.Handle;
    System.Int32 iWait = (int)((bar - System.DateTime.Now.Ticks));
    WaitForSingleObject(hProcess, iWait);

    Kompilieren, auf das mobile Gerät kopieren und wieder ist ein Tag gerettet.

    Posted at Tuesday, November 16, 2004 2:49:03 AM (W. Europe Standard Time, UTC+01:00) 
    Comments [0] #      | 

    Ein Fehler wie folg popt plötzlich bei dem Kunden hoch: und dieser ist recht erstaunt, denn vor 5 Minuten hat die Applikation ja noch einwandfrei funktioniert.

    Nach dem ersten Schreck sehen wir als erfahrener Entwickler, dass der Fehler eindeutig in der Konfigurationsdatei liegen muss!

    Ja, sieht ja ganz gut aus. Und der Connection String, der vor 5 Minuten vom Kunden angepasst wurde scheint auch zu stimmen. Eine Test-Applikation kann sich mit dem angegebenen String ohne Probleme verbinden: Von Hand geht das auch, das XML ist wohlgeformt, um nicht zu sagen, ein besseres XML gibt es auch der weiten Welt nicht!

    Na, den Fehler schon gefunden? Nein? Dann mal hierher schauen:

    Na, jetzt ist es doch klar, oder? In der Tat, benötigt man nicht mehr als diese beiden kleinen Ausschnitte um den Fehler zu finden: Das Schöne am Arbeiten mit XML Dokumenten ist, dass man die Dokumente Formatieren kann wie man möchte, ob man jetzt 2 oder 4 Whitecaracter einrückt, oder ob man den Tabulator verwendet ist egal... und wenn einmal ein Leerzeichen zwischen den Tags steht, nun denn, das fördert die Lesbarkeit des Dokumentes. Mit einer Ausnahme: Vor dem <?xml darf nun mal KEIN Leerzeichen stehen, sonst wird das Dokument falsch geparst. Zu blöd, dass der Kunde beim “ndern der config-Datei versehentlich ein Leerzeichen hinzugefügt hat. Nunja, da der Kunde diesn un weiß, erkennt er auch den, wen nur marginalen Unterschied in den obigen Bildausschnitten...

    Posted at Friday, October 29, 2004 4:51:06 PM (W. Europe Daylight Time, UTC+02:00) 
    Comments [0] #      | 
    Copyright © 1995-2009 by Andreas Heil. aheil is a registered trademark of Andreas Heil. All rights reserved.
    The opinions expressed herein are my own personal opinions and do not represent my employers' views in any way. Content and thoughts expressed on these pages and the weblog are subject to be changed. Out of date posts should not be considererd as my current thoughts and opinions.