Recherche sur le blog

mercredi 30 avril 2014

[SQL] Mémo – Dates dans DB2 UDB for iSeries

Sur l’AS/400, lorsqu’on utilise des champs de type date, il faut parfois utiliser certaines fonctions de conversion ou du moins utiliser une chaine de caractères d’un format spécifique. Il existe aussi un tas de fonctions qui permettent par exemple de récupérer le jour de la semaine, le libellé du mois, ou bien une représentation sous forme d’entier. 

Fonction “Date”

Il est possible de passer une chaine de caractères à la fonction “Date” pour retourner une variable du bon type. Dans l’exemple qui suit, on utilise la table système pour obtenir une seule ligne de résultat. La chaine de caractère passée en paramètre est au format “MM/DD/YYYY”.
SELECT DATE('04/10/2014') FROM sysibm/sysdummy1;
Ce qui permet d’obtenir à l’écran “10/04/2014”. On peut également convertir ce résultat au format “YYYY-MM-DD” grâce à la fonction CHAR. Celle-ci prend en paramètre une variable ou un champ de type date ainsi qu’un paramètre facultatif supplémentaire étant le type (ex : ISO, USA). 
SELECT CHAR(DATE('04/10/2014'),iso) FROM sysibm/sysdummy1;
Cette requête nous retourne alors la date “2014-04-10”, soit le 10 avril : c’est ce que nous cherchions effectivement à faire. En utilisant le format “usa” au lieu d’”iso”, nous aurions obtenu exactement le même résultat que la chaine passée en paramètre de la fonction “DATE”. 

Une chaine de caractères directement dans la condition
  
Il est également possible de récupérer des résultats d’une table en comparant la date à une chaine de caractères, pour autant qu’elle soit au bon format. En pratique, on pourrait directement utiliser les fonctions CHAR et DATE, mais il est également possible de réaliser ceci :
SELECT * FROM MA_TABLE WHERE CH_DAT = '2014-04-10';
Dans l’exemple ci-dessus, nous possédons une table nommée “MA_TABLE” contenant plusieurs champs dont un de type date, “CH_DAT”. Ce champ n’est donc pas un numérique, qui est pourtant couramment utilisé pour stocker les dates au format YYYYMMDD. 

Récupérer le jour, le mois, l’année… 

Comme on le sait, les champs de type date imposent d’effectuer des conversions, mais permettent tout de même de récupérer des données aisément sans avoir à découper une quelconque chaine de caractères. Inutile de se battre avec la fonction SUBSTRING pour récupérer le jour ou le mois.
SELECT DAY(CH_DAT) FROM MA_TABLE;
SELECT MONTH(CH_DAT) FROM MA_TABLE;
SELECT YEAR(CH_DAT) FROM MA_TABLE;
En supposant que le champ “CH_DAT” soit bien de type date, nous récupérons alors les jours, les mois ou les années pour chaque ligne de la table. Depuis la V5R3, il est également possible de récupérer le libellé du mois (ex : Janvier, Février, etc), avec la fonction MONTHNAME.
SELECT MONTHNAME(CURRENT DATE) FROM SYSIBM/SYSDUMMY1;
Dans l’exemple ci-dessus, nous utilisons “CURRENT DATE” qui renvoie la date système. Du coup, avec la requête ci-dessus, nous récupérons la valeur “Avril”, ce qui est bien correct puisque nous sommes bien le 30 du mois lors de l’exécution de la requête. 

D’autres fonctions utiles… 

Il existe bien entendu des fonctions qui permettent notamment de renvoyer le jour de la semaine avec DAYOFWEEK, qui considère que le dimanche est le premier jour de la semaine, et DAYOFWEEK_ISO, qui considère que c’est le lundi le 1er. La fonction DAYS renvoie une interprétation de la date en entier, ce qui permet également de calculer le nombre de jours qui se sont écoulés entre deux dates. La fonction JULIAN_DAY permet de renvoyer le nombre de jours entre le 1er janvier 4712 avant J.C. jusqu’à la date renseignée en paramètre. Enfin on peut aussi utiliser WEEK ou WEEK_ISO pour obtenir le numéro de la semaine, sans avoir à effectuer de calcul particulier…

mardi 22 avril 2014

[Web] Rechercher un livre avec Google Books API

Si vous souhaitez récupérer les informations d’un ouvrage en particulier, Google vous propose d’effectuer cette opération au travers de l’API “Google Books API”. Dans cet exemple, nous allons simplement travailler sur les “volumes”, en effectuant une recherche par ISBN (au format ISBN10 ou ISBN13, au choix). Il est bien sûr possible d’aller plus loin en spécifiant des termes de recherche comme le titre notamment.

En utilisant l’API en version 1, on se rend compte qu’il est possible d’interroger la base de données de Google sans pour autant spécifier de clé d’API. L’accès à certaines données publiques ne nécessite pas forcément d’authentification spécifique.
          
Rechercher un ou plusieurs ouvrage(s)
             
