Mon projet Python par Evan

La coquille saint-Evan

Ce projet réalisé par Evan, élève de 3ème au collège C Peguy d’Arras a été réalisé dans le cadre d’une formation en programmation (algorithme)

Au cycle 4, les élèves s’initient à la programmation, en développant dans une démarche de projet quelques programmes simples, sans viser une connaissance experte et exhaustive d’un langage ou d’un logiciel particulier. En créant un programme, ils développent des méthodes de programmation, revisitent les notions de variables et de fonctions sous une forme différente, et s’entraînent au raisonnement

Code Python traduit en HTML:
#Evan - 3D - 2018
#Programme qui trace deux cercles contenant des couleurs aléatoires

from turtle import *
from random import choice

#reglages turtle
speed('fastest')
bgcolor('black')
couleurs = ['blue','red','green','yellow','brown','black','white','pink',
            'orange','purple','grey'] #Couleurs disponibles aléatoirement

#corps du programme
for i in range(400) :
    color(choice(couleurs)) #choix d'une couleur 
    circle(200-i) #On trace le cercle de rayon qui se décrémente à chaque tour

input() #pour éviter la fermeture du programme (Windows en mode console)

Mes commentaires

Le visuel me plaît beaucoup. La pertinence des commentaires est agréable. Mon seul bémol concerne le rapport entre la taille de la fenêtre et la taille effective du rendu. Une recherche t’aurait permis de paramétrer une fenêtre plus grande… (Ou éventuellement de diminuer les rayons des cercles).

Une remarque pour terminer : Dans ta boucle, quand i est supérieur à 200, les cercles ont un rayon négatif… Cela n’existe pas, pourtant pour Turtle si ! C’est curieux, non ?

Mon projet Python, par Malo


Deux tortues et beaucoup de hasard par Malo

Ce projet réalisé par Malo, élève de 3ème au collège C Peguy d’Arras a été réalisé dans le cadre d’une formation en programmation (algorithme)

Au cycle 4, les élèves s’initient à la programmation, en développant dans une démarche de projet quelques programmes simples, sans viser une connaissance experte et exhaustive d’un langage ou d’un logiciel particulier. En créant un programme, ils développent des méthodes de programmation, revisitent les notions de variables et de fonctions sous une forme différente, et s’entraînent au raisonnement

Code Python traduit en HTML:
#Malo Fournier 15/11/18
from turtle import *
from random import*


fred = Turtle()#nouvelle tortue

#l'épaisseur du trait
width(3)
fred.width(3)

#on change "l'apparence"  du personnage
shape("blank" )
fred.shape("blank" )

