« Paie Ton Patch !™ » : Weboob – Partie 2/2

5.3 pages.py

C’est le gros du boulot puisque ces classes vont rechercher les éléments utiles dans le contenu de la page. Ce sont celles que l’on doit patcher lorsqu’un webmaster a un accès de créativité. Heureusement, cette tâche s’est considérablement simplifiée depuis Browser2.

Lire la suite

« Paie Ton Patch !™ » : Weboob – Partie 1/2

Combien de fois vous êtes-vous dit « Pourquoi c’est pas corrigé ça ? » ou « faudrait patcher ce truc » sans oser le faire ? Voici une occasion !

Web Outside of Browsers [1] est un ensemble d’outils modulaires en ligne de commandes écrits en Python, ainsi que quelques applications graphiques Qt. Son but est de pouvoir utiliser des sites web comme l’on utilise d’autres ressources sous Unix, à l’aide d’outils simples composables et scriptables. Parmi les outils de scraping existants, il s’agit probablement du plus complet, et décrire ses possibilités nécessiterait plusieurs articles. Ses compétences vont de la récupération de vidéos de sites web (et non-web en Flash) à l’émission de virements bancaires, en passant par l’édition de tickets dans un bugtracker, ou la recherche d’emploi. C’est cette dernière fonction que nous testerons, en contribuant au support du site LinuxJobs.fr [2].

Lire la suite

Radio Data System (RDS) : analyse du canal numérique transmis par les stations radio FM commerciales, introduction aux codes correcteurs d’erreur – Partie 2/2

5.1 Une erreur

L’annexe C de [13] nous explique que le code correcteur d’erreur est implémenté, lors de l’émission, comme une combinaison linéaire (somme modulo 2, ou XOR) des bits à émettre.

Lire la suite

Radio Data System (RDS) : analyse du canal numérique transmis par les stations radio FM commerciales, introduction aux codes correcteurs d’erreur – Partie 1/2

RDS – Radio Data System – est le mode numérique de communication exploité par les stations FM de la bande commerciale 88–108 MHz pour indiquer à l’utilisateur des informations telles que le nom de la station reçue, du texte libre tel que les informations en cours de diffusion ou un titre de musique, ainsi que l’heure ou la nature du programme diffusé. Nous nous proposons, à partir du signal analogique reçu par un récepteur de télévision numérique terrestre (DVB-T) exploité comme récepteur radiofréquence généraliste, d’analyser les diverses étapes de démodulation et de décodage, pour finalement conclure sur une exploration des méthodes de détection et de correction d’erreurs.

La bande commerciale FM, comprise entre 88 et 108 MHz, est divisée pour allouer une bande de 200 kHz à chaque station (Fig. 1, à gauche). Chaque station redivise chaque tranche du spectre radiofréquence qui lui est allouée en trois sous-segments : le son, avec d’abord la somme des signaux destinés à l’oreille droite et l’oreille gauche, puis si la transmission est en stéréo, la différence entre oreille droite et oreille gauche (afin qu’un récepteur mono puisse recevoir une station stéréo), et finalement un signal numérique – RDS (Radio Data System, Fig. 1 à droite) – comportant des informations telles que le nom de la station (Fig. 2), ou du texte libre tel que le titre d’une émission ou d’un morceau de musique. Un récepteur est informé qu’une émission est en stéréo par la présence d’un pilote – un signal périodique continu – à 19 kHz. La sous-porteuse de la transmission numérique se fait à 57 kHz générée comme trois fois le pilote si l’émetteur est stéréo, hypothèse que nous ne ferons pas au cours de nos traitements dans lesquels nous nous efforcerons de reproduire une copie locale de la sous-porteuse à 57 kHz. La bande passante du signal numérique est de l’ordre de 5 kHz.

Lire la suite

Programmation embarquée sur Raspberry Pi sans sonde JTAG – Partie 2/2

2.1.2 GDB

Lire la suite

Programmation embarquée sur Raspberry Pi sans sonde JTAG -Partie 1/2

Le standard JTAG, au succès indéniable, est aujourd’hui ancré dans la majorité des processeurs et proposé comme moyen privilégié de programmation embarquée et de debug. Toutefois, l’utilisation d’une sonde JTAG n’est en rien triviale. L’utilisation du débuggeur GNU s’impose alors, car il est possible de l’employer en bare-metal, c’est-à-dire sans aucun système d’exploitation embarqué pour gérer le processeur et sa carte. À titre d’illustration, nous nous intéressons dans cet article à la programmation bare-metal d’une Raspberry Pi à l’aide de GDB uniquement.

En situation de développement embarqué, la Raspberry Pi (RPi) est appelée « système cible » (target), tandis que le poste de travail est appelé « système hôte » (host). L’hôte doit donc programmer le système cible à distance (remote) via un moyen de communication dédié. À noter également que nous sommes dans une situation de développement croisé : la RPi, bare-metal et architecture ARM, ne correspond pas au système hôte, couramment muni d’une architecture Intel avec un système d’exploitation (OS). Il convient donc d’utiliser une chaîne d’outils croisés pour produire et manipuler un programme cible depuis un système hôte.

Lire la suite

Étendre un serveur MySQL/MariaDB avec des fonctions compilées – Partie 1/2

MySQL et MariaDB offrent la possibilité de développer des fonctions compilées, à utiliser comme toute autre fonction native dans vos requêtes SQL. Étudions la puissance et les dangers d’ajouter du code au serveur.

Les User Defined Functions sont un moyen d’étendre les possibilités du serveur MySQL en ajoutant des fonctions écrites en C ou C++, qui peuvent être utilisées comme d’autres fonctions SQL dans des requêtes (c’estàdire, qui se comportent comme les fonctions natives telles que REPLACE, SUBSTR ou SUM).

Lire la suite