PROJET AUTOBLOG


Planet-Libre

source: Planet-Libre

⇐ retour index

Frédéric Micout : Addon Firefox pour les recherches Google et Yahoo!

mercredi 8 juillet 2015 à 21:18

Pour celles et ceux qui n’utilisent pas autre chose que Google ou Yahoo! lorsqu’ils font une recherche, sachez que les résultats que ces moteurs de recherche donnent permettent à l’un et l’autre de savoir sur quoi vous avez cliqué.

La forme est différente entre ces deux moteurs mais le principe est identique : le lien sur lequel vous cliquez sert uniquement à indiquer au moteur de recherche ce sur quoi vous avez cliqué, et non à atteindre directement le site voulu. Le moteur de recherche se charge ensuite, via une simple redirection, de vous rediriger vers le site voulu. C’est transparent à l’usage et les plus attentifs ne voient passer que brièvement une URL de google ou yahoo! avant la bonne.

Qu’un moteur de recherche sache ce que je cherche est une chose. On lui demande un truc et il répond, ce qui semble logique. Qu’il sache avec précision sur quoi je clique ou non, ce n’est pas pareil.

L’extension que j’ai développé est on ne peut plus rudimentaire. Lorsque vous vous trouvez sur un domaine de Google ou Yahoo!, les liens sont analysés et réécrit à la volée afin de pointer directement vers le site qui vous intéresse.

Pour l’installer (ou la télécharger) : cleansearch.xpi

Je prévois de l’étendre à d’autres moteurs ensuite. Ça me permet aussi de m’amuser un peu avec Firefox et le javascript donc c’est cool.

Gravatar de Frédéric Micout
Original post of Frédéric Micout.Votez pour ce billet sur Planet Libre.

Littlewing : Créer des batchs avec JAVABATCH – JSR352

mercredi 8 juillet 2015 à 17:00

Je suis actuellement en train de tester la JSR 352 ( ou JAVA BATCH). Cette API est une des nouveautés de la spécification JAVA EE 7.  Elle permet ( entre autres ) de lancer des BATCHS depuis un serveur JEE.

the-evolution-of-java-ee-7_5252edf90af4c_w1500

 

Mais vous allez me dire : il y a SPRING BATCH ! Oui, JAVA BATCH est une standardisation de JAVA BATCH avec l’ intégration du moteur dans un serveur JEE. D’ailleurs, SPRING BATCH est désormais compatible avec cette API.

Ce dernier offre la possibilité de contrôler l’état des jobs à travers l’outil d’administration du serveur via le JOB REPOSITORY.

jsr352-schematic

Pour ceux qui connaissent SPRING BATCH et le monde chatoyant des ETL, le concept de la JSR 352 sera assez simple à appréhender :

Un batch est spécifié avec un job qui a plusieurs steps qui sont découpés en étapes de lecture, de transformation et de chargement (ETL).

Avantages

Les principaux avantages à faire tourner les batchs dans un contexte JEE ( si si il y en a ) sont les suivants :

Inconvénients

C’est une V1. Il y a encore des choses à améliorer ( gestion des properties par ex)

Définition d’un job

Le job se définit par un fichier XML


  
        
    

    
        
            
                
                    
                
            
            
            
        
        
            
            
        
    

Les références des différents élements font appel aux références des beans CDI développés. Dans mon exemple, je n’ai pas utilisé de processor car je ne devais pas transformer les données. J’ai cependant eu besoin de séparer les différents traitements en les parallélisant dans des partitions. Pour déterminer les données de chaque partition, j’ai utilisé un mapper.

Le reader

@Named
@Dependent
public class MyReader extends AbstractItemReader {

    @Inject
    JobContext jobContext;
    @Inject
    StepContext stepContext;

    @Inject
    @BatchProperty(name = "PROP")
    String service;

    @Override
    public void open(Serializable serializable) throws Exception {
   // charge toutes les données
    }

    @Override
    public Object readItem() throws Exception {
// lit les données chargées
    }
}

On voir dans l’exemple que l’injection se fait par CDI. Il faut spécifier le scope Dependent pour que les beans soient accessibles dans le contexte BATCH.

La récupération des données se fait via la méthode open(). Logiquement , on doit récupérer toutes les données à ce moment. Ca peut être problématique avec des très grosses volumétries . Dans ce cas on pourra privilégier le lazy loading.

La lecture de chaque item (ex. une ligne ) se fait dans la méthode readItem().  L’une des choses que je trouve un peu dommage dans l’API BATCH est le manque de générique. En effet, ça aurait été un peu plus “sympa” d’avoir une classe AstractItemReader qui paramètre la méthode readItem().

