Monthly Archives: January 2014

[PHP] Serialiser en XML et en JSON grâce à xml_encode et json_encode

php xml

Les développeurs PHP utilisent souvent du JSON afin de sérialiser des données pour les transmettre.

Le JSON est relativement léger et PHP intègre nativement des fonctions afin de sérialiser et désérialiser des objets.

Mais le JSON n’est pas le seul format d’échange intéressant: le XML, bien que plus verbeux est également intéressant pour transmettre des données.

Mon problème est que pour un projet mobile, il me faut absolument sérialiser des objets en XML, ce qui n’est pas natif dans PHP.

Par chance j’ai trouvé une petite fonction qui va tout faire pour nous 🙂

Sérialiser des données en JSON avec PHP

Pour sérialiser des données en JSON avec PHP, il suffit d’utiliser la fonction native json_encode.

<?php
header('Content-Type: application/json');
for ($i = 0;$i < 50;$i++) {
$entree[$i]['nom'] = "nom pour ".$i;
$entree[$i]['valeur'] = "valeur pour ".$i;
$donnes['debut'] = 0;
$donnes['fin'] = 100;
$entree[$i]['donnees'] = $donnes;
for ($j = 0;$j < 5;$j++) {
$liste[$j] = "liste ${j}";
}
$entree[$i]['liste'] = $liste;
}
echo json_encode($entree, JSON_NUMERIC_CHECK);
?>

Ce qui retournera:

[
   {
      "nom":"nom pour 0",
      "valeur":"valeur pour 0",
      "donnees":{
         "debut":0,
         "fin":100
      },
      "liste":[
         "liste 0",
         "liste 1",
         "liste 2",
         "liste 3",
         "liste 4"
      ]
   },
   {
      "nom":"nom pour 1",
      "valeur":"valeur pour 1",
      "donnees":{
         "debut":0,
         "fin":100
      },
      "liste":[
         "liste 0",
         "liste 1",
         "liste 2",
         "liste 3",
         "liste 4"
      ]
   },
   {
      "nom":"nom pour 2",
      "valeur":"valeur pour 2",
      "donnees":{
         "debut":0,
         "fin":100
      },
      "liste":[
         "liste 0",
         "liste 1",
         "liste 2",
         "liste 3",
         "liste 4"
      ]
   },
   {
      "nom":"nom pour 3",
      "valeur":"valeur pour 3",
      "donnees":{
         "debut":0,
         "fin":100
      },
      "liste":[
         "liste 0",
         "liste 1",
         "liste 2",
         "liste 3",
         "liste 4"
      ]
   },
   {
      "nom":"nom pour 4",
      "valeur":"valeur pour 4",
      "donnees":{
         "debut":0,
         "fin":100
      },
      "liste":[
         "liste 0",
         "liste 1",
         "liste 2",
         "liste 3",
         "liste 4"
      ]
   },
   {
      "nom":"nom pour 5",
      "valeur":"valeur pour 5",
      "donnees":{
         "debut":0,
         "fin":100
      },
      "liste":[
         "liste 0",
         "liste 1",
         "liste 2",
         "liste 3",
         "liste 4"
      ]
   },
   {
      "nom":"nom pour 6",
      "valeur":"valeur pour 6",
      "donnees":{
         "debut":0,
         "fin":100
      },
      "liste":[
         "liste 0",
         "liste 1",
         "liste 2",
         "liste 3",
         "liste 4"
      ]
   },
   {
      "nom":"nom pour 7",
      "valeur":"valeur pour 7",
      "donnees":{
         "debut":0,
         "fin":100
      },
      "liste":[
         "liste 0",
         "liste 1",
         "liste 2",
         "liste 3",
         "liste 4"
      ]
   },
   {
      "nom":"nom pour 8",
      "valeur":"valeur pour 8",
      "donnees":{
         "debut":0,
         "fin":100
      },
      "liste":[
         "liste 0",
         "liste 1",
         "liste 2",
         "liste 3",
         "liste 4"
      ]
   },
   {
      "nom":"nom pour 9",
      "valeur":"valeur pour 9",
      "donnees":{
         "debut":0,
         "fin":100
      },
      "liste":[
         "liste 0",
         "liste 1",
         "liste 2",
         "liste 3",
         "liste 4"
      ]
   },
   {
      "nom":"nom pour 10",
      "valeur":"valeur pour 10",
      "donnees":{
         "debut":0,
         "fin":100
      },
      "liste":[
         "liste 0",
         "liste 1",
         "liste 2",
         "liste 3",
         "liste 4"
      ]
   },
   {
      "nom":"nom pour 11",
      "valeur":"valeur pour 11",
      "donnees":{
         "debut":0,
         "fin":100
      },
      "liste":[
         "liste 0",
         "liste 1",
         "liste 2",
         "liste 3",
         "liste 4"
      ]
   },
   {
      "nom":"nom pour 12",
      "valeur":"valeur pour 12",
      "donnees":{
         "debut":0,
         "fin":100
      },
      "liste":[
         "liste 0",
         "liste 1",
         "liste 2",
         "liste 3",
         "liste 4"
      ]
   },
   {
      "nom":"nom pour 13",
      "valeur":"valeur pour 13",
      "donnees":{
         "debut":0,
         "fin":100
      },
      "liste":[
         "liste 0",
         "liste 1",
         "liste 2",
         "liste 3",
         "liste 4"
      ]
   },
   {
      "nom":"nom pour 14",
      "valeur":"valeur pour 14",
      "donnees":{
         "debut":0,
         "fin":100
      },
      "liste":[
         "liste 0",
         "liste 1",
         "liste 2",
         "liste 3",
         "liste 4"
      ]
   },
   {
      "nom":"nom pour 15",
      "valeur":"valeur pour 15",
      "donnees":{
         "debut":0,
         "fin":100
      },
      "liste":[
         "liste 0",
         "liste 1",
         "liste 2",
         "liste 3",
         "liste 4"
      ]
   },
   {
      "nom":"nom pour 16",
      "valeur":"valeur pour 16",
      "donnees":{
         "debut":0,
         "fin":100
      },
      "liste":[
         "liste 0",
         "liste 1",
         "liste 2",
         "liste 3",
         "liste 4"
      ]
   },
   {
      "nom":"nom pour 17",
      "valeur":"valeur pour 17",
      "donnees":{
         "debut":0,
         "fin":100
      },
      "liste":[
         "liste 0",
         "liste 1",
         "liste 2",
         "liste 3",
         "liste 4"
      ]
   },
   {
      "nom":"nom pour 18",
      "valeur":"valeur pour 18",
      "donnees":{
         "debut":0,
         "fin":100
      },
      "liste":[
         "liste 0",
         "liste 1",
         "liste 2",
         "liste 3",
         "liste 4"
      ]
   },
   {
      "nom":"nom pour 19",
      "valeur":"valeur pour 19",
      "donnees":{
         "debut":0,
         "fin":100
      },
      "liste":[
         "liste 0",
         "liste 1",
         "liste 2",
         "liste 3",
         "liste 4"
      ]
   },
   {
      "nom":"nom pour 20",
      "valeur":"valeur pour 20",
      "donnees":{
         "debut":0,
         "fin":100
      },
      "liste":[
         "liste 0",
         "liste 1",
         "liste 2",
         "liste 3",
         "liste 4"
      ]
   },
   {
      "nom":"nom pour 21",
      "valeur":"valeur pour 21",
      "donnees":{
         "debut":0,
         "fin":100
      },
      "liste":[
         "liste 0",
         "liste 1",
         "liste 2",
         "liste 3",
         "liste 4"
      ]
   },
   {
      "nom":"nom pour 22",
      "valeur":"valeur pour 22",
      "donnees":{
         "debut":0,
         "fin":100
      },
      "liste":[
         "liste 0",
         "liste 1",
         "liste 2",
         "liste 3",
         "liste 4"
      ]
   },
   {
      "nom":"nom pour 23",
      "valeur":"valeur pour 23",
      "donnees":{
         "debut":0,
         "fin":100
      },
      "liste":[
         "liste 0",
         "liste 1",
         "liste 2",
         "liste 3",
         "liste 4"
      ]
   },
   {
      "nom":"nom pour 24",
      "valeur":"valeur pour 24",
      "donnees":{
         "debut":0,
         "fin":100
      },
      "liste":[
         "liste 0",
         "liste 1",
         "liste 2",
         "liste 3",
         "liste 4"
      ]
   },
   {
      "nom":"nom pour 25",
      "valeur":"valeur pour 25",
      "donnees":{
         "debut":0,
         "fin":100
      },
      "liste":[
         "liste 0",
         "liste 1",
         "liste 2",
         "liste 3",
         "liste 4"
      ]
   },
   {
      "nom":"nom pour 26",
      "valeur":"valeur pour 26",
      "donnees":{
         "debut":0,
         "fin":100
      },
      "liste":[
         "liste 0",
         "liste 1",
         "liste 2",
         "liste 3",
         "liste 4"
      ]
   },
   {
      "nom":"nom pour 27",
      "valeur":"valeur pour 27",
      "donnees":{
         "debut":0,
         "fin":100
      },
      "liste":[
         "liste 0",
         "liste 1",
         "liste 2",
         "liste 3",
         "liste 4"
      ]
   },
   {
      "nom":"nom pour 28",
      "valeur":"valeur pour 28",
      "donnees":{
         "debut":0,
         "fin":100
      },
      "liste":[
         "liste 0",
         "liste 1",
         "liste 2",
         "liste 3",
         "liste 4"
      ]
   },
   {
      "nom":"nom pour 29",
      "valeur":"valeur pour 29",
      "donnees":{
         "debut":0,
         "fin":100
      },
      "liste":[
         "liste 0",
         "liste 1",
         "liste 2",
         "liste 3",
         "liste 4"
      ]
   },
   {
      "nom":"nom pour 30",
      "valeur":"valeur pour 30",
      "donnees":{
         "debut":0,
         "fin":100
      },
      "liste":[
         "liste 0",
         "liste 1",
         "liste 2",
         "liste 3",
         "liste 4"
      ]
   },
   {
      "nom":"nom pour 31",
      "valeur":"valeur pour 31",
      "donnees":{
         "debut":0,
         "fin":100
      },
      "liste":[
         "liste 0",
         "liste 1",
         "liste 2",
         "liste 3",
         "liste 4"
      ]
   },
   {
      "nom":"nom pour 32",
      "valeur":"valeur pour 32",
      "donnees":{
         "debut":0,
         "fin":100
      },
      "liste":[
         "liste 0",
         "liste 1",
         "liste 2",
         "liste 3",
         "liste 4"
      ]
   },
   {
      "nom":"nom pour 33",
      "valeur":"valeur pour 33",
      "donnees":{
         "debut":0,
         "fin":100
      },
      "liste":[
         "liste 0",
         "liste 1",
         "liste 2",
         "liste 3",
         "liste 4"
      ]
   },
   {
      "nom":"nom pour 34",
      "valeur":"valeur pour 34",
      "donnees":{
         "debut":0,
         "fin":100
      },
      "liste":[
         "liste 0",
         "liste 1",
         "liste 2",
         "liste 3",
         "liste 4"
      ]
   },
   {
      "nom":"nom pour 35",
      "valeur":"valeur pour 35",
      "donnees":{
         "debut":0,
         "fin":100
      },
      "liste":[
         "liste 0",
         "liste 1",
         "liste 2",
         "liste 3",
         "liste 4"
      ]
   },
   {
      "nom":"nom pour 36",
      "valeur":"valeur pour 36",
      "donnees":{
         "debut":0,
         "fin":100
      },
      "liste":[
         "liste 0",
         "liste 1",
         "liste 2",
         "liste 3",
         "liste 4"
      ]
   },
   {
      "nom":"nom pour 37",
      "valeur":"valeur pour 37",
      "donnees":{
         "debut":0,
         "fin":100
      },
      "liste":[
         "liste 0",
         "liste 1",
         "liste 2",
         "liste 3",
         "liste 4"
      ]
   },
   {
      "nom":"nom pour 38",
      "valeur":"valeur pour 38",
      "donnees":{
         "debut":0,
         "fin":100
      },
      "liste":[
         "liste 0",
         "liste 1",
         "liste 2",
         "liste 3",
         "liste 4"
      ]
   },
   {
      "nom":"nom pour 39",
      "valeur":"valeur pour 39",
      "donnees":{
         "debut":0,
         "fin":100
      },
      "liste":[
         "liste 0",
         "liste 1",
         "liste 2",
         "liste 3",
         "liste 4"
      ]
   },
   {
      "nom":"nom pour 40",
      "valeur":"valeur pour 40",
      "donnees":{
         "debut":0,
         "fin":100
      },
      "liste":[
         "liste 0",
         "liste 1",
         "liste 2",
         "liste 3",
         "liste 4"
      ]
   },
   {
      "nom":"nom pour 41",
      "valeur":"valeur pour 41",
      "donnees":{
         "debut":0,
         "fin":100
      },
      "liste":[
         "liste 0",
         "liste 1",
         "liste 2",
         "liste 3",
         "liste 4"
      ]
   },
   {
      "nom":"nom pour 42",
      "valeur":"valeur pour 42",
      "donnees":{
         "debut":0,
         "fin":100
      },
      "liste":[
         "liste 0",
         "liste 1",
         "liste 2",
         "liste 3",
         "liste 4"
      ]
   },
   {
      "nom":"nom pour 43",
      "valeur":"valeur pour 43",
      "donnees":{
         "debut":0,
         "fin":100
      },
      "liste":[
         "liste 0",
         "liste 1",
         "liste 2",
         "liste 3",
         "liste 4"
      ]
   },
   {
      "nom":"nom pour 44",
      "valeur":"valeur pour 44",
      "donnees":{
         "debut":0,
         "fin":100
      },
      "liste":[
         "liste 0",
         "liste 1",
         "liste 2",
         "liste 3",
         "liste 4"
      ]
   },
   {
      "nom":"nom pour 45",
      "valeur":"valeur pour 45",
      "donnees":{
         "debut":0,
         "fin":100
      },
      "liste":[
         "liste 0",
         "liste 1",
         "liste 2",
         "liste 3",
         "liste 4"
      ]
   },
   {
      "nom":"nom pour 46",
      "valeur":"valeur pour 46",
      "donnees":{
         "debut":0,
         "fin":100
      },
      "liste":[
         "liste 0",
         "liste 1",
         "liste 2",
         "liste 3",
         "liste 4"
      ]
   },
   {
      "nom":"nom pour 47",
      "valeur":"valeur pour 47",
      "donnees":{
         "debut":0,
         "fin":100
      },
      "liste":[
         "liste 0",
         "liste 1",
         "liste 2",
         "liste 3",
         "liste 4"
      ]
   },
   {
      "nom":"nom pour 48",
      "valeur":"valeur pour 48",
      "donnees":{
         "debut":0,
         "fin":100
      },
      "liste":[
         "liste 0",
         "liste 1",
         "liste 2",
         "liste 3",
         "liste 4"
      ]
   },
   {
      "nom":"nom pour 49",
      "valeur":"valeur pour 49",
      "donnees":{
         "debut":0,
         "fin":100
      },
      "liste":[
         "liste 0",
         "liste 1",
         "liste 2",
         "liste 3",
         "liste 4"
      ]
   }
]

