1
I Use This!
Activity Not Available

News

Analyzed about 1 year ago. based on code collected over 1 year ago.
Posted 21 days ago by Alexis Wilke
In the last few days, I worked with, let's call him John, who read my post on my DNS issues in Aug 15, 2020 (I was spammed pretty bad by an amplification DNS attack). John wanted to run iplock on his system because it's much more flexible than ... [More] directly using iptables with fail2ban. So I made sure that it would compile on Ubuntu 20.04 and he made it work on his system by also copying the dependencies (i.e. the shared libraries). Here we present John's log on how to install iplock on a computer from a compiled version, opposed to directly from a package. The problem is that I ... read more [Less]
Posted about 1 year ago by Alexis Wilke
The Snap! Database System The Snap! C++ Content Management System makes use of two databases at this point: Cassandra Snap! Database System (sdbt) The Cassandra system has several drawbacks which we are slowly fixing by implementing the ... [More] SDBT environment. The main one at first is to have a set of journaling tables which Cassandra has a really hard time with. This is because it creates tombstones and the Cassandra files grow indefinitely rendering the whole system very slow over time. It is slow because Cassandra ends up having to scan these large files from start to finish ... read more [Less]
Posted about 1 year ago by Alexis Wilke
The Snap! Database System The Snap! C++ Content Management System makes use of two databases at this point: Cassandra and Snap! Database System (sdbt). The Cassandra system has several drawbacks which we are slowly fixing by implementing the SDBT ... [More] environment. The main one at first is to have a set of journaling tables which Cassandra has a really hard time with. This is because it creates tombstones and the Cassandra files grow indefinitely rendering the whole system very slow over time. It is slow because Cassandra ends up having to scan these large files from start to finish to gather the data on a read. Such reads end up being very long. When over about 10 seconds, it tends to timeout and more or less it breaks everything. So Cassandra is not a good solution for this type of tables. read more [Less]
Posted over 1 year ago by Alexis Wilke
Tunneling with SSH Today I had a need to connect my local VPS at my office to a VPS at DigitalOcean. Not only that, the DigitalOcean runs the service I wanted to connect to on a separate network. Here is an example of the network (the IPs are fake, of course): read more
Posted over 1 year ago by Admin
Today I created a new release, version 1.8. You can find it on github. This includes a ton of bug fixes that 1.7 was plagued with. It also includes new code (thread pool/thread worker) and especially, a break up of several objects from the ... [More] libsnapwebsites to their own contrib projects. This includes: snapdev (18 header only functions from the libsnapwebsites) addgetopt (snap_config.cpp/.h) cppthread (snap_thread.cpp/h) snaplogger (log.cpp/h) eventdispatcher (snap_communicator.cpp/h) snapcatch2 (our own catch project compatible with our projects) ... read more [Less]
Posted over 1 year ago by Alexis Wilke
Introduction to Shred In the last two days, I worked on a Jira task I had assigned to me in link with shredding files. Whenever you purge our project, it deletes a lot of files, including all the logs, configuration files, etc. By default, though ... [More] , the purge command will just do: rm -rf ... This generally works, only it is much better if you can also make sure that the content of the file is not recoverable. Under Unix systems, it often has been close to impossible to recover files because the OS was very quick at over reusing the just released blocks for new data. Not ... read more [Less]
Posted over 1 year ago by Alexis Wilke
When I first start of Snap!, I had one project, the snapwebsites folder. As I started growing the project, I wanted to have some features that required other modules such as the log4cplus library to handle logging. The fact is that as a result the ... [More] library (read: common code to all the Snap! Website services) as grown to be a really large one! Difficult to manage and each time a small change is made, we incur a long wait for rebuilding everything. So we started working on breaking up the library in smaller parts. We already have some functional projects which now encompass some of the low ... read more [Less]
Posted over 1 year ago by Alexis Wilke
Introduction The Event Dispatcher library is a low level C++ library used to communicate between local and remote services. For communication, the library supports TCP, UDP (direct and broadcast), Unix pipes. The event part also supports events ... [More] from Unix signals and the File System. Each one of these objects can also be given a timeout date or an elapse time to generate ticks. Most of the components of the Event Dispatcher library were developed in the libsnapwebsites library. It was detached from that library so we could make use of its powerful features in other projects. read more [Less]
Posted over 1 year ago by Admin
Introduction The C++ Thread project is the snap_thread.cpp/.h moved in its own project. We also will include any multi-thread related code to this project as we find it in our other libraries. The project allows for easy thread manipulation and ... [More] communication which makes it really easy to add multitasking to your projects. It also includes a thread pool with workers which we want to ameliorate to allow for concurrent programming rather than parallel programming, very much based on the Go environment. read more [Less]
Posted over 1 year ago by Admin
The Snap! Logger Project Originally, this project was a break up of the log.cpp and log.h from the libsnapwebsites to its own project. However, that implementation had a dependency on log4cplus which has all sorts of drawbacks for our Snap! ... [More] environment. Don't get me wrong, up to here, it served us well and log4cplus version 1.2.x works very well. That being said, our way of handling configuration files, the fact that we like to use fork() and a few other things, made us think that having our own implementation of a logger would improve our general environment quite a bit. This newer version of the logger is the result. read more [Less]