Outils pour utilisateurs

Outils du site


issue114:tuto2

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
issue114:tuto2 [2016/11/19 10:54] auntieeissue114:tuto2 [2016/11/19 11:39] (Version actuelle) auntiee
Ligne 49: Ligne 49:
 Qu'est-ce que nous téléchargerons du Web ? Qu'est-ce que nous téléchargerons du Web ?
  
-Au départ, nous sommes à la recherche d'une liste des publications récentes du Full Circle Magazine. C'est une tâche très simple pour un lecteur humain : naviguer simplement jusqu'à la page Web et lire les articles en choisissant ceux avec le titre « Full Circle Magazine » (par opposition avec « Weekly News » ou quelque chose d'autre). Cependant, c'est plus difficile à faire pour un programme informatique que pour un humain, car il doit apprendre à distinguer entre les articles et les éléments d'arrière-plan, les images, etc. Les pages Web modernes sont en fait un assemblage bien complexe d'informations. Aussi, aidons notre programme en utilisant les facilités intégrées dans un CMS (Content Management System - système de gestion du contenu) moderne tel que Wordpress utilisé par le FCM. L'un d'eux est le flux RSS (Rich Site Summary - Résumé enrichi d'un site).+Au départ, nous sommes à la recherche d'une liste des publications récentes du Full Circle Magazine. C'est une tâche très simple pour un lecteur humain : naviguer simplement jusqu'à la page Web et lire les articles en choisissant ceux avec le titre //Full Circle Magazine// (par opposition à //Weekly News// ou quelque chose d'autre). Cependant, c'est plus difficile à faire pour un programme informatique que pour un humain, car il doit apprendre à distinguer entre les articles et les éléments d'arrière-plan, les images, etc. Les pages Web modernes sont en fait un assemblage bien complexe d'informations. Aussi, aidons notre programme en utilisant les facilités intégrées dans un CMS (Content Management System - système de gestion du contenu) moderne tel que Wordpress utilisé par le FCM. L'un d'eux est le flux RSS (Rich Site Summary - Résumé enrichi d'un site).
  
 **An RSS feed is a way of querying the site’s database of articles. Most CMS allow us to build a query along several different lines. In the case of FCM, we can use the following query to get a list of all articles: **An RSS feed is a way of querying the site’s database of articles. Most CMS allow us to build a query along several different lines. In the case of FCM, we can use the following query to get a list of all articles:
Ligne 86: Ligne 86:
 This is what we will be using to help our search for new issues.** This is what we will be using to help our search for new issues.**
  
-D'autres requêtes peuvent être manipulées de façon similaire. Par exemple, pour localiser tous les articles qui sont étiquetés « podcast », « python », « pascal » etc.:+D'autres requêtes peuvent être manipulées de façon similaire. Par exemple, pour localiser tous les articles qui sont étiquetés « podcast », « python », « pascal » etc. :
 http://fullcirclemagazine.org/tag/podcast/feed/  http://fullcirclemagazine.org/tag/podcast/feed/ 
  
Ligne 93: Ligne 93:
 http://fullcirclemagazine.org/tag/pascal/feed/ http://fullcirclemagazine.org/tag/pascal/feed/
  
-Ronnie a vraiment inclus une version simplifiée du flux pour le poscast Weekly News :+En fait, Ronnie inclut une version simplifiée du flux pour le podcast Weekly News :
  
 http://fullcirclemagazine.org/feed/podcast http://fullcirclemagazine.org/feed/podcast
  
-Ce mécanisme peut être utilisé pour spécifier les articles publiés par un auteur particulier. Comme les articles informant d'une nouveau numéro du FCM sont invariablement de Ronnie, nous pouvons utiliser cette URL pour les filtrer :+Ce mécanisme peut être utilisé pour spécifier les articles publiés par un auteur en particulier. Comme les articles annonçant un nouveau numéro du FCM sont invariablement de Ronnie, nous pouvons utiliser cette URL pour les filtrer :
  
 http://fullcirclemagazine.org/author/ronnie-2/feed/ http://fullcirclemagazine.org/author/ronnie-2/feed/
