<?xml version="1.0" encoding="ISO-8859-1"?>

<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
	<channel>
		<title>Forum du club des développeurs et IT Pro - Mon programme</title>
		<link>https://www.developpez.net/forums/</link>
		<description>Demandez un avis sur votre programme en cours de développement</description>
		<language>fr</language>
		<lastBuildDate>Mon, 19 Oct 2026 19:54:48 GMT</lastBuildDate>
		<generator>vBulletin</generator>
		<ttl>15</ttl>
		<image>
			<url>https://forum.developpez.be/images/misc/rss.png</url>
			<title>Forum du club des développeurs et IT Pro - Mon programme</title>
			<link>https://www.developpez.net/forums/</link>
		</image>
		<item>
			<title>Passerelle API compatible OpenAI : vos retours sur la gestion des erreurs et du basculement de modèles</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2186216&amp;goto=newpost</link>
			<pubDate>Sat, 17 Oct 2026 15:49:57 GMT</pubDate>
			<description>Bonjour à tous, 
...</description>
			<content:encoded><![CDATA[<div>Bonjour à tous,<br />
<br />
Transparence d'abord : je fais partie de l'équipe d'APIGOTO, une passerelle API indépendante compatible avec l'API OpenAI. Nous ne sommes affiliés ni à OpenAI, ni à Anthropic, ni à Google.<br />
<br />
Le principe : une seule clé et un seul format (celui d'OpenAI) pour appeler différents modèles. Côté client, on change seulement l'URL de base :<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br /></div></td><td valign="top"><pre style="margin: 0">
from openai import OpenAI
client = OpenAI(base_url=&quot;https://api.china-aiapi.com/v1&quot;, api_key=&quot;VOTRE_CLE&quot;)
r = client.chat.completions.create(model=&quot;id-du-modele&quot;, messages=[{&quot;role&quot;: &quot;user&quot;, &quot;content&quot;: &quot;Bonjour&quot;}])
print(r.choices[0].message.content)</pre></td></tr></table></code><hr />
</div>Stack : Go, Vue 3, TypeScript, PostgreSQL, Redis. Tarification à l'usage.<br />
<br />
Je viens surtout chercher des avis techniques :<br />
- Pour le basculement entre modèles (429, 5xx, timeouts), préférez-vous que la passerelle le fasse côté serveur, ou garder la logique côté client ?<br />
- Quelles informations attendez-vous dans les journaux de requêtes (latence, tokens, modèle réellement utilisé) ?<br />
- Qu'est-ce qui vous ferait hésiter à utiliser une passerelle tierce plutôt que les API directes ?<br />
<br />
Site : <a rel="nofollow" href="http://www.china-aiapi.com" target="_blank">www.china-aiapi.com</a> (<a rel="nofollow" href="https://www.china-aiapi.com/grokbot" target="_blank">https://www.china-aiapi.com/grokbot</a>)<br />
<br />
Merci d'avance pour vos critiques, même sévères.</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f369/applications/projets/programme/">Mon programme</category>
			<dc:creator>apigoto</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2186216/applications/projets/programme/passerelle-api-compatible-openai-vos-retours-gestion-erreurs-basculement-modeles/</guid>
		</item>
		<item>
			<title><![CDATA[[Freeware][API JSON] Calendrier Tempo EDF : prévisions à 15 jours et API publique sans clé]]></title>
			<link>https://www.developpez.net/forums/showthread.php?t=2186153&amp;goto=newpost</link>
			<pubDate>Wed, 14 Oct 2026 06:38:23 GMT</pubDate>
			<description>Bonjour à tous, 
 
Je suis...</description>
			<content:encoded><![CDATA[<div>Bonjour à tous,<br />
<br />
Je suis Jean-Pierre, de l'équipe qui a créé Calendrier Tempo, un service web gratuit et indépendant (non affilié à EDF ni à RTE) qui affiche la couleur Tempo du jour et du lendemain, et la prévoit jusqu'à 15 jours.<br />
<br />
nom : Calendrier Tempo EDF<br />
langue : français<br />
description : couleur Tempo officielle (aujourd'hui, demain) et prévisions des 15 jours suivants, recalculées chaque jour. L'historique de toutes nos prévisions est public, erreurs comprises.<br />
fonctionnalités :<br />
- API JSON publique, sans clé ni inscription : /api/today, /api/tomorrow, /api/remaining, /api/predictions<br />
- widget 7 jours à intégrer sur un site<br />
- configurations Home Assistant, Jeedom et Domoticz<br />
- données ouvertes (data.gouv.fr)<br />
- alertes WhatsApp gratuites avant un jour rouge prévu<br />
compatibilité : navigateur web ; l'API s'appelle depuis n'importe quel langage<br />
nécessite : rien, pas de compte<br />
licence : service gratuit, et il le restera, API actuelle comprise<br />
lien : <a rel="nofollow" href="https://www.calendrier-tempo.fr/api-tempo" target="_blank">https://www.calendrier-tempo.fr/api-tempo</a><br />
<br />
On améliore le service au fur et à mesure, donc vos retours sur l'API (format, champs manquants, usages) sont les bienvenus.<br />
<br />
Jean-Pierre, de l'équipe Calendrier Tempo</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f369/applications/projets/programme/">Mon programme</category>
			<dc:creator>JeanPierre_Tempo</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2186153/applications/projets/programme/freeware-api-json-calendrier-tempo-edf-previsions-15-jours-api-publique-cle/</guid>
		</item>
		<item>
			<title><![CDATA[[Freeware] Vavo Player pour Windows : présentation et offre de lancement gratuite]]></title>
			<link>https://www.developpez.net/forums/showthread.php?t=2186072&amp;goto=newpost</link>
			<pubDate>Sat, 10 Oct 2026 03:27:39 GMT</pubDate>
			<description>Bonjour à tous, 
 
Je fais...</description>
			<content:encoded><![CDATA[<div>Bonjour à tous,<br />
<br />
Je fais partie de l'équipe qui développe Vavo Player, un lecteur IPTV et de fichiers multimédias locaux. La version Windows est actuellement gratuite dans le cadre d'une offre de lancement. Nous la présentons ici pour recueillir vos retours.<br />
<br />
Le lecteur permet de charger vos propres listes M3U, de renseigner les informations de votre serveur et de lire vos fichiers locaux. L'interface est disponible en plusieurs langues.<br />
<br />
<b>Compatibilité :</b> Windows.<br />
<b>Licence :</b> logiciel propriétaire, actuellement gratuit sur Windows dans le cadre de l'offre de lancement.<br />
<br />
Vavo Player ne fournit ni chaînes, ni abonnements, ni listes de lecture. Vous devez ajouter vos propres sources et disposer des droits d'accès aux contenus.<br />
<br />
<b>Présentation et téléchargement :</b> <a rel="nofollow" href="https://vavoplayer.com/windows-player" target="_blank">https://vavoplayer.com/windows-player</a><br />
<br />
<b>Captures d'écran :</b><br />
<img src="https://store.donanimhaber.com/f0/4a/4b/f04a4b7180fbf9a03f56acef691bd8a9.png" border="0" alt="" /><br />
<br />
<img src="https://store.donanimhaber.com/9b/9d/ca/9b9dca8b5d97ea1d5823bb65cecf6a3b.png" border="0" alt="" /><br />
<br />
Les éventuels contenus visibles proviennent de sources ajoutées par l'utilisateur et ne sont pas fournis avec le lecteur.<br />
<br />
Si vous l'essayez, comment fonctionne-t-il sur votre configuration ? Vos retours sur la lecture, le chargement des listes et la clarté de l'interface nous intéressent.</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f369/applications/projets/programme/">Mon programme</category>
			<dc:creator>VavoDev</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2186072/applications/projets/programme/freeware-vavo-player-windows-presentation-offre-lancement-gratuite/</guid>
		</item>
		<item>
			<title><![CDATA[[Digital Logic Sim] Un CPU 8 bits construit à partir de portes NAND, avec mon propre langage et compilateur]]></title>
			<link>https://www.developpez.net/forums/showthread.php?t=2186069&amp;goto=newpost</link>
			<pubDate>Fri, 09 Oct 2026 19:37:50 GMT</pubDate>
			<description>Bonjour à tous, 
 
Je viens...</description>
			<content:encoded><![CDATA[<div>Bonjour à tous,<br />
<br />
Je viens de terminer un projet perso : un processeur complet construit en partant d’une seule brique, la porte NAND. Avec des NAND j’ai fait les portes de base, avec les portes les additionneurs et les registres, et ainsi de suite jusqu’au CPU. Le tout dans Digital Logic Sim, un simulateur de logique numérique gratuit.<br />
<br />
Côté architecture : ALU 8 bits, adresses sur 16 bits (64 Ko de RAM), horloge à 800 kHz. Dessus tourne un petit OS avec Snake, un casse-brique, Flappy Bird et Tetris, jouables au clavier en temps réel.<br />
<br />
Écrire les programmes en binaire à la main est vite devenu infernal, donc j’ai écrit mon propre langage et un compilateur qui génère directement le contenu de la mémoire programme.<br />
<br />
Vidéo de démonstration (1min30) : 
<div class="video-container"><iframe class="restrain" title="YouTube video player" width="560" height="315" allowfullscreen src="//www.youtube.com/embed/O8znJoZkAmw?wmode=transparent&amp;fs=1" frameborder="0"></iframe></div>
<br />
<br />
Je suis preneur de vos retours, et je me demande si une série de tutos pour construire son propre CPU pas à pas intéresserait du monde ici.<br />
<br />

<div class="video-container"><iframe class="restrain" title="YouTube video player" width="560" height="315" allowfullscreen src="//www.youtube.com/embed/O8znJoZkAmw?wmode=transparent&amp;fs=1" frameborder="0"></iframe></div>
</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f369/applications/projets/programme/">Mon programme</category>
			<dc:creator>LucasBe3</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2186069/applications/projets/programme/digital-logic-sim-cpu-8-bits-construit-partir-portes-nand-propre-langage-compilateur/</guid>
		</item>
		<item>
			<title><![CDATA[[Open-source][TypeScript] OMA : vérifications et workflows pour votre agent de code]]></title>
			<link>https://www.developpez.net/forums/showthread.php?t=2185972&amp;goto=newpost</link>
			<pubDate>Sun, 04 Oct 2026 05:49:47 GMT</pubDate>
			<description>Bonjour, 
 
Dans sa session...</description>
			<content:encoded><![CDATA[<div>Bonjour,<br />
<br />
Dans sa session du 12 août 2026, Lauren Tan aborde les compétences de vérification et les contrôles CI stricts. Je maintiens <a rel="nofollow" href="https://github.com/first-fluke/oh-my-agent" target="_blank">oh-my-agent</a> (OMA), un projet MIT qui permet de conserver un agent de code pris en charge et de lui ajouter une configuration commune de spécialistes, des workflows à plusieurs agents et des contrôles de fin fondés sur les scripts du projet. Certains workflows prévoient aussi une revue indépendante et la vérification des fichiers de résultat. Les hooks disponibles dépendent de l’environnement utilisé.<br />
<br />
Nom : oh-my-agent.<br />
Version de la démonstration : 15.0.13, exécutée depuis les sources ; la version distribuée est indiquée dans le dépôt.<br />
Langage de développement : TypeScript.<br />
Licence : MIT.<br />
Compatibilité annoncée : Linux, macOS et Windows.<br />
Prérequis de l’installation manuelle complète : Bun, uv et Serena, ainsi qu’un agent compatible. Les fournisseurs de modèles restent à configurer séparément.<br />
Sources et documentation : <a rel="nofollow" href="https://github.com/first-fluke/oh-my-agent" target="_blank">dépôt GitHub</a>.<br />
<br />
OMA conserve les compétences spécialisées, règles et workflows dans un répertoire .agents/ commun, puis les adapte aux formats des environnements pris en charge, notamment Claude Code, Codex CLI et Cursor. L’intérêt est de pouvoir réutiliser la configuration du projet quand on change d’agent. Les workflows concernés peuvent demander une revue indépendante et vérifier les fichiers de résultat attendus. Pour les tâches qui disposent d’un contrôle de fin configuré, le hook Stop exécute le script du projet, par exemple test, typecheck ou lint.<br />
<br />
J’ai publié une petite reproduction contrôlée de ce dernier mécanisme. Le programme teste une date d’expiration avant, exactement à, puis après l’échéance. Avec now &gt; expiresAt, deux tests passent et celui de l’égalité échoue. Le véritable CLI OMA relance le script test et le hook renvoie un JSON contenant &quot;decision&quot;:&quot;block&quot;. Après la correction en now &gt;= expiresAt, les trois tests passent ; le Stop suivant ne produit plus de sortie et retire l’état du workflow de la fixture.<br />
<br />
Le processus du hook termine avec le code 0 dans les deux cas : c’est la décision JSON qui indique le blocage. J’ai invoqué le hook manuellement avec une entrée au format Claude, dans un environnement isolé. Cette expérience ne montre donc pas un agent ayant trouvé et corrigé seul le défaut. Elle vérifie ce contrôle configuré, sur ces trois tests.<br />
<br />
Pour installer le harness complet :<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br /></div></td><td valign="top"><pre style="margin: 0">bunx oh-my-agent@latest
oma doctor</pre></td></tr></table></code><hr />
</div>L’autre commande, npx skills add first-fluke/oh-my-agent, installe les compétences ; elle n’inclut pas les hooks et contrôles du harness complet.<br />
<br />
La <a rel="nofollow" href="https://gist.github.com/gracefullight/06ed76480cd105882067e814bb2cbaf6" target="_blank">reproduction publique</a> contient le script, le diff, les sorties et les codes de retour. Je cherche surtout des retours sur la clarté de la décision Stop et sur les contrôles que vous souhaiteriez rattacher à vos projets.<br />
<br />
Ce texte en français a été préparé avec une aide d’IA.</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f369/applications/projets/programme/">Mon programme</category>
			<dc:creator>gracefullight</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2185972/applications/projets/programme/open-source-typescript-oma-verifications-workflows-agent-code/</guid>
		</item>
		<item>
			<title><![CDATA[[Free/Open source] Dual goal of Astar by genetic algorithm]]></title>
			<link>https://www.developpez.net/forums/showthread.php?t=2185968&amp;goto=newpost</link>
			<pubDate>Sat, 03 Oct 2026 00:26:00 GMT</pubDate>
			<description>Decision model 
 
...</description>
			<content:encoded><![CDATA[<div><div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="40"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br />54<br />55<br />56<br />57<br />58<br />59<br />60<br />61<br />62<br />63<br />64<br />65<br />66<br />67<br />68<br />69<br />70<br />71<br />72<br />73<br />74<br />75<br />76<br />77<br />78<br />79<br />80<br />81<br />82<br />83<br />84<br />85<br />86<br />87<br />88<br />89<br />90<br />91<br />92<br />93<br />94<br />95<br />96<br />97<br />98<br />99<br />100<br />101<br />102<br />103<br />104<br />105<br />106<br />107<br />108<br />109<br />110<br />111<br />112<br />113<br />114<br />115<br />116<br />117<br />118<br />119<br />120<br />121<br />122<br />123<br />124<br />125<br />126<br />127<br />128<br />129<br />130<br />131<br />132<br />133<br />134<br />135<br />136<br />137<br />138<br />139<br />140<br />141<br />142<br />143<br />144<br />145<br />146<br />147<br />148<br />149<br />150<br />151<br />152<br /></div></td><td valign="top"><pre style="margin: 0">Decision model
&nbsp;
&nbsp;
Manufacture
L'objectif est d'enrichir le programme existant.
Autopo&iuml;&egrave;se d'un programme &eacute;crit avec Ada par recherche de chemin.
Chacun des &eacute;tats est obtenu par algorithme g&eacute;n&eacute;tique.
Algorithme Astar
Heuristique
retourne le gain d'un &eacute;tat.
Uniforme
retourne le co&ucirc;t d'un &eacute;tat.
<span style="color: #339933;">Input</span>/<span style="color: #339933;">Output</span>
Close File &agrave; priorit&eacute;.
Open Vecteur
Trame
Arbre N-aires &eacute;th&eacute;rog&egrave;ne
&nbsp;
    <span style="color: #808080;">-- prototype</span>
    <span style="color: #808080;">-- declaration</span>
    <span style="color: #808080;">-- corp</span>
&nbsp;
Methodes
&nbsp;
    <span style="color: #808080;">-- Cr&eacute;er</span>
    <span style="color: #808080;">-- Ouvrir</span>
    <span style="color: #808080;">-- Ins&eacute;rer</span>
    <span style="color: #808080;">-- Ajouter</span>
    <span style="color: #808080;">-- R&eacute;&eacute;crire</span>
&nbsp;
Mouvements
Genes<span class="br0">&#40;</span><span style="color: #cc66cc;">1</span>..<span style="color: #cc66cc;">1024</span><span class="br0">&#41;</span> ; <span style="color: #cc66cc;">1024</span> genes <span class="br0">&#40;</span><span style="color: #cc66cc;">1024</span> m&eacute;thodes sur une trame <span class="br0">&#41;</span>.
&nbsp;
    <span style="color: #808080;">-- Random</span>
    <span style="color: #808080;">-- Mute</span>
    <span style="color: #808080;">-- Mutate</span>
    <span style="color: #808080;">-- Fitness</span>
&nbsp;
Graph dependencies
<span class="br0">&#91;</span>ATTACH=CONFIG<span class="br0">&#93;</span><span style="color: #cc66cc;">679167</span><span class="br0">&#91;</span>/ATTACH<span class="br0">&#93;</span>
&nbsp;
Program Test
&nbsp;
<span style="color: #0000ff;">with</span> Kernel;
<span style="color: #0000ff;">use</span> Kernel;
<span style="color: #0000ff;">with</span> Text_Io;
<span style="color: #0000ff;">use</span> Text_Io;
<span style="color: #0000ff;">procedure</span> Test <span style="color: #0000ff;">is</span>
&nbsp;
   Self : <span style="color: #0000ff;">constant</span> <span style="color: #0080ff;">String</span> := <span style="color: #FF0000;">&quot;astar.adb&quot;</span>;
   Empty : <span style="color: #0000ff;">constant</span> <span style="color: #0080ff;">String</span> := <span style="color: #FF0000;">&quot;astar.adb&quot;</span>;
   InFile  : File_Type;
   OutFile : File_Type;
   Index : <span style="color: #0080ff;">Natural</span> := <span style="color: #cc66cc;">0</span>;
   Inopen, Outopen : <span style="color: #0080ff;">Boolean</span> := <span style="color: #339933;">False</span>;
<span style="color: #0000ff;">begin</span>
&nbsp;
   <span style="color: #0000ff;">loop</span>
      <span style="color: #0000ff;">declare</span>
	 Start : Kernel_Tree := <span style="color: #339933;">Initialize</span><span class="br0">&#40;</span>Self<span class="br0">&#41;</span>;
	 Goal  : Kernel_Tree := <span style="color: #339933;">Initialize</span><span class="br0">&#40;</span>Empty<span class="br0">&#41;</span>;
      <span style="color: #0000ff;">begin</span>
&nbsp;
	 Open<span class="br0">&#40;</span>Infile, In_File, <span style="color: #FF0000;">&quot;listing&quot;</span><span class="br0">&#41;</span>;
	 Inopen := <span style="color: #339933;">True</span>;
&nbsp;
         <span style="color: #0000ff;">for</span> I <span style="color: #0000ff;">in</span> <span style="color: #cc66cc;">1</span>..Index-<span style="color: #cc66cc;">1</span> <span style="color: #0000ff;">loop</span>
	    <span style="color: #0000ff;">declare</span>
	       Line : <span style="color: #0080ff;">String</span> := Get_Line<span class="br0">&#40;</span>InFile<span class="br0">&#41;</span>;
	    <span style="color: #0000ff;">begin</span>
	       <span style="color: #0000ff;">null</span>;
	    <span style="color: #0000ff;">end</span>;
	 <span style="color: #0000ff;">end</span> <span style="color: #0000ff;">loop</span>;
	 <span style="color: #0000ff;">loop</span>
	    <span style="color: #0000ff;">declare</span>
	       Line : <span style="color: #0080ff;">String</span> := Get_Line<span class="br0">&#40;</span>InFile<span class="br0">&#41;</span>;
	    <span style="color: #0000ff;">begin</span>
	       Index := Index + <span style="color: #cc66cc;">1</span>;
	       Close<span class="br0">&#40;</span>Infile<span class="br0">&#41;</span>;
	       Inopen := <span style="color: #339933;">False</span>;
	       <span style="color: #0000ff;">while</span> <span style="color: #0000ff;">not</span> Goal.Is_Exhausted <span style="color: #0000ff;">loop</span>
		  <span style="color: #339933;">Put_Line</span><span class="br0">&#40;</span><span style="color: #FF0000;">&quot;New goal : &quot;</span> &amp; Line<span class="br0">&#41;</span>;
		  <span style="color: #339933;">Put</span><span class="br0">&#40;</span><span style="color: #FF0000;">&quot;Program name : &quot;</span><span class="br0">&#41;</span>;
		  Goal.Name<span class="br0">&#40;</span>Get_Line<span class="br0">&#41;</span>;
		  Open<span class="br0">&#40;</span>Outfile, Append_File, <span style="color: #FF0000;">&quot;listing&quot;</span><span class="br0">&#41;</span>;
		  Outopen := <span style="color: #339933;">True</span>;
		  Goal.Append<span class="br0">&#40;</span>OutFile<span class="br0">&#41;</span>;
		  Close<span class="br0">&#40;</span>Outfile<span class="br0">&#41;</span>;
		  Outopen := <span style="color: #339933;">False</span>;
	       <span style="color: #0000ff;">end</span> <span style="color: #0000ff;">loop</span>;
	       Goal := <span style="color: #339933;">Initialize</span><span class="br0">&#40;</span>Empty<span class="br0">&#41;</span>;
	       <span style="color: #0000ff;">exit</span>;
	    <span style="color: #0000ff;">exception</span>
	       <span style="color: #0000ff;">when</span> <span style="color: #0000ff;">others</span> =&gt;
		  <span style="color: #339933;">Put_Line</span><span class="br0">&#40;</span><span style="color: #FF0000;">&quot;Standard Errror : &quot;</span><span class="br0">&#41;</span>;
		  <span style="color: #0000ff;">raise</span>;
	    <span style="color: #0000ff;">end</span>;
	 <span style="color: #0000ff;">end</span> <span style="color: #0000ff;">loop</span>;
      <span style="color: #0000ff;">exception</span>
	 <span style="color: #0000ff;">when</span> <span style="color: #0000ff;">others</span> =&gt;
	    <span style="color: #339933;">Put_Line</span><span class="br0">&#40;</span><span style="color: #FF0000;">&quot;Standard Errror : &quot;</span><span class="br0">&#41;</span>;
	    Start.Free;
	    Start := <span style="color: #339933;">Initialize</span><span class="br0">&#40;</span>Self<span class="br0">&#41;</span>;
	    <span style="color: #0000ff;">if</span> Inopen <span style="color: #0000ff;">then</span>
	       Close<span class="br0">&#40;</span>Infile<span class="br0">&#41;</span>;
	    <span style="color: #0000ff;">end</span> <span style="color: #0000ff;">if</span>;
	    <span style="color: #0000ff;">if</span> Outopen <span style="color: #0000ff;">then</span>
	       Close<span class="br0">&#40;</span>Outfile<span class="br0">&#41;</span>;
	    <span style="color: #0000ff;">end</span> <span style="color: #0000ff;">if</span>;
	    Skip_Line;
      <span style="color: #0000ff;">end</span>;
   <span style="color: #0000ff;">end</span> <span style="color: #0000ff;">loop</span>;
<span style="color: #0000ff;">end</span> Test;
&nbsp;
&nbsp;
&nbsp;
Differed
&nbsp;
    <span style="color: #808080;">-- Goal.Create(Line);</span>
    <span style="color: #808080;">-- Goal.Add(Random);</span>
    <span style="color: #808080;">-- Put_Line(&quot;Path finding : &quot;);</span>
    <span style="color: #808080;">-- Astar(Start, Goal);</span>
    <span style="color: #808080;">-- Put_Line(&quot;Goal!&quot;);</span>
    <span style="color: #808080;">-- Goal.Normalize;</span>
    <span style="color: #808080;">-- Put_Line(&quot;Starting manufacture...&quot;);</span>
    <span style="color: #808080;">-- Goal.Initialize;</span>
    <span style="color: #808080;">-- Put_Line(&quot;Running...&quot;);</span>
    <span style="color: #808080;">-- Goal.Run;</span>
    <span style="color: #808080;">-- Put_Line(&quot;End of program.&quot;);</span>
    <span style="color: #808080;">-- Goal.Finalize;</span>
    <span style="color: #808080;">-- Put_Line(&quot;Program saved.&quot;);</span>
    <span style="color: #808080;">-- Goal.Make_ID;</span>
    <span style="color: #808080;">-- Gaol.Man(1);</span>
&nbsp;
&nbsp;
<span style="color: #0080ff;">Real</span> time
&nbsp;
    <span style="color: #808080;">-- Goal.Create(Line);</span>
    <span style="color: #808080;">-- Goal.Add(Random);</span>
    <span style="color: #808080;">-- Put_Line(&quot;Path finding : &quot;);</span>
    <span style="color: #808080;">-- Astar(Start, Goal);</span>
    <span style="color: #808080;">-- Put_Line(&quot;Goal!&quot;);</span>
    <span style="color: #808080;">-- Goal.Normalize;</span>
    <span style="color: #808080;">-- Put_Line(&quot;Starting manufacture...&quot;);</span>
    <span style="color: #808080;">-- Goal.Initialize;</span>
    <span style="color: #808080;">-- Goal.Make_ID;</span>
    <span style="color: #808080;">-- Gaol.Man(1);</span>
    <span style="color: #808080;">-- Put_Line(&quot;Running...&quot;);</span>
    <span style="color: #808080;">-- Goal.Run;</span>
    <span style="color: #808080;">-- Put_Line(&quot;End of program.&quot;);</span>
    <span style="color: #808080;">-- Goal.Finalize;</span>
    <span style="color: #808080;">-- Put_Line(&quot;Program saved.&quot;);</span></pre></td></tr></table></code><hr />
</div></div>


	<div style="padding:10px">

	

	
		<fieldset class="fieldset">
			<legend>Images attachées</legend>
				<div style="padding:10px">
				<img class="attach" src="https://www.developpez.net/forums/attachments/p679167d1790987017/applications/projets/programme/free-open-source-dual-goal-of-astar-by-genetic-algorithm/manufacture.png/" alt="" />&nbsp;
			</div>
		</fieldset>
	

	

	

	</div>
]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f369/applications/projets/programme/">Mon programme</category>
			<dc:creator>emergeance</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2185968/applications/projets/programme/free-open-source-dual-goal-of-astar-by-genetic-algorithm/</guid>
		</item>
		<item>
			<title>Dgaard - DNS proxy avec filtrage avancé</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2184352&amp;goto=newpost</link>
			<pubDate>Wed, 24 Jun 2026 12:02:26 GMT</pubDate>
			<description>Bonjour à tous, 
 
Je vous...</description>
			<content:encoded><![CDATA[<div>Bonjour à tous,<br />
<br />
Je vous présente un projet sur lequel j'ai commencé à travaillé depuis 3 mois environ (enfin plus vu que l'idée était là avant).<br />
<br />
Dgaard est un proxy DNS ou je veux :<br />
* remplacer partiellement les blocklists par différents mécanismes<br />
* pouvoir bloquer directement des TLD (.wank, .porn, ...)<br />
* bloquer les noms de domaines générés aléatoirement (DGA)<br />
* interdire l'UTF8 dans les domaines (punnycode)<br />
* filtrer des comportement malveillants via l'utilisation de champs dns (TXT, CNAME)<br />
* blocage géographique<br />
* éviter de charger des listes énormes pour du controle parental via scoring (lexical/mots, TLD, ASN, ...)<br />
Tout en restant performant.<br />
<br />
Pour éviter les faux positifs, je gère des whitelist et j'ai un système de scoring.<br />
<br />
Mon projet écrit en <b>Rust</b> est diviser en plusieurs éléments :<br />
* engine : le moteur de filtrage<br />
* adblockptimize : permet de séparer le blocage réseau de la partie cosmétique (destinée aux navigateurs)<br />
* dgaard : le proxy DNS<br />
* dgaard-monitor : outil de monitoring permettant d'écouter le socket unix de dgaard. TUI, export, NATS, ...<br />
* dgaard-daemon et dgaard-rest : permettent d'utiliser le moteur de filtrage par d'autres service (Mail Transfer Agent (MTA), ...)<br />
<br />
<b>Repo</b> : <a rel="nofollow" href="https://codeberg.org/slundi/dgaard" target="_blank">https://codeberg.org/slundi/dgaard</a></div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f369/applications/projets/programme/">Mon programme</category>
			<dc:creator>smarties</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2184352/applications/projets/programme/dgaard-dns-proxy-filtrage-avance/</guid>
		</item>
		<item>
			<title><![CDATA[[Projet Open-Source] T2DECODE - Plateforme d'apprentissage technique & cybersécurité 100% hors-ligne (Flutter)]]></title>
			<link>https://www.developpez.net/forums/showthread.php?t=2183644&amp;goto=newpost</link>
			<pubDate>Sun, 10 May 2026 08:55:31 GMT</pubDate>
			<description>Bonjour à tous, :salut: 
 
Je...</description>
			<content:encoded><![CDATA[<div>Bonjour à tous, :salut:<br />
<br />
Je vous présente aujourd’hui T2DECODE, un projet né d'un constat simple : l'apprentissage de l'informatique, des réseaux et de la cybersécurité s'appuie de plus en plus sur des outils cloud, des abonnements payants et une collecte massive de données personnelles.<br />
<br />
Pour répondre à cela, nous avons créé l'association TUTODECODE et développé T2DECODE, un logiciel conçu selon le principe du Privacy by Design. :france:<br />
<br />
:idea: Le Concept<br />
<br />
T2DECODE est une plateforme locale d'apprentissage technique, multiplateforme et 100% autonome. Elle s'exécute entièrement sur la machine de l'utilisateur, ce qui la rend idéale pour :<br />
- Les zones blanches / environnements isolés (air-gapped).<br />
- Les étudiants (BTS SIO, BUT Informatique) voulant réviser sans dépendre d'une connexion.<br />
- Les passionnés de vie privée (zéro télémétrie, zéro tracking). :ccool:<br />
<br />
:tutoriel: Ce que propose l'outil (v1.0.1)<br />
<br />
Le logiciel simule localement plusieurs aspects de l'administration système et de la cybersécurité :<br />
- Outils Réseau : Simulateur de calcul de sous-réseaux (Subnet).<br />
- Cryptographie : Outils d'initiation aux fonctions de hachage (Hash) sans API externe.<br />
- Système : Gestionnaire de droits de fichiers interactif (Chmod).<br />
- IA Locale (Optionnelle) : Intégration native avec Ollama pour faire tourner des LLM légers (ex: Llama 3) en local pour assister l'étudiant.<br />
- Modulaire : Possibilité pour les formateurs de charger leurs propres parcours pédagogiques via de simples fichiers JSON.<br />
<br />
:pc: La Stack Technique<br />
<br />
- Framework : Flutter / Dart (compilation native pour Windows, macOS, Linux et Android).<br />
- Licence : Libre et open source sous licence GPLv3.<br />
- Architecture : Offline-first stricte. :tagcode:<br />
<br />
:fleche: Liens utiles<br />
<br />
- Site officiel : <a rel="nofollow" href="https://tutodecode.org" target="_blank">https://tutodecode.org</a><br />
- Code source / GitHub : <a rel="nofollow" href="https://github.com/TUTODECODE-FR/T2DECODE" target="_blank">https://github.com/TUTODECODE-FR/T2DECODE</a><br />
- Association : TUTODECODE (SIREN : 102 763 133)<br />
<br />
Nous venons de publier la version v1.0.1. :yaisse: <br />
<br />
Je serais ravi d'avoir vos retours de développeurs, d'administrateurs réseaux ou d'enseignants sur l'UI, la structure du code ou des idées de modules à ajouter. N'hésitez pas à me faire part de vos critiques ou à signaler d'éventuels bugs :bug: !<br />
<br />
Merci pour votre lecture et vos retours, :merci:<br />
<br />
Maxime MARTIN CIVET<br />
Président de l'association TUTODECODE</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f369/applications/projets/programme/">Mon programme</category>
			<dc:creator>winancher</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2183644/applications/projets/programme/projet-open-source-t2decode-plateforme-d-apprentissage-technique-cybersecurite-100-ligne-flutter/</guid>
		</item>
	</channel>
</rss>
