Flux RSS

jeudi 2 juillet 2009

Géolocalisation via HTML5 ou Google Gears

Avec l'arrivé de l'iPhone 0S 3.0 et depuis hier de Firefox 3.5, la géolocalisation via HTML5 se répand de plus en plus. Il existe pour le reste des navigateurs la possibilité d'utiliser Google Gears afin de connaître la position de l'utilisateur. Ainsi, que ce soir sur Android, Windows Mobile, Opéra mobile et maintenant iPhone, il est possible d'offrir des services géolocaliser à moindre coût (cf. pas de développement natif).

Voici comment profiter au mieux des possibilités des navigateurs. Nous allons via cet exemple utiliser au mieux HTML5 sinon Google Gears si celui-ci est présent.

Comment détecter le HTML5 et Google Gears:

	var geo = null;
	var request = null;
	var isGear = google != null && google.gears != null;
	var isHtml5 = navigator != null && navigator.geolocation != null;
	
	if(isGear) {
		geo = google.gears.factory.create('beta.geolocation');
		request = google.gears.factory.create('beta.httprequest');	
	}
	if(isHtml5) {
		geo = navigator.geolocation;
		request = new XMLHttpRequest();
	}

Demander la position de l'utilisateur :

	var main = function() {
		if(GBrowserIsCompatible()) {
			initialize();
			if(geo != null) {
				geo.getCurrentPosition(updatePosition, handleError, {maximumAge:60000});
			} else {
				alert("Vous devez installer Google Gears pour que nous puissions vous localiser");
			}
		} else {
			alert("Votre browser n'est pas compatible avec Google Maps");
		}
	};
	var updatePosition = function(position) {
		var coords = position.coords;
		document.getElementById('position').innerHTML="Votre position : "+coords.latitude+","+coords.longitude;
		var p = new GLatLng(coords.latitude, coords.longitude);
		map.setCenter(p, 16);
		addPoint(p, "Votre position actuelle", "red");
	};
	
	var handleError = function(positionError) {
	  alert('Attempt to get location failed: ' + positionError.message);
	};
	
	var initialize = function() {	  
  	  map = new GMap2(document.getElementById("map_canvas"));			  	  
	  var c = new GLatLng(48.8567, 2.3510);
	  map.setCenter(c, 3);
	  map.disableDragging();
       };

       var addPoint = function(point, text, color) {
	  var i = new GIcon();
	  i.image = 'http://labs.google.com/ridefinder/images/mm_20_' + color + '.png';
	  i.shadow = 'http://labs.google.com/ridefinder/images/mm_20_shadow.png';
	  i.iconSize = new GSize(12, 20);
	  i.shadowSize = new GSize(22, 20);
	  i.iconAnchor = new GPoint(6, 20);
	  i.infoWindowAnchor = new GPoint(5, 1);

	  var marker = new GMarker(point,{clickable: true, icon: i});
	    
	  GEvent.addListener(marker, "click", function() {
	    var myHtml = text;
	    map.openInfoWindowHtml(point, myHtml);
	  });
	  
	  map.addOverlay(marker);
	};

Il suffit donc t'appeler main dans sa page web et le tour est joué. Noter le timeout sur le getCurrentPosition permettant de forcer la mise à jour de la position si celle-ci est plus vieille d'une minute.

lundi 29 juin 2009

C'est con mais ce test m'a toujours fait marré :)

 public class Test {
 
 	/**
 	 * @param args
 	 */
 	public static void main(String args) {
 		Test2 t2 = new Test2();
 		System.out.println(t2.toto + " and toString " + t2.toString());
 		
 		Test t = (Test)t2;
 		System.out.println(t.toto + " and toString " + t.toString());
 	}
 	
 	public String toto = "toto";
 
 	@Override
 	public String toString() {
 		return toto;
 	}
 	
 	public static class Test2 extends Test {
 		
 		public String toto = "titi";
 		
 		@Override
 		public String toString() {
 			return toto;
 		}
 	}
 
 }

le résultat étant :

titi and toString titi
toto and toString titi

jeudi 25 juin 2009

freewifi à Juvisy

Je viens de commencer le scan des rues de Juvisy afin de détecter les bornes FreeWifi ...

samedi 20 juin 2009

Où? supporte l'upload de photo

Un billet pour informer que je viens de mettre à jour Où?. Il est maintenant possible d'uploader une photo prise depuis l'application sur son compte facebook :)

jeudi 18 juin 2009

Configurer un linksys NAS200 depuis Mac OS X

Mon LaCie m'a quitté (non pas le chien) et il a bien fallu que je le remplace...
Linksys pensant à tout, ne fournit pas d'utilitaire de configuration pour Mac OS X.. heureusement tout peut se faire via l'interface web du serveur.

