Local Subdomains under Ubuntu Linux and Apache 2.4 Tutorial

The whole process was described in this article, but there are few quirks to fix in newer Ubuntu (namely 13.10 / Apache 2.4).

  1. Every config file in sites-available has to have a .config extension now, so instead of
    gksudo gedit /etc/apache2/sites-available/project
    use
    gksudo gedit /etc/apache2/sites-available/project.config
    if upgrading fist add the extension to the /etc/apache2/sites-available/project config file, then delete /etc/apache2/sites-enabled/project and re-run “sudo a2ensite project” / restart apache.
  2. If your project root is located in your home directory you might get a persistent 403 / Forbidden error, that (weird as it is) has nothing to do with Linux permissions. To fix it add “Require all granted” directory directive. Here is how the new config file might look:
    <VirtualHost *:80>
    DocumentRoot /home/user/project
    ServerName project.localhost
    <Directory /home/user/project>
    AllowOverride All
    Order allow,deny
    Allow from all
    Require all granted
    </Directory>
    </VirtualHost>

So here are updated instructions for Ubuntu 13.10+ (and maybe some older versions). Continue reading

Outernet – globally available source of information

A Media Development Investment Fund (MDIF) project, Outernet will use a network of small satellites to transmit selected Internet data to any Wi-Fi-enabled device anywhere in the world at no cost.

By leveraging datacasting technology over a low-cost satellite constellation, Outernet is able to bypass censorship, ensure privacy, and offer a universally-accessible information service at no cost to global citizens. It’s the modern version of shortwave radio, or BitTorrent from space.

Sounds like fun, let’s hope it works out.

How To Fix Laravel 4.0 – 4.1 Upgrade

Recently I’ve upgraded a Laravel 4 application from version 4.0.10 to 4.1.18. Despite Laravel’s website having a nice upgrade guide I did encounter few quirks that needed a little attention and some extra work.

So the very first thing to do, would be to follow the mentioned guide, hopefully you’ll end up with working new version of your application and wouldn’t need anything else (use “php artisan” command in your application folder to check out the current Laravel version).

Though I ended up with the following error each time I tried to run an artisan command (including simple “php artisan”):

PHP Fatal error: Class 'Illuminate\Foundation\Providers\ConsoleSupportServiceProvider' not found ...

And there were indeed no ConsoleSupportServiceProvider in my installation. Surely “composer.phar update” did not work as well as it tries to execute “php artisan …” commands and suggested “composer.phar update –no-scripts” worked, but didn’t fix anything.

After a bit of research I ended up with a kind of “clean install” solution, so if you have the same or similar issue you may try following: Continue reading

jQuery Background Switcher: Navigation

Another update for our Unobtrusive Background Image Switcher jQuery plugin: new option to show the navigation links so that the user can switch between the images manually.

This option is disabled by default, to use it just enable the “links” option, the rest is up to CSS:

<div id="bg-body"></div>

<script type="text/javascript">
// array with image paths
var srcBgArray = [
  "/path/to/image1.jpg",
  "/path/to/image2.jpg",
  "/path/to/image3.jpg"
];

$(document).ready(function() {
  $('#bg-body').bcatBGSwitcher({
    urls: srcBgArray,
    alt: 'Alt text',
    links: true
  });
});
</script>

Since the images are not loaded at the time of the page load, they might have to be fetched after user clicks the link, in this case the loader animation has to be shown.

Loader element is created automatically if the links are enabled, the animation itself can be styled just as anything else, we included the default implementation in the demo.

Since we put few extra bytes to implement the new features, we now distribute the minified (with UglifyJS) version that is as light as 2.8 kb. If you want the source code – feel free to check out the Git repository.

Demo and downloads: