OpenLLM-France/wikimedia huggingface dataset:
# Programmation Ruby/Exemples de code
## Introduction et installation

* Introduction
* Installation
* Premiers essais

## Syntaxe et types

* Syntaxe, Portée, Types
* Expressions de contrôle et boucles
* Types standards
* Conteneurs

## Programmation orientée objet

* Les classes
* Les méthodes
* Les accesseurs
* Héritage
* Les exceptions
* Les mixins
* Les modules

## Utiliser Ruby

* La bibliothèque standard (stdlib)
* Ruby et le texte non structuré
* Programmation concurrente
* Programmation distribuée
* Persistance des données
* Bases de données et ORM
* Ruby et le Web
* Programmation Ruby/Manipuler des fichiers
* Ruby et les services
* Des interfaces graphiques avec Ruby
* Réflexion
* Exemples de code

## Pour les programmeurs...

* Pour les programmeurs Java
* Pour les programmeurs Python
* Pour les programmeurs PHP

## Outils autour du langage

* Interactive Ruby Shell
* Le débuggueur
* Le profileur
* Les tests unitaires
* La documentation
* Le packaging (gems)
* Rake
* Étendre Ruby
* Les différentes implémentations du langage

## Références

* Mots Réservés
* Variables globales prédéfinies
* Caractères d'échappements
* Webographie

## Introduction et installation

* Introduction
* Installation
* Premiers essais

## Syntaxe et types

* Syntaxe, Portée, Types
* Expressions de contrôle et boucles
* Types standards
* Conteneurs

## Programmation orientée objet

* Les classes
* Les méthodes
* Les accesseurs
* Héritage
* Les exceptions
* Les mixins
* Les modules

## Utiliser Ruby

* La bibliothèque standard (stdlib)
* Ruby et le texte non structuré
* Programmation concurrente
* Programmation distribuée
* Persistance des données
* Bases de données et ORM
* Ruby et le Web
* Programmation Ruby/Manipuler des fichiers
* Ruby et les services
* Des interfaces graphiques avec Ruby
* Réflexion
* Exemples de code

## Pour les programmeurs...

* Pour les programmeurs Java
* Pour les programmeurs Python
* Pour les programmeurs PHP

## Outils autour du langage

* Interactive Ruby Shell
* Le débuggueur
* Le profileur
* Les tests unitaires
* La documentation
* Le packaging (gems)
* Rake
* Étendre Ruby
* Les différentes implémentations du langage

## Références

* Mots Réservés
* Variables globales prédéfinies
* Caractères d'échappements
* Webographie
[ Modifier le sommaire ]
Tous ces exemples peuvent être testés directement dans irb. Il existe une version web d'irb pour tester Ruby dans un navigateur : TryRuby.

## Objets

Les nombres sont des objets. Pour obtenir la valeur absolue de -12 :
La taille d'une chaîne de caractères :
Trier un tableau et l'inverser :
Table de hachage :

## Blocs et itérateurs

Saluer 10 fois :
Afficher le carré de chaque nombre d'un tableau :
Obtenir un tableau contenant la racine carrée de quelques nombres :
Trier des chaines de caractères en fonction de leur taille :

## Structures

Création d'une structure Livre :

## Classes

* Création d'une classe Bibliotheque qui stocke des livres
* Création de la bibliothèque
* Ajout d'un autre livre
* Affichage de la liste des auteurs
Qui affichera
# Programmation Ruby/Héritage
## Introduction et installation

* Introduction
* Installation
* Premiers essais

## Syntaxe et types

* Syntaxe, Portée, Types
* Expressions de contrôle et boucles
* Types standards
* Conteneurs

## Programmation orientée objet

* Les classes
* Les méthodes
* Les accesseurs
* Héritage
* Les exceptions
* Les mixins
* Les modules

## Utiliser Ruby

* La bibliothèque standard (stdlib)
* Ruby et le texte non structuré
* Programmation concurrente
* Programmation distribuée
* Persistance des données
* Bases de données et ORM
* Ruby et le Web
* Programmation Ruby/Manipuler des fichiers
* Ruby et les services
* Des interfaces graphiques avec Ruby
* Réflexion
* Exemples de code

## Pour les programmeurs...

* Pour les programmeurs Java
* Pour les programmeurs Python
* Pour les programmeurs PHP

## Outils autour du langage

* Interactive Ruby Shell
* Le débuggueur
* Le profileur
* Les tests unitaires
* La documentation
* Le packaging (gems)
* Rake
* Étendre Ruby
* Les différentes implémentations du langage

## Références

* Mots Réservés
* Variables globales prédéfinies
* Caractères d'échappements
* Webographie

## Introduction et installation

* Introduction
* Installation
* Premiers essais

## Syntaxe et types

* Syntaxe, Portée, Types
* Expressions de contrôle et boucles
* Types standards
* Conteneurs

## Programmation orientée objet

* Les classes
* Les méthodes
* Les accesseurs
* Héritage
* Les exceptions
* Les mixins
* Les modules

## Utiliser Ruby

* La bibliothèque standard (stdlib)
* Ruby et le texte non structuré
* Programmation concurrente
* Programmation distribuée
* Persistance des données
* Bases de données et ORM
* Ruby et le Web
* Programmation Ruby/Manipuler des fichiers
* Ruby et les services
* Des interfaces graphiques avec Ruby
* Réflexion
* Exemples de code

## Pour les programmeurs...

* Pour les programmeurs Java
* Pour les programmeurs Python
* Pour les programmeurs PHP

## Outils autour du langage

* Interactive Ruby Shell
* Le débuggueur
* Le profileur
* Les tests unitaires
* La documentation
* Le packaging (gems)
* Rake
* Étendre Ruby
* Les différentes implémentations du langage

## Références

* Mots Réservés
* Variables globales prédéfinies
* Caractères d'échappements
* Webographie
[ Modifier le sommaire ]
L'héritage permet de créer une classe à partir d'une autre pour l'enrichir, ou la spécialiser. Une classe (classe dérivée, ou classe fille) hérite d'une autre classe (classe de base, ou classe mère).
On peut toujours utiliser les méthodes de la (des) classe(s) mère(s) dans une classe dérivée.
L'opérateur < précède le nom de la classe de base.

## Exemple

La classe Point vue précédemment :
peut être dérivée en une classe PointCouleur représentant un point coloré. Cette classe possède donc un attribut supplémentaire pour la couleur :
Lorsqu'on crée une instance de la classe dérivée, on bénéficie immédiatement des méthodes de celle-ci :
Et les méthodes de la classe de base étant héritées, on pourra la réutiliser dans la classe dérivée :
Par contre, la classe de base ne possède pas les méthodes définies dans les classes dérivées.
# Programmation Ruby/Persistance des données
## Introduction et installation

* Introduction
* Installation
* Premiers essais

## Syntaxe et types

* Syntaxe, Portée, Types
* Expressions de contrôle et boucles
* Types standards
* Conteneurs

## Programmation orientée objet

* Les classes
* Les méthodes
* Les accesseurs
* Héritage
* Les exceptions
* Les mixins
* Les modules

## Utiliser Ruby

* La bibliothèque standard (stdlib)
* Ruby et le texte non structuré
* Programmation concurrente
* Programmation distribuée
* Persistance des données
* Bases de données et ORM
* Ruby et le Web
* Programmation Ruby/Manipuler des fichiers
* Ruby et les services
* Des interfaces graphiques avec Ruby
* Réflexion
* Exemples de code

## Pour les programmeurs...

* Pour les programmeurs Java
* Pour les programmeurs Python
* Pour les programmeurs PHP

## Outils autour du langage

* Interactive Ruby Shell
* Le débuggueur
* Le profileur
* Les tests unitaires
* La documentation
* Le packaging (gems)
* Rake
* Étendre Ruby
* Les différentes implémentations du langage

## Références

* Mots Réservés
* Variables globales prédéfinies
* Caractères d'échappements
* Webographie

## Introduction et installation

* Introduction
* Installation
* Premiers essais

## Syntaxe et types

* Syntaxe, Portée, Types
* Expressions de contrôle et boucles
* Types standards
* Conteneurs

## Programmation orientée objet

* Les classes
* Les méthodes
* Les accesseurs
* Héritage
* Les exceptions
* Les mixins
* Les modules

## Utiliser Ruby