Sérialiser des données en XML avec PHP

Pour sérialiser vos objets en XML avec PHP c’est un peu plus compliqué car ce n’est pas intégré nativement. Il vous faudra utiliser la fonction xml_encode présente dans le code suivant:

<?php
 
function xml_encode($mixed, $domElement = NULL, $DOMDocument = NULL) {
    if (is_null($DOMDocument)) {
        $DOMDocument = new DOMDocument;
        $DOMDocument->formatOutput = true;
 
		$rootNode = $DOMDocument->createElement('entries');
		$DOMDocument->appendChild($rootNode);
 
        xml_encode($mixed, $rootNode, $DOMDocument);
 
        echo @$DOMDocument->saveXML();
    } else {
        if (is_array($mixed)) {
            foreach ($mixed as $index=>$mixedElement) {
                if (is_int($index)) {
					$nodeName = 'entry';
				} else {
					$nodeName = $index;
				}
				$node = $DOMDocument->createElement($nodeName);
				$domElement->appendChild($node);
				xml_encode($mixedElement, $node, $DOMDocument);
			}
        } else {
			// TODO: test if CDATA if needed
			$new_node = $DOMDocument->createTextNode($mixed);
 
            $domElement->appendChild($new_node);
        }
    }
} 
 
header('Content-Type: application/xml');
 
