Created
October 26, 2024 18:27
-
-
Save tchoumi313/49159e3210f7b7d7d5d5df61d34b67de to your computer and use it in GitHub Desktop.
Didask Stage Développeur Fullstack
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!doctype html> | |
<html lang="en"> | |
<head> | |
<meta charset="UTF-8" /> | |
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> | |
<title>Hello World</title> | |
</head> | |
<body> | |
<button onclick="start()">Start</button> | |
<br /> | |
<br /> | |
<div>Raw Markdown:</div> | |
<div> | |
<pre id="markdown"></pre> | |
</div> | |
<br /> | |
<br /> | |
<div>Rendered Markdown:</div> | |
<div id="markdown-output"></div> | |
<script> | |
// State variables | |
let currentContent = ''; | |
let isCodeBlock = false; | |
let isInlineCode = false; | |
var codeBlockLanguage = ''; | |
function renderMarkdown(chunk) { | |
var outputElement = document.getElementById('markdown-output'); | |
// Helper function to add elements to DOM | |
function createElement(tag, content) { | |
var element = document.createElement(tag); | |
element.innerHTML = content; | |
outputElement === null || outputElement === void 0 ? void 0 : outputElement.appendChild(element); | |
} | |
// Detect Markdown tag type | |
if (chunk.startsWith('```')) { | |
// Multi-line code block | |
if (isCodeBlock) { | |
// End of code block | |
createElement('pre', currentContent); | |
currentContent = ''; | |
isCodeBlock = false; | |
codeBlockLanguage = ''; | |
} | |
else { | |
// Start of code block | |
isCodeBlock = true; | |
codeBlockLanguage = chunk.slice(3).trim(); // Get the language if specified | |
return; | |
} | |
return; | |
} | |
if (isCodeBlock) { | |
// Accumulate multi-line code content | |
currentContent += chunk; | |
return; | |
} | |
if (chunk.startsWith('`')) { | |
// Inline code | |
if (isInlineCode) { | |
createElement('pre', currentContent); | |
currentContent = ''; | |
isInlineCode = false; | |
} | |
else { | |
isInlineCode = true; | |
} | |
return; | |
} | |
if (isInlineCode) { | |
// Accumulate inline code content | |
currentContent += chunk; | |
return; | |
} | |
if (chunk.startsWith('# ')) { | |
createElement('h1', chunk.slice(2)); | |
return; | |
} | |
if (chunk.startsWith('## ')) { | |
createElement('h2', chunk.slice(3)); | |
return; | |
} | |
if (chunk.startsWith('### ')) { | |
createElement('h3', chunk.slice(4)); | |
return; | |
} | |
// Handle text lines | |
if (chunk.endsWith(' ')) { | |
// Line end with two spaces for line break | |
createElement('div', currentContent + chunk.trim()); | |
createElement('br', ''); | |
currentContent = ''; | |
} | |
else { | |
currentContent += chunk; | |
} | |
// At the end of the function, add: | |
if (currentContent) { | |
createElement('div', currentContent); | |
currentContent = ''; | |
} | |
} | |
/* Do not modify the code below */ | |
const markdownString = `# Hello World | |
Let's start with simple | |
things. | |
Some code: \`console.log('Hello World')\` | |
### Getting harder | |
Some more code: | |
\`\`\`js | |
const foobar = 42 | |
const barfoo = 24 | |
\`\`\` | |
` | |
/* async function start() { | |
const rawMarkdown = document.getElementById('markdown') | |
for (let i = 0; i < markdownString.length;) { | |
const chunkSize = Math.floor(Math.random() * 5) + 1 | |
const chunk = markdownString.slice(i, i + chunkSize) | |
rawMarkdown.textContent += chunk | |
renderMarkdown(chunk) | |
i += chunkSize | |
await new Promise((resolve) => setTimeout(resolve, 1000)) | |
} | |
}*/ | |
async function start() { | |
const rawMarkdown = document.getElementById('markdown'); | |
const lines = markdownString.split('\n'); | |
if (!rawMarkdown) { | |
console.error("Element with id 'markdown' not found"); | |
return; | |
} | |
for (const line of lines) { | |
rawMarkdown.textContent += line + '\n'; | |
renderMarkdown(line + '\n'); | |
await new Promise(resolve => setTimeout(resolve, 1000)); | |
} | |
} | |
</script> | |
</body> | |
</html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Voici les réponses aux questions
1. Qu'est-ce qui te plaît dans la programmation ?
Ce qui me plaît le plus dans la programmation, c’est la liberté de création et la logique derrière chaque solution. C’est une discipline qui me permet de traduire des idées en quelque chose de concret et fonctionnel, et il y a toujours une satisfaction particulière à voir le code fonctionner comme prévu après des heures de travail.
2. Explique à quoi servent les promises en Javascript, apporte le plus de précisions possible
En JavaScript, les promises permettent de gérer des opérations asynchrones de manière plus lisible et structurée. Une promise est un objet qui représente l’état futur d’une opération asynchrone, avec trois états possibles : en attente (pending), résolue (resolved), et rejetée (rejected).
Les promises sont particulièrement utiles pour éviter le "callback hell" lorsque plusieurs opérations asynchrones sont enchaînées. Une promise permet de spécifier ce qui doit se passer lorsque l’opération réussit (avec
.then()
), ou lorsqu’elle échoue (avec.catch()
). On peut également utiliser.finally()
pour exécuter du code une fois que la promise est terminée, peu importe le résultat. Les promises sont ainsi une base pour des opérations comme les appels réseau, la lecture de fichiers ou toute autre tâche qui prend du temps, en rendant le code plus propre et plus facile à déboguer.3. Ta meilleure idée pour révolutionner le monde du LMS
Une idée pour révolutionner le LMS serait de développer un système d'apprentissage personnalisé basé sur l'IA qui analyse le style d'apprentissage et le rythme de chaque utilisateur. Cela permettrait de proposer un parcours d'apprentissage optimisé pour chaque étudiant, en s’adaptant en temps réel à ses performances et à ses préférences. Par exemple, si un étudiant a des difficultés avec un concept particulier, le LMS pourrait proposer automatiquement des exercices supplémentaires, des explications plus détaillées, ou des vidéos ciblées et en intégrant également des fonctionnalités de gamification
4. Parle-nous de ton projet informatique dont tu tires le plus de fierté (on adore les détails)
Le projet dont je suis le plus fier est NexGenAgri NexGenAgri , un projet d'école réalisé dans le cadre de mon bac+4. Il s’agit d’une application mobile développée avec Flutter pour le frontend et Python (via Flask) pour le backend. L'application utilise le machine learning pour fournir des recommandations agricoles et intégrer des fonctionnalités pratiques pour les utilisateurs.
Les fonctionnalités principales de l’application incluent :
Ce projet a été une belle opportunité d'appliquer mes connaissances en développement mobile et machine learning dans un contexte pratique.