Blogs

Today, I again ran in a QASSERT(). The problem with an assert is that the software stops and voilà. Yes. The assert has a message telling me what happened (why it is asserting) and the location of the assert.

So I know it was a QList problem because of an out of range index. Good.

Only, to fix said problem, you need the location of the caller. Knowing that an assert was generated in qlist.h is hardly helpful.

Of course, most of you will say: just run your software in your debugger, then it will break when the assert happens. True, unless the assert happens in a child process you ...

Today I started work to switch from using log4cplus with files directly to using the loggingserver. Not only that, it is using the newest version (on the edge!) which is 1.2.0-rc3. Up to here, no major problem.

However, the newer version forces you to use a version of the log4cplus library which is multi-threaded. This causes a major problem because the server makes use of fork() to create child processes each time a connection is made. There are several reason to do so, but there are a couple that I think are certainly the most important ones:

  1. Having a child allocating resources can ...

The controlled_vars library allows you to define variables that you never initialize. This is very practical if you have a large number of variables or a large number of objects of a class.

The idea is pretty simple and once you remove the debug, the variable becomes 1 to 1 equivalent to a char, unsigned char, signed char, short, unsigned short, int, unsigned, long, unsigned long, etc. In other words, it goes really fast.

However, in debug mode, the class adds a bool to know whether the variable was initialized or not. If not yet initialized, you cannot read the value or you get an ...

Introduction

In order to run tests against what looks like a real cluster of Cassandra nodes, one wants to create multiple nodes and run them in parallel and run their software against that cluster.

So, I decided to create two racks on two separate computers. Each computer runs 3 VMs each run one instance of Cassandra. The VMs are installed with the most basic Ubuntu server (i.e. do not add anything when offered to install LAMP and other systems), Java, and Cassandra.

Network

Local Network

It is possible to setup a VM to make use of the local network (LAN). VirtualBox will ...

Introduction

The following are instructions to get Cassandra installed on your servers.

You may also want to install Cassandra directly from a file distributed from the Cassandra website (if you want to work with a version on the edge.) In that case, the Java installation instructions still apply to you, however, the Cassandra installation then falls in your lap...

Table of Contents

Java

Cassandra uses Java so you want to install Java first. In order to get the latest version of Java directly from Oracle, you want to install the PPA update source as follow:

sudo vim ...

Just made a new addition to the project: snapwatchdog.

This is a daemon running in the background used to gather statistics about each server running in a Snap! cluster.

The statistics are saved in an XML file1 and already include the following information:

  • CPU usage
    • Average load for 1, 5, and 15 minutes
    • Total usage in User, System, Idle modes
    • Total count of Page Cached and Swap Cache
    • Time when the system was last rebooted
    • Total number of ...
  • 1. Ready to be processed by an XSLT stylesheet to present the results to the end user.

Snap! is being developed in a way which is quite different from many of the existing CMS.

One of the features is to move pages being deleted to a trashcan, in effect, not actually deleting the data from the Cassandra cluster, but keeping it in a different place.

Actually, the "move page" feature in Snap! does not move anything, it makes a copy of the existing data in the specified destination and marks the old data as hidden. It also links the old and new data together and time stamp them.

There are several reason for doing all of that work. First of all, the Cassandra cluster ...

There is yet another update of libtld. This time the effective_tld_names.dat file included many new gTLDs, even some that are not yet, but will very soon be official.

It also included many corrections to existing country domain names such as .uk which is now available as a first level domain name, and .ve which changed quite a bit too.

There are also a few domains that were removed (now marked deprecated) such as 4 .us and 2 .ru sub-domains.

As per the list from Mozilla, there are quite a few new sub-domains used as main domain names by various businesses such as a few amazonaws and a new ...

As you may know, ICANN decided to offer many new TLDs (top level domain names) and the available of those started in 2013. This is a second update of libtld with many new TLDs as of Sep 2014.

I added the following:

.accountants
.audio
.beer
.bio
.church
.claims
.credit
.digital
.direct
.global
.guide
.hamburg
.hiphop
.host
.juegos
.life
.loans
.place
.press
.productions
.reise
.surf
.website (we got snap.website, of course!)

I also added .loan in the proposed list. There are another 292 or so that have been proposed and that we could add to that ...

Cassandra is very light weight, contrary to a standard database, they coin the safety of your data on the fact that it gets replicated many times, not on the fact that it gets transported safely between you and its journal and the drive.

There is a huge impact to that light weight though. Once in a while, the tables, or more specifically, a node journal get mangled. When that happens, you can continue to use Cassandra for any data that appears before the mangled data. This gives you the impression that everything works, when in fact, something is awry in that node.

An interesting side effect ...

Syndicate content Syndicate content

Snap! Websites
An Open Source CMS System in C++

Contact Us Directly