#on choisit des couleurs aléatoires
couleur=['snow', 'ghost white', 'white smoke', 'gainsboro', 'floral white', 'old lace',
    'linen', 'antique white', 'papaya whip', 'blanched almond', 'bisque', 'peach puff',
    'navajo white', 'lemon chiffon', 'mint cream', 'azure', 'alice blue', 'lavender',
    'lavender blush', 'misty rose', 'dark slate gray', 'dim gray', 'slate gray',
    'light slate gray', 'gray', 'light grey', 'midnight blue', 'navy', 'cornflower blue', 'dark slate blue',
    'slate blue', 'medium slate blue', 'light slate blue', 'medium blue', 'royal blue',  'blue',
    'dodger blue', 'deep sky blue', 'sky blue', 'light sky blue', 'steel blue', 'light steel blue',
    'light blue', 'powder blue', 'pale turquoise', 'dark turquoise', 'medium turquoise', 'turquoise',
    'cyan', 'light cyan', 'cadet blue', 'medium aquamarine', 'aquamarine', 'dark green', 'dark olive green',
    'dark sea green', 'sea green', 'medium sea green', 'light sea green', 'pale green', 'spring green',
    'lawn green', 'medium spring green', 'green yellow', 'lime green', 'yellow green',
    'forest green', 'olive drab', 'dark khaki', 'khaki', 'pale goldenrod', 'light goldenrod yellow',
    'light yellow', 'yellow', 'gold', 'light goldenrod', 'goldenrod', 'dark goldenrod', 'rosy brown',
    'indian red', 'saddle brown', 'sandy brown',
    'dark salmon', 'salmon', 'light salmon', 'orange', 'dark orange',
    'coral', 'light coral', 'tomato', 'orange red', 'red', 'hot pink', 'deep pink', 'pink', 'light pink',
    'pale violet red', 'maroon', 'medium violet red', 'violet red',
    'medium orchid', 'dark orchid', 'dark violet', 'blue violet', 'purple', 'medium purple',
    'thistle', 'snow2', 'snow3',
    'snow4', 'seashell2', 'seashell3', 'seashell4', 'AntiqueWhite1', 'AntiqueWhite2',
    'AntiqueWhite3', 'AntiqueWhite4', 'bisque2', 'bisque3', 'bisque4', 'PeachPuff2',
    'PeachPuff3', 'PeachPuff4', 'NavajoWhite2', 'NavajoWhite3', 'NavajoWhite4',
    'LemonChiffon2', 'LemonChiffon3', 'LemonChiffon4', 'cornsilk2', 'cornsilk3',
    'cornsilk4', 'ivory2', 'ivory3', 'ivory4', 'honeydew2', 'honeydew3', 'honeydew4',
    'LavenderBlush2', 'LavenderBlush3', 'LavenderBlush4', 'MistyRose2', 'MistyRose3',
    'MistyRose4', 'azure2', 'azure3', 'azure4', 'SlateBlue1', 'SlateBlue2', 'SlateBlue3',
    'SlateBlue4', 'RoyalBlue1', 'RoyalBlue2', 'RoyalBlue3', 'RoyalBlue4', 'blue2', 'blue4',
    'DodgerBlue2', 'DodgerBlue3', 'DodgerBlue4', 'SteelBlue1', 'SteelBlue2',
    'SteelBlue3', 'SteelBlue4', 'DeepSkyBlue2', 'DeepSkyBlue3', 'DeepSkyBlue4',
    'SkyBlue1', 'SkyBlue2', 'SkyBlue3', 'SkyBlue4', 'LightSkyBlue1', 'LightSkyBlue2',
    'LightSkyBlue3', 'LightSkyBlue4', 'SlateGray1', 'SlateGray2', 'SlateGray3',
    'SlateGray4', 'LightSteelBlue1', 'LightSteelBlue2', 'LightSteelBlue3',
    'LightSteelBlue4', 'LightBlue1', 'LightBlue2', 'LightBlue3', 'LightBlue4',
    'LightCyan2', 'LightCyan3', 'LightCyan4', 'PaleTurquoise1', 'PaleTurquoise2',
    'PaleTurquoise3', 'PaleTurquoise4', 'CadetBlue1', 'CadetBlue2', 'CadetBlue3',
    'CadetBlue4', 'turquoise1', 'turquoise2', 'turquoise3', 'turquoise4', 'cyan2', 'cyan3',
    'cyan4', 'DarkSlateGray1', 'DarkSlateGray2', 'DarkSlateGray3', 'DarkSlateGray4',
    'aquamarine2', 'aquamarine4', 'DarkSeaGreen1', 'DarkSeaGreen2', 'DarkSeaGreen3',
    'DarkSeaGreen4', 'SeaGreen1', 'SeaGreen2', 'SeaGreen3', 'PaleGreen1', 'PaleGreen2',
    'PaleGreen3', 'PaleGreen4', 'SpringGreen2', 'SpringGreen3', 'SpringGreen4',
    'green2', 'green3', 'green4', 'chartreuse2', 'chartreuse3', 'chartreuse4',
    'OliveDrab1', 'OliveDrab2', 'OliveDrab4', 'DarkOliveGreen1', 'DarkOliveGreen2',
    'DarkOliveGreen3', 'DarkOliveGreen4', 'khaki1', 'khaki2', 'khaki3', 'khaki4',
    'LightGoldenrod1', 'LightGoldenrod2', 'LightGoldenrod3', 'LightGoldenrod4',
    'LightYellow2', 'LightYellow3', 'LightYellow4', 'yellow2', 'yellow3', 'yellow4',
    'gold2', 'gold3', 'gold4', 'goldenrod1', 'goldenrod2', 'goldenrod3', 'goldenrod4',
    'DarkGoldenrod1', 'DarkGoldenrod2', 'DarkGoldenrod3', 'DarkGoldenrod4',
    'RosyBrown1', 'RosyBrown2', 'RosyBrown3', 'RosyBrown4', 'IndianRed1', 'IndianRed2',
    'IndianRed3', 'IndianRed4', 'sienna1', 'sienna2', 'sienna3', 'sienna4', 'burlywood1',
    'burlywood2', 'burlywood3', 'burlywood4', 'wheat1', 'wheat2', 'wheat3', 'wheat4', 'tan1',
    'tan2', 'tan4', 'chocolate1', 'chocolate2', 'chocolate3', 'firebrick1', 'firebrick2',
    'firebrick3', 'firebrick4', 'brown1', 'brown2', 'brown3', 'brown4', 'salmon1', 'salmon2',
    'salmon3', 'salmon4', 'LightSalmon2', 'LightSalmon3', 'LightSalmon4', 'orange2',
    'orange3', 'orange4', 'DarkOrange1', 'DarkOrange2', 'DarkOrange3', 'DarkOrange4',
    'coral1', 'coral2', 'coral3', 'coral4', 'tomato2', 'tomato3', 'tomato4', 'OrangeRed2',
    'OrangeRed3', 'OrangeRed4', 'red2', 'red3', 'red4', 'DeepPink2', 'DeepPink3', 'DeepPink4',
    'HotPink1', 'HotPink2', 'HotPink3', 'HotPink4', 'pink1', 'pink2', 'pink3', 'pink4',
    'LightPink1', 'LightPink2', 'LightPink3', 'LightPink4', 'PaleVioletRed1',
    'PaleVioletRed2', 'PaleVioletRed3', 'PaleVioletRed4', 'maroon1', 'maroon2',
    'maroon3', 'maroon4', 'VioletRed1', 'VioletRed2', 'VioletRed3', 'VioletRed4',
    'magenta2', 'magenta3', 'magenta4', 'orchid1', 'orchid2', 'orchid3', 'orchid4', 'plum1',
    'plum2', 'plum3', 'plum4', 'MediumOrchid1', 'MediumOrchid2', 'MediumOrchid3',
    'MediumOrchid4', 'DarkOrchid1', 'DarkOrchid2', 'DarkOrchid3', 'DarkOrchid4',
    'purple1', 'purple2', 'purple3', 'purple4', 'MediumPurple1', 'MediumPurple2',
    'MediumPurple3', 'MediumPurple4', 'thistle1', 'thistle2', 'thistle3', 'thistle4',
    'gray1', 'gray2', 'gray3', 'gray4', 'gray5', 'gray6', 'gray7', 'gray8', 'gray9', 'gray10',
    'gray11', 'gray12', 'gray13', 'gray14', 'gray15', 'gray16', 'gray17', 'gray18', 'gray19',
    'gray20', 'gray21', 'gray22', 'gray23', 'gray24', 'gray25', 'gray26', 'gray27', 'gray28',
    'gray29', 'gray30', 'gray31', 'gray32', 'gray33', 'gray34', 'gray35', 'gray36', 'gray37',
    'gray38', 'gray39', 'gray40', 'gray42', 'gray43', 'gray44', 'gray45', 'gray46', 'gray47',
    'gray48', 'gray49', 'gray50', 'gray51', 'gray52', 'gray53', 'gray54', 'gray55', 'gray56',
    'gray57', 'gray58', 'gray59', 'gray60', 'gray61', 'gray62', 'gray63', 'gray64', 'gray65',
    'gray66', 'gray67', 'gray68', 'gray69', 'gray70', 'gray71', 'gray72', 'gray73', 'gray74',
    'gray75', 'gray76', 'gray77', 'gray78', 'gray79', 'gray80', 'gray81', 'gray82', 'gray83',
    'gray84', 'gray85', 'gray86', 'gray87', 'gray88', 'gray89', 'gray90', 'gray91', 'gray92',
    'gray93', 'gray94', 'gray95', 'gray97', 'gray98', 'gray99']








