I added some support for composite columns to libQtCassandra 0.4.3.

This allows one to read and write columns with composite names. This just means a way to read a column with optimized comparisons (i.e. if you include a 32 bit number, it uses 4 bytes in the table, whereas, using a name with a 32 bit number converted to hexadecimal would be 8 bytes, not counting posssible separators and potential for the separators to not allow easy constant sorting.)

Contrary to belief, the different part of a composite column name are not separated by colons. This is only in the CLI and many 4th generation ...

I'm working on an update of libQtCassandra so it works with 1.1.0 of Cassandra (and 0.8.0 of Thrift.) The update will also include additional tests and hopefully enhance the interface to support super-columns and columns with multiple names (a:b:c...) If time allows, I may even add counters.

Thirft

The compilation of the Cassandra interface with Thrift 0.8.0 did not compile as is. I had to make many fixes so that g++ compiled the output and changes to the libQtCassandra library too. It seems that Thrift removed a certain number of headers. It is also possible that the newer version ...

Print feature

This is more of a placeholder to find the location where I mention the print capability of Snap! C++.

The idea is simple: remove all the bells and whistles so one can print a page on white paper. This means a plain white background and in general black text. (We may even want to offer a black and white version.)

We could also add specific counters that are shown to website owners that tell them how many times users went to the print version (this does not mean they printed the page, but at least that they visited it.)

One important aspect of a print page: it is often saved for record. For ...

Links between rows

All the data in our system is linked one way or another. It is important in order to organize the data in a tree and to categorize it (to not say tag it).

The data starts with a Root node and everything is defined under that root node. The linkage is done using the name of each node and the name of the category being used (a category is itself a node of content, so for example the User category is a node defined under the Root node and a user account is defined as a child of the User category. Thus to find users, you start from the Root, go down to the User category, and then list all the ...

When using an SQL environment, it is very easy to create a new row of data with a unique number. You use a sequence identifier and your SQL system generates the numbers for you.

With Cassandra, there is no such thing as a unique number. There are facilities to count (add and subtract) but no unique number. This is actually very important to let the system go as fast as possible as it is expected to do. Because the only real way to create a unique number is to either make use of a single computer which generates those numbers (be it with an SQL database or another system) or to have all the ...

As you connect to your website, you want to know what needs to be maintained in order for your site to look at its best.

This includes a large set of things, some of which may not be shown to the user unless the user is pro-active and goes to a full status report for his website.

Things that should be shown to the user as he works on his website are:

  • Version of each element used with Snap! (Page of Versions is done--we should still show the main library version in the status)
  • Broken Links (maybe limited to 3 in the on-screen report + a link to the page(s) of content where the ...

Now the tables...

[these are old tables created a while back and they do not correspond the current scheme]

The new scheme will use a similar set of data, but it uses namespaces to distinguish fields from the different plugins. So for example if the title of a page is called "name" and the content module handles the title, then it will be saved in column: "content::name".

Pages are a quite broad concept that is run first by the core of the system and also by additional plug ins that add functionality to the pages. To do so the system and users can create and edit ...

The following is a list of HTML meta tags and links we want to support in Core. More will be added with time and some will be removed as their corresponding reference disappear.

Many of the links are defined by RFC 5988. Some are specific to a feature (icon, hub) and others are defined in Core (top, up, next, previous...)

Note that the Dublin Core meta tags were introduced with "dc." before. They now use "dcterm." instead.

Page XSLT definitions

The following describes the XML format expected by our layout XSLT files.

The XML is dynamically generated so we do not check it against a DTD at this time, although we will probably add that capability at some point so in Debug mode we'll be able to detect whether the we make a mistake when we create the XML.

XML File Header

Since it will generally be created in memory, the XML header will generally not be seen. However, for debug purposes, our XML data can be saved in a file in which case the XML header will appear. At this point, we do not include any information about the DTD.

 ...

Introduction

The Layout is implemented using XML data from the database, variables from the running process, and a set of XSLT define in your layouts and internal extraneous XSLT definitions as offered by the core and different extensions.

XSLT is used to transform the XML data into an actual page that can be display in a website.

This page gives some information about XSLT and different features available in that language.

[Note: I'm writing this before doing the actual implementation of the data and therefore it is likely to change by the time it is fully implemented.]

At the ...

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

Contact Us Directly