CF 8 bug: ColdFusion injecting cfscript in HTML head

Written on 20 July 2011, 02:13pm

Tagged with: , ,

I recently encountered the following ColdFusion problem:
I had a HTML page where the head node contained an attribute: <head lang="fr">
The same page was also using some cfform tags.
On the CF 8 server, ColdFusion automatically injects two <script> statements immediately after <head, but ignoring any other attribute. So, in our case, the resulting HTML code was:

<head <script type="text/javascript" src="/CFIDE/scripts/cfform.js"></script>
<script type="text/javascript" src="/CFIDE/scripts/masks.js"></script>
lang="fr">

Useless to say, this was breaking a lot of things in the design and the validation of the page.
(more…)

Garmin 3760 – quick review

Written on 22 June 2011, 04:18pm

Tagged with: , ,

I know that this blog is mainly about web development, but when I get new devices, I feel like I have to share. Must be the smell of the fresh hardware 🙂
I recently bought a Garmin 3760 sat nav system from amazon.co.uk.
With less than 9mm thick, the 3760 is the Thinnest Navigator in the World.
garmin 3760

Indeed, the size of the navigator is the first things that you will notice when opening the box.

Some drawbacks

  • When the device is in stand by (screen turned off) you don’t know how to hold it. On the iPhone, you have the home button on the bottom. On Garmin 3760, the power button (in fact, the only physical button) is placed on the bottom right sidebar. Not the best place to put it, if you ask me, as you will need two hands to switch it on and off.
  • Screen orientation: it advertises dual orientation (landscape and portrait). But it’s not similar to the one on the iPhones: you have only one position for the portrait and one for the landscape (to compare, the iPhones have two positions for portrait-mode and two for landscape mode). Not a big issue, just something to be noted
  • The touch screen is a little too sensitive sometimes (compared to the iPhone)
  • When connected to computer via USB, you cannot use the device
  • The picture viewer is quite slow. But it’s not like someone would buy the device for the picture viewer 🙂

And the good points

(more…)

A little bit about Fusion Tables

Written on 22 May 2011, 10:49pm

Tagged with: , , ,

Google Fusion Tables is a modern data management and publishing web application that makes it easy to host, manage, collaborate on, visualize, and publish data tables online.

So as far as an user is concerned, a Fusion Table is a virtual table stored in the cloud, on which he can perform the regular CRUD operations. Here comes the nice part: the language on which you can perform these operations is SQL-like. The API is designed so that you can use URLs like
http://www.google.com/fusiontables/api/query?sql=select+*+from+1234567
The output of this request is a CSV text, with the contents of the selected table.

Let’s assume that you have a Fusion table where you store some physical addresses for some items. Below is a very simple PHP script which reads the contents of the fusion table, parses it, extracts the address, then performs a geocoding request using the geocoding API, parses the JSON object and outputs the latitude and longitude of the given address.

<?php
//run sql query to get data from fusion table
$url = 'http://www.google.com/fusiontables/api/query?sql=select+*+from+822057';
$lines = file($url);

$i = 0;
foreach ($lines as $line_num => $line) 
{
	//parse csv line
	$csv = str_getcsv($line);

	//extract the address
	$address	= $csv[7];
	
	if($address)
	{
		//we need to geocode the address to get the latitude and longitude
		$url_address = urlencode ($address);
		$geocode_url = "http://maps.google.com/maps/api/geocode/json?address=$url_address&sensor=false";
		$geocode = file_get_contents($geocode_url);
		$output = json_decode($geocode);

		$latitude = $output->results[0]->geometry->location->lat;
		$longitude = $output->results[0]->geometry->location->lng;

		//sleep for a second
		sleep(1);

		//do something nice with all this data

	}
}

?>