speed("fastest" )#vitesse

fred.forward(50)#on place fred
left(180)





#programme en lui même
for i in range(1000):

    bgcolor(choice(couleur))#choix du fond
    fred.forward(45+i)
    fred.color(choice(couleur))#on "invoque"  les couleurs aléatoire
    color(choice(couleur))#on "invoque"  les couleurs aléatoire
    fred.left(170-i)
    forward(45+i)
    left(170-i)

Mes commentaires

Trois choses sont particulièrement intéressantes dans ce code:

  • La liste des couleurs utilisables en Python avec Turtle
  • Le choix aléatoire de la couleur
  • La possibilité de piloter deux tortues

Je suis un peu plus réservé quant au résultat visuel… Même si le travail de recherche personnel (module random, deux turtles…) est excellent !

Mon projet Python par Nathan

Travail de Nathan

Ce projet réalisé par Nathan, élève de 3ème au collège C Peguy d’Arras a été réalisé dans le cadre d’une formation en programmation (algorithme)

Au cycle 4, les élèves s’initient à la programmation, en développant dans une démarche de projet quelques programmes simples, sans viser une connaissance experte et exhaustive d’un langage ou d’un logiciel particulier. En créant un programme, ils développent des méthodes de programmation, revisitent les notions de variables et de fonctions sous une forme différente, et s’entraînent au raisonnement