Ligne 120: Ligne 120:
 Combiner des éléments Combiner des éléments
  
-À ce point, nous avons un moyen de nous connecter au Web pour télécharger un page unique, à partir de son URL. D'autre part, nous avons une URL spécifique qui nous permet d'obtenir du contenu dynamique construit à partir du CMS du FCM. Mettons cela ensemble dans un programme Pascal de 20 lignes (avec des lignes vides et sous un beau format). D'abord, nous avons besoin d'inclure l'unit et de déclarer deux variables :+À ce stade, nous avons un moyen de nous connecter au Web pour télécharger une page unique, à partir de son URL. En revanche, nous avons une URL spécifique qui nous permet d'obtenir du contenu dynamique construit à partir du CMS du FCM. Mettons cela ensemble dans un programme Pascal de 20 lignes (avec des lignes vides et sous un beau format). D'abord, nous avons besoin d'inclure l'unit et de déclarer deux variables :
  
 uses uses
Ligne 130: Ligne 130:
   hCurl : pCurl;   hCurl : pCurl;
      
-La première variable est simplement l'URL que nous voulons passer à libcurl, dans le format PChar. Depuis l'origine, les chaînes Pascal sont des rangées de 256 caractères. Les mots dans les positions 1 à 255 contiennent les codes ASCII de chaque caractère, alors que la position 0 contient le nombre total de caractères de la chaîne. Inutile de dire que ce schéma a plusieurs limitations, en particulier pour la manipulation des chaînes de plus de 255 caractères et l'utilisation des codifications multi-mots (pensez à l'Unicode). D'autre part, le langage de programmation C - dans lequel la majeure partie d'Internet a été développée - utilise traditionnellement des chaînes se terminant par zéro. Elles sont simplement une zone de mémoire contiguë assez longue pour contenir la chaîne, avec un caractère spécial zéro à la fin. Heureusement, elles peuvent être aussi utilisées facilement en Pascal par le type PChar, qui est simplement un pointeur vers un caractère.+La première variable est simplement l'URL que nous voulons passer à libcurl, dans le format PChar. Depuis l'origine, les chaînes Pascal sont des rangées de 256 caractères. Les mots dans les positions 1 à 255 contiennent les codes ASCII de chaque caractère, alors que la position 0 contient le nombre total de caractères de la chaîne. Inutile de dire que ce schéma a plusieurs limitations, en particulier pour la manipulation des chaînes de plus de 255 caractères et l'utilisation des codifications multi-mots (pensez à l'Unicode). D'autre part, le langage de programmation C - dans lequel la majeure partie de l'Internet a été développée - utilise traditionnellement des chaînes se terminant par zéro. Elles sont simplement une zone de mémoire contiguë assez longue pour contenir la chaîne, avec un caractère spécial zéro à la fin. Heureusement, elles peuvent être aussi utilisées facilement en Pascal par le type PChar, qui est simplement un pointeur vers un caractère.
  
 **The second variable is a pointer to the CURL routine that will handle our connection. The following code has been directly copied from the unit’s example: **The second variable is a pointer to the CURL routine that will handle our connection. The following code has been directly copied from the unit’s example:
Ligne 148: Ligne 148:
 The complete code of this program is available here: http://pastebin.com/QM9m3jug ** The complete code of this program is available here: http://pastebin.com/QM9m3jug **
  
-La seconde variable est un pointeur vers la routine CURL qui gère notre connexion. le code suivant a été copié directement de l'exemple de l'unit :+La seconde variable est un pointeur vers la routine CURL qui gère notre connexion. Le code suivant a été copié directement de l'exemple de l'unit :
  
   hCurl:= curl_easy_init;   hCurl:= curl_easy_init;
Ligne 160: Ligne 160:
   end;   end;
      
