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 0.9 can be downloaded here. The latest README is here.
Libunibreakupdated 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 really sucks at this)!
I am not a serious writer or translator, but I am 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.
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.092. 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.
gvim73.zip: my personal Win32 build of gvim.exe and vim.exe version 7.3.1314. 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) Python 3.2 and Tcl 8.4 are used (instead of Python 3.1 and Tcl 8.3); 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. You may also use my Cygwin script update_vimruntime.sh to update the Vim runtime files.
jhead-2.97-ccdwidth_hack.zipupdated: 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 2.97 source, my patch, and prebuilt binaries for Mac OS X Snow Leopard and Microsoft Windows.
breaktext: a small program that uses libunibreak (formerly
to break the lines of input text. Type ‘
for the usage. Some usage examples (Windows): ‘
input.txt output.txt’ breaks a UTF-16 text file with no
explicit language info; ‘
’ breaks a Chinese text file encoded in CP936.
or as HTML: my Vim
configuration file for Windows. It is 20 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.
tellenc.zip: a program to detect the encoding of a text file (source and Win32 binary included). It currently supports ASCII, UTF-8, UTF-16, UCS-4, Latin1, Windows-1252, CP437, GB2312, GBK, Big5, and SJIS. It is intended to work with Vim for file encoding autodetection: first multienc.vim, and now fencview.vim.
A Vim plug-in to echo the function declaration as in the tags file. It
display the function declaration when ‘
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.
highlighting on top of C/C++/IDL/Java for Vim. Currently I added some
comments on font choosing, and let
displayed in Bitstream Vera Sans Mono by default on Windows; otherwise it behaves
the same as the official
release 1.15. — Click here to see a
snapshot of gvim (under Red Hat Linux 8.0) with cvsmenu.vim and
doxygen.vim installed. — You do not need it under Vim
7. In that case Doxygen support should be already included in the
standard installation, and you only need to set the variable
load_doxygen_syntax to enable it, and possibly
doxygen_use_bitsream_vera to use that font. See also my _vimrc (search for ‘doxygen’).
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++11 Standard: the working draft closest to the C++11 Standard
C++ TR1 Information on Scott Meyers’ Site: TR1 (‘Technical Report 1’) is a specification for new functionality being added to C++’s standard library
Software Optimization Resources by Agner Fog: Excellent resources for optimizations, including but not limited to C++
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
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 (Win32): prebuilt binary for the non-interactive GNU downloader, v1.11.4 with complete OpenSSL support is only 403968 bytes, without any external dependencies!
STL Error Decryptor for C++: simplifies and/or reformats long-winded C++ error and warning messages, with a focus on STL-related diagnostics
Standard Template Library Programmer’s Guide: the original STL page from SGI
STLport: a multi-platform ANSI C++ Standard Library implementation based on the original SGI STL implementation
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 CUJ articles are highly recommended)
Joel On Software: insightful opinions on the software industry
The Old New Thing: informative, and often enlightening, blog of a Microsoft insider
A List Apart: good articles about website design
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 ‘吴咏炜’. Please notice that Eastern names usually go with family name first, so my given name is ‘Yongwei’. I have been a programmer for 20+ 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.