Code Python traduit en HTML:
# nathan m. 3B octogone
from turtle import *
speed("fastest" )
shape("blank" )#cela enlève le curseur
title("mon projet Nathan 3B" )
# une boucle de 500 itérations
for i in range(500):
    bgcolor("black" )
    color("pink" )# je change de couleur a chaque fois
    forward(500-i)
    right(190)
    color("blue" )
    forward(500-i)#on avance
    right(190)#on tourne a droite
    color("green" )
    forward(500-i)
    right(190)
    color("purple" )
    forward(500-i)
    right(190)
    color("red" )
    forward(500-i)
    right(190)
    color("yellow" )
    forward(500-i)
    right(190)
    color("white" )
    forward(500-i)
    right(190)
    color("orange" )
    forward(500-i)
    right(190)
    width(5) #on épaisie le trait 

Mes commentaires

Quand on débute dans un langage de programmation, commenter ses sources a une importance particulière : aider à mémoriser les instructions simples. Mais Python est tellement « lisible » que la plupart des commentaires sont ici inutiles. 

Le résultat est simple et joli, et je ne me suis posé qu’une question à la lecture du code : Pourquoi 500 itérations ?

Quand tu écris right(190) tu tournes à droite ???

Un lexique genre ODS7 en txt…

L’Officiel du Scrabble® est le dictionnaire officiel du jeu de Scrabble® francophone depuis le 1er janvier 1990. Il est édité par Larousse et est couramment appelé « ODS » par les scrabbleurs.

2016 voit l’entrée en vigueur de l’ODS7…

Sur le site de la fédération on peut lire :

Qui contacter pour distribuer/vendre un ouvrage ou autre produit utilisant la base de mots de l’Officiel du Scrabble® ?