-Un processus de gestion est paramétré avec curl_easy_init. Si cela fonctionne (nous avons accès à une bibliothèque dynamique et assez de mémoire libre), nous pouvons alors paramétrer deux options (une sortie verbeuse à l'écranl'URL que nous voulons analyser). curl_easy_perform fait le vrai travail de téléchargement de la page et, enfin, curl_easy_cleanup libère la mémoire utilisée.+Un processus de gestion est paramétré avec curl_easy_init. Si cela fonctionne (nous avons accès à une bibliothèque dynamique et assez de mémoire libre), nous pouvons alors paramétrer deux options (une sortie verbeuse à l'écran et l'URL que nous voulons analyser). curl_easy_perform fait le vrai travail de téléchargement de la page et, enfin, curl_easy_cleanup libère la mémoire utilisée.
  
 Le code complet de ce programme est disponible ici : http://pastebin.com/QM9m3jug Le code complet de ce programme est disponible ici : http://pastebin.com/QM9m3jug
Ligne 182: Ligne 182:
   f:=TFileStream.Create('fcm.xml',fmCreate);**   f:=TFileStream.Create('fcm.xml',fmCreate);**
      
-Si nous compilons et lançons le programme du dessus, nous obtenons simplement l'écho sur l'écran du code XML retourné par le serveur du FCM. Pour faire quelque chose d'utile avec ces données, nous pourrions, par exemple, les écrire dans un fichier. Pour être plus précis, nous avons besoin d'obtenir le gestionnaire de CURL pour qu'il le fasse pour nous. Le processus aura lieu en deux étapes.+Si nous compilons et lançons le programme ci-dessus, nous obtenons simplement l'écho sur l'écran du code XML retourné par le serveur du FCM. Pour faire quelque chose d'utile avec ces données, nous pourrions, par exemple, les écrire dans un fichier. Pour être plus précis, nous avons besoin d'obtenir le gestionnaire de CURL pour qu'il le fasse pour nous. Le processus aura lieu en deux étapes.
  
-Dans la première étape, nous allons passer au gestionnaire une fonction de rappel pour transformer la structure de ses données internes en flux de mots. Cette fonction a besoin d'être déclarée avec une syntaxe très précise, car elle sera appelée en fait par le gestionnaire de CURL qui avait été écrit en C. En fait, c'est un bon exemple de l'utilisation de plusieurs langages de programmation dans le même objet compilé.+Dans la première étape, nous allons passer au gestionnaire une fonction de rappel pour transformer la structure de ses données internes en flux de mots. Cette fonction a besoin d'être déclarée avec une syntaxe très précise, car elle sera appelée en fait par le gestionnaire de CURLqui est écrit en C. En fait, c'est un bon exemple de l'utilisation de plusieurs langages de programmation dans le même objet compilé.
  
 Function DoWrite(Ptr : Pointer; Size : size_t; nmemb: size_t; Data : Pointer) : size_t; cdecl; Function DoWrite(Ptr : Pointer; Size : size_t; nmemb: size_t; Data : Pointer) : size_t; cdecl;
Ligne 223: Ligne 223:
 Le code complet de ce programme est disponible par ce lien : http://pastebin.com/Ayth2cfK Le code complet de ce programme est disponible par ce lien : http://pastebin.com/Ayth2cfK
  
-Dans cette aprtie de notre série sur Free Pascal, nous nous sommes un peu éloignés de Free Vision et sommes rentrés dans des détails techniques sur comment utiliser la bibliothèque CURL à partir de Pascal pour se connecter au flux RSS du CMS du FCM. Au point atteint, nous savons comment nous connecter au serveur et télécharger un fichier XML contenant une liste des articles récents publiés sur la page Web. Dans la prochaine partie de notre série, nous regarderons comment analyser le code XML pour retrouver l'information que nous cherchons : numéros de publication et URL de téléchargement.+Dans cette partie de notre série sur Free Pascal, nous nous sommes un peu éloignés de Free Vision et sommes rentrés dans des détails techniques sur comment utiliser la bibliothèque CURL à partir de Pascal pour se connecter au flux RSS du CMS du FCM. À ce stade, nous savons comment nous connecter au serveur et télécharger un fichier XML contenant une liste des articles récents publiés sur la page Web. Dans la prochaine partie de notre série, nous regarderons comment analyser le code XML pour récupérer l'information que nous cherchons : numéros de publication et URL de téléchargement.
issue114/tuto2.1479549273.txt.gz · Dernière modification : 2016/11/19 10:54 de auntiee