Première difficulté, il faut trouver cette interface! pour ça, soit vous avez la main sur votre routeur et il sera assez facile de connaître l'adresse ip attribuée à son serveur NAS, soit par déduction sur la plage d'ip disponible.
Une fois sur la page d'administration, un compte admin doit être renseigné. Les valeurs par défaut, admin / admin. (pas trouvé dans la doc ça non plus)

Et le reste est assez intuitif.

ps. la mise à jour du firmware ne fonctionne pas sous Safari.. utilisez Firefox dans ce cas là :-/

mercredi 17 juin 2009

iPhone OS 3.0, HTML5 et géolocalisation

Et oui la bonne nouvelle! l'iPhone supporte la géolocalisation via le HTML5 :D

PocPoker on air!

Voilà je trouve enfin le temps (c'est bien les vacances!) de mettre à disposition de tous (le monde entier va être content.. et ça va sûrement arrêter des guerres) le code source d'un projet que j'avais commencé mi-2007 et dont les dernières modifications doivent dater de septembre 2008.

Dans les grandes lignes et comme son nom l'indique.. il s'agit d'un jeu de poker. Il implémente un système de workflow permettant d'avoir une vue assez large du jeu de poker et donc d'avoir un grand nombre de règles disponibles (actuellement seul le texas holdem est disponible). A ça s'ajoute un mécanisme permettant de réaliser des IA (il en existe une version d'ailleurs).

En résumé, ce projet est réalisé en deux parties. La première, la partie serveur, héberge les parties et communique via des services (via le module CXF de Spring) avec les clients. La seconde, la partie cliente, existe par le biais de deux réalisations. La première en Android a été pour moi l'occasion de me lancer dans la dernière invention de Google, et la seconde en Flex a été une bonne occasion de mettre en pratique ce que j'avais appris sur la technologie d'Adobe.

Si je mets les sources à disposition de tous, c'est avant tout pour offrir une seconde chance à ce projet. En effet, j'y ai passé beaucoup de temps mais ce n'est pas facile de mener à bien plusieurs idées à la fois. Il faut donc faire un choix. J'espère que des étudiants ou des professionnels avertis trouveront leur bonheur dans ce code.

En regardant de plus près vous verrez sûrement d'autres noms que le mien dans les sources. La personne qui revient le plus souvent est Pascal Verrecchia qui a participé aussi au projet. Il y en a eu d'autres mais ce ne fut que très brièvement voir de façon anecdotique.

Le projet est hébergé chez GoogleCode.

PocPoker

mardi 16 juin 2009

Welcome OneUp :)

Voilà enfin mon lapin prend vie :) .. .il s'appelle OneUp comme le projet sur lequel j'ai travaillé pendant 2 ans ... et il est joignable à cette adresse : oneup-remplacer_par_@-things.violet.net

créer un iso depuis un dvd sous mac

voici un tutorial permettant de créer une "copie de sauvegarde" d'un dvd sous mac

(marche aussi sous leopard)

Vu que le lien n'a plus l'air de fonctionne :-/

  1. diskutil unmountDisk /dev/disk1 (pour démonter le dvd/cd que vous voulez isoter)
  2. dd if=/dev/disk1 of=file.iso bs=2048 (pour faire la copie)
  3. hdid file.iso (pour tester votre iso)

lundi 15 juin 2009

Nabaztag et freebox

il faut mettre le SSID en majuscule ;) .. c'est r.nabaztag.com/vl et pas r.natazbag.com/vl !

dimanche 14 juin 2009

Retour à la réalité...

Ca y est .. mon sevrage de deux semaines sans internet est terminé =)

Et je m'attendais à au moins un iPhone OS 3.0 de dispo .. et non il va falloir attendre encore quelques jours.. je m'attendais aussi à un nouvel iMac mais apparemment ce n'est pas le cas! en tout cas.. ravi de voir de nouvelles émotions sur zipply et plus de 800 inscrits sur freebox-wifi!

Sinon.. à tous les amoureux de la nature .. (plongée, randonnées, plage et soleil...) je conseille vivement la Guadeloupe.

samedi 30 mai 2009

C'était mon dernier jour...

C'était mon dernier jour dans ma société après avoir passé deux années sur un des premiers projets Flex en France.. Et si on ose faire le rapprochement entre la trace que j'espère avoir laissé dans le coeur de mes collègues et les marques d'affection que j'ai pu recevoir lors de mon pot de départ, je peux dire que je suis un homme comblé.

vendredi 29 mai 2009

freebox-wifi.fr

Un petit billet pour vous parler de freebox-wifi.fr un site qui permet de trouver les hotspots freewifi en fonction de notre position actuelle. Une version mobile fonctionnant grâce à Google Gears ou dans le meilleur des cas HTML 5 est aussi disponible :)