Tout auteur souhaitant distribuer/vendre un ouvrage ou autre produit (hors application pour Smartphone), utilisant une base de mots conforme à l’Officiel du Scrabble®, doit remplir un contrat de partenariat qui lui sera envoyé sur demande faite auprès de la FISF, à l’adresse suivante : contact@fisf.net

Toute société souhaitant distribuer/vendre un produit numérique privé/grand public sécurisé du type application pour Smartphone, utilisant une base de mots conforme à l’ODS, doit contacter Jean-François Richez, responsable des licences numériques chez Larousse, à l’adresse suivante : JFRICHEZ@larousse.fr

Voilà, mais pour des besoins pédagogiques (formation algorithme au cycle 4) j’avais besoin d’une liste de mots en .txt

Remarque : Je dis bien liste de mots (et non dictionnaire). Et les mots sont à tout le monde…

En effet j’envisage de faire travailler des élèves de 4ème, 3ème sur le développement d’algorithmes divers ayant pour base des jeux de lettres :

  • Boggle
  • Scabble
  • Pendu
  • etc…

Après quelques recherches sur la toile, je me suis aperçu que le fichier txt que je cherchais n’existait pas. Mais que quelques sites proposaient des listes (en html multi-pages. )

Ainsi le très bon listesdemots.net vous propose de nombreuses liste de mots. (898 pages)

Il était donc possible mais fastidieux de créer un fichier txt en copiant collant toutes ces listes !

Pas si fastidieux si on a Python sous le coude !

#wouf 2018 (py3.6.4)
#http://site2wouf.fr
#Pour créer dico.txt
#Qui contient un lexique basé sur
#ODS7
#En scollant le site : listesdemots.net
#requis :l beautifulsoup4
#(cmd : pip install beautifulsoup4)

import requests
from bs4 import BeautifulSoup
fichier = open("dico.txt", "w")

#	Initialisation:
url="https://www.listesdemots.net/touslesmots"
requete = requests.get(str(url+".htm")) #page1
print(requete.url)
page = requete.content

soup = BeautifulSoup(page,features="html5lib")
span = soup.find("span", {"class": "mot"})
mots=span.string.strip()
lesmots=mots.split(" ")
for l in lesmots:
    fichier.write(l+"\n")
    print("|",end="")
print()
print("page 1 : OK ("+str(len(lesmots))+")")
totalmot=len(lesmots)
fichier.close()
#page 2 à 8998:
for i in range(2,899):
    fichier = open("dico.txt", "a")
    lurl=url+"page"+str(i)+".htm"
    ok=False
    while not ok:
        try:
            requete = requests.get(lurl,timeout=1)
            ok=True
        except:
            print("Problème de connexion. Je recommence !")
    print(requete.url)
    page = requete.content
    soup = BeautifulSoup(page,features="html5lib")
    span = soup.find("span", {"class": "mot"})
    mots=span.string.strip()
    lesmots=mots.split(" ")
    for l in lesmots:
        fichier.write(l+"\n")
        print("|",end="")
    totalmot+=len(lesmots)
    print()
    print("page "+str(i)+" : OK ("+str(len(lesmots))+"/"+str(totalmot)+")")
    fichier.close()
#fin du scipt:
 

print("mots :",totalmot)
    


Ce script produit en quelques minutes un fichier txt (avec un mot par ligne) contenant les 402 503 mots du site !

En cas de mauvaise connexion, pas de souci, le script gère ! Le temps de génération du fichier txt sera sensiblement plus long !

Enjoy !

Mon projet Python, par Nolan

Travail de Nolan

Ce projet réalisé par Nolan, élève de 3ème au collège C Peguy d’Arras a été réalisé dans le cadre d’une formation en programmation (algorithme)

Au cycle 4, les élèves s’initient à la programmation, en développant dans une démarche de projet quelques programmes simples, sans viser une connaissance experte et exhaustive d’un langage ou d’un logiciel particulier. En créant un programme, ils développent des méthodes de programmation, revisitent les notions de variables et de fonctions sous une forme différente, et s’entraînent au raisonnement

