keul.fr - du web et du code

Aller au contenu | Aller au menu | Aller à la recherche

Ce n'est pas une fonctionnalité, c'est un bug.

mardi, 14 septembre 2010

Ajax

Pour commencer par comprendre Ajax, parlons un peu d'HTML :
Crée par Tim Berners-Lee au CERN permet d'avoir des documents reliés entre eux par des liens, l'HTML s'est ensuite enrichi par le support des images, des tableaux, des formulaires, (permettant la création de livres d'or, de forums, de wiki, de blogs), de l'audio et des vidéos (nativement dans HTML5), du CSS, (mise en forme visuelle du document) et de Javascript qui modifie le document dynamiquement dans le navigateur.

Sauf qu'à l'origine, Lorsqu'un formulaire est soumis au serveur, une nouvelle page s'affiche. Ajax permet alors de rester dans la page actuelle tout en effectuant des requêtes au serveur, permettant de mettre de la suggestion en cours de recherche, la surveillance d'un état du serveur (traitement de vidéo, ...)

Afficher la solution pour laver avec Ajax un brontosaure nommé IE6Masquer la solution pour laver avec Ajax un brontosaure nommé IE6


function httpobj() {
    if (window.XMLHttpRequest)
        return new XMLHttpRequest();
    if (window.ActiveXObject) {
        var names = new Array(
            "Msxml2.XMLHTTP.6.0",
            "Msxml2.XMLHTTP.5.0",
            "Msxml2.XMLHTTP.4.0",
            "Msxml2.XMLHTTP.3.0",
            "Msxml2.XMLHTTP",
            "Microsoft.XMLHTTP");
        for(var i in names) {
            try{
                return new ActiveXObject(names[i]); }
            catch(e){}
        }
    }
    return false;
}

Il faudra initialiser l'objet avec
var hr=httpobj(); 

pour chaque appel dans les codes suivants.



Le code est super simple :

if (window.XMLHttpRequest) {
    var hr=new XMLHttpRequest();
    hr.open('GET','index.php?attribut='+encodeURIComponent(valeur),true);
    hr.onreadystatechange=function(){
        if(hr.readyState==4&&hr.status==200){
            var reponse=hr.responseText;
        }
    }
    hr.send(null);
}

Ici, on initialise un objet XMLHttpRequest, qui va se connecter à l'adresse index.php?attribut=valeur.
On déclare dans une fonction anonyme la variable reponse qui contiendra le résultat de la requête lorsque l'on aura reçu la page
ReadyState indique l'état de réception de la page, (qui peut être partiel si la page est grande et qu'on n'a reçu que le début) qui vaut 4 quand la page est reçu intégralement
status indique la réponse du serveur, qui vaut 200 quand il n'y a pas de problèmes (et qui vaudrait 404 dans un cas bien connu).


Dans le cas où l'on voudrais envoyer beaucoup plus d'informations, on peut utiliser une requête POST, pas vraiment plus compliqué:
if (window.XMLHttpRequest) {
    var hr=new XMLHttpRequest();
    hr.open('POST','index.php',true);
    hr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
    var data="attribut1="+encodeURIComponent(value1)
        +"&attribut2="+encodeURIComponent(value2);
    hr.onreadystatechange=function(){
        if(hr.readyState==4&&hr.status==200){
        var reponse=hr.responseText;
        }
    }     hr.send(data); }
Ici, on stocke les deux attributs (on peut en avoir beaucoup plus) dans la variable data, que l'on envoie via send().
Il ne faut pas oublier de déclarer le bon header pour la requête de type POST

En dehors des applications dédiées (de style gmail, google maps, webos...) faut toutefois rester prudent et ne pas en abuser : s'il peut être utilisé pour suggérer des éléments ou indiquer la progression d'un élément, il ne doit pas être utilisé pour changer radicalement le contenu du document original dont l'adresse n'est pas changé dynamiquement. De plus, il n'est pas toujours activé par le visiteur.

