Rébucon #2

Le rébucon numéro 2: encore plus con.

image

Albert DUPONTEL critique l'éducation - septembre 2013 - YouTube

Comment un homme né en 1964, dont la scolarité s'est déroulée entre 1968 et 1980, critique l'éducation d'aujourd'hui avec les critères d'avant-hier, de façon péremptoire, sans recul et sans nuance.
Morceaux choisis:

  1. «dès l'école, on nous met déjà en compétition»: vous faites sans doute référence aux notes -dont je rappelle que ceux qui les demandent, ce sont les parents et élèves, pas les enseignants-. Ces notes sont depuis longtemps mises au second plan au profit de compétences du socle commun, validées ou pas en fin d'année. Donc, la compétition, personne n'en veut, à commencer par les profs, qui ne font RIEN pour l'entretenir et cherchent systématiquement à valoriser chaque gamin (et des fois, faut chercher tant le môme n'a fourni aucun effort, ne serait-ce que de bonne volonté...)

  2. «c'est pas parce qu'on est un cancre qu'on est un raté»: PERSONNE n'a JAMAIS utilisé devant moi le terme raté, en 21 ans de maison... Ni cancre par ailleurs. Je vous laisse seul responsable du choix du vocabulaire pour des mômes qui font face à des difficultés parfois insurmontables. Votre notion même de «raté» sous-entend que pour vous, il y a les «réussis» d'un côté et les «ratés» de l'autre... Encore une notion qui vous est propre et qu'on ne retrouve pas dans l'enseignement.

  3. «l'histoire de France, on nous apprend à l'apprendre et pas à la juger»: vraiment ?!, le prof d'histoire géo ne fait pas réfléchir sur l'histoire et ne la met pas en perspective ?! Il n'est là que pour faire apprendre des dates ?! Qu'appelez-vous «juger» l'histoire ? Procéder comme vous le faites avec l'éducation ? « 5° les représentations du monde et l'activité humaine : ce domaine est consacré à la compréhension des sociétés dans le temps et dans l'espace, à l'interprétation de leurs productions culturelles et à la connaissance du monde social contemporain . » (Socle commun collège) «Ainsi, l'histoire et la géographie poursuivent la construction par les élèves de leur rapport au temps et à l'espace, les rendent conscients de leur inscription dans le temps long de l'humanité comme dans les différents espaces qu'ils habitent. Les élèves découvrent comment la démarche historique permet d'apporter des réponses aux interrogations et apprennent à distinguer histoire et fiction. La géographie leur permet de passer progressivement d'une représentation personnelle et affective des espaces à une connaissance plus objective du monde en élargissant leur horizon et en questionnant les relations des individus et des sociétés avec les lieux à différentes échelles.» BO94708 Alors, oui ,sans doute l'enseignement de l'histoire est perfectible, mais de là à dire autant de conneries...

  4. «souvent, les types brillants à l'école rament complètement dans la vie derrière»: affirmation au doigt mouillé, sans aucune forme d'argumentation... à dégager (si des «gens brillants» rament dans la recherche d'emploi, que dire des «cancres» dont vous parlez ? Faites un petit tour dans le monde, allez voir qui rame vraiment, ceux qui ont du mal à bouffer et faites quelques stats, moi je vous attends ici...)

  5. «un gosse qui court dans la cour de récré, je suis sûr qu'il serait intéressé de savoir comment ça [le corps humain] fonctionne»: Car bien entendu, on n'apprend pas aux enfants comment fonctionne le corps humain... On se contente de leur faire apprendre des paragraphes du livre par coeur... Mais dans quel monde vivez-vous ?! On part d'observations, et questionnements qu'on fait naître chez le môme pour l'amener à déduire de lui-même, en découvrant un raisonnement scientifique et ordonné, le comment et le pourquoi. «L'enseignement des sciences et de la technologie au cycle 3 a pour objectif de faire acquérir aux élèves une première culture scientifique et technique indispensable à la description et la compréhension du monde et des grands défis de l'humanité. Les élèves apprennent à adopter une approche rationnelle du monde en proposant des explications et des solutions à des problèmes d'ordre scientifique et technique. Les situations où ils mobilisent savoir et savoir-faire pour mener une tâche complexe sont introduites progressivement puis privilégiées, tout comme la démarche de projet qui favorisera l'interaction entre les différents enseignements.»encore le BO94708

  6. «on leur fait faire calcul mental récitation: on les formate pour un système dans l'espoir de les rendre plus productifs»: Ha ?! parce que savoir réciter une comptine ou compter ça rend plus productif ? A l'heure d'internet et des ordinateurs ?! Vous avez remis en question vos opinions récemment ?! Alors, non, quand on demande aux élèves de savoir compter et de pouvoir retenir quelque chose par coeur, c'est pour les rendre autonomes, notamment face au reste de leur scolarité mais également dans leur vie de tous les jours (combien d'entre-nous parviennent encore à retenir quelque-chose par coeur ?!). Mais peut-être M. Dupontel considère-t-il que savoir compter et mémoriser facilement est un formatage inacceptable de l'être humain... Ne vous inquiétez pas, le smartphone est en train de réduire tout ça en poussière de toutes façons.

  7. «on les transforme en consommateurs ou en prédateurs, les meilleurs deviennent des prédateurs»: Bon, il va falloir arrêter de picoler à un moment. Si les gens deviennent des prédateurs, c'est à cause de la façon dont on les a élevés, pas à cause du système scolaire... en tout cas, pas en France.

  8. «j'ai un gamin, j'arrive pas à l'éduquer... il est tout le temps dans ses jeux vidéos, il lit pas un bouquin, c'est une catastrophe»: Peut-être qu'à force d'entendre que l'école c'est de la merde, il a fini par le retenir... ça me fait penser aux parents qui annulent les sanctions prises contre leur gamin et qui après se plaignent que l'enseignant n'a pas d'autorité... Remettez-vous en question. Les miens, de mômes, aiment lire, aiment les jeux vidéos, sont curieux et cherchent à comprendre ce qui les entoure, veulent rire, jouer, écoutent en classe, veulent faire leur boulot du mieux possible, savent se remettre en question et discuter, adorent bricoler, écrire des histoires, dessiner, jouer au billard, à la pétanque, pêcher dans les flaques, se promener... (je ne sais pas ce que la vie me réserve, mais jusque là, mes enfants sont merveilleux !) Ben on s'intéresse à eux, ils passent en premier, on joue avec eux depuis toujours, on leur lit des histoires, on leur explique pourquoi ils peuvent avoir tort ou raison, on valorise...

  9. «tout est fait pour que l'individu ne se rencontre pas dans une vie car s'il développe un sens critique et un jugement il devient ingouvernable»: Relent conspirationniste légèrement nauséabond. Beurk. Je rappelle que le but de l'école en général et en particulier du cycle 4 et du lycée, c'est de former des citoyens (c'est dans tous les programmes) justement en développant leur sens critique. Mais bon, ça doit être une erreur. On va me dire que le système scolaire tend à reproduire les inégalités, ce qui n'est pas complètement faux, mais ce n'est pas la faute de l'éducation nationale et des enseignants mais plus celle de la pression sociale. Nous, on fait ce qu'on peut, on se remet en question, on s'adapte aux mômes malgré des conditions de boulot souvent défavorables et des gamins qui sont de plus en plus allergiques à la moindre bonne volonté et ont de moins en moins de compétences, même d'ordre extrascolaires (genre colorier, découper, jouer à un jeu de société etc) ou de facultés de concentration.

  10. «que ce soient les commerçants, les religieux ou les politiques, ils n'ont aucun intérêt à ce que l'individu se trouve»: au delà du cocktail plutôt étrange, sorte de triumvirat de la malfaisance, je note que vous ne faites plus mention de «l'école»

image

Entendons-nous bien, M. Dupontel, je ne vous reproche pas d'avoir un avis sur la question de l'enseignement, si passéiste, mal informé ou partisan soit-il...

Ce que je vous reproche, c'est de décréter des vérités, le doigt accusateur brandi, sans les soumettre à un esprit critique -que vous vantez pourtant et qui devrait vous pousser à commencer par la mise à jour de ce que vous croyez savoir des contenus enseignés: il faut vraiment que vous ne vous soyez jamais intéressé à ce que faisait votre fils de 16 ans, que vous n'ayez jamais ouvert un de ses cahiers, pour être à ce point à côté de la plaque (d'ailleurs, si vous vous en moquez, pourquoi s'y intéresserait-il lui-même ?)

Ce que je vous reproche, c'est «d'enfoncer des portes» déjà largement «ouvertes» dans l'opinion publique, friande de jugements à l'emporte-pièce et d'idées préconçues. Sans compter que votre notoriété donne un poids particulièrement catastrophique à vos paroles.

Vous avez le droit de vous exprimer, mais vous portez la responsabilité d'aller dans le sens du problème et pas de la solution en dénigrant une école dans laquelle de moins en moins de gens croient malgré les efforts de ceux qui la composent, au grand plaisir de tous ceux qui n'attendent qu'une chose, de la démolir comme le reste du service public... vous savez, ceux qui sont les amis des commerçants que vous accusiez des pires maux (commerçants qui cherchent de plus en plus à envahir l'espace sacré de l'éducation).

Repensez-y, M. Dupontel, discutez-en avec les gens concernés, remettez à plat vos opinions... ces propos ne sont pas dignes de quelqu'un qui valorise l'esprit critique.



Plugin pluXML: ROR-le-plugin

Après le script d'hier, permettant de générer un avatar via une «API» simple, j'ai bricolé un plugin pour pluXML qui se charge de la même chose.

Comme la version standalone, ROR le plugin crée un avatar (ou charge un avatar déjà créé) sur l'appel du hook

eval($plxShow->callHook("showAvatar"));


J'ai toutefois ajouté une page de config pour pouvoir en affiner le comportement.

image

On peut spécifier:

  • la taille en px de l'avatar généré
  • les couleurs de premier plan et d'arrière plan (si on souhaite que les avatars s'accordent à un design)
  • le nom de l'admin, au cas où -comme c'est mon cas- vous voulez que l'admin ait un avatar différent.
  • le code html correspondant à l'avatar des visiteurs et celui pour l'avatar de l'admin (ce qui éviter d'aller mettre les doigts dans le code) (ce n'est pas sale) (#DSL )

Donc, vous pourrez modifier le script themes/VOTRETHEME/commentaires.php pour ajouter le hook comme suit:

<div id="<?php $plxShow->comId(); ?>" class="comment <?php $plxShow->comLevel(); ?>">
    <?php eval($plxShow->callHook("showAvatar")) ?> # <--- c'est là 
    <div id="com-<?php $plxShow->comIndex(); ?>" class="<?php $plxShow->comAuthor(); ?>">

Allez dans l'épais du saigneur pis tout ça...

GitHub - broncowdd/pluxml-plugin-generator: Une appli pour générer les fichiers et le dossier d'un plugin, le tout préconfiguré et prêt à coder.

Juste un mot en passant pour annoncer une maj de mon générateur de plugin pour pluxml (v0.9)
Ajouts:

  • ajout des paramètres de config dans les propriétés de la classe (private)
  • ajout de la récupération des valeurs de variables de config dans le constructeur de la classe
  • ajout des index "nom_de_parametre" dans le fichier de langue
  • ajout de la traduction des noms de parametre dans la page de config
  • ajout de l'icône du plugin dans la page de config
  • petits changements cosmétiques dans la page de config.

RoR - un générateur d'avatars auto-hébergeable en un script

Bon, j'ai un peu tout dit dans le titre... Toutefois, je peux préciser que ce script permet de générer un avatar à partir d'une chaîne de caractères (genre un pseudo, quoi )

Le script utilise les variables $_GET suivantes:

  • str : la chaîne de caractères (obligatoire)
  • sz : la taille souhaitée (par défaut:128)
  • c1 : couleur d'avatar (optionnel, par défaut le script déterminera une couleur en fonction de la chaîne)
  • c2 : pareil que c1 mais pour la couleur de fond.

Du coup Par conséquent, la requête suivante:

index.php?str=Bronco&sz=128&c1=ff0000&c2=00ff00

donnera

avatar généré

et

index.php?str=Bronco

donnera

avatar généré

A noter que lorsque l'avatar est généré, il est sauvegardé dans un dossier avatars/ afin d'éviter de le régénérer à chaque demande.

«Mais comment t'as fait ?» allez-vous me demander d'un ton péremptoire autant que fébrile
Non,non... on s'en fout... en fait.
🗦
PAN
🗦

Donc, le premier problème était d'avoir une pattern pour chaque lettre sur une grille qui ne soit pas trop étendue. Après avoir réfléchi un bon moment, je me suis frappé le front en me disant que la pattern était toute trouvée: l'ordre en binaire de la lettre à encoder...

Second problème, le nombre de lettres et de caractères potentiels m'obligeaient à avoir une grille trop grande (minuscules/majuscules/nombres -> 62 caractères !) 62 en binaire 111110, soient 6 cases x2 pour la symétrie, on se retrouve avec une matrice de 12 x 12... trop à mon goût.

Troisième problème, la taille variable des chaînes potentiellement fournies par l'utilisateur. Il faudrait normaliser ces chaînes avant traitement... pfff.

Illumination: le hash d'une chaîne est toujours de la même longueur... et hash('crc32','blabla'); donne toujours une chaîne de 8 caractères hexadécimaux \o/ : tous les problèmes sont résolus:

  • encodage de 16 caractères (0 à F) : 0000 à 1111.
  • chaîne de longueur fixe quelle que soit les données fournies
    $h1=hash('crc32',$_GET['str']); # pour la génération du dessin et de la couleur 1
    $h2=hash('crc32b',$_GET['str']);#pour la génération de la couleur 2

Il ne reste plus qu'à tracer des carrés de la couleur d'avatar à l'emplacement des 1 et de la couleur de fond à la place des 0.

function drawLine($linenb,$pattern,$size){
    global $image,$couleur_avatar,$couleur_fond;
    for ($i=0;$i<9;$i++){
        $x=$i*$size;
        $y=$linenb*$size;
        if ($pattern[$i]==1){
            imagefilledrectangle ( $image , $x,$y  , $x+$size ,$y+$size , $couleur_avatar );
        }else{
            imagefilledrectangle ( $image , $x,$y  , $x+$size ,$y+$size ,$couleur_fond);
        }
    }
}

Le reste est relativement simple à saisir, je vous mets donc le script complet

<?php 
########################
#                      #
# █████   ████   █████  #
# ██  ██ ██  ██ ██  ██ #
# ██  ██ ██  ██ ██  ██ #
# █████  ██  ██  █████  #
# ██  ██ ██  ██ ██  ██ #
# ██  ██ ██  ██ ██  ██ #
# ██  ██  ████  ██  ██ #
#                      #
########################
# Ror: avatar generator
# @author: bronco@warriordudimanche.net
# howto: use get vars to generate an avatar (once generated, it'll be saved in avatars/ folder)
# ?str=[string] (required)
# ?sz= [integer] avatar's size (opt.) 
# ?c1= [string] avatar's color (opt.)
# ?c2= [string] avatar's background color (opt.)

###############################
#                             #
#  ░░░░  ░   ░░  ░░░░  ░░░░░░ #
#   ░░   ░░  ░░   ░░   ░ ░░ ░ #
#   ░░   ░░░ ░░   ░░     ░░   #
#   ░░   ░░░░░░   ░░     ░░   #
#   ░░   ░░ ░░░   ░░     ░░   #
#   ░░   ░░  ░░   ░░     ░░   #
#  ░░░░  ░░   ░  ░░░░   ░░░░  #
#                             #
###############################

if (!is_dir('avatars')){
    mkdir('avatars');
}
$avatar_filename='';

if (!empty($_GET['c1'])){
    $c1=strip_tags($_GET['c1']);
    $avatar_filename.='-c1='.$c1;
    $c1=separatRGB($c1);
}
if (!empty($_GET['c2'])){
    $c2=strip_tags($_GET['c2']);
    $avatar_filename.='-c2='.$c2;
    $c2=separatRGB($c2);
}
if (!empty($_GET['sz'])){
    $size=intval(strip_tags($_GET['sz']));
}
if (empty($size)){$size=128;}
$avatar_filename='x'.$size.$avatar_filename.'.png';
$dotsize=$size/9;


##################################################################
#                                                                #
# ░░░░░░ ░░  ░░ ░   ░░  ░░░░  ░░░░░░  ░░░░   ░░░░  ░   ░░  ░░░░  #
# ░░     ░░  ░░ ░░  ░░ ░░  ░░ ░ ░░ ░   ░░   ░░  ░░ ░░  ░░ ░░  ░░ #
# ░░     ░░  ░░ ░░░ ░░ ░░       ░░     ░░   ░░  ░░ ░░░ ░░  ░░    #
# ░░░░░  ░░  ░░ ░░░░░░ ░░       ░░     ░░   ░░  ░░ ░░░░░░   ░░   #
# ░░     ░░  ░░ ░░ ░░░ ░░       ░░     ░░   ░░  ░░ ░░ ░░░    ░░  #
# ░░     ░░  ░░ ░░  ░░ ░░  ░░   ░░     ░░   ░░  ░░ ░░  ░░ ░░  ░░ #
# ░░      ░░░░  ░░   ░  ░░░░   ░░░░   ░░░░   ░░░░  ░░   ░  ░░░░  #
#                                                                #
##################################################################

function separatRGB($color){
    $color=str_replace('#','',$color);
    if (strlen($color)==3){
        $color=$color[0].$color[0].$color[1].$color[1].$color[2].$color[2];
    }
    $RGB=array();
    $RGB['r']=hexdec(substr($color, 0,2));
    $RGB['g']=hexdec(substr($color, 2,2));
    $RGB['b']=hexdec(substr($color, 4,2));  
    return $RGB;
}

function drawLine($linenb,$pattern,$size){
    global $image,$couleur_avatar,$couleur_fond;
    for ($i=0;$i<9;$i++){
        $x=$i*$size;
        $y=$linenb*$size;
        if ($pattern[$i]==1){
            imagefilledrectangle ( $image , $x,$y  , $x+$size ,$y+$size , $couleur_avatar );
        }else{
            imagefilledrectangle ( $image , $x,$y  , $x+$size ,$y+$size ,$couleur_fond);
        }
    }
}



###########################################################
#                                                         #
#  ░░░░  ░░░░░░ ░   ░░ ░░░░░░ ░░░░░   ░░░░  ░░░░░░ ░░░░░░ #
# ░░  ░░ ░░     ░░  ░░ ░░     ░░  ░░ ░░  ░░ ░ ░░ ░ ░░     #
# ░░     ░░     ░░░ ░░ ░░     ░░  ░░ ░░  ░░   ░░   ░░     #
# ░░ ░░░ ░░░░░  ░░░░░░ ░░░░░  ░░░░░  ░░░░░░   ░░   ░░░░░  #
# ░░  ░░ ░░     ░░ ░░░ ░░     ░░  ░░ ░░  ░░   ░░   ░░     #
# ░░  ░░ ░░     ░░  ░░ ░░     ░░  ░░ ░░  ░░   ░░   ░░     #
#  ░░░░  ░░░░░░ ░░   ░ ░░░░░░ ░░  ░░ ░░  ░░  ░░░░  ░░░░░░ #
#                                                         #
###########################################################
if (!empty($_GET['str'])){
    $h1=hash('crc32',$_GET['str']);
    $h2=hash('crc32b',$_GET['str']);

    if (empty($c1)){$c1 = separatRGB($h1);}
    if (empty($c2)){$c2 = separatRGB($h2);}

    $s=$h1.$h2[0];
    $file='avatars/'.$s.$avatar_filename;
    if (is_file($file)){
        header ("Content-type: image/png");
        exit(file_get_contents($file));

    }

    $image = @ImageCreate ($size, $size) or die ("Erreur lors de la création de l'image");
    $couleur_fond   = ImageColorAllocate ($image, $c1['r'], $c1['g'], $c1['b']);
    $couleur_avatar = ImageColorAllocate ($image, $c2['r'], $c2['g'], $c2['b']);

    $a[dechex(0)]='000010000';
    $a[dechex(16)]='111111111';

    for ($i=1;$i<=15;$i++){
        $bin=decbin($i);
        $bin=str_repeat('0', 4-strlen($bin)).$bin;
        $a[dechex($i)]=$bin.'1'.strrev($bin);
    }



    for ($i=0;$i<9;$i++){
        drawLine($i,$a[$s[$i]],$dotsize);
    }

    header ("Content-type: image/png");

    ImagePng($image,$file);
    chmod($file,0644);
    ImagePng($image);
}


?>

Le script est téléchargeable ici

(...)

Plugin: randomPic

Un chti plugin Bronco's touch (cf post précédent) qui affiche une image au hasard, prise dans un ou plusieurs dossiers. Il suffit d'appeler le hook

<?php eval($plxShow->callHook('randomPic','dossier/'));?>

Si on veut spécifier plusieurs dossiers, on les sépare par "*". Et si on veut une balise à soi, on précise la pattern en argument (avec un % pour remplacer le chemin vers l'image) et en mettant les deux paramètres dans un array:

<?php eval($plxShow->callHook('randomPic',['dossier/','<a href="http://warriordudimanche.net/%">%</a>']));?>

pissétou.

Pour un exemple, regardez par là ->

randomPic.zip

Si on décerne un jour un prix du code le moins utile, tu seras relativement bien classé, je pense.
🗦
Tu penses, c'est déjà ça...

(...)

Plugin pluxml: DropOnArticle, uploader des images directement sur un article (beta)

Marre de devoir passer par la page média pour uploader des images, puis les récupérer dans les articles, ajouter la balise IMG... La vie est trop courte pour tout ça !

Tu glisses déposes les fichiers sur ton article dans la page de création d'article, tu cliques sur envoyer, ça uploade, tu récupères automatiquement les avec le chemin de l'image...

Alors ?! Merci qui ?
Merci Jacky(...)
🗦
TA GUEULE !

Le lien: DropOnArticle.zip

Fil RSS des articles