for ($i = 0;$i < 50;$i++) {
	$entree[$i]['nom'] = "nom pour ".$i;
	$entree[$i]['valeur'] = "valeur pour ".$i;
 
	$donnes['debut'] = 0;
	$donnes['fin'] = 100;
	$entree[$i]['donnees'] = $donnes;
 
	for ($j = 0;$j < 5;$j++) {
		$liste[$j] = "liste ${j}";
	}
 
	$entree[$i]['liste'] = $liste;
}
 
echo xml_encode($entree);
 
?>

Ce qui vous renverra:

<?xml version="1.0"?>
<entries>
  <entry>
    <nom>nom pour 0</nom>
    <valeur>valeur pour 0</valeur>
    <donnees>
      <debut>0</debut>
      <fin>100</fin>
    </donnees>
    <liste>
      <entry>liste 0</entry>
      <entry>liste 1</entry>
      <entry>liste 2</entry>
      <entry>liste 3</entry>
      <entry>liste 4</entry>
    </liste>
  </entry>
  <entry>
    <nom>nom pour 1</nom>
    <valeur>valeur pour 1</valeur>
    <donnees>
      <debut>0</debut>
      <fin>100</fin>
    </donnees>
    <liste>
      <entry>liste 0</entry>
      <entry>liste 1</entry>
      <entry>liste 2</entry>
      <entry>liste 3</entry>
      <entry>liste 4</entry>
    </liste>
  </entry>
  <entry>
    <nom>nom pour 2</nom>
    <valeur>valeur pour 2</valeur>
    <donnees>
      <debut>0</debut>
      <fin>100</fin>
    </donnees>
    <liste>
      <entry>liste 0</entry>
      <entry>liste 1</entry>
      <entry>liste 2</entry>
      <entry>liste 3</entry>
      <entry>liste 4</entry>
    </liste>
  </entry>
  <entry>
    <nom>nom pour 3</nom>
    <valeur>valeur pour 3</valeur>
    <donnees>
      <debut>0</debut>
      <fin>100</fin>
    </donnees>
    <liste>
      <entry>liste 0</entry>
      <entry>liste 1</entry>
      <entry>liste 2</entry>
      <entry>liste 3</entry>
      <entry>liste 4</entry>
    </liste>
  </entry>
  <entry>
    <nom>nom pour 4</nom>
    <valeur>valeur pour 4</valeur>
    <donnees>
      <debut>0</debut>
      <fin>100</fin>
    </donnees>
    <liste>
      <entry>liste 0</entry>
      <entry>liste 1</entry>
      <entry>liste 2</entry>
      <entry>liste 3</entry>
      <entry>liste 4</entry>
    </liste>
  </entry>
  <entry>
    <nom>nom pour 5</nom>
    <valeur>valeur pour 5</valeur>
    <donnees>
      <debut>0</debut>
      <fin>100</fin>
    </donnees>
    <liste>
      <entry>liste 0</entry>
      <entry>liste 1</entry>
      <entry>liste 2</entry>
      <entry>liste 3</entry>
      <entry>liste 4</entry>
    </liste>
  </entry>
  <entry>
    <nom>nom pour 6</nom>
    <valeur>valeur pour 6</valeur>
    <donnees>
      <debut>0</debut>
      <fin>100</fin>
    </donnees>
    <liste>
      <entry>liste 0</entry>
      <entry>liste 1</entry>
      <entry>liste 2</entry>
      <entry>liste 3</entry>
      <entry>liste 4</entry>
    </liste>
  </entry>
  <entry>
    <nom>nom pour 7</nom>
    <valeur>valeur pour 7</valeur>
    <donnees>
      <debut>0</debut>
      <fin>100</fin>
    </donnees>
    <liste>
      <entry>liste 0</entry>
      <entry>liste 1</entry>
      <entry>liste 2</entry>
      <entry>liste 3</entry>
      <entry>liste 4</entry>
    </liste>
  </entry>
  <entry>
    <nom>nom pour 8</nom>
    <valeur>valeur pour 8</valeur>
    <donnees>
      <debut>0</debut>
      <fin>100</fin>
    </donnees>
    <liste>
      <entry>liste 0</entry>
      <entry>liste 1</entry>
      <entry>liste 2</entry>
      <entry>liste 3</entry>
      <entry>liste 4</entry>
    </liste>
  </entry>
  <entry>
    <nom>nom pour 9</nom>
    <valeur>valeur pour 9</valeur>
    <donnees>
      <debut>0</debut>
      <fin>100</fin>
    </donnees>
    <liste>
      <entry>liste 0</entry>
      <entry>liste 1</entry>
      <entry>liste 2</entry>
      <entry>liste 3</entry>
      <entry>liste 4</entry>
    </liste>
  </entry>
  <entry>
    <nom>nom pour 10</nom>
    <valeur>valeur pour 10</valeur>
    <donnees>
      <debut>0</debut>
      <fin>100</fin>
    </donnees>
    <liste>
      <entry>liste 0</entry>
      <entry>liste 1</entry>
      <entry>liste 2</entry>
      <entry>liste 3</entry>
      <entry>liste 4</entry>
    </liste>
  </entry>
  <entry>
    <nom>nom pour 11</nom>
    <valeur>valeur pour 11</valeur>
    <donnees>
      <debut>0</debut>
      <fin>100</fin>
    </donnees>
    <liste>
      <entry>liste 0</entry>
      <entry>liste 1</entry>
      <entry>liste 2</entry>
      <entry>liste 3</entry>
      <entry>liste 4</entry>
    </liste>
  </entry>
  <entry>
    <nom>nom pour 12</nom>
    <valeur>valeur pour 12</valeur>
    <donnees>
      <debut>0</debut>
      <fin>100</fin>
    </donnees>
    <liste>
      <entry>liste 0</entry>
      <entry>liste 1</entry>
      <entry>liste 2</entry>
      <entry>liste 3</entry>
      <entry>liste 4</entry>
    </liste>
  </entry>
  <entry>
    <nom>nom pour 13</nom>
    <valeur>valeur pour 13</valeur>
    <donnees>
      <debut>0</debut>
      <fin>100</fin>
    </donnees>
    <liste>
      <entry>liste 0</entry>
      <entry>liste 1</entry>
      <entry>liste 2</entry>
      <entry>liste 3</entry>
      <entry>liste 4</entry>
    </liste>
  </entry>
  <entry>
    <nom>nom pour 14</nom>
    <valeur>valeur pour 14</valeur>
    <donnees>
      <debut>0</debut>
      <fin>100</fin>
    </donnees>
    <liste>
      <entry>liste 0</entry>
      <entry>liste 1</entry>
      <entry>liste 2</entry>
      <entry>liste 3</entry>
      <entry>liste 4</entry>
    </liste>
  </entry>
  <entry>
    <nom>nom pour 15</nom>
    <valeur>valeur pour 15</valeur>
    <donnees>
      <debut>0</debut>
      <fin>100</fin>
    </donnees>
    <liste>
      <entry>liste 0</entry>
      <entry>liste 1</entry>
      <entry>liste 2</entry>
      <entry>liste 3</entry>
      <entry>liste 4</entry>
    </liste>
  </entry>
  <entry>
    <nom>nom pour 16</nom>
    <valeur>valeur pour 16</valeur>
    <donnees>
      <debut>0</debut>
      <fin>100</fin>
    </donnees>
    <liste>
      <entry>liste 0</entry>
      <entry>liste 1</entry>
      <entry>liste 2</entry>
      <entry>liste 3</entry>
      <entry>liste 4</entry>
    </liste>
  </entry>
  <entry>
    <nom>nom pour 17</nom>
    <valeur>valeur pour 17</valeur>
    <donnees>
      <debut>0</debut>
      <fin>100</fin>
    </donnees>
    <liste>
      <entry>liste 0</entry>
      <entry>liste 1</entry>
      <entry>liste 2</entry>
      <entry>liste 3</entry>
      <entry>liste 4</entry>
    </liste>
  </entry>
  <entry>
    <nom>nom pour 18</nom>
    <valeur>valeur pour 18</valeur>
    <donnees>
      <debut>0</debut>
      <fin>100</fin>
    </donnees>
    <liste>
      <entry>liste 0</entry>
      <entry>liste 1</entry>
      <entry>liste 2</entry>
      <entry>liste 3</entry>
      <entry>liste 4</entry>
    </liste>
  </entry>
  <entry>
    <nom>nom pour 19</nom>
    <valeur>valeur pour 19</valeur>
    <donnees>
      <debut>0</debut>
      <fin>100</fin>
    </donnees>
    <liste>
      <entry>liste 0</entry>
      <entry>liste 1</entry>
      <entry>liste 2</entry>
      <entry>liste 3</entry>
      <entry>liste 4</entry>
    </liste>
  </entry>
  <entry>
    <nom>nom pour 20</nom>
    <valeur>valeur pour 20</valeur>
    <donnees>
      <debut>0</debut>
      <fin>100</fin>
    </donnees>
    <liste>
      <entry>liste 0</entry>
      <entry>liste 1</entry>
      <entry>liste 2</entry>
      <entry>liste 3</entry>
      <entry>liste 4</entry>
    </liste>
  </entry>
  <entry>
    <nom>nom pour 21</nom>
    <valeur>valeur pour 21</valeur>
    <donnees>
      <debut>0</debut>
      <fin>100</fin>
    </donnees>
    <liste>
      <entry>liste 0</entry>
      <entry>liste 1</entry>
      <entry>liste 2</entry>
      <entry>liste 3</entry>
      <entry>liste 4</entry>
    </liste>
  </entry>
  <entry>
    <nom>nom pour 22</nom>
    <valeur>valeur pour 22</valeur>
    <donnees>
      <debut>0</debut>
      <fin>100</fin>
    </donnees>
    <liste>
      <entry>liste 0</entry>
      <entry>liste 1</entry>
      <entry>liste 2</entry>
      <entry>liste 3</entry>
      <entry>liste 4</entry>
    </liste>
  </entry>
  <entry>
    <nom>nom pour 23</nom>
    <valeur>valeur pour 23</valeur>
    <donnees>
      <debut>0</debut>
      <fin>100</fin>
    </donnees>
    <liste>
      <entry>liste 0</entry>
      <entry>liste 1</entry>
      <entry>liste 2</entry>
      <entry>liste 3</entry>
      <entry>liste 4</entry>
    </liste>
  </entry>
  <entry>
    <nom>nom pour 24</nom>
    <valeur>valeur pour 24</valeur>
    <donnees>
      <debut>0</debut>
      <fin>100</fin>
    </donnees>
    <liste>
      <entry>liste 0</entry>
      <entry>liste 1</entry>
      <entry>liste 2</entry>
      <entry>liste 3</entry>
      <entry>liste 4</entry>
    </liste>
  </entry>
  <entry>
    <nom>nom pour 25</nom>
    <valeur>valeur pour 25</valeur>
    <donnees>
      <debut>0</debut>
      <fin>100</fin>
    </donnees>
    <liste>
      <entry>liste 0</entry>
      <entry>liste 1</entry>
      <entry>liste 2</entry>
      <entry>liste 3</entry>
      <entry>liste 4</entry>
    </liste>
  </entry>
  <entry>
    <nom>nom pour 26</nom>
    <valeur>valeur pour 26</valeur>
    <donnees>
      <debut>0</debut>
      <fin>100</fin>
    </donnees>
    <liste>
      <entry>liste 0</entry>
      <entry>liste 1</entry>
      <entry>liste 2</entry>
      <entry>liste 3</entry>
      <entry>liste 4</entry>
    </liste>
  </entry>
  <entry>
    <nom>nom pour 27</nom>
    <valeur>valeur pour 27</valeur>
    <donnees>
      <debut>0</debut>
      <fin>100</fin>
    </donnees>
    <liste>
      <entry>liste 0</entry>
      <entry>liste 1</entry>
      <entry>liste 2</entry>
      <entry>liste 3</entry>
      <entry>liste 4</entry>
    </liste>
  </entry>
  <entry>
    <nom>nom pour 28</nom>
    <valeur>valeur pour 28</valeur>
    <donnees>
      <debut>0</debut>
      <fin>100</fin>
    </donnees>
    <liste>
      <entry>liste 0</entry>
      <entry>liste 1</entry>
      <entry>liste 2</entry>
      <entry>liste 3</entry>
      <entry>liste 4</entry>
    </liste>
  </entry>
  <entry>
    <nom>nom pour 29</nom>
    <valeur>valeur pour 29</valeur>
    <donnees>
      <debut>0</debut>
      <fin>100</fin>
    </donnees>
    <liste>
      <entry>liste 0</entry>
      <entry>liste 1</entry>
      <entry>liste 2</entry>
      <entry>liste 3</entry>
      <entry>liste 4</entry>
    </liste>
  </entry>
  <entry>
    <nom>nom pour 30</nom>
    <valeur>valeur pour 30</valeur>
    <donnees>
      <debut>0</debut>
      <fin>100</fin>
    </donnees>
    <liste>
      <entry>liste 0</entry>
      <entry>liste 1</entry>
      <entry>liste 2</entry>
      <entry>liste 3</entry>
      <entry>liste 4</entry>
    </liste>
  </entry>
  <entry>
    <nom>nom pour 31</nom>
    <valeur>valeur pour 31</valeur>
    <donnees>
      <debut>0</debut>
      <fin>100</fin>
    </donnees>
    <liste>
      <entry>liste 0</entry>
      <entry>liste 1</entry>
      <entry>liste 2</entry>
      <entry>liste 3</entry>
      <entry>liste 4</entry>
    </liste>
  </entry>
  <entry>
    <nom>nom pour 32</nom>
    <valeur>valeur pour 32</valeur>
    <donnees>
      <debut>0</debut>
      <fin>100</fin>
    </donnees>
    <liste>
      <entry>liste 0</entry>
      <entry>liste 1</entry>
      <entry>liste 2</entry>
      <entry>liste 3</entry>
      <entry>liste 4</entry>
    </liste>
  </entry>
  <entry>
    <nom>nom pour 33</nom>
    <valeur>valeur pour 33</valeur>
    <donnees>
      <debut>0</debut>
      <fin>100</fin>
    </donnees>
    <liste>
      <entry>liste 0</entry>
      <entry>liste 1</entry>
      <entry>liste 2</entry>
      <entry>liste 3</entry>
      <entry>liste 4</entry>
    </liste>
  </entry>
  <entry>
    <nom>nom pour 34</nom>
    <valeur>valeur pour 34</valeur>
    <donnees>
      <debut>0</debut>
      <fin>100</fin>
    </donnees>
    <liste>
      <entry>liste 0</entry>
      <entry>liste 1</entry>
      <entry>liste 2</entry>
      <entry>liste 3</entry>
      <entry>liste 4</entry>
    </liste>
  </entry>
  <entry>
    <nom>nom pour 35</nom>
    <valeur>valeur pour 35</valeur>
    <donnees>
      <debut>0</debut>
      <fin>100</fin>
    </donnees>
    <liste>
      <entry>liste 0</entry>
      <entry>liste 1</entry>
      <entry>liste 2</entry>
      <entry>liste 3</entry>
      <entry>liste 4</entry>
    </liste>
  </entry>
  <entry>
    <nom>nom pour 36</nom>
    <valeur>valeur pour 36</valeur>
    <donnees>
      <debut>0</debut>
      <fin>100</fin>
    </donnees>
    <liste>
      <entry>liste 0</entry>
      <entry>liste 1</entry>
      <entry>liste 2</entry>
      <entry>liste 3</entry>
      <entry>liste 4</entry>
    </liste>
  </entry>
  <entry>
    <nom>nom pour 37</nom>
    <valeur>valeur pour 37</valeur>
    <donnees>
      <debut>0</debut>
      <fin>100</fin>
    </donnees>
    <liste>
      <entry>liste 0</entry>
      <entry>liste 1</entry>
      <entry>liste 2</entry>
      <entry>liste 3</entry>
      <entry>liste 4</entry>
    </liste>
  </entry>
  <entry>
    <nom>nom pour 38</nom>
    <valeur>valeur pour 38</valeur>
    <donnees>
      <debut>0</debut>
      <fin>100</fin>
    </donnees>
    <liste>
      <entry>liste 0</entry>
      <entry>liste 1</entry>
      <entry>liste 2</entry>
      <entry>liste 3</entry>
      <entry>liste 4</entry>
    </liste>
  </entry>
  <entry>
    <nom>nom pour 39</nom>
    <valeur>valeur pour 39</valeur>
    <donnees>
      <debut>0</debut>
      <fin>100</fin>
    </donnees>
    <liste>
      <entry>liste 0</entry>
      <entry>liste 1</entry>
      <entry>liste 2</entry>
      <entry>liste 3</entry>
      <entry>liste 4</entry>
    </liste>
  </entry>
  <entry>
    <nom>nom pour 40</nom>
    <valeur>valeur pour 40</valeur>
    <donnees>
      <debut>0</debut>
      <fin>100</fin>
    </donnees>
    <liste>
      <entry>liste 0</entry>
      <entry>liste 1</entry>
      <entry>liste 2</entry>
      <entry>liste 3</entry>
      <entry>liste 4</entry>
    </liste>
  </entry>
  <entry>
    <nom>nom pour 41</nom>
    <valeur>valeur pour 41</valeur>
    <donnees>
      <debut>0</debut>
      <fin>100</fin>
    </donnees>
    <liste>
      <entry>liste 0</entry>
      <entry>liste 1</entry>
      <entry>liste 2</entry>
      <entry>liste 3</entry>
      <entry>liste 4</entry>
    </liste>
  </entry>
  <entry>
    <nom>nom pour 42</nom>
    <valeur>valeur pour 42</valeur>
    <donnees>
      <debut>0</debut>
      <fin>100</fin>
    </donnees>
    <liste>
      <entry>liste 0</entry>
      <entry>liste 1</entry>
      <entry>liste 2</entry>
      <entry>liste 3</entry>
      <entry>liste 4</entry>
    </liste>
  </entry>
  <entry>
    <nom>nom pour 43</nom>
    <valeur>valeur pour 43</valeur>
    <donnees>
      <debut>0</debut>
      <fin>100</fin>
    </donnees>
    <liste>
      <entry>liste 0</entry>
      <entry>liste 1</entry>
      <entry>liste 2</entry>
      <entry>liste 3</entry>
      <entry>liste 4</entry>
    </liste>
  </entry>
  <entry>
    <nom>nom pour 44</nom>
    <valeur>valeur pour 44</valeur>
    <donnees>
      <debut>0</debut>
      <fin>100</fin>
    </donnees>
    <liste>
      <entry>liste 0</entry>
      <entry>liste 1</entry>
      <entry>liste 2</entry>
      <entry>liste 3</entry>
      <entry>liste 4</entry>
    </liste>
  </entry>
  <entry>
    <nom>nom pour 45</nom>
    <valeur>valeur pour 45</valeur>
    <donnees>
      <debut>0</debut>
      <fin>100</fin>
    </donnees>
    <liste>
      <entry>liste 0</entry>
      <entry>liste 1</entry>
      <entry>liste 2</entry>
      <entry>liste 3</entry>
      <entry>liste 4</entry>
    </liste>
  </entry>
  <entry>
    <nom>nom pour 46</nom>
    <valeur>valeur pour 46</valeur>
    <donnees>
      <debut>0</debut>
      <fin>100</fin>
    </donnees>
    <liste>
      <entry>liste 0</entry>
      <entry>liste 1</entry>
      <entry>liste 2</entry>
      <entry>liste 3</entry>
      <entry>liste 4</entry>
    </liste>
  </entry>
  <entry>
    <nom>nom pour 47</nom>
    <valeur>valeur pour 47</valeur>
    <donnees>
      <debut>0</debut>
      <fin>100</fin>
    </donnees>
    <liste>
      <entry>liste 0</entry>
      <entry>liste 1</entry>
      <entry>liste 2</entry>
      <entry>liste 3</entry>
      <entry>liste 4</entry>
    </liste>
  </entry>
  <entry>
    <nom>nom pour 48</nom>
    <valeur>valeur pour 48</valeur>
    <donnees>
      <debut>0</debut>
      <fin>100</fin>
    </donnees>
    <liste>
      <entry>liste 0</entry>
      <entry>liste 1</entry>
      <entry>liste 2</entry>
      <entry>liste 3</entry>
      <entry>liste 4</entry>
    </liste>
  </entry>
  <entry>
    <nom>nom pour 49</nom>
    <valeur>valeur pour 49</valeur>
    <donnees>
      <debut>0</debut>
      <fin>100</fin>
    </donnees>
    <liste>
      <entry>liste 0</entry>
      <entry>liste 1</entry>
      <entry>liste 2</entry>
      <entry>liste 3</entry>
      <entry>liste 4</entry>
    </liste>
  </entry>
