An implementation page that is not categorized.

As I am working on the system, I often saw this error saying that the server could not connect.

I now know exactly why it happens, and have a very simple solution.

When I setup the Snap! C++ server to connect to the Cassandra server, I used "localhost" as the address. Since we only want to connect to Cassandra locally while doing development (once installed, not so much!)

The result of using localhost is that the address lookup returns two addresses:

IPv6 or [::1]
IPv4 or

Then the Thrift library decides to first test the IPv6 address (which makes sens, they are ...

We are using Cassandra on our Ubuntu servers and when starting 1.1.4 or 1.1.5 we have an issue where the Java interpreter crashes with a segmentation fault.

The problem is that it tries to start javaagent and that makes use of more stack than is allocated by Cassandra to the java engine. The result is a hard crash with a segmentation fault from the OpenJDK environment.

The bug is described in this issue: Cassandra crashes with segmentation fault on Debian 5.0 and Ubuntu 10.10

To fix the problem I had to edit the conf/cassandra-env.sh and replace the 180 by 256 on line 188. (It should say ...

Known Issues

The following are known issues that are beyond what we can repair.

These generally result from an operating system, a development environment, or a project over which we do not have direct control.

We try to provide the current work around or a way to repair your environment when we have an idea of what it is.

Some C++ References

C++ Operators

The following gives you the level of all C++ operators. It is often useful to know.

(table follows)

Build System


To handle the environment, as it grows, we want a build system that is capable of recompiling everything, build and publish the binaries, make source that compiles available to our users and run the available tests to detect that everything still works as expected.

Launchpad Builds

We actually went with building everything directly on Launchpad which is offered by Ubuntu (owned by Canonical.) This means if you are running Ubuntu, you do not need to worry about recompiling everything. Instead you can just install the necessary PPA and do:

sudo apt-get install snapserver ...


The Snap! Server comes with a set of tools that incorporate a help. This help is found in this book. Each tool has his own chapter and the tool knows that URL to access that chapter.

List of Useful Widgets

Details about the Widget feature.

Widgets ideas goes to infinitum since for every application you need a few specialized widgets. However, having a strong base will definitively help in getting small applications done without the need to re-implement widgets everytime.

The following is a list based on Qt widgets (since I consider that Qt works quite well for many apps.):

  • Box -- a box used to group other widgets (should support a grid like feature -- this may be what we call the layout though)
  • Button -- a widget that you can click to generate an action; it should be ...

URL Test

This page is a proof of concept more for myself than for the community although it can be useful for you to further understand the search mechanism offered by the URL.

URL Parts

The URL may include several different types of parts that are defined in detail below.


This URL parts are:

  • http -- protocol
  • user:password -- authentication, always an option
  • en.3.5. -- sub-domain
  • port -- port, must also be defined in Apache
  • example.com -- domain and TLD
  • software/snap -- path
  • page=1 -- ...

Table names

Tables are well defined so they get very specific names and do not need any special handling.

Column names

In most cases column names are like C++ member variable names: they are well defined. These names are expected to be defined with a namespace (i.e. the page data is written starting with page::.)

Once in a while column names are actually row names. This happens when a table is used as an index. In this case the column name uses the copy of a row name so there is nothing complicated to defining these names.

Row names

So... row names are complicated.

There are ...


It is expected that you use a firewall to prevent all connections to your webserver except those on port 80 and 443 and any other port that Apache would answer.

Any other port could cause issues and you are responsible for them.

The Snap Server, if given permission, will be capable to deal with iptables to block users that are detected as flooding the server and not slowing down when asked to.

See iplock firewall tool


At this point we intend to only support Apache as a webserver. One thing about this server, it is used by many and is known to be quite safe to use as a ...

Syndicate content Syndicate content

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

Contact Us Directly