* La bibliothèque standard (stdlib)
* Ruby et le texte non structuré
* Programmation concurrente
* Programmation distribuée
* Persistance des données
* Bases de données et ORM
* Ruby et le Web
* Programmation Ruby/Manipuler des fichiers
* Ruby et les services
* Des interfaces graphiques avec Ruby
* Réflexion
* Exemples de code

## Pour les programmeurs...

* Pour les programmeurs Java
* Pour les programmeurs Python
* Pour les programmeurs PHP

## Outils autour du langage

* Interactive Ruby Shell
* Le débuggueur
* Le profileur
* Les tests unitaires
* La documentation
* Le packaging (gems)
* Rake
* Étendre Ruby
* Les différentes implémentations du langage

## Références

* Mots Réservés
* Variables globales prédéfinies
* Caractères d'échappements
* Webographie
[ Modifier le sommaire ]

## Mémoriser des données dans la RAM

Elles seront ainsi disponibles entre deux exécutions d'un programme. Madeleine peut donc mémoriser des objets dès lors qu'ils sont sérialisables avec Marshal.

## YAML

YAML (YAML Ain't Markup Language) permet de sérialiser des objets et de collection d'objets. Tout comme XML, c'est un format lisible par l'humain. On peut ainsi modifier directement un fichier yaml via un éditeur de texte.
YAML est souvent préféré à XML dans la communauté Ruby qui juge ce dernier trop verbeux.
Ruby permet de manipuler des le format YAML via yaml4r.
# Programmation Ruby/Mots Réservés
## Introduction et installation

* Introduction
* Installation
* Premiers essais

## Syntaxe et types

* Syntaxe, Portée, Types
* Expressions de contrôle et boucles
* Types standards
* Conteneurs

## Programmation orientée objet

* Les classes
* Les méthodes
* Les accesseurs
* Héritage
* Les exceptions
* Les mixins
* Les modules

## Utiliser Ruby

* La bibliothèque standard (stdlib)
* Ruby et le texte non structuré
* Programmation concurrente
* Programmation distribuée
* Persistance des données
* Bases de données et ORM
* Ruby et le Web
* Programmation Ruby/Manipuler des fichiers
* Ruby et les services
* Des interfaces graphiques avec Ruby
* Réflexion
* Exemples de code

## Pour les programmeurs...

* Pour les programmeurs Java
* Pour les programmeurs Python
* Pour les programmeurs PHP

## Outils autour du langage

* Interactive Ruby Shell
* Le débuggueur
* Le profileur
* Les tests unitaires
* La documentation
* Le packaging (gems)
* Rake
* Étendre Ruby
* Les différentes implémentations du langage

## Références

* Mots Réservés
* Variables globales prédéfinies
* Caractères d'échappements
* Webographie

## Introduction et installation

* Introduction
* Installation
* Premiers essais

## Syntaxe et types

* Syntaxe, Portée, Types
* Expressions de contrôle et boucles
* Types standards
* Conteneurs

## Programmation orientée objet

* Les classes
* Les méthodes
* Les accesseurs
* Héritage
* Les exceptions
* Les mixins
* Les modules

## Utiliser Ruby

* La bibliothèque standard (stdlib)
* Ruby et le texte non structuré
* Programmation concurrente
* Programmation distribuée
* Persistance des données
* Bases de données et ORM
* Ruby et le Web
* Programmation Ruby/Manipuler des fichiers
* Ruby et les services
* Des interfaces graphiques avec Ruby
* Réflexion
* Exemples de code

## Pour les programmeurs...

* Pour les programmeurs Java
* Pour les programmeurs Python
* Pour les programmeurs PHP

## Outils autour du langage

* Interactive Ruby Shell
* Le débuggueur
* Le profileur
* Les tests unitaires
* La documentation
* Le packaging (gems)
* Rake
* Étendre Ruby
* Les différentes implémentations du langage

## Références

* Mots Réservés
* Variables globales prédéfinies
* Caractères d'échappements
* Webographie
[ Modifier le sommaire ]
# Programmation Ruby/IRB
## Introduction et installation

* Introduction
* Installation
* Premiers essais

## Syntaxe et types

* Syntaxe, Portée, Types
* Expressions de contrôle et boucles
* Types standards
* Conteneurs

## Programmation orientée objet

* Les classes
* Les méthodes
* Les accesseurs
* Héritage
* Les exceptions
* Les mixins
* Les modules

## Utiliser Ruby

* La bibliothèque standard (stdlib)
* Ruby et le texte non structuré
* Programmation concurrente
* Programmation distribuée
* Persistance des données
* Bases de données et ORM
* Ruby et le Web
* Programmation Ruby/Manipuler des fichiers
* Ruby et les services
* Des interfaces graphiques avec Ruby
* Réflexion
* Exemples de code

## Pour les programmeurs...

* Pour les programmeurs Java
* Pour les programmeurs Python
* Pour les programmeurs PHP

## Outils autour du langage

* Interactive Ruby Shell
* Le débuggueur
* Le profileur
* Les tests unitaires
* La documentation
* Le packaging (gems)
* Rake
* Étendre Ruby
* Les différentes implémentations du langage

## Références

* Mots Réservés
* Variables globales prédéfinies
* Caractères d'échappements
* Webographie

## Introduction et installation

* Introduction
* Installation
* Premiers essais

## Syntaxe et types

* Syntaxe, Portée, Types
* Expressions de contrôle et boucles
* Types standards
* Conteneurs

## Programmation orientée objet

* Les classes
* Les méthodes
* Les accesseurs
* Héritage
* Les exceptions
* Les mixins
* Les modules

## Utiliser Ruby

* La bibliothèque standard (stdlib)
* Ruby et le texte non structuré
* Programmation concurrente
* Programmation distribuée
* Persistance des données
* Bases de données et ORM
* Ruby et le Web
* Programmation Ruby/Manipuler des fichiers
* Ruby et les services
* Des interfaces graphiques avec Ruby
* Réflexion
* Exemples de code

## Pour les programmeurs...

* Pour les programmeurs Java
* Pour les programmeurs Python
* Pour les programmeurs PHP

## Outils autour du langage

* Interactive Ruby Shell
* Le débuggueur
* Le profileur
* Les tests unitaires
* La documentation
* Le packaging (gems)
* Rake
* Étendre Ruby
* Les différentes implémentations du langage

## Références

* Mots Réservés
* Variables globales prédéfinies
* Caractères d'échappements
* Webographie
[ Modifier le sommaire ]
IRB (Interactive Ruby Shell) est un interpréteur Ruby en ligne de commande.

## Installer IRB

Sous linux, utilisez votre gestionnaire de paquet.

## Configurer IRB

À chaque lancement de irb, le fichier ~/.irbrc est interprété. Voici un exemple de fichier qui vous rendra l'utilisation d'IRB plus agréable :
# Auto-éditer un wikilivre/Sommaire

* Structure classique d'un Wikilivre $^{100%}$ (6 pages)
* Éditer avec la version imprimable $^{100%}$ (1 page) Éditer et imprimer avec une belle présentation classique et une couverture.
* Auto-référencer (« annexer » étude de faisabilité et tests) $^{100%}$ (103 pages) « Annexer » les livres. La page « Annexe » est obtenue à l'aide d'outils de programmation intégrés dans les systèmes d'exploitation linux ou MinGw, ou sous Windows 10 de Microsoft.
* Logiciel Annexer (Version orignale)$^{100%}$ (4 pages) installation manuelle
* Add_appendix: Annexer (Version internationalisée) $^{100%}$ (12 pages) )installation manuelle « Annexer » les livres avec les fichiers de traduction des messages (.pot, .po, .mo) et manuels anglais français au moins. « Add_appendix (software) » is in international version with translations and manuals for other languages.
* addappendix décrit la construction du paquet addappendix pour une installation automatique après téléchargement. ( 30 pages) Le paquet « addappendix (Logiciel) » fait suite à « Add_appendix (Logiciel) » que l'on doit construire manuellement par téléchargement de scripts. The « addappendix (Software) » package follows « Add_appendix (Software) » which must be built manually by downloading scripts .
* Indexer $^{5%}$ L'indexation n'a de sens que si le livre doit être imprimé. Cette indexation est obtenue par l'intermédiaire d'outils de mises en page tels que OpenOffice, LibreOffice, et autres.
* Post-référencer $^{5%}$ Ce post-référencement permet de préciser le numéro des pages dans la page « Annexe et index ».
* Tableau des caractéristiques des logiciels qui produisent les pages Annexe des wiki-livres $^{0%}$ (2 pages à 90%) Ce tableau résume les caractéristiques des logiciels Annexer, Add_appendix, addappendix.
* Annexer (Logiciel) $^{0%}$ Le livre de l'utilisateur (addappendix users-book)
# Auto-éditer un wikilivre/Tableau des logiciels Add appendix
## Tableau des logiciels

