body { margin:0px; padding:0px; background:#f6f6f6; color:#000000; font-size: small; } #outer-wrapper { font:normal normal 100% 'Trebuchet MS',Trebuchet,Verdana,Sans-Serif; } a { color:#DE7008; } a:hover { color:#9E5205; } a img { border-width: 0; } #content-wrapper { padding-top: 0; padding-right: 1em; padding-bottom: 0; padding-left: 1em; } @media all { div#main { float:right; width:66%; padding-top:30px; padding-right:0; padding-bottom:10px; padding-left:1em; border-left:dotted 1px #e0ad12; word-wrap: break-word; /* fix for long text breaking sidebar float in IE */ overflow: hidden; /* fix for long non-text content breaking IE sidebar float */ } div#sidebar { margin-top:20px; margin-right:0px; margin-bottom:0px; margin-left:0; padding:0px; text-align:left; float: left; width: 31%; word-wrap: break-word; /* fix for long text breaking sidebar float in IE */ overflow: hidden; /* fix for long non-text content breaking IE sidebar float */ } } @media handheld { div#main { float:none; width:90%; } div#sidebar { padding-top:30px; padding-right:7%; padding-bottom:10px; padding-left:3%; } } #header { padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; border-bottom:dotted 1px #e0ad12; background:#F5E39e; } h1 a:link { text-decoration:none; color:#F5DEB3 } h1 a:visited { text-decoration:none; color:#F5DEB3 } h1,h2,h3 { margin: 0; } h1 { padding-top:25px; padding-right:0px; padding-bottom:10px; padding-left:5%; color:#F5DEB3; background:#DE7008; font:normal bold 300% Verdana,Sans-Serif; letter-spacing:-2px; } { color:#9E5205; font:normal bold 160% Verdana,Sans-Serif; letter-spacing:-1px; } a, a:visited { color: #9E5205; } { margin-top:10px; margin-right:0px; margin-bottom:0px; margin-left:0px; color:#777777; font: normal bold 105% 'Trebuchet MS',Trebuchet,Verdana,Sans-serif; } h4 { color:#aa0033; } #sidebar h2 { color:#B8A80D; margin:0px; padding:0px; font:normal bold 150% Verdana,Sans-serif; } #sidebar .widget { margin-top:0px; margin-right:0px; margin-bottom:33px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px; font-size:95%; } #sidebar ul { list-style-type:none; padding-left: 0; margin-top: 0; } #sidebar li { margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px; list-style-type:none; font-size:95%; } .description { padding:0px; margin-top:7px; margin-right:12%; margin-bottom:7px; margin-left:5%; color:#9E5205; background:transparent; font:bold 100% Verdana,Sans-Serif; } .post { margin-top:0px; margin-right:0px; margin-bottom:30px; margin-left:0px; } .post strong { color:#000000; font-weight:bold; } pre,code { color:#999999; } strike { color:#999999; } .post-footer { padding:0px; margin:0px; color:#444444; font-size:80%; } .post-footer a { border:none; color:#968a0a; text-decoration:none; } .post-footer a:hover { text-decoration:underline; } #comments { padding:0px; font-size:110%; font-weight:bold; } .comment-author { margin-top: 10px; } .comment-body { font-size:100%; font-weight:normal; color:black; } .comment-footer { padding-bottom:20px; color:#444444; font-size:80%; font-weight:normal; display:inline; margin-right:10px } .deleted-comment { font-style:italic; color:gray; } .comment-link { margin-left:.6em; } .profile-textblock { clear: both; margin-left: 0; } .profile-img { float: left; margin-top: 0; margin-right: 5px; margin-bottom: 5px; margin-left: 0; border: 2px solid #DE7008; } #sidebar a:link { color:#999999; text-decoration:none; } #sidebar a:active { color:#ff0000; text-decoration:none; } #sidebar a:visited { color:sidebarlinkcolor; text-decoration:none; } #sidebar a:hover { color:#B8A80D; text-decoration:none; } .feed-links { clear: both; line-height: 2.5em; } #blog-pager-newer-link { float: left; } #blog-pager-older-link { float: right; } #blog-pager { text-align: center; } .clear { clear: both; } .widget-content { margin-top: 0.5em; } /** Tweaks for layout editor preview */ body#layout #outer-wrapper { margin-top: 0; } body#layout #main, body#layout #sidebar { margin-top: 10px; padding-top: 0; } -->

Wednesday, January 28, 2009

Parallel Extensions
In this episode of 10-4, we start taking a look at Parallel Extensions to the .NET Framework. We'll look at some of the surface-area of the Parallel Extensions API and provide you with enough information to start working with it yourself in the Visual Studio 2010 CTP VPC. Remember that we are running these bits within a virtual machine with a single virtual processor, so you won't be able to see the performance improvements from the library. However, you will be able to start get a feel for the API itself. In future episodes, we will dive into deeper details of the various parts of Parallel Extensions. Also, in next week's episode, Jonathan Carter will be back to talk about another new feature in ASP.NET 4.0, so make sure to stay tuned for that!For more 10-4 episodes, be sure to visit:
Visual Studio Topic Area on Channel 9:
Visual Studio 2010 CTP VPC:
Visual Studio 2010 Training Kit MSDN Dev Center! Over and out!

Thursday, January 22, 2009

Windows 7 recommanded developement tools.

This release of the Windows SDK does not include a .NET Framework Redistributable Package. Windows 7 Beta includes .NET Framework 3.5 SP1. Windows Vista and Windows Server 2008 include .NET Framework 3.0.
Users running Windows Server 2003 and Windows XP must install the .NET Framework 3.0 or 3.5 SP1 to run and develop .NET Framework applications. Some samples and tools included in the Windows SDK also require you to install .NET Framework 3.5 SP1.
Along with content that ships in the Windows SDK, Microsoft offers additional free developer tools and resources that you might find helpful, including:
· Debugging Tools for Windows can be used to debug drivers, applications, and services on systems running Windows NT 4.0, Windows 2000, Windows XP, Windows Server 2003, Windows Vista, and Windows Server 2008 as well as for debugging the operating system itself. Versions of the Debugging Tools for Windows package are available for 32-bit x86, native Intel Itanium, and native x64 platforms.
· LUA Buglight™ is a tool to help both developers and IT professionals (sysadmins) identify the specific causes of admin-permissions issues (LUA bugs) in desktop applications running on Windows XP, Windows Server 2003, or Windows Vista. Once the specific causes have been identified, the bugs can more easily be resolved by fixing the app's source code, or by making configuration changes, allowing the app to work correctly for non-admin users.
· Microsoft .NET Framework 3.0 is Microsoft's managed code programming model building applications on Windows clients, servers, and mobile or embedded devices. It combines the power of the .NET Framework 2.0 with four new technologies: Windows Presentation Foundation (WPF), Windows Communication Foundation (WCF), Windows Workflow Foundation (WF), and Windows CardSpace (WCS, formerly InfoCard). The .NET Framework 3.0 ships with Windows Vista and Windows Server 2008.
· Microsoft .NET Framework 3.5 SP1 is the latest update of the .NET Framework, and contains many new features that are compatible with both .NET Framework 2.0 and .NET Framework 3.0. The .NET Framework 3.5 SP1 includes several fixes for .NET Framework 2.0 3.0, and 3.5.
· Microsoft Visual Studio Express is a set of free, lightweight and easy-to-use tools for the hobbyist, novice, and student developer.
· Microsoft Windows PowerShell™ command-line shell and scripting language helps IT Professionals achieve greater productivity. Using a new admin-focused scripting language, more than 130 standard command-line tools, and consistent syntax and utilities, Windows PowerShell allows IT professionals to more easily control system administration and accelerate automation. More information on Windows PowerShell is available from the PowerShell Team Blog and the Windows PowerShell Technology Center.
· Visual Studio 2005 extensions for .NET Framework 3.0 (Windows Workflow Foundation) provides developers with support for building workflow-enabled applications using Windows Workflow Foundation.
· Windows Server 2008 Developer Center is the official site about development and management of applications on the Windows Server 2008 platform. The Developer Center includes product information, news, tools, and code samples.
· Windows SDK Developer Center is the official site about development using the Windows SDK and provides information about the SDKs and links to the Windows SDK Blog, Forum, online release notes and other resources.

Friday, January 16, 2009

Using Post Build Step Event.

When developing with many binary objects. like a dll.

After build, we should copy these files to specify folder.
Because it'll work correctly on condition that dll's same designated position.
It's reall tedious and bothering task.
If you know a "Copy" command , you do not need to do this task.
On Visual Studio(since VS6), we can add command that copy some file to specify position,
after build.
On project property page(ALT+F7), Configuration Properties>>Build Events>>Post Build Evnet" add following lines on Command Line.

Copy "[Source]" "[Destination]"
EX>> If you want to copy "D:\test\test.dll" to "D:\BIN\test,dll", add folling lines on Command Line.
Copy "D:\test\test.dll" "D:\BIN\test,dll"
After setting applied and build, You will see a "Copy success" message on a output window.

Thursday, January 15, 2009

Virtual PC error loading existing image after re - install a virtual PC

After re-install a Virtual PC, You'll be meet an error message when loading existing image.
Error message is "Your Virtual PC does not compatible with this virtual PC image."

You can solve this problem by deleting a " [VPC_Image_Name].vsv" file located in Virtual PC Image folder.

Tuesday, January 13, 2009

Use unary_function when delete objet in STL container.

This post copied from Effective STL.
Usually, many developer still delete object in STL container via iterating container and delete.
This method possibility makes exceptions and not effective way for STL.
From now on, use unary_function with for_each.

template <typename T>
class ContainerDeallocator : unary_function<T, void>
void operator () (const T* ptr) const
delete ptr;

vector<int*> v1;
v1[0] = new int(10);
v1[1] = new int(18);
v1[2] = new int(67);
v1[3] = new int(5);

for_each(v1.begin(), v1.end(), ContainerDeallocator<int>());

It's more pretty than using iterator.

Reference : Effective STL -Meyers-