Innovative Web Solutions
Blue Star have a proven reputation for building
high performance web designs and web applications
backed up by strategic online marketing campaigns.

Archive for the ‘Web Design’ Category

.ie sees record registrations

Sunday, April 4th, 2010

The number of .ie registrations has reached a record high despite the recession, it has been revealed by the IE Domain Registry (IEDR), the managed registry for this domain.

The registry found a total of 9,781 .ie domains were registered in the first quarter of 2009, and that registrations in that period were up 28 per cent over the final quarter of 2008.The previous highest number of registrations was recorded in the first quarter of 2008 - at 9,092.

Over 80 per cent of the new .ie website addresses were registered by sole traders or limited companies, with the rest registered by clubs, societies and charities. A total of 98 per cent of the growth in registrations was generated by .ie resellers.

According to the IEDR, the increasing number of companies and sole traders moving their business online with a .ie website is one of the main reasons for the increase.

Post to Twitter Post to Facebook Post to MySpace

Blue Star website redesign

Sunday, July 5th, 2009

After 4 years since our last design we felt it high time to redesign and bring our online presence up to date with modern design practices. We hope you like the fresh new look!

Post to Twitter Post to Facebook Post to MySpace

Web Design in two minutes

Thursday, January 15th, 2009

A nice composition and insight into the web design process. The backing soundtrack uses the same music as the popular youtube time-lapse video of a man ageing 6 years.

Post to Twitter Post to Facebook Post to MySpace

WordPress uprade annoyances

Saturday, January 3rd, 2009

I recently upgraded to WordPress 2.7 only to find the theme customisations overwritten.  This is most annoying and I would have expected changes made to be left unaffected.  So its back to the drawing board and start from scratch to re-skin our blog, which I hope to get to when time allows.  On the plus side WP 2.7 is very slick and well put together.

Post to Twitter Post to Facebook Post to MySpace

Lorem ipsum generator

Thursday, November 13th, 2008

During the initial stages of developing a website it is common that the client does not have content prepared before a draft design is completed.  A simple solution to this is to use Lorem Ipsum text, essentially dummy text that has been used in the printing industry and type-setting.  Lorem Ipsum has been the industry’s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged.

This website offers a Lorem Ipsum generator for numerous type layoùts, e.g. paragraph, bullet list etc

http://www.lipsum.com

Post to Twitter Post to Facebook Post to MySpace

Google circa 1960!

Tuesday, October 9th, 2007

Came across this gem of Google humor, what form would Google deploy its technology in 1960?
Well, here’s at least one take on that conecpt…

Post to Twitter Post to Facebook Post to MySpace

Google Gears - Bridging the Offline and Online

Monday, October 1st, 2007

Google Gears is installed locally on the user’s machine and integrates with your web browser, you then grant access to web sites wishing you use Gears. Once this has been done the online application can synchronize data locally to work with offline while also enabling the application to work and be fuly functional without an active connection, making the transition to offline use of the web site almost seamless since upon connecting to the network at the next oppurtunity any modifications to data made offline will once again be synced online.

Google Reader, Google’s home grown RSS/Atom news reader is the first app to use Gears officialy by Google. And it works quite nicely as a proof of concept. Their are endless possibilities for such a platform as Gears, especially in the enterprise where commutes and travel often leave one without access to the internet, trains, flights and the general to and fro. Wireless networks are at a high penetration in a lot of cities, and yes mobile cellular broadband is starting to become practical, but there will always be a time or place when you are an exile from cyberspace. In these dark times getting to your online applications that you require can be made possible by Google Gears.

The application candidates best suited for adoption are those in the line of collaboration and content managment. And I’m quite sure Google has thought of this too as the Google Docs suite of applications is a prime candidate for Google Gears and I, along with many others eagerly anticipate this reality. One has to think that Google is trampling Mircosoft’s garden with this bold move.

Post to Twitter Post to Facebook Post to MySpace

explaining algorithm updates and data refreshes on google

Friday, December 29th, 2006

There has been much digression on the SEO blogosphere regarding Google updates, there is much conflicting information out there covering past methods such as the Google Dance and other monthly updates. Updates no longer take place monthly in monolithic shifts but rather as incremental updates to index, so some areas of search will vary from day to day depending on the frequency of updates there. The following blog post by Matt Cutts gives more details on the history and current updating techniques and frequency.

Matt Cutts on google updates

Post to Twitter Post to Facebook Post to MySpace

Building an application framework in mod_perl using CPAN modules - Part 1

Friday, November 10th, 2006

Author: Diarmuid Ryan