En se référant à la documentation, on voit qu’il est possible d’utiliser une requête de type GET en spécifiant une URL ainsi que des paramètres particuliers.
      
Le paramètre “q” doit contenir les termes de la recherche. Vous pouvez également spécifier un mot-clé spécial pour effectuer la recherche sur d’autres champs (comme le code ISBN, le titre ou bien l’auteur). Par exemple, en spécifiant “q=fleurs+inauthor:keyes” permettra d’obtenir la liste des ouvrages qui correspondent à la recherche du tag “fleurs” et qui sont écrits par Keyes.

Dans notre exemple, puisque nous voulons uniquement récupérer les informations associées à un code ISBN, nous allons indiquer ceci en guise de paramètre : “q=isbn:XXXXXXXXXXXXX” . Le code peut très bien être au format ISBN13 ou ISBN10.

En exécutant cette requête dans un navigateur en saisissant directement l’adresse, ou bien en utilisant par exemple la fonction “HTTPRequête” dans Windev, on obtient un code HTTP “200” (signifiant “OK”) et le résultat au format JSON, comme dans l’exemple ci-dessous. Les premiers attributs qui nous intéressent sont notamment “totalItems” et “items”.

json_book

  • totalItems : cet attribut nous indique combien d’attributs “items” sont présents. Cela permet de savoir combien d’éléments correspondent à notre recherche et surtout à déterminer le nombre d’éléments sur lequel on va boucler.
  • items : contient l’ensemble des ouvrages avec les éléments de base (titre, auteur, codes ISBN, identifiant, etc). Le champ “id” peut être récupéré pour afficher les informations détaillées d’un livre avec une autre requête GET.

A vous de voir comment vous souhaitez analyser ou afficher les résultats.
   
Récupérer les informations d’un ouvrage
    
Une fois que l’on connait l’identifiant du livre (attribut “id” récupéré dans l’étape précédente), on peut afficher les informations détaillées.
    
     
On retrouve une majorité d’informations qui étaient déjà présentes lors du listing à la première étape, mais lorsqu’il y a des images de couvertures de plusieurs formats (large, moyen, extra-large), l’ensemble des liens sont repris dans le résultat. Il en va de même pour les catégories. On retrouve également des informations complémentaires telles que les dimensions du bouquin. Voici le résultat obtenu en saisissant l’URL suivante : https://www.googleapis.com/book...TCAlFPjgYC.

json2

Dans une application ou une page web
      
Plusieurs langages proposent des fonctions pour analyser et manipuler le contenu au format JSON. Dans une page web comme dans une application Windows, on peut dès lors afficher des informations à l’utilisateur de manière claire. Voici un petit exemple développé dans Windev…

isbn-reader

L’application affiche le visuel – si disponible –, le résumé au format HTML (il s’agit d’un champ texte de type RTF ; le texte est converti pour pouvoir être affiché dans ce champ), le nombre de pages, le titre, les différents auteurs, les codes ISBN10 et ISBN13, la notation globale, et le nombre total d’utilisateurs ayant donné une cote. Pour aller plus loin, un bouton “Page Web” a été créé pour afficher toutes les informations dans le navigateur.
 
Et ensuite ?
   
Pour plus d’informations et pour découvrir davantage de possibilités, consultez la documentation officielle en cliquant sur le lien suivant : “Using the API – Google Books API Family”.

[Sécurité] Supprimer le virus Conficker

Conficker est un ver informatique, aussi connu sous les noms de Downup, Downandup ou Kido, apparu aux alentours de novembre 2008. Lorsqu’il est installé sur une machine, il peut faire en sorte de bloquer l’envoi de requêtes DNS,  empêcher l’exécution d’un utilitaire anti-malware ou même de désactiver les mises à jour automatique. Certaines variantes, en particulier B et C, recopient des exécutables sur des supports amovibles pour se propager plus facilement sur d’autres ordinateurs. Les variantes A à E, à l’exception de D, sont susceptibles d’exploiter une faille dans le service “Serveur” de l’ordinateur cible. Microsoft a bien sûr corrigé cette vulnérabilité fin octobre 2008 (bulletin MS08-067).

Les symptômes suivants peuvent être constatés lors d’une infection : congestion du réseau due à de nombreuses requêtes ARP, contrôleur de domaine plus lent à répondre, remise à zéro de certaines stratégies locales de sécurité du compte, services liés à Windows Update désactivés, etc. Le service Spamhaus peut également en arriver à bloquer votre adresse IP et à considérer qu’elle est émettrice de spam, même si aucun e-mail n’est transmis.

Pour détecter ce virus, il existe deux méthodes principales. La première consiste à lancer un utilitaire de scan en ligne, si cela est possible. L’autre consiste à utiliser l’outil “Conficker Detection Tool” développé par l’éditeur “McAfee”. L’utilitaire, qui peut être téléchargé sur le site officiel, est plutôt simple à utiliser : lancé depuis un PC dans le réseau, on va lui préciser les intervalles d’adresses à scanner. En cliquant sur le bouton “Go”, le logiciel interroge chaque machine et indique si elle est infectée ou non. Evidemment, cet outil nécessite que toutes les machines soient actives et connectées.

