Aider le web en 30 secondes

Le dans

Ceux qui me connaissent le savent, j’aime bien la notion de vie privée et du respect des données. Dans cette optique, des chercheurs ont commencé à travailler sur la notion d’empreinte unique de navigateur, vous pouvez les aider très simplement en vous rendant sur cette page : https://amiunique.org et en cliquant pour voir si votre navigateur est unique. Il va s’en dire que cela est fait de manière anonyme et que les données sont stockées sur une machine sécurisé. Cela vous prendre moins de 30 secondes, peut être instructif pour ceux qui travaillent dans le web et aidera les chercheurs.


Google : calendrier de l’avant

Le dans

Belle initiative de google qui je viens de le voir à fait un calendrier de l’avant : https://santatracker.google.com

Vous retrouverez pas mal de petits jeux marrants et court (et addictifs) avec un nouveau jeu chaque jour. Je trouve ça top qu’ils offrent ça. Vous pouvez retrouver le lien en cliquant sur le pèer noël sous le moteur de recherche.


Encoder du DVD vers AVI

Le dans

Je me le note en rappel en espérant que ça pourra servir à d’autres !

Pour passer du DVD vers l’avi simplement en gardant une qualité correcte (mais sans les sous-titres), il faut faire la commande :

cat F:/VIDEO_TS/VTS_01_[1234].VOB | ffmpeg -i - -c:v mpeg4 -b:v 4000k -c:a libmp3lame -b:a 320k fichier_de_destination.avi

le cat permet de concaténer les différents morceaux du VOB puis après le pipe vient l’appel normal de ffmpeg

Fonctionne sous Linux bien sûr mais également sous Windows si vous mettez MingW pour avoir un terminal qui permettra de supporter le cat (et dans lequel vous exécuterez la commande soit en vous plaçant dans le répertoire ffmpeg, soit en ajoutant préalablement le PATH de ffmpeg dans les variables systèmes de Windows) puis que vous téléchargiez le build de ffmpeg pour Windows.

Edit du 2015-05-24 : En fait il est possible de se passer du cat en faisant comme suit :

ffmpeg -i "concat:D:/VIDEO_TS/VTS_01_1.VOB|D:/VIDEO_TS/VTS_01_2.VOB|D:/VIDEO_TS/VTS_01_3.VOB|D:/VIDEO_TS/VTS_01_4.VOB|D:/VIDEO_TS/VTS_01_5.VOB" -map 0:v:0 -map 0:a:1 -c:v mpeg4 -b:v 4000k -c:a libmp3lame -b:a 320k e:/fichier_de_destination.avi

Ici la partie intéressante concerne la partie « concat: » qui suis l’argument -i (pour Input) et permet de lister les différents morceaux en séparant par une barre verticale (en : pipe).

Pour les plus curieux, j’utilise également l’argument « -map » qui me permet de choisir une piste audio autre que celle par défaut, ici la 2ème piste et qui sera donc spécifié par 1 car l’index commence à 0.


Firebug : erreur logique

Le dans

En ce moment je suis amené à expliquer du code via la console de Firebug et durant une démonstration à une étudiante, je me suis retrouvé « gros-jean comme devant » pour reprendre une expression d’une collègue car en testant du code, je me suis aperçu que là ou j’aurai du avoir une erreur, j’avais un résultat (faux mais c’est pas le propos).

Le code en question :

var prix_de_la_place = 13.0,
    nombre_de_place;
 
function calculer_prix(){
    return prix_de_la_place*nombre_de_place;
}
console.log( calculer_prix() );
nombre_de_place=4;

Sans regarder la pertinence du code, ce qui est intéressant, c’est la dernière ligne « nombre_de_place », si j’affecte la valeur après l’appel de la fonction, le code la première fois est quand même exécuté (ce qui déjà en soit pourrait être étonnant) et donne le bon résultat. Maintenant je change uniquement la valeur affecté (5 par exemple) et je relance le même code. Et là ? Vous aurez le même résultat et c’est seulement en exécutant encore une fois que vous obtiendrez le bon résultat.

Sans rentrer dans les détails techniques on s’aperçoit donc que Firebug en interne retient certaines valeurs et ré-affecte indépendamment du fait qu’on est utilisé var pour déclarer une nouvelle variable.

Conclusion ? Si vous voulez travailler dans un contexte de code « propre », il vous sera nécessaire de cloisonner le code dans la console, ce qui avec le code précédent donne :

(function(){
    var prix_de_la_place = 13.0,
        nombre_de_place;
 
    function calculer_prix(){
        return prix_de_la_place*nombre_de_place;
    }
    console.log( calculer_prix() );
    nombre_de_place=4;
})();

Je viens d’isoler mon code dans une closure et si on exécute le code, non seulement on peut faire des modifications sans que Firebug ne ré-affecte quoi que ce soit mais en plus on a bien le comportement désiré, dans ce cas, l’affectation intervient trop tard et le calcul donne NaN ce qui d’un point de vu algorithmique est cohérent.


Que diriez vous si un jour un de vos prestataires vous débite, vous envoi une facture et cela sans votre consentement ? Je pense que comme des gens autour de moi vous seriez furieux !

