Nvwa is my small collection of C++ utilities in Open Source. It includes a memory leakage detector, a ‘static’ memory pool, a thread transparency layer, and other such stuff. Release 1.0 can be downloaded here. The latest README is here.
Libunibreak is an open-source implementation of the line and word breaking algorithms as described in Unicode Standard Annexes 14 and 29. Line and word splitting is much more than breaking at the spaces (the China Web world often sucks at this)!
I am not a serious writer or translator, but I was honoured to be one of the three translators to translate a very good old book, Programmers At Work. You can find out more details (in Chinese) in the link of the Chinese translation.
Upgrading to Boost 1.61 in MacPorts (2016-08-18)new
yield and C++ Coroutines (2016-08-16)new
A Small Experiment of System Scripting in Python (2016-07-24)
Choosing a Multi-Precision Library for C++ — A Critique (2016-06-04)
MSVCRT.DLL Console I/O Bug (2016-05-27)
Generic Lambdas and the
Type Deduction and My Reference Mistakes (2014-12-29)
Installing Clang 3.5 for Windows (2014-12-24)
A Complaint of ODF’s Asian Language Support (2014-12-18)
Y Combinator and C++ (2014-12-14)
Study Notes: Functional Programming with C++ (2014-12-7)
Specify LANG in a UTF-8 Web Page! (2006-3-28)
Vim 实用技术：技巧，插件，定制 (Practical Vim); PDF version available (2006-3-22)
Design and Implementation of a Static Memory Pool (2005-1-11)
A Cross-Platform Memory Leak Detector (2004-11-28)
Stdcall and DLL tools of MSVC and MinGW (2002-8-20)
Issues about Time Routines on Win32 and *NIX (2002-2-26)
A Fast String Implementation for STL Map (2002-2-24)
MSVC and MinGW DLL Interlinking FAQ (2001-12-21)
Multibyte Functions in Microsoft C Run-time (2001-12-16)
ASP 应用程序开发规范 (Active Server Pages Programming Guide) (2001-8-12)
gvim74.zipupdated: my personal Win32 build of gvim.exe and
vim.exe version 7.4.2216 (DirectX support introduced in 7.4.393 is
compiled in the GUI version so as to support Unicode characters beyond BMP).
It differs from the standard Vim
executables in the following ways: 1) the file and product versions
are in the form major.minor.patchlevel (not
major.minor.build.patchlevel) and are
consistently updated; 2) both the GUI and console versions are
compiled with Perl, Python2, Python3, Ruby, Tcl, and Lua support; 3) Ruby
2.0 is used (instead of Ruby 1.9.2); and 4) a private patch is used to
make plug-ins like fencview.vim
run more smoothly on Windows.
The build and patch files can be
downloaded as an archive.
Check out my GitHub Vim page on
how I build Vim.
breaktext: a small program that uses libunibreak (formerly
liblinebreak) to break the lines of input text. Type
breaktext’ for the usage. Some usage examples
breaktext input.txt output.txt’ breaks a
UTF-16 text file with no explicit language info; ‘
’ breaks a Chinese text file encoded in CP936. The
source has only changed slightly recently, but I have to build the Windows
binary with MSVC now, as MinGW GCC (which I used back in 2009) uses the
unreliable C runtime — MSVCRT.DLL — which is terribly
broken in Windows versions later than Windows XP when dealing with
multi-byte characters, without even being able to output a single Chinese
putwchar(wch)! The same code runs without any
problems in MSVC versions that do not depend on MSVCRT.DLL (i.e., any MSVC
compilers later than Visual C++ 6.0).
jhead-3.00-ccdwidth_hack.zip: a modified version of the command-line tool jhead that reports the correct ‘35mm equivalent focal length’ on resized photos from Canon digital cameras (this is a common problem for resized digital photos, if they do not contain the EXIF 2.2 tag ‘FocalLengthIn35mmFilm’ — Picasa has this problem too). This download contains the original jhead 3.00 source, my patch, and prebuilt binaries for Mac OS X Snow Leopard and Microsoft Windows.
or as HTML: my Vim
configuration file for Windows. It is 23 KB, and is designed for Vim 7, with
heavy customizations on using Chinese/Japanese/Korean
together with Western European languages. It is well commented, and
should serve as a good reference if you intend to customize your Vim.
Notice: You should have iconv to set a different
encoding, as is done in this
_vimrc. Please download libiconv-win32
and extract iconv.dll to somewhere in the path or where gvim.exe
is, if you do not have it already. After doing that, you should also save the
original libintl.dll in the Vim directory, and replace it with
intl.dll from gettext-win32
tellenc: a program to detect the encoding of a text file (source and Win32 binary included). It supports ASCII, UTF-8, UTF-16, UCS-4, Latin1, Windows-1252, CP437, GB2312, GBK, Big5, SJIS, etc. It is intended to work with Vim for file encoding autodetection: first multienc.vim, and now fencview.vim. The latest source is available on GitHub, but the Windows binary will be provided here from time to time.
A Vim plug-in to echo the function declaration as in the tags file. It
display the function declaration when ‘
(’ is typed,
and it support displaying the function declaration, variable definition, etc.
as tooltips when Vim is compiled with
the CVS integration plug-in for Vim.
I use it daily, so it is updated quite often. It supports
menu and short-cut operations, and has special multi-encoding support. The
script is now hosted at Vim Online (don’t forget to give me a good rating
if you find it useful ;-)). You can see some snapshots here: CVS Annotate, CVS Diff, CVS Log, CVS Directory Local
status; and an old snapshot showing the menu.
my personal Win32 build of gvim.exe version 6.4.10 (with no Perl,
Python, Ruby, or Tcl support) with a special patch. This is for archival
purpose only, since Vim 7 has already incorporated the patch, as well as added
many new features. The patch is necessary for the Vim option
encoding=utf-8 to work reliably on Far East versions of Windows,
*printf functions in the Microsoft C Runtime
(MSVCRT.DLL) require the format string to be encoded as expected by the
country preference specified in the Regional Options if one calls
setlocale(LC_ALL, ""). It works very well for me, but Bram did
not accept in into the 6.x source tree because he thought the patch was
a little risky
for a stable version. See also my old _vimrc.
synctime: a simple POSIX C program to synchronize local time with a time server on the Internet (tested under Cygwin and Linux).
reimp (enhanced version by José Fonseca): a tool to convert a Win32 import library (.lib) into a .a file usable with GCC for Win32 (MinGW).
CGIC 1.07 (fixed for Win32): CGI programming library in C by Thomas Boutell.
ASP samples file: accompanying the Active Server Pages Programming Guide.
Free Culture: a must-read for everybody who cares about freedom in more than software
Bjarne Stroustrup’s C++ Page: every C++ programmer should read the page from the designer and original implementor of C++ (the papers are especially recommended)
Draft C++14 Standard: the committee draft of the C++14 Standard
Draft C++11 Standard: the working draft closest to the C++11 Standard
Boost C++ Libraries: free peer-reviewed portable C++ source libraries that are candidates for the future C++ Standard
Andrei Alexandrescu: author of Modern C++ Design and pioneer in policy-based design (the free chapters and the articles are highly recommended)
Software Optimization Resources by Agner Fog: Excellent resources for optimizations, including but not limited to C++
Clang Home Page: Currently my favourite C++ compiler (though it works best on a Mac, I use it even on Windows, both to test new C++ features and to use the handy clang-format)
GCC Home Page: the prosperity of Open Source software depends upon this Open Source C/C++/Fortran/Java/... compiler
MinGW — Minimalist GNU for Windows: the GCC compiler and related toolchain for Windows
MinGW-w64 build: Unofficial but easy-to-use MinGW toolchain download for Windows (abundant choices are provided for SJLJ/DWARF and thread libraries; the SJLJ versions can target both x86 and x64)
Debugging Tools for Windows: the free debugger from Microsoft (that can be used to debug MSVC-compiled programs)
Vim Online: all about this excellent Open Source editor
Cygwin Home: a Linux-like environment for Windows
Native Win32 Ports of some GNU Utilities: recommended for Windows users that are used to UNIX command lines
WGET for Windows: This is the non-interactive GNU downloader. I used to use binaries from Bart Puype’s WGET for Windows page, which featured very small executables. However, that site is now gone, and Jernej Simončič is providing a build that has nice Windows integration and is much more up-to-date.
Standard Template Library Programmer’s Guide: the original STL page from SGI
Joel On Software: insightful opinions on the software industry
The Old New Thing: informative, and often enlightening, blog of a Microsoft insider
Larabie Fonts: hundreds of free (fancy) fonts
Dieter Steffmann @ typOasis: hundreds of free (traditional) fonts
I am Chinese, and my full name in Chinese is 吴咏炜 (Wu Yongwei). Eastern names usually go with family name first, so my given name is ‘Yongwei’. I have been a programmer for ~30 years, and am mostly interested in writing code that is reliable, reusable, efficient, and cross-platform.
You can find me in the Google services like Mail, Plus, and PicasaWeb by the user name wuyongwei. You can also check out my LinkedIn Profile for my professional experience.