├── .github
└── workflows
│ └── documentation.yml
├── .gitignore
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── LICENCE
├── README.md
├── babel.config.js
├── blog
├── 2021-11-08-Hello-world.md
└── authors.yml
├── docs
├── 01-Culture-generale-en-informatique
│ ├── 00-introduction.md
│ ├── 01-Les-bases-des-reseaux
│ │ ├── 01-les-bases-du-reseau.md
│ │ ├── 02-tcp-ip.md
│ │ ├── 03-dhcp-dns.md
│ │ ├── 04-client-serveur.md
│ │ └── _category_.json
│ ├── 01-histoire-de-l-informatique.md
│ ├── 02-bases-d-internet
│ │ ├── 00-introduction.md
│ │ ├── 01-les-reseaux-d-internet.md
│ │ ├── 02-un-serveur-web.md
│ │ ├── 03-les-adresses-ip-publique.md
│ │ └── _category_.json
│ ├── 02-un-ordinateur.md
│ └── _category_.json
├── 02-Connaissances-de-base
│ ├── 01-bases-algorithme
│ │ ├── 01-variables-operateurs-flux-entree-et-sortie.md
│ │ ├── 02-logique-booleenne-et-structures-conditionnelles.md
│ │ ├── 03-les-boucles.md
│ │ └── _category_.json
│ ├── 02-les-grands-principes-de-developpement
│ │ ├── 00-introduction.md
│ │ └── _category_.json
│ ├── 03-bases-api
│ │ ├── 00-introduction.md
│ │ ├── 01-api-rest.md
│ │ └── _category_.json
│ └── _category_.json
├── 03-html-et-css
│ ├── 01-html.md
│ ├── 02-css.md
│ └── _category_.json
├── 04-php
│ ├── 00-introduction.md
│ ├── 01-Installation.md
│ ├── _category_.json
│ └── xx-langage-php.md
├── 05-bases-de-symfony
│ ├── 01-paradigme-mvc.md
│ └── _category_.json
├── 06-symfony
│ ├── 00-introduction.md
│ ├── 01-installation.md
│ ├── 02-routage.md
│ ├── 03-controleurs.md
│ ├── 04-twig.md
│ ├── 05-modeles.md
│ ├── 06-formulaires.md
│ ├── 07-services.md
│ ├── 08-JS-Symfony.md
│ └── _category_.json
├── 07-JavaScript
│ ├── 01-introduction.md
│ ├── 02-les-variables.md
│ ├── 03-les-conditions.md
│ ├── 04-les-boucles.md
│ ├── 05-les-fonctions.md
│ ├── 06-events.md
│ ├── 07-POO.md
│ ├── 08-les-erreurs.md
│ ├── 09-la gestion-asynchrone.md
│ ├── 10-DOM.md
│ ├── 11-AJAX.md
│ ├── 12-JS-côté-serveur.md
│ ├── 13-frameworks.md
│ └── _category_.json
├── 08-Notions-systeme
│ ├── 01-linux
│ │ ├── 00-introduction.md
│ │ ├── 01-les-commandes-de-base.md
│ │ └── _category_.json
│ ├── 02-docker
│ │ ├── 00-le-concept.md
│ │ ├── 01-passerelle-de-la-base-a-la-pratique.md
│ │ ├── 02-docker-sous-symfony.md
│ │ └── _category_.json
│ └── _category_.json
├── 09-Communauté
│ ├── 00-communaute.md
│ ├── 01-contribuer.md
│ └── _category.json
├── 09-outils
│ ├── 01-notions-git
│ │ ├── 00-introduction.md
│ │ ├── 01-qu-est-ce-que-le-versionning.md
│ │ ├── 02-debuter-avec-git.md
│ │ ├── 03-github-et-cie-different-de-git.md
│ │ └── _category_.json
│ └── _category_.json
└── intro.md
├── docusaurus.config.js
├── package-lock.json
├── package.json
├── screenshoot.png
├── sidebars.js
├── src
├── components
│ ├── HomepageFeatures.js
│ └── HomepageFeatures.module.css
├── css
│ └── custom.css
└── pages
│ ├── index.js
│ ├── index.module.css
│ └── markdown-page.md
└── static
├── .nojekyll
└── img
├── dev.svg
├── favicon.ico
├── logo.svg
├── map.svg
├── step.svg
└── tutorial
├── docsVersionDropdown.png
└── localeDropdown.png
/.github/workflows/documentation.yml:
--------------------------------------------------------------------------------
1 | name: documentation
2 |
3 | on:
4 | pull_request:
5 | branches: [documentation]
6 | push:
7 | branches: [documentation]
8 |
9 | jobs:
10 | checks:
11 | if: github.event_name != 'push'
12 | runs-on: ubuntu-latest
13 | steps:
14 | - uses: actions/checkout@v1
15 | - uses: actions/setup-node@v1
16 | with:
17 | node-version: '14.x'
18 | - name: Test Build
19 | run: |
20 | if [ -e yarn.lock ]; then
21 | yarn install --frozen-lockfile
22 | elif [ -e package-lock.json ]; then
23 | npm ci
24 | else
25 | npm i
26 | fi
27 | npm run build
28 | gh-release:
29 | if: github.event_name != 'pull_request'
30 | runs-on: ubuntu-latest
31 | steps:
32 | - uses: actions/checkout@v1
33 | - uses: actions/setup-node@v1
34 | with:
35 | node-version: '14.x'
36 | - uses: webfactory/ssh-agent@v0.5.0
37 | with:
38 | ssh-private-key: ${{ secrets.GH_PAGES_DEPLOY }}
39 | - name: Release to GitHub Pages
40 | env:
41 | USE_SSH: true
42 | GIT_USER: git
43 | run: |
44 | git config --global user.email "yoan.bernabeu@gmail.com"
45 | git config --global user.name "gh-actions"
46 | if [ -e yarn.lock ]; then
47 | yarn install --frozen-lockfile
48 | elif [ -e package-lock.json ]; then
49 | npm ci
50 | else
51 | npm i
52 | fi
53 | npm run deploy
54 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Dependencies
2 | /node_modules
3 |
4 | # Production
5 | /build
6 |
7 | # Generated files
8 | .docusaurus
9 | .cache-loader
10 |
11 | # Misc
12 | .DS_Store
13 | .env.local
14 | .env.development.local
15 | .env.test.local
16 | .env.production.local
17 |
18 | npm-debug.log*
19 | yarn-debug.log*
20 | yarn-error.log*
21 |
--------------------------------------------------------------------------------
/CODE_OF_CONDUCT.md:
--------------------------------------------------------------------------------
1 |
2 | # Contributor Covenant Code of Conduct
3 |
4 | ## Our Pledge
5 |
6 | We as members, contributors, and leaders pledge to make participation in our
7 | community a harassment-free experience for everyone, regardless of age, body
8 | size, visible or invisible disability, ethnicity, sex characteristics, gender
9 | identity and expression, level of experience, education, socio-economic status,
10 | nationality, personal appearance, race, caste, color, religion, or sexual identity
11 | and orientation.
12 |
13 | We pledge to act and interact in ways that contribute to an open, welcoming,
14 | diverse, inclusive, and healthy community.
15 |
16 | ## Our Standards
17 |
18 | Examples of behavior that contributes to a positive environment for our
19 | community include:
20 |
21 | * Demonstrating empathy and kindness toward other people
22 | * Being respectful of differing opinions, viewpoints, and experiences
23 | * Giving and gracefully accepting constructive feedback
24 | * Accepting responsibility and apologizing to those affected by our mistakes,
25 | and learning from the experience
26 | * Focusing on what is best not just for us as individuals, but for the
27 | overall community
28 |
29 | Examples of unacceptable behavior include:
30 |
31 | * The use of sexualized language or imagery, and sexual attention or
32 | advances of any kind
33 | * Trolling, insulting or derogatory comments, and personal or political attacks
34 | * Public or private harassment
35 | * Publishing others' private information, such as a physical or email
36 | address, without their explicit permission
37 | * Other conduct which could reasonably be considered inappropriate in a
38 | professional setting
39 |
40 | ## Enforcement Responsibilities
41 |
42 | Community leaders are responsible for clarifying and enforcing our standards of
43 | acceptable behavior and will take appropriate and fair corrective action in
44 | response to any behavior that they deem inappropriate, threatening, offensive,
45 | or harmful.
46 |
47 | Community leaders have the right and responsibility to remove, edit, or reject
48 | comments, commits, code, wiki edits, issues, and other contributions that are
49 | not aligned to this Code of Conduct, and will communicate reasons for moderation
50 | decisions when appropriate.
51 |
52 | ## Scope
53 |
54 | This Code of Conduct applies within all community spaces, and also applies when
55 | an individual is officially representing the community in public spaces.
56 | Examples of representing our community include using an official e-mail address,
57 | posting via an official social media account, or acting as an appointed
58 | representative at an online or offline event.
59 |
60 | ## Enforcement
61 |
62 | Instances of abusive, harassing, or otherwise unacceptable behavior may be
63 | reported to the community leaders responsible for enforcement at
64 | [contact@yoandev.co](mailto:contact@yoandev.co).
65 | All complaints will be reviewed and investigated promptly and fairly.
66 |
67 | All community leaders are obligated to respect the privacy and security of the
68 | reporter of any incident.
69 |
70 | ## Enforcement Guidelines
71 |
72 | Community leaders will follow these Community Impact Guidelines in determining
73 | the consequences for any action they deem in violation of this Code of Conduct:
74 |
75 | ### 1. Correction
76 |
77 | **Community Impact**: Use of inappropriate language or other behavior deemed
78 | unprofessional or unwelcome in the community.
79 |
80 | **Consequence**: A private, written warning from community leaders, providing
81 | clarity around the nature of the violation and an explanation of why the
82 | behavior was inappropriate. A public apology may be requested.
83 |
84 | ### 2. Warning
85 |
86 | **Community Impact**: A violation through a single incident or series
87 | of actions.
88 |
89 | **Consequence**: A warning with consequences for continued behavior. No
90 | interaction with the people involved, including unsolicited interaction with
91 | those enforcing the Code of Conduct, for a specified period of time. This
92 | includes avoiding interactions in community spaces as well as external channels
93 | like social media. Violating these terms may lead to a temporary or
94 | permanent ban.
95 |
96 | ### 3. Temporary Ban
97 |
98 | **Community Impact**: A serious violation of community standards, including
99 | sustained inappropriate behavior.
100 |
101 | **Consequence**: A temporary ban from any sort of interaction or public
102 | communication with the community for a specified period of time. No public or
103 | private interaction with the people involved, including unsolicited interaction
104 | with those enforcing the Code of Conduct, is allowed during this period.
105 | Violating these terms may lead to a permanent ban.
106 |
107 | ### 4. Permanent Ban
108 |
109 | **Community Impact**: Demonstrating a pattern of violation of community
110 | standards, including sustained inappropriate behavior, harassment of an
111 | individual, or aggression toward or disparagement of classes of individuals.
112 |
113 | **Consequence**: A permanent ban from any sort of public interaction within
114 | the community.
115 |
116 | ## Attribution
117 |
118 | This Code of Conduct is adapted from the [Contributor Covenant][homepage],
119 | version 2.0, available at
120 | [https://www.contributor-covenant.org/version/2/0/code_of_conduct.html][v2.0].
121 |
122 | Community Impact Guidelines were inspired by
123 | [Mozilla's code of conduct enforcement ladder][Mozilla CoC].
124 |
125 | For answers to common questions about this code of conduct, see the FAQ at
126 | [https://www.contributor-covenant.org/faq][FAQ]. Translations are available
127 | at [https://www.contributor-covenant.org/translations][translations].
128 |
129 | [homepage]: https://www.contributor-covenant.org
130 | [v2.0]: https://www.contributor-covenant.org/version/2/0/code_of_conduct.html
131 | [Mozilla CoC]: https://github.com/mozilla/diversity
132 | [FAQ]: https://www.contributor-covenant.org/faq
133 | [translations]: https://www.contributor-covenant.org/translations
--------------------------------------------------------------------------------
/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | # Contributing Guidelines
2 |
3 | Thank you for your interest in contributing to our project. Whether it's a bug report, new feature, correction, or additional
4 | documentation, we greatly value feedback and contributions from our community.
5 |
6 | Please read through this document before submitting any issues or pull requests to ensure we have all the necessary
7 | information to effectively respond to your bug report or contribution.
8 |
9 |
10 | ## Reporting Bugs/Feature Requests
11 |
12 | We welcome you to use the GitHub issue tracker to report bugs or suggest features.
13 |
14 | When filing an issue, please check existing open, or recently closed, issues to make sure somebody else hasn't already reported the issue. Please try to include as much information as you can. Details like these are incredibly useful:
15 |
16 | * A reproducible test case or series of steps
17 | * The version of our code being used
18 | * Any modifications you've made relevant to the bug
19 | * Anything unusual about your environment or deployment
20 |
21 |
22 | ## Contributing via Pull Requests
23 | Contributions via pull requests are much appreciated. Before sending us a pull request, please ensure that:
24 |
25 | 1. You are working against the latest source on the *main* branch.
26 | 2. You check existing open, and recently merged, pull requests to make sure someone else hasn't addressed the problem already.
27 | 3. You open an issue to discuss any significant work - we would hate for your time to be wasted.
28 |
29 | To send us a pull request, please:
30 |
31 | 1. Fork the repository.
32 | 2. Modify the source; please focus on the specific change you are contributing. If you also reformat all the code, it will be hard for us to focus on your change.
33 | 3. Ensure local tests pass.
34 | 4. Commit to your fork using clear commit messages.
35 | 5. Send us a pull request, answering any default questions in the pull request interface.
36 | 6. Pay attention to any automated CI failures reported in the pull request, and stay involved in the conversation.
37 |
38 | GitHub provides additional document on [forking a repository](https://help.github.com/articles/fork-a-repo/) and
39 | [creating a pull request](https://help.github.com/articles/creating-a-pull-request/).
40 |
41 |
42 | ## Finding contributions to work on
43 | Looking at the existing issues is a great way to find something to contribute on. As our projects, by default, use the default GitHub issue labels (enhancement/bug/duplicate/help wanted/invalid/question/wontfix).
44 |
45 |
46 | ## Code of Conduct
47 | This project has adopted the [Contributor Covenant Code of Conduct](CODE_OF_CONDUCT.md).
48 |
49 |
50 | ## Security issue notifications
51 | If you discover a potential security issue in this project we ask that you notify the owner via email [contact@yoandev.co](mailto:contact@yoandev.co). Please do **not** create a public github issue.
52 |
53 |
54 | ## Licensing
55 |
56 | See the [LICENCE](LICENCE) file for our project's licensing. We will ask you to confirm the licensing of your contribution.
--------------------------------------------------------------------------------
/LICENCE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2021 Yoan Bernabeu
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Roadmap Dev Symfony
2 |
3 | Une Roadmap collaborative pour devenir un⸱e dev Symfony !
4 |
5 | 👀 **La version consultable est disponible à cette adresse : [https://yoanbernabeu.github.io/Roadmap-Dev-Symfony/](https://yoanbernabeu.github.io/Roadmap-Dev-Symfony/)**
6 |
7 | 
8 |
9 | *Ce site web est construit avec [Docusaurus 2](https://docusaurus.io/).*
10 |
11 | ## ✍ Comment contribuer au projet ?
12 |
13 | Vous souhaitez contribuer au projet ? **Merci !**
14 |
15 | ### Quoi faire ?
16 |
17 | Il y a pleins de possibilités pour contribuer au projet :
18 |
19 | * Soumettre des issues
20 | * Traiter une issue
21 | * Corriger une faute
22 | * Ajouter un lien vers une ressource
23 | * etc
24 |
25 | *Nous attirons votre attention : **notre roadmap n'a pas vocation à dispenser du contenu** pédagogique (cours, tutos, etc ...), mais seulement à **rediriger vers du contenu déjà existant**. Notre plus-value est de **proposer un chemin d'apprentissage** complet et cohérent.*
26 |
27 | ### Comment faire ?
28 |
29 | Nous vous invitons à prendre connaissance de notre [guide de contribution](CONTRIBUTING.md).
30 |
31 | En synthèse, les étapes pour contribuer :
32 |
33 | * **Forker** le projet
34 | * Réaliser vos ajouts, modifications ou corrections, si possible dans **une et une** seule thématique
35 | * Soumettre vos modifications via une **Pull Request**
36 |
37 | Vos modifications seront **review** par la communauté, et eventuellement intégrées dans la branche **main**.
38 |
39 | Dans un second temps, la branche **main** sera mergée dans la branche **documentation**, ce qui aura pour effet de déclencher la pipeline de déploiement de la version disponible à cette adresse : [https://yoanbernabeu.github.io/Roadmap-Dev-Symfony/](https://yoanbernabeu.github.io/Roadmap-Dev-Symfony/)
40 |
41 | ## 🚴♀️ Lancer le projet en local
42 |
43 | ### Prérequis
44 |
45 | Node.js version >= 14 ou supérieure (qui peut être vérifiée en exécutant node -v).
46 |
47 | *Vous pouvez utiliser [nvm](https://github.com/nvm-sh/nvm) pour gérer plusieurs versions de Node sur une seule machine installée*
48 |
49 | ### Installation
50 |
51 | ```
52 | $ npm install
53 | ```
54 |
55 | ### Serveur de développement
56 |
57 | ```
58 | $ npm start
59 | ```
60 |
61 | ### Builder l'application en local
62 |
63 | ```
64 | $ npm run build
65 | ```
66 |
67 | cette commande génère une version statique du site dans un répertoire `build`.
--------------------------------------------------------------------------------
/babel.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | presets: [require.resolve('@docusaurus/core/lib/babel/preset')],
3 | };
4 |
--------------------------------------------------------------------------------
/blog/2021-11-08-Hello-world.md:
--------------------------------------------------------------------------------
1 | ---
2 | slug: les-copains-et-copines
3 | title: Hey, les copains et copines
4 | authors: yoandev
5 | tags: [actualité]
6 | ---
7 |
8 | :::info Publié intitialement sur twitter
9 | L'article ci-dessous est à l'origine un fil Twitter. Pour le rendre cohérent, il a été très légèrement modifié.
10 |
11 | Il est consultable en [suivant ce lien](https://twitter.com/yOyO38/status/1457379362555236359).
12 | :::
13 |
14 | 👉 Hey, les copains et copines dev (Symfony mais pas que) une question pour vous 😉
15 |
16 | Est-ce que cela vous semble une bonne idée de construire (de manière collaborative) une Roadmap pour celles et ceux qui souhaiteraient devenir dev (Symfony) ?
17 |
18 | 💡 **Mon idée** : Construire un minisite avec une roadmap pour devenir dev Symfony.
19 |
20 | Pour chacune des étapes, nous pourrions proposer des ressources (si possible francophone) disponibles sur le web pour que chacun.e puissent se former gratuitement.
21 |
22 | 🔎 **Mon constat** : Les formations disponibles (gratuite ou payante) ne sont pas complète, et surtout font souvent l'impasse sur une formation généraliste sur l'informatique, les réseaux, internet...
23 |
24 | De mon point de vue, avoir des bases, même minimaliste des grands principes de l'informatique, des réseaux et de l'internet permet aux développeurs et développeuses d'être meilleur et de mieux comprendre les tenants et les aboutissants !
25 |
26 | 🛠 **Comment** ? Afin de rester simple et de permettre un fonctionnement collaboratif, je vais probablement utiliser
27 | [docusaurus](https://docusaurus.io/) sur ce dépôt GitHub.
28 |
29 | Je vais bosser dessus cette semaine, je lancerais l'affaire publiquement probablement samedi prochain 🚀
30 |
31 | 🙏 Vous voulez être de l'aventure ?
32 | Venez dans les [issues du dépot](https://github.com/yoanbernabeu/Roadmap-Dev-Symfony/issues), on en discute ❤
--------------------------------------------------------------------------------
/blog/authors.yml:
--------------------------------------------------------------------------------
1 | yoandev:
2 | name: Yoan Bernabeu
3 | title: Mainteneur de la Roadmap Dev Symfony
4 | url: https://github.com/yoanbernabeu
5 | image_url: https://github.com/yoanbernabeu.png
--------------------------------------------------------------------------------
/docs/01-Culture-generale-en-informatique/00-introduction.md:
--------------------------------------------------------------------------------
1 | ---
2 | sidebar_position: 0
3 | ---
4 |
5 | # Introduction
6 |
7 | Avant d'envisager d'étudier un langage de programmation ou de mettre les doigts dans le code, il nous semble important de prendre le temps d'étudier quelques bases préalables.
8 |
9 | Dans cette section de la roadmap nous vous proposons quelques ressources afin de vous former aux bases de l'informatique, afin d'améliorer ou compléter votre culture générale informatique.
10 |
11 | Promis, cela vous permettra de mieux comprendre certains concepts mis en œuvre plus tard dans votre métier de développeur.
12 |
--------------------------------------------------------------------------------
/docs/01-Culture-generale-en-informatique/01-Les-bases-des-reseaux/01-les-bases-du-reseau.md:
--------------------------------------------------------------------------------
1 | ---
2 | sidebar_position: 1
3 | ---
4 |
5 | # Les bases du réseau
6 |
7 | Que serait notre monde sans les réseaux ? Il serait probablement totalement différent !
8 |
9 | Aujourd'hui sans les réseaux, rien de ce que l'on connaît actuellement n'existerait. Ce constat s'applique tout particulièrement aux applications Web.
10 |
11 | Le fonctionnement des réseaux est un élément essentiel que tous les développeurs devraient connaitre, notamment les développeurs Backend.
12 |
13 | ## Ressources
14 |
15 | * [Texte - Une brève histoire des réseaux de télécommunications](https://interstices.info/une-breve-histoire-des-reseaux-de-telecommunications/)
16 |
17 | * [Vidéo - L'histoire des systèmes et réseaux de télécommunications](https://youtu.be/LKGkmbz57ds)
18 |
19 | * [Texte - Les 7 couches du modèle OSI](https://www.reseaux-telecoms.net/actualites/lire-les-7-couches-du-modele-osi-28083.html)
20 |
21 | * [Vidéo - Comprendre les couches OSI en 8 minutes !](https://youtu.be/YG57te3jqE8)
22 |
--------------------------------------------------------------------------------
/docs/01-Culture-generale-en-informatique/01-Les-bases-des-reseaux/02-tcp-ip.md:
--------------------------------------------------------------------------------
1 | ---
2 | sidebar_position: 2
3 | ---
4 |
5 | # TCP/IP
6 |
7 | > TCP/IP fut créé lorsque Bob Kahn, travaillant alors pour la DARPA, dut créer un protocole pour un réseau de commutation de paquets par radio. Bien qu'ayant été un ingénieur majeur de l'ARPANET, qui utilisait alors le protocole NCP, il ne put se résoudre à l'utiliser car celui-ci devait fonctionner avec l'équipement réseau IMP et en plus n'effectuait pas de contrôle des erreurs. Il créa donc avec Vinton Cerf un protocole permettant de relier les réseaux entre eux.
8 | >
9 | >La première publication de TCP/IP remonte à septembre 1973 lors d'une conférence de l'INWG3.
10 | >
11 | > -- [Wikipedia](https://fr.wikipedia.org/wiki/Suite_des_protocoles_Internet)
12 |
13 | ## Ressources
14 |
15 | * [Texte - TCP/IP | Comment Ça Marche](https://www.commentcamarche.net/contents/539-tcp-ip)
16 |
17 | * [Texte - Concevez votre réseau TCP/IP | OpenClassrooms](https://openclassrooms.com/fr/courses/6944606-concevez-votre-reseau-tcp-ip)
18 |
19 | * [Texte - Cours d'introduction à TCP/IP](https://laissus.developpez.com/tutoriels/cours-introduction-tcp-ip/)
20 |
21 | * [Vidéo - Les 4 couches TCP/IP | payants](https://www.elephorm.com/formation/code/webmaster/les-fondamentaux-du-webmaster/les-4-couches-tcpip)
22 |
23 | * [Livre - Apprenez le fonctionnement des réseaux TCP/IP | payants](https://www.elephorm.com/formation/code/webmaster/les-fondamentaux-du-webmaster/les-4-couches-tcpip)
24 |
25 | * [Livre - Apprenez le fonctionnement des réseaux TCP/IP | Openclassrooms](https://openclassrooms.com/fr/courses/857447-apprenez-le-fonctionnement-des-reseaux-tcp-ip)
26 |
--------------------------------------------------------------------------------
/docs/01-Culture-generale-en-informatique/01-Les-bases-des-reseaux/03-dhcp-dns.md:
--------------------------------------------------------------------------------
1 | ---
2 | sidebar_position: 3
3 | ---
4 |
5 | # Les protocole DHCP et DNS
6 |
7 | * DHCP
8 |
9 | > Dynamic Host Configuration Protocol (DHCP, protocole de configuration dynamique des hôtes) est un protocole réseau dont le rôle est d’assurer la configuration automatique des paramètres IP d’une station ou d'une machine, notamment en lui attribuant automatiquement une adresse IP et un masque de sous-réseau. DHCP peut aussi configurer l’adresse de la passerelle par défaut, des serveurs de noms DNS et des serveurs de noms NBNS (connus sous le nom de serveurs WINS sur les réseaux de la société Microsoft).
10 | >
11 | > -- [Wikipedia](https://fr.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol)
12 |
13 | * DNS
14 |
15 | > Le Domain Name System, généralement abrégé DNS, qu'on peut traduire en « système de noms de domaine », est le service informatique distribué utilisé pour traduire les noms de domaine Internet en adresse IP ou autres enregistrements. En fournissant dès les premières années d'Internet, autour de 1985, un service distribué de résolution de noms, le DNS a été un composant essentiel du développement du réseau.
16 | >
17 | > -- [Wikipedia](https://fr.wikipedia.org/wiki/Domain_Name_System)
18 |
19 |
20 | ## Ressources
21 |
22 | * [Texte - DNS (Système de noms de domaine) - Comment Ça Marche](https://www.commentcamarche.net/contents/518-dns-systeme-de-noms-de-domaine)
23 |
24 | * [Texte - Le service DNS - OpenClassrooms](https://openclassrooms.com/fr/courses/857447-apprenez-le-fonctionnement-des-reseaux-tcp-ip/857163-le-service-dns)
25 |
26 | * [Texte - Le protocole DHCP - Comment Ça Marche](https://www.commentcamarche.net/contents/517-le-protocole-dhcp)
27 |
28 | * [Texte - Le service DHCP - OpenClassrooms](https://openclassrooms.com/fr/courses/857447-apprenez-le-fonctionnement-des-reseaux-tcp-ip/856923-le-service-dhcp)
29 |
--------------------------------------------------------------------------------
/docs/01-Culture-generale-en-informatique/01-Les-bases-des-reseaux/04-client-serveur.md:
--------------------------------------------------------------------------------
1 | ---
2 | sidebar_position: 4
3 | ---
4 |
5 | # Client-Serveur
6 |
7 | > Le protocole ou environnement client–serveur désigne un mode de transaction (souvent à travers un réseau) entre plusieurs programmes ou processus : l'un, qualifié de client, envoie des requêtes ; l'autre, qualifié de serveur, attend les requêtes des clients et y répond.
8 | >
9 | > -- [Wikipedia](https://fr.wikipedia.org/wiki/Client-serveur)
10 |
11 | ## Ressources
12 |
13 | * [Texte - Qu'est-ce que le côté serveur ?](https://developer.mozilla.org/fr/docs/Learn/Server-side/First_steps)
14 |
--------------------------------------------------------------------------------
/docs/01-Culture-generale-en-informatique/01-Les-bases-des-reseaux/_category_.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "Les bases des réseaux",
3 | "position": 3
4 | }
5 |
--------------------------------------------------------------------------------
/docs/01-Culture-generale-en-informatique/01-histoire-de-l-informatique.md:
--------------------------------------------------------------------------------
1 | ---
2 | sidebar_position: 1
3 | ---
4 |
5 | # Histoire de l'informatique
6 |
7 | > Celui qui ne sait pas d'où il vient ne peut savoir où il va car il ne sait pas où il est. En ce sens, le passé est la rampe de lancement vers l'avenir.
8 | >
9 | > -- Otto von Bismarck
10 |
11 | ## Ressources
12 |
13 | * [Texte - Petite histoire de l’informatique](https://www.bm-lyon.fr/nos-blogs/fablab/l-idee-du-mois/article/petite-histoire-de-l-informatique)
14 |
15 | * [Vidéo - Une brève histoire de l'informatique, de 1945 à nos jours](https://youtu.be/dcN9QXxmRqk)
16 |
17 | * [Texte - Les femmes et l’informatique : histoire d’une exclusion, enjeux de la réappropriation](https://www.ritimo.org/Les-femmes-et-l-informatique-histoire-d-une-exclusion-enjeux-de-la)
18 |
19 | * [Texte - Des premiers ordinateurs aux machines d'aujourd'hui](https://www.superprof.fr/blog/la-bible-des-informaticiens/)
--------------------------------------------------------------------------------
/docs/01-Culture-generale-en-informatique/02-bases-d-internet/00-introduction.md:
--------------------------------------------------------------------------------
1 | ---
2 | sidebar_position: 0
3 | ---
4 |
5 | # Introduction
6 |
7 | Aujourd'hui, on sort le smartphone de notre poche, on ouvre une application, et on accède à des millions d'informations ! Pourtant, derrière cette action si banale et anodine se cache en réalité une somme de complexité hallucinante si on prend le temps de s'y intéresser !
8 |
9 | En temps que futur développeur web, comprendre les bases d'internet est plus que jamais un véritable atout !
10 |
--------------------------------------------------------------------------------
/docs/01-Culture-generale-en-informatique/02-bases-d-internet/01-les-reseaux-d-internet.md:
--------------------------------------------------------------------------------
1 | ---
2 | sidebar_position: 1
3 | ---
4 |
5 | # Les réseaux d'internet
6 |
7 | Internet c'est un réseau, ou plutôt ce sont DES réseaux.
8 |
9 | Prenez le temps de (re)découvrir l'histoire d'internet et de ces réseaux, ceux sont des connaissances fondamentales pour celui ou celle qui veux bosser dans le web !
10 |
11 |
12 | * [Texte - Au fait, pourquoi le web s’appelle le web ?](https://www.numerama.com/tech/470711-au-fait-pourquoi-le-web-sappelle-le-web.html)
13 |
14 | * [Texte - Internet : comprendre le travail d'un backbone](https://www.reseaux-telecoms.net/actualites/lire-internet-comprendre-le-travail-d-un-backbone-27929.html)
15 |
16 | * [Vidéo- Du télégraphe à Internet : l'incroyable histoire des câbles sous-marins](https://www.youtube.com/watch?v=j07V-P7-MBo)
17 |
18 | * [Vidéo - Internet, histoire d'une révolution](https://www.youtube.com/watch?v=5kXKPCqRbRI)
19 |
20 | * [Texte - Les réseaux de zéro](https://zestedesavoir.com/tutoriels/2789/les-reseaux-de-zero/)
21 |
--------------------------------------------------------------------------------
/docs/01-Culture-generale-en-informatique/02-bases-d-internet/02-un-serveur-web.md:
--------------------------------------------------------------------------------
1 | ---
2 | sidebar_position: 2
3 | ---
4 |
5 | # Un serveur web
6 |
7 | Un serveur est un dispositif informatique qui distribue des services. C'est un ordinateur (oui oui, comme celui que vous avez chez vous !) qui possède une carte réseau et un processeur très puissants. En règle général, son système d'exploitation est très souvent une distribution Linux, comme Debian connu pour sa stabilité, mais il peut aussi être sous Windows ou également tourner sur du matériel Apple et dans ce cas, son système d'exploitation sera OSX Server.
8 |
9 | Il dispose de logiciels comme Apache ou NGINX qui lui permettent de renvoyer une réponse HTTP dans le cas où quelqu'un le consulte depuis son navigateur. Mais il doit être également capable de stocker des données au travers de bases de données. Enfin, si on veut le sécuriser contre les méchants hackeurs, il faudra lui donner une "armure" virtuelle, et là encore certains logiciels existent afin de s'en prémunir.
10 |
11 | Bref, vous l'avez compris. Un serveur est capable de faire beaucoup de choses et c'est un noeud essentiel dans un réseau informatique. C'est lui qui s'occupe de distribuer les services auquels les autres ordinateurs / utilisateurs ont accès.
12 |
13 | * [Texte - Qu'est-ce qu'un serveur web ?](https://developer.mozilla.org/fr/docs/Learn/Common_questions/What_is_a_web_server)
--------------------------------------------------------------------------------
/docs/01-Culture-generale-en-informatique/02-bases-d-internet/03-les-adresses-ip-publique.md:
--------------------------------------------------------------------------------
1 | ---
2 | sidebar_position: 3
3 | ---
4 |
5 | # Une adresse IP publique
6 |
7 | Simplement, c'est un identifiant visible par tous.
8 |
9 | ## Ressources
10 |
11 | * [Texte - Qu'est-ce qu'une adresse IP publique ?](https://www.goto.com/fr/resources/glossary/public-ip-address)
--------------------------------------------------------------------------------
/docs/01-Culture-generale-en-informatique/02-bases-d-internet/_category_.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "Les bases d'Internet",
3 | "position": 4
4 | }
5 |
--------------------------------------------------------------------------------
/docs/01-Culture-generale-en-informatique/02-un-ordinateur.md:
--------------------------------------------------------------------------------
1 | ---
2 | sidebar_position: 2
3 | ---
4 |
5 | # Un ordinateur ?
6 |
7 | Au cœur de notre utilisation de l'informatique, il trône sur nos bureaux, il est notre outil de travail, l'ordinateur est un élément important de notre quotidien, et encore plus dans notre quotidien de dev !
8 |
9 | En comprendre, succinctement et en synthèse, le mode de fonctionnement reste des connaissances très utiles 😀
10 |
11 | ## Ressources
12 |
13 | * [Cour en ligne - Montez un PC](https://openclassrooms.com/fr/courses/7210326-montez-un-pc)
14 |
15 | * [Texte - Matériel informatique: les composants de l'ordinateur](https://www.cnetfrance.fr/produits/materiel-informatique-les-composants-de-l-ordinateur-39769700.htm)
16 |
17 | * [Vidéo - COMPRENDRE LES ÉLÉMENTS D'UN PC : PROCESSEUR, CARTE GRAPHIQUE, RAM... 💻](https://youtu.be/s7Dip-1u_gM)
18 |
--------------------------------------------------------------------------------
/docs/01-Culture-generale-en-informatique/_category_.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "Culture générale en Informatiquee",
3 | "position": 1
4 | }
5 |
--------------------------------------------------------------------------------
/docs/02-Connaissances-de-base/01-bases-algorithme/01-variables-operateurs-flux-entree-et-sortie.md:
--------------------------------------------------------------------------------
1 | ---
2 | sidebar_position: 1
3 | ---
4 |
5 | # Variables, opérateurs et flux d'entrée/sortie
6 |
7 | > En informatique, les variables sont des symboles qui associent un nom (l'identifiant) à une valeur.
8 |
9 | ## Ressources
10 |
11 | * [Texte - Cours pour apprendre les bases de l'algorithmique](https://algo.developpez.com/tutoriels/initiation/#LIII-C)
12 |
13 | * [Vidéo - L'algorithme (1/10): les variables](https://www.youtube.com/watch?v=EPOs1Fln05w)
14 |
15 | * [Vidéo - Algorithmique (3/14)- les opérateurs](https://www.youtube.com/watch?v=ae-2hgbiY6s)
16 |
17 | * [Texte - Flux d'entrée/sortie](http://www.lephpfacile.com/manuel-php/features.commandline.io-streams.php)
18 |
--------------------------------------------------------------------------------
/docs/02-Connaissances-de-base/01-bases-algorithme/02-logique-booleenne-et-structures-conditionnelles.md:
--------------------------------------------------------------------------------
1 | ---
2 | sidebar_position: 1
3 | ---
4 |
5 | # Logique booléenne et structures conditionnelles
6 |
7 | > Ce qui rend la logique possible, c'est l'existence en nos esprits de notions générales, notre faculté de concevoir une classe et de
8 | désigner les individus qui en sont membres par un même nom. La théorie de la logique est ainsi intimement liée à celle du langage.
9 | Une entreprise qui réussirait à exprimer des propositions logiques par des symboles, dont les lois de combinaison seraient fondées sur les lois des opérations mentales qu'elles représentent, serait, du même coup, un pas vers un langage philosophique.
10 | >
11 | > -- George Boole
12 |
13 | ## Ressources
14 |
15 | * [Vidéo - George Boole, génie des maths](https://www.youtube.com/watch?v=68RG57jOF0c)
16 |
17 | * [Vidéo - L'algorithmique (3/10): Les test](https://www.youtube.com/watch?v=M91qKvGIb1g&t=2s)
18 |
19 | * [Vidéo - L'algèbre de Boole - SI - 1ère - Les Bons Profs](https://www.youtube.com/watch?v=C5z_EWnMjOI)
20 |
21 | * [Texte - Les structures Conditionnelles](https://www.technologuepro.com/informatique/chap3_algorithme.htm)
22 |
--------------------------------------------------------------------------------
/docs/02-Connaissances-de-base/01-bases-algorithme/03-les-boucles.md:
--------------------------------------------------------------------------------
1 | ---
2 | sidebar_position: 1
3 | ---
4 |
5 | # Les boucles
6 |
7 | > Les premiers 90% du code prennent les premiers 90% du temps de développement. Les 10% restants prennent les autres 90% du temps de développement.
8 | >
9 | > -- Tom Cargill
10 |
11 | ## Ressources
12 |
13 | * [Texte - Les boucles](http://cours.pise.info/algo/boucles.htm)
14 |
15 | * [Texte - Le calcul itératif](http://www.jybaudot.fr/Programmation/boucles.html)
16 |
17 | * [Vidéo - L'algorithmie (4/10) Les boucles](https://www.youtube.com/watch?v=aYXj0qpUL-Y)
18 |
19 | * [Vidéo - La boucle POUR](https://www.youtube.com/watch?v=K27WNwYbCP8)
20 |
21 | * [Vidéo - La boucle TANT QUE](https://www.youtube.com/watch?v=6fvBZCu3GkU)
22 |
--------------------------------------------------------------------------------
/docs/02-Connaissances-de-base/01-bases-algorithme/_category_.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "Les bases de l'algorithme",
3 | "position": 1
4 | }
5 |
--------------------------------------------------------------------------------
/docs/02-Connaissances-de-base/02-les-grands-principes-de-developpement/00-introduction.md:
--------------------------------------------------------------------------------
1 | ---
2 | sidebar_position: 0
3 | ---
4 |
5 | # Introduction
6 |
7 | A écrire
8 |
9 | (Les design pattern, SOLID, DRY etc ...)
--------------------------------------------------------------------------------
/docs/02-Connaissances-de-base/02-les-grands-principes-de-developpement/_category_.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "Les grands principes du Developpement",
3 | "position": 2
4 | }
5 |
--------------------------------------------------------------------------------
/docs/02-Connaissances-de-base/03-bases-api/00-introduction.md:
--------------------------------------------------------------------------------
1 | ---
2 | sidebar_position: 0
3 | ---
4 |
5 | # Introduction
6 |
7 | ## Qu'est-ce qu'une API ?
8 |
9 | > En informatique, une interface de programmation d’applications ou interface de programmation applicative (souvent désignée par le terme API pour Application Programming Interface) est un ensemble normalisé de classes, de méthodes, de fonctions et de constantes qui sert de façade par laquelle un logiciel offre des services à d'autres logiciels.
10 | >
11 | > -- [wikipedia](https://fr.wikipedia.org/wiki/Interface_de_programmation_d%27applications)
--------------------------------------------------------------------------------
/docs/02-Connaissances-de-base/03-bases-api/01-api-rest.md:
--------------------------------------------------------------------------------
1 | ---
2 | sidebar_position: 1
3 | ---
4 |
5 | # Les APIs REST
6 |
7 | Une API REST (également appelée API RESTful) est une interface de programmation d'application (API ou API web) qui **respecte** les contraintes du style d'architecture REST et permet d'interagir avec les services web RESTful.
8 |
9 | L'architecture REST a été créée par l'informaticien Roy Fielding.
10 |
11 | ## Ressources
12 | * [Cours en ligne - Débutez avec les API REST](https://openclassrooms.com/fr/courses/6031886-debutez-avec-les-api-rest)
13 | * [Cours en ligne - Adoptez les API REST pour vos projets web](https://openclassrooms.com/fr/courses/6573181-adoptez-les-api-rest-pour-vos-projets-web)
--------------------------------------------------------------------------------
/docs/02-Connaissances-de-base/03-bases-api/_category_.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "Les bases des APIs",
3 | "position": 3
4 | }
5 |
--------------------------------------------------------------------------------
/docs/02-Connaissances-de-base/_category_.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "Connaissances de base",
3 | "position": 2
4 | }
5 |
--------------------------------------------------------------------------------
/docs/03-html-et-css/01-html.md:
--------------------------------------------------------------------------------
1 | ---
2 | sidebar_position: 1
3 | ---
4 |
5 | # HTML HyperText Markup Language
6 |
7 | >Le HTML créé en 1993, est le langage de balisage conçu pour représenter les pages web. Ce langage permet d'écrire de l'hypertexte, de structurer sémentiquement la page web, mettre en forme le contenu de la page, de créer des formulaires de saisie, d'inclure des ressources multimédias (images, vidéos, programmes informatiques) et de créer des documents interopérables avec des équipements très variés de manière conforme aux exigences de l'accessibilité du web (WAI).Le HTML est souvent utilisé conjointement avec le langage de programmation JavaScript et des feuilles de style en cascade (CSS).
8 |
9 | ## Ressources
10 |
11 | * [Texte - HTML (HyperText Markup Language)- MDN Web Docs](https://developer.mozilla.org/fr/docs/Web/HTML)
12 |
13 | * [Texte - HTML Tutorial- W3School](https://www.w3schools.com/html/default.asp)
14 |
15 | * [Formation - Apprendre l'HTML- Grafikart](https://grafikart.fr/formations/html)
16 |
17 | * [Formation - Apprenez à créer votre site web avec HTML5 et CSS3- OpenClassRooms](https://openclassrooms.com/fr/courses/1603881-apprenez-a-creer-votre-site-web-avec-html5-et-css3)
18 |
--------------------------------------------------------------------------------
/docs/03-html-et-css/02-css.md:
--------------------------------------------------------------------------------
1 | ---
2 | sidebar_position: 2
3 | ---
4 |
5 | # Feuilles de style en cascade
6 |
7 | >Les Cascading Style Sheets (CSS) forment un langage informatique qui décrit la présentation des documents HTML et XML. Introduit au milieu des années 1990, le CSS devient couramment utilisé dans la conception de sites web.
8 |
9 | ## Ressources
10 |
11 | * [Texte - CSS Tutorial](https://www.w3schools.com/css/default.asp)
12 |
13 | * [Texte - CSS : Feuilles de style en cascade](https://developer.mozilla.org/fr/docs/Web/CSS)
14 |
15 | * [Formation - Apprenez à créer votre site web avec HTML5 et CSS3](https://openclassrooms.com/fr/courses/1603881-apprenez-a-creer-votre-site-web-avec-html5-et-css3)
16 |
17 | * [Formation - Découverte du CSS](https://grafikart.fr/formations/css)
--------------------------------------------------------------------------------
/docs/03-html-et-css/_category_.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "HTML/CSS",
3 | "position": 3
4 | }
5 |
--------------------------------------------------------------------------------
/docs/04-php/00-introduction.md:
--------------------------------------------------------------------------------
1 | ---
2 | sidebar_position: 0
3 | ---
4 |
5 | # Introduction
6 | a compléter
7 |
8 | Élément d'histoire
9 | -------------------
10 |
11 | * PHP/FI: créé en 1995 par Rasmus Lerdorf. Bibliothèque de scripts fonctionnant sous PERL (Personal
12 | Home Page Tools / Forms Interpreter) puis implémentation en C
13 | * 1997 : plusieurs milliers d’utilisateurs
14 | * PHP 3.0 : refonte de PHP/FI 2.0 par Andi Gutsman et Zeef Suraski (juin 1998: PHP Hypertext
15 | Preprocessor)
16 | * PHP 4.0 : nouveau moteur PHP (mai 2000)
17 | * 2003 : PHP 5.0, avec un nouveau moteur
18 | * 2005 : PHP 5.1, Arriver du PDO.
19 | * 2009 : PHP 5.2, Correction de bug.
20 | * 2009 : PHP 5.3, Les espaces de noms, Phar.
21 | * 2012 : Sortie de Composer.
22 | * 2012 : PHP 5.4, Les traits, [] en plus de Array(), Serveur Web intégré.
23 | * 2013 : PHP 5.5, Finnaly, les générateurs.
24 | * 2014 : PHP 5.6, Fonctions à nombre d'arguments variable.
25 | * 2015 : PHP 7, Spaceships <=> , Return Type Declarations & Scalar Type Hints ...
26 | * 2016 : PHP 7.1, Support des types nullable, return type Void...
27 | * 2017 : PHP 7.2, SimpleXml , object (mot réservé), Mcrypt supprimé
28 | * 2018 : PHP 7.3, is_countable(),array_key_first() et array_key_last()
29 | * 2019 : PHP 7.4, Spread Operator dans l’expression d’un array,short closures...
30 | * 2020 : PHP 8.0, Arguments nommés, Promotion de propriétés de constructeur, match ...
31 | * 2021 : PHP 8.1 pas encore de release
32 |
33 | PHP est un langage assez jeune.
34 |
35 | **PHP/FI a été créé en 1995 par Rasmus Lerdordf:** à l’origine il s’agissait d’une bibliothèque
36 | fonctionnant sous PERL que Rasmus avait développé pour son propre site web personnel (il voulait
37 | savoir qui venait consulter son CV). PHP/FI signifiait Personal Home Page Tools / Forms Interpreter.
38 | Petit à petit, la bibliothèque PERL s’est muée en une implémentation directe en C, afin d’augmenter
39 | les performances et les possibilités.
40 |
41 | En 1997, il y avait des milliers d’utilisateurs de PHP. PHP/FI 2.0 vit le jour en novembre 1997.
42 | Andi Gutsman et Zeef Suraski, fondateurs de Zend, procédèrent à une refonte complète de PHP/FI 2.0:
43 | le but était de pouvoir écrire des applications d’e-commerce plus importantes. Ils élaborèrent ainsi
44 | PHP 3.0, que Rasmus rejoignit. La principale fonction de PHP 3.0 était justement la possibilité
45 | d’être étendu par… de nouvelles fonctions: n’importe quel développeur pouvait créer ses propres
46 | modules, les ajouter à PHP grâce à une API modulaire et les partager avec l’ensemble de la
47 | communauté. PHP devint alors : **PHP Hypertext Preprocessor.**
48 | La version 4.0 de PHP apparut en mai 2000. Andi et Zeev ont ici de nouveau totalement réécrit le
49 | moteur de PHP, afin d’améliorer… ses performances. Depuis 2003, PHP en est à sa version 5.0. PHP 5 a
50 | l’ambition d’être plus professionnel et plus simple. La programmation objet a fait ainsi son
51 | apparition, grâce à un « nouveau moteur » PHP (Zend engine 2). Depuis PHP 7, la sortie d'une
52 | release est régulière, chaque année sort une nouvelle version.
53 |
54 |
55 | Principe de base.
56 | -----------------
57 |
58 | * A l’origine, un langage de script pour serveurs web
59 | * À l’origine, PHP était un langage de script conçu spécifiquement pour agir sur les serveurs
60 | web: il s’agit d’ajouter quelques lignes de PHP à une page HTML pour la rendre « dynamique »,
61 | c’est-à-dire que c’est le web serveur qui vient écrire du code HMTL dans la page.
62 | * Actuellement: PHP 8.0 (16 novembre 2021).
63 | * Mais PHP a beaucoup évolué jusqu’à la version 5, qui est très complète, et qui ont fait de PHP
64 | une vraie plateforme de développement professionnelle.
65 | * Licence opensource, avec communauté dynamique
66 | * PHP fonctionne en licence opensource: sa rediffusion, son utilisation et sa modification sont
67 | libres et gratuites. Le site officiel est http://www.php.net, la communauté des développeurs
68 | PHP est très dynamique: l’annonce d’une faille de sécurité implique généralement un correctif
69 | dans la journée.
70 | * Langage interprété: langage intermédiaire (bytecode) créé à chaque exécution
71 | * PHP est un langage interprété: les scripts sont convertis en langage intermédiaire (bytecode)
72 | avant d’être exécuté. Mais ce code intermédiaire est recréé à chaque exécution et ne peut pas
73 | être diffusé. Il n’y a donc pas de « compilation ».
74 | * Langage facile ? (Plus vraiment correcte).
75 | * **PHP** est un langage qui s’apprend **rapidement**. Cependant, **la maîtrise plus complète du
76 | langage est difficile.**
77 |
78 | L’utilisation de PHP
79 | ********************
80 |
81 | * Couplée à un web serveur
82 | * Ligne de commande
83 | * Application graphique (à vérifier)
84 |
85 | Architecture
86 | **************
87 |
88 | * Souvent LAMP : Linux, Apache, MySQL, PHP
89 | * Mais n’importe quel OS (Win, Unix/Linux…)
90 | * D’autres web serveur (Nginx,IIS…)
91 | * D’autres bases de données (SQLite, PostgreSQL, Oracle, SqlSrv)
92 |
93 | L’utilisation principale du langage PHP reste le traitement et la création de pages web au sein d’un
94 | serveur web. PHP apparaît alors comme une série de « scripts ». Il est cependant possible d’utiliser
95 | PHP en dehors de tout serveur web :
96 | On peut utiliser PHP en ligne de commande. Il faut faire appel à l’exécutable PHP. On peut utiliser
97 | PHP comme une application graphique. II faut utiliser l’extension qui permet de produire une
98 | application graphique traditionnelle, et on obtient ainsi une application « standalone ». Cette
99 | extension est « GTK ».
100 |
101 | L’architecture « LAMP » est emblématique du monde opensource et est souvent citée. PHP ne s’y réduit
102 | pas, cependant. LAMP est utilisé pour : « Linux », « Apache », « MySQL », « PHP ». En effet, PHP
103 | fonctionne sur de nombreux OS : il fonctionne sur sous Windows (toutes versions supérieures à Win95)
104 | , sous Unix (Solaris), sous Linux, sous MacOS X, OpenBSD, FreeBSD… PHP peut être utilisé avec
105 | Apache, mais il peut également être utilisé avec d’autres serveurs web (IIS, par exemple). Quant aux
106 | bases de données, PHP 5 contient des connexions natives vers la plupart des bases de données (par
107 | exemple, Microsoft SQL server, Oracle, PostgreSQL, MySQL, Sybase, SQLite, FilePro, Informix,
108 | Interbase, mSQL, dBase, Empress…) PHP 5 propose même une base de données intégrée: SQLite. Depuis
109 | PHP 5.1, l’extension PDO (PHP Data Object) permet même d’avoir une abstraction vis-à-vis des bases
110 | données: pour gérer une nouvelle base de données, il suffit d’écrire le bon connecteur; les données
111 | sont ensuite transmises à la « couche » PDO.
112 |
113 | Quelques liens :
114 | ****************
115 |
116 | **Site Officiel de PHP**
117 | http://php.net
118 |
119 | **Communauté francophone PHP :**
120 |
121 | * http://developpez.com
122 | * http://afup.org
123 | * http://phpfrance.com
124 | * http://fr.php.net
125 |
126 |
--------------------------------------------------------------------------------
/docs/04-php/01-Installation.md:
--------------------------------------------------------------------------------
1 | Installation PHP
2 | ================
3 |
4 |
5 | Choix de plateforme :
6 | --------------------
7 |
8 | * Prendre la configuration « classique »: PHP en mode client serveur, associé à un serveur web
9 | * Choisir un web serveur: **Apache**, Nginx, IIS....
10 | * Choisir une plateforme système : Windows, Linux, OSX
11 |
12 | Installation de PHP
13 | -------------------
14 |
15 | Deux manières d’installer PHP client-serveur orienté « web » :
16 |
17 | * Utiliser une plateforme « pré-installée », comme :
18 | - WAMP http://www.wampserver.com/
19 | - XAMPP http://www.apachefriends.org/fr/xampp.html
20 | - Laragon http://www.laragon.org/ (le plus complet; Git, Terminal, MySQL, PHP, Apache,
21 | PhpMyAdmin, composer ...)
22 | - Mamp https://www.mamp.info/en/downloads/ (OsX)
23 |
24 | Cela représente à chaque fois un environement complet (serveur Web, PHP, Base de données)
25 |
26 | * Installer les composants « manuellement », comme :
27 | - PHP
28 | - Apache
29 | - MySQL
30 | - PhpMyAdmin
31 | - Composer
32 | - Git
33 | - Terminal
34 | - ...
35 |
36 | Installation manuelle de PHP pour Windows
37 | ------------------------------
38 |
39 | * Télécharger la dernière version sur http://www.php.net
40 | * PHP8.0 est disponible en fichier ZIP
41 | * Décompressez-le (souvent c:\php\)
42 | * Rendez le fichier de configuration (php.ini) « accessible » (PATH)
43 | * Rendez le fichier php.exe « accessible » via les variables d'environements.
44 |
45 | .. image:: images/download.png
46 |
47 | **Test d’une installation PHP**
48 | Ecrire un mini script et le sauver (phpinfo.php)
49 |
50 | .. code-block:: php
51 |
52 |
55 |
56 |
57 |
58 | Installation Debian/Ubuntu/Mint...
59 | ----------------------------------
60 |
61 | Pour avoir les dernières versions de **PHP** , voir le projet [deb.sury.org](https://deb.sury.org/)
62 |
63 | Pour **Debian**
64 |
65 | Ajouter les dépôts **Debian** de **deb.sury.org**
66 |
67 | .. code-block:: bash
68 |
69 | curl -s https://packages.sury.org/php/README.txt -o install_php.sh
70 | sh install_php.sh
71 |
72 | A cette [endroit](https://packages.sury.org/php/pool/main/p/) on peut avoir toutes les versions de **PHP** disponibles.
73 |
74 | Pour **Ubuntu/Mint**
75 |
76 | Ajouter les dépôts **PPA** de **deb.sury.org**
77 |
78 | .. code-block:: bash
79 |
80 | sudo add-apt-repository ppa:ondrej/php
81 | sudo apt update
82 |
83 | .. code-block:: bash
84 |
85 | sudo apt-get install php8.0
86 |
87 | Installation Fedora/Viperr
88 | ---------------------------
89 | Après avoir installé les dépôt de rémi
90 |
91 | .. code-block:: bash
92 |
93 | sudo dnf install php8.0
94 |
95 | Installation Red-Hat/CentOs/Scientific Linux
96 | ---------------------------------------------
97 | Après avoir installé les dépôt de rémi
98 |
99 | .. code-block:: bash
100 |
101 | sudo yum install php8.0
102 |
103 | Installation OSX
104 | ---------------------------------------------
105 | PHP est natif sur OSX.
106 |
107 |
108 | Environnement de développement
109 | -------------------------------
110 |
111 | PHP offre un environnement de développement très facile à mettre en place grâce à la commande :
112 |
113 | .. code-block:: bash
114 |
115 | php -S localhost:8080
116 |
117 | Environnement de production
118 | ---------------------------
119 | Toutes les installations décrite ci-dessus sont suffisantes pour une installation de PHP. Mais
120 | celle-ci est limitée par les capacités de votre système.
121 |
122 | Pour être au plus proche des environements de production, il est recommandé d'utiliser des outils comme :
123 |
124 | * Docker (Voire chapitre sur Docker).
125 | * Vagrant (Voir chapitre sur Vagrant).
126 |
127 |
--------------------------------------------------------------------------------
/docs/04-php/_category_.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "Découvrir PHP",
3 | "position": 4
4 | }
5 |
--------------------------------------------------------------------------------
/docs/04-php/xx-langage-php.md:
--------------------------------------------------------------------------------
1 | ---
2 | sidebar_position: 1
3 | ---
4 |
5 | # le langage php
6 |
7 | * [Vidéo - Le monde des conteneurs d'injection de dépendances - Lior CHAMLA](https://www.youtube.com/watch?v=W6y9mXDgTiE)
8 |
9 | A écrire
10 |
--------------------------------------------------------------------------------
/docs/05-bases-de-symfony/01-paradigme-mvc.md:
--------------------------------------------------------------------------------
1 | ---
2 | sidebar_position: 1
3 | ---
4 |
5 | # Le paradigme MVC
6 |
7 | Le paradigme MVC est un design pattern bien connu dans les applications Web. Le ```M``` signifie le modèle, le ```V``` la vue et le ```C``` le contrôleur C'est un modèle de conception qui a pour but de mieux organiser le code de l'application en le séparant en 3 couches abstraites distinctes.
8 |
9 | Imaginez que vous souhaitiez réaliser une page qui affiche une liste de produits venant d'une base de donnée. Vous pourriez techniquement tout faire dans un seul et unique fichier PHP. Mais ce code va être difficile à maintenir et à debugger.
10 |
11 | On préférera le découper en petits morceaux qui auront chacun leur responsabilité. En suivant un modèle MVC, on aura alors par exemple 3 fichiers disctincts.
12 |
13 | * le premier traitera la partie modèle, c'est à dire le code qui va intéragir avec les données, dans notre cas le code qui va se connecter à la base de données et récupérer les produits.
14 |
15 | * un second fichier traitera la vue, c'est à dire le côté visuel. On utilisera par exemple un language de templating pour pouvoir écrire dans notre code HTML une boucle qui itèrerait sur chaque produit pour les afficher dans des petites cartes.
16 |
17 | * le troisième fichier s'occupera de la couche contrôleur, c'est à dire le code qui ferait le lien entre les deux autres couches. Lorsque le routeur va intercepter une requète, il va la diriger vers un contrôleur associé. C'est ce contrôleur qui fera appel au modèle pour récupérer les produits et qui utilisera un moteur de template qui prendra en entrée la vue et les données qu'on a récupérées depuis le modèle pour fabriquer la page de sortie, à savoir notre liste de produits.
18 |
19 | Dans notre exemple, nous avons trois fichiers, mais il faut imaginer ces couches comme abstraites. Ainsi, dans Symfony, plusieurs types de fichiers entrent dans la couche ```modèle``` (entitées, repository et manager), on peut faire rentrer le routeur dans la couche ```contrôleur``` et le JavaScript que vous ajouterez pour dynamiser la page rentrera dans la couche ```Vue```.
20 |
21 | ## Ressources
22 |
23 | * [Texte - Structurer votre code avec le pattern MVC](https://apprendre-la-programmation.net/structurer-code-pattern-mvc/)
24 |
25 | * [Texte - PHP Orienté Objet - Le MVC Épisode 1](https://nouvelle-techno.fr/articles/live-coding-php-oriente-objet-le-mvc)
26 |
27 | * [Texte - PHP Orienté Objet - Le MVC Épisode 2](https://nouvelle-techno.fr/articles/live-coding-php-oriente-objet-le-mvc-episode-2)
28 |
29 | * [Vidéo - L'architecture MVC](https://www.youtube.com/watch?v=6v8LGDQL9Vs)
30 |
31 | * [Vidéo - Créer un MVC](https://www.youtube.com/watch?v=a3NZtp3FJEE)
--------------------------------------------------------------------------------
/docs/05-bases-de-symfony/_category_.json:
--------------------------------------------------------------------------------
1 | {
2 | "label": "Les bases de Symfony",
3 | "position": 5
4 | }
5 |
--------------------------------------------------------------------------------
/docs/06-symfony/00-introduction.md:
--------------------------------------------------------------------------------
1 | ---
2 | sidebar_position: 0
3 | ---
4 |
5 | # Introduction
6 |
7 | Symfony est un projet initié par Fabien Potencier en 2005. Il compte aujourd'hui plus de 3000 contributeurs. Souvent présenté comme un framework PHP, c'est en fait un ensemble de composants indépendants, qui, associés les uns aux autres, permet de construire un framework.
8 |
9 | En effet, chaque composant peut être utilisé indépendamment dans n'importe quel projet PHP. Ainsi, quand on installe Symfony, on peut installer une version minimale du projet, avec juste les composants de base, puis installer des composants supplémentaires au fur et à mesure que le projet grandit. On peut aussi installer une version ```Webapp``` qui intègre les principaux composants nécessaires à une application web.
10 |
11 | En 2022, Symfony est en version 6 et fonctionne avec PHP 8. Une version majeure est publiée tous les deux ans. La retrocompatibilité est un des objectif de la communauté.
12 |
13 | Avec Laravel, Symfony fait partie des deux framework PHP les plus utilisés dans le monde. Symfony est particulièrement apprécié en France et de nombreuses entreprises l'utilisent.
14 |
15 | La documentation est très complète et particulièrement bien faite. Chaque notion clef est abordée sous la forme d'un petit tutoriel, avec à la fin des liens vers des notions plus complexes.
16 |
17 | Symfony s'intègre avec les technologies de votre choix : vous pouvez travailler avec n'importe quelle base de données ou n'importe quel framework frontend. Vous pouvez écrire des tests unitaires, faire de la contenairisation, déployer le projet facilement, etc.
18 |
19 | Il existe un grand nombre de ressources sur Internet, dont beaucoup en français, notamment des tutoriels vidéos expliquant les notions de bases comme les plus avancées.
20 |
21 |
--------------------------------------------------------------------------------
/docs/06-symfony/01-installation.md:
--------------------------------------------------------------------------------
1 | ---
2 | sidebar_position: 1
3 | ---
4 |
5 | # Installation
6 |
7 | Pour pouvoir installer Symfony, il vous faut au minimum deux choses : ```PHP``` et ```Composer```. Composer va servir à installer Symfony et à gérer les dépendances. Pour vérifier que vous êtes prêt à installer Symfony, tapez les deux commandes suivantes :
8 |
9 | ```
10 | php -v
11 | ```
12 | Cette commmande vous donne la version de PHP. Pour installer la dernière version de Symfony, vous devez avoir au minimum la version 8.0 de PHP.
13 |
14 | ```
15 | php -V
16 | ```
17 | Cette commmande vous donne la version de Composer.
18 |
19 | Si les deux commandes fonctionnent sans message d'erreur, vous êtes prêt à installer Symfony.
20 |
21 | Bien qu'il soit possible d'installer Symfony directement avec Composer, il est recommandé d'utiliser ```Symnfony CLI```. Cet exécutable va permettre d'installer Symfony, mais également d'utiliser un serveur interne pour le développement, installer un certificat auto-signé pour gérer le HTTPS, utiliser plus facilement les commandes Symfony, etc.
22 |
23 | Pour le télécharger, rendez-vous [ici](https://symfony.com/download). Une fois que l'outil est installé, vérifiez que la commande suivante fonctionne.
24 |
25 | ```
26 | symfony -v
27 | ```
28 |
29 | Vous pouvez maintenant installer un projet Symfony en tapant la commande suivante :
30 |
31 | ```
32 | symfony new nom_du_projet
33 | ```
34 |
35 | Cette commande installera un projet Symfony avec juste le minimum requis. Si vous souhaitez installer un projet de type application Web, avec les principaux composants disponibles, tapez la commande suivante :
36 |
37 | ```
38 | symfony new --webapp nom_du_projet
39 | ```
--------------------------------------------------------------------------------
/docs/06-symfony/02-routage.md:
--------------------------------------------------------------------------------
1 | ---
2 | sidebar_position: 2
3 | ---
4 |
5 | # Le routage
6 |
7 | Dans une application Symfony, et plus généralement dans une application Web, l'utilisateur va taper une adresse dans son navigateur ou cliquer sur un lien qui pointe vers cette adresse. Le routage consiste à orienter l'utilisateur vers la page demandée, un peu comme une gare de triage. On expliquera par exemple que si l'utilisateur tape ```/resources/A``` ou clique sur un lien qui pointe vers cette adresse, on doit lui renvoyer la ressource A. Les routes sont les différentes adresses de votre application.
8 |
9 | Dans Symfony, il y a deux manières de définir les routes de l'application. On peut passer par un fichier qui liste les différentes routes et leur associe une méthode d'un contrôleur qui va se charger de fournir la ressource correspondante. Mais généralement, on utilisera ce qu'on appelle des annotations ou des attributs PHP8. Ce sont des sortes de commentaires qu'on écrit au dessus d'une méthode dans un contrôleur.
10 |
11 | Exemple :
12 |
13 | ```
14 | class HomeController extends AbstractController
15 | {
16 | #[Route('/home', name: 'home')]
17 | public function index(): Response
18 | {
19 | return $this->render('home/index.html.twig');
20 | }
21 |
22 | }
23 | ```
24 |
25 | Ici, on explique que lorsqu'on sera à l'adresse ```/home```, il faudra appeler la méthode ```index``` dans le contrôleur ```HomeController```. Dans cette exemple, cette méthode renverra une page HTML, écrite en Twig, définie dans un fichier ```index.html.twig``` et disponible dans le dossier ```/templates/home```.
26 |
27 | On peut aussi passer par un fichier qui liste toutes les routes de l'application. En reprenant le même exemple, il faudra éditer le fichier ```routes.yaml``` disponible dans le dossier ```config```.
28 |
29 | ```
30 | home
31 | path : /home
32 | controller : App\Controller\HomeController::index
33 | ```
34 |
35 | ## Ressources
36 |
37 | * [Apprendre à gérer les routes avec Symfony](https://grafikart.fr/tutoriels/routing-1065#autoplay)
38 |
--------------------------------------------------------------------------------
/docs/06-symfony/03-controleurs.md:
--------------------------------------------------------------------------------
1 | ---
2 | sidebar_position: 3
3 | ---
4 |
5 | # Les contrôleurs
6 |
7 | Dans une application Symfony, et plus généralement dans une application qui suit le modèle MVC, les contrôlleurs (C) sont des bouts de code (généralement des classes) qui sont chargés de faire le lien entre le modèle (M) et la vue (V). Ce sont des méthodes de ces classes qui sont appelées par le routeur lorsqu'une requête arrive.
8 |
9 | Prenons un exemple :
10 |
11 | ```
12 | use App\Repository\PostRepository;
13 | use Symfony\Component\HttpFoundation\Response;
14 | use Symfony\Component\Routing\Annotation\Route;
15 | use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
16 |
17 | class BlogController extends AbstractController
18 | {
19 | #[Route('/blog/', name: 'blog_index')]
20 | public function index(PostRepository $repo): Response
21 | {
22 | $posts = $repo->findAll();
23 | return $this->render('blog/index.html.twig', [
24 | 'posts' => $posts
25 | ]);
26 | }
27 | }
28 | ```
29 |
30 | Dans le code ci-dessus, on définit une classe ```BlogController```. Elle peut hériter du ```AbstractController``` si on veut qu'elle puisse renvoyer une vue (ce qui est le cas ici). A l'intérieur, nous définissons une méthode ```index```, qui sera chargée de renvoyer la liste des articles d'un blog. Ici, elle est reliée à une route nommée ```blog_index``` qui répond à l'adresse ```/blog```.
31 |
32 | Dans les paramètres de cette methode, nous pouvons nous faire liver des services. Ici, nous injectons le service ```PostRepository```. Attention, cette injection en paramètre d'un méthode ne fonctione que dans les méthodes des contrôleurs.
33 |
34 | Dans cette méthode, nous faisons appel à la méthode ```findAll()``` du service ```BlogRepository```, qui va nous renvoyer l'ensemble des articles, et nous l'assignons à une variable ```$posts```
35 |
36 | Puis nous retournons une vue située dans ```templates/blog/index.html.twig``` à laquelle nous passons cette variable, dans un tableau associatif en second paramètre de la méthode ```render``` disponible sur la classe.
37 |
38 | ## Ressources
39 |
40 | * [Apprendre à créer des contrôleurs avec Symfony par Grafikart](https://grafikart.fr/tutoriels/routing-1065#autoplay)
41 |
42 | * [Apprendre à créer des contrôleurs avec Symfony par Nouvelle-Techno.fr](https://www.youtube.com/watch?v=X_mNHTGJb5M&ab_channel=NouvelleTechno)
43 |
44 |
--------------------------------------------------------------------------------
/docs/06-symfony/04-twig.md:
--------------------------------------------------------------------------------
1 | ---
2 | sidebar_position: 4
3 | ---
4 |
5 | # Twig
6 |
7 | Twig est un langage qui va nous permettre de générer des pages HTML **dynamiques**. Il s'appuie sur le language HTML classique mais rajoute une syntaxe supplémentaire. Cette syntaxe est simple et ne gènera pas un intégrateur qui ne connait pas le Twig.
8 |
9 | Prenons un exemple :
10 |
11 | Dans un contrôleur, on demande à Symfony de générer une page HTML en lui passant le chemin vers un template Twig et éventuellement des données à lui passer en second paramètre.
12 |
13 | ```
14 | #[Route('/hello', name: 'presentation')]
15 | public function presentation(): Response
16 | {
17 | return $this->render('presentation/index.html.twig', [
18 | 'firstname' => 'John',
19 | 'age' => 34,
20 | 'hobbies' => ['HTML', 'CSS', 'PHP']
21 | ]);
22 | }
23 | ```
24 |
25 | Ici, le contrôleur fait appel à la méthode ```render```, en lui passant en premier paramètre le chemin du fichier Twig ```index.html.twig``` (ici dans le répertoire ```templates/presentation```).
26 |
27 | On lui passe en second paramètre les données qu'on va utiliser dans le template sous la forme d'un tableau associatif.
28 |
29 | Le fichier ```index.html.twig``` va alors ressembler à ceci :
30 |
31 | ```
32 |
Votre prénon est {{ firstname }}
33 |
34 | {% if age >= 18 %}
35 |
Vous êtes majeur
36 | {% else %}
37 |
Vous êtes mineur
38 | {% endif %}
39 |
40 | Vos hobby sont :
41 |
42 |