Le writer

De la même manière on spécifie le writer

@Named
@Dependent
public class MyWriter extends AbstractItemWriter {
    @Override
    public void writeItems(List<Object> list) throws Exception {
        for (Object current : list) {
            // ecriture des differents items
        }
    }
}

Sur l’utilisation de la méthode writeItems(), j’ai la même remarque que pour la méthode readItem() . Un peu de générique, ça n’aurait pas été du luxe….

Le mapper

@Named
@Dependent
public class MyPartitionMapper implements PartitionMapper {
    @Inject
    JobContext jobContext;

    @Override
    public PartitionPlan mapPartitions() throws Exception {
        PartitionPlan partitionPlan = new PartitionPlanImpl();
        Properties[] props = new Properties[TAILLE];
        int i = 0;
        // @TODO voir pour un stream
        for (String current : LISTE) {
            if (current != null) {
                props[i] = new Properties();
                props[i].setProperty("PROP", current);

                ++i;
            }
        }
        partitionPlan.setPartitions(props.length);
        partitionPlan.setPartitionProperties(props);
        return partitionPlan;
    }
}

La propriété “PROP” définie dans le fichier XML et utilisée dans le reader est définie pour chaque partition. Les différentes partitions sont stockées dans un partitionPlan.

Démarrage du batch

Le batch peut se démarrer  de la manière suivante

JobOperator jobOperator = BatchRuntime.getJobOperator();
Properties jobProperties = new Properties();
jobProperties.setProperty("DATE", "2015-07-08");
jobOperator.start("myJob", jobProperties);

Ce code peut être appelé depuis une servlet, un service REST …..

Monitoring

Pour suivre l’exécution du batch on peut utiliser les outils du serveur d’applications. Sous glassfish on peut utiliser la commande asadmin.

asadmin list-batch-jobs -l

JOBNAME           APPNAME                INSTANCECOUNT  INSTANCEID  EXECUTIONID  BATCHSTATUS  STARTTIME                      ENDTIME                        EXITSTATUS
myJob  myProject  137            817         817          COMPLETED    Wed Jul 08 00:00:01 CEST 2015  Wed Jul 08 00:00:01 CEST 2015  COMPLETED
myJob  myProject  137            811         811          COMPLETED    Tue Jul 07 10:51:42 CEST 2015  Tue Jul 07 10:51:42 CEST 2015  COMPLETED
myJob  myProject  137            805         805          COMPLETED    Tue Jul 07 00:00:01 CEST 2015  Tue Jul 07 00:00:02 CEST 2015  COMPLETED
myJob  myProject  137            799         799          COMPLETED    Mon Jul 06 15:58:42 CEST 2015  Mon Jul 06 15:58:43 CEST 2015  COMPLETED
myJob  myProject  137            793         793          COMPLETED    Mon Jul 06 15:58:42 CEST 2015  Mon Jul 06 15:58:43 CEST 2015  COMPLETED
myJob  myProject  137            787         787          COMPLETED    Mon Jul 06 15:58:42 CEST 2015  Mon Jul 06 15:58:43 CEST 2015  COMPLETED
myJob  myProject  137            781         781          COMPLETED    Mon Jul 06 15:58:42 CEST 2015  Mon Jul 06 15:58:43 CEST 2015  COMPLETED
myJob  myProject  137            775         775          COMPLETED    Mon Jul 06 15:58:41 CEST 2015  Mon Jul 06 15:58:43 CEST 2015  COMPLETED
myJob  myProject  137            769         769          COMPLETED    Mon Jul 06 15:58:41 CEST 2015  Mon Jul 06 15:58:43 CEST 2015  COMPLETED
myJob  myProject  137            763         763          COMPLETED    Mon Jul 06 15:58:41 CEST 2015  Mon Jul 06 15:58:43 CEST 2015  COMPLETED

On peut également utiliser les beans JMX pour monitorer les jobs.

Conclusion

La stack JSR 352 est assez simple à utiliser. Elle est certes perfectible ( absence de générique, gestion des propriétés assez compliquée de prime abord) mais fait le boulot.

Par rapport aux autres solutions (spring batch) elle permet la supervision des batchs via les outils du serveur d’application et peut facilement s’intégrer dans une application JAVAEE.

Gravatar de Littlewing
Original post of Littlewing.Votez pour ce billet sur Planet Libre.

Influence PC : Nouveautés apportées par BTRFS, le nouveau système de fichiers natif sous Linux

mardi 7 juillet 2015 à 23:41

BTRFS est un système de fichiers multi-racines intégré au noyau Linux en 2013 et déclaré stable. Il permet de stocker 16 millions de To par volume (16 Eo) et apporte de nombreuses fonctionnalités. Je vous laisse vous référer à la page Wikipedia.

