The pageview counter designed for this site, i.e., the one at the footer. I estimate that 99% of people nowadays use Python when dealing with MNIST. But this site promises not to use Python, thus chooses C++ for this gadget. The overall experience is not much complicated than Python, while it is expected to save a lot of carbons😁.
Implementation
Download MNIST testset and uncompress by gzip.
LeCun said that the first 5k images are easier, so the program only use the first 5k images.
Counter is saved into a file fcounter.db
.
Digits are randomly chosen from test images, assembled into one PNG image,
(with Magick++ which is easier),
then returned to the webserver via FastCGI.
Code
1 |
|
The code is put in public domain now.
Compilation
- Install APT packages
libmagick++-dev libfcgi-dev
. - For FastCGI++, compiler flags
-lfcgi++ -lfcgi
are required. - CMake can found Magick++ automatically. Otherwise, append compiler flags from
magick++-config
.
Deployment
I use spawn-fcgi
to spawn the compiled binary (set as a service in systemd
).
Most webservers support FastCGI, a reverse proxy to the port set by spawn-fcgi
completes the deployment.
I use Caddy:
1 | reverse_proxy /counter.png localhost:21930 { |
Add /counter.png
to the footer HTML, then you see digits bump on refresh.
Go through internal links will not bump if the explorer cached the image.