mardi, 7 septembre 2010

Plus rapide qu'un E-Mail

Vous êtes chez un ami qui est sur un site interessant et vous voulez notez l'adresse ou un message rapidement.

  1. Vous sortez du papier et un stylo comme un papy.
  2. Vous lancez Windows Mail/Outlook Express/Incredimail parce que vous êtes sur un PC de merde, vous mettez tout ça dans un mail et priez pour qu'il arrives à destination.
  3. Vous lancez Thunderbird et vous mettez ça dans un mail, normalement, ça devrais fonctionner.
  4. Vous allez sur Gmail/Hotmail/... via l'interface web, et mettez ça dans un mail que vous enregistrez en brouillon, en vous identifiant sur un PC qui est peut-être vérolé.

Je vous propose une solution plus simple et en images :
(monsite.fr est l'adresse de votre site web personnel que vous possédez)

Schéma de récuperation d'une adresse
Un formulaire de texte et d'envoi de fichier s'affiche en allant sur url.monsite.fr sans rien mettre derrière.
Le tout se retrouve dans un joli e-mail de retour à la maison.

L'installation

Pour installer le script, mettes les 2 fichiers de cette archive sur votre site web que vous hébergez (ici url.monsite.fr), en mettant votre adresse e-mail dans le fichier index.php
Le script: Upload.zip (2ko) (WTFPL)
Décommentez la ligne pour faire un backup local des mails si vous le désirez.


Fonctionnement

On se base sur le mode rewrite d'apache, qui récupère l'URL utilisée en paramètre pour consulter url.monsite.fr et l'envoie au script qui mail le bousin. Le mode rewrite doit donc être activé (Attention, il ne l'est pas chez free).

On peut aussi rentrer un texte perso dans l'URL, a condition que l'on n'utilise pas les caractères spéciaux "#", "%" et "+" sauf dans les URL.

(en fait, # indique la position de lecture dans une page et n'est donc jamais envoyé au serveur, % sert à définir les caractères spéciaux, il faut donc mettre %25 pour avoir le caractère %) et les + sont automatiquement converti en espace)

lundi, 30 août 2010

Importation des messages d'un forumactif vers un SMF

Suite à un partenariat entre les membres d'un forum Vocaloid hébergé sur forumactif et l'association Brigade SOS francophone, il avait été décidé que les membres du forum vocaloid allaient obtenir un nouveau site (avec un wiki, blog, ...) et que le forum allait donc être déplacé sur ce site, qui est hébergé sur un serveur dédié.

Manque de bol, forumactif est aux forums ce que skyblog/overblog/gamekult est aux blogs: une plateforme d'hébergement fermée ne proposant pas de récupérer le contenu du site afin de le migrer sur un autre serveur.

Heureusement, en utilisant des scripts d'aspiration qui vont visiter chacune des pages du forum pour récupérer les messages et les réintégrer dans une nouvelle base de donnée locale, on peut s'en sortir.

Le seul script que j'ai trouvé sur http://www.le-lalf.fr.nf/ est un peu buggé et ne récupère pas tout ce que je veux (problème d'encodages, avatars manquants, exportation dans du PHPBB...) mais dispose déjà de bonnes bases (gestion de récupération de contenu des pages, structure d'une base locale). Le code source étant sous GPL, j'ai donc pu le modifié et l'améliorer avec un export vers SMF.

Elle est disponible ici : forumactif_to_smf v1.00.zip (34.7Ko)

Et encore, n'oubliez pas que :
  • les messages privés entre membres ne peuvent pas êtres déménagés sur le nouveau forum, étant inaccessibles.
  • les mot de passe des membres ne peuvent pas non plus être déménagés, obligeant les membres à les réinitialiser.
  • le déménagement se fait en aspirant les messages page par page (une seule à la fois, pour éviter le ban de l'anti-aspirateur) et peut donc prendre très longtemps
Pour info, j'ai passé une bonne semaine sur ce script et le script a aspiré l'ancien forum (de 26 000 messages) pendant une dizaine d'heures.

A titre de comparaison, j'ai déjà migré en un quart d'heure un blog d'une plateforme nucleus à la plateforme dotclear avec changement de serveur (passage d'un compte free à un serveur dédié) via un petit script d'adaptation des champs, soit une dizaine de minutes de code à taper, et cinq minutes de conversion pour un blog de 1500 articles et 25000 commentaires environ.

Conclusion :
- Avant de vous inscrire à un blog/forum/service cloud, vérifiez que vous pouvez sauvegarder sur VOTRE disque dur les données dans un format lisible (utilisable par un logiciel libre).

jeudi, 26 août 2010

L'informatique Libre

Un constat

D'un coté, nous avons le progrès qui permet  de sauver des vies grâce à la médecine, d'explorer notre passé, de découvrir la richesse de notre univers, d'avoir une vision sur l'avenir, d'exprimer notre créativité artistique. Cela fait de nous sans conteste l'espèce animal la plus évoluée.

D'un autre coté, on a la stupidités humaine qui pollue et sur-peuple notre planète, sème les différents entre hommes et change la loi du plus fort en loi du plus puissant (Pas besoin d'avoir la force d'un gorille quand on a le pouvoir de faire accuser de viol le fondateur de WikiLeaks parce qu'il gène certains gouvernements). Avec des politiciens créant des lois absurdes (Hadopi, ACTA, neutralitée du net, vidéo-surveillance contrôle du peuple et du commerce) qui profitent plus à la classe sociale élevé qu'à toute la population.