Voici par ordre d’utilité en ce qui me concerne.

1. Détection et optimisation automatique des SSD

La FAQ donne un bon aperçu de ce qu’est BTRFS, en l’occurrence on y apprend que les disques sans plateau profitent d’optimisations spécifiques et que c’est une des préoccupation du développement. Que ce soit pour la durée de vie ou les performances, c’est une bonne chose que cela soit considéré nativement par le FS. Avec Ext4 notamment, il était nécessaire de désactiver certaines options lors du montage, telle que l’écriture des heures d’accès aux fichiers.

2. Le RAID linéaire

Avant BTRFS, les deux types de RAID de base étaient :
– du RAID 0, consistant à répartir les données entre les disques afin d’écrire plus vite (cumule l’espace, divise la sécurité)
– du RAID 1, consistant à dupliquer les données pour créer de la redondance (cumule la sécurité, divise l’espace)

Il existe un mixte des deux appelé JBOD (littéralement Just a Bunch Of Disks) qui consiste à cumuler l’espace des disques en écrivant dessus au fur et à mesure. Plus d’espace pour la même sécurité qu’avec des disques isolés, sauf si le disque où le système de fichiers stocke son index est touché. Dans ce cas, l’intégralité des données est corrompue, sinon seuls les fichiers du disque concerné sont perdus, puisque le système de fichier ne voit qu’un unique support matériel.

Avec BTRFS, le RAID linéaire permet de répliquer les méta-données sur chaque disque. Cela est rendu possible car le RAID est ici réalisé par le système de fichiers : il a donc conscience des volumes sur lesquels il fait reposer le RAID. Si un volume est perdu (disque débranché ou défaillant, partition corrompue, système de fichier irréparable), l’index complet des fichiers existe sur les disques survivants et les données restantes sont disponibles, peu importe le volume touché.

Le RAID linéaire est utile lorsqu’on dispose de supports de stockages divers et variés que l’on souhaite agréger pour les recycler, par exemple en NAS en ajoutant un serveur NFS. Vous l’aurez compris, ceci n’est possible ni avec une carte RAID, ni avec MDADM, ni avec LVM : le JBOD de BTRFS offre de meilleures chances de survie aux données, notamment avec un petit nombre de disques.

3. Snapshots incrémentiels

Après une copie complète initiale placée en lecture seule, BTRFS est capable de réaliser des sauvegardes incrémentielles avec rotation (conserver par exemple une sauvegarde par jour, puis une par mois, puis une par an).

Les sauvegardes permettent non seulement de retrouver l’état des fichiers dans le temps, mais également tout un système stable sur le principe des images disques. Les applications verront les données exactement comme à la suite d’un arrêt électrique.

Les transferts de snapshots sont également incrémentiels, plus légers et plus rapides qu’avec rsync puisque là encore, le système de fichiers peut distinguer la suppression d’un fichier et un simple renommage d’arborescence.

Conclusion

BTRFS change nos habitudes vis à vis du système de fichiers : il s’agit d’un véritable couteau suisse qui nécessite un apprentissage au fur et à mesure de nos besoins.

Gravatar de Influence PC
Original post of Influence PC.Votez pour ce billet sur Planet Libre.

Remi Collet : À propos de libmcrypt et php-mcrypt

mardi 7 juillet 2015 à 13:41

Je ne compte plus les fois où j'ai du expliquer pourquoi utiliser cette bibliothèque ou cette extension est une grave erreur. Il est donc temps d'en faire un article.

 

libmcrypt est un projet mort, non maintenu depuis plus de 8 ans, la dernière version 2.5.8 a été publiée en février 2007 !... et malgré les nombreux tickets ouverts, aucune activité.

La cryptographie est un élément essentiel de la gestion de la sécurité. Si on regarde en arrière, les failles découvertes et corrigées dans divers logiciels, la nécessite d'augmenter les standards de sécurités et d'abandonner les vieux algorithmes, comment peut-on imaginer utiliser une vieillerie de plus de 8 ans ?

Il existe plusieurs bibliothèques alternatives bien maintenues :

Et, pour PHP, plusieurs autres solutions sont disponibles:

Une RFC a été proposée pour retirer l'extension mcrypt de PHP 7, mais, honte à nous, elle n'a pas été acceptée (15-18), elle restera donc disponible.

L'oeuf ou la poule ? L'extension est utilisée car elle est disponible, et elle est conservée parce qu'elle est utilisée.