jeudi 28 mai 2009

Anonymous ..

Juste pour dire que j'utilise la police Anonymous depuis aujourd'hui pour écrire du code .. et j'aime bien :)

mercredi 27 mai 2009

Support de la géolocalisation via HTML5 dans l'iPhone?

A lire la news qui vient de tomber à l'IO 2009.. Google va distribuer enfin Google Latitude pour iPhone dés la sortie de la version 3 de l'OS. Ok .. mais ce qui est à noter c'est que Google a l'air ravi (et je les comprends) de proposer cette application en full web.

The geolocation APIs make location, whether generated via GPS, cell-tower triangulation or wi-fi databases (what Skyhook calls hybrid positioning) available to any HTML 5-compatible browser-based app. At the conference, Google shows off your current location to any Google map, and announces the availability of Google Latitude for the iPhone. (It will be available shortly after Apple releases OS 3.) What's really impressive about Latitude on the phone is that it's a web app, with all the platform independence that implies, not a platform-dependent phone application.

J'en déduis donc qu'Apple a ajouté le support de la géolocalisation dans la version iPhone de son safari ... et c'est une très très bonne nouvelle :D

mardi 26 mai 2009

Effet slide avec webkit

Voici un petit exemple de ce que peut faire webkit et à fortiori du HTML5.

L'ihm de l'iPhone est truffée d'astuces afin d'améliorer l'expérience utilisateur. Une d'entre elle consiste à slider l'écran latéralement afin d'afficher une nouvelle vue.

C'est cet effet que nous avons voulu ajouter à Zipply. Hors cette partie est réalisée en HTML ... heureusement il y a une solution :)

dans votre fichier CSS ajouter trois classes :

.slide-left {
	-webkit-transform: translateX(-320px);
   	-webkit-transition-duration: 1s;
   	-webkit-transition-property: -webkit-transform;  

}

.slide-right {
	-webkit-transform: translateX(320px);
   	-webkit-transition-duration: 1s;
   	-webkit-transition-property: -webkit-transform;  

}

.show {
	-webkit-transform: translateX(0px);
   	-webkit-transition-duration: 1s;
   	-webkit-transition-property: -webkit-transform; 
}
#box1 {
	position: absolute;
	top:50px;
	z-index: 2;
	background-color: yellow;
	height:300px;
	width:300px;
}

#box2 {
	position: absolute;
	top:50px;
	z-index: 1;
	background-color: green;
	height:300px;
	width:300px;
}

une fonction JavaScript pour appliquer dynamiquement les effets sur les div.

function slide(box1,box2,side) {
    	var b1 = document.getElementById(box1);
    	var b2 = document.getElementById(box2);
    	b1.className = 'slide-'+side;
    	b2.className = 'show';
    	
    	b1.addEventListener(
    		'webkitTransitionEnd', 
    		function () { 
    			alert('done');
    		}, 
    		false);
    }

Accrocher cette fonction là où vous voulez.. l'idéal étant sur la div :

    <div id="box1" onclick="slide('box1','box2','right');"></div>
    <div id="box2" onclick="slide('box2','box1','right');"></div>

Et le tour est joué :)

lundi 25 mai 2009

Philosophie Apple ...

Je commence à titiller le sdk gratuit de l'iPhone, et si je peux me permettre une comparaison (à ce stade de mon avancé) avec celui de l'Android.. je dirais que la création en est plus rapide grâce à la vue permettant de positionner les éléments graphique et les imbriquer entre eux très facilement... mais au premier abord tout s'arrête là.

Oui car pour aller plus loin et tester son application au delà de l'émulateur... et bien il faut payer ;)

mardi 19 mai 2009

Quand je serais grand, je serais menuisier ...

Vous êtes vous jamais demandé quel métier vous auriez exercé, si vous étiez né 500 ans plus tôt?
Pour ma part que j'aurais été menuisier.

C'est dans ce type de métier que nous pouvons retrouver les valeurs qui nous motive à créer et à réaliser de beaux ouvrages informatiques pour le plaisir des utilisateurs.

<joke>

Et tout comme dans la menuiserie, il est possible de rentre ce travail mécanique et vidé de son sens.. ça s'appelle ikea quand ça se passe relativement bien, ou confo quand on veut faire des économies ;-)

</joke>

lundi 18 mai 2009

Jelly Party

Un petit lien sur le billet expliquant le principe de la jelly party .. si vous cherchez bien vous me trouverez quelque part ;)

code natif + HTML5 = le couple idéal

Prenons le cas pratique que je vis actuellement avec Zipply.. trois applications à réaliser à deux : Une version web, une version pour Android et enfin une version pour iPhone.