</entries>

Voilà, j’espère que cela vous servira 🙂

 

Programmer un Arduino grace à un programmeur AVR ISP

atmel mkii

Je continue de découvrir le merveilleux monde de l’électronique et plus particulièrement celui d’Arduino. Après l’Arduino Mega, l’Arduino Uno et l’Arduino Nano, j’ai décidé d’utiliser le Arduino Mini Pro qui a la particularité d’être peu cher (7€) et dépourvu de connecteur USB pour le connecter au PC.

Heureusement il existe des programmeurs AVR ISP qui permettent d’envoyer votre code ou tout autre bootloader sur votre Arduino (nano, uno, mega, pro mini ou autre).

J’ai donc décidé de commander un programmeur AVR ISP dans la section Atmel de Farnell, ce qui sera également l’occasion de tester ce fournisseur de composants électroniques que l’on m’a souvent recommandé.

Fabriquer une caméra HD de surveillance RaspiCam avec votre RaspBerry Pi

raspberry pi camera

Récemment j’ai pu lire un article de Christoph Buenger qui explique comment réaliser une caméra de surveillance accessible via Internet grâce à un simple RaspBerry Pi Modèle B et à un module caméra.

J’ai tout de suite été attiré par son article car il permet à moindre coût de réaliser votre propre caméra de surveillance haute définition pour à peine plus de 75€. Et çà tombe bien car j’ai justement un RaspBerry Pi qui prend la poussière dans un tiroir et un chat malicieux que j’aimerai bien surveiller :-).

