Category Archives: Programmation

[.Net] Créer et utiliser des plugins dans une application DotNet

dotnet plugins

Aujourd’hui j’ai développé un système de gestion de plugins en DotNet.

En effet, plus je développe et plus je m’aperçois que j’ai souvent le même besoin: pouvoir importer des assembly à un moment précis et permettre à mes collaborateurs de développer leur propres extensions et de les utiliser quand ils le souhaitent.

J’ai donc effectué pas mal de recherche sur le chargement dynamique des assembly et des bibliothèques de fonctionnalités et très vite je suis tombé sur des demandes de tierses personnes qui souhaitaient mettre en place un système de plugins en C# ou VB.Net.

Imaginez une application dans laquelle vous offrez la possibilité à ses utilisateurs d’étendre facilement les fonctionnalités. Que du bonheur!

Nous allons voir comment mettre en place la création et le chargement des plugins au sein de votre application DotNet.

[.Net] Creation d’un disque virtuel

virtual drive

Aujourd’hui je vais vous partager un exemple de code trouvé en fouinant sur le net qui permet de créer un disque virtuel.

Les disques virtuels permettent tout simplement d’émuler un lecteur disque en spécifiant un chemin vers lequel il pointera, ce qui peut simplifier les recherches et les développement.

Les virtual drive permettent donc de faire rediriger une lettre d’accès vers un répertoire physique.

Il nous sera ainsi possible de faire pointer le répertoire “C:\Windows” vers “Z:\”.

Installer un GIT sur un hébergement mutualisé 1And1

Serveur Git

Tout le monde connait l’importance d’effectuer régulièrement des sauvegardes.

Lorsque l’on travaille seul sur un projet, on peut se passer d’outils spécifiques dédiés au versioning et à la sauvegarde, en effectuant régulièrement des backups manuels (vive 7zip :p).

C’est une autre histoire lorsqu’on travaille à plusieurs sur le même projet: plusieurs personnes doivent pouvoir accéder et travailler sur les même ressources simultanément.

Heureusement des outils tels que GIT permettent de versionner et d’assurer le suivi d’un projet collaboratif.

Il existe de nombreuses plateformes vous proposant d’utiliser leur propre plateforme d’intégration continue (GIT illustre parfaitement une plateforme de type Continuous Integration). Mais ces plateformes sont souvent payantes et imposent un certain nombre de contraintes.

C’est pourquoi il peut être intéressant de monter son propre serveur GIT afin de ne pas avoir de restrictions et de réduire les coûts.

Nous allons voir comment installé un serveur GIT sur un hébergement mutualisé.

[JAVA] Centrer une pub Admob en bas d’une application Android

android

En ce moment je bosse pas mal sur ma reconversion dans le milieu du développement mobile.

Aucun problème pour développer des applications sous Windows Phone, par contre sous Android j’ai eu un peu plus de mal à me remettre dans la mise en forme utilisée par les applications Android.

Voici donc un petit truc tout simple mais qui m’a demandé pas mal de temps: comment afficher une publicité Admob en bas d’une fenêtre.

[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 :-)

 

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

l293d dc motor

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.

[WD] Convertir un timestamp en Date sous Windev

windev

Aujourd’hui j’ai joué un peu avec Windev qui est un AGL (Assistant de Gestion Logiciel) français qui permet de développer assez rapidement des applications complètes.

Windev, développé par PCSoft, est assez atypique car il  utilise un langage de programmation en français, ce qui est assez perturbant au départ.

Pour mes tests j’ai du convertir une date au format unix timestamp vers un type date.

[.Net] StopWatch VS Tickcount

dotnet stopwatch

Aujourd’hui, j’ai procédé à un petit test afin de déterminer quel est le moyen le plus performant de mesurer le temps d’exécution d’un morceau de code.

Généralement pour mesurer des temps d’exécution, j’utilise la classe StopWatch du Framework DotNet mais j’ai l’impression qu’elle n’est pas très performante lorsqu’on l’utilise très très souvent.

J’ai donc réalisé un test qui compare le temps d’exécution d’une fonction mesuré avec le StopWatch et l’équivalent en utilisant directement un tickcount.

[.Net] Comment trouver les frameworks DotNet installés ?

dotnet microsoft

Aujourd’hui j’ai eu une question tout bête: comment faire pour savoir les versions du framework DotNet installées sur une machine Windows ?

Après avoir cherché sur le serveur, dans les propriétés, dans les logiciels installés, etc…, j’ai enfin trouvé un début de piste dans la base de registre.

Le souci c’est que récupérer toutes les versions disponibles du framework DotNet via la base de registre n’est pas super convivial.

Après un peu de recherche, j’ai trouvé un sample directement sur la MSDN qui permet d’afficher la liste de toutes les versions du framework DotNet installé.

[JAVA] Gestion de mémoire des Java Virtual Machine (JVM)

java jvm memory

Les JVM sont des machines virtuelles qui vont vous permettre d’exécuter vos codes sources Java.

Ces machines virtuelles java nécessite qu’on leur alloue de la mémoire afin qu’elles puissent exécuter correctement le code Java.

Si vous rencontrez un message d’erreur tel que celui là, c’est que vous avez rencontré un problème lors de l’allocation de la mémoire:

Error occurred during initialization of VM
Could not reserve enough space for object heap

Nous allons essayer de comprendre la gestion de la mémoire utilisée par une JVM: heap, stack, -xss, -xms, -xmx, -xmn, …