[jQuery] Self clic & child force click

$('.category-blocs li').click(function(e){
    if (!$(e.target).is('a')) {
        $(this).find('a')[0].click();
    }
}).addClass('clickable');

L’idée est une liste avec du contenu, contenant un lien, et on veut que tout le <li> soit clickable. Hors on ne mettra pas des éléments bloc dans notre lien <a>.

Une solution javascript serait de dire au <li>, lors du click, de chercher l’enfant <a> (considéré seul ici, ou le premier trouvé) et de forcer le click de ce lien.

Too much recursion

Premier problème, ça boucle sur lui même et pète. Un effet de propagation (bubbling) que l’on échappe grâce à un test sur le target.

http://stackoverflow.com/questions/5967923/jquery-trigger-click-gives-too-much-recursion

Force click

Si vous targetez directement l’événement du lien comme ceci :

$(this).find('a').click();

cela ne donnera rien, vous devez prendre l’élément du DOM et non l’objet jQuery.

http://stackoverflow.com/questions/5838241/jquery-force-click-href

OVH, GMail et l’envoie de mail

Prenons le cas où vous avez votre domaine, vous configurez un compte mail et le raccordez à un compte GMail pour plus de facilité. Classique.

D’un autre côté vous avez votre serveur et vous envoyez des mails avec le même compte mail.

Et bim, vous voilà avec un compte bloqué !

OVH sécurise vos comptes mails en surveillant la provenance de connexion. GMail est en Amérique et votre VPS (par exemple) en France, du coup, en même temps vous êtes connecté à 2 endroits = piratage de compte détecté.

Une fois que ça vous arrive, ils vous suffit de déclarer un incident chez OVH et de leur expliquer la situation. Ainsi, plus de soucis.

Évidemment, cela n’arrive que dans le cas où votre GMail rapatrie ou envoie des mails pendant que votre serveur effectue également un envoie de mail. Mais c’est toujours bon à savoir.

Notez que pour débloquer votre compte il vous faudra vous rendre dans votre manager et saisir un nouveau mot de passe (ou le même). 5 à 10 minutes plus tard le statu sera revenu à la normal.

Curl, PHP et Synchrone

Contexte

Dans un projet d’assemblage de PDF (j’en parlerai surement dans un autre article) je devais pouvoir envoyer différentes pages et une structure pour établir une table des matières. Je pensais mettre à jour la structure à chaque envoie mais le résultat obtenu n’était pas celui attendu, il me manquait des choses. Je recevais bien toutes les données, le curl fonctionnait bien, mais la structure était incorrecte.

Après analyse de mon code, remise en question etc, il s’avère que c’est au niveau du curl que ça coince. En effet, faite une vingtaine de call curl à la chaîne avec transfert de fichier à taille variable et vous comprendrez que c’est entré en conflit. Droit d’écriture sur le fichier ? Verrou de fichier ? Rien n’y fait.

Un call curl (méthode PHP et consort) n’est juste pas bloquant dans la complétion de son action.

Pensez autrement

Oui, au final, vous devrez revoir votre manière de vous y prendre, l’idée a été d’envoyer les fichiers, sans se soucier de la structure, de la maintenir coté client et de l’envoyer par une méthode supplémentaire du service avant d’appeler la génération finale. Le projet reste le même, juste le quand on reçoit l’info.

PHPMailer sur OVH en SMTP/POP3

Suite au fait que les emails envoyés par certains de mes sites ne sont plus reçus, j’ai cherché et trouvé une solution qui fonctionne conformément à mes attentes.

Contexte : VPS sur OVH, domaine OVH qui pointe vers ce VPS.

Première chose, j’utilisais déjà PHPMailer, une version précédente et domaine configuré pour SPF et DKIM. Donc mise à jour vers la source github de PHPMailer.

OVH n’est pas clair dans sa documentation quand vous en trouvez une qui est cohérente avec le reste et à jour. Basez vous sur le mail reçus lorsque vous créez votre compte. Le mail vous donne les ports et adresses à utiliser ainsi que l’indication très importante : connexion POP3 avant SMTP.

Par bonheur, la doc de PHPMailer fourni un exemple complet en ce sens.

//Authenticate via POP3.
//After this you should be allowed to submit messages over SMTP for a while.
//Only applies if your host supports POP-before-SMTP.
$pop = POP3::popBeforeSmtp('pop3.example.com', 110, 30, 'username', 'password', 1);

//Create a new PHPMailer instance
//Passing true to the constructor enables the use of exceptions for error handling
$mail = new PHPMailer(true);
try {
    $mail->isSMTP();
    //Enable SMTP debugging
    // 0 = off (for production use)
    // 1 = client messages
    // 2 = client and server messages
    $mail->SMTPDebug = 2;
    //Ask for HTML-friendly debug output
    $mail->Debugoutput = 'html';
    //Set the hostname of the mail server
    $mail->Host = "mail.example.com";
    //Set the SMTP port number - likely to be 25, 465 or 587
    $mail->Port = 25;
    //Whether to use SMTP authentication
    $mail->SMTPAuth = false;
    //Set who the message is to be sent from
    $mail->setFrom('from@example.com', 'First Last');
    //Set an alternative reply-to address
    $mail->addReplyTo('replyto@example.com', 'First Last');
    //Set who the message is to be sent to
    $mail->addAddress('whoto@example.com', 'John Doe');
    //Set the subject line
    $mail->Subject = 'PHPMailer POP-before-SMTP test';
    //Read an HTML message body from an external file, convert referenced images to embedded,
    //and convert the HTML into a basic plain-text alternative body
    $mail->msgHTML(file_get_contents('contents.html'), dirname(__FILE__));
    //Replace the plain text body with one created manually
    $mail->AltBody = 'This is a plain-text message body';
    //Attach an image file
    $mail->addAttachment('images/phpmailer_mini.png');
    //send the message
    //Note that we don't need check the response from this because it will throw an exception if it has trouble
    $mail->send();
    echo "Message sent!";
} catch (phpmailerException $e) {
    echo $e->errorMessage(); //Pretty error messages from PHPMailer
} catch (Exception $e) {
    echo $e->getMessage(); //Boring error messages from anything else!
}

Il vous suffit de mettre les valeurs qui vous sont transmise et … ça n’ira pas encore.

Il va vous falloir vous connecter également à SMTP.

//Whether to use SMTP authentication
$mail->SMTPAuth = true;
//Username to use for SMTP authentication
$mail->Username = "yourname@example.com";
//Password to use for SMTP authentication
$mail->Password = "yourpassword";

Il vous suffit de modifier SMTPAuth de false à true et d’ajouter les 2 lignes et c’est fini !

Badawok

Note à ceux qui utilisent le framework badawok (v7 dans mon cas), vous aurez un conflit entre votre classe mailer et base_mailer car badawok utilise déjà un PHPMailer.

Supprimez l’extend de la classe base_mailer et ajouter les require_once des classes : phpmailer, smtp et pop3. Créez un répertoire vendor dans votre projet pour y mettre proprement les 3 classes de PHPMailer et le tour sera facilement joué.

La v7 étant uniquement patchée pour le moment, cette modification ne sera pas répercutée.

En ce début de 2014

Un accident de voiture me retient chez moi, laisser passer un piétons n’est pas sans danger quand la personne derrière ne fait pas attention…

L’occasion de mettre tout un tas de chose en ordre, comme son site, ses projets, le ménage…

Ainsi, Badawok 7.1 a été testé sur dev.comitards avec succès, juste 2-3 broutilles corrigées (cf le site tech).

Ensuite, j’ai eu l’occasion de dessiner le côté de ma future borne d’arcade, un future article y sera consacré.

J’ai également eu l’occasion de suivre une formation chez Alsacréations à Strasbourg sur le CSS3 et prochainement sur l’HTML5. Je vous la recommande ! Ainsi que ses marchés de Noël ;).

Les domaines de beabuzz sont tombés, le projet n’a donc de souvenir que la seconde partie de Badawok. Merci Bertrand M. pour cette aventure, qui, pour moi, n’est pas terminée :), même si différente !

De mon côté, daaboo, continue son changement de structure, progressivement. Tout va bien de ce côté là et je reprendrais surement tous mes sites sur un seul nouveau serveur.

Côté site web daaboo, le projet fusionnel daaboo/killan/tech reste sur la table, manque une idée finalisée et ça sortira 🙂 reste à savoir quand…

Badawok 7.1 & dev.Comitards

Pendant un temps, une hésitation fût, au sujet d’un passage vers GIT, tenté avec succès puis au sujet de rester là où on a commencé, sur SVN, que nous avons finalement gardé. Ceci à titre anecdotique. Une des raisons majeure est la simplicité d’un système connu et qui convient ainsi que la bonne intégration dans notre univers de développement.

Badawok 7.1 a été corrigé en passant sur dev.Comitards à titre de test. Les deux ont ainsi pu être restauré, testé et fonctionnel.

Il ne restait que 2-3 broutilles qui ont été vite réglées, tout va donc pour le mieux.

Comitards pourra désormais tirer partie des nouveautés et Badawok, profitant de l’expérience, pourra évoluer.

Intro Mecaclac 9

Vidéo d’introduction du DVD du 9ème spectacle de l’asbl Mecaclac / New Dance Concept.

Double DVD de 27 séquences avec cette intro un générique et une séquence de changement de DVD. Inclus 30 minutes de bonus !

Tourné avec 3 Caméras (merci Maude et K-you, assisté par Poupou et Harmonie).

Ceci est une révolution…

Nous sommes chez Sivit depuis +6ans, je ne retrouve même plus la date du premier contact, c’est dire. Personnellement, je n’avais rien à leur reprocher, bon service et offre correcte, nous ce qu’on voulait, c’était développer notre offre d’hébergement, mails, domaines et de conception web, ainsi que des petits outils très en vogue à l’époque comme les compteurs, livre d’or etc. Ok ça c’est mort depuis un sacré bout de temps, les temps changent.

Depuis le rachat de Sivit par Nerim, j’ai personnellement senti une différence tant dans la qualité du service que dans leur communication.

