Skip to content
franke-hub edited this page Jul 19, 2020 · 15 revisions

Welcome to the Project wiki!

This is basically my development environment. It include batch files, make files, multiple libraries and multiple sample programs. They all compile in current versions of Cygwin, Fedora, and Ubuntu. Since there are some programs here written in 2007 that haven't been compiled in years, so "all" might be a slight exaggeration.

Features

  • Utility libraries in C++, C#, Java, and Python.
  • Multi-threading library functions, including a novel and efficient multiple-enqueue single-dequeue implementation.
  • Sample programs in multiple languages, including HTTP clients and servers in C++, Java, and Python. For C++, see ~/src/cpp/Sample/.
  • Sample instructive "how-to" programs. (See ~/src/cpp/Howto)
  • A bash script library.
  • A development environment that is not an IDE, but a code layout structure.

Current Status

This distribution is READY for public use.

  • The build instructions are complete up to building the C++ library.
  • Some of the older sample programs may not compile or run properly. Report an issue if you run into problems.

General notes

Almost all code is object oriented, using Java-like object containers. For example, a C++ thread object is called a Thread. In C++, the Thread object is located in Thread.h and its implementation is in Thread.cpp. The methods start() and run() operate similarly to the Java library implementation.

Not everything in this distribution is intended to be useful. Some is intended to be joyful and/or amusing. There are a few lilypond source files, some containing original music, some classical. Some sample programs were used for learning: How does this or that work. You might be amused at their naivety or consider using similar technique when needed.

Most subdirectories contain .README documentation files. This wiki contains additional documentation. Issues may be submitted for missing documentation.

About the author

I am a retired (since 2005) programmer, good enough to make a decent living working for a large company. I've been considered an expert on multi-threading programming, and the techniques used in the libraries and samples are pretty good, even now (at least in that respect.) I program as a hobby and have since I learned how to program.

While I have dabbled in some areas, it's just that, dabbling. For example, The neural net and graphic sample library functions and programs included in the distribution are, at best, well behind the state of the art. I'll try to let you know about other instances where this is true.

I'm a novice with respect to github. I've used git for years, but haven't explored it. My expertise is kind of at the level a C programmer, graduated into the C++, moving up from version to version. GCC is the compiler of choice and the current version is gnu++17.

The "Step by step Ubuntu Guide" walks you through an Ubuntu installation. To aid in completeness, this was written while actually performing these step-by-step instructions. Also ~/src/log/howto/howto.installLinux.log is the step-by-step guide I use every time I create a virtual machine. This includes more steps and gets you farther, but the Ubuntu Guide gets the C++ libraries completely built.

The complete library, all ~/obj/cpp/lib//Test/., the ~/obj/cpp/Howto/., and the ~/obj/cpp/Stress/. subdirectories currently compile and operate correctly. All ~/obj/cpp/Sample//. subdirectories compile but most have not been recently tested.

Content

  • The C++ libraries. The header files also document the available functions.
  • Sample programs. These fully operational samples also describe some of what you SHOULDN'T do.

Python

I install my python library crudely, using sudo to create a link from site-packages/lib -> /home/userid/src/py/lib. As an aside, ~/src/py/ files work even when they're mounted on a read-only file system. Apparently if python can't save the compiled code, it simply and silently won't.