* de=allemand; en=anglais; es=espagnol; fr=français; += extensible dans d'autres langues (hors paquet)
LOGICIELS :
| | Annexer | Add_appendix | addappendix | comparatif avec PediaPress |
| Installation | importation manuelle téléchageable | importation manuelle/makefile | paquets linux | ---- |
| Version | mai 2020 | décembre 2021 | ? 2022 | ---- |
| Tests effectués sur | fr.wikibooks.org | wikibooks fr, en | wikibooks fr, en | ---- |
| Wiki-livres annexables | sommaires, compilations, contenus | sommaires, compilations, collections, contenus, contents | compilations (fr), collections (en) | compilations (fr), collections (en) |
| Langue des message | français | fr, en, + | fr, en, + | ---- |
| Langue des manuels | français | fr, en, + | fr, en, + | ---- |
| Nom de la commande | annex | annex | addappendix | ---- |
| Extensions de commande | non | annexer/add_appendix | non | ---- |
| Ajouter une page d'autres sites wikibooks | oui | oui | non | non |
| Couverture du livre | oui avec versions imprimables | oui avec versions imprimables | oui avec inclusion à la compilation | oui automatique interactif |
| Page Annexe | oui (Annexe) | oui (Annexe/Appendix) | oui (Annexe/Appendix) | oui (Annexe/Appendix) |
| Page Index | non | non | non | oui (Index) |
* ↑ multisites par action manuelle
# Auto-éditer un wikilivre/Auto-référencer/télécharger par ftp
## Télécharger par ftp
### Sous linux