S’en suit depuis quelques mois une séries de soucis avec nos serveurs qui n’avaient pas vraiment bougés pour dire d’en mériter. On a tout d’abord cru a une attaque par empoisonnement de cache DNS, puis a des tentatives de hack par les mails et au final plus assez de ressource sur la machine, veuillez prendre l’offre double ou quadruple… non merci, c’est pas 2 sites qui pètent un VDS même s’il est vrai que le VDS en question est pas terrible vu la concurrence.

C’est là que j’ai trouvé, grâce a des avis éclairés (encore merci à vous), une solution. Je vais changer ma manière d’opérer et aller vers cette fameuse « virtualisation ».

Il faut dire que passer des soirées et week-end entier pour de la config… à un moment donné on a autre chose à faire quand celles-ci ne vous apportent plus d’ennuis que de satisfaction. Revoir mon mode opératoire était donc indispensable, j’avais même pensé tout simplement arrêter cette partie de mon activité.

Ça plus les soucis passés ça faisaient beaucoup pour un seul homme en après journée… mais voilà qu’une nouvelle voie s’ouvre à moi comme dit ci-avant et donc on va reprendre le taureau par les cornes et affronter la bête.

J’ai jusque fin des contrats des 2 serveurs daaboo, soit +- juin, pour tout migrer, reconfigurer, adapter largement et offrir mieux pour vivre mieux.

Vous vous imaginez donc largement que tous les projets et sites sont actuellement en stand-by, le temps de mettre tout ça au clair le plus rapidement possible. Ça coûtera un peu, c’est sur, le recouvrement coûte toujours quelque chose, mais c’est pour un mieux.

badawok 7 – yaml et tests unitaires

L’inspiration m’est revenu voulant éviter Mecaclac 9 qui me sort par tous les trous. C’est ainsi que la relance de badawok 7, non terminé, m’a pris.

Je me suis mis en tête de mettre en application mes récentes recherches au sujet de PHPUnit. Ayant déjà pratiqué simpleTest, c’était là l’occasion de tester autre chose. J’aime assez bien, même si NetBeans n’a pas l’air de le reconnaitre, ce qui n’aide pas.

J’ai attaqué gentiment avec les classes t et st pour commencer en douceur, mais cela a déjà mis en évidence certaines petite lacunes de structure ou de contrôle. But atteint donc, et ce n’est là que le début, je vise une couverture maximale.

Sur mon portable, le pear yaml n’était pas installé du coup je me suis à nouveau confronté à cette non inclusion du yaml dans PHP. Chance pour moi, Fabien Potencier (Symfony) a mis sur GitHub la partie de Symfony concernant le yaml, version 1.2, mieux que ce que ne propose les libraires en ligne ou même le pear.

Il m’a suffit de quelques adaptations (pas d’utilisation de namespace, tous dans un seul répertoire), cf logger, et le tour était joué.

Ceci dit je me suis donc intéressé à l’idée namespace pour badawok, mais là, manquant de compréhention, je vais parfaire mes recherches afin de décider si oui ou non cela peut aller avec badawok. ainsi que la migration des projets clefs comme comitards.be, terragusto.be ou racougree.be v2 à venir.

Tout cela m’a donné une bouffée d’air frais. Corriger, refondre, mettre en forme le code, adapter, simplifier, factoriser … que du bonheur !

L’avenir de badawok se dessine plus clairement maintenant. Je pense ajouter une installation, retirer ses dépendances vhost et .urls, ajouter un .htaccess longtemps mis de côté (.urls), ajouter dès lors un panneau d’administration de son badawok, donc aussi gérer les utilisateurs directement par badawok, même si cela semble se rapprocher du CMS, ce que la fusion BaB donnera probablement.

En parlant de fusion BaB, cela s’éclaircit également, un design de menu contextuel a été pensé, changeant de l’habitude mais qui pourrait être bien sympa, plus graphique ainsi que l’idée générale du comment cette édition contextuelle va se glisser, ce qu’elle gèrera, ce que cela va apporter, ses possibilités de développement pur (PHP, JS, CSS), et d’autres idées encore, comme la gestion AJAX du contenu vu que l’on gère ici des contenus dans un corps. Accompagné d’un require et d’un class.js le tour serait joué.

Un site badawok.net va arriver et ainsi pouvoir mettre en avant le redmine, le produit, une démo et un téléchargement ! Ceci dit cela se voudra être pour la sortie de la v7, on a encore le temps et il y a d’autres priorités malheureusement.

Certifié JQuery par le W3School

Certifié JQuery par le W3School

http://www.refsnesdata.no/certification/w3certified.asp?id=5065887

Faut pas se leurrer, c’est juste une certification qui prouve qu’on connait la base de JQuery, surtout axé AJAX et sélecteur de base. Rien de très complexe, poussé ou même en rapport avec la version courante, voire même quelle version utilisée pour le cross-browser de maintenant. (cf V 1.8, 1.9 et 2 + version de compatibility et .browser parti sur gitHub)

Mais bon, ça fait quand même plaisir :). C’est 70 questions en 70 minutes.

J’ai fait 81% la première fois et 87% la seconde :).