Archive for September, 2009

Using .NET Classes/Modules from native C++

September 17th, 2009 No comments

The goal of this article is to describe a more or less generic way to access .NET managed object from a native C++ application.


The goal of this article is to describe a more or less generic way to access .NET managed object from a native C++ application. I will present a dynamic link library (dll) which can be used, for example, to augment legacy C++ applications with the power of managed code. The library is written in C++/CLI which is the only .NET language which can be used to accomplish such a task.
All code was written with Visual C++ 2008, it’s also possible to do this with previous versions of the Microsoft C++ compilers, but Microsoft has done a lot of changes to C++/CLI for VS 2008, so it’s now much easier to use than in older version.
The “more” generic in the first sentence means that the library can be used to call any function (with an unlimited amount of parameters) of any managed class. The “less” means that the parameter types are limited to the native C++ types and a few user defined types (string, date/time, …). It’s easy to provide support for your own types, but therefore the code for the dll has to be extended by yourself.


Параллельное вычисление CRC32

September 17th, 2009 No comments

Автор: Александр Шарахов

Предлагаю вашему вниманию еще один подход к построению алгоритмов вычисления CRC32. Хотя многие использованные в нем идеи в той или иной мере содержатся в известных руководствах по оптимизации кода для IA32 и вычислению CRC32, он может представлять некоторый интерес. Использование свойств CRC-арифметики позволило разработать алгоритм вычисления CRC32, имеющий производительность в 3-5 раз выше стандартной табличной реализации. Например, на компьютере с процессором E6850/3.2GHz он расходует 1.33 такта процессора на байт, т.е. скорость обработки данных при вычислении CRC32 составляет 0.75 байта за такт центрального процессора или 2.4*10^9 байтов в секунду.


Rapid Prototyping Tools

September 17th, 2009 No comments

by Dan Harrelson

Prototypes as a design deliverable are on the rise, and for good reason. I am strong believer that prototyping helps us to design better experiences. We are working in a world of rich, dynamic interfaces, both on the web and on our devices. The experiences we design are interactive, responsive, and have emotion. Prototypes allow us to articulate the feeling and function of a design in a way that a wireframe does not. But how do you select the best prototyping tool for the job?

40 tools

Tags: ,


September 17th, 2009 No comments

CppUnit is a C++ unit testing framework. It started its life as a port of JUnit to C++ by Michael Feathers. For a quick tour of unit testing with CppUnit, see the Cookbook in the latest documentation. For an introduction to unit testing, see UnitTest, ProgrammerTest, and CodeUnitTestFirst.


  • XML output with hooks for additional data (XSL format avaliable in release 1.10.2 needs some FiXing)
  • Compiler-like text output to integrate with an IDE
  • Helper macros for easier test suite declaration
  • Hierarchical test fixture support
  • Test registry to reduce recompilation need
  • Test plug-in for faster compile/test cycle (self testable dynamic library)
  • Protector to encapsulate test execution (allow capture of exception not derived from std::exception)
  • MfcTestRunner
  • QtTestRunner, a Qt based graphic test runner

List of unit testing frameworks

September 17th, 2009 No comments

This page is a list of tables of code-driven unit testing frameworks for various programming languages. Some but not all of these are based on xUnit.


September 17th, 2009 No comments

UnitTest++ is a lightweight unit testing framework for C++.

It was designed to do test-driven development on a wide variety of platforms. Simplicity, portability, speed, and small footprint are all very important aspects of UnitTest++.

UnitTest++ is ANSI portable C++ and makes minimal use of advanced library and languages features, which means it should be easily portable to just about any platform. Out of the box, the following platforms are supported:

  • Win32
  • Linux
  • Mac OS X


September 17th, 2009 No comments

ForeUI is a handy UI prototyping tool. It can rapidly create static or interactive, skinnable UI prototypes of your website or software. You can use ForeUI to:

  • Create mockup for the GUI in your mind and make others understand quickly.
  • Make working prototype of website or software to collect feedback from potential users.
  • Perform usability testing before releasing the beta version.
  • Generate the schematics that can be inserted in the design documents.

This article give a detailed description on how ForeUI can help you.

Tags: , , ,

Windows 7 Goodies in C++: Taskbar Progress and Status Indicators

September 16th, 2009 No comments

An intro to using Taskbar progress bars and overlay icons with your Windows 7 applications


One of the major changes to how the Windows 7 Taskbar operates is in an area that Microsoft calls peripheral status. This covers two types of status indicators: progress for long operations, and icons for important notifications. Apps can continue to use progress dialogs during long operations, but the Windows 7 Taskbar lets the app show a progress bar in its Taskbar button as well, so the user can see the progress indicator at a glance, without having to switch to the app.

