<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Techniques Informatiques &#8211; Site CAS Pierre-Ange Delbary-Rouillé &#8211; Vici56</title>
	<atom:link href="https://pierre-ange.delbary-rouille.net/category/techniques-informatiques/feed/" rel="self" type="application/rss+xml" />
	<link>https://pierre-ange.delbary-rouille.net</link>
	<description></description>
	<lastBuildDate>Sun, 27 Apr 2025 17:49:28 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.1</generator>

<image>
	<url>https://pierre-ange.delbary-rouille.net/wp-content/uploads/2024/10/International_Baccalaureate_Logo.svg_-150x150.png</url>
	<title>Techniques Informatiques &#8211; Site CAS Pierre-Ange Delbary-Rouillé &#8211; Vici56</title>
	<link>https://pierre-ange.delbary-rouille.net</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>CAS WEB &#8211; 14.7 &#8211; CONCLUSION</title>
		<link>https://pierre-ange.delbary-rouille.net/2025/04/26/cas-web-14-7-conclusion/</link>
					<comments>https://pierre-ange.delbary-rouille.net/2025/04/26/cas-web-14-7-conclusion/#respond</comments>
		
		<dc:creator><![CDATA[pierre.ange.delbary.rouille@gmail.com]]></dc:creator>
		<pubDate>Sat, 26 Apr 2025 10:25:04 +0000</pubDate>
				<category><![CDATA[Techniques Informatiques]]></category>
		<guid isPermaLink="false">https://pierre-ange.delbary-rouille.net/?p=4352</guid>

					<description><![CDATA[Faire tourner nos conteneurs en tâche de fond Installation du serveur de mail CONCLUSION Voilà ! La partie « installation d&#8217;un blog sur un serveur Web » est désormais terminée. Si vous consultez d&#8217;ailleurs ce tutoriel, c&#8217;est que le serveur web tourne toujours, car c&#8217;est celui que j&#8217;ai mis en œuvre. Vous l&#8217;avez compris, il servira aussi [&#8230;]]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="4352" class="elementor elementor-4352" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-31804af5 e-grid e-con-boxed e-con e-parent" data-id="31804af5" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-f29335a elementor-button-info prev-chapter-button elementor-widget elementor-widget-button" data-id="f29335a" data-element_type="widget" data-widget_type="button.default">
				<div class="elementor-widget-container">
					<div class="elementor-button-wrapper">
			<a class="elementor-button elementor-button-link elementor-size-sm" href="https://pierre-ange.delbary-rouille.net/2024/11/14/cas-web-14-6-faire-tourner-nos-conteneurs-en-tache-de-fond/">
						<span class="elementor-button-content-wrapper">
						<span class="elementor-button-icon">
				<svg aria-hidden="true" class="e-font-icon-svg e-fas-backward" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="M11.5 280.6l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2zm256 0l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2z"></path></svg>			</span>
									<span class="elementor-button-text">Faire tourner nos conteneurs en tâche de fond</span>
					</span>
					</a>
		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-6aa6a4ae elementor-align-right next-chapter-button elementor-widget elementor-widget-button" data-id="6aa6a4ae" data-element_type="widget" data-widget_type="button.default">
				<div class="elementor-widget-container">
					<div class="elementor-button-wrapper">
			<a class="elementor-button elementor-button-link elementor-size-sm" href="https://pierre-ange.delbary-rouille.net/2024/11/14/cas-web-15-installation-du-serveur-de-mail/">
						<span class="elementor-button-content-wrapper">
						<span class="elementor-button-icon">
				<svg aria-hidden="true" class="e-font-icon-svg e-fas-forward" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="M500.5 231.4l-192-160C287.9 54.3 256 68.6 256 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2zm-256 0l-192-160C31.9 54.3 0 68.6 0 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2z"></path></svg>			</span>
									<span class="elementor-button-text">Installation du serveur de mail</span>
					</span>
					</a>
		</div>
				</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-6ef76f75 e-flex e-con-boxed e-con e-parent" data-id="6ef76f75" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-65abe30c elementor-widget elementor-widget-heading" data-id="65abe30c" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h2 class="elementor-heading-title elementor-size-default">CONCLUSION</h2>		</div>
				</div>
				<div class="elementor-element elementor-element-36d763cf elementor-widget elementor-widget-text-editor" data-id="36d763cf" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Voilà ! La partie « installation d&rsquo;un blog sur un serveur Web » est désormais terminée.<br /><br />Si vous consultez d&rsquo;ailleurs ce tutoriel, c&rsquo;est que le serveur web tourne toujours, car c&rsquo;est celui que j&rsquo;ai mis en œuvre. Vous l&rsquo;avez compris, il servira aussi à mes sœurs&#8230;</p><p>Tout au long de ce Tutoriel, nous avons donc : </p><ul><li>Démystifié un certain nombre de concepts,</li><li>Acheté un nom de domaine,</li><li>Loué un Serveur Privé Virtuel,</li><li>Configuré le nom de domaine pour qu&rsquo;il pointe vers le serveur,</li><li>Mis en œuvre Docker sur le serveur pour faire tourner des conteneurs,</li><li>Mis en œuvres des conteneurs de :<ul><li>Base de Données,</li><li>Serveur Web,</li><li>Système de Blog.</li></ul></li><li>Mis en œuvre des outils de certification de nom de domaine,</li><li>Mis en œuvre des outils d&rsquo;administration pour simplifier la gestion du serveur.</li></ul><p>J&rsquo;allais oublier le « presque » principal : j&rsquo;ai rédigé cette longue liste d&rsquo;articles de Blog.</p><p> </p><p>J&rsquo;espère qu&rsquo;il vous sera utile et que vous serez nombreux à vous exprimer sur Internet à travers un beau Blog !</p><p> </p>						</div>
				</div>
		<div class="elementor-element elementor-element-d08ff5d e-con-full e-flex e-con e-child" data-id="d08ff5d" data-element_type="container">
				<div class="elementor-element elementor-element-ce461c7 elementor-widget-divider--view-line elementor-widget elementor-widget-divider" data-id="ce461c7" data-element_type="widget" data-widget_type="divider.default">
				<div class="elementor-widget-container">
					<div class="elementor-divider">
			<span class="elementor-divider-separator">
						</span>
		</div>
				</div>
				</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-6418211f e-flex e-con-boxed e-con e-parent" data-id="6418211f" data-element_type="container">
					<div class="e-con-inner">
		<div class="elementor-element elementor-element-1b819adf e-grid e-con-full e-con e-child" data-id="1b819adf" data-element_type="container">
		<div class="elementor-element elementor-element-1443085d e-grid e-con-full e-con e-child" data-id="1443085d" data-element_type="container">
				<div class="elementor-element elementor-element-4db74360 elementor-view-stacked elementor-widget__width-inherit elementor-shape-circle elementor-widget elementor-widget-icon" data-id="4db74360" data-element_type="widget" data-widget_type="icon.default">
				<div class="elementor-widget-container">
					<div class="elementor-icon-wrapper">
			<div class="elementor-icon">
			<svg xmlns="http://www.w3.org/2000/svg" height="48" viewBox="0 0 48 48" width="48"><g transform="scale(2)"><path d="m12 2a10 10 0 0 0 -10 10 10 10 0 0 0 10 10 10 10 0 0 0 10-10c0-1.16-.21-2.31-.61-3.39l-1.6 1.6c.14.59.21 1.19.21 1.79a8 8 0 0 1 -8 8 8 8 0 0 1 -8-8 8 8 0 0 1 8-8c.6 0 1.2.07 1.79.21l1.61-1.61c-1.09-.39-2.24-.6-3.4-.6m7 0-4 4v1.5l-2.55 2.55c-.15-.05-.3-.05-.45-.05a2 2 0 0 0 -2 2 2 2 0 0 0 2 2 2 2 0 0 0 2-2c0-.15 0-.3-.05-.45l2.55-2.55h1.5l4-4h-3zm-7 4a6 6 0 0 0 -6 6 6 6 0 0 0 6 6 6 6 0 0 0 6-6h-2a4 4 0 0 1 -4 4 4 4 0 0 1 -4-4 4 4 0 0 1 4-4z"></path></g></svg>			</div>
		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-5324921d elementor-widget__width-initial elementor-widget elementor-widget-heading" data-id="5324921d" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h2 class="elementor-heading-title elementor-size-default">Evaluation des Objectifs :</h2>		</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-4a8203c2 e-grid e-con-full e-con e-child" data-id="4a8203c2" data-element_type="container">
		<div class="elementor-element elementor-element-44e42fb1 e-con-full e-flex e-con e-child" data-id="44e42fb1" data-element_type="container">
				</div>
		<div class="elementor-element elementor-element-67ea655b e-con-full e-flex e-con e-child" data-id="67ea655b" data-element_type="container">
				<div class="elementor-element elementor-element-16a637eb elementor-widget elementor-widget-text-editor" data-id="16a637eb" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<div>Au travers de ce CAS, je m&rsquo;étais fixé les objectifs d&rsquo;apprentissage suivants :</div><ol><li>Identifier mes points forts et développer certaines aptitudes : effectivement, au départ de ce CAS, j&rsquo;étais assez vierge de connaissances sur tout ce qui tournait autour des serveurs Web. Ici, pas besoin de compétences en maths ou autre : juste savoir faire preuve de logique et d&rsquo;attention pour bien comprendre les mécanismes de fonctionnement d&rsquo;un serveur. Je suis content d&rsquo;avoir appris et compris à travers la lecture de documentations ou d&rsquo;autres articles de Blog. Mon point fort dans tout cela : avoir été capable de trouver les bonnes sources d&rsquo;information, et avoir parfois l&rsquo;intuition qui change tout ! Mes aptitudes sont sans conteste le fait de savoir me remettre en question quand je suis persuadé que ce n&rsquo;est pas moi qui ait mal procédé mais le concepteur du logiciel <img src="https://s.w.org/images/core/emoji/15.1.0/72x72/1f602.png" alt="😂" class="wp-smiley" style="height: 1em; max-height: 1em;" />.</li><li>Démontrer que des défis ont été relevés et qu&rsquo;ils sont à l&rsquo;origine de nouvelles compétences : finalement, le défi était plus élevé que je ne m&rsquo;y attendais. Pour être franc, en me lançant dans ce projet, je me disait qu&rsquo;il allait passer comme une lettre à la poste : c&rsquo;était sans considérer que les choses sont « parfois » un peu plus compliquées qu&rsquo;elles n&rsquo;y paraissent&#8230; Ma fierté, c&rsquo;est d&rsquo;avoir été jusqu&rsquo;au bout même quand j&rsquo;étais un peu largué. </li><li>Montrer une aptitude à initier et planifier une expérience CAS : pour le coup, au niveau de l&rsquo;initiation du projet je pense avoir été très efficace. Mais en ce qui concerne la planification, je dois avouer que j&rsquo;ai été très vite dépassé dans la mesure où je n&rsquo;avais pas planifié assez de plages de temps pour les problèmes éventuels. Je pense que ce projet qui devait s&rsquo;étaler sur une semaine a en réalité duré le triple&#8230; pas forcément brillant, mais le jeu en valait la chandelle.</li><li>Faire preuve d&rsquo;engagement et de persévérance : je m&rsquo;étais engagé à produire une série d&rsquo;articles qui permettrait à tout un chacun de monter son propre site Web. Le pari est réussi, et cette longue série d&rsquo;articles en est la preuve. Cependant, j&rsquo;ai parfois été découragé par les « micro » problèmes qui ont entaché mon parcours. C&rsquo;était en partie lié à ma méconnaissance de l&rsquo;environnement des serveurs, mais j&rsquo;ai failli abandonner. Un petit coup de pouce externe m&rsquo;a remis en selle, et ceci m&rsquo;a permis de continuer pour enfin finir ce tutoriel.</li></ol><p> </p>						</div>
				</div>
				</div>
				</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-5ca2e573 e-grid e-con-boxed e-con e-parent" data-id="5ca2e573" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-4bec2d3b elementor-button-info prev-chapter-button elementor-widget elementor-widget-button" data-id="4bec2d3b" data-element_type="widget" data-widget_type="button.default">
				<div class="elementor-widget-container">
					<div class="elementor-button-wrapper">
			<a class="elementor-button elementor-button-link elementor-size-sm" href="https://pierre-ange.delbary-rouille.net/2024/11/14/cas-web-14-6-faire-tourner-nos-conteneurs-en-tache-de-fond/">
						<span class="elementor-button-content-wrapper">
						<span class="elementor-button-icon">
				<svg aria-hidden="true" class="e-font-icon-svg e-fas-backward" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="M11.5 280.6l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2zm256 0l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2z"></path></svg>			</span>
									<span class="elementor-button-text">Faire tourner nos conteneurs en tâche de fond</span>
					</span>
					</a>
		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-239795e2 elementor-align-right next-chapter-button elementor-widget elementor-widget-button" data-id="239795e2" data-element_type="widget" data-widget_type="button.default">
				<div class="elementor-widget-container">
					<div class="elementor-button-wrapper">
			<a class="elementor-button elementor-button-link elementor-size-sm" href="https://pierre-ange.delbary-rouille.net/2024/11/14/cas-web-15-installation-du-serveur-de-mail/">
						<span class="elementor-button-content-wrapper">
						<span class="elementor-button-icon">
				<svg aria-hidden="true" class="e-font-icon-svg e-fas-forward" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="M500.5 231.4l-192-160C287.9 54.3 256 68.6 256 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2zm-256 0l-192-160C31.9 54.3 0 68.6 0 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2z"></path></svg>			</span>
									<span class="elementor-button-text">Installation du serveur de mail</span>
					</span>
					</a>
		</div>
				</div>
				</div>
					</div>
				</div>
				</div>
		]]></content:encoded>
					
					<wfw:commentRss>https://pierre-ange.delbary-rouille.net/2025/04/26/cas-web-14-7-conclusion/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>CAS FUSÉE &#8211; 15 &#8211; Synthèse et perspectives</title>
		<link>https://pierre-ange.delbary-rouille.net/2025/04/22/cas-fusee-15-synthese-et-perspectives/</link>
					<comments>https://pierre-ange.delbary-rouille.net/2025/04/22/cas-fusee-15-synthese-et-perspectives/#respond</comments>
		
		<dc:creator><![CDATA[pierre.ange.delbary.rouille@gmail.com]]></dc:creator>
		<pubDate>Tue, 22 Apr 2025 16:05:03 +0000</pubDate>
				<category><![CDATA[Projet Fusées]]></category>
		<category><![CDATA[Techniques Informatiques]]></category>
		<guid isPermaLink="false">https://pierre-ange.delbary-rouille.net/?p=3706</guid>

					<description><![CDATA[Précédent Suivant Synthèse et perspectives Lorsque j’ai commencé ce projet en décembre 2023, je n’imaginais pas à quel point il allait évoluer. Ce qui n’était au départ qu’une curiosité pour les fusées et un exercice de programmation s’est transformé en un projet complet mêlant physique, mathématiques, développement web, gestion de données, sécurité informatique et, finalement, [&#8230;]]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="3706" class="elementor elementor-3706" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-222d286 e-grid e-con-boxed e-con e-parent" data-id="222d286" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-5f24758b elementor-button-info prev-chapter-button elementor-widget elementor-widget-button" data-id="5f24758b" data-element_type="widget" data-widget_type="button.default">
				<div class="elementor-widget-container">
					<div class="elementor-button-wrapper">
			<a class="elementor-button elementor-button-link elementor-size-sm" href="/2025/04/22/cas-fusee-14-vers-lexterieur-une-dimension-sociale-inattendue/">
						<span class="elementor-button-content-wrapper">
						<span class="elementor-button-icon">
				<svg aria-hidden="true" class="e-font-icon-svg e-fas-backward" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="M11.5 280.6l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2zm256 0l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2z"></path></svg>			</span>
									<span class="elementor-button-text">Précédent</span>
					</span>
					</a>
		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-56a4c5d0 elementor-align-right next-chapter-button hidden elementor-widget elementor-widget-button" data-id="56a4c5d0" data-element_type="widget" data-widget_type="button.default">
				<div class="elementor-widget-container">
					<div class="elementor-button-wrapper">
			<a class="elementor-button elementor-button-link elementor-size-sm" href="#">
						<span class="elementor-button-content-wrapper">
						<span class="elementor-button-icon">
				<svg aria-hidden="true" class="e-font-icon-svg e-fas-forward" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="M500.5 231.4l-192-160C287.9 54.3 256 68.6 256 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2zm-256 0l-192-160C31.9 54.3 0 68.6 0 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2z"></path></svg>			</span>
									<span class="elementor-button-text">Suivant</span>
					</span>
					</a>
		</div>
				</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-4cbef432 e-flex e-con-boxed e-con e-parent" data-id="4cbef432" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-589abfcf elementor-widget elementor-widget-heading" data-id="589abfcf" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h2 class="elementor-heading-title elementor-size-default">Synthèse et perspectives</h2>		</div>
				</div>
				<div class="elementor-element elementor-element-7ed39710 elementor-widget elementor-widget-text-editor" data-id="7ed39710" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Lorsque j’ai commencé ce projet en décembre 2023, je n’imaginais pas à quel point il allait évoluer. Ce qui n’était au départ qu’une curiosité pour les fusées et un exercice de programmation s’est transformé en un projet complet mêlant physique, mathématiques, développement web, gestion de données, sécurité informatique et, finalement, service à une communauté.</p><p>Tout au long du processus, j’ai découvert et approfondi de nombreuses compétences :</p><ul><li>scientifiques, en étudiant les forces, les équations différentielles et les méthodes de résolution numérique ;</li><li>techniques, en apprenant à coder en JavaScript, à développer une API en PHP avec Symfony, et à gérer un projet logiciel structuré ;</li><li>organisationnelles, en structurant mon code, en versionnant mon travail, et en documentant chaque étape ;</li><li>humaines, en découvrant que mon travail pouvait servir à d’autres, et en adaptant mon projet à cet objectif.</li></ul><p>Ce projet a été un véritable parcours d’apprentissage autonome, mais aussi un espace de création personnelle. J’ai souvent dû chercher des réponses par moi-même, tester, corriger, repartir de zéro. Cela m’a appris à persévérer, à mieux planifier, et à faire des choix techniques en fonction d’objectifs réels.</p><p>Mais au-delà de l’apprentissage, ce que je retiens surtout, c’est l’évolution du sens du projet. Je ne l’ai pas conçu pour les autres au départ, mais c’est en voyant leur intérêt que j’ai compris qu’il pouvait dépasser sa fonction initiale. Ce changement de perspective est probablement la partie la plus marquante de cette expérience.</p><p>Quant à l’avenir, plusieurs pistes d’évolution sont possibles :</p><ul><li>améliorer l’interface pour qu’elle soit plus intuitive, plus complète, voire accessible sur mobile ;</li><li>intégrer des données réelles, par exemple des paramètres de fusées existantes (Ariane, Falcon…) ;</li><li>ajouter un moteur physique 2D ou 3D, pour simuler des vols obliques ou orbitaux ;</li><li>proposer une version éducative avec des modules de découverte (quiz, tutoriels…) ;</li><li>ouvrir le projet à la contribution d’autres élèves ou développeurs via GitHub.</li></ul><p>A l&rsquo;heure où j&rsquo;écris cet article, nous sommes en Avril 2025. Cela fait près d&rsquo;un an et demi que j&rsquo;ai initié ce méga projet dont j&rsquo;avoue être fier et sur lequel j&rsquo;ai planché des nombreuses heures : je n&rsquo;ai pas réellement calculé combien de temps il m&rsquo;a pris, mais j&rsquo;estime être à environ 400 heures de travail, IA comprise.</p><p>Je ne sais pas encore jusqu’où j’irai dans ces directions, mais ce projet m’a donné une confiance nouvelle dans ma capacité à apprendre et à construire quelque chose de cohérent, utile, et techniquement abouti.</p>						</div>
				</div>
		<div class="elementor-element elementor-element-8856040 e-con-full e-flex e-con e-child" data-id="8856040" data-element_type="container">
				<div class="elementor-element elementor-element-49c120f elementor-widget-divider--view-line elementor-widget elementor-widget-divider" data-id="49c120f" data-element_type="widget" data-widget_type="divider.default">
				<div class="elementor-widget-container">
					<div class="elementor-divider">
			<span class="elementor-divider-separator">
						</span>
		</div>
				</div>
				</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-c913644 e-grid e-con-boxed e-con e-parent" data-id="c913644" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-4819c851 elementor-view-stacked elementor-shape-circle elementor-widget elementor-widget-icon" data-id="4819c851" data-element_type="widget" data-widget_type="icon.default">
				<div class="elementor-widget-container">
					<div class="elementor-icon-wrapper">
			<div class="elementor-icon">
			<svg aria-hidden="true" class="e-font-icon-svg e-far-comment-dots" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="M144 208c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm112 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm112 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zM256 32C114.6 32 0 125.1 0 240c0 47.6 19.9 91.2 52.9 126.3C38 405.7 7 439.1 6.5 439.5c-6.6 7-8.4 17.2-4.6 26S14.4 480 24 480c61.5 0 110-25.7 139.1-46.3C192 442.8 223.2 448 256 448c141.4 0 256-93.1 256-208S397.4 32 256 32zm0 368c-26.7 0-53.1-4.1-78.4-12.1l-22.7-7.2-19.5 13.8c-14.3 10.1-33.9 21.4-57.5 29 7.3-12.1 14.4-25.7 19.9-40.2l10.6-28.1-20.6-21.8C69.7 314.1 48 282.2 48 240c0-88.2 93.3-160 208-160s208 71.8 208 160-93.3 160-208 160z"></path></svg>			</div>
		</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-f44e673 e-grid e-con-full e-con e-child" data-id="f44e673" data-element_type="container">
				<div class="elementor-element elementor-element-73994d83 elementor-widget elementor-widget-heading" data-id="73994d83" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h2 class="elementor-heading-title elementor-size-default">Synthèse</h2>		</div>
				</div>
				<div class="elementor-element elementor-element-7ea676f elementor-widget elementor-widget-text-editor" data-id="7ea676f" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Ce projet m’a permis de combiner mes intérêts pour les sciences, l’informatique et la pédagogie. Il a évolué bien au-delà de ce que j’avais prévu au départ, m’offrant une expérience complète de conception, de développement, d’analyse et de partage. Il m’a aussi permis de vivre concrètement l’esprit du CAS : créativité, activité et service. Je repars avec des compétences nouvelles, une vision plus large, et l’envie de continuer à créer et à apprendre.</p>						</div>
				</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-f2655d3 e-flex e-con-boxed e-con e-parent" data-id="f2655d3" data-element_type="container">
					<div class="e-con-inner">
		<div class="elementor-element elementor-element-7b375b5c e-grid e-con-full e-con e-child" data-id="7b375b5c" data-element_type="container">
		<div class="elementor-element elementor-element-1c328ea e-grid e-con-full e-con e-child" data-id="1c328ea" data-element_type="container">
				<div class="elementor-element elementor-element-3fbf09d9 elementor-view-stacked elementor-widget__width-inherit elementor-shape-circle elementor-widget elementor-widget-icon" data-id="3fbf09d9" data-element_type="widget" data-widget_type="icon.default">
				<div class="elementor-widget-container">
					<div class="elementor-icon-wrapper">
			<div class="elementor-icon">
			<svg xmlns="http://www.w3.org/2000/svg" height="48" viewBox="0 0 48 48" width="48"><g transform="scale(2)"><path d="m12 2a10 10 0 0 0 -10 10 10 10 0 0 0 10 10 10 10 0 0 0 10-10c0-1.16-.21-2.31-.61-3.39l-1.6 1.6c.14.59.21 1.19.21 1.79a8 8 0 0 1 -8 8 8 8 0 0 1 -8-8 8 8 0 0 1 8-8c.6 0 1.2.07 1.79.21l1.61-1.61c-1.09-.39-2.24-.6-3.4-.6m7 0-4 4v1.5l-2.55 2.55c-.15-.05-.3-.05-.45-.05a2 2 0 0 0 -2 2 2 2 0 0 0 2 2 2 2 0 0 0 2-2c0-.15 0-.3-.05-.45l2.55-2.55h1.5l4-4h-3zm-7 4a6 6 0 0 0 -6 6 6 6 0 0 0 6 6 6 6 0 0 0 6-6h-2a4 4 0 0 1 -4 4 4 4 0 0 1 -4-4 4 4 0 0 1 4-4z"></path></g></svg>			</div>
		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-457de033 elementor-widget__width-initial elementor-widget elementor-widget-heading" data-id="457de033" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h2 class="elementor-heading-title elementor-size-default">Evaluation des Objectifs :</h2>		</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-3c8c3ff9 e-grid e-con-full e-con e-child" data-id="3c8c3ff9" data-element_type="container">
		<div class="elementor-element elementor-element-6ffdb325 e-con-full e-flex e-con e-child" data-id="6ffdb325" data-element_type="container">
				</div>
		<div class="elementor-element elementor-element-2c7fe146 e-con-full e-flex e-con e-child" data-id="2c7fe146" data-element_type="container">
				<div class="elementor-element elementor-element-66b94abd elementor-widget elementor-widget-text-editor" data-id="66b94abd" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<div>Au travers de ce CAS LONG, je m&rsquo;étais fixé les objectifs d&rsquo;apprentissage suivants :</div><p> </p><ol><li>Identifier mes points forts et développer certaines aptitudes : ce projet a été une immense imertion dans le monde de l&rsquo;informatique et du développement logiciel en particulier. Pour y parvenir, j&rsquo;ai dû :<ol><li>Apprendre plusieurs langages (html, javascript, php, docker)</li><li>Me familiariser avec des concepts informatiques inconnus (bases de la programmation, classes, api)</li><li>Implémenter des principes solides et rigoureur</li></ol></li><li>Démontrer que des défis ont été relevés et qu&rsquo;ils sont à l&rsquo;origine de nouvelles compétences : JAMAIS je n&rsquo;aurais imaginé être capable d&rsquo;atteindre un tel niveau. Je pense raisonnablement avoir le niveau d&rsquo;un développeur junior, et mes compétences pourraient me permettre d&rsquo;ores et déjà d&rsquo;aborder le monde de l&#8217;emploi en freelance ou non.</li><li>Montrer une aptitude à initier et planifier une expérience CAS : j&rsquo;ai dû étudier les principes de réflexion qui amènent à la conception d&rsquo;un projet de A à A. Ceci a impliqué l&rsquo;étude du déroulement des phases d&rsquo;un projet, de conception de base, à sa mise en œuvre à une échelle professionnelle. Des choses que l&rsquo;on n&rsquo;apprend qu&rsquo;en suivant des cours, ou en s&rsquo;impliquant à fond sur le projet et les méthodes.</li><li>Faire preuve d&rsquo;engagement et de persévérance : au début, ce projet qui n&rsquo;était qu&rsquo;un &lsquo;side-project&rsquo; m&rsquo;a amené à le faire évoluer vers un résultat quasi professionnel, et donc m&rsquo;impliquer profondément. La persévérance a été nécessaire, même si j&rsquo;ai pu faire appel à des personnes qui étaient « du métier ». J&rsquo;ai eu des phases de découragement, mais j&rsquo;ai su me remettre en selle et parvenir à mes fins.</li><li>Démontrer des compétences et reconnaître les bénéfices du travail en collaboration : j&rsquo;ai pu échanger avec des personnes qui ont trouvé un intérêt dans mon projet et qui m&rsquo;ont donné des pistes de réflexion ; notamment le fait de mettre ce projet à disposition de la communauté et d&rsquo;en faire un projet interactif dans le sens ou la communauté peut s&rsquo;y connecter et développer ses propres algorithmes. Le fait d&rsquo;avoir mis mon premier projet sur Github est une grande satisfaction.</li><li>Démontrer son engagement dans des questions d&rsquo;importance mondiale : cela rejoint le point précédent dans la mesure où la porté de ce projet dépasse le cadre scolaire : la terre entière, de par le fait que le projet est sur Github, peut y accéder et les personnes intéressées peuvent développer leurs propres modèles. Une IMMENSE satisfaction !</li><li>Reconnaître et réfléchir à l&rsquo;éthique des choix et des actions : ce CAS m&rsquo;a fait réfléchir sur l&rsquo;importance des fusées. Je dois avouer cependant que je n&rsquo;ai pas vraiment eu l&rsquo;occasion de pouvoir implémenter quelque chose qui aurait rapport à l&rsquo;éthique du monde des fusées. Mais je me suis sincèrement penché sur la mienne, et sur ce que je devais au monde : prouver qu&rsquo;un élève d&rsquo;IB pouvait produire un logiciel viable, open source, gratuitement, qui peut-être, pourrait servir l&rsquo;éducation : ce fut ma ligne de conduite, ma ligne étique ; pouvoir rendre service !</li></ol>						</div>
				</div>
				</div>
				</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-2566a199 e-grid e-con-boxed e-con e-parent" data-id="2566a199" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-3adaf213 elementor-button-info prev-chapter-button elementor-widget elementor-widget-button" data-id="3adaf213" data-element_type="widget" data-widget_type="button.default">
				<div class="elementor-widget-container">
					<div class="elementor-button-wrapper">
			<a class="elementor-button elementor-button-link elementor-size-sm" href="/2025/04/22/cas-fusee-14-vers-lexterieur-une-dimension-sociale-inattendue/">
						<span class="elementor-button-content-wrapper">
						<span class="elementor-button-icon">
				<svg aria-hidden="true" class="e-font-icon-svg e-fas-backward" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="M11.5 280.6l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2zm256 0l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2z"></path></svg>			</span>
									<span class="elementor-button-text">Précédent</span>
					</span>
					</a>
		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-52771b9a elementor-align-right next-chapter-button hidden  elementor-widget elementor-widget-button" data-id="52771b9a" data-element_type="widget" data-widget_type="button.default">
				<div class="elementor-widget-container">
					<div class="elementor-button-wrapper">
			<a class="elementor-button elementor-button-link elementor-size-sm" href="#">
						<span class="elementor-button-content-wrapper">
						<span class="elementor-button-icon">
				<svg aria-hidden="true" class="e-font-icon-svg e-fas-forward" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="M500.5 231.4l-192-160C287.9 54.3 256 68.6 256 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2zm-256 0l-192-160C31.9 54.3 0 68.6 0 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2z"></path></svg>			</span>
									<span class="elementor-button-text">Suivant</span>
					</span>
					</a>
		</div>
				</div>
				</div>
					</div>
				</div>
				</div>
		]]></content:encoded>
					
					<wfw:commentRss>https://pierre-ange.delbary-rouille.net/2025/04/22/cas-fusee-15-synthese-et-perspectives/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>CAS FUSÉE &#8211; 14 &#8211; Vers l’extérieur &#8211; Une dimension sociale inattendue</title>
		<link>https://pierre-ange.delbary-rouille.net/2025/04/22/cas-fusee-14-vers-lexterieur-une-dimension-sociale-inattendue/</link>
					<comments>https://pierre-ange.delbary-rouille.net/2025/04/22/cas-fusee-14-vers-lexterieur-une-dimension-sociale-inattendue/#respond</comments>
		
		<dc:creator><![CDATA[pierre.ange.delbary.rouille@gmail.com]]></dc:creator>
		<pubDate>Tue, 22 Apr 2025 16:01:10 +0000</pubDate>
				<category><![CDATA[Projet Fusées]]></category>
		<category><![CDATA[Techniques Informatiques]]></category>
		<guid isPermaLink="false">https://pierre-ange.delbary-rouille.net/?p=3700</guid>

					<description><![CDATA[Précédent Suivant Partie 4 &#8211; Vers l’extérieur &#8211; Une dimension sociale inattendue Lorsque j’ai commencé ce projet, mon objectif était purement personnel : comprendre les lois qui régissent le mouvement d’une fusée et les modéliser sous forme d’un simulateur interactif. Je voyais cela comme une façon d’approfondir mes connaissances en physique et en programmation, en [&#8230;]]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="3700" class="elementor elementor-3700" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-165169ea e-grid e-con-boxed e-con e-parent" data-id="165169ea" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-1004101 elementor-button-info prev-chapter-button elementor-widget elementor-widget-button" data-id="1004101" data-element_type="widget" data-widget_type="button.default">
				<div class="elementor-widget-container">
					<div class="elementor-button-wrapper">
			<a class="elementor-button elementor-button-link elementor-size-sm" href="/2025/04/22/cas-fusee-13-vers-lexterieur-mise-a-disposition-du-projet-a-la-communaute/">
						<span class="elementor-button-content-wrapper">
						<span class="elementor-button-icon">
				<svg aria-hidden="true" class="e-font-icon-svg e-fas-backward" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="M11.5 280.6l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2zm256 0l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2z"></path></svg>			</span>
									<span class="elementor-button-text">Précédent</span>
					</span>
					</a>
		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-6acf0143 elementor-align-right next-chapter-button elementor-widget elementor-widget-button" data-id="6acf0143" data-element_type="widget" data-widget_type="button.default">
				<div class="elementor-widget-container">
					<div class="elementor-button-wrapper">
			<a class="elementor-button elementor-button-link elementor-size-sm" href="/2025/04/22/cas-fusee-15-synthese-et-perspectives/">
						<span class="elementor-button-content-wrapper">
						<span class="elementor-button-icon">
				<svg aria-hidden="true" class="e-font-icon-svg e-fas-forward" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="M500.5 231.4l-192-160C287.9 54.3 256 68.6 256 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2zm-256 0l-192-160C31.9 54.3 0 68.6 0 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2z"></path></svg>			</span>
									<span class="elementor-button-text">Suivant</span>
					</span>
					</a>
		</div>
				</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-67a208c4 e-flex e-con-boxed e-con e-parent" data-id="67a208c4" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-48afcec0 elementor-widget elementor-widget-heading" data-id="48afcec0" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h2 class="elementor-heading-title elementor-size-default">Partie 4 - Vers l’extérieur - Une dimension sociale inattendue</h2>		</div>
				</div>
				<div class="elementor-element elementor-element-6323fe9d elementor-widget elementor-widget-text-editor" data-id="6323fe9d" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Lorsque j’ai commencé ce projet, mon objectif était purement personnel : comprendre les lois qui régissent le mouvement d’une fusée et les modéliser sous forme d’un simulateur interactif. Je voyais cela comme une façon d’approfondir mes connaissances en physique et en programmation, en dehors du cadre scolaire. À aucun moment, je n’avais envisagé que ce projet pourrait avoir une utilité pour d’autres.</p><p>Mais en avançant, quelque chose a changé. Lorsque j’ai commencé à montrer mon simulateur à des amis ou à des camarades de classe, j’ai vu qu’ils y trouvaient un intérêt que je n’avais pas anticipé. Certains y voyaient un outil pédagogique, d’autres une manière concrète de visualiser des phénomènes qu’ils avaient du mal à comprendre uniquement à l’aide d’équations. C’est à ce moment-là que j’ai réalisé que ce projet, que j’avais d’abord pensé comme une expérience individuelle, pouvait en réalité servir à une petite communauté.</p><p>Cette prise de conscience m’a amené à modifier certains aspects du projet. J’ai commencé à soigner l’interface pour la rendre plus claire, à simplifier les termes affichés pour qu’ils soient compréhensibles sans connaissances avancées, à ajouter des messages d’erreur explicites. J’ai aussi amélioré la documentation du code, pour qu’un élève ou un enseignant puisse s’y plonger sans être bloqué par des détails techniques.</p><p>Je me suis rendu compte que ce projet pouvait combler un manque entre la théorie et la pratique. En classe, on parle d’accélération, de résistance de l’air, de gravité, mais ces concepts restent parfois abstraits. Le simulateur permet de les manipuler, de les tester, de voir immédiatement ce qui change lorsqu’on modifie la masse ou la poussée. Ce lien direct entre formule et comportement rend la science plus accessible.</p><p>J’ai également commencé à réfléchir à des usages collectifs : est-ce qu’un club scientifique pourrait l’utiliser ? Est-ce qu’un enseignant pourrait proposer des mini-projets à ses élèves en partant de mon simulateur ? Est-ce qu’on pourrait l’adapter pour des présentations dans des événements scolaires ou associatifs ? Ces idées ne sont pas encore toutes concrétisées, mais elles montrent que le projet a ouvert une nouvelle perspective.</p><p>Enfin, cette dimension sociale m’a permis de repenser le sens du projet dans le cadre du CAS. Je ne faisais plus seulement preuve de créativité et d’engagement personnel, je proposais aussi un service à la communauté éducative, aussi modeste soit-il. C’est cette évolution que je retiens le plus : celle d’un projet tourné vers moi, devenu peu à peu tourné vers les autres.</p>						</div>
				</div>
		<div class="elementor-element elementor-element-28a9cc8 e-con-full e-flex e-con e-child" data-id="28a9cc8" data-element_type="container">
				<div class="elementor-element elementor-element-7b580ce elementor-widget-divider--view-line elementor-widget elementor-widget-divider" data-id="7b580ce" data-element_type="widget" data-widget_type="divider.default">
				<div class="elementor-widget-container">
					<div class="elementor-divider">
			<span class="elementor-divider-separator">
						</span>
		</div>
				</div>
				</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-223b9c4f e-grid e-con-boxed e-con e-parent" data-id="223b9c4f" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-9948f0a elementor-view-stacked elementor-shape-circle elementor-widget elementor-widget-icon" data-id="9948f0a" data-element_type="widget" data-widget_type="icon.default">
				<div class="elementor-widget-container">
					<div class="elementor-icon-wrapper">
			<div class="elementor-icon">
			<svg aria-hidden="true" class="e-font-icon-svg e-far-comment-dots" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="M144 208c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm112 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm112 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zM256 32C114.6 32 0 125.1 0 240c0 47.6 19.9 91.2 52.9 126.3C38 405.7 7 439.1 6.5 439.5c-6.6 7-8.4 17.2-4.6 26S14.4 480 24 480c61.5 0 110-25.7 139.1-46.3C192 442.8 223.2 448 256 448c141.4 0 256-93.1 256-208S397.4 32 256 32zm0 368c-26.7 0-53.1-4.1-78.4-12.1l-22.7-7.2-19.5 13.8c-14.3 10.1-33.9 21.4-57.5 29 7.3-12.1 14.4-25.7 19.9-40.2l10.6-28.1-20.6-21.8C69.7 314.1 48 282.2 48 240c0-88.2 93.3-160 208-160s208 71.8 208 160-93.3 160-208 160z"></path></svg>			</div>
		</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-73ae17c6 e-grid e-con-full e-con e-child" data-id="73ae17c6" data-element_type="container">
				<div class="elementor-element elementor-element-3fe8542e elementor-widget elementor-widget-heading" data-id="3fe8542e" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h2 class="elementor-heading-title elementor-size-default">Synthèse</h2>		</div>
				</div>
				<div class="elementor-element elementor-element-34ce9f8f elementor-widget elementor-widget-text-editor" data-id="34ce9f8f" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Au départ purement individuel, mon projet a évolué vers une forme de service aux autres. J’ai pris conscience qu’un travail technique, s’il est bien conçu, peut devenir un outil utile, un support pédagogique, ou même une source d’inspiration. C’est cette dimension sociale inattendue qui a donné un nouveau sens à mon engagement dans le cadre du CAS.</p>						</div>
				</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-750ca31a e-grid e-con-boxed e-con e-parent" data-id="750ca31a" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-79f524ce elementor-button-info prev-chapter-button elementor-widget elementor-widget-button" data-id="79f524ce" data-element_type="widget" data-widget_type="button.default">
				<div class="elementor-widget-container">
					<div class="elementor-button-wrapper">
			<a class="elementor-button elementor-button-link elementor-size-sm" href="/2025/04/22/cas-fusee-13-vers-lexterieur-mise-a-disposition-du-projet-a-la-communaute/">
						<span class="elementor-button-content-wrapper">
						<span class="elementor-button-icon">
				<svg aria-hidden="true" class="e-font-icon-svg e-fas-backward" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="M11.5 280.6l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2zm256 0l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2z"></path></svg>			</span>
									<span class="elementor-button-text">Précédent</span>
					</span>
					</a>
		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-583dbea0 elementor-align-right next-chapter-button elementor-widget elementor-widget-button" data-id="583dbea0" data-element_type="widget" data-widget_type="button.default">
				<div class="elementor-widget-container">
					<div class="elementor-button-wrapper">
			<a class="elementor-button elementor-button-link elementor-size-sm" href="/2025/04/22/cas-fusee-15-synthese-et-perspectives/">
						<span class="elementor-button-content-wrapper">
						<span class="elementor-button-icon">
				<svg aria-hidden="true" class="e-font-icon-svg e-fas-forward" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="M500.5 231.4l-192-160C287.9 54.3 256 68.6 256 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2zm-256 0l-192-160C31.9 54.3 0 68.6 0 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2z"></path></svg>			</span>
									<span class="elementor-button-text">Suivant</span>
					</span>
					</a>
		</div>
				</div>
				</div>
					</div>
				</div>
				</div>
		]]></content:encoded>
					
					<wfw:commentRss>https://pierre-ange.delbary-rouille.net/2025/04/22/cas-fusee-14-vers-lexterieur-une-dimension-sociale-inattendue/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>CAS FUSÉE &#8211; 13 &#8211; Vers l’extérieur &#8211; Mise à disposition du projet à la communauté</title>
		<link>https://pierre-ange.delbary-rouille.net/2025/04/22/cas-fusee-13-vers-lexterieur-mise-a-disposition-du-projet-a-la-communaute/</link>
					<comments>https://pierre-ange.delbary-rouille.net/2025/04/22/cas-fusee-13-vers-lexterieur-mise-a-disposition-du-projet-a-la-communaute/#respond</comments>
		
		<dc:creator><![CDATA[pierre.ange.delbary.rouille@gmail.com]]></dc:creator>
		<pubDate>Tue, 22 Apr 2025 15:57:53 +0000</pubDate>
				<category><![CDATA[Projet Fusées]]></category>
		<category><![CDATA[Techniques Informatiques]]></category>
		<guid isPermaLink="false">https://pierre-ange.delbary-rouille.net/?p=3695</guid>

					<description><![CDATA[Précédent Suivant Partie 4 &#8211; Vers l’extérieur &#8211; Mise à disposition du projet à la communauté Après plusieurs mois de développement, mon projet avait atteint un stade suffisamment avancé pour être utilisé non seulement par moi, mais aussi par d&#8217;autres. À ce moment-là, l’idée a commencé à émerger : pourquoi ne pas le partager ? [&#8230;]]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="3695" class="elementor elementor-3695" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-241bc168 e-grid e-con-boxed e-con e-parent" data-id="241bc168" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-cf70cdd elementor-button-info prev-chapter-button elementor-widget elementor-widget-button" data-id="cf70cdd" data-element_type="widget" data-widget_type="button.default">
				<div class="elementor-widget-container">
					<div class="elementor-button-wrapper">
			<a class="elementor-button elementor-button-link elementor-size-sm" href="/2025/04/22/cas-fusee-12-passage-a-un-projet-logiciel-complet-creation-dune-interface-web-interactive-et-complete/">
						<span class="elementor-button-content-wrapper">
						<span class="elementor-button-icon">
				<svg aria-hidden="true" class="e-font-icon-svg e-fas-backward" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="M11.5 280.6l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2zm256 0l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2z"></path></svg>			</span>
									<span class="elementor-button-text">Précédent</span>
					</span>
					</a>
		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-2dc7f2c elementor-align-right next-chapter-button elementor-widget elementor-widget-button" data-id="2dc7f2c" data-element_type="widget" data-widget_type="button.default">
				<div class="elementor-widget-container">
					<div class="elementor-button-wrapper">
			<a class="elementor-button elementor-button-link elementor-size-sm" href="/2025/04/22/cas-fusee-14-vers-lexterieur-une-dimension-sociale-inattendue/">
						<span class="elementor-button-content-wrapper">
						<span class="elementor-button-icon">
				<svg aria-hidden="true" class="e-font-icon-svg e-fas-forward" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="M500.5 231.4l-192-160C287.9 54.3 256 68.6 256 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2zm-256 0l-192-160C31.9 54.3 0 68.6 0 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2z"></path></svg>			</span>
									<span class="elementor-button-text">Suivant</span>
					</span>
					</a>
		</div>
				</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-569c00b8 e-flex e-con-boxed e-con e-parent" data-id="569c00b8" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-2d44ad72 elementor-widget elementor-widget-heading" data-id="2d44ad72" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h2 class="elementor-heading-title elementor-size-default">Partie 4 - Vers l’extérieur - Mise à disposition du projet à la communauté
</h2>		</div>
				</div>
				<div class="elementor-element elementor-element-7c9b473a elementor-widget elementor-widget-text-editor" data-id="7c9b473a" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Après plusieurs mois de développement, mon projet avait atteint un stade suffisamment avancé pour être utilisé non seulement par moi, mais aussi par d&rsquo;autres. À ce moment-là, l’idée a commencé à émerger : pourquoi ne pas le partager ? Après tout, le simulateur de trajectoire que j’avais construit pouvait servir à d’autres élèves, enseignants ou passionnés de physique.</p><p>La première étape a été de mettre le projet en ligne, sur un serveur accessible via un nom de domaine. J’ai utilisé un hébergement que je gérais moi-même, avec un nom de domaine personnel, ce qui m’a permis de configurer un environnement Docker avec une base de données, un reverse proxy, le backend Symfony et le frontend. Le site est devenu accessible à l’adresse : <a href="https://padr.fr/rocket">padr.fr/rocket</a></p><p>Une fois le site accessible publiquement, j’ai commencé à en parler autour de moi. J’ai présenté le projet à deux enseignants, qui y ont vu un outil pédagogique intéressant pour illustrer les notions de poussée, de vitesse, de gravité, et pour montrer ce que signifie concrètement résoudre une équation différentielle. Le simulateur est interactif, les données sont personnalisables, et le code source est lisible. Cela en fait une ressource utile en classe ou en atelier scientifique, surtout pour les lycéens.</p><p>En parallèle, j’ai publié le code sur une plateforme de gestion de version (GitHub), avec une documentation minimale pour expliquer le fonctionnement du projet, la structure des entités, les routes d’API, et quelques instructions d’installation. Le but n’était pas d’en faire une plateforme publique très fréquentée, mais simplement de rendre le projet transparent et accessible à d’autres développeurs ou curieux. Cela m’a aussi permis de formaliser mon travail en expliquant mes choix techniques et en structurant mieux mon dépôt.</p><p>J’ai reçu quelques retours positifs, parfois techniques, parfois pédagogiques. Certains m’ont proposé des améliorations, d’autres m’ont félicité pour la clarté de l’interface. Ces échanges m’ont montré que le projet avait dépassé le cadre personnel pour devenir quelque chose de potentiellement utile à une petite communauté.</p><p>Cette ouverture m’a aussi fait prendre conscience d’une chose : lorsque l’on met son travail à disposition, on se met à la place de l’utilisateur. On pense à la documentation, à l’ergonomie, à la robustesse. Ce n’est plus un simple « projet d’élève », c’est un outil que d’autres vont utiliser, critiquer, voire améliorer. Cela change profondément la façon de concevoir et de maintenir un projet.</p>						</div>
				</div>
				<div class="elementor-element elementor-element-ee4d0b2 elementor-widget elementor-widget-image" data-id="ee4d0b2" data-element_type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
													<img fetchpriority="high" decoding="async" width="1024" height="829" src="https://pierre-ange.delbary-rouille.net/wp-content/uploads/2025/04/Github-1024x829.png" class="attachment-large size-large wp-image-4348" alt="Projet sur Github" srcset="https://pierre-ange.delbary-rouille.net/wp-content/uploads/2025/04/Github-1024x829.png 1024w, https://pierre-ange.delbary-rouille.net/wp-content/uploads/2025/04/Github-300x243.png 300w, https://pierre-ange.delbary-rouille.net/wp-content/uploads/2025/04/Github-768x622.png 768w, https://pierre-ange.delbary-rouille.net/wp-content/uploads/2025/04/Github-1536x1243.png 1536w, https://pierre-ange.delbary-rouille.net/wp-content/uploads/2025/04/Github-2048x1658.png 2048w" sizes="(max-width: 1024px) 100vw, 1024px" />													</div>
				</div>
		<div class="elementor-element elementor-element-274c516 e-con-full e-flex e-con e-child" data-id="274c516" data-element_type="container">
				<div class="elementor-element elementor-element-c08f0f5 elementor-widget-divider--view-line elementor-widget elementor-widget-divider" data-id="c08f0f5" data-element_type="widget" data-widget_type="divider.default">
				<div class="elementor-widget-container">
					<div class="elementor-divider">
			<span class="elementor-divider-separator">
						</span>
		</div>
				</div>
				</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-8bf9084 e-grid e-con-boxed e-con e-parent" data-id="8bf9084" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-6671de79 elementor-view-stacked elementor-shape-circle elementor-widget elementor-widget-icon" data-id="6671de79" data-element_type="widget" data-widget_type="icon.default">
				<div class="elementor-widget-container">
					<div class="elementor-icon-wrapper">
			<a class="elementor-icon" href="https://github.com/PierreAngeDR/RocketBuilder" target="_blank">
			<svg aria-hidden="true" class="e-font-icon-svg e-fab-github" viewBox="0 0 496 512" xmlns="http://www.w3.org/2000/svg"><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"></path></svg>			</a>
		</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-2452e55c e-grid e-con-full e-con e-child" data-id="2452e55c" data-element_type="container">
				<div class="elementor-element elementor-element-530cd26f elementor-widget elementor-widget-heading" data-id="530cd26f" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h2 class="elementor-heading-title elementor-size-default"><a href="https://github.com/PierreAngeDR/RocketBuilder" target="_blank">Ce projet est maintenant disponible sur GitHub</a></h2>		</div>
				</div>
				<div class="elementor-element elementor-element-f9a70c0 elementor-widget elementor-widget-text-editor" data-id="f9a70c0" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p><span style="text-decoration: underline;"><a href="https://github.com/PierreAngeDR/RocketBuilder" target="_blank" rel="noopener">Une ouverture Open Source vers le monde !</a></span></p>						</div>
				</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-131a80b1 e-grid e-con-boxed e-con e-parent" data-id="131a80b1" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-5e26ea34 elementor-view-stacked elementor-shape-circle elementor-widget elementor-widget-icon" data-id="5e26ea34" data-element_type="widget" data-widget_type="icon.default">
				<div class="elementor-widget-container">
					<div class="elementor-icon-wrapper">
			<div class="elementor-icon">
			<svg aria-hidden="true" class="e-font-icon-svg e-far-comment-dots" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="M144 208c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm112 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm112 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zM256 32C114.6 32 0 125.1 0 240c0 47.6 19.9 91.2 52.9 126.3C38 405.7 7 439.1 6.5 439.5c-6.6 7-8.4 17.2-4.6 26S14.4 480 24 480c61.5 0 110-25.7 139.1-46.3C192 442.8 223.2 448 256 448c141.4 0 256-93.1 256-208S397.4 32 256 32zm0 368c-26.7 0-53.1-4.1-78.4-12.1l-22.7-7.2-19.5 13.8c-14.3 10.1-33.9 21.4-57.5 29 7.3-12.1 14.4-25.7 19.9-40.2l10.6-28.1-20.6-21.8C69.7 314.1 48 282.2 48 240c0-88.2 93.3-160 208-160s208 71.8 208 160-93.3 160-208 160z"></path></svg>			</div>
		</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-18175507 e-grid e-con-full e-con e-child" data-id="18175507" data-element_type="container">
				<div class="elementor-element elementor-element-7c3e5aea elementor-widget elementor-widget-heading" data-id="7c3e5aea" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h2 class="elementor-heading-title elementor-size-default">Synthèse</h2>		</div>
				</div>
				<div class="elementor-element elementor-element-57774900 elementor-widget elementor-widget-text-editor" data-id="57774900" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Partager mon projet m’a permis de franchir une nouvelle étape : celle du service. J’ai compris que ce que je construisais pouvait avoir une utilité concrète pour d’autres, en particulier dans le domaine de l’éducation. Cela m’a donné envie de continuer à améliorer le projet, non seulement pour moi, mais pour les autres. C’est aussi ce qui a amorcé la réflexion développée dans l’article suivant.</p>						</div>
				</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-44592052 e-grid e-con-boxed e-con e-parent" data-id="44592052" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-27b572ff elementor-button-info prev-chapter-button elementor-widget elementor-widget-button" data-id="27b572ff" data-element_type="widget" data-widget_type="button.default">
				<div class="elementor-widget-container">
					<div class="elementor-button-wrapper">
			<a class="elementor-button elementor-button-link elementor-size-sm" href="/2025/04/22/cas-fusee-12-passage-a-un-projet-logiciel-complet-creation-dune-interface-web-interactive-et-complete/">
						<span class="elementor-button-content-wrapper">
						<span class="elementor-button-icon">
				<svg aria-hidden="true" class="e-font-icon-svg e-fas-backward" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="M11.5 280.6l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2zm256 0l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2z"></path></svg>			</span>
									<span class="elementor-button-text">Précédent</span>
					</span>
					</a>
		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-16cc0ec8 elementor-align-right next-chapter-button elementor-widget elementor-widget-button" data-id="16cc0ec8" data-element_type="widget" data-widget_type="button.default">
				<div class="elementor-widget-container">
					<div class="elementor-button-wrapper">
			<a class="elementor-button elementor-button-link elementor-size-sm" href="/2025/04/22/cas-fusee-14-vers-lexterieur-une-dimension-sociale-inattendue/">
						<span class="elementor-button-content-wrapper">
						<span class="elementor-button-icon">
				<svg aria-hidden="true" class="e-font-icon-svg e-fas-forward" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="M500.5 231.4l-192-160C287.9 54.3 256 68.6 256 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2zm-256 0l-192-160C31.9 54.3 0 68.6 0 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2z"></path></svg>			</span>
									<span class="elementor-button-text">Suivant</span>
					</span>
					</a>
		</div>
				</div>
				</div>
					</div>
				</div>
				</div>
		]]></content:encoded>
					
					<wfw:commentRss>https://pierre-ange.delbary-rouille.net/2025/04/22/cas-fusee-13-vers-lexterieur-mise-a-disposition-du-projet-a-la-communaute/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>CAS FUSÉE &#8211; 12 &#8211; Passage à un projet logiciel complet &#8211; Création d’une interface web interactive et complète</title>
		<link>https://pierre-ange.delbary-rouille.net/2025/04/22/cas-fusee-12-passage-a-un-projet-logiciel-complet-creation-dune-interface-web-interactive-et-complete/</link>
					<comments>https://pierre-ange.delbary-rouille.net/2025/04/22/cas-fusee-12-passage-a-un-projet-logiciel-complet-creation-dune-interface-web-interactive-et-complete/#respond</comments>
		
		<dc:creator><![CDATA[pierre.ange.delbary.rouille@gmail.com]]></dc:creator>
		<pubDate>Tue, 22 Apr 2025 15:54:26 +0000</pubDate>
				<category><![CDATA[Projet Fusées]]></category>
		<category><![CDATA[Techniques Informatiques]]></category>
		<guid isPermaLink="false">https://pierre-ange.delbary-rouille.net/?p=3690</guid>

					<description><![CDATA[Précédent Suivant Partie 3 &#8211; Passage à un projet logiciel complet &#8211; Création d’une interface web interactive et complète Une fois mon API opérationnelle avec Symfony et API Platform, j’ai pu me concentrer sur la construction de l’interface utilisateur, en JavaScript, pour permettre une interaction fluide avec l’API. L’objectif était de proposer une expérience complète [&#8230;]]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="3690" class="elementor elementor-3690" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-17e7833f e-grid e-con-boxed e-con e-parent" data-id="17e7833f" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-72eb196f elementor-button-info prev-chapter-button elementor-widget elementor-widget-button" data-id="72eb196f" data-element_type="widget" data-widget_type="button.default">
				<div class="elementor-widget-container">
					<div class="elementor-button-wrapper">
			<a class="elementor-button elementor-button-link elementor-size-sm" href="/2025/04/22/cas-fusee-11-passage-a-un-projet-logiciel-complet-developpement-de-la-partie-serveur-avec-api-platform/">
						<span class="elementor-button-content-wrapper">
						<span class="elementor-button-icon">
				<svg aria-hidden="true" class="e-font-icon-svg e-fas-backward" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="M11.5 280.6l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2zm256 0l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2z"></path></svg>			</span>
									<span class="elementor-button-text">Précédent</span>
					</span>
					</a>
		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-48f2277a elementor-align-right next-chapter-button elementor-widget elementor-widget-button" data-id="48f2277a" data-element_type="widget" data-widget_type="button.default">
				<div class="elementor-widget-container">
					<div class="elementor-button-wrapper">
			<a class="elementor-button elementor-button-link elementor-size-sm" href="/2025/04/22/cas-fusee-13-vers-lexterieur-mise-a-disposition-du-projet-a-la-communaute/">
						<span class="elementor-button-content-wrapper">
						<span class="elementor-button-icon">
				<svg aria-hidden="true" class="e-font-icon-svg e-fas-forward" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="M500.5 231.4l-192-160C287.9 54.3 256 68.6 256 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2zm-256 0l-192-160C31.9 54.3 0 68.6 0 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2z"></path></svg>			</span>
									<span class="elementor-button-text">Suivant</span>
					</span>
					</a>
		</div>
				</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-533a8270 e-flex e-con-boxed e-con e-parent" data-id="533a8270" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-69218320 elementor-widget elementor-widget-heading" data-id="69218320" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h2 class="elementor-heading-title elementor-size-default">Partie 3 - Passage à un projet logiciel complet - Création d’une interface web interactive et complète</h2>		</div>
				</div>
				<div class="elementor-element elementor-element-4a53a9e0 elementor-widget elementor-widget-text-editor" data-id="4a53a9e0" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Une fois mon API opérationnelle avec Symfony et API Platform, j’ai pu me concentrer sur la construction de l’interface utilisateur, en JavaScript, pour permettre une interaction fluide avec l’API. L’objectif était de proposer une expérience complète : connexion, consultation des modèles de fusées, lancement de simulations, et enregistrement des résultats.</p><p>Le point de départ a été la page de connexion. Plutôt que d’utiliser un formulaire Symfony classique avec form_login, j’ai opté pour un fonctionnement 100% JavaScript, en envoyant les identifiants à la route /api/login via fetch(). En réponse, le serveur retourne un JWT (JSON Web Token) que je stocke côté client et que je réutilise pour authentifier les requêtes suivantes. Ce choix rend l’application stateless, donc plus simple à maintenir et plus flexible à déployer.</p><p>Pour centraliser toute cette logique, j’ai créé une classe JavaScript nommée RocketAuthentication, contenant des méthodes statiques comme :</p><ul><li>login(username, password),</li><li>logout(),</li><li>isAuthenticated(),</li><li>fetchWithAuth(url, options).</li></ul><p>Cette classe gère le stockage du token, l’ajout automatique du header Authorization, et la redirection vers la page de login en cas d’échec. Cela m’a permis de sécuriser toutes les requêtes sans dupliquer le code partout.</p><p>Ensuite, j’ai construit différentes pages ou composants :</p><ul><li>un tableau listant les RocketModules appartenant à l’utilisateur connecté,</li><li>des formulaires pour en ajouter ou modifier,</li><li>une interface pour composer une simulation en combinant un module, des sous-modules et un script de mouvement,</li><li>une visualisation en temps réel du vol à l’aide de Canvas,</li><li>et une possibilité d’enregistrer les résultats de la simulation pour les consulter plus tard.</li></ul><p>Tout cela repose sur des appels fetch() à l’API, enrichis avec le token d’authentification, et des réponses JSON que je transforme dynamiquement en éléments HTML. L’interface utilise Tailwind CSS, ce qui m’a permis de gagner du temps sur le style tout en gardant un rendu propre et lisible.</p><p>J’ai aussi mis en place une gestion des erreurs utilisateur : messages si un champ est mal rempli, si l’identifiant est déjà pris, ou si une requête échoue. Cela donne à l’application un aspect plus professionnel, et évite les frustrations pour les utilisateurs.</p><p>Enfin, j’ai intégré un système de déconnexion simple, qui efface le token du stockage local et redirige vers la page de login. Ce genre de détail peut sembler mineur, mais il est essentiel pour offrir une application complète et cohérente.</p>						</div>
				</div>
		<div class="elementor-element elementor-element-d9df24f e-con-full e-flex e-con e-child" data-id="d9df24f" data-element_type="container">
				<div class="elementor-element elementor-element-0f279e9 elementor-widget elementor-widget-image" data-id="0f279e9" data-element_type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
													<img decoding="async" width="1024" height="637" src="https://pierre-ange.delbary-rouille.net/wp-content/uploads/2025/04/login-window-1024x637.png" class="attachment-large size-large wp-image-4332" alt="Fenêtre de Login" srcset="https://pierre-ange.delbary-rouille.net/wp-content/uploads/2025/04/login-window-1024x637.png 1024w, https://pierre-ange.delbary-rouille.net/wp-content/uploads/2025/04/login-window-300x187.png 300w, https://pierre-ange.delbary-rouille.net/wp-content/uploads/2025/04/login-window-768x478.png 768w, https://pierre-ange.delbary-rouille.net/wp-content/uploads/2025/04/login-window-1536x956.png 1536w, https://pierre-ange.delbary-rouille.net/wp-content/uploads/2025/04/login-window-2048x1274.png 2048w" sizes="(max-width: 1024px) 100vw, 1024px" />													</div>
				</div>
				<div class="elementor-element elementor-element-b6e6b6a elementor-widget-divider--view-line elementor-widget elementor-widget-divider" data-id="b6e6b6a" data-element_type="widget" data-widget_type="divider.default">
				<div class="elementor-widget-container">
					<div class="elementor-divider">
			<span class="elementor-divider-separator">
						</span>
		</div>
				</div>
				</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-7801fee2 e-grid e-con-boxed e-con e-parent" data-id="7801fee2" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-9a56262 elementor-view-stacked elementor-shape-circle elementor-widget elementor-widget-icon" data-id="9a56262" data-element_type="widget" data-widget_type="icon.default">
				<div class="elementor-widget-container">
					<div class="elementor-icon-wrapper">
			<div class="elementor-icon">
			<svg aria-hidden="true" class="e-font-icon-svg e-far-comment-dots" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="M144 208c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm112 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm112 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zM256 32C114.6 32 0 125.1 0 240c0 47.6 19.9 91.2 52.9 126.3C38 405.7 7 439.1 6.5 439.5c-6.6 7-8.4 17.2-4.6 26S14.4 480 24 480c61.5 0 110-25.7 139.1-46.3C192 442.8 223.2 448 256 448c141.4 0 256-93.1 256-208S397.4 32 256 32zm0 368c-26.7 0-53.1-4.1-78.4-12.1l-22.7-7.2-19.5 13.8c-14.3 10.1-33.9 21.4-57.5 29 7.3-12.1 14.4-25.7 19.9-40.2l10.6-28.1-20.6-21.8C69.7 314.1 48 282.2 48 240c0-88.2 93.3-160 208-160s208 71.8 208 160-93.3 160-208 160z"></path></svg>			</div>
		</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-7541f90a e-grid e-con-full e-con e-child" data-id="7541f90a" data-element_type="container">
				<div class="elementor-element elementor-element-19dfcb7a elementor-widget elementor-widget-heading" data-id="19dfcb7a" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h2 class="elementor-heading-title elementor-size-default">Synthèse</h2>		</div>
				</div>
				<div class="elementor-element elementor-element-1daba622 elementor-widget elementor-widget-text-editor" data-id="1daba622" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>La création de l’interface web m’a permis de relier toutes les briques de mon projet : physique, calcul, API, et interaction utilisateur. J’ai appris à créer une expérience fluide, où chaque action côté client déclenche une opération serveur via une API sécurisée. Cette étape m’a aussi sensibilisé à l’importance de l’ergonomie, de la robustesse, et de la clarté dans une interface destinée à être utilisée par d’autres que moi.</p>						</div>
				</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-76b7ce01 e-grid e-con-boxed e-con e-parent" data-id="76b7ce01" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-3f1076e elementor-button-info prev-chapter-button elementor-widget elementor-widget-button" data-id="3f1076e" data-element_type="widget" data-widget_type="button.default">
				<div class="elementor-widget-container">
					<div class="elementor-button-wrapper">
			<a class="elementor-button elementor-button-link elementor-size-sm" href="/2025/04/22/cas-fusee-11-passage-a-un-projet-logiciel-complet-developpement-de-la-partie-serveur-avec-api-platform/">
						<span class="elementor-button-content-wrapper">
						<span class="elementor-button-icon">
				<svg aria-hidden="true" class="e-font-icon-svg e-fas-backward" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="M11.5 280.6l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2zm256 0l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2z"></path></svg>			</span>
									<span class="elementor-button-text">Précédent</span>
					</span>
					</a>
		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-1edc1d8d elementor-align-right next-chapter-button elementor-widget elementor-widget-button" data-id="1edc1d8d" data-element_type="widget" data-widget_type="button.default">
				<div class="elementor-widget-container">
					<div class="elementor-button-wrapper">
			<a class="elementor-button elementor-button-link elementor-size-sm" href="/2025/04/22/cas-fusee-13-vers-lexterieur-mise-a-disposition-du-projet-a-la-communaute/">
						<span class="elementor-button-content-wrapper">
						<span class="elementor-button-icon">
				<svg aria-hidden="true" class="e-font-icon-svg e-fas-forward" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="M500.5 231.4l-192-160C287.9 54.3 256 68.6 256 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2zm-256 0l-192-160C31.9 54.3 0 68.6 0 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2z"></path></svg>			</span>
									<span class="elementor-button-text">Suivant</span>
					</span>
					</a>
		</div>
				</div>
				</div>
					</div>
				</div>
				</div>
		]]></content:encoded>
					
					<wfw:commentRss>https://pierre-ange.delbary-rouille.net/2025/04/22/cas-fusee-12-passage-a-un-projet-logiciel-complet-creation-dune-interface-web-interactive-et-complete/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>CAS FUSÉE &#8211; 11 &#8211; Passage à un projet logiciel complet &#8211; Développement de la partie serveur avec API Platform</title>
		<link>https://pierre-ange.delbary-rouille.net/2025/04/22/cas-fusee-11-passage-a-un-projet-logiciel-complet-developpement-de-la-partie-serveur-avec-api-platform/</link>
					<comments>https://pierre-ange.delbary-rouille.net/2025/04/22/cas-fusee-11-passage-a-un-projet-logiciel-complet-developpement-de-la-partie-serveur-avec-api-platform/#respond</comments>
		
		<dc:creator><![CDATA[pierre.ange.delbary.rouille@gmail.com]]></dc:creator>
		<pubDate>Tue, 22 Apr 2025 15:47:07 +0000</pubDate>
				<category><![CDATA[Projet Fusées]]></category>
		<category><![CDATA[Techniques Informatiques]]></category>
		<guid isPermaLink="false">https://pierre-ange.delbary-rouille.net/?p=3679</guid>

					<description><![CDATA[Précédent Suivant Partie 3 &#8211; Passage à un projet logiciel complet &#8211; Développement de la partie serveur avec API Platform Une fois que j’avais appris à utiliser Symfony et mis en place les premières entités, j’ai intégré API Platform, un outil extrêmement puissant qui permet de transformer une application Symfony en API REST complète, sans [&#8230;]]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="3679" class="elementor elementor-3679" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-61039ee3 e-grid e-con-boxed e-con e-parent" data-id="61039ee3" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-34fa4257 elementor-button-info prev-chapter-button elementor-widget elementor-widget-button" data-id="34fa4257" data-element_type="widget" data-widget_type="button.default">
				<div class="elementor-widget-container">
					<div class="elementor-button-wrapper">
			<a class="elementor-button elementor-button-link elementor-size-sm" href="/2025/04/22/cas-fusee-10-passage-a-un-projet-logiciel-complet-decouverte-de-php-et-du-framework-symfony/">
						<span class="elementor-button-content-wrapper">
						<span class="elementor-button-icon">
				<svg aria-hidden="true" class="e-font-icon-svg e-fas-backward" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="M11.5 280.6l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2zm256 0l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2z"></path></svg>			</span>
									<span class="elementor-button-text">Précédent</span>
					</span>
					</a>
		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-4932c30f elementor-align-right next-chapter-button elementor-widget elementor-widget-button" data-id="4932c30f" data-element_type="widget" data-widget_type="button.default">
				<div class="elementor-widget-container">
					<div class="elementor-button-wrapper">
			<a class="elementor-button elementor-button-link elementor-size-sm" href="/2025/04/22/cas-fusee-12-passage-a-un-projet-logiciel-complet-creation-dune-interface-web-interactive-et-complete/">
						<span class="elementor-button-content-wrapper">
						<span class="elementor-button-icon">
				<svg aria-hidden="true" class="e-font-icon-svg e-fas-forward" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="M500.5 231.4l-192-160C287.9 54.3 256 68.6 256 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2zm-256 0l-192-160C31.9 54.3 0 68.6 0 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2z"></path></svg>			</span>
									<span class="elementor-button-text">Suivant</span>
					</span>
					</a>
		</div>
				</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-2d3a3a85 e-flex e-con-boxed e-con e-parent" data-id="2d3a3a85" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-5b5d83b9 elementor-widget elementor-widget-heading" data-id="5b5d83b9" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h2 class="elementor-heading-title elementor-size-default">Partie 3 - Passage à un projet logiciel complet - Développement de la partie serveur avec API Platform</h2>		</div>
				</div>
				<div class="elementor-element elementor-element-1361cee8 elementor-widget elementor-widget-text-editor" data-id="1361cee8" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Une fois que j’avais appris à utiliser Symfony et mis en place les premières entités, j’ai intégré API Platform, un outil extrêmement puissant qui permet de transformer une application Symfony en API REST complète, sans avoir à coder manuellement chaque route, contrôleur ou format de réponse.</p><p>Ce qui m’a d’abord impressionné, c’est la simplicité d’utilisation : en ajoutant quelques annotations ou attributs PHP à mes classes d’entités, API Platform expose automatiquement des routes comme GET /api/rocket_modules, POST /api/rocket_modules, etc. Cela m’a permis de gagner un temps considérable, tout en respectant les standards de l’architecture REST.</p><p>Par exemple, en exposant mes entités comme RocketModule, RocketSubModule ou RocketMotionScript, j’ai immédiatement obtenu des routes pour les consulter, les créer, les modifier ou les supprimer. De plus, API Platform génère automatiquement une documentation interactive (avec Swagger UI) que j’ai pu utiliser pour tester les requêtes et vérifier le bon fonctionnement de l’API.</p><p>J’ai également découvert que l’on pouvait configurer très finement les opérations disponibles sur chaque entité : on peut, par exemple, autoriser seulement les lectures (GET), ou bien restreindre l’écriture (POST, PUT, DELETE) aux utilisateurs authentifiés. Ces règles peuvent être définies avec des expressions Symfony (comme is_granted(&lsquo;ROLE_USER&rsquo;)), ce qui permet de gérer très précisément les droits d’accès.</p><p>Un autre aspect très utile d’API Platform est sa gestion de la sérialisation : il est possible de choisir quels champs sont exposés dans les réponses ou acceptés dans les requêtes grâce aux groupes de normalisation/dénormalisation. Cela m’a permis de cacher certaines informations sensibles (comme l’utilisateur associé à une entité) ou de structurer les réponses pour qu’elles soient plus claires côté client.</p><p>J’ai aussi pu tirer parti des filtres automatiques proposés par API Platform : en configurant quelques annotations, il devient possible de filtrer les résultats avec des paramètres dans l’URL (par exemple : GET /api/rocket_modules?owner.id=1). Cela simplifie énormément le travail côté frontend, car je n’ai pas besoin d’écrire des routes personnalisées pour chaque cas.</p><p>L’API ainsi construite a été le cœur du lien entre le backend Symfony et le frontend JavaScript. Grâce à elle, mon application web peut envoyer des requêtes HTTP, créer de nouveaux modèles de fusées, lancer des simulations, enregistrer des scripts de mouvement, et récupérer des résultats — tout cela de façon sécurisée, avec des permissions bien définies.</p><p>En parallèle, j’ai aussi pris soin de tester mes routes manuellement via Swagger, puis en JavaScript avec fetch() et mon gestionnaire d’authentification personnalisé (RocketAuthentication). Chaque test m’a permis de peaufiner les réponses, d’ajouter des validations, ou de corriger des oublis de configuration dans les entités.</p><p>Je me suis aidé de l&rsquo;outil Postman pour débugger mes appels à l&rsquo;Api. Postman permet de créer des requêtes HTTP vers le serveur et de voir tout ce qu&rsquo;il se passe simplement :</p>						</div>
				</div>
				<div class="elementor-element elementor-element-13aadfe elementor-widget elementor-widget-image" data-id="13aadfe" data-element_type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
													<img decoding="async" width="1024" height="640" src="https://pierre-ange.delbary-rouille.net/wp-content/uploads/2025/04/Api-Platform-1024x640.png" class="attachment-large size-large wp-image-4324" alt="Postman &amp; Api Platform" srcset="https://pierre-ange.delbary-rouille.net/wp-content/uploads/2025/04/Api-Platform-1024x640.png 1024w, https://pierre-ange.delbary-rouille.net/wp-content/uploads/2025/04/Api-Platform-300x188.png 300w, https://pierre-ange.delbary-rouille.net/wp-content/uploads/2025/04/Api-Platform-768x480.png 768w, https://pierre-ange.delbary-rouille.net/wp-content/uploads/2025/04/Api-Platform-1536x960.png 1536w, https://pierre-ange.delbary-rouille.net/wp-content/uploads/2025/04/Api-Platform-2048x1280.png 2048w" sizes="(max-width: 1024px) 100vw, 1024px" />													</div>
				</div>
		<div class="elementor-element elementor-element-e4fc48e e-con-full e-flex e-con e-child" data-id="e4fc48e" data-element_type="container">
				<div class="elementor-element elementor-element-5b6529c elementor-widget-divider--view-line elementor-widget elementor-widget-divider" data-id="5b6529c" data-element_type="widget" data-widget_type="divider.default">
				<div class="elementor-widget-container">
					<div class="elementor-divider">
			<span class="elementor-divider-separator">
						</span>
		</div>
				</div>
				</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-7087391b e-grid e-con-boxed e-con e-parent" data-id="7087391b" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-36940d84 elementor-view-stacked elementor-shape-circle elementor-widget elementor-widget-icon" data-id="36940d84" data-element_type="widget" data-widget_type="icon.default">
				<div class="elementor-widget-container">
					<div class="elementor-icon-wrapper">
			<div class="elementor-icon">
			<svg aria-hidden="true" class="e-font-icon-svg e-far-comment-dots" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="M144 208c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm112 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm112 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zM256 32C114.6 32 0 125.1 0 240c0 47.6 19.9 91.2 52.9 126.3C38 405.7 7 439.1 6.5 439.5c-6.6 7-8.4 17.2-4.6 26S14.4 480 24 480c61.5 0 110-25.7 139.1-46.3C192 442.8 223.2 448 256 448c141.4 0 256-93.1 256-208S397.4 32 256 32zm0 368c-26.7 0-53.1-4.1-78.4-12.1l-22.7-7.2-19.5 13.8c-14.3 10.1-33.9 21.4-57.5 29 7.3-12.1 14.4-25.7 19.9-40.2l10.6-28.1-20.6-21.8C69.7 314.1 48 282.2 48 240c0-88.2 93.3-160 208-160s208 71.8 208 160-93.3 160-208 160z"></path></svg>			</div>
		</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-7a99c6f5 e-grid e-con-full e-con e-child" data-id="7a99c6f5" data-element_type="container">
				<div class="elementor-element elementor-element-5f368ec9 elementor-widget elementor-widget-heading" data-id="5f368ec9" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h2 class="elementor-heading-title elementor-size-default">Synthèse</h2>		</div>
				</div>
				<div class="elementor-element elementor-element-e752dd2 elementor-widget elementor-widget-text-editor" data-id="e752dd2" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>API Platform a profondément simplifié le développement de l’API de mon projet, tout en m’obligeant à structurer proprement mes entités et à penser à la sécurité dès le départ. J’ai appris à créer une API REST moderne, documentée, filtrable, et sécurisée. C’est cette couche qui permet désormais à mon interface web de communiquer efficacement avec la base de données, de manière fluide et évolutive.</p>						</div>
				</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-654cdeda e-grid e-con-boxed e-con e-parent" data-id="654cdeda" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-472ae5 elementor-button-info prev-chapter-button elementor-widget elementor-widget-button" data-id="472ae5" data-element_type="widget" data-widget_type="button.default">
				<div class="elementor-widget-container">
					<div class="elementor-button-wrapper">
			<a class="elementor-button elementor-button-link elementor-size-sm" href="/2025/04/22/cas-fusee-10-passage-a-un-projet-logiciel-complet-decouverte-de-php-et-du-framework-symfony/">
						<span class="elementor-button-content-wrapper">
						<span class="elementor-button-icon">
				<svg aria-hidden="true" class="e-font-icon-svg e-fas-backward" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="M11.5 280.6l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2zm256 0l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2z"></path></svg>			</span>
									<span class="elementor-button-text">Précédent</span>
					</span>
					</a>
		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-4966ffb6 elementor-align-right next-chapter-button elementor-widget elementor-widget-button" data-id="4966ffb6" data-element_type="widget" data-widget_type="button.default">
				<div class="elementor-widget-container">
					<div class="elementor-button-wrapper">
			<a class="elementor-button elementor-button-link elementor-size-sm" href="/2025/04/22/cas-fusee-12-passage-a-un-projet-logiciel-complet-creation-dune-interface-web-interactive-et-complete/">
						<span class="elementor-button-content-wrapper">
						<span class="elementor-button-icon">
				<svg aria-hidden="true" class="e-font-icon-svg e-fas-forward" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="M500.5 231.4l-192-160C287.9 54.3 256 68.6 256 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2zm-256 0l-192-160C31.9 54.3 0 68.6 0 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2z"></path></svg>			</span>
									<span class="elementor-button-text">Suivant</span>
					</span>
					</a>
		</div>
				</div>
				</div>
					</div>
				</div>
				</div>
		]]></content:encoded>
					
					<wfw:commentRss>https://pierre-ange.delbary-rouille.net/2025/04/22/cas-fusee-11-passage-a-un-projet-logiciel-complet-developpement-de-la-partie-serveur-avec-api-platform/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>CAS FUSÉE &#8211; 10 &#8211; Passage à un projet logiciel complet &#8211; Découverte de PHP et du framework Symfony</title>
		<link>https://pierre-ange.delbary-rouille.net/2025/04/22/cas-fusee-10-passage-a-un-projet-logiciel-complet-decouverte-de-php-et-du-framework-symfony/</link>
					<comments>https://pierre-ange.delbary-rouille.net/2025/04/22/cas-fusee-10-passage-a-un-projet-logiciel-complet-decouverte-de-php-et-du-framework-symfony/#respond</comments>
		
		<dc:creator><![CDATA[pierre.ange.delbary.rouille@gmail.com]]></dc:creator>
		<pubDate>Tue, 22 Apr 2025 15:44:10 +0000</pubDate>
				<category><![CDATA[Projet Fusées]]></category>
		<category><![CDATA[Techniques Informatiques]]></category>
		<guid isPermaLink="false">https://pierre-ange.delbary-rouille.net/?p=3668</guid>

					<description><![CDATA[Précédent Suivant Partie 3 &#8211; Passage à un projet logiciel complet &#8211; Découverte de PHP et du framework Symfony Pour développer la partie serveur de mon projet, j’ai dû apprendre un langage que je n’avais jamais utilisé auparavant : PHP. Ce n’était pas un choix imposé, mais plutôt une décision guidée par la réputation du [&#8230;]]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="3668" class="elementor elementor-3668" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-21ff12b4 e-grid e-con-boxed e-con e-parent" data-id="21ff12b4" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-6d398123 elementor-button-info prev-chapter-button elementor-widget elementor-widget-button" data-id="6d398123" data-element_type="widget" data-widget_type="button.default">
				<div class="elementor-widget-container">
					<div class="elementor-button-wrapper">
			<a class="elementor-button elementor-button-link elementor-size-sm" href="/2025/04/22/cas-fusee-9-passage-a-un-projet-logiciel-complet-passage-a-une-architecture-plus-complexe/">
						<span class="elementor-button-content-wrapper">
						<span class="elementor-button-icon">
				<svg aria-hidden="true" class="e-font-icon-svg e-fas-backward" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="M11.5 280.6l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2zm256 0l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2z"></path></svg>			</span>
									<span class="elementor-button-text">Précédent</span>
					</span>
					</a>
		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-102310b elementor-align-right next-chapter-button elementor-widget elementor-widget-button" data-id="102310b" data-element_type="widget" data-widget_type="button.default">
				<div class="elementor-widget-container">
					<div class="elementor-button-wrapper">
			<a class="elementor-button elementor-button-link elementor-size-sm" href="/2025/04/22/cas-fusee-11-passage-a-un-projet-logiciel-complet-developpement-de-la-partie-serveur-avec-api-platform/">
						<span class="elementor-button-content-wrapper">
						<span class="elementor-button-icon">
				<svg aria-hidden="true" class="e-font-icon-svg e-fas-forward" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="M500.5 231.4l-192-160C287.9 54.3 256 68.6 256 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2zm-256 0l-192-160C31.9 54.3 0 68.6 0 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2z"></path></svg>			</span>
									<span class="elementor-button-text">Suivant</span>
					</span>
					</a>
		</div>
				</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-68c9fb25 e-flex e-con-boxed e-con e-parent" data-id="68c9fb25" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-2af7d0ce elementor-widget elementor-widget-heading" data-id="2af7d0ce" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h2 class="elementor-heading-title elementor-size-default">Partie 3 - Passage à un projet logiciel complet - Découverte de PHP et du framework Symfony</h2>		</div>
				</div>
				<div class="elementor-element elementor-element-477d5e9a elementor-widget elementor-widget-text-editor" data-id="477d5e9a" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Pour développer la partie serveur de mon projet, j’ai dû apprendre un langage que je n’avais jamais utilisé auparavant : PHP. Ce n’était pas un choix imposé, mais plutôt une décision guidée par la réputation du framework Symfony, largement utilisé dans les projets web professionnels, et très bien documenté.</p><p>Heureusement, le passage de JavaScript à PHP ne m’a pas semblé aussi difficile que je l’aurais cru. Une fois qu’on a compris les concepts fondamentaux de la programmation — variables, fonctions, boucles, objets, classes — il devient beaucoup plus facile d’aborder un nouveau langage. Certes, la syntaxe change, et certains détails peuvent surprendre (comme la gestion des tableaux ou des chaînes), mais la logique globale reste très proche.</p><p>Par exemple, la création de classes en PHP est presque identique à ce que j’avais vu en JavaScript : définition d’un constructeur, méthodes, propriétés, visibilité (public, private), etc. Les idées de modularité, d’encapsulation, ou d’héritage sont similaires. Le changement principal concerne la rigueur : PHP (surtout en version 8+) est plus strict que JavaScript, et cela m’a poussé à mieux organiser mon code.</p><p>En revanche, ce qui a vraiment représenté un saut en complexité, ce n’est pas tant le langage PHP lui-même que l’utilisation du framework Symfony. Symfony impose une architecture précise, avec ses conventions, ses dépendances, ses annotations, et ses outils en ligne de commande. C’est un écosystème très riche, mais cela peut être intimidant au début. Il m’a fallu un peu de temps pour comprendre comment tout s’emboîte : entités, contrôleurs, routes, services, événements, etc.</p><p>L’un des premiers aspects que j’ai appréciés, c’est la gestion automatique des entités avec Doctrine (l’ORM de Symfony). Il suffit de définir une classe PHP représentant une entité (comme une fusée ou une trajectoire), et Symfony génère les tables SQL correspondantes, ainsi que toutes les opérations de base (création, mise à jour, suppression). Cela m’a fait gagner beaucoup de temps, tout en m’obligeant à penser les relations entre objets (OneToMany, ManyToMany, etc.).</p><p>Un autre point très puissant de Symfony est son intégration avec API Platform. Grâce à ce bundle, je n’ai quasiment pas eu besoin de coder les routes de mon API manuellement. Il suffit d’annoter une entité avec des métadonnées, et API Platform expose automatiquement les endpoints nécessaires pour interagir avec cette entité en JSON. J’ai pu ainsi construire en quelques heures une API REST complète, avec gestion automatique du filtrage, de la pagination, et de la sérialisation.</p><p>Symfony m’a aussi permis de mettre en place un système d’authentification par JWT, en combinant quelques bundles comme lexik/jwt-authentication-bundle. Après avoir bien compris comment fonctionne le système de firewall et de “security voter”, j’ai pu protéger les routes, restreindre certaines opérations aux utilisateurs connectés, et exposer un endpoint /api/login utilisé directement par mon frontend.</p><p>Enfin, j’ai appris à configurer Symfony pour fonctionner en local avec Docker, ce qui simplifie énormément le déploiement. J’ai même couplé le tout avec une base de données MySQL et un reverse proxy, ce qui m’a permis de simuler un environnement de production complet.</p>						</div>
				</div>
		<div class="elementor-element elementor-element-6ee3f93 e-con-full e-flex e-con e-child" data-id="6ee3f93" data-element_type="container">
				<div class="elementor-element elementor-element-7264da8 elementor-widget-divider--view-line elementor-widget elementor-widget-divider" data-id="7264da8" data-element_type="widget" data-widget_type="divider.default">
				<div class="elementor-widget-container">
					<div class="elementor-divider">
			<span class="elementor-divider-separator">
						</span>
		</div>
				</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-4b48bf7 e-con-full e-flex e-con e-child" data-id="4b48bf7" data-element_type="container">
				<div class="elementor-element elementor-element-1608082 elementor-widget elementor-widget-heading" data-id="1608082" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h2 class="elementor-heading-title elementor-size-default">Comparatif JavaScript / PHP (Symfony)</h2>		</div>
				</div>
				<div class="elementor-element elementor-element-4599ced elementor-widget elementor-widget-tablepress-table" data-id="4599ced" data-element_type="widget" data-widget_type="tablepress-table.default">
				<div class="elementor-widget-container">
			
<table id="tablepress-3" class="tablepress tablepress-id-3">
<thead>
<tr class="row-1">
	<th class="column-1">Aspect</th><th class="column-2">JavaScript</th><th class="column-3">PHP (avec Symfony)</th>
</tr>
</thead>
<tbody class="row-striping row-hover">
<tr class="row-2">
	<td class="column-1">Déclaration de classes</td><td class="column-2">`class MaClasse { ... }`</td><td class="column-3">`class MaClasse { ... }` (similaire)</td>
</tr>
<tr class="row-3">
	<td class="column-1">Constructeurs</td><td class="column-2">`constructor(...)`</td><td class="column-3">`__construct(...)`</td>
</tr>
<tr class="row-4">
	<td class="column-1">Visibilité des membres</td><td class="column-2">`this.nom = ...` (public par défaut)</td><td class="column-3">`public`, `private`, `protected` explicites</td>
</tr>
<tr class="row-5">
	<td class="column-1">Typage</td><td class="column-2">Faiblement typé</td><td class="column-3">De plus en plus fortement typé (avec PHP 8)</td>
</tr>
<tr class="row-6">
	<td class="column-1">Organisation du projet</td><td class="column-2">Libre, souple</td><td class="column-3">Structurée (MVC, dossiers imposés)</td>
</tr>
<tr class="row-7">
	<td class="column-1">Routage/API</td><td class="column-2">Manuel (`fetch`, Express, etc.)</td><td class="column-3">Automatisé via API Platform</td>
</tr>
<tr class="row-8">
	<td class="column-1">Sécurité</td><td class="column-2">À construire manuellement</td><td class="column-3">Intégrée avec bundles et firewalls</td>
</tr>
</tbody>
</table>
		</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-5409c40 e-con-full e-flex e-con e-child" data-id="5409c40" data-element_type="container">
				<div class="elementor-element elementor-element-eee101d elementor-widget-divider--view-line elementor-widget elementor-widget-divider" data-id="eee101d" data-element_type="widget" data-widget_type="divider.default">
				<div class="elementor-widget-container">
					<div class="elementor-divider">
			<span class="elementor-divider-separator">
						</span>
		</div>
				</div>
				</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-6cb4c512 e-grid e-con-boxed e-con e-parent" data-id="6cb4c512" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-1a6b64fd elementor-view-stacked elementor-shape-circle elementor-widget elementor-widget-icon" data-id="1a6b64fd" data-element_type="widget" data-widget_type="icon.default">
				<div class="elementor-widget-container">
					<div class="elementor-icon-wrapper">
			<div class="elementor-icon">
			<svg aria-hidden="true" class="e-font-icon-svg e-far-comment-dots" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="M144 208c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm112 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm112 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zM256 32C114.6 32 0 125.1 0 240c0 47.6 19.9 91.2 52.9 126.3C38 405.7 7 439.1 6.5 439.5c-6.6 7-8.4 17.2-4.6 26S14.4 480 24 480c61.5 0 110-25.7 139.1-46.3C192 442.8 223.2 448 256 448c141.4 0 256-93.1 256-208S397.4 32 256 32zm0 368c-26.7 0-53.1-4.1-78.4-12.1l-22.7-7.2-19.5 13.8c-14.3 10.1-33.9 21.4-57.5 29 7.3-12.1 14.4-25.7 19.9-40.2l10.6-28.1-20.6-21.8C69.7 314.1 48 282.2 48 240c0-88.2 93.3-160 208-160s208 71.8 208 160-93.3 160-208 160z"></path></svg>			</div>
		</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-75f699d6 e-grid e-con-full e-con e-child" data-id="75f699d6" data-element_type="container">
				<div class="elementor-element elementor-element-16218e2f elementor-widget elementor-widget-heading" data-id="16218e2f" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h2 class="elementor-heading-title elementor-size-default">Synthèse</h2>		</div>
				</div>
				<div class="elementor-element elementor-element-a0833d elementor-widget elementor-widget-text-editor" data-id="a0833d" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							Apprendre PHP ne m’a pas semblé très difficile, car les bases étaient similaires à celles que j’avais acquises en JavaScript. Ce qui a demandé le plus de travail, c’est la prise en main du framework Symfony, qui impose une manière rigoureuse de structurer un projet. Cela m’a forcé à adopter une organisation professionnelle, à mieux séparer les responsabilités dans mon code, et à construire une API propre, documentée et sécurisée. C’est cette étape qui a fait passer mon projet d’un simple prototype à une application sérieuse.						</div>
				</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-19fa4c08 e-grid e-con-boxed e-con e-parent" data-id="19fa4c08" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-5fe3e8ac elementor-button-info prev-chapter-button elementor-widget elementor-widget-button" data-id="5fe3e8ac" data-element_type="widget" data-widget_type="button.default">
				<div class="elementor-widget-container">
					<div class="elementor-button-wrapper">
			<a class="elementor-button elementor-button-link elementor-size-sm" href="/2025/04/22/cas-fusee-9-passage-a-un-projet-logiciel-complet-passage-a-une-architecture-plus-complexe/">
						<span class="elementor-button-content-wrapper">
						<span class="elementor-button-icon">
				<svg aria-hidden="true" class="e-font-icon-svg e-fas-backward" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="M11.5 280.6l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2zm256 0l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2z"></path></svg>			</span>
									<span class="elementor-button-text">Précédent</span>
					</span>
					</a>
		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-6c201e15 elementor-align-right next-chapter-button elementor-widget elementor-widget-button" data-id="6c201e15" data-element_type="widget" data-widget_type="button.default">
				<div class="elementor-widget-container">
					<div class="elementor-button-wrapper">
			<a class="elementor-button elementor-button-link elementor-size-sm" href="/2025/04/22/cas-fusee-11-passage-a-un-projet-logiciel-complet-developpement-de-la-partie-serveur-avec-api-platform/">
						<span class="elementor-button-content-wrapper">
						<span class="elementor-button-icon">
				<svg aria-hidden="true" class="e-font-icon-svg e-fas-forward" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="M500.5 231.4l-192-160C287.9 54.3 256 68.6 256 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2zm-256 0l-192-160C31.9 54.3 0 68.6 0 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2z"></path></svg>			</span>
									<span class="elementor-button-text">Suivant</span>
					</span>
					</a>
		</div>
				</div>
				</div>
					</div>
				</div>
				</div>
		]]></content:encoded>
					
					<wfw:commentRss>https://pierre-ange.delbary-rouille.net/2025/04/22/cas-fusee-10-passage-a-un-projet-logiciel-complet-decouverte-de-php-et-du-framework-symfony/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>CAS FUSÉE &#8211; 9 &#8211; Passage à un projet logiciel complet &#8211; Passage à une architecture plus complexe</title>
		<link>https://pierre-ange.delbary-rouille.net/2025/04/22/cas-fusee-9-passage-a-un-projet-logiciel-complet-passage-a-une-architecture-plus-complexe/</link>
					<comments>https://pierre-ange.delbary-rouille.net/2025/04/22/cas-fusee-9-passage-a-un-projet-logiciel-complet-passage-a-une-architecture-plus-complexe/#respond</comments>
		
		<dc:creator><![CDATA[pierre.ange.delbary.rouille@gmail.com]]></dc:creator>
		<pubDate>Tue, 22 Apr 2025 15:39:23 +0000</pubDate>
				<category><![CDATA[Projet Fusées]]></category>
		<category><![CDATA[Techniques Informatiques]]></category>
		<guid isPermaLink="false">https://pierre-ange.delbary-rouille.net/?p=3663</guid>

					<description><![CDATA[Précédent Suivant Partie 3 &#8211; Passage à un projet logiciel complet &#8211; Passage à une architecture plus complexe Après avoir terminé une version stable de ma simulation en JavaScript, j’ai commencé à réfléchir à ce que le projet pourrait devenir s’il devait accueillir plusieurs utilisateurs, gérer des modèles de fusées différents, ou sauvegarder des données. [&#8230;]]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="3663" class="elementor elementor-3663" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-399a1cd0 e-grid e-con-boxed e-con e-parent" data-id="399a1cd0" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-2d47c8ef elementor-button-info prev-chapter-button elementor-widget elementor-widget-button" data-id="2d47c8ef" data-element_type="widget" data-widget_type="button.default">
				<div class="elementor-widget-container">
					<div class="elementor-button-wrapper">
			<a class="elementor-button elementor-button-link elementor-size-sm" href="/2025/04/22/cas-fusee-8-du-prototype-a-letude-mathematique-redaction-de-linternal-assessment-ia/">
						<span class="elementor-button-content-wrapper">
						<span class="elementor-button-icon">
				<svg aria-hidden="true" class="e-font-icon-svg e-fas-backward" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="M11.5 280.6l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2zm256 0l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2z"></path></svg>			</span>
									<span class="elementor-button-text">Précédent</span>
					</span>
					</a>
		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-dfbff24 elementor-align-right next-chapter-button elementor-widget elementor-widget-button" data-id="dfbff24" data-element_type="widget" data-widget_type="button.default">
				<div class="elementor-widget-container">
					<div class="elementor-button-wrapper">
			<a class="elementor-button elementor-button-link elementor-size-sm" href="/2025/04/22/cas-fusee-10-passage-a-un-projet-logiciel-complet-decouverte-de-php-et-du-framework-symfony/">
						<span class="elementor-button-content-wrapper">
						<span class="elementor-button-icon">
				<svg aria-hidden="true" class="e-font-icon-svg e-fas-forward" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="M500.5 231.4l-192-160C287.9 54.3 256 68.6 256 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2zm-256 0l-192-160C31.9 54.3 0 68.6 0 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2z"></path></svg>			</span>
									<span class="elementor-button-text">Suivant</span>
					</span>
					</a>
		</div>
				</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-5e98431d e-flex e-con-boxed e-con e-parent" data-id="5e98431d" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-3ead4fc9 elementor-widget elementor-widget-heading" data-id="3ead4fc9" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h2 class="elementor-heading-title elementor-size-default">Partie 3 - Passage à un projet logiciel complet - Passage à une architecture plus complexe</h2>		</div>
				</div>
				<div class="elementor-element elementor-element-26e1b409 elementor-widget elementor-widget-text-editor" data-id="26e1b409" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Après avoir terminé une version stable de ma simulation en JavaScript, j’ai commencé à réfléchir à ce que le projet pourrait devenir s’il devait accueillir plusieurs utilisateurs, gérer des modèles de fusées différents, ou sauvegarder des données. C’est à ce moment-là que j’ai compris que je ne pouvais plus me contenter de tout gérer dans le navigateur. Il me fallait une partie serveur, une base de données, et une organisation plus structurée du code. Mon petit projet personnel commençait à devenir une véritable application web.</p><p>D&rsquo;autant plus que j&rsquo;ai été contacté par mail par un étudiant italien qui avait eu connaissance de mon projet à travers un forum :</p>						</div>
				</div>
				<div class="elementor-element elementor-element-570c6c5 elementor-widget elementor-widget-image" data-id="570c6c5" data-element_type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
													<img loading="lazy" decoding="async" width="1024" height="704" src="https://pierre-ange.delbary-rouille.net/wp-content/uploads/2025/04/mail-giovanni-sciarinno-1024x704.png" class="attachment-large size-large wp-image-4671" alt="Mail Giovanni Sciarinno" srcset="https://pierre-ange.delbary-rouille.net/wp-content/uploads/2025/04/mail-giovanni-sciarinno-1024x704.png 1024w, https://pierre-ange.delbary-rouille.net/wp-content/uploads/2025/04/mail-giovanni-sciarinno-300x206.png 300w, https://pierre-ange.delbary-rouille.net/wp-content/uploads/2025/04/mail-giovanni-sciarinno-768x528.png 768w, https://pierre-ange.delbary-rouille.net/wp-content/uploads/2025/04/mail-giovanni-sciarinno-1536x1056.png 1536w, https://pierre-ange.delbary-rouille.net/wp-content/uploads/2025/04/mail-giovanni-sciarinno-2048x1408.png 2048w" sizes="(max-width: 1024px) 100vw, 1024px" />													</div>
				</div>
				<div class="elementor-element elementor-element-10c78ff elementor-widget elementor-widget-text-editor" data-id="10c78ff" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Après avoir échangé avec cet étudiant, il était maintenant clair que je devais répondre à plusieurs besoins.</p><p>Le premier besoin évident était la persistance des données. Jusqu’ici, chaque simulation était effacée dès que la page était rechargée. Je voulais permettre à un utilisateur de créer plusieurs modèles de fusées, de modifier leurs paramètres, et de consulter l’historique de ses simulations. Cela impliquait la mise en place d’un système de stockage, et donc d’une base de données.</p><p>J’ai aussi voulu ajouter un système d’authentification, afin que chacun puisse retrouver ses propres données. Cela m’a amené à découvrir les principes de la sécurité web : création de comptes, identifiants, mots de passe, gestion de sessions ou de jetons. J’ai fait le choix d’un fonctionnement stateless, basé sur des JWT (JSON Web Tokens), pour éviter d’avoir à gérer des sessions côté serveur. Cela s’intégrait mieux dans une architecture API moderne.</p><p>Pour structurer cette nouvelle partie du projet, j’ai choisi de travailler avec Symfony, un framework PHP que je ne connaissais pas encore mais qui m’a paru très complet. Il offre une gestion puissante des entités, une bonne organisation du code, et une compatibilité directe avec les bases de données relationnelles. Symfony m’a aussi permis de construire facilement une API REST, grâce au bundle API Platform, que j’ai intégré dès les premières étapes.</p><p>Cette transformation du projet m’a obligé à penser autrement. Là où je manipulais auparavant des objets JavaScript dans une seule page HTML, je devais maintenant :</p><ul><li>définir des entités persistées en base (RocketModule, RocketSubModule, RocketMotionScript),</li><li>créer des relations entre elles (ManyToMany),</li><li>exposer ces données sous forme de ressources accessibles via l’API,</li><li>sécuriser l’accès avec des firewalls, et restreindre certaines opérations aux utilisateurs authentifiés.</li></ul><p>Il m’a aussi fallu synchroniser le frontend JavaScript avec cette nouvelle API Symfony. Cela m’a conduit à revoir toute ma logique côté client : au lieu de stocker les données localement, je devais faire des appels fetch() pour interroger l’API, ajouter les bons headers d’authentification, gérer les erreurs réseau, etc. J’ai même créé une classe dédiée (RocketAuthentication) pour encapsuler cette logique.</p><p>Ce passage à un projet complexe a été un vrai tournant. J’ai compris que pour que mon projet soit utilisable à plus grande échelle, il fallait qu’il repose sur une base technique solide, avec des couches clairement séparées : données, logique, interface. Cette évolution m’a demandé beaucoup de temps, mais elle a profondément enrichi ma compréhension du développement logiciel.</p>						</div>
				</div>
		<div class="elementor-element elementor-element-46a7986 e-con-full e-flex e-con e-child" data-id="46a7986" data-element_type="container">
				<div class="elementor-element elementor-element-14e86df elementor-widget-divider--view-line elementor-widget elementor-widget-divider" data-id="14e86df" data-element_type="widget" data-widget_type="divider.default">
				<div class="elementor-widget-container">
					<div class="elementor-divider">
			<span class="elementor-divider-separator">
						</span>
		</div>
				</div>
				</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-29cf974b e-grid e-con-boxed e-con e-parent" data-id="29cf974b" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-2f3849c7 elementor-view-stacked elementor-shape-circle elementor-widget elementor-widget-icon" data-id="2f3849c7" data-element_type="widget" data-widget_type="icon.default">
				<div class="elementor-widget-container">
					<div class="elementor-icon-wrapper">
			<div class="elementor-icon">
			<svg aria-hidden="true" class="e-font-icon-svg e-far-comment-dots" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="M144 208c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm112 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm112 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zM256 32C114.6 32 0 125.1 0 240c0 47.6 19.9 91.2 52.9 126.3C38 405.7 7 439.1 6.5 439.5c-6.6 7-8.4 17.2-4.6 26S14.4 480 24 480c61.5 0 110-25.7 139.1-46.3C192 442.8 223.2 448 256 448c141.4 0 256-93.1 256-208S397.4 32 256 32zm0 368c-26.7 0-53.1-4.1-78.4-12.1l-22.7-7.2-19.5 13.8c-14.3 10.1-33.9 21.4-57.5 29 7.3-12.1 14.4-25.7 19.9-40.2l10.6-28.1-20.6-21.8C69.7 314.1 48 282.2 48 240c0-88.2 93.3-160 208-160s208 71.8 208 160-93.3 160-208 160z"></path></svg>			</div>
		</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-5634b6e e-grid e-con-full e-con e-child" data-id="5634b6e" data-element_type="container">
				<div class="elementor-element elementor-element-300dd92 elementor-widget elementor-widget-heading" data-id="300dd92" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h2 class="elementor-heading-title elementor-size-default">Synthèse</h2>		</div>
				</div>
				<div class="elementor-element elementor-element-6dd5734c elementor-widget elementor-widget-text-editor" data-id="6dd5734c" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Le passage d’un simple simulateur local à une application web complète a transformé la nature du projet. J’ai découvert la notion d’architecture logicielle, appris à utiliser un framework professionnel, et mis en place une API sécurisée. Cette étape a marqué l’entrée de mon projet dans une nouvelle dimension : celle de la scalabilité, de l’organisation, et de l’ouverture à d’autres utilisateurs.</p>						</div>
				</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-4427d77f e-grid e-con-boxed e-con e-parent" data-id="4427d77f" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-706bf1d1 elementor-button-info prev-chapter-button elementor-widget elementor-widget-button" data-id="706bf1d1" data-element_type="widget" data-widget_type="button.default">
				<div class="elementor-widget-container">
					<div class="elementor-button-wrapper">
			<a class="elementor-button elementor-button-link elementor-size-sm" href="/2025/04/22/cas-fusee-8-du-prototype-a-letude-mathematique-redaction-de-linternal-assessment-ia/">
						<span class="elementor-button-content-wrapper">
						<span class="elementor-button-icon">
				<svg aria-hidden="true" class="e-font-icon-svg e-fas-backward" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="M11.5 280.6l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2zm256 0l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2z"></path></svg>			</span>
									<span class="elementor-button-text">Précédent</span>
					</span>
					</a>
		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-393ec7fe elementor-align-right next-chapter-button elementor-widget elementor-widget-button" data-id="393ec7fe" data-element_type="widget" data-widget_type="button.default">
				<div class="elementor-widget-container">
					<div class="elementor-button-wrapper">
			<a class="elementor-button elementor-button-link elementor-size-sm" href="/2025/04/22/cas-fusee-10-passage-a-un-projet-logiciel-complet-decouverte-de-php-et-du-framework-symfony/">
						<span class="elementor-button-content-wrapper">
						<span class="elementor-button-icon">
				<svg aria-hidden="true" class="e-font-icon-svg e-fas-forward" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="M500.5 231.4l-192-160C287.9 54.3 256 68.6 256 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2zm-256 0l-192-160C31.9 54.3 0 68.6 0 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2z"></path></svg>			</span>
									<span class="elementor-button-text">Suivant</span>
					</span>
					</a>
		</div>
				</div>
				</div>
					</div>
				</div>
				</div>
		]]></content:encoded>
					
					<wfw:commentRss>https://pierre-ange.delbary-rouille.net/2025/04/22/cas-fusee-9-passage-a-un-projet-logiciel-complet-passage-a-une-architecture-plus-complexe/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>CAS FUSÉE &#8211; 8 &#8211; Du prototype à l’étude mathématique &#8211; Rédaction de l’Internal Assessment (IA)</title>
		<link>https://pierre-ange.delbary-rouille.net/2025/04/22/cas-fusee-8-du-prototype-a-letude-mathematique-redaction-de-linternal-assessment-ia/</link>
					<comments>https://pierre-ange.delbary-rouille.net/2025/04/22/cas-fusee-8-du-prototype-a-letude-mathematique-redaction-de-linternal-assessment-ia/#respond</comments>
		
		<dc:creator><![CDATA[pierre.ange.delbary.rouille@gmail.com]]></dc:creator>
		<pubDate>Tue, 22 Apr 2025 15:30:48 +0000</pubDate>
				<category><![CDATA[Projet Fusées]]></category>
		<category><![CDATA[Techniques Informatiques]]></category>
		<guid isPermaLink="false">https://pierre-ange.delbary-rouille.net/?p=3655</guid>

					<description><![CDATA[Précédent Suivant Partie 2 &#8211; Du prototype à l’étude mathématique &#8211; Rédaction de l’Internal Assessment (IA) Alors que je poursuivais le développement de ma simulation JavaScript, j’ai rapidement réalisé que le projet pouvait aussi servir de base solide pour mon Internal Assessment (IA) en mathématiques dans le cadre de l’IB. J’avais déjà collecté un grand [&#8230;]]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="3655" class="elementor elementor-3655" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-7f0e5c81 e-grid e-con-boxed e-con e-parent" data-id="7f0e5c81" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-31b6a517 elementor-button-info prev-chapter-button elementor-widget elementor-widget-button" data-id="31b6a517" data-element_type="widget" data-widget_type="button.default">
				<div class="elementor-widget-container">
					<div class="elementor-button-wrapper">
			<a class="elementor-button elementor-button-link elementor-size-sm" href="/2025/04/22/cas-fusee-7-du-prototype-a-letude-mathematique-realisation-de-la-premiere-version-javascript/">
						<span class="elementor-button-content-wrapper">
						<span class="elementor-button-icon">
				<svg aria-hidden="true" class="e-font-icon-svg e-fas-backward" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="M11.5 280.6l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2zm256 0l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2z"></path></svg>			</span>
									<span class="elementor-button-text">Précédent</span>
					</span>
					</a>
		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-70f44d0e elementor-align-right next-chapter-button elementor-widget elementor-widget-button" data-id="70f44d0e" data-element_type="widget" data-widget_type="button.default">
				<div class="elementor-widget-container">
					<div class="elementor-button-wrapper">
			<a class="elementor-button elementor-button-link elementor-size-sm" href="/2025/04/22/cas-fusee-9-passage-a-un-projet-logiciel-complet-passage-a-une-architecture-plus-complexe/">
						<span class="elementor-button-content-wrapper">
						<span class="elementor-button-icon">
				<svg aria-hidden="true" class="e-font-icon-svg e-fas-forward" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="M500.5 231.4l-192-160C287.9 54.3 256 68.6 256 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2zm-256 0l-192-160C31.9 54.3 0 68.6 0 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2z"></path></svg>			</span>
									<span class="elementor-button-text">Suivant</span>
					</span>
					</a>
		</div>
				</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-61639bde e-flex e-con-boxed e-con e-parent" data-id="61639bde" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-2eee00a7 elementor-widget elementor-widget-heading" data-id="2eee00a7" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h2 class="elementor-heading-title elementor-size-default">Partie 2 - Du prototype à l’étude mathématique - Rédaction de l’Internal Assessment (IA)</h2>		</div>
				</div>
				<div class="elementor-element elementor-element-66e9c244 elementor-widget elementor-widget-text-editor" data-id="66e9c244" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Alors que je poursuivais le développement de ma simulation JavaScript, j’ai rapidement réalisé que le projet pouvait aussi servir de base solide pour mon Internal Assessment (IA) en mathématiques dans le cadre de l’IB. J’avais déjà collecté un grand nombre de données, formulé des équations différentielles, et exploré différentes méthodes numériques. Le tout constituait une problématique concrète, bien ancrée dans un cadre scientifique rigoureux.</p><p>Pour l’IA, j’ai choisi de recentrer mon travail sur la modélisation mathématique du mouvement d’une fusée, en mettant l’accent sur l’analyse des différentes méthodes de résolution numérique. J’ai délaissé temporairement JavaScript au profit de Matlab, un environnement que je connaissais déjà un peu et qui est parfaitement adapté à ce type de travail mathématique. Matlab m’a permis de faire des calculs précis, de tracer des graphes clairs, et de tester rapidement les effets de différents paramètres (pas de temps, masse initiale, poussée, etc.).</p><p>J’ai structuré mon IA autour de trois méthodes principales : la méthode d’Euler, la méthode de Heun, et Runge-Kutta 4. Pour chacune, j’ai :</p><ul><li>expliqué le principe mathématique,</li><li>montré la mise en œuvre algorithmique,</li><li>appliqué la méthode à une fusée fictive,</li><li>comparé les résultats obtenus (trajectoires, erreurs cumulées, stabilité numérique).</li></ul><p>Ce travail m’a permis de mettre en évidence les avantages et les limites de chaque méthode. J’ai pu démontrer que, même si Euler est facile à coder, il peut générer de grandes erreurs si les variations sont rapides, tandis que RK4 offre une bien meilleure précision, au prix d’un peu plus de calculs. J’ai aussi exploré des critères de comparaison comme la convergence ou le comportement asymptotique des trajectoires.</p><p>Au-delà des résultats numériques, ce travail m’a permis de formaliser rigoureusement ce que j’avais expérimenté dans ma simulation JavaScript. En quelque sorte, l’IA a été l’occasion de théoriser ce que j’avais d’abord exploré de manière intuitive. Cela m’a aussi forcé à clarifier mes raisonnements, à poser des hypothèses, et à justifier chaque étape de manière logique, comme l’exige le cadre IB.</p><p>Le lien avec ma simulation ne s’est pas rompu pour autant. Je me suis même servi de certaines visualisations Matlab pour améliorer mon affichage graphique côté JavaScript. Et une fois l’IA terminée, j’ai pu enrichir ma simulation grâce à ce que j’avais appris : j’ai notamment validé que les calculs que j’effectuais côté client étaient cohérents avec les résultats de Matlab.</p>						</div>
				</div>
		<div class="elementor-element elementor-element-8fcb2b3 e-con-full e-flex e-con e-child" data-id="8fcb2b3" data-element_type="container">
				<div class="elementor-element elementor-element-09ddeac elementor-widget-divider--view-line elementor-widget elementor-widget-divider" data-id="09ddeac" data-element_type="widget" data-widget_type="divider.default">
				<div class="elementor-widget-container">
					<div class="elementor-divider">
			<span class="elementor-divider-separator">
						</span>
		</div>
				</div>
				</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-28d119c5 e-grid e-con-boxed e-con e-parent" data-id="28d119c5" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-7f49d589 elementor-view-stacked elementor-shape-circle elementor-widget elementor-widget-icon" data-id="7f49d589" data-element_type="widget" data-widget_type="icon.default">
				<div class="elementor-widget-container">
					<div class="elementor-icon-wrapper">
			<div class="elementor-icon">
			<svg aria-hidden="true" class="e-font-icon-svg e-far-comment-dots" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="M144 208c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm112 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm112 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zM256 32C114.6 32 0 125.1 0 240c0 47.6 19.9 91.2 52.9 126.3C38 405.7 7 439.1 6.5 439.5c-6.6 7-8.4 17.2-4.6 26S14.4 480 24 480c61.5 0 110-25.7 139.1-46.3C192 442.8 223.2 448 256 448c141.4 0 256-93.1 256-208S397.4 32 256 32zm0 368c-26.7 0-53.1-4.1-78.4-12.1l-22.7-7.2-19.5 13.8c-14.3 10.1-33.9 21.4-57.5 29 7.3-12.1 14.4-25.7 19.9-40.2l10.6-28.1-20.6-21.8C69.7 314.1 48 282.2 48 240c0-88.2 93.3-160 208-160s208 71.8 208 160-93.3 160-208 160z"></path></svg>			</div>
		</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-75ab0881 e-grid e-con-full e-con e-child" data-id="75ab0881" data-element_type="container">
				<div class="elementor-element elementor-element-c3ae996 elementor-widget elementor-widget-heading" data-id="c3ae996" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h2 class="elementor-heading-title elementor-size-default">Synthèse</h2>		</div>
				</div>
				<div class="elementor-element elementor-element-251503fb elementor-widget elementor-widget-text-editor" data-id="251503fb" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Rédiger mon Internal Assessment m’a permis de prendre du recul sur mon projet. J’ai pu analyser les fondements mathématiques de ma simulation, comparer plusieurs approches numériques, et apprendre à argumenter de manière rigoureuse. C’est aussi la première fois que je voyais un projet personnel trouver une vraie place dans un cadre académique.</p>						</div>
				</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-37fcdec5 e-grid e-con-boxed e-con e-parent" data-id="37fcdec5" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-370a394e elementor-view-stacked elementor-shape-circle elementor-widget elementor-widget-icon" data-id="370a394e" data-element_type="widget" data-widget_type="icon.default">
				<div class="elementor-widget-container">
					<div class="elementor-icon-wrapper">
			<a class="elementor-icon" href="/internal-assessments-maths/" target="_blank">
			<svg aria-hidden="true" class="e-font-icon-svg e-far-file-word" viewBox="0 0 384 512" xmlns="http://www.w3.org/2000/svg"><path d="M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48zm220.1-208c-5.7 0-10.6 4-11.7 9.5-20.6 97.7-20.4 95.4-21 103.5-.2-1.2-.4-2.6-.7-4.3-.8-5.1.3.2-23.6-99.5-1.3-5.4-6.1-9.2-11.7-9.2h-13.3c-5.5 0-10.3 3.8-11.7 9.1-24.4 99-24 96.2-24.8 103.7-.1-1.1-.2-2.5-.5-4.2-.7-5.2-14.1-73.3-19.1-99-1.1-5.6-6-9.7-11.8-9.7h-16.8c-7.8 0-13.5 7.3-11.7 14.8 8 32.6 26.7 109.5 33.2 136 1.3 5.4 6.1 9.1 11.7 9.1h25.2c5.5 0 10.3-3.7 11.6-9.1l17.9-71.4c1.5-6.2 2.5-12 3-17.3l2.9 17.3c.1.4 12.6 50.5 17.9 71.4 1.3 5.3 6.1 9.1 11.6 9.1h24.7c5.5 0 10.3-3.7 11.6-9.1 20.8-81.9 30.2-119 34.5-136 1.9-7.6-3.8-14.9-11.6-14.9h-15.8z"></path></svg>			</a>
		</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-41dde055 e-grid e-con-full e-con e-child" data-id="41dde055" data-element_type="container">
				<div class="elementor-element elementor-element-32ed9105 elementor-widget elementor-widget-heading" data-id="32ed9105" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h2 class="elementor-heading-title elementor-size-default">Annexe</h2>		</div>
				</div>
				<div class="elementor-element elementor-element-40f38a49 elementor-widget elementor-widget-text-editor" data-id="40f38a49" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Le document complet de l’Internal Assessment, rédigé dans le cadre du programme IB, est joint en annexe du rapport CAS. Il contient l’analyse détaillée des méthodes numériques appliquées à la trajectoire d’une fusée, ainsi que les graphiques, raisonnements mathématiques, et conclusions issues du travail mené sous Matlab. </p><p>Vous pouvez le télécharger en cliquant sur l&rsquo;icône.</p>						</div>
				</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-7cbda7e8 e-grid e-con-boxed e-con e-parent" data-id="7cbda7e8" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-270eff82 elementor-button-info prev-chapter-button elementor-widget elementor-widget-button" data-id="270eff82" data-element_type="widget" data-widget_type="button.default">
				<div class="elementor-widget-container">
					<div class="elementor-button-wrapper">
			<a class="elementor-button elementor-button-link elementor-size-sm" href="/2025/04/22/cas-fusee-7-du-prototype-a-letude-mathematique-realisation-de-la-premiere-version-javascript/">
						<span class="elementor-button-content-wrapper">
						<span class="elementor-button-icon">
				<svg aria-hidden="true" class="e-font-icon-svg e-fas-backward" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="M11.5 280.6l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2zm256 0l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2z"></path></svg>			</span>
									<span class="elementor-button-text">Précédent</span>
					</span>
					</a>
		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-3059267 elementor-align-right next-chapter-button elementor-widget elementor-widget-button" data-id="3059267" data-element_type="widget" data-widget_type="button.default">
				<div class="elementor-widget-container">
					<div class="elementor-button-wrapper">
			<a class="elementor-button elementor-button-link elementor-size-sm" href="/2025/04/22/cas-fusee-9-passage-a-un-projet-logiciel-complet-passage-a-une-architecture-plus-complexe/">
						<span class="elementor-button-content-wrapper">
						<span class="elementor-button-icon">
				<svg aria-hidden="true" class="e-font-icon-svg e-fas-forward" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="M500.5 231.4l-192-160C287.9 54.3 256 68.6 256 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2zm-256 0l-192-160C31.9 54.3 0 68.6 0 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2z"></path></svg>			</span>
									<span class="elementor-button-text">Suivant</span>
					</span>
					</a>
		</div>
				</div>
				</div>
					</div>
				</div>
				</div>
		]]></content:encoded>
					
					<wfw:commentRss>https://pierre-ange.delbary-rouille.net/2025/04/22/cas-fusee-8-du-prototype-a-letude-mathematique-redaction-de-linternal-assessment-ia/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>CAS FUSÉE &#8211; 7 &#8211; Du prototype à l’étude mathématique &#8211; Réalisation de la première version JavaScript</title>
		<link>https://pierre-ange.delbary-rouille.net/2025/04/22/cas-fusee-7-du-prototype-a-letude-mathematique-realisation-de-la-premiere-version-javascript/</link>
					<comments>https://pierre-ange.delbary-rouille.net/2025/04/22/cas-fusee-7-du-prototype-a-letude-mathematique-realisation-de-la-premiere-version-javascript/#respond</comments>
		
		<dc:creator><![CDATA[pierre.ange.delbary.rouille@gmail.com]]></dc:creator>
		<pubDate>Tue, 22 Apr 2025 15:25:58 +0000</pubDate>
				<category><![CDATA[Techniques Informatiques]]></category>
		<category><![CDATA[Projet Fusées]]></category>
		<guid isPermaLink="false">https://pierre-ange.delbary-rouille.net/?p=3649</guid>

					<description><![CDATA[Précédent Suivant Partie 2 &#8211; Du prototype à l’étude mathématique &#8211; Réalisation de la première « vraie » version JavaScript Une fois le premier modèle mathématique en place, j’ai décidé de passer à une version plus propre, complète et structurée en JavaScript. L’idée était de passer d’un simple script à une vraie application web interactive, qui permette [&#8230;]]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="3649" class="elementor elementor-3649" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-1b5f0ca3 e-grid e-con-boxed e-con e-parent" data-id="1b5f0ca3" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-4a2bbe66 elementor-button-info prev-chapter-button elementor-widget elementor-widget-button" data-id="4a2bbe66" data-element_type="widget" data-widget_type="button.default">
				<div class="elementor-widget-container">
					<div class="elementor-button-wrapper">
			<a class="elementor-button elementor-button-link elementor-size-sm" href="/2025/04/22/cas-fusee-6-du-prototype-a-letude-mathematique-conception-du-premier-modele-de-simulation/">
						<span class="elementor-button-content-wrapper">
						<span class="elementor-button-icon">
				<svg aria-hidden="true" class="e-font-icon-svg e-fas-backward" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="M11.5 280.6l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2zm256 0l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2z"></path></svg>			</span>
									<span class="elementor-button-text">Précédent</span>
					</span>
					</a>
		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-4f2a58f5 elementor-align-right next-chapter-button elementor-widget elementor-widget-button" data-id="4f2a58f5" data-element_type="widget" data-widget_type="button.default">
				<div class="elementor-widget-container">
					<div class="elementor-button-wrapper">
			<a class="elementor-button elementor-button-link elementor-size-sm" href="/2025/04/22/cas-fusee-8-du-prototype-a-letude-mathematique-redaction-de-linternal-assessment-ia/">
						<span class="elementor-button-content-wrapper">
						<span class="elementor-button-icon">
				<svg aria-hidden="true" class="e-font-icon-svg e-fas-forward" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="M500.5 231.4l-192-160C287.9 54.3 256 68.6 256 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2zm-256 0l-192-160C31.9 54.3 0 68.6 0 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2z"></path></svg>			</span>
									<span class="elementor-button-text">Suivant</span>
					</span>
					</a>
		</div>
				</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-61951d93 e-flex e-con-boxed e-con e-parent" data-id="61951d93" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-65e62c25 elementor-widget elementor-widget-heading" data-id="65e62c25" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h2 class="elementor-heading-title elementor-size-default">Partie 2 - Du prototype à l’étude mathématique - Réalisation de la première "vraie" version JavaScript</h2>		</div>
				</div>
				<div class="elementor-element elementor-element-23a4e831 elementor-widget elementor-widget-text-editor" data-id="23a4e831" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Une fois le premier modèle mathématique en place, j’ai décidé de passer à une version plus propre, complète et structurée en JavaScript. L’idée était de passer d’un simple script à une vraie application web interactive, qui permette de visualiser en temps réel le vol d’une fusée à partir de paramètres choisis par l’utilisateur.</p><p>J’ai commencé par revoir l’architecture de mon code. J’ai transformé ma boucle de simulation en fonction réutilisable, prenant en entrée un objet contenant les paramètres physiques de la fusée (masse, poussée, surface frontale, etc.). J’ai ensuite déplacé le calcul de la trajectoire dans une classe à part, pour isoler les éléments liés au mouvement. Cela m’a permis de préparer le terrain pour une gestion multiple de modèles de fusées dans le futur.</p><p>Sur le plan visuel, j’ai utilisé le canvas HTML5 pour tracer l’évolution de la position de la fusée en fonction du temps. J’ai aussi affiché les courbes de la vitesse et de l’accélération à l’aide de graphiques simples, pour que l’utilisateur puisse visualiser l’évolution du vol étape par étape. Même si le rendu était basique, cette étape m’a montré à quel point une simulation peut devenir pédagogique si elle est bien présentée.</p><p>L’interface HTML était encore rudimentaire : quelques champs pour entrer les paramètres (masse, poussée, durée), un bouton “Lancer”, et un petit encart pour afficher les résultats chiffrés. Mais cela suffisait à créer une interaction utilisateur. Chaque clic lançait un calcul complet et actualisait les graphiques. J’avais l’impression que mon programme « vivait ».</p><p>Pour que le code reste compréhensible et évolutif, j’ai commencé à créer un dossier js/Simulation, avec des modules séparés : un pour les constantes physiques, un autre pour les équations de mouvement, un pour l’historique des trajectoires, etc. Ce travail de séparation des responsabilités était nouveau pour moi, mais il m’a beaucoup aidé par la suite, notamment lors de l’intégration avec le backend.</p><p>J’ai aussi pris le temps d’ajouter une gestion des erreurs : si l’utilisateur entrait une poussée négative ou une masse trop faible, la simulation affichait un message explicatif plutôt que de planter. C’était un détail important pour rendre le programme utilisable par quelqu’un d’autre que moi.</p><p>Ce prototype a été la première version publique de ma simulation. Je l’ai hébergée temporairement pour la montrer à quelques amis et à un professeur de physique, ce qui m’a permis de recueillir des retours. Certains trouvaient que l’affichage était trop rapide, d’autres auraient voulu pouvoir zoomer sur les courbes. Ces remarques m’ont poussé à imaginer des évolutions futures : ajout de plusieurs axes (X/Y), inclinaison au lancement, ou même un suivi 3D.</p><p>Voilà ce que cela donnait, je commençais à être fier <img src="https://s.w.org/images/core/emoji/15.1.0/72x72/1f60b.png" alt="😋" class="wp-smiley" style="height: 1em; max-height: 1em;" /> :</p>						</div>
				</div>
		<div class="elementor-element elementor-element-62468ee e-con-full e-flex e-con e-child" data-id="62468ee" data-element_type="container">
				<div class="elementor-element elementor-element-834599f elementor-widget elementor-widget-image" data-id="834599f" data-element_type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
													<img loading="lazy" decoding="async" width="1024" height="640" src="https://pierre-ange.delbary-rouille.net/wp-content/uploads/2025/04/Deuxieme-Programme-1024x640.png" class="attachment-large size-large wp-image-4320" alt="Deuxième version du Programme" srcset="https://pierre-ange.delbary-rouille.net/wp-content/uploads/2025/04/Deuxieme-Programme-1024x640.png 1024w, https://pierre-ange.delbary-rouille.net/wp-content/uploads/2025/04/Deuxieme-Programme-300x188.png 300w, https://pierre-ange.delbary-rouille.net/wp-content/uploads/2025/04/Deuxieme-Programme-768x480.png 768w, https://pierre-ange.delbary-rouille.net/wp-content/uploads/2025/04/Deuxieme-Programme-1536x960.png 1536w, https://pierre-ange.delbary-rouille.net/wp-content/uploads/2025/04/Deuxieme-Programme-2048x1280.png 2048w" sizes="(max-width: 1024px) 100vw, 1024px" />													</div>
				</div>
				<div class="elementor-element elementor-element-9c25566 elementor-widget-divider--view-line elementor-widget elementor-widget-divider" data-id="9c25566" data-element_type="widget" data-widget_type="divider.default">
				<div class="elementor-widget-container">
					<div class="elementor-divider">
			<span class="elementor-divider-separator">
						</span>
		</div>
				</div>
				</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-4a8d1ec3 e-grid e-con-boxed e-con e-parent" data-id="4a8d1ec3" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-365839f1 elementor-view-stacked elementor-shape-circle elementor-widget elementor-widget-icon" data-id="365839f1" data-element_type="widget" data-widget_type="icon.default">
				<div class="elementor-widget-container">
					<div class="elementor-icon-wrapper">
			<div class="elementor-icon">
			<svg aria-hidden="true" class="e-font-icon-svg e-far-comment-dots" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="M144 208c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm112 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm112 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zM256 32C114.6 32 0 125.1 0 240c0 47.6 19.9 91.2 52.9 126.3C38 405.7 7 439.1 6.5 439.5c-6.6 7-8.4 17.2-4.6 26S14.4 480 24 480c61.5 0 110-25.7 139.1-46.3C192 442.8 223.2 448 256 448c141.4 0 256-93.1 256-208S397.4 32 256 32zm0 368c-26.7 0-53.1-4.1-78.4-12.1l-22.7-7.2-19.5 13.8c-14.3 10.1-33.9 21.4-57.5 29 7.3-12.1 14.4-25.7 19.9-40.2l10.6-28.1-20.6-21.8C69.7 314.1 48 282.2 48 240c0-88.2 93.3-160 208-160s208 71.8 208 160-93.3 160-208 160z"></path></svg>			</div>
		</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-73722ec5 e-grid e-con-full e-con e-child" data-id="73722ec5" data-element_type="container">
				<div class="elementor-element elementor-element-60072602 elementor-widget elementor-widget-heading" data-id="60072602" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h2 class="elementor-heading-title elementor-size-default">Synthèse</h2>		</div>
				</div>
				<div class="elementor-element elementor-element-68abcfa5 elementor-widget elementor-widget-text-editor" data-id="68abcfa5" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>La réalisation de cette première version m’a permis de passer d’une idée scientifique abstraite à une application interactive concrète. J’ai appris à structurer un projet JavaScript plus complexe, à créer une interface utilisateur simple mais fonctionnelle, et à transformer un ensemble de calculs en une simulation visuelle. C’est à ce moment-là que j’ai commencé à considérer le projet comme une vraie application, pas seulement comme un exercice personnel.</p>						</div>
				</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-42df9c28 e-grid e-con-boxed e-con e-parent" data-id="42df9c28" data-element_type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-486405d2 elementor-button-info prev-chapter-button elementor-widget elementor-widget-button" data-id="486405d2" data-element_type="widget" data-widget_type="button.default">
				<div class="elementor-widget-container">
					<div class="elementor-button-wrapper">
			<a class="elementor-button elementor-button-link elementor-size-sm" href="/2025/04/22/cas-fusee-6-du-prototype-a-letude-mathematique-conception-du-premier-modele-de-simulation/">
						<span class="elementor-button-content-wrapper">
						<span class="elementor-button-icon">
				<svg aria-hidden="true" class="e-font-icon-svg e-fas-backward" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="M11.5 280.6l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2zm256 0l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2z"></path></svg>			</span>
									<span class="elementor-button-text">Précédent</span>
					</span>
					</a>
		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-799fcf8d elementor-align-right next-chapter-button elementor-widget elementor-widget-button" data-id="799fcf8d" data-element_type="widget" data-widget_type="button.default">
				<div class="elementor-widget-container">
					<div class="elementor-button-wrapper">
			<a class="elementor-button elementor-button-link elementor-size-sm" href="/2025/04/22/cas-fusee-8-du-prototype-a-letude-mathematique-redaction-de-linternal-assessment-ia/">
						<span class="elementor-button-content-wrapper">
						<span class="elementor-button-icon">
				<svg aria-hidden="true" class="e-font-icon-svg e-fas-forward" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="M500.5 231.4l-192-160C287.9 54.3 256 68.6 256 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2zm-256 0l-192-160C31.9 54.3 0 68.6 0 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2z"></path></svg>			</span>
									<span class="elementor-button-text">Suivant</span>
					</span>
					</a>
		</div>
				</div>
				</div>
					</div>
				</div>
				</div>
		]]></content:encoded>
					
					<wfw:commentRss>https://pierre-ange.delbary-rouille.net/2025/04/22/cas-fusee-7-du-prototype-a-letude-mathematique-realisation-de-la-premiere-version-javascript/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
