I am a seasoned software designer, developer and consultant. In business since 1998. Having worked for many years in public and private sectors in different countries, I have gained deep understanding of various approaches to software development processes. Exposure to multiple cultures, work with demanding clients in fast paced environments developed my communication and business skills. My approach is result-oriented, constructive and pragmatic.
I have recently upgraded my Amazon cloud t2.micro instance from Ubuntu 15.04 to 15.10. And soon I noticed a very strange high load on the machine - constantly above 2.0, and without doing much. The apparent culprit seemed kswapd0 process. I tried various simple steps to reduce the load, but nothing seemed to work, mainly because, as I already mentioned, no heavy activity was supposed to be happening.
Developers often have to look at log files. This is sometimes boring, sometimes tedious, but it's a fact of life. It would really help if some special lines, such as errors, warnings etc. could stand out. One way to do it is to use the clog utility.
To make clog usage more streamlined from a terminal, you can define this bash function:
Cmake is a great build tool. It takes care of generating build system files, targeting, among others, Unix makefile, MS Visual Studio, ninja, XCode etc. There are various extra modules available for Cmake. One in particular allows the discovery of MySQL development files, such as headers and libraries. It can be found here. Unfortunately, it has a few issues: it doesn't work for Windows, and it has a bug towards the end. Other alternatives I found on the web were even worse.
Recently I had to figure out how to publish a NUGet package to a private password-protected repository as part of a TeamCity CI build process. NUGet, for those who are not aware, is a tool for managing .NET software in a convenient manner. It is similar in its purpose to Maven, the Java packaging framework. The implementation details are, of course, quite different.
Scrapy is a nice python environment for web scraping, i.e. extracting information from web sites automatically by crawling them. It works best with anonymous data discovery, but nothing stops you from having active sessions as well. In fact, scrapy transparently manages cookies, which are usually used to track user sessions. Unfortunately, the sessions don't survive between runs. This, however, can be fixed quite easily by adding custom cookie middleware. Here is an example:
.NET's MemoryStream is a very convenient class. It allows you to use a byte array as storage, while accessing it via standard Stream API. Among other things, it allows you to work with a section of a larger byte array, which is very handy when different actions need to be taken for different slices.
I use Ubuntu (a modern Linux distribution) as my main work station. Everything worked fine until I upgraded from version 14.10 to 15.04 of the OS. At this point strange things started to happen. After working for an hour or two my environment would freeze and stop responding altogether. Neither Ctrl-Alt-Del nor Ctrl-Alt-Backspace would produce any reaction. I couldn't connect to the machine remotely as well. Only hard reset would take me out of this state.
Not an uncommon task in multithreaded programming - what if you want to terminate a background thread, which is blocked at the moment, and then to make sure it has actually exited. In .NET, you can do the following: