Le carnet de bord du webmaster
Passez votre chemin c'est mes notes ici...
07 | 31 | 01 | 19 | 20 | 04 | 32 | 10 | 11 | 21 | 34 | 16 | 36 | 17 | 30 | 18 | 28 | 14 | 29 | 08 | 06 | 03 | 27 | 25 | 22 | 05 | 09 | 02 | 13 | 15 | 12 | 23 | 26 | 24 | 33
**** 14-05-2010
07h02 : start. Testons déjà le tunnel ssh. Je pense que c'est mort, mais bon. Le but aujourd'hui : commencer un petit programme qui permet de lancer les ptites commandes une par une. Et quand log il y a, la tâche en question pose la question à la fin : voulez voir les logs. Le mieux, comme en objet est de tout séparer. Je devrais avoir un fichier à sourcer , genre congif.sh, partagé par tous les chtis modules. 1. Rappatrier les images et medias, ou mieux rappatrie le site, normalement les fichiers n'ont pas changé. A la fin de l'éxécution, prompt : Rsync au rapport : voulez- voir les logs ? Mais avant j'aimerais tester un truc, si je mets un fichier appartenant à un autre utilisateur que www-data dans le dossier web, à partir de quel moment l'user web est il capable de le voir ? Ok donc si je mets un 700 c'est bon. Du coup je vais pouvoir placer mon fichier sqlà la racine du site en 700. Comme ça je fais qu'un transfert ssh pour le site et la base. Mise à jour de mon script distant… 07h25 : ok. Mon premier sous-but : mon script doit me dire bonjour, et me demander quelle tâche je veux éxécuter : 1. Faire le ménage 2. Faire la vaisselle Si je dis 1, il doit me dire ok Si je dis 2, il doit me dire : assiettes et cuillères ou toute la vaisselle ? Selon mon choix il me dit ok j'ai nettoyé les assiettes et cuillères ou bien ok j'ai nettoyé toute la vaisselle. faut que je me renseigne sur les if et switch en bash… 08h15 : #!/bin/bash echo "##############################################################################" echo "##############################################################################" echo "##############################################################################" echo "########### THE BIG MANITOU SCRIPT #########################" echo "########### #########################" echo "########### by ling #########################" echo "##############################################################################" echo "##############################################################################" echo "##############################################################################" echo "Bonjour maître" echo "Que puis-je faire pour vous?" echo "1 = fais le ménage" echo "2 = fais la vaisselle" read TASK case $TASK in 1) echo "ok" ;; 2) echo "Dois-je faire les assiettes et les cuillères ou toute la vaisselle ?" echo "ac = les assiettes et les cuillères" echo "t = toute le vaiselle" read SUBTASK case $SUBTASK in ac) echo "ok, je fais les assiettes et les cuillères" ;; t) echo "ok, je fais toute la vaisselle" ;; *) echo "je ne comprends pas cette sous-tâche" ;; esac ;; *) echo "Je ne comprends pas cette tâche" ;; esac exit 0 Fonctionnel mais pas top, car si je me gourre dans le choix, je dois relancer le programme… Mais bon assez d'abstrait pour le moment, … courses Le sac à dos : super pratique, répartition du poids adaptée à l'humain, et en plus on garde les mains libres. Un must have du 21ème siècle. 09h00 : j'ai capté qu'avec un while je peux faire ce que je veux :/... http://www.siteduzero.com/tutoriel-3-126008-les-boucles.html Petite amélioration while [ -z $TASK ] || [ $TASK -gt 2 ] do echo "Que puis-je faire pour vous?" echo "1 = Rappatrie le serveur dedibox en local (fichiers web et fichier sql)" echo "2 = fais la vaisselle" echo "" read -p "Votre choix ? " TASK case $TASK in 1) echo "ok" ;; 2) echo "Dois-je faire les assiettes et les cuillères ou toute la vaisselle ?" ;; *) echo "Ce choix n'est pas autorisé, veuillez recommencer" echo "" ;; esac done exit 0 Mais si je mets autre chose qu'un interger, ça bug… recherche de documentation… http://www.trustonme.net/didactels/148.html http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html#toc8 à suivre… 09h23 : Tours annonces… Rencontre : développer Rencontres : développer la catégorie... Contrainte : Etant donné toutes les tâches qui me restent à faire, cela ne doit pas prendre plus d'un jour. Déjà isoler la partie rencontres du reste, ça permet d'éviter de choquer les mamies qui vont sur la page d'accueil et qui verraient un mec à poil par exemple. Etape 1 : ne pas afficher les annonces rencontres sur la page d'accueil, quoique, en fait c'est plutôt les images hard que je veux bloquer, et pas forcément les rencontres… Il faut faire une catégorie hard et une soft. TEASER : Vous êtes ici dans la catégorie rencontres. Afin de ne pas choquer le grand public, les annonces hard de la partie rencontres ne sont accessibles que depuis cette page, et les "sous-pages" associées. Les annonces de rencontre soft et hard sont groupées ici, c'est pourquoi il est possible que du contenu "choquant" apparaisse ici. Pour continuer, vous devez confirmer que vous avez bien lu cet avertissement en cliquant sur le bouton ok. Cette catégorie est actuellement en phase beta, le but est de parvenir à un service à la meetic dans quelques mois, n'hésitez pas à laisser vos suggestions dans la partie évolution si ça vous intéresse, et croyez bien que votre point de vue sera pris en compte. La prochaine phase d'évolution aura lieu du 1 juillet au 31 juillet. Merci à ceux qui s'investissent et participent à la création du site Tours annonces. Cordialement, votre dévoué webmaster Ling. La catégorie hard, aucune censure La catégorie soft, si une photo est jugée hard, l'annonce passe en hard, ou sinon elle sera supprimée. Bon, pour y accéder, j'ai une idée : ajouter une icône la haut. A partir de là, le coup classique du popup : Le coup classique du popup. Si on va sur la page hard, un popup apparaît, et on dit qu'on a plus de 18 ans et après c'est parti;.. Comme les popup c'est chiant, l'utilisateur doit avoir une option dans son compte qui dit : Ne pas afficher le popup dans la catégorie Rencontres si je suis connecté à mon compte. C'est pas le top mais c'est mieux que rien, et la logique voudrait que je ne fasses pas plus, sinon j'empièterais sur des domaines qui ne me concernent pas; (si je mets des cookies, toutes les personnes utilisant l'ordinateur pourrait passer outre le popup, mais je ne veux pas faire cela, car le fait de savoir si untel dans la famille est autorisé à accéder sans contrôle à la partie rencontres, je ne peux pas le savoir…) Plan d'attaque : Etape 1 : distinguer soft et hard dans rencontres. Etape 2 : Ecrire la requête qui transfère toutes les annonces de rencontres vers rencontres > soft Etape 3 : filtrer le moteur de recherche et les listes pour qu'il n'affiche pas les annonces hard, sauf si la catégorie est hard; Etape 4 : ajouter icone dans le topmenu Etape 5 : faire un popup conditionné par une option dans mon compte si on est dans rencontres ou une souscat Voilà, si j'ai fini cela pour aujourd'hui, je passe à la suite, je garde le gros de l'évolution pour une future session; Le but sera de reproduire meetic ou un service de rencontres soft avec chat ou chaipakoi, mais bon… il me faut au moins une semaine voire un ou mois pour faire ça, alors pour aujourd'hui on va déjà essayer de s'autolimiter grâce à ces petits objectifs. Bon : 10h11 : Etape 1 : ok 10h23 : Etape 2 : update annonce_en_attente set id_arborescence=3473 where id_arborescence=46; update annonce_en_ligne set id_arborescence=3473 where id_arborescence=46; ok 10h32 : Etape 3 : Pour ça je vais commencer par mettre une annonce en hard, elle j'adore ses fesses. ok : toutefois le fonctionnement est à signaler : Les annonces de la catégorie hard ne s'affichent que si la catégorie en cours est rencontre ou une de ces sous catégories. Ce filtrage s'applique également au moteur de recherche, ce qui signifie que si je tape le mot coquin dans le moteur de recherche avec toutes les catégories comme choix dans le sélecteur de catégories, la liste ne contiendra pas l'annonce hard qui continet le mot coquin; Par contre si je me lance la recherche avec le mot coquin mais une des 3 possibilité suivantes dans le sélecteur de catégories : rencontre, rencontre soft, rencontre hard, alors la liste contiendra les annonces de la partie hard qui contiennent le mot coquin. 10h51 : Etape 4 : ajouter un icône dans le top menu. Honnêtement chui pas trop chaud, je préférerais développer un bon service d'abord, mais bon, d'un autre côté, je fais ça pour me foutre un coup de pied aux fesses, le coup de pied du 14 mai. 12h18 : j'ai trouvé l'icône mais le menu actuel ne me plaît pas (pas le design mais son implémentation). J'ai beaucoup galéré avec le menu et au final, j'ai un truc pas stable, aujourd'hui est l'occasion de tenter le faire plus proprement. Par contre, il faut que je puisse tester sous ie6 et 7 et sous mac je trouve pas de logiciels … Chui en train de reconfigurer mon pc, installation de netbeans, vhosts, etc… bdd, c'est long. En attendant je peux continuer sur mac firefox... 13h00 musique 13h59 tours annonces 14h46 :mon test de sketching est passé sur tous les navigateurs que j'utilise : 5 : ie6, ie7, safari, chrome, firefox. J'ai donc réussi à simplifier le css pour le menu, kool. Maintenant affinons... 15h18 : ok. Je tiens à dire que par la même occasion j'ai fait une adapatation de mon menu pour ie6, j'aurais pas du, paske il faut tuer ie6, mais bon j'ai eu pitié. Etape 5 : le popup, occupons nous déjà de voir comment l'afficher. Fancybox est mon ami. Oups non du coup il faut que je mettes à jour le nouveau menu sur toutes les pages : commerces et web, j'ai failli oublié, la boulette. 16h45 : ca y est, j'ai un menu propre et extensible… donc passons au popup. La première chose à faire, c'est de définir la stratégie : ici, nous avons une certaine logique à appliquer, certaines règles qui vont décider si le popup s'affiche ou pas. C'est une bonne idée d'encapsuler cette logique dans un module, ainsi, notre code est très propre, juste entâché d'un appel au module. Le nom est important, ici, il s'agira de module/rencontre/warning-popup.php En gros, voici les 3 lignes que je dois rajouter à mon code, sachant que j'ai définie à l'étape 3 la variable $afficherAnnoncesDeCul. if($afficherAnnoncesDeCul === true) { require_once 'module/rencontre/warning-popup.php'; } Simple, j'aime. 17h00, les 3 lignes sont ajoutées, il ne me reste plus qu'à travailler dans le module, avec l'assurance que chaque chose est déjà à sa place. 17h20 : affichage du popup ok, sans design, mais le texte est correct. Maintenant, il me faut un mécanisme pour lancer un cookie depuis n'importe où depuis mon framework, j'ai donc un ptit improve à faire car pour l'instant je ne peux pas… Le but : lancer le cookie depuis le module, du coup après en gros, on vérifie si le cookie est présent et si c'est le cas, on n'affiche plus le popup. Le cookie doit disparaître à la fin de lanavigation de l'utilisateur. Ah ben non en fauit chui bête, c'est pas cette page qui va lancer le cookie, c'est un webservice.. 17h38 : le système est fonctionnel, mis à part que lorsque le popup disparaît, j'ai un conflit avec le moteur de recherche qui disparaît aussi, … 17h41 : problème esquivé et pas résolu en mettant window.location.reload(true); donc en forçant le chargement de la page après le clic sur ok. J'ai cédé à cette facilité, car de toutes façons le popup n'est visible que si l'utilisateur a javascript activé. A partir du moment où on est sûr que l'utilisateur a javascript, on peut se permettre se genre de fantaisie. Raison 2 (la vraie raison) : le temps me presse. Bon reste le design à faire… en 15 minutes pas possible, mais je vais au moins commencer… et j'me finirais dessus ce soir, tant pis j'aurai fait que ça aujourd'hui, mais mon menu est clean, c'est l'essentiel… Trouvons un truc marrant, avec une mamie …, non en fait c'est pas marrant… 17h58 : est-ce que mon ventre est plus gros que mes jambes sont fatiguées ? Aujourd'hui un peu de sport, mais soft.. 18h30 : fini, 15 minutes de sport, 15 minutes de douche, c'est cher payé, mais j'y ai droit, si, si, si, si… De toutes façons là je dois gérer mon sav pour un client donc la demi-heure sera pas de trop. 19h31 : ouf, ovh m'a sauvé la vie, j'ai fait une boulette de merde, sur le client Joomla 21h Maya 23h Tours annonces 23h43, j'ai fini le design de mon popup. Par contre il va y avoir 2 contraintes techniques : 1. Le coeur déborde du popup (le truc trop chiant pour l'intégrateur, le pauvre). 2. Il faudrait une petite anim en jquery pour le renard.;. (je sais je casse les couilles..) 1 ….. Note de l'intégrateur: (Le casse couilles) 23h48 : premier test raté : placement d'un carré depuis fancy box en position absolute z-index 100000 : le carré ne dépasse pas. 23h54 : le deuxième a réussi: un peu tiré par les cheveux, mais reste propre. J'utilise la méthode prepend de jquery sur le oncomplete du fancybox, sur l'élément wrapper, etça le fait, du moins avec un carré rouge;.. 01h04 : il m'a bien fait galéré, le renard, mais finalement, ça le fait, du moins pour ma résolution d'écran et pour mon poste. Bon ben on update… 01h18 : misère : je viens de comprendre un truc : pour tous mes tests j'avais pas activé le cache pour gagner du temps, hélas, en prod, la logique du popup ne marche plus! Effectivement, le cache va sauvegarder la première instance de page qui va s'instancier. Si le gars en question n'avait pas accepté les conditions, le popup s'affichera à chaque rechargement de page, et si le gars avait accepté, personne ne verra le popup. Sinon, niveau menu, ca va pour firefox, vérifions ie6 et tralala.. Putain d'ie6, me casse les couilles. Bon, c'est mieux qu'avant parce qu'on ne voit plus les chtouia qui dépassent, mais j'avais codé exprès des liens au lieu des li pour que l'on puisse cliquer sur l'icône, et on ne peut toujours pas. Pourtant pendant mes tests ça marchait, grmbl, …. Bon, le problème du cache est nettement plus crucial. La logique du popup doit être extraite du cache. Ca me fait chier car cela veut dire que toutes les pages du site devront se taper un if en plus. Pas grand chose, mais à force… En fait pas tout à fait. Concrétement, soit j'éclate mon module en deux… Soit je désactive le cache sur les annonces rencontres… Je ne vois pas bcp d'autres solutions, mais je vais chercher, … encore un peu, … Dans les 2 cas, ça fait beaucoup de compromis pour une histoire de fesses, chui dégouté… Mon cache est très efficace, car très compact, il prend tout d'un bloc, du coup c'est très difficile d'avoir de l'emprise sur le code caché. Je crois que la solution la plus logique est encore d'éclater mon module, pauvre module… 02h20 : Bon, j'ai trouvé une autre soluce : similaire à celle que j'avais déjà faite pour la persistance des données du style d'affichage entre les différentes pages : en fait : 2 caches différents existent pour chaque page de rencontre : un avec popup et un sans popup. Les caches ne sont crées qu'à partir du moment où un utilisateur utilise la page, et en fonction de l'utilisateur : si l'utilisateur avait déjà vu le popup, alors le cache créé sera celui que toute personne ayant déjà vu le popup verra. Si il ne l'avait pas vu, alors il crééra un cache pour toutes les personnes qui n'ont pas vu cette page. Essayons de mettre ça en place. 03h23 : ouf, ça commençait sérieusement à empirer … Heureusement j'ai réussi à mettre en place l'éclatement de mon module de manière propre : La logique est simple : il faut juste être aware que le popup est géré par du jquery et donc que celui ci, dans le cadre de mon framework, est instancié dans la balise body. On aurait pu faire également une solution avec les scripts à la fin comme préconise yahoo pour des raisons de perfs, mais mon framework ne fait pas cela et la seule raison pour cela est que cette technique n'est pas valide html. Ceci dit, je ne dit pas que mon site est valide html, je n'ai pas regardé, j'avoue.. Bref, pour bénéficier des facilités de kif (c'est le nom de mon framework), si la catégorie est rencontres, le jquery est instancié. Seulement l'astuce (et tout est dans l'astuce), c'est que pour se déclencher, le jquery a besoin d'un lien. Et comme on peut s'en douter, ce lien, personne ne lui donnera. (Pas de bras pas de chocolat) Une exception toutefois à cette règle : (après avoir éclaté mon framework pour que la balise body se referme plus tard…) si la catégorie est rencontres, ET si l'utilisateur n'a pas le cookie comme quoi il a visité le popup, alors le lien s'affiche. Simple mais redoutablement efficace, je garde toute ma logique de cache, seule cette exception est extraite et avec les simples conditions requises, aucun autre artifice. Ouf, je m'en sors mieux que ce que j'avais prévu il y a une heure, c'est à dire : ne pas y arriver… Bon ben reste plus qu'à mettre ce blog à sa place sur le site, et j'me retaperai une dernière fois le popup avec le renard en jquery. Comme je kif mon taff, j'ai placé l'apparition du renard au moment où lecteur tombe sur le phrase "c'est pourquoi il est possible que du contenu "choquant" apparaisse ici." Enjoy ;)