11 of the Best Google Analytics Alternatives

So most webmasters know about Google Analytics and have probably used it to some degree, but did you know that there are some pretty good alternatives out there, some even better than the all-famous Google Analytics. We have decided to do a roundup and show off some of our favourites – obviously, we favour Statvoo as we created it, so it’s clearly better ;). Clicky Clicky focuses on keeping things simple and lets you see the stats that matter as they come in.

503 Service Unavailable: Back-end server is at capacity

The Web server (running the Web site) is currently unable to handle the HTTP request due to a temporary overloading or maintenance of the server. The implication is that this is a temporary condition which will be alleviated after some delay. Some servers in this state may also simply refuse the socket connection, in which case a different error may be generated because the socket creation timed out. Fixing 503 errors

User Testing and Feedback?

So now you have a website, you use it and love it, but does everybody else? There are many tools out there that allow you to do User Acceptance Testing and provide Feedback from real users, but what are the options? Here are some options we have found that may be of interest. UserTesting.com UserTesting.com provides on-demand usability testing. Uxeria.com Your solution for rapid user testing. Users recording in 48 hours.

Date ranges are the key to a better index

Since AO Analytics originally went live in February 2013, we have been doing focused around individual time based reporting, it worked well and we were able to sort through indexes without doing full table scans. After much feedback from our users as well as data usage patterns we made the decision to move to date ranges. This replaced our entire retrieval algorithm and therefore copious amounts of work had to go into regression of backward compatibility while introducing the new way of moving forward with the overall system.

Track your Alexa Rank History

The Alexa Rank is a way of determining a website’s popularity. ?Alexa.com are in the game of Internet popularity ranking and for quite a long time now have been doing a very good job of it. They have a system where the most visited website on the planet is rated as #1 and the second is #2 and so on. If your site is within the top 100,000 alexa rank it is watched more closely and general usage statistics are calculated about it.

SSL Encryption – Update

We have just rolled out SSL encrytion on Statvoo which means: Event data is saved over a secure channel Authentication is done automatically All our user’s login information can not be cached over proxies Https sites can now use the service as well

Why Website Analytics Is So Important These Days

The web has come a long way since Tim Berners-Lee, a British scientist at CERN, “invented” the World Wide Web (WWW) in 1989. Above is the very first Web Server with the classic label on the front “This machine is a server, DO NOT POWER DOWN!!”. Which has become an object of many nerds interests as with it being the very first web server, it is quite an interesting machine to study – not that it is available to play around with, but just because of the nerd value it adds.

Create daterange array of missing dates

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 <?

Speedtest on Ubuntu Server (commandline)

Using the speedtest-cli is easy and very useful. You run it as follows: 1 2 3 wget -O speedtest-cli https://raw.github.com/sivel/speedtest-cli/master/speedtest_cli.py chmod +x speedtest-cli ./speedtest-cli

URL GET vars to PHP Array

Sometimes you will need to retrieve the GET variables passed into the current page URI or you will have a URL string to work from which contains certain GET variables, the below method helps a lot to convert them into an array which you can easily manipulate later. 1 2 $url = $_SERVER["REQUEST_URI"]; parse_str(parse_url($url, PHP_URL_QUERY), $array); $array is now an array of all the GET variables in the URL. Alternatively you can pass a URI string in place of the $_SERVER[“REQUEST_URI”] by replacing the $url variable with something else.

python "AttributeError: ZipFile instance has no attribute ‘__exit__"

This is actually a very easy error to fix, eventhough off the bat it seems a lot more involved. You probably have syntax something like this: 1 2 with zipfile.ZipFile(wr_zip) as zipfd: extract(zipfd, wr_csv, wr_csv) So instead we will change it to this: 1 2 zipfd = zipfile.ZipFile(wr_zip) extract(zipfd, wr_csv, wr_csv) The reason this fixes it is because at the moment (Python 2.6/2.7 I believe) the zipfile.ZipFile class has no __exit__ attribute, so it does not work with a `with statement` as other file objects do.

Remove specific HTML tags using PHP