Dans cet article nous allons donc voir comment fabriquer une caméra de surveillance, qu’on appelera RaspiCam, accessible par Internet en utilisant un RaspBerry Pi et un module caméra capable d’enregistrer en haute définition, tout en s’amusant :p

Installer la manette de jeu sans fil Logitech F710 sur Windows 7

Logitech F710

On m’a récemment offert une manette de jeux sans fil Logitech F710.

Super cadeau! Je vais enfin pourvoir jouer à mes jeux vidéos de mon lit sans avoir mon chat qui fait de la corde à sauter avec le cable qui pendouille.

La manette F710 est digne des produits haut de gamme de chez Logitech.

Ce gamepad F710 est probablement une des meilleur manette du moment:

  • ergonomique
  • ultra smooth
  • mode XInput et DirectInput supporté
  • vibrations
  • faible consommation
  • etc…

Seul point noir: impossible d’installer la manette de jeux sur mon Windows 7 64 Bits.
Heureusement il existe une astuce.

Contrôler votre Arduino en Bluetooth

arduino with bluetooth

Dans ce tutoriel, nous allons voir comment utiliser un module Bluetooth afin de communiquer avec votre Arduino. Il sera alors possible de communiquer avec Arduino en utilisant votre pc, votre téléphone ou tout autre équipement disposant de la norme Bluetooth.