* Ouvrir un 'Terminal'
* taper: ftp 82.64.126.156
* à la demande Name: écrire anonymous
* à la demande Password: tapez 123 ou @
* taper: cd pub/wikibooks
* pour lire le contenu du répertoire taper ls
* pour télécharger taper: get <le nom du fichier>
* pour quitter ftp taper: quit ou exit

### Notes

* Terminal et 'ftp sont des applications standard.
* ftp> ? Pour visualiser la liste des commandes ftp
* Rechercher sur google: Créer ubuntu autoboot sur clé usb
# Auto-éditer un wikilivre/Résumé introductif

Cette étude a été initiée avec l'article Auto-éditer un wikilivre/Auto-référencer, il décrit en détail la progression de la programmation.
Français: est un peu comme un puzzle. On croit que la commande que l'on vient d'écrire va marcher immédiatement, mais non ! Au bout de quelque temps on donne sa langue au chat et on va interroger les forums en espérant trouver une solution; ne serait-ce que pour comprendre la différence entre les parenthèse et double parenthèses : (...) ((...)) [...] {...} toutes ces parenthèses se ressemblent et n'expriment pas le même concept. Voila donc un bon passe-temps pour remplir des journées vides de sens.
English: It's kind of like a puzzle. We believe that the command line we just wrote will work immediately, but no! After some time we will go to the forums hoping to find a solution; even if hope only to understand the difference between brackets and double brackets: (...) ((...)) ... {...} all these brackets are similar and do not express the same concept. It is a good pastime to fill empty days of meaning.
Les codes informatiques de ces articles ne sont pas prévus pour être intégrés dans un livre. Ils sont présentés pour être expliqués, voire corrigés. Chacun pourra les copier et faire des essais personnels d'encodage. L'encodage paraît facile, chaque ligne un peu compliquée demande parfois des heures de travail; alors, ne changez pas ces codes sans être absolument certain que cela en vaut la peine.
Les documents imprimables de ces articles, en Version imprimable ou Version compilée, sont (ou seront) imprimés sans le code informatique. Il en est (en sera) de même pour les manuels html et man de linux avec la version internationalisée du programme Annexer ou Annex ou encore AddAppendix; le nom pertinent n'est pas encore trouvé.
# Comment contourner un proxy/HTTP