There are times when you want to remove a specific HTML tag from an HTML block of text. This could be an anchor(>) or an image() perhaps. You can use preg_replace to do this quite quickly and efficiently. Remove an anchor: 1 2 3 $content = "Sample text <a href="#">Our anchor</a>. Etc etc"; $content = preg_replace('/<\/?a[^>]*>/','',$content); //$content is now -> "Sample text. Etc etc"; Remove an image: 1 2 3 $content = "Sample text <img src="our_image.

Keep Google Map v3 centered when browser is resized

Using Google Maps V3 Javascript API you can keep the map centered to the browser’s window by using the following trick when resizing the window. 1 2 3 4 5 6 7 8 9 10 11 12 13 var mapOptions = { zoom: 2, center: new google.maps.LatLng(0,0), mapTypeId: google.maps.MapTypeId.ROADMAP }; var map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions); // this is our gem google.maps.event.addDomListener(window, "resize", function() { var center = map.getCenter(); google.maps.event.trigger(map, "resize"); map.

Buy a Google Nexus 10 in the UK!

If you are looking to get a Google Nexus 10 inch tablet and are based in the UK you are in for a shocker! The only place to buy it is at the Google Play store and since about the middle of November 2012 they have been sold out. Some people say it’s due to delayed deliveries and orders and some say it’s just bad management on Google’s behalf. I think the latter is probably the thing that actually happened as no other tablet providers seem to ever have this problem.

Let Joomla and MySQL interact!

I often need a quick and easy few lines to retrieve some data from MySQL using Joomla without all the MVC nonsense that usually goes about this topic. So here is how I do it! 1 2 3 4 $dbSEL = JFactory::getDbo(); $dbSEL->setQuery("SELECT MAX(`start_price`) FROM #__some_table"); $dbSEL->query(); echo $dbSEL->fetchRow(); As you can see above, we get the current database object and then run a query on it. You may notice the hash (#) in the SQL statement of this example, Joomla replaces that (as well as the underscores (__) with the database prefix which is configured, so on shared nodes you don’t have to type all that extra stuff that will need to be changed later.

Perform a Mysql Query using Joomla!

This is really actually meant for future reference for myself as lately I’ve been doing quite a lot of Joomla! mysql coding and have used the following code just short of 3million times. 1 2 3 4 5 $db = JFactory::getDbo(); $querySelectId = "SELECT `id` FROM #__some_table WHERE `user_id`='$user_id'"; $db->setQuery($querySelectId); $db->query(); $data = $db->loadAssoc(); What we do in the above code snippet is select a user_id from some_table (#__) is short for whatever your database table’s prefix is (Joomla!

Refresh User Data in Joomla

I was busy with a custom component in Joomla, and it stored it’s own user_details based off of the main users table, but if the details were changed then I needed the system to update the session to reflect the changes. This is what I did: 1 2 3 4 $user = JFactory::getUser(); $session = JFactory::getSession(); $session->set("user", new JUser($user->id)); $user = JFactory::getUser();

Extract email addresses from a string – PHP

Sometimes you need to extract multiple email addresses from a string and the following function will make all your dreams come true. 1 2 3 4 function extract_emails_from($string){ preg_match_all("/[\._a-zA-Z0-9-]+@[\._a-zA-Z0-9-]+/i", $string, $matches); return $matches[0]; } ..and this is how you use it: 1 2 $text = "this is some text and here is an email address [email protected], here's another [email protected], etc.."; $emails = extract_emails_from($text); Now let’s use the data: 1 2 3 4 5 6 7 // as string print(implode("\n", $emails)); // loop as array foreach($emails as $email) { echo $email .

How to drive traffic to your website!

This is a very hot topic indeed. Definitely one that everyone with a website should know all about. To begin our journey we will look directly at the Traffic Generator Sites out there who – to be honest – are complete scams because all they really do is one of two things… 1.) Load your site into those annoying pop-under ad windows that users close immediately as they appear(not having opened them themselves)

jQuery limit fields to alphanumeric characters only

I was trying to restrict a form’s field from only allowing the user to enter alphanumeric characters into it. I looked all around and couldn’t find a nice way to do it without a plugin, so I wrote my own bind function that you can attach straight to an element. 1 2 3 4 5 6 7 8 9 10 $("#yourFieldsElementId").bind("keypress", function (event) { if (event.charCode!=0) { var regex = new RegExp("^[a-zA-Z0-9]+$"); var key = String.