Code Python traduit en HTML:
#Nolan L. 3B
from turtle import*
title("Mon projet python Nolan" )
bgcolor("black" )#Je change de couleur l'arrière plan
speed("fastest" )#La vitesse
shape("blank" ) #Faire disparaître le curseur
for i in range(125):

    color("red" )
    forward(100+i)#A chaque fois, il augmente de +1
    left(90)
    color("green" )
    forward(100)
    left(90) #Il tourne à gauche
    color("blue" )
    forward(100)
    left(90)
    color("yellow" )
    forward(100)
    up() #Je lève le crayon
    forward(10)
    down()#Je remet le crayon
            

Mes commentaires

Quand on débute dans un langage de programmation, commenter ses sources a une importance particulière : aider à mémoriser les instructions simples. Mais Python est tellement "lisible" que la plupart des commentaires sont ici inutiles. 

Le résultat est simple et joli, et je ne me suis posé qu'une question à la lecture du code : Pourquoi 125 itérations ?

La déception Plickers

Oui, je suis déçu.

Plickers était un merveilleux outil pédagogique. Etait ? Oui Plickers a changé depuis cette rentrée 2018. La version gratuite unique et les espoirs d’évolutions ont disparu…

Ma version (gratuite) est maintenant bridée : Le nombre de questions par lot est maintenant limité à 5…

Sauf si je paye… Je dois débourser environ 9 dollars par mois pour que mes élèves puissent bénéficier d’une version pro, sans limitation…

Bien sûr le développement de Plickers a un coût et le travail effectué est de qualité. Bien sûr tout travail mérite salaire, et un retour sur investissement des développeurs est souhaitable, mais le bas me blesse à deux endroits :

  1. Je n’ai pas eue d’informations en m’inscrivant par le passé sur la temporalité de l’offre proposé. Complètement emballé j’ai préparé de nombreux questionnaires en local, et je continuais à les peaufiner sans me douter que ce travail n’aurait une utilité qu’en cédant au chantage… Il me faut payer ou m’avouer avoir perdu mon temps…
  2. Plickers peut-être un atout pour les entités éducatives (Education Nationale par exemple) Il me semble logique que ces entités sont les vrais clients d’un tel service, beaucoup plus que les simples profs…

Je continuerai, malgré les limitations à utiliser ce formidable outil, en attendant l’émergence d’une alternative, pourquoi pas open-source ?

Python vers html

L’algorithme au collège st une nouveauté intéressante. Nous sommes au début d’une ère nouvelle où les têtes pensantes hésitent encore sur les outils à utiliser.

Si d’aucun ne jure que par scratch ou algobox d’autres, comme moi ont le coeur qui bât pour Python.

Le premier souci que nous pouvons rencontrer est la publication d’algorithme (code) sous les ENT, sites perso ou blog…

Code Python traduit en HTML:

print("Bonjour monde"  )
mavariable=input()

Un tel programme Python posté en texte donnerait :

print(« Bonjour monde » )

mavariable=input()

J ai développé une petite application qui transforme un code Python en HTML

Plus d’informations

Canal plus, canal Sat ….Vieille canaille ?

L histoire que je vais vous conter commence il y a environ 20 ans à Dainville, dans la communauté urbaine d’Arras. A l’époque c’est la naissance de la télévision par satellite et je fus l’un des premiers du district à signer avec TPS, qui n’existe plus aujourd’hui.

Pourquoi ? Officiellement je désirais une chaîne de dessins animés pour mon aîné,   officieusement equidia me faisait de l’œil…

J’étais alors un client privilégié. Pensez donc, il fallait respecter le client, c’était le début d’une nouvelle ère pour l’audimat…

