WordPress: a recipe for switching from Apache to Nginx.

Posted by – Monday 2016-05-23

This blog runs on a bunch of software items, among them an instance of the WordPress content management system and and a web server. For years I have trusted on the Apache HTTP server, despite I never liked it. Recently I switched to Nginx, a web server that is gaining a lot of traction, particularly among the busiest web sites [1, 2].

Why did I do this switch? For some reason unknown to me, some weeks ago Apache’s appetite for RAM memory went through the roof. None of the solutions I tested worked, including an update from Apache 2.2 to 2.4. Thus, I had a blog that was unusable: almost every request raised a HTTP 500 error. The following data provides some context: this blog is a low traffic one – it serves an average of 70 pages per day – and it is hosted on an inexpensive VPS that has 512 MB of RAM memory. The solution I took was switching to Nginx.

LEMP: Linux + Nginx + MySQL + PHP

This post is a quick-and-dirty recipe for switching an existing WordPress blog from the Apache web server to Nginx in a machine running a Debian 7 operating system. There is no original research: the instructions given here are taken from several web pages about Nginx, PHP and WordPress and put together here; and it is likely that there is room for improvement.


Exporting MS Access databases to SQLite.

Posted by – Saturday 2015-07-25

Sometimes you are given a database in MS Access (MDB) format. If your operating system is MS Windows and you have a MS Access license, working with this database should not be a issue.

If your operating system is Linux, the odds of working smoothly with such database are not good. The usual recipe for opening a MS Accesss database – actually, a MDB file – in a Linux machine is using LibreOffice Base plus the appropriate database driver. Usually this recipe will not work at the first attempt – and neither after many.

MS Access to SQLite

The alternative explored in this post is exporting the database from MS Access to SQLite. Both database technologies have in common the feature of being serverless. The output of this export process is a SQLite database which, like a MS Access database, is stored in a single file.


Some useful and aesthetic free map markers collections.

Posted by – Tuesday 2013-01-22

When creating a web map with OpenLayers, Leaflet, Google Maps or similar, a problem that sometimes arises is finding useful and aesthetic map markers, especially when it is required that the markers themselves have a meaning – for instance, points of interest – that is inmediate to users.

Under this requirement the default marker icons usually provided might not be good enough, or not suit a particular need. In this post we will list some collections of free map markers icons that might fill this gap.

1. Google Maps icons, and more.

A set of map marker icons intended to be used to represent points of interest can be found at http://www.lass.it/Web/viewer.aspx?id=4.

Google Maps map markers

2. OpenStreetMap map icons

The Open Street Map project has its own set of map icons, that can be found at http://wiki.openstreetmap.org/wiki/Osmarender/Symbols.

Open Street Map icons

The Open Street Map icons themselves can be found at the Subversion repository http://svn.openstreetmap.org/applications/share/map-icons/svg/, which is accessible via a web browser.


OpenLayers cluster strategy active state depending of current map scale.

Posted by – Monday 2013-01-07

1. The arena.

Among the strategies that OpenLayers has, a very important one is the cluster strategy (class OpenLayers.Strategy.Cluster). As explained in a OpenGeo workshop about OpenLayers [1]:

Loosely speaking, the OpenLayers.Strategy classes tie together the layer and the protocol. Strategies deal with when to make requests for data (or when to send modifications). Strategies can also determine how to prepare features before they end up in a layer.

The cluster strategy will pack together near features in a single one (clustering) before they are sent to the vector layer and rendered. The clustering threshold can be set by pixels or by distance.

OpenLayers cluster strategy example

This strategy is very useful when we have to deal with the task of showing a layer with a large number of features and we want offer users a clear presentation. Typically, this problem will happen at low zoom levels or, equivalently, at high map scale values. In this situation, most of the features, if not all, will lie in the map extent corresponding to the viewport.


Beware of decimal pixel values in OpenLayers.

Posted by – Wednesday 2012-12-19

So you are programming an OpenLayers based map viewer and attempt to make a WMS GetFeatureInfo request. The response will later be pretty-formatted and displayed to the user. In order to to accomplish this you create JavaScript code like the shown below:

var parameters = {
    srs: map.getProjection(),
    bbox: map.getExtent().toBBOX(6),
    width: map.getSize().w,
    height: map.getSize().h,
    x: evt.xy.x,
    y: evt.xy.y,
    layers: 'municipalities',
    query_layers: 'municipalities'

    method: 'get',
    url: this.getFeatureInfoUrl,
    async: false,
    params: parameters,
    success: function(data) {
       var responseText = data.responseText;
       // ...

where evt (lines 6 and 7) represents the mouse click event that triggered the GetFeatureInfo request.