Cette méthode part du principe que le proxy utilise une liste noire de sites interdits. Le principe du contournement par site web repose sur cette liste noire : le site web qui n'est pas sur la liste noire vous demande quel site vous voulez voir et vous donne le site interdit.

## Inconvénients

Certains gouvernements utilisent cette méthode pour collecter les adresses IP des personnes qui contournent leur proxy. Ces sites ne téléchargent pas de java ou de flash en général (donc rien ne sert d'aller sur youtube avec), et peuvent relever vos mots de passe et autres informations.
N'utilisez pas cette méthode si vous avez des informations confidentielles à transmettre, ou si vous vivez dans un pays qui censure l'accès à internet.

## Lien externe
### Exemples

* Public Proxy Servers : http://www.publicproxyservers.com/index.html
* Rosinstrument : http://tools.rosinstrument.com/proxy/
* Samair : http://www.samair.ru/proxy/

### Sources

* Wiki de l'internet libre : http://free.korben.info/index.php/Proxy
# Comment contourner un proxy/Proxy

Cette partie du livre va vous expliquer ce qu'est un proxy. Si vous avez déjà des connaissances, passez au chapitre suivant qui explique comment certains FAI se servent des proxy.

## Où est le proxy ?

Un proxy est situé entre le contenu demandé sur internet (page internet, fichier, mail, VOIP ou P2P) et la personne demandant le contenu. C'est le proxy qui prend les informations du site pour les envoyer au demandeur. Au passage, il prend éventuellement les données de connexion et les informations qui transitent.

## Si un proxy filtre les sites internet, que fait-il ?

Maintenant, admettons que à la place de wikipédia, vous avez envie d'aller sur Youtube.
Vous allez demander à votre navigateur préféré d'aller sur youtube. Votre ordinateur va envoyer vers le réseau la demande d'accéder à youtube. Mais entre vous et le site internet de youtube, il y a le proxy qui vérifie si ce site est autorisé. Or il ne l'est pas. Donc soit :
* Le proxy vous informe que le site est bloqué,
* Le proxy imite un message d'erreur du navigateur (exemple : Turquie où il y a un faux message d'erreur de firefox),
* Le proxy ne laisse aucun message et le navigateur affichera probablement que le temps de connexion est dépassé.
# Comment contourner un proxy/Tor
## Tor, comment ça fonctionne ?

Tor prends au hasard une chaîne d'ordinateur qui change après une durée déterminée. L'information transite par tous ces ordinateurs, et le dernier (le nœud de sortie) transmet l'information en clair au serveur.

## Comment utiliser Tor ?

Il suffit de l'installer à partir du site officiel : https://www.torproject.org/download/download-easy.html.en.
Puis une fois lancé, il fournit un navigateur Web.
# Coder avec Unicode/Sommaire

Le texte
* Structure de donnée
* Conventions
* Conversion
* Normalisation
* Équivalence
Les interfaces
* L' accès aux fichiers 𝓌
* Passage de paramètres ⺇
* Entrées & sorties ϐ
* Entrées & sorties ϐ
* Interfaces graphiques et web ϐ
Les algorithmes
Annexes
* Glossaire A
* Autres lectures sur Unicode 📖
# Comment contourner un proxy

* Une version imprimable du livre « Comment contourner un proxy » est disponible. (voir/ modifier)

## Introduction

Ce livre vous permettra de contourner un proxy grâce à plusieurs méthodes.

## Vous aurez besoin

* D'un ordinateur
* D'une connexion internet
* Un proxy à contourner
* Un peu de temps

## Attention

En utilisant un proxy au sein de votre organisation (entreprise, établissement public, etc.), vous pouvez contourner des restrictions imposées techniquement et par le règlement intérieur. Vous vous exposez donc aux sanctions encourues et engagez votre responsabilité.

## Table des matières
### Connaissances de base sur les proxys

* Un proxy, c'est quoi ? Et comment ça fonctionne ?
* L'utilisation des proxys par les fournisseurs d'accès à internet
* Informations sur la sécurité de vos données et sur les proxy

### Contournement des proxys

* Contourner un proxy depuis une page internet
* En utilisant Tor
* En utilisant un VPN

### Liens externes

* Contourner.net En utilisant les tunnels SSH