chore(i18n): sync translations with latest source changes (chunk 1/1, 9 changes)

pull/1774/head
localizeflow[bot] 2 weeks ago
parent 8e7fd2c16e
commit f2f478e5c6

@ -1,7 +1,7 @@
{
"1-getting-started-lessons/1-intro-to-programming-languages/README.md": {
"original_hash": "bec5e35642176d9e483552bfc82996d8",
"translation_date": "2026-03-06T11:35:13+00:00",
"original_hash": "d5eeb6e975b5864d8da52d4a41941f8d",
"translation_date": "2026-03-27T17:53:28+00:00",
"source_file": "1-getting-started-lessons/1-intro-to-programming-languages/README.md",
"language_code": "en"
},
@ -487,7 +487,7 @@
},
"AGENTS.md": {
"original_hash": "a362efd06d64d4134a0cfe8515a86d34",
"translation_date": "2025-10-03T11:11:50+00:00",
"translation_date": "2026-03-27T18:09:20+00:00",
"source_file": "AGENTS.md",
"language_code": "en"
},

@ -293,7 +293,7 @@ const sum = 5 + 3;
- **Calculate** and store the result of a mathematical operation
```javascript
// Statements that interact with web pages
// Instructions that interact with web pages
document.title = "My Awesome Website";
document.body.style.backgroundColor = "lightblue";
```
@ -597,7 +597,7 @@ The command line is where developers go to feel like absolute wizards. You type
While graphical interfaces are great for many tasks, the command line excels at automation, precision, and speed. Many development tools work primarily through command line interfaces, and learning to use them efficiently can dramatically improve your productivity.
```bash
# Step 1: Create and navigate to project directory
# Step 1: Create and navigate to the project directory
mkdir my-awesome-website
cd my-awesome-website
```
@ -650,7 +650,7 @@ npx vite
**Windows:**
- **[Windows Terminal](https://docs.microsoft.com/windows/terminal/?WT.mc_id=academic-77807-sagibbon)** - Modern, feature-rich terminal
- **[PowerShell](https://docs.microsoft.com/powershell/?WT.mc_id=academic-77807-sagibbon)** 💻 - Powerful scripting environment
- **[Command Prompt](https://docs.microsoft.com/windows-server/administration/windows-commands/?WT.mc_id=academic-77807-sagibbon)** 💻 - Traditional Windows command line
- **[Command Prompt](https://learn.microsoft.com/windows-server/administration/windows-commands/windows-commands)** 💻 - Traditional Windows command line
**macOS:**
- **[Terminal](https://support.apple.com/guide/terminal/)** 💻 - Built-in terminal application
@ -851,6 +851,6 @@ journey
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Disclaimer**:
This document has been translated using the AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation.
**Disclaimer**:
This document has been translated using AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -2,27 +2,27 @@
## Project Overview
This repository provides an educational curriculum designed to teach web development fundamentals to beginners. It is a comprehensive 12-week course created by Microsoft Cloud Advocates, featuring 24 hands-on lessons that cover JavaScript, CSS, and HTML.
This is an educational curriculum repository for teaching web development fundamentals to beginners. The curriculum is a comprehensive 12-week course developed by Microsoft Cloud Advocates, featuring 24 hands-on lessons covering JavaScript, CSS, and HTML.
### Key Components
- **Educational Content**: 24 structured lessons organized into project-based modules
- **Practical Projects**: Terrarium, Typing Game, Browser Extension, Space Game, Banking App, Code Editor, and AI Chat Assistant
- **Interactive Quizzes**: 48 quizzes with 3 questions each (pre- and post-lesson assessments)
- **Multi-language Support**: Automated translations for over 50 languages via GitHub Actions
- **Interactive Quizzes**: 48 quizzes with 3 questions each (pre/post-lesson assessments)
- **Multi-language Support**: Automated translations for 50+ languages via GitHub Actions
- **Technologies**: HTML, CSS, JavaScript, Vue.js 3, Vite, Node.js, Express, Python (for AI projects)
### Architecture
- Repository structured around lessons
- Each lesson folder includes a README, code examples, and solutions
- Educational repository with lesson-based structure
- Each lesson folder contains README, code examples, and solutions
- Standalone projects in separate directories (quiz-app, various lesson projects)
- Translation system powered by GitHub Actions (co-op-translator)
- Translation system using GitHub Actions (co-op-translator)
- Documentation served via Docsify and available as PDF
## Setup Commands
This repository is primarily intended for educational content consumption. For working with specific projects:
This repository is primarily for educational content consumption. For working with specific projects:
### Main Repository Setup
@ -83,15 +83,15 @@ python api.py
1. **Fork the repository** to your GitHub account
2. **Clone your fork** locally
3. **Create a new branch** for your changes
4. Modify lesson content or code examples
4. Make changes to lesson content or code examples
5. Test any code changes in relevant project directories
6. Submit pull requests following contribution guidelines
### For Learners
1. Fork or clone the repository
2. Navigate through lesson directories sequentially
3. Read the README files for each lesson
2. Navigate to lesson directories sequentially
3. Read README files for each lesson
4. Complete pre-lesson quizzes at https://ff-quizzes.netlify.app/web/
5. Work through code examples in lesson folders
6. Complete assignments and challenges
@ -99,10 +99,10 @@ python api.py
### Live Development
- **Documentation**: Run `docsify serve` in the root directory (port 3000)
- **Quiz App**: Run `npm run dev` in the quiz-app directory
- **Projects**: Use the VS Code Live Server extension for HTML projects
- **API Projects**: Run `npm start` in the respective API directories
- **Documentation**: Run `docsify serve` in root (port 3000)
- **Quiz App**: Run `npm run dev` in quiz-app directory
- **Projects**: Use VS Code Live Server extension for HTML projects
- **API Projects**: Run `npm start` in respective API directories
## Testing Instructions
@ -126,17 +126,17 @@ node server.js # Verify server starts without errors
- This is an educational repository without comprehensive automated tests
- Manual testing focuses on:
- Ensuring code examples run without errors
- Verifying links in documentation work correctly
- Confirming project builds complete successfully
- Checking that examples follow best practices
- Code examples run without errors
- Links in documentation work correctly
- Project builds complete successfully
- Examples follow best practices
### Pre-submission Checks
- Run `npm run lint` in directories with package.json
- Verify markdown links are valid
- Test code examples in a browser or Node.js
- Ensure translations maintain proper structure
- Test code examples in browser or Node.js
- Check that translations maintain proper structure
## Code Style Guidelines
@ -150,37 +150,37 @@ node server.js # Verify server starts without errors
### HTML/CSS
- Use semantic HTML5 elements
- Apply responsive design principles
- Follow clear class naming conventions
- Include comments explaining CSS techniques for learners
- Semantic HTML5 elements
- Responsive design principles
- Clear class naming conventions
- Comments explaining CSS techniques for learners
### Python
- Adhere to PEP 8 style guidelines
- Provide clear, educational code examples
- Use type hints where helpful for learning
- PEP 8 style guidelines
- Clear, educational code examples
- Type hints where helpful for learning
### Markdown Documentation
- Maintain a clear heading hierarchy
- Include code blocks with language specification
- Provide links to additional resources
- Store screenshots and images in `images/` directories
- Add alt text for images to ensure accessibility
- Clear heading hierarchy
- Code blocks with language specification
- Links to additional resources
- Screenshots and images in `images/` directories
- Alt text for images for accessibility
### File Organization
- Lessons are numbered sequentially (1-getting-started-lessons, 2-js-basics, etc.)
- Each project includes `solution/` and often `start/` or `your-work/` directories
- Images are stored in lesson-specific `images/` folders
- Translations are organized in `translations/{language-code}/` directories
- Lessons numbered sequentially (1-getting-started-lessons, 2-js-basics, etc.)
- Each project has `solution/` and often `start/` or `your-work/` directories
- Images stored in lesson-specific `images/` folders
- Translations in `translations/{language-code}/` structure
## Build and Deployment
### Quiz App Deployment (Azure Static Web Apps)
The quiz-app is configured for deployment on Azure Static Web Apps:
The quiz-app is configured for Azure Static Web Apps deployment:
```bash
cd quiz-app
@ -249,34 +249,34 @@ Before submitting a PR:
- Agree to Microsoft CLA (automated check on first PR)
- Follow the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/)
- See [CONTRIBUTING.md](./CONTRIBUTING.md) for detailed guidelines
- Reference issue numbers in PR descriptions if applicable
- Reference issue numbers in PR description if applicable
### Review Process
- PRs are reviewed by maintainers and the community
- PRs reviewed by maintainers and community
- Educational clarity is prioritized
- Code examples should follow current best practices
- Translations are reviewed for accuracy and cultural appropriateness
- Translations reviewed for accuracy and cultural appropriateness
## Translation System
### Automated Translation
- Powered by GitHub Actions with the co-op-translator workflow
- Automatically translates to over 50 languages
- Source files are located in main directories
- Translated files are stored in `translations/{language-code}/` directories
- Uses GitHub Actions with co-op-translator workflow
- Translates to 50+ languages automatically
- Source files in main directories
- Translated files in `translations/{language-code}/` directories
### Adding Manual Translation Improvements
1. Locate the file in `translations/{language-code}/`
2. Make improvements while preserving the structure
1. Locate file in `translations/{language-code}/`
2. Make improvements while preserving structure
3. Ensure code examples remain functional
4. Test any localized quiz content
### Translation Metadata
Translated files include a metadata header:
Translated files include metadata header:
```markdown
<!--
CO_OP_TRANSLATOR_METADATA:
@ -295,49 +295,49 @@ CO_OP_TRANSLATOR_METADATA:
**Quiz app fails to start**:
- Check Node.js version (v14+ recommended)
- Delete `node_modules` and `package-lock.json`, then run `npm install` again
- Delete `node_modules` and `package-lock.json`, run `npm install` again
- Check for port conflicts (default: Vite uses port 5173)
**API server won't start**:
- Verify Node.js version meets the minimum requirement (node >=10)
- Check if the port is already in use
- Ensure all dependencies are installed with `npm install`
- Verify Node.js version meets minimum (node >=10)
- Check if port is already in use
- Ensure all dependencies installed with `npm install`
**Browser extension won't load**:
- Verify that manifest.json is properly formatted
- Check the browser console for errors
- Verify manifest.json is properly formatted
- Check browser console for errors
- Follow browser-specific extension installation instructions
**Python chat project issues**:
- Ensure the OpenAI package is installed: `pip install openai`
- Verify the GITHUB_TOKEN environment variable is set
- Ensure OpenAI package installed: `pip install openai`
- Verify GITHUB_TOKEN environment variable is set
- Check GitHub Models access permissions
**Docsify not serving docs**:
- Install docsify-cli globally: `npm install -g docsify-cli`
- Run from the repository root directory
- Run from repository root directory
- Check that `docs/_sidebar.md` exists
### Development Environment Tips
- Use VS Code with the Live Server extension for HTML projects
- Use VS Code with Live Server extension for HTML projects
- Install ESLint and Prettier extensions for consistent formatting
- Use browser DevTools for debugging JavaScript
- For Vue projects, install the Vue DevTools browser extension
- For Vue projects, install Vue DevTools browser extension
### Performance Considerations
- The large number of translated files (50+ languages) makes full clones sizable
- Large number of translated files (50+ languages) means full clones are large
- Use shallow clone if only working on content: `git clone --depth 1`
- Exclude translations from searches when working on English content
- Build processes may be slow on the first run (npm install, Vite build)
- Build processes may be slow on first run (npm install, Vite build)
## Security Considerations
### Environment Variables
- API keys should never be committed to the repository
- Use `.env` files (already included in `.gitignore`)
- API keys should never be committed to repository
- Use `.env` files (already in `.gitignore`)
- Document required environment variables in project READMEs
### Python Projects
@ -348,7 +348,7 @@ CO_OP_TRANSLATOR_METADATA:
### GitHub Models Access
- Personal Access Tokens (PAT) are required for GitHub Models
- Personal Access Tokens (PAT) required for GitHub Models
- Tokens should be stored as environment variables
- Never commit tokens or credentials
@ -356,10 +356,10 @@ CO_OP_TRANSLATOR_METADATA:
### Target Audience
- Complete beginners in web development
- Complete beginners to web development
- Students and self-learners
- Teachers using the curriculum in classrooms
- Content is designed for accessibility and gradual skill-building
- Content is designed for accessibility and gradual skill building
### Educational Philosophy
@ -398,9 +398,11 @@ While not a traditional monorepo, this repository contains multiple independent
- Each lesson is self-contained
- Projects don't share dependencies
- Work on individual projects without affecting others
- Clone the entire repository for the full curriculum experience
- Clone entire repo for the full curriculum experience
---
**Disclaimer**:
This document has been translated using the AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we aim for accuracy, please note that automated translations may contain errors or inaccuracies. The original document in its native language should be regarded as the authoritative source. For critical information, professional human translation is recommended. We are not responsible for any misunderstandings or misinterpretations resulting from the use of this translation.
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Disclaimer**:
This document has been translated using AI translation service [Co-op Translator](https://github.com/Azure/co-op-translator). While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -1,7 +1,7 @@
{
"1-getting-started-lessons/1-intro-to-programming-languages/README.md": {
"original_hash": "bec5e35642176d9e483552bfc82996d8",
"translation_date": "2026-03-06T11:48:59+00:00",
"original_hash": "d5eeb6e975b5864d8da52d4a41941f8d",
"translation_date": "2026-03-27T18:05:28+00:00",
"source_file": "1-getting-started-lessons/1-intro-to-programming-languages/README.md",
"language_code": "es"
},
@ -493,7 +493,7 @@
},
"AGENTS.md": {
"original_hash": "a362efd06d64d4134a0cfe8515a86d34",
"translation_date": "2026-03-06T11:56:32+00:00",
"translation_date": "2026-03-27T18:13:05+00:00",
"source_file": "AGENTS.md",
"language_code": "es"
},

@ -1,12 +1,12 @@
# Introducción a los Lenguajes de Programación y Herramientas Modernas para Desarrolladores
¡Hola, futuro desarrollador! 👋 ¿Puedo contarte algo que todavía me pone los pelos de punta todos los días? ¡Estás a punto de descubrir que programar no es solo sobre computadoras, sino que es tener superpoderes reales para dar vida a tus ideas más locas!
¿Conoces ese momento cuando usas tu app favorita y todo simplemente encaja a la perfección? Cuando tocas un botón y pasa algo absolutamente mágico que te hace decir "wow, ¿cómo lo HICIERON?" Bueno, alguien justo como tú probablemente sentado en su cafetería favorita a las 2 AM con su tercer espresso escribió el código que creó esa magia. Y aquí está lo que te volará la mente: al final de esta lección, no solo vas a entender cómo lo hicieron, sino que vas a estar deseando intentarlo tú mismo.
¡Hola, futuro desarrollador! 👋 ¿Puedo contarte algo que todavía me pone los pelos de punta todos los días? ¡Estás a punto de descubrir que programar no es solo sobre computadoras, sino que es como tener superpoderes reales para hacer que tus ideas más salvajes cobren vida!
Mira, entiendo perfectamente si programar te parece intimidante ahora mismo. Cuando yo empecé, sinceramente pensaba que necesitabas ser una especie de genio de las matemáticas o haber estado programando desde que tenías cinco años. Pero esto fue lo que cambió por completo mi perspectiva: programar es exactamente como aprender a conversar en un idioma nuevo. Empiezas con "hola" y "gracias", luego pasas a pedir un café, y antes de que te des cuenta, ¡estás teniendo profundas conversaciones filosóficas! Excepto que en este caso, tienes conversaciones con computadoras, y ¿sabes qué? Son los compañeros de conversación más pacientes que vas a encontrar: nunca juzgan tus errores y siempre están entusiasmados por intentarlo de nuevo.
¿Conoces ese momento cuando estás usando tu aplicación favorita y todo simplemente encaja perfectamente? Cuando tocas un botón y pasa algo absolutamente mágico que te hace decir "wow, ¿cómo HICIERON eso?" Pues alguien como tú probablemente sentado en su cafetería favorita a las 2 AM con su tercer espresso escribió el código que creó esa magia. Y aquí viene lo que te va a volar la mente: al final de esta lección, no solo entenderás cómo lo hicieron, ¡sino que estarás deseando intentarlo tú mismo!
Hoy, vamos a explorar las increíbles herramientas que hacen que el desarrollo web moderno no solo sea posible, sino seriamente adictivo. Hablo de los mismos editores, navegadores y flujos de trabajo que usan desarrolladores en Netflix, Spotify y tu estudio indie de apps favorito todos los días. Y aquí viene la parte que te hará bailar de alegría: la mayoría de estas herramientas profesionales, estándar de la industria, ¡son completamente gratuitas!
Mira, entiendo perfectamente si ahora mismo la programación te parece intimidante. Cuando empecé, honestamente pensé que necesitabas ser un genio de las matemáticas o haber estado programando desde que tenías cinco años. Pero esto es lo que cambió completamente mi perspectiva: programar es exactamente como aprender a tener conversaciones en un nuevo idioma. Empiezas con "hola" y "gracias", luego avanzas a pedir un café, ¡y antes de que te des cuenta, estás teniendo profundas discusiones filosóficas! Excepto que en este caso, estás conversando con computadoras y, sinceramente, son las compañeras de conversación más pacientes del mundo: nunca juzgan tus errores y siempre están emocionadas de que lo intentes de nuevo.
Hoy, vamos a explorar las increíbles herramientas que hacen que el desarrollo web moderno no solo sea posible, sino seriamente adictivo. Estoy hablando de los mismos editores, navegadores y flujos de trabajo que usan los desarrolladores de Netflix, Spotify y tu estudio indie favorito todos los días. Y aquí está la parte que te hará bailar de alegría: ¡la mayoría de estas herramientas profesionales y estándar de la industria son completamente gratuitas!
![Intro Programming](../../../../translated_images/es/webdev101-programming.d6e3f98e61ac4bff.webp)
> Sketchnote por [Tomomi Imura](https://twitter.com/girlie_mac)
@ -17,68 +17,68 @@ journey
section Descubrir
Qué es la programación: 5: You
Lenguajes de programación: 4: You
Visión general de herramientas: 5: You
Resumen de herramientas: 5: You
section Explorar
Editores de código: 4: You
Navegadores y DevTools: 5: You
Navegadores y herramientas de desarrollo: 5: You
Línea de comandos: 3: You
section Practicar
Detective de lenguajes: 4: You
Exploración de herramientas: 5: You
Conexión con la comunidad: 5: You
Conexión comunitaria: 5: You
```
## ¡Veamos Qué Sabes Ya!
Antes de saltar a lo divertido, tengo curiosidad — ¿qué sabes ya sobre este mundo de la programación? Y escucha, si estás viendo estas preguntas y piensas "literalmente no tengo ni idea de nada de esto," no solo está bien, ¡es perfecto! Eso significa que estás en el lugar justo. Piensa en este quiz como un estiramiento antes de hacer ejercicio — ¡solo estamos calentando esos músculos cerebrales!
Antes de saltar a lo divertido, tengo curiosidad ¿qué sabes ya sobre este mundo de la programación? Y oye, si al ver estas preguntas piensas "literalmente no sé nada de esto," ¡eso no solo está bien, es perfecto! Eso significa que estás en el lugar correcto. Piensa en este cuestionario como estiramiento antes de un entrenamiento solo estamos calentando esos músculos cerebrales.
[Haz el quiz previo a la lección](https://ff-quizzes.netlify.app/web/)
[Realiza el cuestionario previo a la lección](https://ff-quizzes.netlify.app/web/)
## La Aventura Que Vamos a Emprender Juntos
## La Aventura en la que Vamos a Embarcarnos Juntos
¡Ok, realmente estoy emocionado por lo que vamos a explorar hoy! En serio, ¡ojalá pudiera ver tu cara cuando algunos de estos conceptos encajen! Aquí está el increíble viaje que vamos a hacer juntos:
¡Vale, estoy genuinamente emocionado por lo que vamos a explorar hoy! En serio, ojalá pudiera ver tu cara cuando algunos de estos conceptos encajen. Aquí está el increíble viaje que vamos a tomar juntos:
- **Qué es realmente la programación (¡y por qué es lo más genial que existe!)** Vamos a descubrir cómo el código es literalmente la magia invisible que impulsa todo a tu alrededor, desde esa alarma que de alguna manera sabe que es lunes por la mañana hasta el algoritmo que te recomienda justo lo que quieres en Netflix
- **Lenguajes de programación y sus increíbles personalidades** Imagina entrar a una fiesta donde cada persona tiene superpoderes diferentes y maneras propias de resolver problemas. Así es el mundo de los lenguajes de programación, y te va a encantar conocerlos
- **Los bloques fundamentales que hacen que la magia digital suceda** Piensa en estos como el set definitivo de LEGO creativo. Una vez entiendas cómo encajan estas piezas, te darás cuenta de que puedes literalmente construir cualquier cosa que tu imaginación sueñe
- **Herramientas profesionales que te harán sentir como si te dieran una varita de mago** No estoy siendo dramático aquí estas herramientas realmente te harán sentir que tienes superpoderes, y la mejor parte: ¡son las mismas que usan los profesionales!
- **Qué es realmente la programación (¡y por qué es lo más genial que existe!)** Vamos a descubrir cómo el código es literalmente la magia invisible que impulsa todo a tu alrededor, desde esa alarma que de alguna manera sabe que es lunes por la mañana hasta el algoritmo que selecciona perfectamente tus recomendaciones en Netflix
- **Los lenguajes de programación y sus increíbles personalidades** Imagina entrar a una fiesta donde cada persona tiene superpoderes completamente diferentes y distintas formas de resolver problemas. Así es el mundo de los lenguajes de programación, ¡y te encantará conocerlos!
- **Los bloques fundamentales que hacen posible la magia digital** Piensa en estos como el set definitivo de LEGO creativo. Una vez que entiendas cómo encajan estas piezas, te darás cuenta de que literalmente puedes construir lo que tu imaginación sueñe
- **Herramientas profesionales que te harán sentir como si te acabaran de entregar una varita mágica** No exagero aquí estas herramientas realmente te harán sentir que tienes superpoderes, ¿y lo mejor? ¡Son las mismas que usan los profesionales!
> 💡 **Esto es lo importante**: ¡Ni se te ocurra intentar memorizar todo hoy! Ahora mismo solo quiero que sientas esa chispa de emoción por lo que es posible. Los detalles se quedarán naturalmente mientras practicamos juntos así es como sucede el aprendizaje real.
> 💡 **Esto es lo importante**: No pienses ni por un momento en memorizar todo hoy. Ahora mismo, solo quiero que sientas esa chispa de emoción por lo que es posible. Los detalles se quedarán de forma natural mientras practicamos juntos ¡así es el aprendizaje real!
> Puedes hacer esta lección en [Microsoft Learn](https://learn.microsoft.com/en-us/learn/modules/web-development-101/introduction-programming/?WT.mc_id=academic-77807-sagibbon)!
> Puedes tomar esta lección en [Microsoft Learn](https://learn.microsoft.com/en-us/learn/modules/web-development-101/introduction-programming/?WT.mc_id=academic-77807-sagibbon)!
## Entonces, ¿Qué Es *Realmente* Programar?
## Entonces, ¿Qué Es Exactamente la Programación?
Bien, enfrentemos la pregunta del millón: ¿qué es realmente programar?
Muy bien, abordemos la pregunta de un millón: ¿qué es realmente programar?
Te voy a contar una historia que cambió por completo cómo veo esto. La semana pasada, estaba tratando de explicarle a mi mamá cómo usar el control remoto nuevo de nuestro televisor inteligente. Me sorprendí diciéndole cosas como "Presiona el botón rojo, pero no el botón rojo grande, el botón rojo pequeño a la izquierda... no, tu otro izquierdo... ok, ahora mantén presionado dos segundos, no uno, no tres..." ¿Te suena? 😅
Te contaré una historia que cambió completamente cómo pienso sobre esto. La semana pasada, intentaba explicarle a mi mamá cómo usar nuestro nuevo control remoto inteligente para la TV. Me descubrí diciendo cosas como "Presiona el botón rojo, pero no el botón rojo grande, el botón rojo pequeño a la izquierda... no, tu otra izquierda... ok, ahora mantenlo presionado dos segundos, no uno, ni tres..." ¿Te suena familiar? 😅
¡Eso es programar! Es el arte de dar instrucciones súper detalladas y paso a paso a algo que es muy poderoso pero necesita que todo esté perfectamente especificado. Excepto que en lugar de explicarle a tu mamá (que puede preguntar "¿qué botón rojo?!"), le estás explicando a una computadora (que simplemente hace exactamente lo que dices, incluso si lo que dijiste no es exactamente lo que querías decir).
¡Eso es programar! Es el arte de dar instrucciones increíblemente detalladas paso a paso a algo que es muy poderoso, pero que necesita que todo se explique perfectamente. Excepto que en lugar de explicarle a tu mamá (que puede preguntar "¿qué botón rojo?!"), le estás explicando a una computadora (que simplemente hace exactamente lo que dices, aunque no sea exactamente lo que quisiste decir).
Esto fue lo que me voló la cabeza cuando lo aprendí: las computadoras son en realidad bastante simples en su núcleo. Literalmente solo entienden dos cosas 1 y 0, que básicamente es "sí" y "no" o "encendido" y "apagado". ¡Eso es todo! Pero aquí es donde se pone mágico no tenemos que hablar en 1s y 0s como si estuviéramos en Matrix. Ahí es donde los **lenguajes de programación** vienen al rescate. Son como tener el mejor traductor del mundo que toma tus pensamientos humanos perfectamente normales y los convierte en lenguaje de computadora.
Esto es lo que me impresionó cuando aprendí esto: las computadoras en realidad son bastante simples en su núcleo. Literalmente solo entienden dos cosas 1 y 0, que básicamente es "sí" y "no" o "encendido" y "apagado." ¡Eso es todo! Pero aquí es donde empieza la magia no tenemos que hablar en 1s y 0s como si estuviéramos en Matrix. Ahí es donde vienen al rescate los **lenguajes de programación**. Son como tener al mejor traductor del mundo que toma tus pensamientos humanos normales y los convierte en lenguaje de computadora.
Y esto es lo que todavía me da escalofríos cada mañana que me despierto: literalmente *todo* lo digital en tu vida comenzó con alguien justo como tú, probablemente en pijama con una taza de café, escribiendo código en su laptop. ¿Ese filtro de Instagram que te hace ver impecable? Alguien codificó eso. ¿La recomendación que te llevó a tu nueva canción favorita? Un desarrollador creó ese algoritmo. ¿La app que te ayuda a dividir la cuenta en la cena con amigos? Sí, alguien pensó "esto es molesto, apuesto que puedo arreglarlo" y entonces... ¡lo hizo!
Y aquí está lo que todavía me da escalofríos cada mañana al despertar: literalmente *todo* lo digital en tu vida comenzó con alguien como tú, probablemente en pijama con una taza de café, escribiendo código en su portátil. ¿Ese filtro de Instagram que te hace ver impecable? Alguien programó eso. ¿La recomendación que te llevó a tu nueva canción favorita? Un desarrollador creó ese algoritmo. ¿La app que te ayuda a dividir la cuenta de la cena con amigos? Sí, alguien pensó "esto es molesto, seguro que puedo arreglarlo" y luego... ¡lo hizo!
Cuando aprendes a programar, no solo estás adquiriendo una nueva habilidad te estás convirtiendo en parte de esta increíble comunidad de solucionadores de problemas que pasan sus días pensando: "¿Y si pudiera construir algo que mejore un poco el día de alguien?" Honestamente, ¿hay algo más genial que eso?
Cuando aprendes a programar, no solo estás adquiriendo una nueva habilidad estás formando parte de esta increíble comunidad de solucionadores de problemas que pasan sus días pensando, "¿Qué pasaría si pudiera construir algo que haga el día de alguien un poquito mejor?" Honestamente, ¿hay algo más genial que eso?
**Dato curioso para investigar**: Esto es algo súper genial para buscar cuando tengas un momento libre ¿quién crees que fue el primer programador del mundo? Te doy una pista: ¡no es quien esperarías! La historia de esta persona es absolutamente fascinante y muestra que programar siempre ha sido sobre resolver problemas creativamente y pensar fuera de la caja.
**Búsqueda de dato curioso**: Aquí tienes algo súper interesante para buscar cuando tengas un momento libre ¿quién crees que fue el primer programador del mundo? Te doy una pista: ¡podría no ser quien esperas! La historia detrás de esta persona es absolutamente fascinante y muestra que la programación siempre ha sido sobre resolver problemas con creatividad y pensar fuera de la caja.
### 🧠 **Momento de Reflexión: ¿Cómo Te Sientes?**
### 🧠 **Momento de reflexión: ¿Cómo te sientes?**
**Tómate un momento para pensar:**
- ¿Tiene sentido ahora la idea de "dar instrucciones a computadoras"?
**Tómate un momento para reflexionar:**
- ¿Tiene sentido para ti ahora la idea de "dar instrucciones a las computadoras"?
- ¿Puedes pensar en una tarea diaria que te gustaría automatizar con programación?
- ¿Qué preguntas te están surgiendo sobre todo este tema de la programación?
- ¿Qué preguntas te están surgiendo en la cabeza sobre todo este asunto de la programación?
> **Recuerda**: Es totalmente normal que algunos conceptos estén confusos ahora. Aprender a programar es como aprender un idioma nuevo tu cerebro necesita tiempo para construir esas conexiones neuronales. ¡Lo estás haciendo genial!
> **Recuerda**: Es totalmente normal que algunos conceptos se sientan confusos ahora mismo. Aprender a programar es como aprender un nuevo idioma tu cerebro necesita tiempo para construir esas conexiones neuronales. ¡Lo estás haciendo genial!
## Los Lenguajes de Programación Son Como Diferentes Sabores de Magia
Esto va a sonar raro, pero quédate conmigo los lenguajes de programación son muy parecidos a diferentes tipos de música. Piénsalo: tienes jazz, que es suave e improvisado; rock que es potente y directo; clásico que es elegante y estructurado, y hip-hop que es creativo y expresivo. Cada estilo tiene su propia vibra, su propia comunidad de fans apasionados, y cada uno es perfecto para diferentes estados de ánimo y ocasiones.
Vale, esto va a sonar raro, pero quédate conmigo los lenguajes de programación son como diferentes tipos de música. Piensa en esto: tienes jazz, que es suave e improvisado; rock, que es poderoso y directo; clásico, que es elegante y estructurado; y hip-hop, que es creativo y expresivo. Cada estilo tiene su propia vibra, su propia comunidad de fans apasionados, y cada uno es perfecto para diferentes estados de ánimo y ocasiones.
¡Los lenguajes de programación funcionan exactamente igual! No usarías el mismo lenguaje para construir un juego móvil divertido que para procesar enormes cantidades de datos climáticos, igual que no pondrías death metal en una clase de yoga (bueno, la mayoría de las clases de yoga no, al menos 😄).
¡Los lenguajes de programación funcionan exactamente igual! No usarías el mismo lenguaje para crear un juego móvil divertido que para procesar enormes cantidades de datos climáticos, igual que no pondrías death metal en una clase de yoga (bueno, en la mayoría de clases de yoga, ¡jeje!).
Pero lo que me impresiona cada vez que lo pienso es esto: estos lenguajes son como tener al intérprete más paciente y brillante del mundo sentado a tu lado. Puedes expresar tus ideas de una manera que se siente natural para tu cerebro humano, y ellos se encargan de todo el trabajo increíblemente complejo de traducir eso a los 1s y 0s que las computadoras realmente entienden. Es como tener un amigo que habla perfectamente tanto "creatividad humana" como "lógica de computadora" ¡y nunca se cansa, nunca necesita pausas para café y nunca te juzga por hacer la misma pregunta dos veces!
Pero esto es lo que cada vez que lo pienso me impresiona completamente: estos lenguajes son como tener al intérprete más paciente y brillante del mundo sentado a tu lado. Puedes expresar tus ideas de una manera que se siente natural para tu cerebro humano, y ellos se encargan de todo el trabajo increíblemente complejo de traducir eso a 1s y 0s que las computadoras realmente entienden. Es como tener un amigo que es perfectamente fluido tanto en "creatividad humana" como en "lógica de computadora" ¡y nunca se cansa, nunca necesita pausas para café, y nunca te juzga por hacer la misma pregunta dos veces!
### Lenguajes de Programación Populares y Sus Usos
@ -87,12 +87,12 @@ mindmap
root((Lenguajes de Programación))
Desarrollo Web
JavaScript
Magia del Frontend
Magia Frontend
Sitios Web Interactivos
TypeScript
JavaScript + Tipos
Apps Empresariales
Datos e IA
Datos y IA
Python
Ciencia de Datos
Aprendizaje Automático
@ -121,41 +121,41 @@ mindmap
Servicios en la Nube
Backend Escalable
```
| Lenguaje | Mejor Para | Por qué es Popular |
| Lenguaje | Mejor Para | Por Qué Es Popular |
|----------|------------|--------------------|
| **JavaScript** | Desarrollo web, interfaces de usuario | Funciona en navegadores y potencia sitios interactivos |
| **Python** | Ciencia de datos, automatización, IA | Fácil de leer y aprender, bibliotecas poderosas |
| **JavaScript** | Desarrollo web, interfaces de usuario | Funciona en navegadores y potencia sitios web interactivos |
| **Python** | Ciencia de datos, automatización, IA | Fácil de leer y aprender, librerías potentes |
| **Java** | Aplicaciones empresariales, apps Android | Independiente de plataforma, robusto para sistemas grandes |
| **C#** | Aplicaciones Windows, desarrollo de juegos | Fuerte soporte en el ecosistema Microsoft |
| **C#** | Aplicaciones Windows, desarrollo de juegos | Fuerte soporte del ecosistema Microsoft |
| **Go** | Servicios en la nube, sistemas backend | Rápido, simple, diseñado para computación moderna |
### Lenguajes de Alto Nivel vs. Bajo Nivel
Ok, honestamente este fue el concepto que me rompió el cerebro cuando empecé a aprender, así que voy a compartir la analogía que finalmente me hizo click — ¡y espero que también te ayude!
Bien, honestamente este fue el concepto que me voló la cabeza cuando empecé a aprender, así que voy a compartir la analogía que finalmente me hizo entender ¡y espero que también te ayude!
Imagina que visitas un país donde no hablas el idioma, y necesitas desesperadamente encontrar el baño más cercano (a todos nos ha pasado, ¿verdad? 😅):
Imagina que estás visitando un país donde no hablas el idioma y necesitas urgentemente encontrar el baño más cercano (a todos nos ha pasado, ¿verdad? 😅):
- **Programación de bajo nivel** es como aprender el dialecto local tan bien que puedes conversar con la abuela que vende fruta en la esquina usando referencias culturales, jerga local y bromas internas que solo alguien que creció allí entendería. Súper impresionante e increíblemente eficiente... si hablas el idioma fluidamente. Pero bastante abrumador cuando solo buscas un baño.
- **Programación de bajo nivel** es como aprender tan bien el dialecto local que puedes charlar con la abuela que vende fruta en la esquina usando referencias culturales, jerga local y bromas internas que sólo alguien que creció allí entendería. Súper impresionante e increíblemente eficiente... ¡si acaso eres fluido! Pero bastante abrumador cuando solo tratas de encontrar el baño.
- **Programación de alto nivel** es como tener ese increíble amigo local que simplemente te entiende. Puedes decir "Realmente necesito encontrar un baño" en inglés simple, y él se encarga de toda la traducción cultural y te da indicaciones que tu cerebro no local entiende perfectamente.
- **Programación de alto nivel** es como tener ese amigo local increíble que simplemente te entiende. Puedes decir "Realmente necesito encontrar un baño" en inglés simple, y ellos manejan toda la traducción cultural y te dan instrucciones que tienen perfecto sentido para tu cerebro no local.
En términos de programación:
- **Lenguajes de bajo nivel** (como Assembly o C) te permiten tener conversaciones muy detalladas con el hardware real de la computadora, pero tienes que pensar como una máquina, lo cual... bueno, digamos que es un gran cambio mental.
- **Lenguajes de alto nivel** (como JavaScript, Python o C#) te permiten pensar como humano mientras ellos manejan todo el idioma máquina detrás de escena. Además, tienen comunidades increíblemente acogedoras llenas de gente que recuerda lo que es ser nuevo y realmente quiere ayudar.
- Los **lenguajes de bajo nivel** (como Assembly o C) te permiten tener conversaciones sumamente detalladas con el hardware real de la computadora, pero necesitas pensar como una máquina, lo cual... bueno, digamos que es un cambio mental bastante grande.
- Los **lenguajes de alto nivel** (como JavaScript, Python o C#) te permiten pensar como un humano mientras ellos gestionan todo el lenguaje máquina detrás de escenas. Además, tienen comunidades increíblemente acogedoras llenas de gente que recuerda lo que es ser nuevo y que realmente quiere ayudar.
¿Adivina con cuáles te sugiero empezar? 😉 Los lenguajes de alto nivel son como usar ruedas de entrenamiento que en realidad nunca querrás quitarte porque hacen que toda la experiencia sea mucho más disfrutable.
¿Adivina con cuáles voy a sugerirte que empieces? 😉 Los lenguajes de alto nivel son como tener rueditas de entrenamiento que en realidad nunca quieres quitar porque hacen toda la experiencia mucho más agradable.
```mermaid
flowchart TB
A["👤 Pensamiento Humano:<br/>'Quiero calcular números de Fibonacci'"] --> B{Elegir nivel de lenguaje}
B -->|Alto nivel| C["🌟 JavaScript/Python<br/>Fácil de leer y escribir"]
B -->|Bajo nivel| D["⚙️ Ensamblador/C<br/>Control directo del hardware"]
B -->|Nivel alto| C["🌟 JavaScript/Python<br/>Fácil de leer y escribir"]
B -->|Nivel bajo| D["⚙️ Assembly/C<br/>Control directo del hardware"]
C --> E["📝 Escribir: fibonacci(10)"]
D --> F["📝 Escribir: mov r0,#00<br/>sub r0,r0,#01"]
E --> G["🤖 Entendimiento de la computadora:<br/>El traductor maneja la complejidad"]
E --> G["🤖 Entendimiento del ordenador:<br/>El traductor maneja la complejidad"]
F --> G
G --> H["💻 Mismo resultado:<br/>0, 1, 1, 2, 3, 5, 8, 13..."]
@ -166,9 +166,9 @@ flowchart TB
```
### Déjame Mostrarte Por Qué Los Lenguajes de Alto Nivel Son Mucho Más Amigables
Bien, estoy a punto de mostrarte algo que demuestra perfectamente por qué me enamoré de los lenguajes de alto nivel, pero primero necesito que me prometas algo. Cuando veas ese primer ejemplo de código, ¡no te asustes! Se supone que debe parecer intimidante. ¡Ese es exactamente el punto que quiero hacer!
Muy bien, estoy a punto de mostrarte algo que demuestra perfectamente por qué me enamoré de los lenguajes de alto nivel, pero primero necesito que me hagas una promesa. Cuando veas ese primer ejemplo de código, no entres en pánico. Se supone que debe parecer intimidante. ¡Ese es exactamente el punto que quiero hacer!
Vamos a ver la misma tarea escrita en dos estilos completamente diferentes. Ambos crean lo que se llama la secuencia de Fibonacci es un hermoso patrón matemático donde cada número es la suma de los dos anteriores: 0, 1, 1, 2, 3, 5, 8, 13... (Dato curioso: encontrarás este patrón literalmente en todas partes en la naturaleza las espirales de las semillas de girasol, los patrones de piñas, ¡incluso la forma en que se forman las galaxias!)
Vamos a ver la misma tarea escrita en dos estilos completamente diferentes. Ambas crean lo que se llama la secuencia de Fibonacci es un hermoso patrón matemático donde cada número es la suma de los dos anteriores: 0, 1, 1, 2, 3, 5, 8, 13... (Dato curioso: encontrarás este patrón literalmente en todas partes en la naturaleza espirales de semillas de girasol, patrones de piñas, ¡incluso la forma en que se forman las galaxias!)
¿Listo para ver la diferencia? ¡Vamos!
@ -185,9 +185,9 @@ console.log('Fibonacci sequence:');
**Esto es lo que hace este código:**
- **Declarar** una constante para especificar cuántos números de Fibonacci queremos generar
- **Inicializar** dos variables para seguir los números actuales y siguientes en la secuencia
- **Configurar** los valores iniciales (0 y 1) que definen el patrón Fibonacci
- **Mostrar** un mensaje encabezado para identificar nuestra salida
- **Inicializar** dos variables para seguir el número actual y el siguiente en la secuencia
- **Establecer** los valores iniciales (0 y 1) que definen el patrón de Fibonacci
- **Mostrar** un mensaje de encabezado para identificar nuestra salida
```javascript
// Paso 2: Generar la secuencia con un bucle
@ -202,10 +202,10 @@ for (let i = 0; i < fibonacciCount; i++) {
```
**Desglosando lo que pasa aquí:**
- **Recorrer** cada posición en nuestra secuencia usando un bucle `for`
- **Mostrar** cada número con su posición utilizando formato de plantilla literal
- **Recorrer** cada posición en la secuencia usando un bucle `for`
- **Mostrar** cada número con su posición usando formato de plantilla literal
- **Calcular** el siguiente número de Fibonacci sumando los valores actual y siguiente
- **Actualizar** nuestras variables para avanzar a la siguiente iteración
- **Actualizar** nuestras variables para pasar a la siguiente iteración
```javascript
// Paso 3: Enfoque funcional moderno
@ -225,10 +225,10 @@ console.log(fibSequence);
```
**En lo anterior, hemos:**
- **Creado** una función reutilizable usando la sintaxis moderna de funciones flecha
- **Creado** una función reutilizable usando sintaxis moderna de funciones flecha
- **Construido** un arreglo para almacenar la secuencia completa en lugar de mostrar número por número
- **Usado** índices del arreglo para calcular cada nuevo número a partir de valores previos
- **Retornado** la secuencia completa para usarla de forma flexible en otras partes del programa
- **Usado** indexación de arreglos para calcular cada nuevo número a partir de valores previos
- **Retornado** la secuencia completa para uso flexible en otras partes de nuestro programa
**Lenguaje de bajo nivel (ARM Assembly) Amigable para computadoras:**
@ -257,40 +257,40 @@ back add r0,r1
end
```
Fíjate cómo la versión en JavaScript se lee casi como instrucciones en inglés, mientras que la versión en Assembly usa comandos crípticos que controlan directamente el procesador de la computadora. Ambas logran la misma tarea, pero el lenguaje de alto nivel es mucho más fácil para los humanos de entender, escribir y mantener.
Fíjate cómo la versión en JavaScript se lee casi como instrucciones en inglés, mientras que la versión en Assembly usa comandos crípticos que controlan directamente el procesador de la computadora. Ambas logran la misma tarea, pero el lenguaje de alto nivel es mucho más fácil para que los humanos entiendan, escriban y mantengan.
**Diferencias clave que notarás:**
- **Legibilidad**: JavaScript usa nombres descriptivos como `fibonacciCount` mientras que Assembly usa etiquetas crípticas como `r0`, `r1`
- **Comentarios**: Los lenguajes de alto nivel fomentan comentarios explicativos que hacen que el código sea autodocumentado
- **Estructura**: El flujo lógico de JavaScript coincide con cómo los humanos piensan sobre los problemas paso a paso
- **Mantenimiento**: Actualizar la versión de JavaScript para diferentes requisitos es sencillo y claro
- **Comentarios**: Los lenguajes de alto nivel fomentan comentarios explicativos que hacen que el código se documente por sí mismo
- **Estructura**: El flujo lógico de JavaScript coincide con la forma en que los humanos pensamos sobre problemas paso a paso
- **Mantenimiento**: Actualizar la versión de JavaScript para diferentes requerimientos es sencillo y claro
**Sobre la secuencia de Fibonacci**: ¡Este patrón numérico absolutamente maravilloso (donde cada número es la suma de los dos anteriores: 0, 1, 1, 2, 3, 5, 8...) aparece literalmente *en todas partes* en la naturaleza! Lo encontrarás en las espirales de los girasoles, los patrones de las piñas, la forma en que se curvan los caparazones de nautilus e incluso en cómo crecen las ramas de los árboles. ¡Es realmente asombroso cómo las matemáticas y el código pueden ayudarnos a entender y recrear los patrones que la naturaleza usa para crear belleza!
**Acerca de la secuencia de Fibonacci**: Este patrón de números absolutamente hermoso (donde cada número es igual a la suma de los dos anteriores: 0, 1, 1, 2, 3, 5, 8...) ¡aparece literalmente *en todas partes* en la naturaleza! Lo encontrarás en las espirales de los girasoles, los patrones de las piñas, la curva de las conchas de nautilus e incluso en cómo crecen las ramas de los árboles. ¡Es realmente asombroso cómo las matemáticas y el código pueden ayudarnos a entender y recrear los patrones que la naturaleza usa para crear belleza!
## Los Bloques de Construcción Que Hacen Que La Magia Ocurra
## Los Bloques Fundamentales Que Hacen Que la Magia Suceda
Muy bien, ahora que has visto cómo lucen los lenguajes de programación en acción, vamos a desglosar las piezas fundamentales que componen literalmente todos los programas jamas escritos. Piensa en estas como los ingredientes esenciales en tu receta favorita: una vez que entiendes lo que hace cada uno, ¡podrás leer y escribir código en prácticamente cualquier lenguaje!
Bien, ahora que has visto cómo lucen los lenguajes de programación en acción, vamos a desglosar las piezas fundamentales que conforman literalmente todos los programas escritos. Piensa en estos como los ingredientes esenciales en tu receta favorita una vez que entiendas qué hace cada uno, ¡podrás leer y escribir código en prácticamente cualquier lenguaje!
Esto es algo parecido a aprender la gramática de la programación. ¿Recuerdas cuando en la escuela aprendiste sobre sustantivos, verbos y cómo armar oraciones? La programación tiene su propia versión de gramática, y sinceramente, es mucho más lógica y permisiva que la gramática del inglés alguna vez fue! 😄
Esto es algo así como aprender la gramática de la programación. ¿Recuerdas en la escuela cuando aprendiste sobre sustantivos, verbos y cómo armar oraciones? La programación tiene su propia versión de gramática, y honestamente, ¡es mucho más lógica y tolerante que la gramática inglesa! 😄
### Sentencias: Las Instrucciones Paso a Paso
Empecemos con las **sentencias** son como oraciones individuales en una conversación con tu computadora. Cada sentencia le dice a la computadora que haga una cosa específica, algo parecido a dar direcciones: "Gira a la izquierda aquí," "Detente en el semáforo en rojo," "Estaciona en ese lugar."
Comencemos con las **sentencias** son como oraciones individuales en una conversación con tu computadora. Cada sentencia le dice a la computadora que haga algo específico, como dar indicaciones: "Gira a la izquierda aquí", "Detente en el semáforo rojo", "Estaciona en ese lugar".
Lo que me encanta de las sentencias es lo legibles que suelen ser. Mira esto:
```javascript
// Sentencias básicas que realizan acciones únicas
// Declaraciones básicas que realizan acciones individuales
const userName = "Alex";
console.log("Hello, world!");
const sum = 5 + 3;
```
**Esto es lo que hace este código:**
- **Declarar** una variable constante para almacenar el nombre de un usuario
- **Mostrar** un mensaje de saludo en la salida de la consola
- **Calcular** y guardar el resultado de una operación matemática
- **Declarar** una variable constante para guardar el nombre de un usuario
- **Mostrar** un mensaje de saludo en la consola de salida
- **Calcular** y almacenar el resultado de una operación matemática
```javascript
// Declaraciones que interactúan con páginas web
@ -304,13 +304,13 @@ document.body.style.backgroundColor = "lightblue";
### Variables: El Sistema de Memoria de Tu Programa
Bueno, las **variables** son honestamente uno de mis conceptos favoritos para enseñar porque son muy parecidas a cosas que ya usas todos los días.
Bien, las **variables** son honestamente uno de mis conceptos favoritos para enseñar porque son muy parecidas a cosas que ya usas todos los días.
Piensa en la lista de contactos de tu teléfono por un momento. No memorizas el número de teléfono de todos, sino que guardas "Mamá," "Mejor Amigo" o "Pizzería que entrega hasta las 2 AM" y dejas que tu teléfono recuerde los números reales. ¡Las variables funcionan exactamente igual! Son como contenedores con etiquetas donde tu programa puede almacenar información y recuperarla más tarde usando un nombre que realmente tenga sentido.
Piensa en la lista de contactos de tu teléfono por un segundo. No memorizas el número de teléfono de todos — en su lugar, guardas “Mamá”, “Mejor Amigo” o “Pizzería Que Reparte Hasta Las 2 AM” y dejas que tu teléfono recuerde los números reales. ¡Las variables funcionan exactamente igual! Son como contenedores etiquetados donde tu programa puede almacenar información y recuperarla después usando un nombre que realmente tenga sentido.
Lo que es realmente genial: las variables pueden cambiar mientras tu programa se ejecuta (por eso se llaman "variables" ¿ves qué hicieron ahí?). Así como podrías actualizar el contacto de esa pizzería cuando descubres un lugar aún mejor, las variables pueden actualizarse a medida que tu programa aprende información nueva o cambian las situaciones.
Lo realmente genial: las variables pueden cambiar mientras tu programa se ejecuta (de ahí viene el nombre "variable" — ¿ves qué hicieron ahí?). Así como puedes actualizar ese contacto de la pizzería cuando descubres un lugar aún mejor, las variables pueden actualizarse a medida que tu programa aprende nueva información o cambian las situaciones.
Déjame mostrarte lo simple y lindo que esto puede ser:
Déjame mostrarte cómo puede ser esto de maravillosamente simple:
```javascript
// Paso 1: Creando variables básicas
@ -322,9 +322,9 @@ let isRaining = false;
**Entendiendo estos conceptos:**
- **Guardar** valores inmutables en variables `const` (como el nombre del sitio)
- **Usar** `let` para valores que pueden cambiar durante la ejecución del programa
- **Asignar** distintos tipos de datos: cadenas (texto), números y booleanos (true/false)
- **Elegir** nombres descriptivos que expliquen qué contiene cada variable
- **Usar** `let` para valores que pueden cambiar durante tu programa
- **Asignar** diferentes tipos de datos: cadenas (texto), números y booleanos (true/false)
- **Elegir** nombres descriptivos que expliquen lo que cada variable contiene
```javascript
// Paso 2: Trabajando con objetos para agrupar datos relacionados
@ -336,8 +336,8 @@ const weatherData = {
```
**En el ejemplo anterior, hemos:**
- **Creado** un objeto para agrupar información meteorológica relacionada
- **Organizado** múltiples datos bajo un nombre de variable
- **Creado** un objeto para agrupar información del clima relacionada
- **Organizado** múltiples datos bajo un solo nombre de variable
- **Usado** pares clave-valor para etiquetar claramente cada dato
```javascript
@ -350,9 +350,9 @@ currentWeather = "cloudy";
temperature = 68;
```
**Entendamos cada parte:**
**Vamos a entender cada parte:**
- **Mostrar** información usando literales de plantilla con la sintaxis `${}`
- **Acceder** a propiedades del objeto usando notación de puntos (`weatherData.windSpeed`)
- **Acceder** a propiedades de un objeto usando notación de punto (`weatherData.windSpeed`)
- **Actualizar** variables declaradas con `let` para reflejar condiciones cambiantes
- **Combinar** múltiples variables para crear mensajes significativos
@ -363,19 +363,19 @@ console.log(`${location} humidity: ${humidity}%`);
```
**Lo que necesitas saber:**
- **Extraer** propiedades específicas de objetos usando asignación por desestructuración
- **Extraer** propiedades específicas de objetos usando asignación por destructuración
- **Crear** nuevas variables automáticamente con los mismos nombres que las claves del objeto
- **Simplificar** el código evitando notación de puntos repetitiva
- **Simplificar** código evitando la repetición de notación de punto
### Flujo de Control: Enseñando a Tu Programa a Pensar
### Flujo de Control: Enseñándole a Tu Programa a Pensar
Bueno, aquí es donde la programación se vuelve realmente asombrosa. El **flujo de control** es básicamente enseñar a tu programa a tomar decisiones inteligentes, exactamente como tú haces todos los días sin siquiera pensarlo.
Muy bien, aquí es donde la programación se vuelve absolutamente asombrosa. El **flujo de control** es básicamente enseñarle a tu programa a tomar decisiones inteligentes, exactamente como tú haces todos los días sin ni siquiera pensarlo.
Imagina esto: esta mañana probablemente hiciste algo así como "Si está lloviendo, llevo paraguas. Si hace frío, me pongo una chaqueta. Si voy tarde, me salto el desayuno y tomo café en el camino." ¡Tu cerebro sigue esta lógica if-then docenas de veces cada día!
Imagina esto: esta mañana probablemente hiciste algo como “Si está lloviendo, agarro un paraguas. Si hace frío, me pongo una chaqueta. Si voy tarde, me salto el desayuno y tomo café camino al trabajo”. ¡Tu cerebro sigue naturalmente esta lógica if-then docenas de veces cada día!
Esto es lo que hace que los programas parezcan inteligentes y vivos en lugar de sólo seguir un guion aburrido y predecible. Pueden observar una situación, evaluar qué pasa y reaccionar apropiadamente. ¡Es como darle a tu programa un cerebro que puede adaptarse y tomar decisiones!
Esto es lo que hace que los programas se sientan inteligentes y vivos en vez de solo seguir un guion aburrido y predecible. Pueden realmente mirar una situación, evaluar qué está pasando y responder adecuadamente. Es como darle a tu programa un cerebro que puede adaptarse y tomar decisiones.
¿Quieres ver qué tan bonito funciona? Déjame mostrarte:
¿Quieres ver lo maravillosamente que funciona? Déjame mostrarte:
```javascript
// Paso 1: Lógica condicional básica
@ -390,10 +390,10 @@ if (userAge >= 18) {
```
**Esto es lo que hace este código:**
- **Verifica** si la edad del usuario cumple con el requisito para votar
- **Ejecuta** diferentes bloques de código según el resultado de la condición
- **Calcula** y muestra cuánto falta para ser elegible para votar si es menor de 18
- **Da** retroalimentación específica y útil para cada caso
- **Verificar** si la edad del usuario cumple con el requisito para votar
- **Ejecutar** diferentes bloques de código según el resultado de la condición
- **Calcular** y mostrar cuánto falta para que pueda votar si es menor de 18
- **Proveer** retroalimentación específica y útil para cada escenario
```javascript
// Paso 2: Múltiples condiciones con operadores lógicos
@ -409,11 +409,11 @@ if (userAge >= 18 && hasPermission) {
}
```
**Desglose de lo que sucede aquí:**
- **Combina** múltiples condiciones usando el operador `&&` (y)
- **Crea** una jerarquía de condiciones con `else if` para múltiples escenarios
- **Maneja** todos los casos posibles con una sentencia final `else`
- **Provee** retroalimentación clara y accionable para cada situación diferente
**Desglosando lo que sucede aquí:**
- **Combinar** múltiples condiciones usando el operador `&&` (y)
- **Crear** una jerarquía de condiciones con `else if` para múltiples escenarios
- **Manejar** todos los casos posibles con una sentencia final `else`
- **Proveer** retroalimentación clara y accionable para cada situación diferente
```javascript
// Paso 3: Condicional conciso con operador ternario
@ -422,9 +422,9 @@ console.log(`Status: ${votingStatus}`);
```
**Lo que debes recordar:**
- **Usa** el operador ternario (`? :`) para condiciones simples de dos opciones
- **Escribe** la condición primero, seguida de `?`, luego el resultado verdadero, después `:`, y finalmente el resultado falso
- **Aplica** este patrón cuando necesites asignar valores basados en condiciones
- **Usar** el operador ternario (`? :`) para condiciones simples de dos opciones
- **Escribir** la condición primero, seguida de `?`, luego resultado si es verdadero, después `:`, y finalmente resultado si es falso
- **Aplicar** este patrón cuando necesites asignar valores sen condiciones
```javascript
// Paso 4: Manejo de múltiples casos específicos
@ -448,53 +448,53 @@ switch (dayOfWeek) {
```
**Este código logra lo siguiente:**
- **Compara** el valor de una variable con múltiples casos específicos
- **Agrupa** casos similares juntos (días de semana vs fines de semana)
- **Ejecuta** el bloque de código adecuado cuando encuentra coincidencia
- **Incluye** un caso `default` para manejar valores inesperados
- **Usa** sentencias `break` para evitar que el código continúe al siguiente caso
- **Comparar** el valor de una variable con múltiples casos específicos
- **Agrupar** casos similares (días laborables vs fines de semana)
- **Ejecutar** el bloque de código apropiado cuando se encuentra una coincidencia
- **Incluir** un caso `default` para manejar valores inesperados
- **Usar** sentencias `break` para evitar que el código continúe al siguiente caso
> 💡 **Analogía del mundo real**: Piensa en el flujo de control como tener el GPS más paciente del mundo dándote direcciones. Puede decir "Si hay tráfico en la Calle Principal, toma la autopista. Si hay construcción bloqueando la autopista, intenta la ruta escénica." Los programas usan este mismo tipo de lógica condicional para responder inteligentemente a diferentes situaciones y siempre dar a los usuarios la mejor experiencia posible.
> 💡 **Analogía del mundo real**: Piensa en el flujo de control como tener el GPS más paciente del mundo dándote indicaciones. Puede decir: "Si hay tráfico en la Calle Principal, toma la autopista. Si la autopista está en construcción, prueba la ruta panorámica". Los programas usan exactamente el mismo tipo de lógica condicional para responder inteligentemente a diferentes situaciones y siempre brindar a los usuarios la mejor experiencia posible.
### 🎯 **Chequeo de Conceptos: Dominio de los Bloques de Construcción**
### 🎯 **Chequeo de Conceptos: Dominio de los Bloques Fundamentales**
**Veamos cómo vas con lo fundamental:**
**Veamos cómo vas con los fundamentos:**
- ¿Puedes explicar la diferencia entre una variable y una sentencia con tus propias palabras?
- Piensa en un escenario real donde usarías una decisión if-then (como nuestro ejemplo de votación)
- ¿Qué es algo sobre la lógica de programación que te sorprendió?
- Piensa en un escenario del mundo real donde usarías una decisión if-then (como nuestro ejemplo de votar)
- ¿Qué fue algo sobre la lógica de la programación que te sorprendió?
**Un rápido refuerzo de confianza:**
**Un refuerzo rápido de confianza:**
```mermaid
flowchart LR
A["📝 Sentencias<br/>(Instrucciones)"] --> B["📦 Variables<br/>(Almacenamiento)"] --> C["🔀 Flujo de Control<br/>(Decisiones)"] --> D["🎉 ¡Programa Funcional!"]
A["📝 Sentencias<br/>(Instrucciones)"] --> B["📦 Variables<br/>(Almacenamiento)"] --> C["🔀 Control de Flujo<br/>(Decisiones)"] --> D["🎉 ¡Programa Funcional!"]
style A fill:#ffeb3b
style B fill:#4caf50
style C fill:#2196f3
style D fill:#ff4081
```
**Lo que viene a continuación**: ¡Nos vamos a divertir muchísimo profundizando en estos conceptos mientras continuamos este increíble viaje juntos! Por ahora, concéntrate en sentir esa emoción por todas las increíbles posibilidades que tienes por delante. Las habilidades y técnicas específicas se te pegarán de forma natural a medida que practiquemos juntos ¡te prometo que será mucho más divertido de lo que esperas!
**Lo que viene ahora**: ¡Vamos a divertirnos muchísimo profundizando en estos conceptos mientras continuamos este increíble viaje juntos! Por ahora, solo céntrate en sentir esa emoción sobre todas las increíbles posibilidades que te esperan. Las habilidades y técnicas específicas se pegarán naturalmente a medida que practiquemos juntos ¡te prometo que será mucho más divertido de lo que esperas!
## Herramientas del Oficio
Muy bien, en serio, aquí es donde me emociono tanto que apenas me aguanto! 🚀 Estamos a punto de hablar de las increíbles herramientas que te harán sentir como si acabaras de recibir las llaves de una nave espacial digital.
Bien, honestamente aquí es donde me emociono tanto que apenas me puedo contener! 🚀 Estamos a punto de hablar de las increíbles herramientas que te harán sentir como si te acabaran de entregar las llaves de una nave espacial digital.
¿Sabes cómo un chef tiene esos cuchillos perfectamente equilibrados que se sienten como extensiones de sus manos? ¿O cómo un músico tiene esa guitarra que parece cantar en el momento en que la toca? Bueno, los desarrolladores tenemos nuestra propia versión de estas herramientas mágicas, y esto es lo que va a dejarte completamente alucinado ¡la mayoría de ellas son completamente gratuitas!
¿Sabes cómo un chef tiene esos cuchillos perfectamente balanceados que se sienten como extensiones de sus manos? ¿O cómo un músico tiene esa guitarra que parece cantar en cuanto la toca? Bueno, los desarrolladores tenemos nuestra propia versión de estas herramientas mágicas, y aquí está lo que te va a dejar maravillado ¡la mayoría son completamente gratuitas!
Estoy casi saltando en mi silla pensando en compartir esto contigo porque han revolucionado completamente cómo construimos software. Hablamos de asistentes de codificación impulsados por IA que pueden ayudarte a escribir tu código (¡no estoy bromeando!), entornos en la nube donde puedes construir aplicaciones completas desde literalmente cualquier lugar con Wi-Fi, y herramientas de depuración tan sofisticadas que son como tener visión de rayos X para tus programas.
Prácticamente salto en mi silla pensando en compartirlas contigo porque han revolucionado completamente cómo construimos software. Estamos hablando de asistentes de código impulsados por IA que pueden ayudarte a escribir código (¡no bromeo!), entornos en la nube donde puedes construir aplicaciones enteras desde literalmente cualquier lugar con Wi-Fi, y herramientas de depuración tan sofisticadas que son como tener visión de rayos X para tus programas.
Y aquí viene la parte que aún me pone la piel de gallina: estas no son "herramientas para principiantes" que vas a dejar atrás. Son las mismas herramientas profesionales que usan desarrolladores en Google, Netflix y ese estudio indie de apps que adoras, ahora mismo. ¡Vas a sentirte como un profesional usándolas!
Y aquí viene la parte que todavía me pone la piel de gallina: estas no son "herramientas para principiantes" que vas a dejar atrás. ¡Estas son las mismas herramientas profesionales que usan desarrolladores en Google, Netflix y ese estudio indie de apps que tanto te gusta justo en este momento! Usarlas te hará sentir como todo un profesional.
```mermaid
graph TD
A["💡 Tu Idea"] --> B["⌨️ Editor de Código<br/>(VS Code)"]
B --> C["🌐 Herramientas para Desarrolladores del Navegador<br/>(Pruebas y Depuración)"]
B --> C["🌐 Herramientas DevTools del Navegador<br/>(Pruebas y Depuración)"]
C --> D["⚡ Línea de Comandos<br/>(Automatización y Herramientas)"]
D --> E["📚 Documentación<br/>(Aprendizaje y Referencia)"]
E --> F["🚀 ¡Aplicación Web Asombrosa!"]
B -.-> G["🤖 Asistente de IA<br/>(GitHub Copilot)"]
C -.-> H["📱 Pruebas en Dispositivos<br/>(Diseño Responsive)"]
C -.-> H["📱 Pruebas en Dispositivos<br/>(Diseño Responsivo)"]
D -.-> I["📦 Gestores de Paquetes<br/>(npm, yarn)"]
E -.-> J["👥 Comunidad<br/>(Stack Overflow)"]
@ -507,32 +507,32 @@ graph TD
```
### Editores de Código e IDEs: Tus Nuevos Mejores Amigos Digitales
Hablemos de editores de código ¡estos están a punto de convertirse en tus nuevos lugares favoritos para pasar el rato! Piénsalos como tu santuario personal de codificación donde pasarás la mayor parte de tu tiempo creando y perfeccionando tus creaciones digitales.
Hablemos de los editores de código estos están a punto de convertirse seriamente en tus lugares favoritos para pasar el rato. Piensa en ellos como tu santuario personal de codificación donde pasarás la mayor parte del tiempo creando y perfeccionando tus obras digitales.
Pero aquí está lo realmente mágico de los editores modernos: no son simples editores de texto lujosos. Son como tener al mentor de codificación más brillante y alentador sentado justo a tu lado 24/7. Detectan tus errores tipográficos antes siquiera de que te des cuenta, sugieren mejoras que te hacen parecer un genio, te ayudan a entender qué hace cada pieza del código, y algunos incluso pueden predecir lo que vas a escribir y ofrecerte terminar tus ideas.
Pero aquí está lo absolutamente mágico de los editores modernos: no son solo editores de texto bonitos. Son como tener al mentor de codificación más brillante y solidario sentado justo a tu lado 24/7. Detectan tus errores tipográficos antes de que siquiera los notes, sugieren mejoras que te hacen parecer un genio, te ayudan a entender qué hace cada fragmento de código, ¡y algunos incluso pueden predecir lo que estás por escribir y ofrecer terminar tus ideas!
Recuerdo la primera vez que descubrí la autocompletación literalmente sentí que estaba viviendo en el futuro. Empiezas a escribir algo, y tu editor dice: "Oye, ¿estabas pensando en esta función que hace exactamente lo que necesitas?" ¡Es como tener un lector de mentes como compañero de codificación!
Recuerdo cuando descubrí la autocompletación — literalmente sentí que estaba viviendo en el futuro. Empiezas a escribir algo, y tu editor te dice, "Oye, ¿pensabas en esta función que hace exactamente lo que necesitas?" Es como tener un lector de mentes como compañero de codificación.
**¿Qué hace que estos editores sean tan increíbles?**
Los editores modernos ofrecen una impresionante variedad de características diseñadas para aumentar tu productividad:
Los editores de código modernos ofrecen una impresionante variedad de características diseñadas para aumentar tu productividad:
| Característica | Qué hace | Por qué ayuda |
|---------|--------------|--------------|
| **Resaltado de Sintaxis** | Colorea diferentes partes de tu código | Hace que el código sea más fácil de leer y detectar errores |
| Característica | Qué Hace | Por qué Ayuda |
|---------------|----------|--------------|
| **Resaltado de Sintaxis** | Colorea diferentes partes de tu código | Facilita la lectura y detectar errores |
| **Autocompletado** | Sugiere código mientras escribes | Acelera la codificación y reduce errores tipográficos |
| **Herramientas de Depuración** | Te ayuda a encontrar y corregir errores | Ahorra horas de tiempo de solución de problemas |
| **Extensiones** | Añaden funciones especializadas | Personaliza tu editor para cualquier tecnología |
| **Asistentes de IA** | Sugieren código y explicaciones | Acelera el aprendizaje y la productividad |
| **Herramientas de Depuración** | Te ayuda a encontrar y corregir errores | Ahorra horas solucionando problemas |
| **Extensiones** | Agrega funciones especializadas | Personaliza tu editor para cualquier tecnología |
| **Asistentes de IA** | Sugiere código y explicaciones | Acelera el aprendizaje y la productividad |
> 🎥 **Recurso en Video**: ¿Quieres ver estas herramientas en acción? Mira este [video Herramientas del Oficio](https://youtube.com/watch?v=69WJeXGBdxg) para una visión completa.
> 🎥 **Recurso en video**: ¿Quieres ver estas herramientas en acción? Mira este [video Herramientas del Oficio](https://youtube.com/watch?v=69WJeXGBdxg) para una visión completa.
#### Editores recomendados para desarrollo web
#### Editores Recomendados para Desarrollo Web
**[Visual Studio Code](https://code.visualstudio.com/?WT.mc_id=academic-77807-sagibbon)** (Gratis)
- El más popular entre desarrolladores web
- Excelente ecosistema de extensiones
- Terminal incorporado e integración con Git
- Terminal integrado e integración con Git
- **Extensiones imprescindibles**:
- [GitHub Copilot](https://marketplace.visualstudio.com/items?itemName=GitHub.copilot) - Sugerencias de código impulsadas por IA
- [Live Share](https://marketplace.visualstudio.com/items?itemName=MS-vsliveshare.vsliveshare) - Colaboración en tiempo real
@ -541,60 +541,60 @@ Los editores modernos ofrecen una impresionante variedad de características dis
**[JetBrains WebStorm](https://www.jetbrains.com/webstorm/)** (De pago, gratis para estudiantes)
- Herramientas avanzadas de depuración y pruebas
- Autocompletado de código inteligente
- Autocompletado inteligente de código
- Control de versiones integrado
**IDEs basados en la nube** (Precios varios)
**IDEs Basados en la Nube** (Diversos precios)
- [GitHub Codespaces](https://github.com/features/codespaces) - VS Code completo en tu navegador
- [Replit](https://replit.com/) - Excelente para aprender y compartir código
- [Replit](https://replit.com/) - Genial para aprender y compartir código
- [StackBlitz](https://stackblitz.com/) - Desarrollo web full-stack instantáneo
> 💡 **Consejo para empezar**: Comienza con Visual Studio Code es gratis, muy usado en la industria, y tiene una enorme comunidad creando tutoriales y extensiones útiles.
> 💡 **Consejo para comenzar**: Empieza con Visual Studio Code es gratis, muy usado en la industria y tiene una comunidad enorme creando tutoriales útiles y extensiones.
### Navegadores Web: Tu Laboratorio Secreto de Desarrollo
Prepárate para que te explote la mente completamente. ¿Sabías que has estado usando navegadores para desplazarte por redes sociales y ver videos? Pues resulta que han estado escondiendo este increíble laboratorio secreto para desarrolladores todo este tiempo, ¡esperando a que lo descubras!
Bien, prepárate para que te explote la mente por completo. ¿Sabes cómo has estado usando los navegadores para ver redes sociales y videos? ¡Bueno, resulta que han estado ocultando este increíble laboratorio secreto para desarrolladores todo este tiempo, esperando que lo descubras!
Cada vez que haces clic derecho sobre una página web y seleccionas "Inspeccionar elemento," estás abriendo un mundo oculto de herramientas para desarrolladores que honestamente son más poderosas que algunos programas caros por los que solía pagar cientos de dólares. ¡Es como descubrir que tu cocina común y corriente ha estado ocultando un laboratorio de chef profesional detrás de un panel secreto!
La primera vez que alguien me mostró las DevTools del navegador, pasé como tres horas simplemente haciendo clic por todos lados y diciendo "¿¡ESPERA, ¿TAMBIÉN PUEDE HACER ESO?!". Literalmente puedes editar cualquier sitio web en tiempo real, ver exactamente qué tan rápido se carga todo, probar cómo se ve tu sitio en diferentes dispositivos e incluso depurar JavaScript como un profesional total. ¡Es absolutamente alucinante!
Cada vez que clickeas derecho en una página web y seleccionas "Inspeccionar elemento", estás abriendo un mundo oculto de herramientas para desarrolladores que honestamente son más poderosas que algunos softwares caros por los que solía pagar cientos de dólares. ¡Es como descubrir que tu cocina común y corriente ha estado ocultando un laboratorio profesional de chef detrás de un panel secreto!
La primera vez que alguien me mostró las herramientas de desarrollo del navegador, pasé como tres horas simplemente haciendo clic por todas partes y diciendo "¡ESPERA, ¿ESO TAMBIÉN PUEDE HACERLO?!" Literalmente puedes editar cualquier sitio web en tiempo real, ver exactamente qué tan rápido carga todo, probar cómo se ve tu sitio en diferentes dispositivos e incluso depurar JavaScript como un profesional total. ¡Es absolutamente impresionante!
**Aquí está la razón por la que los navegadores son tu arma secreta:**
Cuando creas un sitio web o una aplicación web, necesitas ver cómo se ve y se comporta en el mundo real. Los navegadores no solo muestran tu trabajo, sino que también proporcionan retroalimentación detallada sobre rendimiento, accesibilidad y posibles problemas.
#### Herramientas de Desarrollo del Navegador (DevTools)
#### Herramientas para desarrolladores del navegador (DevTools)
Los navegadores modernos incluyen suites completas de desarrollo:
| Categoría de Herramienta | Qué Hace | Caso de Uso Ejemplo |
|--------------------------|----------|---------------------|
| **Inspector de Elementos** | Ver y editar HTML/CSS en tiempo real | Ajustar el estilo para ver resultados inmediatos |
| Categoría de herramienta | Qué hace | Ejemplo de uso |
|--------------------------|----------|----------------|
| **Inspector de elementos** | Ver y editar HTML/CSS en tiempo real | Ajustar estilos para ver resultados inmediatos |
| **Consola** | Ver mensajes de error y probar JavaScript | Depurar problemas y experimentar con código |
| **Monitor de Red** | Rastrear cómo se cargan los recursos | Optimizar el rendimiento y tiempos de carga |
| **Verificador de Accesibilidad** | Probar diseño inclusivo | Asegurar que tu sitio funcione para todos los usuarios |
| **Simulador de Dispositivos** | Previsualizar en diferentes tamaños de pantalla | Probar diseño responsivo sin múltiples dispositivos |
| **Monitor de red** | Rastrear cómo se cargan los recursos | Optimizar el rendimiento y los tiempos de carga |
| **Verificador de accesibilidad** | Probar diseño inclusivo | Asegurar que tu sitio funcione para todos los usuarios |
| **Simulador de dispositivos** | Previsualizar en diferentes tamaños de pantalla | Probar diseño responsivo sin múltiples dispositivos |
#### Navegadores Recomendados para Desarrollo
#### Navegadores recomendados para desarrollo
- **[Chrome](https://developers.google.com/web/tools/chrome-devtools/)** - DevTools estándar de la industria con documentación extensa
- **[Firefox](https://developer.mozilla.org/docs/Tools)** - Excelentes herramientas para CSS Grid y accesibilidad
- **[Edge](https://docs.microsoft.com/microsoft-edge/devtools-guide-chromium/?WT.mc_id=academic-77807-sagibbon)** - Basado en Chromium con recursos para desarrolladores de Microsoft
- **[Edge](https://docs.microsoft.com/microsoft-edge/devtools-guide-chromium/?WT.mc_id=academic-77807-sagibbon)** - Construido sobre Chromium con recursos para desarrolladores de Microsoft
> ⚠️ **Consejo Importante para Pruebas**: ¡Siempre prueba tus sitios web en múltiples navegadores! Lo que funciona perfectamente en Chrome puede verse diferente en Safari o Firefox. Los desarrolladores profesionales prueban en todos los navegadores principales para asegurar experiencias consistentes para los usuarios.
> ⚠️ **Consejo importante para pruebas**: ¡Siempre prueba tus sitios web en múltiples navegadores! Lo que funciona perfectamente en Chrome puede verse diferente en Safari o Firefox. Los desarrolladores profesionales prueban en todos los navegadores principales para asegurar experiencias de usuario consistentes.
### Herramientas de Línea de Comandos: Tu Entrada a Súper Poderes de Desarrollador
### Herramientas de línea de comandos: Tu puerta a superpoderes de desarrollador
Bien, tengamos un momento completamente honesto sobre la línea de comandos, porque quiero que escuches esto de alguien que realmente lo entiende. La primera vez que la vi, solo esa pantalla negra aterradora con texto parpadeante, literalmente pensé: "¡No, absolutamente no! Esto parece algo de una película de hackers de los años 80, ¡y definitivamente no soy lo suficientemente inteligente para esto!" 😅
Muy bien, tengamos un momento completamente honesto aquí sobre la línea de comandos, porque quiero que lo escuches de alguien que realmente lo entiende. La primera vez que la vi esa pantalla negra y aterradora con texto parpadeante literalmente pensé, "No, absolutamente no. ¡Esto parece algo de una película de hackers de los años 80 y definitivamente no soy lo suficientemente inteligente para esto!" 😅
Pero aquí está lo que desearía que alguien me hubiera dicho en ese entonces, y lo que te estoy diciendo ahora: la línea de comandos no da miedo; en realidad es como tener una conversación directa con tu computadora. Piensa en ello como la diferencia entre pedir comida a través de una aplicación elegante con fotos y menús (que es agradable y fácil) versus entrar a tu restaurante local favorito donde el chef sabe exactamente qué te gusta y puede preparar algo perfecto solo porque dices "sorpréndeme con algo increíble".
Pero aquí está lo que desearía que alguien me hubiera dicho entonces, y lo que te digo ahora: la línea de comandos no da miedo, en realidad es como tener una conversación directa con tu computadora. Piensa en la diferencia entre pedir comida a través de una aplicación elegante con fotos y menús (lo cual es agradable y fácil) versus entrar a tu restaurante local favorito donde el chef sabe exactamente lo que te gusta y puede preparar algo perfecto solo con que digas "sorpréndeme con algo increíble."
La línea de comandos es donde los desarrolladores se sienten como magos absolutos. Escribes algunas palabras aparentemente mágicas (bueno, son comandos, pero se sienten mágicos), presionas enter y ¡BUM! — has creado estructuras enteras de proyectos, instalado herramientas poderosas de todo el mundo o desplegado tu app en Internet para que millones la vean. ¡Una vez que pruebas ese poder, honestamente es bastante adictivo!
La línea de comandos es donde los desarrolladores se sienten como magos absolutos. Tecleas unas pocas palabras que parecen mágicas (bueno, son solo comandos, pero se sienten mágicos), presionas enter y ¡BANG! — has creado estructuras de proyectos enteros, instalado herramientas poderosas de todo el mundo o desplegado tu aplicación en internet para que millones de personas la vean. Una vez que pruebas ese poder, honestamente es bastante adictivo.
**Por qué la línea de comandos se convertirá en tu herramienta favorita:**
Aunque las interfaces gráficas son geniales para muchas tareas, la línea de comandos destaca en automatización, precisión y velocidad. Muchas herramientas de desarrollo funcionan principalmente a través de interfaces de línea de comandos, y aprender a usarlas eficientemente puede mejorar tu productividad dramáticamente.
Aunque las interfaces gráficas son geniales para muchas tareas, la línea de comandos sobresale en automatización, precisión y velocidad. Muchas herramientas de desarrollo funcionan principalmente a través de interfaces de línea de comandos, y aprender a usarlas eficientemente puede mejorar drásticamente tu productividad.
```bash
# Paso 1: Crear y navegar al directorio del proyecto
@ -604,7 +604,7 @@ cd my-awesome-website
**Esto es lo que hace este código:**
- **Crear** un nuevo directorio llamado "my-awesome-website" para tu proyecto
- **Navegar** hacia el directorio recién creado para comenzar a trabajar
- **Navegar** dentro del directorio recién creado para empezar a trabajar
```bash
# Paso 2: Inicializar el proyecto con package.json
@ -615,11 +615,11 @@ npm install --save-dev vite prettier eslint
npm install --save-dev @eslint/js
```
**Paso a paso, esto es lo que sucede:**
- **Inicializar** un nuevo proyecto Node.js con configuraciones por defecto usando `npm init -y`
- **Instalar** Vite como una herramienta moderna de construcción para desarrollo rápido y compilaciones de producción
- **Agregar** Prettier para formateo automático de código y ESLint para verificación de calidad de código
- **Usar** la bandera `--save-dev` para marcar estas como dependencias solo para desarrollo
**Paso a paso, esto es lo que está pasando:**
- **Inicializar** un nuevo proyecto Node.js con configuraciones predeterminadas usando `npm init -y`
- **Instalar** Vite como herramienta moderna de construcción para desarrollos y compilaciones rápidas
- **Agregar** Prettier para formateo automático de código y ESLint para revisiones de calidad de código
- **Usar** la bandera `--save-dev` para marcar estas dependencias solo para desarrollo
```bash
# Paso 3: Crear la estructura del proyecto y los archivos
@ -632,103 +632,103 @@ npx vite
**En lo anterior, hemos:**
- **Organizado** nuestro proyecto creando carpetas separadas para código fuente y recursos
- **Generado** un archivo HTML básico con la estructura correcta del documento
- **Iniciado** el servidor de desarrollo Vite para recarga en vivo y reemplazo en caliente de módulos
- **Generado** un archivo HTML básico con estructura adecuada del documento
- **Iniciado** el servidor de desarrollo de Vite para recarga en vivo y reemplazo en caliente de módulos
#### Herramientas Esenciales de Línea de Comandos para Desarrollo Web
#### Herramientas esenciales de línea de comandos para desarrollo web
| Herramienta | Propósito | Por qué la Necesitas |
|-------------|-----------|----------------------|
| **[Git](https://git-scm.com/)** | Control de versiones | Rastrear cambios, colaborar con otros, respaldar tu trabajo |
| **[Node.js & npm](https://nodejs.org/)** | Entorno de ejecución JavaScript y gestor de paquetes | Ejecutar JavaScript fuera de navegadores, instalar herramientas modernas de desarrollo |
| **[Vite](https://vitejs.dev/)** | Herramienta de construcción y servidor de desarrollo | Desarrollo ultrarrápido con reemplazo en caliente de módulos |
| **[ESLint](https://eslint.org/)** | Calidad de código | Encontrar y corregir problemas automáticamente en tu JavaScript |
| **[Prettier](https://prettier.io/)** | Formateo de código | Mantener tu código consistentemente formateado y legible |
| Herramienta | Propósito | Por qué la necesitas |
|-------------|-----------|---------------------|
| **[Git](https://git-scm.com/)** | Control de versiones | Rastrear cambios, colaborar y respaldar tu trabajo |
| **[Node.js & npm](https://nodejs.org/)** | Entorno de ejecución JavaScript y gestión de paquetes | Ejecutar JavaScript fuera del navegador e instalar herramientas modernas |
| **[Vite](https://vitejs.dev/)** | Herramienta de compilación y servidor de desarrollo | Desarrollo súper rápido con reemplazo en caliente de módulos |
| **[ESLint](https://eslint.org/)** | Calidad de código | Encontrar y corregir automáticamente problemas en tu JavaScript |
| **[Prettier](https://prettier.io/)** | Formateo del código | Mantener tu código con formato consistente y legible |
#### Opciones Específicas por Plataforma
#### Opciones específicas por plataforma
**Windows:**
- **[Windows Terminal](https://docs.microsoft.com/windows/terminal/?WT.mc_id=academic-77807-sagibbon)** - Terminal moderno con muchas funciones
- **[PowerShell](https://docs.microsoft.com/powershell/?WT.mc_id=academic-77807-sagibbon)** 💻 - Entorno potente para scripting
- **[Command Prompt](https://docs.microsoft.com/windows-server/administration/windows-commands/?WT.mc_id=academic-77807-sagibbon)** 💻 - Línea de comandos tradicional de Windows
- **[Windows Terminal](https://docs.microsoft.com/windows/terminal/?WT.mc_id=academic-77807-sagibbon)** - Terminal moderno y con muchas funciones
- **[PowerShell](https://docs.microsoft.com/powershell/?WT.mc_id=academic-77807-sagibbon)** 💻 - Entorno potente de scripting
- **[Command Prompt](https://learn.microsoft.com/windows-server/administration/windows-commands/windows-commands)** 💻 - Línea de comandos tradicional de Windows
**macOS:**
- **[Terminal](https://support.apple.com/guide/terminal/)** 💻 - Aplicación de terminal integrada
- **[iTerm2](https://iterm2.com/)** - Terminal mejorado con funciones avanzadas
**Linux:**
- **[Bash](https://www.gnu.org/software/bash/)** 💻 - Shell estándar en Linux
- **[Bash](https://www.gnu.org/software/bash/)** 💻 - Shell estándar de Linux
- **[KDE Konsole](https://docs.kde.org/trunk5/en/konsole/konsole/index.html)** - Emulador de terminal avanzado
> 💻 = Preinstalado en el sistema operativo
> 🎯 **Ruta de Aprendizaje**: Comienza con comandos básicos como `cd` (cambiar directorio), `ls` o `dir` (listar archivos) y `mkdir` (crear carpeta). Practica con comandos modernos de flujo de trabajo como `npm install`, `git status` y `code .` (abre el directorio actual en VS Code). Conforme te sientas más cómodo, naturalmente aprenderás comandos más avanzados y técnicas de automatización.
> 🎯 **Camino de aprendizaje**: Comienza con comandos básicos como `cd` (cambiar directorio), `ls` o `dir` (listar archivos), y `mkdir` (crear carpeta). Practica con comandos modernos de flujo de trabajo como `npm install`, `git status`, y `code .` (abre el directorio actual en VS Code). A medida que te sientas más cómodo, naturalmente aprenderás comandos más avanzados y técnicas de automatización.
### Documentación: Tu Mentor de Aprendizaje Siempre Disponible
### Documentación: Tu mentor de aprendizaje siempre disponible
Ok, déjame compartir un pequeño secreto que te hará sentir mucho mejor sobre ser un principiante: incluso los desarrolladores más experimentados pasan gran parte de su tiempo leyendo documentación. ¡Y no es porque no sepan lo que hacen, sino que es una señal de sabiduría!
Bien, déjame compartirte un pequeño secreto que te hará sentir mucho mejor por ser principiante: incluso los desarrolladores más experimentados pasan gran parte de su tiempo leyendo documentación. Y no es porque no sepan lo que están haciendo; ¡es en realidad un signo de sabiduría!
Piensa en la documentación como tener acceso a los profesores más pacientes y expertos del mundo, disponibles las 24 horas del día, los 7 días de la semana. ¿Atascado en un problema a las 2 a.m.? La documentación está allí con un cálido abrazo virtual y exactamente la respuesta que necesitas. ¿Quieres aprender sobre alguna característica nueva genial de la que todos hablan? La documentación te respalda con ejemplos paso a paso. ¿Intentas entender por qué algo funciona de cierta manera? Exacto, la documentación está lista para explicártelo de una forma que finalmente lo haga clic en tu cabeza.
Piensa en la documentación como tener acceso a los maestros más pacientes y conocedores del mundo, disponibles 24/7. ¿Atascado con un problema a las 2 AM? La documentación está ahí con un cálido abrazo virtual y justo la respuesta que necesitas. ¿Quieres aprender sobre alguna función genial de la que todos hablan? La documentación te respalda con ejemplos paso a paso. ¿Intentas entender por qué algo funciona de una manera determinada? Lo adivinaste: la documentación está lista para explicártelo de una forma que finalmente tenga sentido.
Aquí hay algo que cambió por completo mi perspectiva: el mundo del desarrollo web se mueve increíblemente rápido, y nadie (y digo absolutamente nadie) tiene todo memorizado. He visto a desarrolladores seniors con más de 15 años de experiencia buscar sintaxis básica, y ¿sabes qué? Eso no es vergonzoso, ¡es inteligente! No se trata de tener una memoria perfecta; se trata de saber dónde encontrar respuestas confiables rápidamente y entender cómo aplicarlas.
Aquí hay algo que realmente cambió mi perspectiva: el mundo del desarrollo web se mueve increíblemente rápido y nadie (¡absolutamente nadie!) recuerda todo de memoria. He visto a desarrolladores sénior con más de 15 años de experiencia buscar sintaxis básica, ¿y sabes qué? Eso no es vergonzoso, ¡es inteligente! No se trata de tener memoria perfecta, sino de saber dónde encontrar respuestas confiables rápidamente y cómo aplicarlas.
**Aquí es donde sucede la verdadera magia:**
**Aquí es donde ocurre la verdadera magia:**
Los desarrolladores profesionales pasan una parte significativa de su tiempo leyendo documentación, no porque no sepan lo que hacen, sino porque el panorama del desarrollo web evoluciona tan rápido que mantenerse al día requiere aprendizaje continuo. La buena documentación te ayuda a entender no solo *cómo* usar algo, sino *por qué* y *cuándo* usarlo.
Los desarrolladores profesionales dedican una parte significativa de su tiempo a leer documentación, no porque no sepan lo que hacen, sino porque el desarrollo web evoluciona tan rápido que mantenerse actualizado requiere aprendizaje continuo. La buena documentación te ayuda a entender no solo *cómo* usar algo, sino *por qué* y *cuándo* usarlo.
#### Recursos Esenciales de Documentación
#### Recursos esenciales de documentación
**[Mozilla Developer Network (MDN)](https://developer.mozilla.org/docs/Web)**
- El estándar de oro para documentación de tecnologías web
- Guías completas para HTML, CSS y JavaScript
- Incluye información sobre compatibilidad entre navegadores
- Cuenta con ejemplos prácticos y demostraciones interactivas
- Incluye información de compatibilidad entre navegadores
- Presenta ejemplos prácticos y demos interactivas
**[Web.dev](https://web.dev)** (por Google)
- Mejores prácticas modernas para desarrollo web
- Mejores prácticas modernas de desarrollo web
- Guías de optimización de rendimiento
- Principios de accesibilidad y diseño inclusivo
- Estudios de caso de proyectos del mundo real
- Estudios de caso de proyectos reales
**[Microsoft Developer Documentation](https://docs.microsoft.com/microsoft-edge/#microsoft-edge-for-developers)**
- Recursos de desarrollo para el navegador Edge
**[Documentación para desarrolladores de Microsoft](https://docs.microsoft.com/microsoft-edge/#microsoft-edge-for-developers)**
- Recursos para desarrollo en el navegador Edge
- Guías para Progressive Web Apps
- Información para desarrollo multiplataforma
- Perspectivas de desarrollo multiplataforma
**[Frontend Masters Learning Paths](https://frontendmasters.com/learn/)**
**[Rutas de aprendizaje Frontend Masters](https://frontendmasters.com/learn/)**
- Currículos estructurados de aprendizaje
- Cursos en video de expertos de la industria
- Ejercicios prácticos de codificación
> 📚 **Estrategia de Estudio**: No intentes memorizar la documentación; en su lugar, aprende a navegarla eficientemente. Marca referencias que uses frecuentemente y practica usar las funciones de búsqueda para encontrar información específica rápidamente.
> 📚 **Estrategia de estudio**: No trates de memorizar la documentación, en cambio, aprende a navegarla eficientemente. Marca como favoritos las referencias que uses frecuentemente y practica usar las funciones de búsqueda para encontrar información específica rápido.
### 🔧 **Chequeo de Dominio de Herramientas: ¿Qué Resuena Contigo?**
### 🔧 **Chequeo de dominio de herramientas: ¿Qué te resuena?**
**Tómate un momento para considerar:**
- ¿Con qué herramienta estás más emocionado de probar primero? (¡No hay respuesta equivocada!)
- ¿Cuál herramienta te emociona más probar primero? (¡No hay respuesta incorrecta!)
- ¿La línea de comandos todavía te intimida o te da curiosidad?
- ¿Puedes imaginar usar las DevTools del navegador para echar un vistazo tras el telón de tus sitios web favoritos?
- ¿Puedes imaginar usar las DevTools del navegador para asomarte detrás del telón de tus sitios web favoritos?
```mermaid
pie title "Tiempo de Desarrollador Pasado con Herramientas"
"Editor de Código" : 40
"Pruebas en Navegador" : 25
"Línea de Comandos" : 15
"Lectura de Documentación" : 15
pie title "Tiempo que los desarrolladores pasan con las herramientas"
"Editor de código" : 40
"Pruebas en navegador" : 25
"Línea de comandos" : 15
"Leyendo documentación" : 15
"Depuración" : 5
```
> **Dato divertido**: La mayoría de los desarrolladores pasan aproximadamente el 40% de su tiempo en su editor de código, pero observa cuánto tiempo se va en pruebas, aprendizaje y resolución de problemas. Programar no es solo escribir código — es crear experiencias.
> **Dato divertido**: La mayoría de los desarrolladores pasan cerca del 40% de su tiempo en el editor de código, pero nota cuánto tiempo va a pruebas, aprendizaje y resolución de problemas. Programar no es solo escribir código, ¡es crear experiencias!
**Tema para reflexionar**: Aquí hay algo interesante para pensar ¿cómo crees que las herramientas para construir sitios web (desarrollo) podrían ser diferentes de las herramientas para diseñar cómo se ven (diseño)? Es como la diferencia entre ser un arquitecto que diseña una casa hermosa y el contratista que realmente la construye. ¡Ambos son cruciales, pero necesitan diferentes cajas de herramientas! Este tipo de pensamiento te ayudará a ver el panorama completo de cómo los sitios web cobran vida.
**Para reflexionar**: Aquí tienes algo interesante para pensar: ¿cómo crees que las herramientas para construir sitios web (desarrollo) pueden ser diferentes de las herramientas para diseñar cómo se ven (diseño)? Es como la diferencia entre ser un arquitecto que diseña una casa hermosa y el contratista que realmente la construye. ¡Ambos son cruciales, pero necesitan cajas de herramientas diferentes! Este tipo de pensamiento te ayudará a ver el panorama completo de cómo cobran vida los sitios web.
## Desafío del Agente GitHub Copilot 🚀
## Desafío GitHub Copilot Agent 🚀
Usa el modo Agente para completar el siguiente desafío:
**Descripción:** Explora las características de un editor de código moderno o IDE y demuestra cómo puede mejorar tu flujo de trabajo como desarrollador web.
**Prompt:** Elige un editor de código o IDE (como Visual Studio Code, WebStorm, o un IDE basado en la nube). Enumera tres características o extensiones que te ayuden a escribir, depurar o mantener código de forma más eficiente. Para cada una, proporciona una breve explicación de cómo beneficia tu flujo de trabajo.
**Instrucción:** Elige un editor de código o IDE (como Visual Studio Code, WebStorm o un IDE basado en la nube). Enumera tres características o extensiones que te ayuden a escribir, depurar o mantener código de manera más eficiente. Para cada una, proporciona una breve explicación de cómo beneficia tu flujo de trabajo.
---
@ -736,121 +736,121 @@ Usa el modo Agente para completar el siguiente desafío:
**Muy bien, detective, ¿listo para tu primer caso?**
Ahora que tienes esta base increíble, tengo una aventura que te ayudará a ver lo increíblemente diverso y fascinante que es realmente el mundo de la programación. Y escucha esto no es sobre escribir código todavía, ¡así que no hay presión! Piensa en ti mismo como un detective de lenguajes de programación en tu primer caso emocionante.
Ahora que tienes esta base increíble, tengo una aventura que te ayudará a ver cuán increíblemente diverso y fascinante es el mundo de la programación. Y escucha, esto no es aún para escribir código, ¡así que sin presiones! Piensa en ti mismo como un detective de lenguajes de programación en tu primer emocionante caso.
**Tu misión, si decides aceptarla:**
1. **Conviértete en explorador de lenguajes**: Elige tres lenguajes de programación de universos completamente distintos tal vez uno que construya sitios web, otro que cree apps móviles y otro que analice datos para científicos. Busca ejemplos de la misma tarea sencilla escrita en cada lenguaje. ¡Te prometo que te vas a sorprender de lo diferentes que pueden verse mientras hacen exactamente lo mismo!
1. **Conviértete en explorador de lenguajes**: Escoge tres lenguajes de programación de universos completamente diferentes — tal vez uno que construya sitios web, otro que cree apps móviles y otro que procese datos para científicos. Busca ejemplos de una misma tarea simple escrita en cada lenguaje. ¡Te prometo que te asombrarás de lo diferentes que pueden verse mientras hacen exactamente lo mismo!
2. **Descubre sus historias de origen**: ¿Qué hace especial a cada lenguaje? Aquí hay un dato genial: cada lenguaje de programación fue creado porque alguien dijo, "¿Sabes qué? Tiene que haber una mejor manera de resolver este problema específico." ¿Puedes descubrir cuáles fueron esos problemas? ¡Algunas de esas historias son genuinamente fascinantes!
2. **Descubre sus historias de origen**: ¿Qué hace especial a cada lenguaje? Aquí un dato genial: cada lenguaje de programación fue creado porque alguien pensó, "¿Sabes qué? Tiene que haber una mejor forma de resolver este problema específico." ¿Puedes descubrir cuáles fueron esos problemas? Algunas de estas historias son genuinamente fascinantes.
3. **Conoce las comunidades**: Observa qué tan acogedora y apasionada es la comunidad de cada lenguaje. Algunas tienen millones de desarrolladores compartiendo conocimiento y ayudándose mutuamente, otras son más pequeñas pero increíblemente unidas y solidarias. ¡Te encantará ver las diferentes personalidades que tienen estas comunidades!
3. **Conoce las comunidades**: Explora cuán acogedora y apasionada es la comunidad de cada lenguaje. Algunas tienen millones de desarrolladores compartiendo conocimientos y ayudándose mutuamente, otras son más pequeñas pero increíblemente unidas y solidarias. ¡Te encantará ver las diferentes personalidades de estas comunidades!
4. **Sigue tu instinto**: ¿Qué lenguaje te parece más accesible ahora mismo? No te estreses por tomar la elección "perfecta" — simplemente escucha a tus instintos. Honestamente, no hay respuesta incorrecta aquí, y siempre puedes explorar otros después.
4. **Sigue tu instinto**: ¿Cuál lenguaje te parece más accesible ahora mismo? No te estreses por elegir el "perfecto" — solo escucha tus corazonadas. Honestamente, no hay respuesta incorrecta y siempre puedes explorar otros después.
**Trabajo extra de detective**: Trata de descubrir qué sitios web o apps importantes están construidas con cada lenguaje. ¡Te garantizo que te sorprenderá saber qué impulsa Instagram, Netflix o ese juego móvil que no puedes dejar de jugar!
**Trabajo extra de detective**: Intenta descubrir qué sitios web o apps importantes están construidos con cada lenguaje. Te garantizo que te sorprenderás al saber qué impulsa Instagram, Netflix o ese juego móvil al que no puedes dejar de jugar.
> 💡 **Recuerda**: No estás tratando de volverte un experto en ninguno de estos lenguajes hoy. Solo estás conociendo el vecindario antes de decidir dónde quieres establecerte. Tómate tu tiempo, diviértete y deja que tu curiosidad te guíe.
> 💡 **Recuerda**: No estás tratando de volverte experto en ninguno de estos lenguajes hoy. Solo estás conociendo el vecindario antes de decidir dónde quieres establecerte. Tómate tu tiempo, diviértete y deja que tu curiosidad te guíe.
## ¡Celebremos lo que has descubierto!
¡Santo cielo, has absorbido tanta información increíble hoy! Estoy genuinamente emocionado de ver cuánto de este asombroso viaje se ha quedado contigo. Y recuerda esto no es un examen donde necesites hacerlo todo perfecto. Es más como una celebración de todas las cosas geniales que has aprendido sobre este fascinante mundo en el que estás a punto de sumergirte.
¡Santo cielo, has absorbido tanta información increíble hoy! Estoy genuinamente emocionado de ver cuánto de este increíble viaje se ha quedado contigo. Y recuerda — esto no es un examen donde necesitas hacerlo todo perfecto. Es más como una celebración de todas las cosas geniales que has aprendido sobre este fascinante mundo en el que estás a punto de sumergirte.
[Toma el quiz posterior a la lección](https://ff-quizzes.netlify.app/web/)
[Realiza el quiz post-lección](https://ff-quizzes.netlify.app/web/)
## Repaso & Autoestudio
## Revisión y autoestudio
**Tómate tu tiempo para explorar y divertirte con ello!**
Has recorrido mucho camino hoy, ¡y eso es algo de lo que estar orgulloso! Ahora viene la parte divertida: explorar los temas que despertaron tu curiosidad. Recuerda, esto no es tarea ¡es una aventura!
Has avanzado mucho hoy, ¡y eso es algo de lo que estar orgulloso! Ahora viene la parte divertida: explorar los temas que despertaron tu curiosidad. Recuerda, esto no es tarea ¡es una aventura!
**Profundiza en lo que te entusiasma:**
**Manos a la obra con los lenguajes de programación:**
- Visita los sitios oficiales de 2-3 lenguajes que llamaron tu atención. ¡Cada uno tiene su propia personalidad e historia!
- Prueba algunos entornos de programación en línea como [CodePen](https://codepen.io/), [JSFiddle](https://jsfiddle.net/), o [Replit](https://replit.com/). No temas experimentar ¡no puedes romper nada!
- Lee sobre cómo surgió tu lenguaje favorito. En serio, algunas de estas historias de origen son fascinantes y te ayudarán a entender por qué los lenguajes funcionan de la manera en que lo hacen.
**Ponte manos a la obra con los lenguajes de programación:**
- Visita los sitios web oficiales de 2-3 lenguajes que llamaron tu atención. ¡Cada uno tiene su propia personalidad e historia!
- Prueba algunos entornos de codificación en línea como [CodePen](https://codepen.io/), [JSFiddle](https://jsfiddle.net/), o [Replit](https://replit.com/). No tengas miedo de experimentar ¡no puedes romper nada!
- Lee sobre cómo surgió tu lenguaje favorito. En serio, algunas de estas historias de origen son fascinantes y te ayudarán a entender por qué los lenguajes funcionan como lo hacen.
**Familiarízate con tus nuevas herramientas:**
- Descarga Visual Studio Code si aún no lo has hecho ¡es gratis y te va a encantar!
- Dedica unos minutos a navegar por el mercado de Extensiones. ¡Es como una tienda de apps para tu editor de código!
- Abre las Herramientas de Desarrollo de tu navegador y simplemente haz clic por ahí. No te preocupes por entenderlo todo solo familiarízate con lo que hay.
- Descarga Visual Studio Code si aún no lo has hecho ¡es gratis y te encantará!
- Dedica unos minutos a explorar el mercado de Extensiones. ¡Es como una tienda de apps para tu editor de código!
- Abre las Herramientas de Desarrollo de tu navegador y simplemente haz clic por ahí. No te preocupes por entender todo solo familiarízate con lo que hay.
**Únete a la comunidad:**
- Sigue algunas comunidades de desarrolladores en [Dev.to](https://dev.to/), [Stack Overflow](https://stackoverflow.com/), o [GitHub](https://github.com/). ¡La comunidad de programación es increíblemente acogedora con los principiantes!
- Mira algunos videos de programación para principiantes en YouTube. Hay muchos creadores geniales que recuerdan cómo es empezar desde cero.
- Considera unirte a encuentros locales o comunidades en línea. Créeme, a los desarrolladores les encanta ayudar a los que están empezando.
- Sigue algunas comunidades de desarrolladores en [Dev.to](https://dev.to/), [Stack Overflow](https://stackoverflow.com/), o [GitHub](https://github.com/). ¡La comunidad de programación es increíblemente acogedora con los recién llegados!
- Mira algunos videos para principiantes en YouTube. Hay muchos creadores excelentes que recuerdan lo que es estar empezando.
- Considera unirte a encuentros locales o comunidades en línea. Confía en mí, ¡a los desarrolladores les encanta ayudar a los recién llegados!
> 🎯 **Escucha, esto es lo que quiero que recuerdes**: No se espera que te conviertas en un mago de la programación de la noche a la mañana. Ahora mismo, solo estás conociendo este increíble nuevo mundo del que vas a formar parte. Tómate tu tiempo, disfruta el camino y recuerda cada desarrollador que admiras alguna vez estuvo exactamente donde tú estás ahora, emocionado y tal vez un poco abrumado. Eso es totalmente normal y significa que lo estás haciendo bien.
> 🎯 **Escucha, esto es lo que quiero que recuerdes**: ¡No se espera que te conviertas en un mago de la programación de la noche a la mañana! Ahora mismo solo estás conociendo este increíble nuevo mundo del que vas a formar parte. Tómate tu tiempo, disfruta el viaje y recuerda todos los desarrolladores que admiras alguna vez estuvieron sentados exactamente donde tú estás ahora, sintiéndose emocionados y tal vez un poco abrumados. Eso es totalmente normal, y significa que lo estás haciendo bien.
## Tarea
## Assignment
[Reading the Docs](assignment.md)
> 💡 **Un pequeño empujón para tu tarea**: ¡Me encantaría que exploraras algunas herramientas que no hemos cubierto todavía! Olvídate de los editores, navegadores y herramientas de línea de comandos que ya mencionamos hay todo un universo increíble de herramientas de desarrollo esperando a ser descubierto. Busca aquellas que estén activamente mantenidas y tengan comunidades vibrantes y colaborativas (normalmente estas tienen los mejores tutoriales y las personas más amables cuando inevitablemente te atasques y necesites un mano amiga).
> 💡 **Un pequeño empujón para tu tarea**: ¡Me encantaría que explorases algunas herramientas que aún no hemos cubierto! Salta los editores, navegadores y herramientas de línea de comandos de los que ya hablamos hay todo un universo increíble de herramientas de desarrollo esperando a ser descubiertas. Busca aquellas que estén activamente mantenidas y tengan comunidades vibrantes y solidarias (estas suelen tener los mejores tutoriales y la gente más amable cuando inevitablemente te atasques y necesites una mano amiga).
---
## 🚀 Tu cronograma de viaje en la programación
## 🚀 Tu línea de tiempo para el viaje de programación
### ⚡ **Qué puedes hacer en los próximos 5 minutos**
- [ ] Marcar en favoritos 2-3 sitios web de lenguajes de programación que llamaron tu atención
### ⚡ **Lo que puedes hacer en los próximos 5 minutos**
- [ ] Anotar en favoritos 2-3 sitios web de lenguajes de programación que llamaron tu atención
- [ ] Descargar Visual Studio Code si aún no lo has hecho
- [ ] Abrir las DevTools del navegador (F12) y hacer clic alrededor de cualquier sitio web
- [ ] Unirte a una comunidad de programación (Dev.to, Reddit r/webdev, o Stack Overflow)
- [ ] Abrir las DevTools del navegador (F12) y hacer clic por cualquier sitio web
- [ ] Unirte a una comunidad de programadores (Dev.to, Reddit r/webdev o Stack Overflow)
### ⏰ **Qué puedes lograr esta hora**
### ⏰ **Lo que puedes lograr en esta hora**
- [ ] Completar el cuestionario posterior a la lección y reflexionar sobre tus respuestas
- [ ] Configurar VS Code con la extensión GitHub Copilot
- [ ] Probar un ejemplo de "Hello World" en 2 lenguajes de programación diferentes en línea
- [ ] Ver un video "Un día en la vida de un desarrollador" en YouTube
- [ ] Comenzar tu investigación detective sobre lenguajes de programación (del reto)
- [ ] Ver un video de "Un día en la vida de un desarrollador" en YouTube
- [ ] Comenzar tu investigación de detective de lenguajes de programación (del reto)
### 📅 **Tu aventura de una semana**
- [ ] Completar la tarea y explorar 3 nuevas herramientas de desarrollo
- [ ] Seguir a 5 desarrolladores o cuentas de programación en redes sociales
- [ ] Intentar construir algo pequeño en CodePen o Replit (¡incluso solo un "Hola, [Tu Nombre]!")
- [ ] Leer un post en un blog de desarrolladores acerca del recorrido de alguien más en programación
- [ ] Unirte a un encuentro virtual o ver una charla sobre programación
- [ ] Comenzar a aprender tu lenguaje elegido con tutoriales en línea
- [ ] Intentar construir algo pequeño en CodePen o Replit (incluso solo "¡Hola, [Tu Nombre]!")
- [ ] Leer una entrada de blog de un desarrollador sobre su experiencia programando
- [ ] Unirte a un meetup virtual o ver una charla sobre programación
- [ ] Comenzar a aprender el lenguaje que elegiste con tutoriales en línea
### 🗓️ **Tu transformación de un mes**
- [ ] Construir tu primer proyecto pequeño (¡incluso una página web simple cuenta!)
- [ ] Contribuir a un proyecto de código abierto (empieza con correcciones de documentación)
- [ ] Guiar a alguien que apenas está empezando su viaje en la programación
- [ ] Contribuir a un proyecto de código abierto (comienza con correcciones en la documentación)
- [ ] Ser mentor de alguien que esté empezando su viaje en la programación
- [ ] Crear tu sitio web portafolio de desarrollador
- [ ] Conectarte con comunidades locales de desarrolladores o grupos de estudio
- [ ] Comenzar a planear tu siguiente meta de aprendizaje
- [ ] Comenzar a planificar tu próximo hito de aprendizaje
### 🎯 **Reflexión final**
### 🎯 **Chequeo final de reflexión**
**Antes de seguir, tómate un momento para celebrar:**
- ¿Qué fue lo que más te entusiasmó hoy sobre la programación?
**Antes de avanzar, tómate un momento para celebrar:**
- ¿Qué es algo de la programación que te emocionó hoy?
- ¿Qué herramienta o concepto quieres explorar primero?
- ¿Cómo te sientes al comenzar este viaje en la programación?
- ¿Cómo te sientes acerca de empezar este viaje en programación?
- ¿Qué pregunta te gustaría hacerle a un desarrollador ahora mismo?
```mermaid
journey
title Tu Viaje de Construcción de Confianza
title Tu viaje para construir confianza
section Hoy
Curious: 3: You
Overwhelmed: 4: You
Excited: 5: You
section Esta Semana
section Esta semana
Exploring: 4: You
Learning: 5: You
Connecting: 4: You
section Próximo Mes
section Próximo mes
Building: 5: You
Confident: 5: You
Helping Others: 5: You
```
> 🌟 **Recuerda**: Todo experto fue alguna vez un principiante. Todo desarrollador senior se sintió alguna vez como tú te sientes ahora emocionado, quizá un poco abrumado, y definitivamente curioso sobre lo que es posible. Estás en una compañía increíble y este viaje va a ser increíble. ¡Bienvenido al maravilloso mundo de la programación! 🎉
> 🌟 **Recuerda**: Todo experto fue una vez un principiante. Todo desarrollador senior alguna vez se sintió exactamente como tú ahora emocionado, quizás un poco abrumado, y definitivamente curioso sobre lo que es posible. Estás en una compañía increíble, y este viaje va a ser increíble. ¡Bienvenido al maravilloso mundo de la programación! 🎉
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Descargo de responsabilidad**:
Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos responsabilizamos por malentendidos o interpretaciones erróneas derivadas del uso de esta traducción.
Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que resulten del uso de esta traducción.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -2,15 +2,15 @@
## Descripción del Proyecto
Este es un repositorio de currículo educativo para enseñar los fundamentos del desarrollo web a principiantes. El currículo es un curso integral de 12 semanas desarrollado por Microsoft Cloud Advocates, que incluye 24 lecciones prácticas que abarcan JavaScript, CSS y HTML.
Este es un repositorio curricular educativo para enseñar los fundamentos del desarrollo web a principiantes. El plan de estudios es un curso completo de 12 semanas desarrollado por Microsoft Cloud Advocates, que incluye 24 lecciones prácticas sobre JavaScript, CSS y HTML.
### Componentes Clave
- **Contenido Educativo**: 24 lecciones estructuradas organizadas en módulos basados en proyectos
- **Proyectos Prácticos**: Terrarium, Juego de Escritura, Extensión de Navegador, Juego Espacial, App Bancaria, Editor de Código y Asistente de Chat AI
- **Cuestionarios Interactivos**: 48 cuestionarios con 3 preguntas cada uno (evaluaciones pre/post-lección)
- **Soporte Multilenguaje**: Traducciones automatizadas para más de 50 idiomas mediante GitHub Actions
- **Tecnologías**: HTML, CSS, JavaScript, Vue.js 3, Vite, Node.js, Express, Python (para proyectos AI)
- **Proyectos Prácticos**: Terrario, Juego de mecanografía, Extensión de navegador, Juego espacial, Aplicación bancaria, Editor de código y Asistente de chat con IA
- **Cuestionarios Interactivos**: 48 cuestionarios con 3 preguntas cada uno (evaluaciones pre/post lección)
- **Soporte Multilingüe**: Traducciones automatizadas en más de 50 idiomas mediante GitHub Actions
- **Tecnologías**: HTML, CSS, JavaScript, Vue.js 3, Vite, Node.js, Express, Python (para proyectos de IA)
### Arquitectura
@ -18,7 +18,7 @@ Este es un repositorio de currículo educativo para enseñar los fundamentos del
- Cada carpeta de lección contiene README, ejemplos de código y soluciones
- Proyectos independientes en directorios separados (quiz-app, varios proyectos de lecciones)
- Sistema de traducción usando GitHub Actions (co-op-translator)
- Documentación servida vía Docsify y disponible como PDF
- Documentación servida mediante Docsify y disponible en PDF
## Comandos de Configuración
@ -31,7 +31,7 @@ git clone https://github.com/microsoft/Web-Dev-For-Beginners.git
cd Web-Dev-For-Beginners
```
### Configuración de Quiz App (Vue 3 + Vite)
### Configuración de la Aplicación de Cuestionarios (Vue 3 + Vite)
```bash
cd quiz-app
@ -51,7 +51,7 @@ npm run lint # Ejecutar ESLint
npm run format # Formatear con Prettier
```
### Proyectos de Extensiones de Navegador
### Proyectos de Extensión de Navegador
```bash
cd 5-browser-extension/solution
@ -59,7 +59,7 @@ npm install
# Siga las instrucciones específicas del navegador para cargar extensiones
```
### Proyectos de Juego Espacial
### Proyectos del Juego Espacial
```bash
cd 6-space-game/solution
@ -78,74 +78,74 @@ python api.py
## Flujo de Trabajo de Desarrollo
### Para Contribuidores de Contenido
### Para Contribuyentes de Contenido
1. **Haz un fork del repositorio** en tu cuenta de GitHub
1. **Haz fork del repositorio** a tu cuenta de GitHub
2. **Clona tu fork** localmente
3. **Crea una nueva rama** para tus cambios
4. Realiza cambios en contenido de lecciones o ejemplos de código
5. Prueba cualquier cambio de código en directorios de proyectos relevantes
6. Envía pull requests siguiendo las directrices de contribución
3. **Crea una rama nueva** para tus cambios
4. Realiza cambios en el contenido de las lecciones o ejemplos de código
5. Prueba los cambios de código en los directorios de proyectos correspondientes
6. Envía pull requests siguiendo las pautas de contribución
### Para Estudiantes
1. Haz fork o clona el repositorio
2. Navega por los directorios de lecciones secuencialmente
2. Navega por los directorios de las lecciones en orden secuencial
3. Lee los archivos README de cada lección
4. Completa los cuestionarios pre-lección en https://ff-quizzes.netlify.app/web/
5. Trabaja con los ejemplos de código en las carpetas de lecciones
6. Completa asignaciones y desafíos
7. Realiza los cuestionarios post-lección
4. Completa los cuestionarios previos en https://ff-quizzes.netlify.app/web/
5. Trabaja con los ejemplos de código en las carpetas de las lecciones
6. Completa las tareas y desafíos
7. Realiza los cuestionarios posteriores a las lecciones
### Desarrollo en Vivo
- **Documentación**: Ejecuta `docsify serve` en la raíz (puerto 3000)
- **Quiz App**: Ejecuta `npm run dev` en el directorio quiz-app
- **Aplicación de Cuestionarios**: Ejecuta `npm run dev` en el directorio quiz-app
- **Proyectos**: Usa la extensión Live Server de VS Code para proyectos HTML
- **Proyectos API**: Ejecuta `npm start` en los directorios API respectivos
- **Proyectos API**: Ejecuta `npm start` en los directorios API correspondientes
## Instrucciones de Pruebas
## Instrucciones para Pruebas
### Pruebas del Quiz App
### Pruebas de la Aplicación de Cuestionarios
```bash
cd quiz-app
npm run lint # Verificar problemas de estilo de código
npm run build # Verificar que la compilación tenga éxito
npm run build # Verificar que la compilación sea exitosa
```
### Pruebas del API Bancaria
### Pruebas API Bancaria
```bash
cd 7-bank-project/api
npm run lint # Verificar problemas de estilo de código
node server.js # Verificar que el servidor inicie sin errores
npm run lint # Comprobar problemas de estilo de código
node server.js # Verificar que el servidor arranque sin errores
```
### Enfoque General de Pruebas
### Enfoque General para Pruebas
- Este es un repositorio educativo sin pruebas automatizadas completas
- Este es un repositorio educativo sin pruebas automatizadas exhaustivas
- Las pruebas manuales se enfocan en:
- Ejecución de ejemplos de código sin errores
- Que los enlaces en la documentación funcionen correctamente
- Que las compilaciones de proyectos se completen con éxito
- Que los ejemplos sigan buenas prácticas
- Los ejemplos de código funcionan sin errores
- Los enlaces en la documentación funcionan correctamente
- Las compilaciones de proyectos terminan sin errores
- Los ejemplos siguen las mejores prácticas
### Verificaciones Pre-envío
### Revisiones Previas a la Envío
- Ejecutar `npm run lint` en directorios con package.json
- Ejecutar `npm run lint` en los directorios con package.json
- Verificar que los enlaces markdown sean válidos
- Probar los ejemplos de código en navegador o Node.js
- Comprobar que las traducciones mantienen la estructura adecuada
- Probar ejemplos de código en navegador o Node.js
- Comprobar que las traducciones mantengan la estructura adecuada
## Guías de Estilo de Código
## Pautas de Estilo de Código
### JavaScript
- Utilizar sintaxis moderna ES6+
- Usar sintaxis moderna ES6+
- Seguir configuraciones estándar de ESLint proporcionadas en los proyectos
- Usar nombres significativos para variables y funciones para mayor claridad educativa
- Añadir comentarios explicativos sobre conceptos para los estudiantes
- Usar nombres significativos en variables y funciones para claridad educativa
- Añadir comentarios explicativos para los conceptos
- Formatear con Prettier donde esté configurado
### HTML/CSS
@ -153,34 +153,34 @@ node server.js # Verificar que el servidor inicie sin errores
- Elementos semánticos HTML5
- Principios de diseño responsivo
- Convenciones claras para nombres de clases
- Comentarios explicando técnicas CSS para aprendizaje
- Comentarios que expliquen técnicas CSS para estudiantes
### Python
- Guía de estilo PEP 8
- Guías de estilo PEP 8
- Ejemplos de código claros y educativos
- Uso de hints de tipos donde sea útil para el aprendizaje
- Anotaciones de tipos cuando sean útiles para el aprendizaje
### Documentación Markdown
### Documentación en Markdown
- Jerarquía clara de encabezados
- Jerarquía clara en encabezados
- Bloques de código con especificación de lenguaje
- Enlaces a recursos adicionales
- Capturas de pantalla e imágenes en directorios `images/`
- Texto alternativo para imágenes por accesibilidad
- Capturas de pantalla e imágenes en `images/` directorios
- Texto alternativo en imágenes para accesibilidad
### Organización de Archivos
- Lecciones numeradas secuencialmente (1-getting-started-lessons, 2-js-basics, etc.)
- Cada proyecto tiene directorios `solution/` y normalmente `start/` o `your-work/`
- Imágenes almacenadas en carpetas `images/` específicas de las lecciones
- Cada proyecto tiene carpetas `solution/` y a menudo `start/` o `your-work/`
- Imágenes almacenadas en carpetas `images/` específicas de la lección
- Traducciones en estructura `translations/{language-code}/`
## Construcción y Despliegue
### Despliegue de Quiz App (Azure Static Web Apps)
### Despliegue de la Aplicación de Cuestionarios (Azure Static Web Apps)
La quiz-app está configurada para despliegue en Azure Static Web Apps:
La aplicación quiz-app está configurada para despliegue en Azure Static Web Apps:
```bash
cd quiz-app
@ -193,7 +193,7 @@ Configuración de Azure Static Web Apps:
- **Ubicación de salida**: `dist`
- **Flujo de trabajo**: `.github/workflows/azure-static-web-apps-ashy-river-0debb7803.yml`
### Generación de PDF de Documentación
### Generación de PDF de la Documentación
```bash
npm install # Instalar docsify-to-pdf
@ -207,76 +207,76 @@ npm install -g docsify-cli # Instalar Docsify globalmente
docsify serve # Servir en localhost:3000
```
### Construcciones Específicas por Proyecto
### Construcciones Específicas de Proyectos
Cada directorio de proyecto puede tener su propio proceso de construcción:
- Proyectos Vue: `npm run build` crea paquetes para producción
- Proyectos estáticos: Sin paso de construcción, servir archivos directamente
- Proyectos estáticos: No tienen paso de construcción, se sirven archivos directamente
## Guías para Pull Requests
## Pautas para Pull Requests
### Formato de Título
Usar títulos claros y descriptivos indicando el área de cambio:
Usar títulos claros y descriptivos que indiquen el área de cambio:
- `[Quiz-app] Añadir nuevo cuestionario para la lección X`
- `[Lesson-3] Corregir error tipográfico en proyecto terrarium`
- `[Lesson-3] Corregir error tipográfico en proyecto terrario`
- `[Translation] Añadir traducción al español para la lección 5`
- `[Docs] Actualizar instrucciones de configuración`
### Verificaciones Requeridas
### Requisitos para Revisiones
Antes de enviar un PR:
1. **Calidad del código**:
- Ejecutar `npm run lint` en los directorios de proyecto afectados
- Corregir todos los errores y advertencias de lint
1. **Calidad del Código**:
- Ejecutar `npm run lint` en los directorios afectados de proyectos
- Corregir todos los errores y advertencias de linting
2. **Verificación de compilación**:
2. **Verificación de Construcción**:
- Ejecutar `npm run build` si aplica
- Asegurar que no haya errores de compilación
- Asegurar que no haya errores de construcción
3. **Validación de enlaces**:
3. **Validación de Enlaces**:
- Probar todos los enlaces markdown
- Verificar que las referencias a imágenes funcionen
- Verificar que las referencias de imágenes funcionen
4. **Revisión de contenido**:
4. **Revisión de Contenido**:
- Revisar ortografía y gramática
- Confirmar que los ejemplos de código sean correctos y educativos
- Asegurar que los ejemplos de código sean correctos y educativos
- Verificar que las traducciones mantengan el significado original
### Requisitos de Contribución
### Requisitos para Contribuciones
- Aceptar el CLA de Microsoft (verificación automática en primer PR)
- Aceptar el CLA de Microsoft (verificación automática en el primer PR)
- Seguir el [Código de Conducta de Código Abierto de Microsoft](https://opensource.microsoft.com/codeofconduct/)
- Consultar [CONTRIBUTING.md](./CONTRIBUTING.md) para directrices detalladas
- Referenciar números de issue en la descripción del PR si aplica
- Consultar [CONTRIBUTING.md](./CONTRIBUTING.md) para pautas detalladas
- Referenciar números de issues en la descripción del PR si aplica
### Proceso de Revisión
- Los PRs son revisados por mantenedores y comunidad
- Los PR son revisados por mantenedores y comunidad
- Se prioriza la claridad educativa
- Los ejemplos de código deben seguir las mejores prácticas actuales
- Las traducciones se revisan para precisión y adecuación cultural
- Los ejemplos de código deben seguir buenas prácticas actuales
- Las traducciones se revisan por precisión y adecuación cultural
## Sistema de Traducción
### Traducción Automática
### Traducción Automatizada
- Utiliza GitHub Actions con flujo de trabajo co-op-translator
- Usa GitHub Actions con el flujo de trabajo co-op-translator
- Traduce automáticamente a más de 50 idiomas
- Archivos fuente en directorios principales
- Archivos traducidos en directorios `translations/{language-code}/`
- Archivos traducidos en `translations/{language-code}/`
### Agregar Mejoras Manuales de Traducción
### Añadiendo Mejoras en Traducción Manual
1. Localizar archivo en `translations/{language-code}/`
2. Hacer mejoras preservando la estructura
3. Asegurar que los ejemplos de código sigan funcionando
4. Probar cualquier contenido de quiz localizado
1. Ubica el archivo en `translations/{language-code}/`
2. Realiza mejoras preservando la estructura
3. Asegúrate que los ejemplos de código funcionen correctamente
4. Prueba contenido localizado de cuestionarios si aplica
### Metadatos de Traducción
Los archivos traducidos incluyen cabecera de metadatos:
Los archivos traducidos incluyen encabezado de metadatos:
```markdown
<!--
CO_OP_TRANSLATOR_METADATA:
@ -293,64 +293,64 @@ CO_OP_TRANSLATOR_METADATA:
### Problemas Comunes
**La aplicación de quiz no inicia**:
- Verificar versión de Node.js (recomendado v14+)
- Eliminar `node_modules` y `package-lock.json`, luego ejecutar `npm install`
- Comprobar conflictos de puerto (por defecto: Vite usa puerto 5173)
**La aplicación de cuestionarios no inicia**:
- Verificar la versión de Node.js (recomendado v14+)
- Borrar `node_modules` y `package-lock.json`, ejecutar `npm install` nuevamente
- Comprobar conflictos en el puerto (por defecto: Vite usa puerto 5173)
**El servidor API no inicia**:
- Verificar que la versión de Node.js cumple el mínimo (node >=10)
- Verificar que la versión de Node.js sea al menos (node >=10)
- Revisar si el puerto ya está en uso
- Asegurar que todas las dependencias están instaladas con `npm install`
- Asegurarse de que todas las dependencias estén instaladas con `npm install`
**La extensión del navegador no carga**:
- Verificar que manifest.json está correctamente formado
- Revisar la consola del navegador para errores
- Seguir las instrucciones específicas para instalación de extensiones en el navegador
**La extensión de navegador no carga**:
- Verificar que manifest.json esté correctamente formateado
- Revisar consola del navegador por errores
- Seguir instrucciones específicas para instalación de extensiones sen navegador
**Problemas con el proyecto de chat en Python**:
- Asegurar que el paquete OpenAI está instalado: `pip install openai`
- Verificar que la variable de entorno GITHUB_TOKEN está configurada
**Problemas con el proyecto chat en Python**:
- Asegurar que el paquete OpenAI esté instalado: `pip install openai`
- Verificar que la variable de entorno GITHUB_TOKEN esté configurada
- Comprobar permisos de acceso a GitHub Models
**Docsify no sirve la documentación**:
- Instalar docsify-cli globalmente: `npm install -g docsify-cli`
- Ejecutar desde el directorio raíz del repositorio
- Comprobar que `docs/_sidebar.md` existe
- Comprobar que `docs/_sidebar.md` exista
### Consejos para el Entorno de Desarrollo
- Usar VS Code con extensión Live Server para proyectos HTML
- Instalar extensiones ESLint y Prettier para formato consistente
- Usar DevTools del navegador para depurar JavaScript
- Para proyectos Vue, instalar extensión de navegador Vue DevTools
- Usar herramientas de desarrollador del navegador para depurar JavaScript
- Para proyectos Vue, instalar extensión Vue DevTools para navegador
### Consideraciones de Rendimiento
- Gran número de archivos traducidos (más de 50 idiomas) implica clones completos grandes
- Gran número de archivos traducidos (50+ idiomas) hace que los clones completos sean pesados
- Usar clonación superficial si solo se trabaja con contenido: `git clone --depth 1`
- Excluir traducciones de búsquedas cuando se trabaje en contenido en inglés
- Los procesos de construcción pueden ser lentos en la primera ejecución (npm install, compilación Vite)
- Excluir traducciones de búsquedas cuando se trabaja en contenido en inglés
- Procesos de construcción pueden ser lentos en ejecución inicial (npm install, construcción Vite)
## Consideraciones de Seguridad
### Variables de Entorno
- Las claves API nunca deben ser comprometidas en el repositorio
- Usar archivos `.env` (ya en `.gitignore`)
- Documentar variables de entorno requeridas en los READMEs de proyectos
- Las claves API nunca deben incluirse en el repositorio
- Usar archivos `.env` (ya incluidos en `.gitignore`)
- Documentar las variables de entorno requeridas en los README de los proyectos
### Proyectos en Python
- Usar entornos virtuales: `python -m venv venv`
- Mantener las dependencias actualizadas
- Mantener dependencias actualizadas
- Los tokens de GitHub deben tener permisos mínimos necesarios
### Acceso a GitHub Models
- Se requieren Tokens de Acceso Personal (PAT) para GitHub Models
- Los tokens deben almacenarse como variables de entorno
- Nunca comprometer tokens o credenciales
- Los tokens se deben guardar como variables de entorno
- Nunca se deben subir tokens ni credenciales al repositorio
## Notas Adicionales
@ -358,51 +358,51 @@ CO_OP_TRANSLATOR_METADATA:
- Principiantes completos en desarrollo web
- Estudiantes y autoaprendices
- Profesores que usan el currículo en aulas
- Profesores usando el plan de estudios en aulas
- Contenido diseñado para accesibilidad y construcción gradual de habilidades
### Filosofía Educativa
- Enfoque de aprendizaje basado en proyectos
- Controles frecuentes de conocimiento (cuestionarios)
- Enfoque basado en aprendizaje por proyectos
- Evaluaciones frecuentes de conocimiento (cuestionarios)
- Ejercicios prácticos de codificación
- Ejemplos de aplicación en el mundo real
- Enfoque en fundamentos antes que frameworks
- Ejemplos aplicados del mundo real
- Enfoque en fundamentos antes que en frameworks
### Mantenimiento del Repositorio
- Comunidad activa de aprendices y colaboradores
- Actualizaciones regulares de dependencias y contenido
- Issues y discusiones monitoreadas por mantenedores
- Actualizaciones de traducción automatizadas vía GitHub Actions
- Actualizaciones de traducción automatizadas con GitHub Actions
### Recursos Relacionados
- [Módulos Microsoft Learn](https://docs.microsoft.com/learn/)
- [Recursos Student Hub](https://docs.microsoft.com/learn/student-hub/)
- [Módulos de Microsoft Learn](https://docs.microsoft.com/learn/)
- [Recursos de Student Hub](https://docs.microsoft.com/learn/student-hub/)
- [GitHub Copilot](https://marketplace.visualstudio.com/items?itemName=GitHub.copilot) recomendado para estudiantes
- Cursos adicionales: IA Generativa, Ciencia de Datos, ML, currículos IoT disponibles
- Cursos adicionales: IA generativa, Ciencia de Datos, ML, IoT disponibles
### Trabajar con Proyectos Específicos
### Trabajando con Proyectos Específicos
Para instrucciones detalladas sobre proyectos individuales, consultar los archivos README en:
- `quiz-app/README.md` - Aplicación de cuestionarios con Vue 3
Para instrucciones detalladas sobre proyectos individuales, consulte los archivos README en:
- `quiz-app/README.md` - Aplicación de cuestionarios en Vue 3
- `7-bank-project/README.md` - Aplicación bancaria con autenticación
- `5-browser-extension/README.md` - Desarrollo de extensión de navegador
- `6-space-game/README.md` - Desarrollo de juego con Canvas
- `9-chat-project/README.md` - Proyecto asistente de chat AI
- `9-chat-project/README.md` - Proyecto asistente de chat con IA
### Estructura Monorepo
Aunque no es un monorepo tradicional, este repositorio contiene múltiples proyectos independientes:
- Cada lección es autónoma
- Los proyectos no comparten dependencias
- Se puede trabajar en proyectos individuales sin afectar a otros
- Clonar el repo completo para la experiencia completa del currículo
- Se puede trabajar en proyectos individuales sin afectar otros
- Clonar el repositorio completo para la experiencia completa del plan de estudios
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Aviso Legal**:
Este documento ha sido traducido utilizando el servicio de traducción automática [Co-op Translator](https://github.com/Azure/co-op-translator). Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas derivados del uso de esta traducción.
**Aviso legal**:
Este documento ha sido traducido utilizando el servicio de traducción AI [Co-op Translator](https://github.com/Azure/co-op-translator). Aunque nos esforzamos por la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o inexactitudes. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de ningún malentendido o mala interpretación derivada del uso de esta traducción.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -1,7 +1,7 @@
{
"1-getting-started-lessons/1-intro-to-programming-languages/README.md": {
"original_hash": "bec5e35642176d9e483552bfc82996d8",
"translation_date": "2026-03-06T11:43:31+00:00",
"original_hash": "d5eeb6e975b5864d8da52d4a41941f8d",
"translation_date": "2026-03-27T17:59:03+00:00",
"source_file": "1-getting-started-lessons/1-intro-to-programming-languages/README.md",
"language_code": "fr"
},
@ -493,7 +493,7 @@
},
"AGENTS.md": {
"original_hash": "a362efd06d64d4134a0cfe8515a86d34",
"translation_date": "2026-03-06T11:55:33+00:00",
"translation_date": "2026-03-27T18:11:27+00:00",
"source_file": "AGENTS.md",
"language_code": "fr"
},

@ -1,28 +1,28 @@
# AGENTS.md
## Aperçu du projet
## Vue d'ensemble du projet
Il s'agit d'un référentiel de programme éducatif pour enseigner les fondamentaux du développement web aux débutants. Le programme est un cours complet de 12 semaines développé par Microsoft Cloud Advocates, comprenant 24 leçons pratiques couvrant JavaScript, CSS et HTML.
### Composants clés
- **Contenu éducatif** : 24 leçons structurées organisées en modules basés sur des projets
- **Projets pratiques** : Terrarium, Jeu de dactylographie, Extension de navigateur, Jeu spatial, Application bancaire, Éditeur de code et Assistant de chat IA
- **Quiz interactifs** : 48 quiz avec 3 questions chacun (évaluations avant/après leçon)
- **Projets pratiques** : Terrarium, Jeu de frappe, Extension de navigateur, Jeu spatial, Application bancaire, Éditeur de code et Assistant de chat IA
- **Quiz interactifs** : 48 quiz avec 3 questions chacun (évaluations pré/post-lesson)
- **Support multilingue** : Traductions automatisées pour plus de 50 langues via GitHub Actions
- **Technologies** : HTML, CSS, JavaScript, Vue.js 3, Vite, Node.js, Express, Python (pour les projets IA)
### Architecture
- Référentiel éducatif structuré par leçon
- Chaque dossier de leçon contient README, exemples de code et solutions
- Projets autonomes dans des répertoires séparés (quiz-app, divers projets de leçons)
- Référentiel éducatif avec structure basée sur les leçons
- Chaque dossier de leçon contient un README, des exemples de code, et des solutions
- Projets autonomes dans des répertoires séparés (quiz-app, divers projets de leçon)
- Système de traduction utilisant GitHub Actions (co-op-translator)
- Documentation servie via Docsify et disponible en PDF
## Commandes d'installation
Ce référentiel est principalement destiné à la consommation de contenu éducatif. Pour travailler sur des projets spécifiques :
Ce référentiel est principalement destiné à la consommation de contenu éducatif. Pour travailler avec des projets spécifiques :
### Installation du référentiel principal
@ -37,7 +37,7 @@ cd Web-Dev-For-Beginners
cd quiz-app
npm install
npm run dev # Démarrer le serveur de développement
npm run build # Compiler pour la production
npm run build # Construire pour la production
npm run lint # Exécuter ESLint
```
@ -56,7 +56,7 @@ npm run format # Formater avec Prettier
```bash
cd 5-browser-extension/solution
npm install
# Suivez les instructions spécifiques au navigateur pour le chargement de l'extension
# Suivez les instructions spécifiques au navigateur pour le chargement des extensions
```
### Projets de jeu spatial
@ -67,7 +67,7 @@ npm install
# Ouvrez index.html dans le navigateur ou utilisez Live Server
```
### Projet de chat (Backend Python)
### Projet de chat (backend Python)
```bash
cd 9-chat-project/solution/backend/python
@ -83,38 +83,38 @@ python api.py
1. **Forkez le référentiel** sur votre compte GitHub
2. **Clonez votre fork** localement
3. **Créez une nouvelle branche** pour vos modifications
4. Modifiez le contenu des leçons ou les exemples de code
5. Testez les modifications de code dans les répertoires de projets concernés
4. Effectuez des changements dans le contenu des leçons ou les exemples de code
5. Testez toute modification de code dans les répertoires de projets concernés
6. Soumettez des pull requests en suivant les directives de contribution
### Pour les apprenants
1. Forkez ou clonez le référentiel
2. Naviguez dans les répertoires des leçons dans lordre
2. Naviguez séquentiellement dans les répertoires des leçons
3. Lisez les fichiers README de chaque leçon
4. Complétez les quiz pré-lesson sur https://ff-quizzes.netlify.app/web/
5. Travaillez sur les exemples de code dans les dossiers des leçons
6. Terminez les devoirs et les défis
5. Travaillez les exemples de code dans les dossiers de leçon
6. Réalisez les devoirs et défis
7. Passez les quiz post-lesson
### Développement en direct
- **Documentation** : Exécutez `docsify serve` à la racine (port 3000)
- **Application Quiz** : Exécutez `npm run dev` dans le répertoire quiz-app
- **Projets** : Utilisez lextension Live Server de VS Code pour les projets HTML
- **Projets API** : Exécutez `npm start` dans les répertoires API respectifs
- **Documentation** : Lancez `docsify serve` à la racine (port 3000)
- **Application Quiz** : Lancez `npm run dev` dans le répertoire quiz-app
- **Projets** : Utilisez l'extension VS Code Live Server pour les projets HTML
- **Projets API** : Lancez `npm start` dans les répertoires API correspondants
## Instructions de test
### Test de l'application Quiz
### Tests de l'application Quiz
```bash
cd quiz-app
npm run lint # Vérifier les problèmes de style de code
npm run build # Vérifier la réussite de la compilation
npm run build # Vérifier que la compilation réussit
```
### Test de l'API bancaire
### Tests de l'API bancaire
```bash
cd 7-bank-project/api
@ -124,76 +124,76 @@ node server.js # Vérifier que le serveur démarre sans erreurs
### Approche générale des tests
- Il s'agit d'un référentiel éducatif sans tests automatisés complets
- Les tests manuels se concentrent sur :
- Exécution des exemples de code sans erreurs
- Fonctionnement correct des liens dans la documentation
- Bon déroulement des builds des projets
- Respect des bonnes pratiques dans les exemples
- Ce référentiel éducatif ne dispose pas de tests automatisés complets
- Les tests manuels portent sur :
- L'exécution des exemples de code sans erreurs
- Le bon fonctionnement des liens dans la documentation
- Le succès des compilations des projets
- Le respect des bonnes pratiques dans les exemples
### Vérifications avant soumission
- Exécutez `npm run lint` dans les dossiers contenant package.json
- Lancez `npm run lint` dans les répertoires contenant package.json
- Vérifiez la validité des liens markdown
- Testez les exemples de code dans le navigateur ou Node.js
- Vérifiez que les traductions conservent la structure correcte
- Vérifiez que les traductions conservent la bonne structure
## Directives de style de code
## Guide de style de code
### JavaScript
- Utilisez la syntaxe moderne ES6+
- Respectez les configurations ESLint standard fournies dans les projets
- Utilisez des noms de variables et fonctions significatifs pour la clarté pédagogique
- Suivez les configurations ESLint standard fournies dans les projets
- Utilisez des noms de variables et de fonctions significatifs pour la clarté pédagogique
- Ajoutez des commentaires expliquant les concepts pour les apprenants
- Formatez avec Prettier là où configuré
- Formatez avec Prettier lorsqu'il est configuré
### HTML/CSS
- Éléments HTML5 sémantiques
- Principes de design responsive
- Conventions claires de nommage des classes
- Conventions claires de nommage de classes
- Commentaires expliquant les techniques CSS pour les apprenants
### Python
- Respect des directives de style PEP 8
- Exemples de code clairs et pédagogiques
- Indications de types lorsque cela aide à lapprentissage
- Indications de type là où c'est utile pour l'apprentissage
### Documentation Markdown
- Hiérarchie claire des titres
- Blocs de code avec spécification du langage
- Liens vers des ressources supplémentaires
- Captures décran et images dans les dossiers `images/`
- Texte alternatif pour les images pour laccessibilité
- Liens vers des ressources additionnelles
- Captures d'écran et images dans les dossiers `images/`
- Texte alternatif pour les images pour l'accessibilité
### Organisation des fichiers
- Leçons numérotées séquentiellement (1-getting-started-lessons, 2-js-basics, etc.)
- Chaque projet dispose de répertoires `solution/` et souvent `start/` ou `your-work/`
- Chaque projet possède des répertoires `solution/` et souvent `start/` ou `your-work/`
- Images stockées dans des dossiers `images/` spécifiques à chaque leçon
- Traductions dans la structure `translations/{code-langue}/`
- Traductions dans la structure `translations/{language-code}/`
## Compilation et déploiement
### Déploiement de l'application Quiz (Azure Static Web Apps)
Lapplication quiz-app est configurée pour le déploiement Azure Static Web Apps :
L'application quiz-app est configurée pour le déploiement sur Azure Static Web Apps :
```bash
cd quiz-app
npm run build # Crée le dossier dist/
# Déploie via le workflow GitHub Actions lors d'un push sur main
# Déploie via le workflow GitHub Actions lors d'une poussée sur main
```
Configuration Azure Static Web Apps :
- **Emplacement de lapplication** : `/quiz-app`
- **Emplacement de l'application** : `/quiz-app`
- **Emplacement de sortie** : `dist`
- **Workflow** : `.github/workflows/azure-static-web-apps-ashy-river-0debb7803.yml`
### Génération PDF de la documentation
### Génération de PDF de la documentation
```bash
npm install # Installer docsify-to-pdf
@ -209,74 +209,74 @@ docsify serve # Servir sur localhost:3000
### Builds spécifiques aux projets
Chaque répertoire de projet peut avoir un processus de build propre :
Chaque répertoire de projet peut avoir son propre processus de build :
- Projets Vue : `npm run build` crée des bundles de production
- Projets statiques : Pas détape de build, fichiers servis directement
- Projets statiques : pas d'étape de build, les fichiers sont servis directement
## Directives pour les Pull Requests
## Directives pour les pull requests
### Format des titres
### Format du titre
Utilisez des titres clairs et descriptifs indiquant la zone de changement :
- `[Quiz-app] Ajouter un nouveau quiz pour la leçon X`
- `[Lesson-3] Corriger une faute de frappe dans le projet terrarium`
- `[Lesson-3] Correction de faute dans le projet terrarium`
- `[Translation] Ajouter la traduction espagnole pour la leçon 5`
- `[Docs] Mettre à jour les instructions dinstallation`
- `[Docs] Mise à jour des instructions d'installation`
### Vérifications requises
Avant de soumettre une PR :
1. **Qualité du code** :
- Exécutez `npm run lint` dans les répertoires de projets concernés
- Corrigez toutes les erreurs et avertissements de lint
- Exécutez `npm run lint` dans les répertoires de projet affectés
- Corrigez toutes les erreurs et avertissements de linting
2. **Vérification du build** :
2. **Vérification de la build** :
- Exécutez `npm run build` si applicable
- Assurez-vous qu'aucune erreur de build ne survient
- Assurez-vous qu'il n'y ait pas d'erreurs de build
3. **Validation des liens** :
- Testez tous les liens markdown
- Vérifiez que les références aux images fonctionnent
- Vérifiez le fonctionnement des références d'images
4. **Relecture du contenu** :
- Corrigez lorthographe et la grammaire
- Corrigez l'orthographe et la grammaire
- Assurez-vous que les exemples de code sont corrects et pédagogiques
- Vérifiez que les traductions conservent le sens original
- Vérifiez que les traductions conservent leur sens original
### Exigences de contribution
- Accepter le CLA Microsoft (vérification automatisée lors de la première PR)
- Respecter le [Code de Conduite Open Source Microsoft](https://opensource.microsoft.com/codeofconduct/)
- Voir [CONTRIBUTING.md](./CONTRIBUTING.md) pour les directives détaillées
- Référencer les numéros dissues dans la description de la PR si applicable
- Acceptez la CLA Microsoft (vérification automatique lors de la première PR)
- Suivez le [Code de conduite Open Source Microsoft](https://opensource.microsoft.com/codeofconduct/)
- Consultez [CONTRIBUTING.md](./CONTRIBUTING.md) pour les directives détaillées
- Mentionnez les numéros dissues dans la description de la PR le cas échéant
### Processus de revue
- PRs examinées par les mainteneurs et la communauté
- Priorité donnée à la clarté pédagogique
- Les PR sont examinées par les mainteneurs et la communauté
- La clarté pédagogique est priorisée
- Les exemples de code doivent suivre les meilleures pratiques actuelles
- Les traductions sont vérifiées pour leur exactitude et pertinence culturelle
- Les traductions sont revues pour précision et adéquation culturelle
## Système de traduction
### Traduction automatisée
- Utilise GitHub Actions avec le workflow co-op-translator
- Traduction automatique vers plus de 50 langues
- Fichiers source dans les répertoires principaux
- Fichiers traduits dans `translations/{code-langue}/`
- Traduit automatiquement en plus de 50 langues
- Fichiers sources dans les répertoires principaux
- Fichiers traduits dans les répertoires `translations/{language-code}/`
### Ajout daméliorations manuelles de traduction
### Ajout d'améliorations manuelles de traduction
1. Localisez le fichier dans `translations/{code-langue}/`
2. Apportez des améliorations tout en conservant la structure
1. Localisez le fichier dans `translations/{language-code}/`
2. Apportez des améliorations tout en préservant la structure
3. Assurez-vous que les exemples de code restent fonctionnels
4. Testez tout contenu de quiz localisé
4. Testez tout contenu localisé de quiz
### Métadonnées de traduction
Les fichiers traduits contiennent un en-tête de métadonnées :
Les fichiers traduits incluent un en-tête de métadonnées :
```markdown
<!--
CO_OP_TRANSLATOR_METADATA:
@ -293,85 +293,85 @@ CO_OP_TRANSLATOR_METADATA:
### Problèmes courants
**Lapplication Quiz ne démarre pas** :
- Vérifiez la version de Node.js (v14+ recommandé)
- Supprimez `node_modules` et `package-lock.json`, lancez `npm install` de nouveau
- Vérifiez les conflits de port (par défaut : Vite utilise le port 5173)
**L'application quiz ne démarre pas** :
- Vérifiez la version de Node.js (v14+ recommandée)
- Supprimez `node_modules` et `package-lock.json`, relancez `npm install`
- Vérifiez s'il y a des conflits de ports (par défaut : Vite utilise le port 5173)
**Le serveur API ne démarre pas** :
- Vérifiez que la version de Node.js est suffisante (node >=10)
- Vérifiez si le port est déjà utilisé
- Assurez-vous que toutes les dépendances sont installées avec `npm install`
**Lextension de navigateur ne se charge pas** :
**L'extension de navigateur ne se charge pas** :
- Vérifiez que manifest.json est bien formaté
- Contrôlez la console du navigateur pour les erreurs
- Suivez les instructions spécifiques au navigateur pour linstallation dextensions
- Consultez la console du navigateur pour les erreurs
- Suivez les instructions d'installation spécifiques au navigateur
**Problèmes avec le projet de chat Python** :
**Problèmes avec le projet chat Python** :
- Assurez-vous que le package OpenAI est installé : `pip install openai`
- Vérifiez que la variable denvironnement GITHUB_TOKEN est définie
- Vérifiez les permissions daccès aux modèles GitHub
- Vérifiez que la variable d'environnement GITHUB_TOKEN est définie
- Contrôlez les permissions d'accès aux modèles GitHub
**Docsify ne sert pas la documentation** :
- Installez docsify-cli globalement : `npm install -g docsify-cli`
- Lancez depuis le répertoire racine du référentiel
- Vérifiez que `docs/_sidebar.md` existe
### Conseils pour lenvironnement de développement
### Conseils pour l'environnement de développement
- Utilisez VS Code avec lextension Live Server pour les projets HTML
- Utilisez VS Code avec l'extension Live Server pour les projets HTML
- Installez les extensions ESLint et Prettier pour un formatage cohérent
- Utilisez les outils de développement du navigateur pour déboguer JavaScript
- Pour les projets Vue, installez lextension Vue DevTools du navigateur
- Utilisez les DevTools du navigateur pour déboguer JavaScript
- Pour les projets Vue, installez l'extension Vue DevTools pour navigateur
### Considérations de performance
- Le grand nombre de fichiers traduits (plus de 50 langues) fait que les clones complets sont volumineux
- Utilisez un clone superficiel si vous travaillez uniquement sur le contenu : `git clone --depth 1`
- Excluez les traductions des recherches lorsque vous travaillez sur le contenu anglais
- Le grand nombre de fichiers traduits (50+ langues) rend les clones complets volumineux
- Utilisez un clone superficiel si vous travaillez seulement sur le contenu : `git clone --depth 1`
- Excluez les traductions des recherches lors du travail sur le contenu anglais
- Les processus de build peuvent être lents au premier lancement (npm install, build Vite)
## Considérations de sécurité
### Variables denvironnement
### Variables d'environnement
- Les clés API ne doivent jamais être commises dans le référentiel
- Utilisez les fichiers `.env` (déjà inclus dans `.gitignore`)
- Documentez les variables denvironnement requises dans les README des projets
- Les clés API ne doivent jamais être commies dans le référentiel
- Utilisez les fichiers `.env` (déjà dans `.gitignore`)
- Documentez les variables d'environnement requises dans les README des projets
### Projets Python
- Utilisez des environnements virtuels : `python -m venv venv`
- Maintenez les dépendances à jour
- Les tokens GitHub doivent avoir des permissions minimales requises
- Les tokens GitHub doivent avoir les permissions minimales requises
### Accès aux modèles GitHub
- Les jetons daccès personnel (PAT) sont nécessaires pour les modèles GitHub
- Les jetons doivent être stockés comme variables denvironnement
- Ne jamais commettre de jetons ou de credentials
- Les Personal Access Tokens (PAT) sont nécessaires pour les modèles GitHub
- Les tokens doivent être stockés en variables d'environnement
- Ne commitez jamais de tokens ou de credentials
## Notes supplémentaires
### Public cible
- Débutants complets en développement web
- Étudiants et autodidactes
- Étudiants et auto-apprenants
- Enseignants utilisant le programme en classe
- Contenu conçu pour laccessibilité et lacquisition progressive des compétences
- Le contenu est conçu pour l'accessibilité et la montée en compétences progressive
### Philosophie éducative
- Approche dapprentissage basée sur les projets
- Approche d'apprentissage par projet
- Vérifications fréquentes des connaissances (quiz)
- Exercices de codage pratiques
- Exemples dapplications réelles
- Exemples d'applications réelles
- Accent sur les fondamentaux avant les frameworks
### Maintenance du référentiel
- Communauté active dapprenants et de contributeurs
- Communauté active d'apprenants et de contributeurs
- Mises à jour régulières des dépendances et du contenu
- Suivi des issues et discussions par les mainteneurs
- Mises à jour des traductions automatisées via GitHub Actions
@ -381,28 +381,28 @@ CO_OP_TRANSLATOR_METADATA:
- [Modules Microsoft Learn](https://docs.microsoft.com/learn/)
- [Ressources Student Hub](https://docs.microsoft.com/learn/student-hub/)
- [GitHub Copilot](https://marketplace.visualstudio.com/items?itemName=GitHub.copilot) recommandé pour les apprenants
- Cours additionnels : IA générative, Data Science, ML, IoT disponibles
- Cours supplémentaires : IA générative, Data Science, ML, cursus IoT disponibles
### Travail avec des projets spécifiques
### Travailler avec des projets spécifiques
Pour des instructions détaillées sur les projets individuels, consultez les fichiers README dans :
- `quiz-app/README.md` - Application quiz Vue 3
- `7-bank-project/README.md` - Application bancaire avec authentification
- `5-browser-extension/README.md` - Développement dextension de navigateur
- `6-space-game/README.md` - Développement de jeu Canvas
- `9-chat-project/README.md` - Projet dassistant de chat IA
- `5-browser-extension/README.md` - Développement d'extension de navigateur
- `6-space-game/README.md` - Développement de jeu sur Canvas
- `9-chat-project/README.md` - Projet d'assistant de chat IA
### Structure Monorepo
### Structure du monorepo
Bien que ce ne soit pas un monorepo traditionnel, ce référentiel contient plusieurs projets indépendants :
- Chaque leçon est autonome
- Les projets ne partagent pas leurs dépendances
- Travaillez sur des projets individuels sans affecter les autres
- Clonez lensemble du repo pour une expérience complète du programme
- Travaillez sur des projets individuels sans impacter les autres
- Clonez le référentiel complet pour une expérience complète du programme
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Avertissement** :
Ce document a été traduit à laide du service de traduction automatisée [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions dassurer lexactitude, veuillez noter que les traductions automatiques peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue dorigine doit être considéré comme la source faisant foi. Pour les informations sensibles, il est recommandé de recourir à une traduction professionnelle humaine. Nous nassumons aucune responsabilité en cas de malentendus ou dinterprétations erronées résultant de lutilisation de cette traduction.
Ce document a été traduit à l'aide du service de traduction IA [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatiques peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant foi. Pour les informations critiques, une traduction professionnelle humaine est recommandée. Nous ne sommes pas responsables des malentendus ou mauvaises interprétations résultant de l'utilisation de cette traduction.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
Loading…
Cancel
Save