Que peut-on faire?

Seul, on ne peut évidement pas faire grand chose, et n'ayant pas les compétences dans tous les domaines, je me limiterai à celui de l'informatique, que les politiciens ne maitrisent pas et que les entreprises à but lucratif n'exploitent pas encore totalement.

Le pire scénario serait de voir le gouvernement contrôler chaque ordinateur, et chaque utilisateur identifié par un certificat sécurisé unique et se débarrassent des gêneurs plus rapidement qu'aujourd'hui (un anti-hadopi chez TF1, le fondateur de wikileaks, ...)
Les entreprises vendraient leurs logiciels et fonctionnalités (DLC) avec des marges en or, profitant de la publicité et exploitent les données privées, sans avoir à innover(IE6, CD audio), écrasent la vraie concurrence avec des brevets et s'allie avec celle restante, sans respect, et en profitant bien de leur argent, faut dire que:

Pour survivre, Steve Jobs n'a bénéficié d'aucun passe-droit dû à sa notoriété ni à sa richesse, mais sa richesse lui a bel et bien sauvé la vie. Car à partir du moment où il a su qu'il lui faudrait un don d'organe pour ne pas mourir, le patron d'Apple a passé des semaines à parcourir les Etats-Unis pour se rendre de centres hospitaliers en centres hospitaliers, et se faire inscrire sur les listes d'attente de chacun. Source: Numérama


La problématique

Si le logiciel libre commence à se répandre de plus en plus (firefox, OpenOffice, thunderbird, VLC, ...), les données ont bien du mal par contre. Et pourtant, vos données ont énormément de valeurs:
  • Combien coute un DVD de film? Moins de 50€.
  • Combien coûte final cut studio? Environ 1000€.
  • Combien coûte vos films de vacances, de souvenirs, de fêtes? ça n'a pas de prix.
  • Combien coûte le film des premiers pas sur la lune? n'a plus de prix
Accepter des DRM, des données dans "le cloud" sans importation ouverte, des formats brevetés/propriétaires, c'est comme accepter d'abandonner sa liberté pour sa sécurité. Vous y perdrez tout, et sans même le savoir.

Les solutions

Posez la question : "Est-ce que je peux amener mes données chez un concurrent? (on peut être sois-même concurrent)".