Imaginez que vous contrôler votre robot piloté par un Arduino avec votre téléphone. Trop la classe non ? Voilà une piste de début de solution qui vous permettra de communiquer avec votre téléphone portable et votre Arduino :-p.

Ambilight avec Arduino et Boblight

Ambilight with Arduino

Tout le monde connait le système de lumière Ambilight créé par Philips. Ce système permet de rétro éclairé le dos de votre télévision afin de donner de la profondeur à vos films.

Ce système est tout simplement génial et donne réellement la sensation que le mur sur lequel est projeté la lumière est une prolongation de votre télévision.

Nous allons voir comment fabriquer à moindre coût un système Ambilight maison à base d’Arduino, de led RGB et du logiciel Boblight.

L’application BTCe pour Android est disponible

btce android

Cette semaine ZeM.fr vous propose de télécharger gratuitement son application BTCe pour Android.

Cette première application Android vous permettra de suivre les cours des Bitcoins, Litecoins et autres cryptocurrencies qui sont utilisés sur la plateforme d’échange des cryptomonnaies BTCe.com.

Simple d’utilisation elle vous offrira toutes les informations concernant vos cryptocurrencies en temps réel.

Vous pourrez également consulter les derniers échanges réalisés sur la plateforme BTCe.

[Arduino] Contrôler des moteurs DC avec le composant L293D

