mardi 5 juin 2012

Base de données: mongoDB




Les données sont le nerf de la guerre du web, des médias sociaux et du « cloud ». LinkedIn utilise MySQL, Dropbox utilise Amazon S3. Récemment, Twitter à changé sa base de données MySQL pour Cassandra, une solution développée par Facebook qu’il a abandonné au profit de HBase.

La représentation des données et leurs accessibilités sont le cœur, la structure et l’architecture de l’application. Ces besoins grandissant ont donnés naissances à de nouvelles bases de données. MongoDB, créée en 2007, en est une parmi ceux-ci.

C’est une base de données « Document-oriented ». Elle n’est donc pas une base de données relationnelle traditionnelle comme Oracle ou SqlServer. Elle fait plutôt partie de la catégorie des « NoSQL », c’est-à-dire, qu’elle n’utilise pas le modèle SQL comme moteur. Le « NoSQL », présent depuis 1998, est un concept qui s’installe progressivement comme une alternative aux solutions de BD.

MongoDB est sous une licence de distribution publique, ce qui nous permet de l’utiliser gratuitement. L’entreposage des données est dans un format dérivé à JSON appelé BSON, ce qui lui ajoute de la flexibilité. Des géants de l’industrie comme SAP, Craigslist et Foursquare l’ont déjà intégré à leurs produits. 
 
Plusieurs langages sont supportés tel que: C, C++, Java, Javascript, .NET, Node.JS, PHP, Perl et elle s’installe sur la majorité des platformes : Windows, OS X, Linux et Solaris.

MongoDB ce veut une solution légère, simple, rapide et robuste pour un grand volume de données. Accessible par une invite système (shell), des tierces parties ont développés des logiciels à interface graphique tel que MongoVue ou MongoExplorer pour en facilité l’accès.



Voici un exemple en C# provenant du site de mongoDB :


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using MongoDB.Bson;
using MongoDB.Driver;
using MongoDB.Driver.Builders;

namespace ConsoleApplication1
{

 public class Entity
{
public ObjectId Id { get; set; }
public string Name { get; set; }
}

class Program
{
static void Main(string[] args)
{
var connectionString = "mongodb://localhost/?safe=true";
var server = MongoServer.Create(connectionString);
var database = server.GetDatabase("test");
var collection = database.GetCollection<Entity>("entities");

var entity = new Entity { Name = "Tom" };
collection.Insert(entity);
var id = entity.Id;

var query = Query.EQ("_id", id);

entity = collection.FindOne(query);

entity.Name = "Dick";

collection.Save(entity);

var update = Update.Set("Name", "Harry");

collection.Update(query, update);

collection.Remove(query);
}
}
}

lundi 4 juin 2012

Apps: PrtScr

PrtScr par FireStarter (http://www.fiastarta.com/PrtScr/)
Disponible gratuitement.

PrtScr est un logiciel de capture d’image. Sa simplicité en fait un outil très utile dans mon quotidien. Il suffit d’appuyer sur votre touche de capture définit dans les préférences de PrtScr. Par la suite, avec un clique de la souri, il est possible de capturer une zone au « lasso » ou « rectangulaire » si on maintien la touche « ctrl ».

 

Il est possible de créer un encadrer avec le bouton de droit de la sourie.


La capture peut être envoyée directement dans le presse-papier pour un futur « copier-coller », dans un logiciel d’édition, à l’imprimante, envoyé par courriel ou sauvegardé sur le disque. Durant l’attente de votre sélection, une image témoin flottera littéralement près de la fenêtre de dialogue, ce qui vous vaudra à coup sûr une réaction des gens qui assistent à votre « screenshot ». D’autres fonctionnalités sont aussi disponibles telles qu’une pipette à couleur ou la possibilité d’agrandir l’image.

vendredi 11 mai 2012

Javascript / HTML 5 / CSS3 : Modernizr





L’HTML5 et CSS3 permettent plusieurs nouvelles possibilités de développement. Par contre, les fureteurs plus âgés ne supportent pas nécessairement ces fonctionnalités. Tout comme jQuery, Modernizr.js est une librairie JavaScript permettant de simplifier nos développements et donc de gagner du temps.  Celle-ci fait la détection des éléments HTML5 et CSS3 supportés par le navigateur du visiteur.  

Pour commencer  voici une structure de document HTML qui intègre Modernizr.js:

<!DOCTYPE html>
<html class="no-js" lang="en">
<head>
  <meta charset="utf-8">
  <title>Hello Modernizr</title>
  <script src="modernizr.js"></script>
</head>
<body>
</body>
</html>

Sur la deuxième ligne, le tag <html> possède une classe « no-js » que Modernizr remplacera par une classe nommée « js ».  Par la suite, cette classe pourra être référée dans votre CSS (.js{…}).   Pour chaque élément qui n’est pas supporté par le fureteur, une classe possédant le préfixe « no-» sera créée. Pour faire la détection du support d’un élément précis il suffit d’appeler « Modernizr.<élément> ».
 
Exemple:
<script>

  if (Modernizr.canvas) {

    alert("This browser supports HTML5 canvas!");

} else {

    alert("no canvas :(");

  }

</script>

 « YepNope » qui est inclut avec Modernizr  permet de référer des scripts/librairies selon des conditions et ainsi éviter de les charger systématiquement, mais plutôt dans des contextes particuliers.  Pour les utilisateurs qui n’ont pas besoin des méthodes alternatives les pages seront allégées.  Pour les autres, les fichiers seront chargés aux besoins.

Exemple:
Modernizr.load({

  test: Modernizr.canvas,

  nope: 'http://flashcanvas.net/bin/flashcanvas.js'

});

Dans l’exemple précédent, si la propriété « canvas » n’est pas supportée, le fichier “flashcanvas.js” sera chargé.  Ce qui correspond habituellement dans l’entête de nos pages à mettre:

<script src="http://flashcanvas.net/bin/flashcanvas.js"></script>
 
Mais cette fois, il est chargé seulement si c’est nécessaire.  Dans l’exemple, si la condition est fausse la commande « nope » sera exécutée.  Il est possible aussi d’avoir une commande « yep » si la condition est véridique.

Voici un exemple du site de « YepNope » sur ses possibilités :

yepnope([{

test : /* boolean(ish) - condition your test */,

yep : /* array (of strings) | string - load if test is true */,

nope : /* array (of strings) | string - load if test is false */,

both : /* array (of strings) | string - Load everytime (sugar) */,

load : /* array (of strings) | string - Load everytime (sugar) */,

callback : /* function ( testResult, key ) | object { key : fn } */,

complete : /* function */ }, /* ... */ ]);

En plus de « YepNope », Modernirz, peut être jumelé à «  HTML5Shiv » qui converti les éléments non-supportés d’Internet Explorer par  des éléments reconnus similaires (appelé Polyfilling).  Modernizr et ses complices  forme une librairie puissante et ce avec un minimum d’effort  pour leur intégration.

Liens utiles:
Modernizr : http://modernizr.com/
YepNope : http://yepnopejs.com/

jeudi 10 mai 2012

Apps : Fences

Disponible gratuitement et en version PRO.

Fences permet de classer et d’organiser les icônes sur votre bureau par groupe automatiquement et/ou selon vos préférences personnelles.  Ces groupes sont appelés "fences". 
Ils peuvent apparaître et disparaître sur demande, avec un simple double-clique.  Divers options de configuration d'affichage sont disponibles dont les couleurs, contours et niveau de transparences des "fences" afin d'exposer d'avantage votre arrière-plan.