Fin 2005, Vivendi, société mère de Canal+ et de Canalsat, prend le contrôle de TPS. Les deux bouquets étaient alors des sociétés distinctes du Groupe Canal+. Ils fusionnent le 21 mars 2007 (« le nouveau Canalsat ») et les abonnés se voient progressivement contraints à souscrire à Canalsat. La disparition progressive de TPS est enclenchée et le bouquet cesse définitivement d’émettre le 31 décembre 2008.

J’étais encore un client privilégié, bien sûr ! Je payais mensuellement mon dû, automatiquement et sans sourciller….

Les soucis ont commencé vers 2008, la réception devient problématique et nécessite pour moi un investissement : Nouvelle parabole , et changement de tout le câblage…   J’avais déménagé entre temps mais je suis resté fidèle à l’entreprise Coupé qui avait effectué l’installation initiale.

Les tests de réception étaient bons, mais la réception du bouquet plutôt moyenne avec l’image figée plusieurs fois par heure. Je commençais alors à me décider de passer du statut de client privilégié au statut d’ancien client mécontent….

Changement du matériel via le service client…. Et pas d’évolution…

Mon ex-femme à l’époque refuse catégoriquement la résiliation.

Je continue à payer pas loin de 50 euros mensuel (soit environ 3 500 euros jusqu’aujourd’hui ) pour un service qui ne fonctionne pas comme il le devrait )

Début 2015 : La box qui ne fonctionne plus du tout est rangée dans un carton, et j’appelle le service client : Il faut un courrier !

En procédure de divorce je néglige un peu les courriers et le temps passe.

Je me réveille en juin 2016, j’envoie ce satané courrier et je tombe de haut en recevant la réponse de Canal :

Bonjour Monsieur PETITPREZ,

Vous souhaitez résilier votre abonnement CANALSAT et nous le regrettons sincèrement.
Nous vous confirmons que nous avons bien enregistré votre demande et que votre résiliation sera effective à compter du 30/06/2017.
Jusqu’à cette date, vous pouvez profiter de vos programmes et continuer à bénéficier des services inclus dans votre abonnement.
Par ailleurs, conformément aux Conditions Générales d’Abonnement, vous êtes redevable de toutes les mensualités jusqu’au 30/06/2017, date d’échéance de votre contrat.

Nous espérons vous retrouver prochainement parmi nos abonnés.

Cordialement,

Emmanuel TUROUNET,
Directeur de la Relation Clients CANALSAT

J’appelle le service client qui vérifie que je ne me suis pas « connecté » depuis bien longtemps…. qui me met en attente pour voir ce qui est possible… et qui me renvoie dans les cordes : Il faut payer ! jusqu’en juin 2017 !!! Et oui c’est comme ça monsieur !

Attention ces gens sont dans leurs droits ! Je ne les accusent pas d’être malhonnêtes, et je paierai ce que je dois, mais vous ne m’ôterez pas de la tête que canalsat rime un peu avec canaillou …

J’utiliserai seulement mon petit pouvoir de décideur numérique pour déconseiller très fermement tout abonnement chez ces gripsous….

USB et vernis à ongles… crazy !

Auteur : wouf

Mots clés : art beauté bordeaux brillant cable connexion couleur doigts every every month is oktoberfest femme fille fuchsia holographique informatique is ln(3) lumière macro magenta main mains maquillage mark5 mode month nail npa oktoberfest ongles opi polish rose rouge rubis sang sensualité technologie usb vernis vernis à ongles violet  émeraude « every month is oktoberfest »

Jack en fête : photo libre de droit (dream big live high)

Auteur : wouf

Mots clés : art beauté bleu brillant couleur cyan doigts femme fille folie fêtes holographique hope jack lumière macro magenta main mains manucure maquillage musique nail noël npa ongles plaire polish réveillon rêve sensualité teal technologie usb vernis vernis en folie voeux technologie « père Noël » mannequin « picture polish » électronique