Introduction

logo-utl.jpg
Michel Damiens
mail : michel.damiens@gmail.com
site web : utl.manthano.fr

Les pages de ce site s’affichent en mode diapo : pour passer d’une page à la suivante ou à la précédente utiliser les touches « flèche droite » ou « flèche gauche » de votre clavier.
Pour le moment il est « en construction » avec de nombreux « bugs » : par exemple les menus risquent de ne pas fonctionner correctement.

Informatique libre ?

Les acteurs principaux

gnu-linix-www.jpg

Le terme free software est mal compris : il n’a rien à voir avec le prix, il parle de liberté.
Voici donc la définition d’un logiciel libre : Un programme est un logiciel libre pour vous, utilisateur particulier, si

  • vous avez la liberté de l’exécuter comme vous le souhaitez, pour quelque motif que ce soit ;
  • vous avez la liberté de modifier le programme afin qu’il corresponde mieux à vos besoins (dans la pratique, pour que cette liberté prenne effet, il vous faut pouvoir accéder au code source, puisqu’opérer des modifications au sein d’un programme dont on n’a pas le code source est un exercice extrêmement difficile) ;
  • vous disposez de la liberté d’en redistribuer des copies, que ce soit de manière gratuite ou onéreuse ;
  • vous avez la liberté de distribuer des versions modifiées du programme, afin que la communauté puisse bénéficier de vos améliorations.

Quelques conséquences importantes de cette définition

  • L’accès au code source
  • Collaboration et partage

Richard Stallman sur l’open source et les logiciels libres
Open source ? Logiciel libre ? Logiciel gratuit ? Y aurait-il une différence ?
Oui il y en a une. Bien souvent le terme open source est utilisé par commodité comme terme général pour signifier que l’on a accès au code source d’un logiciel.
Chaque fois qu’il en a l’occasion, Stallman rappelle :

« Le logiciel libre est un logiciel qui respecte la liberté et la communauté des utilisateurs. Ce n’est pas une question de prix. C’est libre, pas gratis. Avec tout programme, il y a deux possibilités: soit les utilisateurs contrôlent le programme, soit le programme contrôle les utilisateurs. Lorsque les utilisateurs contrôlent le programme, il s’agit d’un logiciel libre - ils contrôlent ce qu’ils en font, ce qui respecte leur liberté et leur communauté. »

Pour Stallman, l’open source est né dans le but d’étouffer le mouvement du logiciel libre :

« L’open source est un substitut amoral et dépolitisé du mouvement des logiciels libres. ... ce serait un désastre pour nous. Cela signifiait déconnecter le logiciel libre de l’idée que les utilisateurs méritaient la liberté. »

Stallman résume la différence entre l’open source et le logiciel libre en une phrase : L’open source, ce n’est pas le nom d’une philosophie, cela fait référence au logiciel, mais pas aux utilisateurs.

Pourquoi une informatique libre ?

Quelques « anecdotes »

  • NSA et surveillance
  • Investissements, en particulier dans l’intelligence artificielle
    • Google (GAFAM) : 16 milliards en 2018 ; Amazon (GAFAM) : 22 milliards en 2018
    • Alibaba (BATX) : 15 milliards en 2019
    • France : 1,5 milliards d’ici 2024
  • Politique de rachat massif des start-ups

Maîtriser les données

Vos données personnelles :

  • sont sous votre contrôle et restent votre propriété
  • sont stockées dans des espaces (y compris sur le cloud) où elles ne sont lisibles que par vous et par les personnes à qui vous en avez donné le droit
  • sont transportées dans des canaux de communication protégés (cryptés)

Maîtriser les traitements

Les programmes libres que vous utilisez sont entièrement sous votre contrôle ; vous pouvez modifier leur comportement (ou le faire modifier par un informaticien) puisque vous avez accès à leur code source ; vous pouvez les partager avec d’autres personnes en fonction de leur copyleft.

  • Empêcher les back-doors, la surveillance
  • Ne pas se préoccuper des virus
  • Permettre l’accessibilité numérique
  • Travailler en sécurité : ne pas télécharger n’importe quoi depuis n’importe où ; s’assurer de la provenance des logiciels comme des données

Evolution des méthodes de travail : logiciel privatif -> logiciel libre (et/ou open source) -> travail collaboratif (partage des infos, « reproductible research », travailler en mode texte)

Formats libres

La structure des fichiers (textes, audio, video, images, ...) est définie publiquement.
Donc il est possible

  • de manipuler ces fichiers avec des outils « libres »
  • de les échanger

Pour faciliter l’inter-opérabilité il est aussi conseillé d’utiliser le plus souvent des fichiers au format « texte brut » en les exportant ensuite en fichiers pdf, libreoffice, html, word, ...

Pourquoi Linux et les logiciels libres ne sont ils pas plus répandu ?

  • les 500 ordinateurs les plus puissants dans le monde utilisent Linux
  • 95% des utilisateurs utilisent Windows ou Apple

Quelles sont les causes de cette situation ?
● Les raisons socio-économiques
● La multiplicité des distributions linux (opinion de Linus Torvalds), cependant l’expérience montre que si on fournit à un utilisateur un ordinateur avec Linux pré-installé, cet utilisateur ne se posera pas la question de la multiplicité des distributions : il utilisera celle qui est installée, sans même savoir qu’il y en a d’autres, de la même façon qu’un utilisateur de Windows n’est pas gêné par l’existence du système Mac OSX.

Remplacement du système

  • Se protéger du système ?

Utiliser des anti-virus, des anti-espions, des anti-publicités, des « anti-surveillance »

  • Ou le remplacer ?

Ne pas se défendre d’un système mais le remplacer par un autre qui empêche radicalement (c’est à dire « par construction ») les dérives dont nous aurions à nous protéger

Les créateurs principaux

  • Richard Stallman (1983) : Gnu
  • Tim Berners-Lee (1990) : WWW
  • Linus Torvald (1991) : Linux

Qu’est-ce qu’une licence libre ?

Les licences concernant les logiciels

copyleft.png
Copyright et Copyleft
Différentes licenses :

  • GPL : utilisée par la majorité des logiciels Linux
  • MIT : très permissive, compatible GPL, utilisée par le système X.org d’affichage sous Linux
  • BSD : utilisée par Apple pour MacOSX X ; elle permet de redistribuer un logiciel libre sous forme propriétaire.
  • CeCILL : d’origine française

Les licences Créative Commons (CC)

creative commons.png
Relatives au droit d’auteur (concerne les logiciels et toutes les œuvres)
CC-BY : Attribution (la plus souple, aucune restriction mais nécessité d’attribuer l’œuvre à son auteur)
CC-BY-SA : Attribution - Partage dans les Mêmes Conditions
CC-BY-ND : Attribution - Pas de Modification
CC-BY-NC : Attribution - Pas d’Utilisation Commerciale
CC-BY-NC-SA : Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions
CC-BY-NC-ND : Attribution - Pas d’Utilisation Commerciale - Pas de Modification

Quelques exemples (en vrac)

  • libreoffice (= openoffice) et microsoft office : le problème de l’échange des documents
  • linux et windows : le problème du choix de la présentation du bureau
  • téléchargement de logiciels : sources parfois douteuses pour windows, logithèque centralisée sous linux

Le contenu de cet atelier

Orienté vers la construction de sites internet et la programmation
L’objectif principal est la compréhension des outils utilisés en informatique.

  • construction de pages d’un site en utilisant
    • html, css et javascript à l’aide d’un éditeur de textes (vsCodium)
    • un serveur http et le langage php
    • un gestionnaire de bases de données
  • initiation aux outils informatiques au programme de l’éducation nationale :
    • geogebra : logiciel de géométrie dynamique
    • snap! (scratch) : initiation à l’algorithmique et à la programmation
    • python : langage de programmation très puissant

Pré-requis

La participation aux activités de cet atelier suppose une maîtrise suffisante de l’outil informatique :

  • être à l’aise avec le système de fichiers de votre ordinateur : sauvegarder et retrouver les documents que vous créez
  • être capable de télécharger, d’installer et de mettre à jour des applications
  • connaître l’utilisation des logiciels de base :
    • messagerie électronique (vous aurez souvent à récupérer des documents que je vous enverrai par mail)
    • navigateur web (Firefox conseillé)

Les outils nécessaires

Nous utiliserons essentiellement des logiciels libres disponibles à la fois pour les systèmes d’exploitation Linux, Windows et Mac

  • un navigateur internet : Firefox, Edge, ...
  • un éditeur de textes : VsCodium
  • gestionnaire de base de données

Celles et ceux d’entre vous qui ont utilisé tout ceci l’an dernier n’ont pas à les réinstaller ; vous peuvez par contre les mettre à jour si nécessaire.

Méthode de travail

dossier de travail

  • Créer un dossier sur votre ordinateur qui contiendra tous les fichiers qui seront créés au cours des séances de l’atelier
  • Vous assurer que vous savez y accéder à partir des outils utilsés (éditeur, navigateur web, ...)

documentation

Vous aurez très souvent besoin de consulter la documentation des logiciels. Je vous indiquerai les liens vers les sites les plus pertinents au fur et à mesure. Je vous montrerai aussi quelques exemples d’utilisation de l’IA comme aide à l’utilisation des outils informatiques de programmation.

Ajustements concernant Windows et Linux (Ubuntu)

● Dans Windows, par défaut, on ne voit pas les extensions des noms de fichiers dans l’explorateur ; pour l’édition de pages web il est préférable de voir ces extensions :
Panneau de configuration - Apparence et personnalisation - Afficher les fichiers et dossiers cachés - décocher la case Masquer les extensions des fichiers dont le type est connu
(voir : https://www.clubic.com/tutoriels/article-858733-1-comment-afficher-extension-fichiers-windows-10.html)
● Dans Ubuntu utiliser un terminal pour préciser que python est la version python3

sudo  apt  install  python-is-python3

Installation de vsCodium

vsCodium est un dérivé (« fork ») libre de Microsoft Visual Studio Code.
La doc :
● https://learn.microsoft.com/fr-fr/training/modules/get-started-with-web-development/2-project-structure (plutôt orienté vers la création de pages web)
● https://learn.microsoft.com/fr-fr/training/modules/python-install-vscode/ (plutôt orienté vers l’utilisation de python)

Installation

Récupérer sur internet le fichier d’installation :
● pour Windows : https://github.com/VSCodium/vscodium/releases/download/1.95.3.24321/VSCodium-x64-1.95.3.24321.msi
● pour Linux (Ubuntu) : https://github.com/VSCodium/vscodium/releases/download/1.95.3.24321/codium_1.95.3.24321_amd64.deb
(si ces liens ne fonctionnent pas - en général à cause du numéro de version, allez sur https://github.com/VSCodium/vscodium/releases et prenez la version la plus récente)
Le fichier d’installation va âtre sauvegardé sur votre poste, en général dans Téléchargements, à moins que vous n’ayez paramétré autrement votre navigateur.
Si le processus d’installation ne s’exécute pas automatiquement, allez dans Téléchargements et double-ciquez sur le fichier récupéré ou bien, sous windows, cliquez sur ouvir un fichier dans la fenêtre de téléchargements
Suivez les instructions jusqu’à la fin de l’installation.
● sous Linux (Ubuntu), l’icône permettant de lancer l’application est placée dans le fenêtre des applications installées ; vous pouvez la copier dans votre barre de favoris à gauche du bureau à l’aide d’un clic droit sur cette icône
● sous Windows, l’icône a été placée dans le fenêtre du menu démarrer (icône windows), cliquer éventuellement sur le bouton tous pour la trouver. Avec un clic droit sur cette icône vous pouvez la placer dans la première page du menu démarrer (favoris) et dans la barre des tâches en bas du bureau.
Si l’installation ne fonctionne pas, d’autres méthodes sont expliquées ici : https://vscodium.com/#install

Atelier du 13 décembre 2024   20241223

Python

Utilisation de vsCodium

Remarque initiale : tout ce qu’on utilise dans vsCodium se présente sous forme d’onglets. Fermer au départ tous les onglets.
On va dès maintenant modifier le comportement et l’aspect de l’éditeur en paramétrant certaines fonctions et en ajoutant des extensions. Pour cela on va utiliser la barre d’outils verticale à gauche de l’écran et dans cette barre l’icone composée de 4 carrés dont 1 détaché

  • taper french dans la barre de recherche et choisie French Language Pack, cliquer sur install puis à nouveau sur install dans l’onglet qui s’ouvre. En bas, cliquer sur Change Language and Restart.
  • installer l’extension Python, l’extension Python Debugger et l’extension Code Runner ;
    paramétrage de cette extension (petite roue dentée à côté du titre de l’extension) :
    ● pour éviter que les sorties précédentes restent affichées : cocher Clear Previous Output
    ● pour éviter d’avoir à sauvegarder avant chaque exécution : cocher Save File Before Run (Attention, pas « Save All Files Before Run »)
    ● pour éviter que la ligne de commande ne soit intégrée à la sortie : décocher Show Execution Message
    ● cocher Run in Terminal envoie le sortie dans un terminal de type bash, ce qui est nécessaire pour que la fonction input fonctionne dans vsCodium
  • l’icône roue dentée en bas de la barre des outils permet d’accéder aux paramètres globaux de vsCodium. En cliquant sue Paramètres vous obtenez une longue liste de paramètres modifiables (par exemple Auto Save, Font Size). Mettre word dans la boite de recherche en haut pour mettre le paramètre Word Wrap à on.

Algorithmes et programmation en python

De manière informelle on peut dire que :
● un algorithme est un ensemble structuré d’instructions qui traitent des données (entrées) et produisent des résultats (sorties), qui sont aussi des données.
● un ordinateur ne peut exécuter un algorithme que s’il est traduit dans un langage de programmation.
Python, de par sa syntaxe très claire et concise, permet de traduire presque automatiquement un algorithme en programme.
Les données utilisées par Python sont, par exemple :

  • des données fondamentales : nombres (int et float), chaines de caractères (string)
  • des données structurées : listes, tuples, dictionnaires

Exemple

# table de multiplication
print("bonjour") # on affiche un message
a = 7 # on affecte à la variable a le nombre entier 7
b = 3 # on affecte à la variable b la nombre entier 3
réponse = input("calculer " + str(a) + " fois " + str(b) + " : ") # on affecte à la variable réponse le texte que l'utilisateur est invité à entrer
if réponse == str(a * b): # condition qui doit être vraie pour que le bloc suivant soit exécuté
    print("correct")    # première ligne du bloc associé au if
    print("bravo")      # deuxième ligne du bloc associé au if
else:                      # alternative
    print("faux")       # bloc associé au else

""" 
REMARQUES et EXPLICATIONS
- une ligne commençant par un # est un commentaire (mono-ligne) donc non exécuté
- plusieurs lignes (comme ces explications) encadrées par """ et """ constituent aussi un commentaire
- le signe + peut servir à deux choses différentes : s'il concerne deux nombres, il les additionne, s'il concerne deux chaines de caractères, il les concatène.
Par exemple : 2 + 3 donne 5 mais "2" + "3" donne "23".
Si ce signe + agit d'un côté sur un nombre et de l'autre sur une chaîne, cela engendre une erreur ; pour corriger cette il convertir les nombres en chaines (avec la fonction str) ou les chaines en nombre entier (avec int) ou en nombre réel (avec float)
Par exemple : si a = 2 et b = "3", a + b est incorrect mais str(a) + b donne "23" et a + int(b) donne 5
- la commande input affiche le message qu'elle prend en argument (entre ses parenthèses) et renvoie la réponse que fournit l'utilisateur ; cette réponse est toujours renvoyée sous forme de chaîne de caractères.
- la commande if ... else permet d'écrire une structure conditionnelle ; Bien faire attention aux signes : et à l'indentation permettant de regrouper les actions dans un bloc
"""

Documentation officielle en français

Les bases de python

commentaires : monoligne (#) et multiligne («  »« ... »«  »)
types de données (non exhaustif) :

  • simples : nombres, chaines
  • composés : listes, tuples, dictionnaires (récursifs)

variables
fonctions d’entrée et sortie : print et read
structures de contrôles : boucles et conditions
fonctions

Web

Utilisation de vsCodium

Remarque initiale : tout ce qu’on utilise dans vsCodium se présente sous forme d’onglets. Fermer au départ tous les onglets.
On va dès maintenant modifier le comportement et l’aspect de l’éditeur en paramétrant certaines fonctions et en ajoutant des extensions. Pour cela on va utiliser la barre d’outils verticale à gauche de l’écran et dans cette barre l’icone composée de 4 carrés dont 1 détaché

  • taper french dans la barre de recherche et choisie French Language Pack, cliquer sur install puis à nouveau sur install dans l’onglet qui s’ouvre. En bas, cliquer sur Change Language and Restart.
  • installez l’extension HTML CSS Support (cette extension facilite l’écriture des pages web)
  • en tapant open in browser dans la boîte de recherche, installez l’extension Open in browser (cette extension permet d’ouvrir les pages web créées à partir de vsCodium)
    ● remarque : quand une extension est installée, elle apparait dans le menu des extensions avec une roue dentée à droite qui permet de la paramétrer. Cliquer sur cette roue dentée pour l’extension open in browser et mettre à jour le navigateur web que vous utilisez.
    ● Nous installerons plus tard d’autres extensions, au fur et à mesure de nos besoins.
  • l’icône roue dentée en bas de la barre des outils permet d’accéder aux paramètres globaux de vsCodium. En cliquant sue Paramètres vous obtenez une longue liste de paramètres modifiables (par exemple Auto Save, Font Size). Mettre word dans la boite de recherche en haut pour mettre le paramètre Word Wrap à on.

Exemples

#+NAME fichier exemple.html

<!--
Dans une page html, on met entre le balises ci-dessus et ci-dessous, les blocs de texte qui sont des commentaires ; ils ne seront pas affichés par le navigateur.  
-->

<!-- ci-dessous, entre <head> et </head>, le bloc d'en-tête de la page : il contient des informations destinées au navigateur Web ; ces informations ne seront pas affichées dans la page-->
<head>
    <!-- la ligne qui suit indique le nom de la feuille de style associée à cette page --> 
    <link href="exemple.css" rel="stylesheet" type="text/css">
</head>h


<!-- ci-dessous, entre <body> et </body>, le corps de la page : il contient le tette, structuré par les balises, qui sera affiché par le navigateur -->
<body>
<h1>mon titre</h1> <!-- bloc de titre -->
<p> <!--- début de paragraphe -->
    Lorem ipsum dolor sit.<br> 
    Lorem ipsum dolor sit amet consectetur adipisicing elit. Reprehenderit sequi fugit magnam.
</p> <!-- fin du paragraphe -->
<p>
    hjjfjjfjf<br>
    fffdfd<br>
    dggddg
</p>
</body>

<!-- REMARQUES 
    - quand on écrit un texte, le navigateur ne tient pas compte des passages à la ligne ; il faut les indiquer explicitement avec la balise <br>
    - il existe 6 niveaux de titres <h1> à <h6>
    - en dehors des paragraphes, il existe d'autres balises permettant de structurer le texte ; nous les étudierons au fur et à mesure de nos besoins.  
-->
/* Dans une feulle de style, les blocs de textes, éventuellement sur plusieurs lignes
commençant par slash étoile et se terminant par étoile slash (comme ici)
sont des commentaires ; ils n'interviennent pas dans le style 
*/

h1 { /* les règles de style ci-dessous s'appliqueront à toutes les balises <h1> (titre de niveau 1) dans la page html */
    color: blue ;               /* les titres h1 seront en bleu */
    border: 5px red solid ;     /* et seront entourés d'une bordure solide rouge de 5 pixels */
}

p { /* les règles de style ci-dessous s'appliqueront aux balises <p> (paragraphes) */
    color: green ;              /* les paragraphes seront en vert */
    border: 1px black dotted ;  /* et auront une bordure en pointillés noirs de 1 pixel */
}

/* REMARQUES :
Ces styles s'appliquent à toute page .html qui contient dans son en-tête (c'est à dire la bloc <head>, avant le bloc <body>) une référence à cette page.

html (la structure)

body, titres, paragraphes (de texte), images
article, section, div
header, nav, aside, main, footer

css (le style)

head, link
style des éléments : color, background-color, font-size, line-height, text-align, border, margin, padding
style de la structure: flex (direction, wrap, gap)
css flex résumé.png

Atelier du 20 décembre 2024   20241220

Web

● La page html structure le contenu (dans body) à l’aide de balises qui encadrent leur contenu

  • balises marquant les différences entre texte, image, saut de ligne :
    p, img, br
  • balises d’organisation, qui regroupent les éléments précédents pouvant être imbriquées :
    section, article : balises regroupant des éléments en fonction d’une logique propre au contenu
    header, nav, aside, main, footer : balises « sémantiques » associant à leur contenu un rôle spécifique
    div : balise non sémantique (pas de sens particulier associé au contenu)

● Elle utilise un fichier de style pour mettre en forme les éléments de la structure : à chaque balise du fichier html on peut associer des règles indiquant comment sera stylé l’élément associé à cette balise.
● Pour pouvoir distinguer des styles différents à des éléments associés à des balises identiques (2 sections par exemple), on peut attribuer, dans le fichier html un attribut d’identification (id) ou un attribut de classe (class) à chacune des balises. Ceci sera reflété dans le fichier html par une syntaxe particulière.
Exemple :
exemple html css id class.jpg
Enfin, certaines règles de style (flex) vont permettre de positionner correctement les différents éléments de la page.

Atelier du 17 janvier 2025   20250117

Python

● compléments sur les listes
● les fonctions (commandes renvoyant une valeur)
fichiers utilisés :

documentation :
● compléments sur les listes
documentation officielle : https://docs.python.org/fr/3.13/library/stdtypes.html#sequence-types-list-tuple-range et https://docs.python.org/fr/3.13/tutorial/introduction.html#lists
autre : https://python.sdv.u-paris.fr/04_listes/ et https://python.sdv.u-paris.fr/12_plus_sur_les_listes/
● listes
https://docs.python.org/fr/3.13/library/turtle.html#module-turtle

Web

fichier : test2.html et test2.css
Analyse de la structure actuelle : blocs et éléments inline, conteneurs et éléments (pour flex)
On va organiser les sections 2 et 3 (ayant pour classe partieB) en utilisant des conteneurs et des éléments flexibles
Dans la feuille de style test2.css, il y a toutes les options possibles pour un conteneur flex et ses éléments.
résumé de la doc sur flex : boites flexibles