Nvwaupdated 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.
Liblinebreak is an open-source implementation of the line breaking algorithm as described in Unicode 6.0.0 Standard Annex 14. Line breaking is much more than breaking at the spaces!
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)
gvim73.zipupdated: my personal Win32 build of gvim.exe and vim.exe version 7.3.409. 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) Tcl 8.4 is used (instead of 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.90-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 2.90 source, my patch, and prebuilt binaries for Mac OS X Leopard and Microsoft Windows.
gvim72.zip: my personal Win32 build of gvim.exe and vim.exe version 7.2.446. 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, Python, Ruby, and Tcl support; 3) Perl 5.10, Python 2.5, and Tcl 8.4 are used (instead of Perl 5.8, Python 2.4, 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.
breaktext: a small program that uses liblinebreak
to break the lines of input text. Type ‘breaktext’
for the usage. Some usage examples (Windows): ‘breaktext
input.txt output.txt’ breaks a UTF-16 text file with no
explicit language info; ‘breaktext
’ breaks a Chinese text file encoded in CP936.
_vimrc
or as HTML: my Vim
configuration file for Windows. It is 18 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 fileencoding from
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.
echofunc.vim:
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
+balloon_eval.
cvsmenu.vim: 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.
doxygen.vim:
provides Doxygen
highlighting on top of C/C++/IDL/Java for Vim. Currently I added some
comments on font choosing, and let
<code> be
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’).
gvim64_patched.zip:
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,
since the *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)
The Draft C++ Standard in PDF and in HTML: the pre-C++98 draft standard that is freely available (the downloadable version of the formal standard costs US$18)
C++ TR1 Information on Scott Meyers’ Site: TR1 (‘Technical Report 1’) is a specification for new functionality being added to C++’s standard library
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
Microsoft Visual C++ 2008 Express Edition: a lightweight and free edition of Microsoft Visual C++ 2008 (with an IDE!), which also supports C++/CLI
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 often goes with family name first, so my given name is ‘Yongwei’. I have been a programmer for 20+ years, and 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.