Maintenant, je vous propose un petit exercice:
Imaginons que vous utilisez les services suivants, chez lequel possédez-vous vos données?
  • Un Compte Google document
  • Un Skyblog
  • Un compte Youtube
  • Un blog hébergé chez un hébergeur généraliste ou dans votre maison
  • Un forum chez Forumactif

Afficher les réponses de l'exerciceMasquer les réponses de l'exercice

  • Un compte Google document => OUI (Vous pouvez les importer en masse au format OpenOffice, enfin, tant qu'ils le permettent, et ça se passe ici: https://www.google.com/takeout)
  • Un Skyblog => NON
  • Un compte Youtube => NON
  • Un blog hébergé chez un hébergeur généraliste => OUI
  • Un forum chez Forumactif => NON


dimanche, 14 juin 1970

Désolé.

Un peu de contexte pour ceux qui ne seraient pas arrivés ici par twitter.

(source)

 

Donc j'ai fait remarquer à une personne qu'elle n'avais pas de catadioptre sur la roue arrière de son vélo.
Et je me suis fait avoir comme un bleu car même si les catadioptre des roues sont normalement orange, ceux-ci sont blancs, et je le n'avais pas vu sur la photo à cause du fond blanc.
Et quand on réagit pas comme un con et qu'on réfléchit à tête reposé, on peut deviner que tout comme les voitures n'out pas toujours eu des feux de croisement blancs, mais qu'ils en avaient des jaunes auparavent. (et un catadioptre avec un bon système de fixation tiens à vie)


Je souhaiterais mettre un peu de contexte en place:
Je suis une personne qui se soucie de la sécurité et quand je vois des défauts de sécurité j'essaie de le signaler quand je le peut (déjà fait plusieurs fois avec des voitures qui avaient une ampoule grillée ou même un camion en warnings qui avait un clignotant de pété)
Récemment, j'ai eu un déplacement a effectuer sur Paris avec du matériel à transporter et j'ai pris ma voiture (je prends le train sinon) et la bonne blague, c'est que je me suis fait arrêter pour avoir eu mon ampoule de feux de croisement grillé.
Je lui ai montré ma boite d'ampoules de rechange que j'avais dans ma boite à gants mais il m'as quand même collé une amende, selon lui, j'aurais dû m'en rendre compte. En plein jour à la sortie d'un tunnel éclairé. J'attends la réponse à la contestation de mon amende.
Je vais aussi à mon travail en vélo depuis 2 ans donc je n'utilise presque plus ma voiture. Et quand je circule de nuit, je suis assez dégouté de voir le nombre de personnes qui n'ont pas de lumières ou catadioptre la nuit, j'ai l'impression d'être le seul à avoir un gilet haute visibilité. Bon après j'ai 2 amis qui se sont faits volé leurs lampes perdant qu'on était dans un restaurant à Starbourg, donc je comprends qu'il y a beaucoup de vélos dans un état pas terrible. En fait, les vols et dégradations de vélos ont des conséquences assez graves.
Mais bon, même s'il peut aider à comprendre, mon contexte n'est pas une excuse.

Donc, suite à mes deux tweets, une personne que je respecte énormément m'as dit que c'était de la masculinité toxique, et que je ne réalisais pas mon geste.

Hein?

Punaise, j'ai réfléchi, je relis mes tweets, je ne comprends pas le problème.

puis TILT

Je me suis foiré sur une règle que je connais pourtant dans un autre milieu, celui des artistes:
Quand on ne te demande pas ton avis, on ne dérange pas avec des remarques, on ne fait pas chier.

Oui, j'étais stupide, et mon tweet n'est pas acceptable en réaction à un article qui montre les efforts et le défi qu'a pu réaliser une personne.

J'en suis désolé et je fais mes excuses à Justine Virideau, en lui souhaitant bonne continuation.

🙇

page 8 de 8 -