Many apps also use the notification area to convey important status information. For example, Outlook shows an icon when you have new email. However, in Windows 7, notification area icons are hidden by default, so the notification area is no longer useful for displaying this kind of status. The Taskbar lets an app display a 16×16 icon that is overlaid on the existing icon in its Taskbar button. This prevents the notification area from getting too crowded, and keeps the status icon visually associated with the app that created it.

This article’s sample app is a re-write of the file downloader from my article Using Internet Explorer to download files for you. The app shows the download progress in its Taskbar button, in addition to a traditional progress bar in the dialog. This app didn’t have a notification area icon before, but for the purposes of demonstrating the API calls involved, it has commands for showing a status icon as well.

The sample code for this article was built with Visual Studio 2008, WTL 8.0, and the Windows 7 RC SDK.


Tags: , , , ,

Development Environment

September 16th, 2009 Comments off

Development packages


C/C++ language

UI Libraries


  • Winginx – local web server for PHP5, MySQL, MongoDB – a handy tool for web development!
  • XAMPP is an easy to install Apache distribution containing MySQL, PHP and Perl. XAMPP is really very easy to install and to use – just download, extract and start
  • SiteFusion is a server-based development environment. Applications are written in pure object-oriented PHP and work through a thin XUL client. SiteFusion applications look and behave like native system applications but run on a server generating JavaScript commands.
  • WebMatrix is a free web development tool from Microsoft that includes everything you need for website development. Start from open source web applications, built-in web templates or just start writing code yourself. It’s all-inclusive, simple and best of all free. Developing websites has never been easier.


  • The coolest Interface to (Sub)Version Control (TortoiseSVN) – TortoiseSVN is an easy-to-use SCM / source control software for Microsoft Windows and possibly the best standalone Subversion client there is. It is implemented as a Windows shell extension, which makes it integrate seamlessly into the Windows explorer. Since it’s not an integration for a specific IDE you can use it with whatever development tools you like.
  • Commit-monitor for Subversion repositories (commitmonitor) – Monitors Subversion repositories for new commits and shows a notification to the user when that happens.
  • VisualSVN makes your life easier with a reliable plug-in that integrates Subversion seamlessly with Visual Studio.
  • VisualSVN Server makes the Subversion server easy and convenient to install and administer on Windows.
  • Slik SVN
  • Mercurial is a free, distributed source control management tool. It efficiently handles projects of any size and offers an easy and intuitive interface.


File compirising


  • MouseController – Records and plays back mouse actions
  • WinUnit
  • Microsoft Application Verifier
  • MiniFuzz – is a basic testing tool designed to help detect code flaws that may expose security vulnerabilities in file-handling code. This tool creates multiple random variations of file content and feeds it to the application to exercise the code in an attempt to expose unexpected and potentially insecure application behaviors.


  • Visual Leak Detector for Visual C++ 2008/2010/2012/2013
  • The Debug Diagnostic Tool (DebugDiag) is designed to assist in troubleshooting issues such as hangs, slow performance, memory leaks or fragmentation, and crashes in any user-mode process. The tool includes additional debugging scripts focused on Internet Information Services (IIS) applications, web data access components, COM+ and related Microsoft technologies.
  • Debugging Tools for Windows (part of Windows Driver Kit (WDK))
  • VMMap
  • DebugView for Windows
  • !exploitable Crash Analyzer
  • Microsoft Application Verifier
  • SymStore – (symstore.exe) is a tool for creating symbol stores. It is included in the Debugging Tools for Windows package. SymStore stores symbols in a format that enables the debugger to look up the symbols based on the time stamp and size of the image (for a .dbg or executable file), or signature and age (for a .pdb file). The advantage of the symbol store over the traditional symbol storage format is that all symbols can be stored or referenced on the same server and retrieved by the debugger without any prior knowledge of which product contains the corresponding symbol.
  • gDEBugger CL it will bring gDEBugger’s advanced Debugging, Profiling and Memory Analysis abilities to the OpenCL developer’s world, helping OpenCL developers find bugs, optimize parallel computing application performance and memory consumption.
  • TraceTool 12.4 – the Swiss-Army Knife of Trace
  • APISpy32
  • FocusFlasher
  • WinSpy++
  • MiniSpy
  • API Monitor – is a software that monitors and displays API calls made by applications. Its a powerful tool for seeing how Windows and other applications work or tracking down problems that you have in your own applications. The current version include Filters to monitor the following API Categories.
  • InspectExe – lets you explore and diagnose problems with Win32 applications. It is integrated directly into the Windows® Explorer and adds as a set of extra pages in the Properties sheet for the selected executable file. Look at the screen shots atthe bottom of this page to see examples of the information it displays.
  • Dependency Walker – is a free utility that scans any 32-bit or 64-bit Windows module (exe, dll, ocx, sys, etc.) and builds a hierarchical tree diagram of all dependent modules. For each module found, it lists all the functions that are exported by that module, and which of those functions are actually being called by other modules. Another view displays the minimum set of required files, along with detailed information about each file including a full path to the file, base address, version numbers, machine type, debug information, and more.
  • dumpbin from Visual Studio tools (VC\bin folder) can help here:
    dumpbin /dependents your_dll_file.dll
  • Network Sniffers


  • Expresso – The premier regular expression development tool. The award-winning Expresso editor is equally suitable as a teaching tool for the beginning user of regular expressions or as a full-featured development environment for the experienced programmer or web designer with an extensive knowledge of regular expressions.
  • Edraw Max is an all-in-one graphics software that makes it simple to create professional-looking flowcharts, organizational charts, network diagrams, business presentations, building plans, mind maps, fashion designs, UML diagrams, workflows, program structures, web design diagrams, electrical engineering diagrams, directional maps, database diagrams and more.
  • WinMerge is an Open Source differencing and merging tool for Windows. WinMerge can compare both folders and files, presenting differences in a visual text format that is easy to understand and handle.