Nous devons vraiment communiquer sur ce problème, et c'est ce que nous faisons déjà depuis longtemps chez Fedora, la plupart des projets comprennent le problème et acceptent de le corriger en basculant sur une implémentation plus sécurisées, quelques exemples :

Certain framework continuent de proposer une interface pour utiliser mcrypt (ex Zend\\Crypt\\Symmetric\\MCrypt, ticket #3), encore une fois, c'est l'oeuf ou la poule,les applications utilisent cette fonction parce qu'elle existe.

Ceci explique pourquoi certaines distributions linux professionnelles, comme RHEL, ne fournissent ni libmcrypt ni php-mcrypt. On devrait sans doute en discuter avec les autres distributions Linux (Debian, Fedora...) pour arrêter de fournir cette bibliothèque.

Utilisez vous mcrypt ? Comprenez vous que vous DEVEZ basculer dès que possible ? ou, au moins, rapporter ce problème au fournisseur des logiciels que vous utilisez.

 

Gravatar de Remi Collet
Original post of Remi Collet.Votez pour ce billet sur Planet Libre.

Articles similaires

RaspbianFrance : Passer en clavier français (AZERTY) sur OSMC

mardi 7 juillet 2015 à 13:13

Notre dernier tutoriel portait sur l’installation et la mise en place d’un media-center OSMC sur la Raspberry Pi 2 et nous revenons aujourd’hui avec un tutoriel visant à vous aider à passer le clavier d’OSMC en mode AZERTY (clavier français standard).

 

Un règlage absent par défaut

En effet, si OSMC propose par défaut un certain nombre de langues et de configurations pour les claviers, notamment un mode « English AZERTY » (qui ne correspond hélas pas à un clavier AZERTY français), il ne propose pas, par défaut, de mode « Français AZERTY ».

Par conséquent, si vous utilisez le clavier français que nous recommandons pour OSMC, vous devrez bidouiller un petit peu pour pouvoir l’utiliser de façon agréable. Pas d’inquiétude, nous sommes là pour vous guider.

 

Accéder à la ligne de commande d’OSMC

Par défaut OSMC se présente avec une interface flat-design léchée, qui ne laisse aucune place à la bonne vieille ligne de commande. Cependant, dans le cadre de configurations plus poussées, ou d’ajouts d’autres services à la Raspberry Pi, l’accès à une console peut-être utile.

Pour accéder à la ligne de commande, rendez-vous dans le menu principal et naviguez jusqu’à « Power », validez puis faites « Sortir ». Le système va alors se relancer.

Lorsque l’écran de démarrage s’affiche, faites « Échap ». Vous serez alors envoyé vers une console qui vous demandera un login et un mot de passe, par défaut le login et le mot de passe sont tous les deux « osmc » (n’oubliez pas que vous êtes encore en clavier anglais, il faudra donc en tenir compte pour le « m »). De même, ne vous inquiétez pas si vous ne voyez rien s’afficher lorsque vous tapez votre mot de passe, il s’agit d’un comportement normal sous les systèmes UNIX.

 

Mettre à jour la Raspberry Pi et OSMC

Maintenant que vous avez accès à la ligne de commande et avant de pouvoir télécharger et installer la nouvelle configuration du clavier, vous devrez impérativement mettre à jour le média-center.

Pour cela, il vous suffit de lancer la commande suivante :

sudo apt-get -y update

La mise à jour peut prendre un peu de temps, allez donc faire un petit tour sur notre tutoriel dédié aux accessoires de la Raspberry Pi pendant ce temps 😉

 

Ajouter un clavier Français à OSMC

Maintenant que le système est à jour vous allez pouvoir ajouter un clavier Français à OSMC.

Pour cela, rien de plus simple, il suffit de lancer la commande suivante :

sudo apt-get install console-common

Le système téléchargera alors un certain nombre de claviers et vous proposera une liste de modèles, choisissez le clavier « AZERTY / French / Same As X11 (latin 0) / Standard » (ou son  équivalent Apple si vous utilisez un clavier de la marque à la pomme) et validez.

Le système va alors prendre un peu de temps pour installer ce nouveau clavier, une fois cette installation terminée quittez la console en tapant la commande « exit ».

Attendez quelques secondes et OSMC va se relancer tout seul !

Votre clavier est désormais en mode AZERTY !
Comme toujours n’hésitez pas à aller faire un tour sur nos autres tutoriels sur le sujet, comme celui sur l’installation d’OSMC ou le choix des accessoires pour votre Raspberry pi.

The post Passer en clavier français (AZERTY) sur OSMC appeared first on Raspbian-France.

Gravatar de RaspbianFrance
Original post of RaspbianFrance.Votez pour ce billet sur Planet Libre.

Articles similaires