Introduction

There are many application frameworks around for various programming languages to simplify the development of web applications, sometimes though there comes a time when the ready-made solutions don’t cover what you need to do or don’t do what you need in an intuitive way. An application framework is often referred to as middle-ware or back-end system. The goal is to take the heavy work away from the front-end that serves up to pages, abstract it, and push it down the stack of the operating environment. Common things included to make live easier in developing a web site front-end are handling of database interaction, templating for content and output files, communicating with remote servers, configuration of web site, and handling email. In this article I aim to outline how you can create this functionality through an object-orientated mod_perl approach.

The front-end should make use of separate objects for each page/functional unit of the web site and should inherit from the base class, for our purposes we will call this Base.pm.

Base class, Configuration & Control flow

A global configuration for your website can be used to store common attributes to the web environment, this would include paths and URL locations of content, data, images, etc. You could also include paths to email program or SMTP host used for sending email. Locations of template files you will use for content should also be specified in a configuration file. Other attributes such as domain name, database details such as name, user and password, location of apache http auth password files and general purpose apache configuration directives. A good way to go about creating a system configuration is by defining what you need in a Perl module and call it Constants.pm and include it in the base class you are using to build framework. An example might look something like:

#!/usr/bin/perl

package Website::Constants;

use constant DOMAIN  => ‘www.mydomain.com’;
use constant CONTENT  => ‘/home/httpd/mydomain/content’;
use constant TEMPLATE_PATH => ‘/home/httpd/mydomain/templates’
…

Control flow can be managed by a starter script which accepts what module to use along with its regular CGI parameters. This file should include any global options and/or variables, in our case here we initial a random number with srand to seed random functions and declare our database handle as $dbh.

Note the use of the hash to store object/page modules, using a lookup in this method prevents a nefarious user from inserting malicious code to be executed. The starter script is essential in any mod_perl application for issues regarding scope of persistent variable. For more info see http://perl.apache.org/docs/1.0/guide/porting.html#The_First_Mystery.

Starter script example:

#!/usr/bin/perl

use CGI;
use CGI::Carp qw(fatalsToBrowser);

use lib '/srv/www/www.internationaljobsolutions.com/perl';

use Website::Base;

srand;

use vars qw($dbh);

my $q = new CGI;

my $actions = {
   'Login'    => 'Login',
   'Search'   => 'Search',
   'ProductList'  => ‘ProductList’,
   'ProductDetail' => 'ProductDetail',
   ‘InternalError’ => ‘InternalError’,
   ….
};

my $action = 'Website::Actions::' . ($actions->{$q->param('action')} ||
                                     'InternalError');

eval "use $action";

if ( $@ ) {

   #…eval failed, do error handling here
}

# execute object and return page
$action->new();

Base.pm should contain the bulk of the required methods, any extensions to this should be created as subclasses. Here is an example object constructor for Base.pm which connects us to a database and logs an error if it fails. Every major action such as database interactions, reading parameters, template handling should produce debug error logs.

sub new {

   my $self = [];

   bless($self);

   my $db_name = Website::Constants::DB_NAME;
   my $db_user = Website::Constants::DB_USER;
   my $db_pass = Website::Constants::DB_PASS;

   $dbh = DBI->connect('DBI:mysql:'. $db_name, $db_user, $db_pass);

   $self->[DB_ERROR] = '';

   unless ( defined($dbh) && $dbh ) {
      $self->debug( 1, 'Unable to connect to MASTER DB!' );
      $self->[DB_ERROR] = 'Unable to connect to DB!';
   }

   return $self;
}

In the front end object the constructor would be something similar to this:

sub new {

   my $proto = shift;
   my $class = ref($proto) || $proto;
   my $self = [];

   bless($self, $class);

   $self->SUPER::new(); # inherit Base.pm and any other super-classes

   $self->[PARAMS] = $self->get_cgi_params();
   $self->[COOKIE] = $self->get_cookie(‘cookie_id');
   $self->[TEMPLATE] = Website::Constants::TEMPLATE_PATH;
   $self->[CONFIG] = $self->get_config();

   my $cookie = $self->execute();

   my $file = $self->[TEMPLATE];
   my $params = $self->[PARAMS];

   my $redirect = undef;

   $self->response( $file, $params, $cookie, $redirect  );

   return $self;
}

The object instance defines collections from functions in the Base.pm module such as get_cgi_params(), get_cookie() and get_config().

The execute function handles the specific response to the query, of which there may be one (e.g. a search page and results page). The template attribute would be completed with the method called from the available actions available to execute().

The reponse() could can return a cookie along with content of any type (implemented Base.pm) such as HTML, plain text or an image. The two options available here are to include response() in Base.pm along with its handlers for each output type or create a Response.pm subclass, depending on your requirements. In this tutorial we will cover an HTML output method, fill_template() in Base.pm.

Also it is worth noting that the apache mod_rewrite function could, perhaps should, be used to translate simple paths into parameter lists for both clarity to the user and search engine spiders. An example of a simple rewrite expression in apache configuration:

RewriteEngine On
RewriteRule  ^/ProductItem/id/([0-9]+)$   /perl/go?do=ProductItem&id=$1

Regular expressions are used to rewrite the URL, but that is outside the scope of this article, man perlretut will give you the man pages on Perl regular expressions which use the same syntax.
Templating

Templating can be taken care off quite easily with modules from CPAN, you can take your pick from Template Toolkit or HTML::Template (and probably several others). For this article we will be using HTML::Template. The idea here is to encapsulate the functionality of HTML::Template, extend it if necessary, and create an API interface that will suit our front-end application. Templating is quite an important part of an application framework as it is what ties your data to your visual output. HTML::Template accepts a filename of a template file to create its object. Normally when you want to fill your template you set parameters one-by-one.

The following function could be used to create template and populate with values when all data has been processed for page and should be added to the Base.pm class or subclass.

sub fill_template {

   my $self = shift;
   my $file = shift;
   my $template_params = shift;

   my $template = HTML::Template->new( filename    => $file,
                                       global_vars => 1,
                                       die_on_bad_params => 0 );

   unless($template) {
       $self->debug(1, ‘FAILED TEMPLATE: Could not create document: ’. $file );
   }

   for (keys(%{$template_params})) {
      if ($template->query(name => $_)) {
         $template->param($_ => $template_params->{$_});
      }
   }

   return $template->output();
}

If inherited in the front-end object, this could be accessed as follows in a function in this script:

my $file = Website::Constants::TEMPLATE_PATH . ‘/mytemplate.html’;
my $params = $self->[PARAMS];

$self->fill_template($file, $params);

Coming in Part 2

I will go through database handling, email and remote services using SOAP and XML.

Post to Twitter Post to Facebook Post to MySpace

Blu-Ray and HD-DVD on 32-bit systems

Saturday, August 26th, 2006

There’s been a lot of hullabaloo regarding these new super-capacity blu-ray discs with a storage of 25Gb on a single layer disc, quite impressive even if we are thrown back into the days of waiting an hour to burn a full disc, but then again I’m inclined to think that shovelling a whopping 25gb onto optical media in just about the hour mark is acceptable…I mean how far can we push the limits of storage capacity with speed. Fair enough they clain 64-bit systems for the task, and I say what harm, a 64-bit address space is exponentially better than its 32-bit equivalents…64-bit is the way to go, natch bar the limitations of space a 32-bit system can address such data volumes. At Blue Star we run Windows XP 64-bit edition on our desktops, aside from work where we would perhaps like to see 64 bit native Dreamweaver and Photoshop (especially this), many people don’t quite grasp the significant leap to 64 bit technology, the fact that major Linux vendors can run symmetrical multiprocessor 64 bit systems out of the box, bundled with a top of the range GeForce gfx card…the results speak for themselves and seem to leave micro$oft dead in the water. This is the future, and I know coming from the past with 8-bit atari’s…its clearly time to move forward and embrace these emerging mega technologies…fair enough on a 64 bit system it takes close to an hour to burn 25Gb on a blu-ray disk, but then again 25GB in an hour sounds reasonable to me as the current offerings from Pioneer boast these rates. The more data to transfer, the more addressable disk and memory space is needed and for the moment 64 bit systems do the job. At the same time this is equivalent to 7x DVD write speed, not too sloppy, but me like many other ‘wanting the best power ratio’ advocates always want things faster. But I still think these drives are in their early stages. The drives currently on the market don’t write DVD’s, in my opinion this is a major oversight, fair enough CD burning is relatively obsolete unless you want to cut to odd music cd or an mp3 cd to play away on your home DVD player in the comfort of your living room…but hey, it’s still cool…but I’d be inclined to wait for the drives to mature and adapt better into the wider market place before taking one on board…

Blu-Ray and HD-DVD restricted on 32-bit systems

Post to Twitter Post to Facebook Post to MySpace

Blue Star Web Design Ireland
e: sales@bluestar.ie
t: +353 86 3318412
Tipperary Town

Copyright ©2010 Blue Star