Tools – JSON

Tools – Development process

  • TestTrack Pro – Tracking defects, issues, and feature requests is a critical component of any software development and quality control process. The earlier and quicker bugs are resolved, the lower your development cost and the higher your product quality. TestTrack Pro puts improved quality, communication, and reporting within reach. Use TestTrack Pro and create better software in less time.
  • Perforce is a proven SCM solution for your valuable code and digital assets.
  • TaskJuggler is a modern and powerful, Free and Open Source Software project management tool. Its new approach to project planing and tracking is more flexible and superior to the commonly used Gantt chart editing tools. TaskJuggler is project management software for serious project managers. It covers the complete spectrum of project management tasks from the first idea to the completion of the project. It assists you during project scoping, resource assignment, cost and revenue planing, risk and communication management.
  • Agile Planner – this tool is for agile project teams, who currently are using sticky notes on the wall. With this tool stories, backlog and iterations are managed in a graphic designer, saved as files within visual studio projects and can be exported to images, reports and etc.

Tools – Build

  • Hudson – extensible continuous integration server

Tools – SQL

Tools – UML

  • PlantUML – is a component that allows to quickly write : sequence diagram, use case diagram, class diagram, activity diagram, component diagram, state diagram and object diagram.
  • UMLet – Free UML Tool for Fast UML Diagrams. UMLet is an open-source UML tool with a simple user interface: draw UML diagrams fast, export diagrams to eps, pdf, jpg, svg, and clipboard, share diagrams using Eclipse, and create new, custom UML elements.
  • Violet UML Editor –  is a UML editor with these benefits: Very easy to learn and use. Draws nice-looking diagrams. Completely free. Cross-platform. Violet is intended for developers, students, teachers, and authors who need to produce simple UML diagrams quickly.
  • StarUML is an open source project to develop fast, flexible, extensible, featureful, and freely-available UML/MDA platform running on Win32 platform. The goal of the StarUML project is to build a software modeling tool and also platform that is a compelling replacement of commercial UML tools such as Rational Rose, Together and so on.
  • ArgoUML – is the leading open source UML modeling tool and includes support for all standard UML 1.4 diagrams. It runs on any Java platform and is available in ten languages.
  • BOUML – is a free UML 2 tool box allowing you to specify and generate code in C++, Java, Idl, Php and Python.
  • Dia – is a GTK+ based diagram creation program for GNU/Linux, Unix and Windows released under the GPL license.
  • WebSequenceDiagrams

Utilities – Windows SysInternals

  • Process Explorer
  • Autoruns for Windows
  • Handle – is a utility that displays information about open handles for any process in the system.
  • ListDLLs – is able to show you the full path names of loaded modules – not just their base names.
  • VMMap – VMMap is a process virtual and physical memory analysis utility.
  • DebugView for Windows – is an application that lets you monitor debug output on your local system, or any computer on the network that you can reach via TCP/IP.



Tags: , , ,


September 16th, 2009 No comments

Notepad2, a fast and light-weight Notepad-like text editor with syntax highlighting. This program can be run out of the box without installation, and does not touch your system’s registry.

Download local version of  Notepad2


Tags: ,