Cela fait maintenant plusieurs semaines que je suis à fond sur le monde Arduino et j’ai pour projet la réalisation d’un petit robot (rassurez-vous quand tout fonctionnera vous aurez droit à un beau tutoriel 🙂 ).

Les robots utilisent un certain nombre de composants: microcontrôleur (arduino dans mon cas), de servos et de moteurs. Dans cet article, nous allons voir comment faire pour piloter des moteurs DC (à courant continu) via un arduino.

Contrat de moralité pour miner des Bitcoins et des Litecoins

bitcoin asic

Voici le premier jet du contrat que je compte proposer afin de mutualiser nos ressources afin d’investir massivement dans le mining de cryptomonnaies.

Ce contrat est un premier jet et sera probablement modifié dans les jours qui arrivent. Si vous avez des questions n’hésitez pas à les poser.

2014, une année de GeeK

2014, une année de GeeK

L’année 2013 a été une année relativement chargée qui nous a permis de voir de nombreuses geekeries. Et 2014 s’annonce déjà d’être encore plus geek, notamment avec tous les objets connectés.

Tout comme l’an dernier je vous propose de passer brièvement sur les thèmes abordés au cours de l’année et d’enchainer sur les projets à venir.

Voici donc une ébauche (méthode agile oblige :p) de notre roadmap à venir.