C’est ce qui vient de se passer avec 1and1.fr qui fait des factures pour une prestation de « Support prolongé PHP5.2 » de 4,57€ pour 3 mois (soit 18,38€ sur un an pour apprécier sur un ordre de grandeur qui est usuel dans une prise d’hébergement) en prétextant qu’ils ont envoyé un mail sur leur interface pour avertir et que s’il n’y a pas de réponse ou si la version de PHP n’est pas mise à jour alors la prestation sera facturée.

Alors deux points étant donné que j’interviens pour des clients/amis concernant cette facture.

Première chose à savoir dans un contrat, hormis quelques exceptions (par exemple si cela est fait dans l’intérêt du destinataire), le silence ne vaut pas acception, donc première chose qui me choque dans la procédure, la mise en place de cette facture. Bien heureusement, j’ai appelé le service client et après discussion cela c’est réglé mais je n’ose imaginer le nombre de personnes qui sont touchés.

Deuxième point qui me choque, sur un de mes hébergements, j’ai eu le même soucis sauf que TOUTES mes versions de PHP étaient en 5.5, du coup on me facture pour une prestation qui n’a pas lieu d’être en plus de ne pas être consenti ! WTF quoi !!!

Bref si vous avez un hébergement chez 1and1.fr, je vous invite fortement à regarder vos factures. De plus, avant d’appeler le service client pour demander un remboursement, je vous invite à mettre vos versions de PHP (une fois connecté allez dans l’onglet « Hébergement » dans la barre du haut puis « Version de PHP » dans la page) à une version supérieur à la 5.2, ce qui vous évitera de vous faire balader entre le service facturation et le service technique.

N’hésitez pas à faire tourner l’information et si 1and1 souhaite un droit de réponse, il a 3 mois pour le faire à la date de publication comme le prévoit le loi et je me ferai un plaisir de mettre leur réponse ci-dessous.


Windows : erreur improbable

Le dans

Ce qui est « bien » quand on travail sous Windows c’est que parfois on a des erreurs « drôles », la dernière en date que j’ai pris en impression d’écran tellement elle était belle !

errreur "Non implémenté"

errreur « Non implémenté »

Ok donc si je résumé j’ai « Une erreur inattendue« , déjà rien que ça j’ai envie de dire « Oui, c’est le principe d’une erreur sinon on appel ça une feature !« , après on m’invite à me débrouiller avec l’erreur, pourquoi pas mais par contre le « Non implémenté » m’a fait beaucoup rire !


Comme je le signalé dans le post précédent, développer pour Prestashop est une galère dû au manque de documentation cependant certains mécanismes sont intéressants, aujourd’hui je vais vous présenter l’un d’eux.
On va voir dans un premier temps la partie pratique pour ajouter le champ et dans un deuxième temps, pouvoir modifier la valeur (je n’ai pas encore creusé pour l’affichage proprement dit sur la fiche client, je n’aborderai pas ce point néanmoins si quelqu’un a des informations sur le sujet, je suis preneur).
Lire la suite


Depuis peu pour les besoins d’un client, je découvre les joies et les pleures de Prestashop 1.6, notamment le peu de documentation y compris dans le code qui rend l’écriture d’un module quelque peu fastidieux !

En plus de cela certains points tiennent clairement du vice de la part des développeurs qui ont conçu la chose.
Ce soir, j’ai découvert un truc « drôle » en voulant surcharger depuis un module un contrôleur situé à la base dans la partie admin (/controllers/admin/AdminCustomers.php pour être précis), la procédure de base pour surcharger depuis un module est dans celui-ci de créer une structure qui reprend l’élément de base à surcharger et coller le tous dans un répertoire override, ce qui dans le cas présent me donne /modules/[nom_du_module]/override/controllers/admin/AdminCustomers.php, le fichier AdminCustomersController.php se présentant alors sous la forme : class AdminCustomersController extends AdminCustomersControllerCore{ /* ici le code de surcharge */ }, il est alors assez simple d’écrire ce dont on a besoin. Le problème vient lors du test, si on lance tel que, rien ne fonctionne, il est alors nécessaire de faire l’installation du module, ce qui aura pour effet de copier la classe surchargé dans /override/controllers/admin/AdminCustomersController.php. Alors vous allez me dire, quel est le problème ?! Le problème c’est que pour développer la surcharge il est donc en faite plus simple de travailler directement de base dans /override/controllers/admin/AdminCustomersController.php puis une fois les tests terminés le rapatrier dans le module /modules/[nom_du_module]/override/controllers/admin/AdminCustomers.php ce qui permettra alors de distribuer proprement la surcharge. Bien sûr cela pourrait être logique, faudrait il encore que ce soit documenté car à part perdre 2H en étant un poil têtu et hargneux.

Pour le cas je trouve clairement que Prestashop a de quoi décourager beaucoup de développeurs !


Nom du logiciel : Notepad++
Usage : éditeur de code
Système d'exploitation : Windows
Site : http://notepad-plus-plus.org/fr/
Licence : GNU GPL
Version présenté : 6.6.9
Langue : Français, Anglais, Espagnol, ... (48 en tous)
Taille : 7.6 Mo

Lire la suite


Nom du logiciel : Pidgin
Usage : client de discussion
Système d'exploitation : Windows; Linux; Max OSX
Site : https://www.pidgin.im
Licence : GNU GPL
Version présenté : 2.10.10
Langue : Français, Anglais, Espagnol, ... (83 en tous)
Taille :  9.2 Mo

Lire la suite