conficker-detection-tool

Sur chaque machine infectée, on va pouvoir lancer l’utilitaire “Conficker Removal Tool”. Cet outil est fourni par Enigma Software et peut être téléchargé via ce lien plutôt que depuis le site officiel qui essaie de vous refourguer SpyHunter. Alors que ce dernier fait partie des logiciels à éviter, le petit utilitaire “cfremover.exe” de 410 Ko semble fonctionner sans poser le moindre souci. Le fichier téléchargé sur 01.net est sûr et a été vérifié avec Trend Micro ainsi que Bitdefender. Si cela peut vous rassurer, voici le rapport…

scan_bd

Une fois lancé, il exécute quatre étapes et redémarre après chacune d’entre elles. En résumé, il s’occupe d’arrêter les services permettant l’exploitation de la faille – dont le service “Serveur” –, de supprimer les partages réseaux administratifs pour éviter la propagation du virus, et d’enlever les fichiers qui ont été installés lors de l’infection. Tout est entièrement automatique une fois que l’on clique sur le bouton “Start”.

removaltool

Après quelques minutes d’exécution, rien d’anormal n’a été constaté sur l’ordinateur précédemment infecté. Aucun avertissement n’a été émis lors du scan complet de la machine avec l’antivirus mis à jour. Si toutefois vous souhaitez éviter à tout prix d’avoir à télécharger un utilitaire de cet éditeur aux pratiques douteuses, vous pouvez vous diriger vers des solutions proposées par BitDefender, Sophos, Symantec, McAfee, ou encore Eset.

Il est également recommandé d’effectuer une vaccination des supports amovibles, qui pourraient avoir été touchés par le ver, avant d’effectuer des transferts de fichier. Dans ce cas, on peut utiliser l’utilitaire UsbFix dans sa version gratuite. Il faut bien sûr que les différents périphériques soient connectés à l’ordinateur sur lequel on exécute l’outil afin que cela fonctionne. Le fonctionnement est très simple : une fois lancé, il faut tout d’abord réaliser une “Recherche”. Une fois que l’on a analysé le rapport, on peut utiliser l’option “Suppression”.

Si l’utilitaire de désinfection fourni par Sophos indique que Conficker a correctement été supprimé, il est recommandé d’effectuer une nouvelle vérification avec un logiciel comme Malwarebytes Anti-Malware ; cela permettra de supprimer d’autres logiciels malveillants qui auraient éventuellement été installés. On peut aussi effectuer un scan complet de la machine avec l’antivirus installé, à condition qu’il soit à jour, et même avec l’utilitaire MSRT.

Une fois toutes ces opérations réalisées, il est recommandé d’effectuer les différentes mises à jour de sécurité du système. On retrouve régulièrement ce ver sur des machines qui sont restées en Windows XP SP1 ou 2. Pour plus d’informations, vous pouvez également consulter l’alerte de sécurité publiée par Secuser en 2008.

mardi 8 avril 2014

[Système] Le support de Windows XP, c’est fini !

C’est aujourd’hui qu’a pris fin le support étendu pour Windows XP, après tout de même près de treize ans de bons et loyaux services. Cela signifie que les ordinateurs exécutant encore ce système d’exploitation ne recevront plus de mises à jour de sécurité. Ainsi les failles qui pourraient être découvertes ne seront pas comblées par Microsoft.

win-xp

On le sait, ceci va grandement impacter les entreprises qui ont décidé de garder leurs ordinateurs sous Windows XP pour des questions d’habitude ou simplement pour utiliser des logiciels spécifiques qui ne sont pas compatibles avec des systèmes d’exploitation plus récents. Il y a également de nombreux distributeurs de billets qui utilisent la version Embedded de l’OS. Il est évident qu’il pourrait y avoir des risques au niveau de la sécurité.

Microsoft incite à mettre à jour vers Windows 8 ; si vous possédez encore XP, cela signifie peut-être que vous avez à disposition un ancien ordinateur qui ne possède pas les ressources nécessaires, et même si c’est le cas, il n’est pas certain que les périphériques soient tous compatibles. Cela implique de devoir racheter un PC… Pour ne plus être surpris à l’avenir, n’hésitez pas à consulter la page détaillant le cycle de vie de chaque version de Windows.

Pour effectuer le transfert de vos données, Microsoft met également à votre disposition un logiciel gratuit développé en collaboration avec Laplink, appelé PCmover. Il copiera notamment vos fichiers mais également les paramètres de vos différents profils de l’ancien vers le nouvel ordinateur.

Enfin, dans le cadre de l’utilisation d’applications particulières qui ne seraient pas compatibles avec Windows 7 ou 8, il reste la solution de virtualisation. Différents logiciels – tels que Drive Copy – permettent d’effectuer une virtualisation de type “P2V”, soit “physical to virtual” : cela consiste à créer une copie conforme d’un système mais sous forme de machine virtuelle.