chore(i8n,docs): processed translations (#40799)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
This commit is contained in:
committed by
GitHub
parent
3394a654bd
commit
5d7173b124
@ -1,76 +1,76 @@
|
|||||||
### I am new to GitHub and Open Source. Where should I start?
|
### Soy nuevo en GitHub y Open Source. ¿Dónde debo empezar?
|
||||||
|
|
||||||
Read our ["How to Contribute to Open Source Guide"](https://github.com/freeCodeCamp/how-to-contribute-to-open-source). It's a comprehensive reference for first-timer-friendly projects. And it includes a lot of open source contribution tips.
|
Lee nuestra ["Guía de como contribuir a Open Source"](https://github.com/freeCodeCamp/how-to-contribute-to-open-source). Es una referencia completa para proyectos aptos para principiantes. E incluye muchos consejos de contribución de código abierto.
|
||||||
|
|
||||||
### Can I translate freeCodeCamp's curriculum?
|
### ¿Puedo traducir el currículum de freeCodeCamp?
|
||||||
|
|
||||||
Yes. We will roll out the tools for translating freeCodeCamp's curriculum soon.
|
Sí. Pronto implementaremos las herramientas para traducir el plan de estudios de freeCodeCamp.
|
||||||
|
|
||||||
Eventually, we intend to localize freeCodeCamp into several major world languages, starting with: Arabic, Chinese, Hindi, Portuguese, Russian, and Spanish.
|
Con el tiempo, tenemos la intención de traducir freeCodeCamp en varios idiomas mundiales importantes, comenzando con: Árabe, Chino, Hindi, Portugués, Ruso y Español.
|
||||||
|
|
||||||
### How can I report a new bug?
|
### ¿Cómo puedo reportar un nuevo error?
|
||||||
|
|
||||||
If you think you've found a bug, first read the ["Help I've Found a Bug"](https://forum.freecodecamp.org/t/how-to-report-a-bug/19543) article and follow its instructions.
|
Si crees que has encontrado un error, primero lee el artículo ["Ayuda, he encontrado un bug"](https://forum.freecodecamp.org/t/how-to-report-a-bug/19543) y sigue sus instrucciones.
|
||||||
|
|
||||||
If you're confident it's a new bug, go ahead and create a new GitHub issue. Be sure to include as much information as possible so that we can reproduce the bug. We have a pre-defined issue template to help you through this.
|
Si estas seguro de que es un nuevo error, sigue adelante y crea una nueva propuesta en GitHub. Asegúrate de incluir tanta información como sea posible para que podamos reproducir el error. Tenemos una plantilla de propuestas predefinida para ayudarte en esto.
|
||||||
|
|
||||||
Please note that these GitHub issues are for codebase-related issues and discussions – not for getting help with learning to code. Whenever in doubt, you should [seek assistance on the forum](https://forum.freecodecamp.org) before creating a GitHub issue.
|
Ten en cuenta que estos reportes en GitHub son para discusiones y problemas relacionados con la base de código, no para obtener ayuda para aprender a programar. Cada vez que tengas dudas, deberías [buscar ayuda en el foro](https://forum.freecodecamp.org) antes de crear un reporte en GitHub.
|
||||||
|
|
||||||
### How can I report a security issue?
|
### ¿Cómo puedo informar sobre un problema de seguridad?
|
||||||
|
|
||||||
Please don't create GitHub issues for security issues. Instead, please send an email to `security@freecodecamp.org` and we'll look into it immediately.
|
Por favor, no crees propuestas de GitHub para problemas de seguridad. En su lugar, por favor envía un correo electrónico a `security@freecodecamp.org` y lo estudiaremos inmediatamente.
|
||||||
|
|
||||||
### I am a student. Can I work on a feature for academic credits?
|
### Soy un estudiante. ¿Puedo trabajar en una funcionalidad para créditos académicos?
|
||||||
|
|
||||||
Yes. Please note we are unable to commit to any timelines or paperwork that may be a requirement by your college or university. We receive many pull-requests and code contributions by volunteer developers, and we respect their time and efforts. Out of respect for all of our other contributors, we will not give any PR special priority just because it happens to be school-related.
|
Sí. Ten en cuenta que no podemos comprometernos con ningún cronograma o papeleo que pueda ser un requisito de tu colegio o universidad. Recibimos muchos pull-requests y contribuciones de código por parte de desarrolladores voluntarios, y respetamos su tiempo y esfuerzos. Por respeto a todos nuestros demás colaboradores, no concederemos ninguna prioridad especial a las relaciones públicas sólo porque esté relacionada con la escuela.
|
||||||
|
|
||||||
We request you to plan ahead and work on code contributions with this in mind.
|
Le pedimos que planifique con anticipación y que trabaje en las contribuciones de código teniendo esto en cuenta.
|
||||||
|
|
||||||
### What do these different labels that are tagged on issues mean?
|
### ¿Qué significan estas diferentes etiquetas que están agregadas en los temas?
|
||||||
|
|
||||||
The code maintainers [triage](https://en.wikipedia.org/wiki/Software_bug#Bug_management) issues and pull requests based on their priority, severity, and other factors. You can [find a complete glossary of their meanings here](https://github.com/freecodecamp/freecodecamp/labels).
|
Los mantenedores de código [clasifican](https://en.wikipedia.org/wiki/Software_bug#Bug_management) problemas y pull requests basados en su prioridad, gravedad y otros factores. Puedes [encontrar un glosario completo de sus significados aquí](https://github.com/freecodecamp/freecodecamp/labels).
|
||||||
|
|
||||||
### Where do I start if I want to work on an issue?
|
### ¿Dónde comienzo si quiero trabajar en una propuesta?
|
||||||
|
|
||||||
You should go through [**`help wanted`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22) or [**`first timers only`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22first+timers+only%22) issues for a quick overview of what is available for you to work on.
|
Deberías pasar por los temas [**`se busca ayuda`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22) o [**`solo principiantes`**](https://github.com/freeCodeCamp/freeCodeCamp/issues?q=is%3Aopen+is%3Aissue+label%3A%22first+timers+only%22) para una rápida visión general de lo que está disponible para que trabajes.
|
||||||
|
|
||||||
> [!TIP] **`help wanted`** issues are up for grabs, and you do not need to seek permission before working on them. However, issues with the **`first timers only`** label are special issues that are designed for people who have not contributed to the freeCodeCamp codebase before.
|
> [!TIP] Los temas de **`se busca ayuda`** están en marcha y no es necesario pedir permiso antes de trabajar en ellos. Sin embargo, temas con la etiqueta **`solo principiantes`** son temas especiales que están diseñados para personas que no han contribuido a la base de código de freeCodeCamp antes.
|
||||||
|
|
||||||
### I found a typo. Should I report an issue before I can make a pull request?
|
### Encontré un error tipográfico. ¿Debo informar de un problema antes de poder hacer un pull request?
|
||||||
|
|
||||||
For typos and other wording changes, you can directly open pull requests without creating an issue first. Please be sure to mention details in the pull request description to help us understand and review your contribution – even if it's just a minor change.
|
Para los errores tipográficos y otros cambios de formulación, puedes abrir directamente pull-requests sin crear una propuesta primero. Por favor, asegúrese de mencionar los detalles en la descripción de la pull request para ayudarnos a entender y revisar su contribución – incluso si es un cambio menor.
|
||||||
|
|
||||||
Please do create an issue if you want to discuss bigger aspects of the codebase or curriculum.
|
Por favor cree un problema si desea discutir aspectos más amplios del código base o currículum.
|
||||||
|
|
||||||
### How can I get an issue assigned to me?
|
### ¿Cómo puedo conseguir que me asignen un número?
|
||||||
|
|
||||||
We typically do not assign issues to anyone other than long-time contributors. Instead, we follow the below policy to be fair to everyone:
|
Por lo general, no asignamos los números a nadie más que a los colaboradores de larga duración. En lugar de ello, seguimos la política de abajo para ser justos con todos:
|
||||||
|
|
||||||
1. We are most likely to merge the first pull request that addresses the issue.
|
1. Lo más probable es que fusionemos el primer pull request que aborde el número o problema.
|
||||||
2. In the case of multiple contributors opening a pull request for the same issue at around the same time, we will give priority to the pull request that best addresses the issue. Some of the things we consider:
|
2. En el caso de múltiples colaboradores abriendo un pull request para el mismo problema más o menos al mismo tiempo, daremos prioridad al pull request que aborde mejor la cuestión. Algunas de las cosas que consideramos:
|
||||||
- Did you include tests?
|
- ¿Has incluido pruebas?
|
||||||
- Did you catch all usecases?
|
- ¿Has detectado todos los casos de usos?
|
||||||
- Did you ensure all tests pass, and confirm everything works locally?
|
- ¿Te aseguraste de que pasaran todas las pruebas, y confirmaste que todo funciona localmente?
|
||||||
3. Finally, we give priority to pull requests which follow our recommended guidelines.
|
3. Por último, damos prioridad a los pull requests que siguen nuestras directrices recomendadas.
|
||||||
- Did you follow the pull request checklist?
|
- ¿Has seguido la lista de verificación de pull request?
|
||||||
- Did you give your pull request a meaningful title?
|
- ¿Has dado a tu pull request un título significativo?
|
||||||
|
|
||||||
### I am stuck on something that is not included in this documentation.
|
### Estoy atascado en algo que no está incluido en esta documentación.
|
||||||
|
|
||||||
**Feel free to ask for help in:**
|
**Siéntete libre de pedir ayuda en:**
|
||||||
|
|
||||||
- The `Contributors` category of [our community forum](https://forum.freecodecamp.org/c/contributors).
|
- La categoría de `colaboradores` de [nuestro foro de la comunidad](https://forum.freecodecamp.org/c/contributors).
|
||||||
- The `#Contributors` channel on [our Discord community server](https://discord.gg/pFspAhS).
|
- El canal `#Contributors` en [nuestro servidor de la comunidad de Discord](https://discord.gg/pFspAhS).
|
||||||
|
|
||||||
We are excited to help you contribute to any of the topics that you would like to work on. If you ask us questions on the related issue threads, we will be glad to clarify. Be sure to search for your question before posting a new one.
|
Estamos encantados de ayudarte a contribuir a cualquiera de los temas en los que te gustaría trabajar. Si nos hace preguntas sobre los temas relacionados, estaremos encantados de aclararlos. Asegúrese de buscar su pregunta antes de publicar una nueva.
|
||||||
|
|
||||||
Thanks in advance for being polite and patient. Remember – this community is run mainly by volunteers.
|
Gracias de antemano por ser educado y paciente. Recuerde – esta comunidad se maneja principalmente por voluntarios.
|
||||||
|
|
||||||
**Additional Assistance:**
|
**Asistencia Adicional:**
|
||||||
|
|
||||||
If you have queries about the stack, architecture of the codebase, feel free to reach out to our staff dev team:
|
Si tiene preguntas acerca del stack, arquitectura de la base de código, no dude en contactar con nuestro equipo de desarrollo:
|
||||||
|
|
||||||
| Staff | Send message on Forum |
|
| Personal | Enviar mensaje en el Foro |
|
||||||
|:--------------------- |:---------------------------------------------------------------------------- |
|
|:--------------------- |:---------------------------------------------------------------------------- |
|
||||||
| Mrugesh Mohapatra | [@raisedadead](https://forum.freecodecamp.org/u/raisedadead) |
|
| Mrugesh Mohapatra | [@raisedadead](https://forum.freecodecamp.org/u/raisedadead) |
|
||||||
| Ahmad Abdolsaheb | [@abdolsa](https://forum.freecodecamp.org/u/abdolsa) |
|
| Ahmad Abdolsaheb | [@abdolsa](https://forum.freecodecamp.org/u/abdolsa) |
|
||||||
@ -79,4 +79,4 @@ If you have queries about the stack, architecture of the codebase, feel free to
|
|||||||
| Oliver Eyton-Williams | [@ojeytonwilliams](https://forum.freecodecamp.org/u/ojeytonwilliams) |
|
| Oliver Eyton-Williams | [@ojeytonwilliams](https://forum.freecodecamp.org/u/ojeytonwilliams) |
|
||||||
| Randell Dawson | [@RandellDawson](https://forum.freecodecamp.org/u/randelldawson) |
|
| Randell Dawson | [@RandellDawson](https://forum.freecodecamp.org/u/randelldawson) |
|
||||||
|
|
||||||
**You can email our developer staff at: `dev[at]freecodecamp.org`**
|
**Puedes enviar un correo electrónico a nuestro equipo de desarrolladores en: `dev[at]freecodecamp.org`**
|
||||||
|
@ -1,16 +1,16 @@
|
|||||||
- **Getting Started**
|
- **Comenzando**
|
||||||
- [Introduction](index.md "Contribute to the freeCodeCamp.org Community")
|
- [Introducción](index.md "Contribuye a la Comunidad freeCodeCamp.org")
|
||||||
- [Frequently Asked Questions](FAQ.md)
|
- [Preguntas Más Frecuentes](FAQ.md)
|
||||||
- **Code Contribution**
|
- **Contribución de Código**
|
||||||
- [Set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md)
|
- [Configurar freeCodeCamp localmente](how-to-setup-freecodecamp-locally.md)
|
||||||
- [Open a pull request](how-to-open-a-pull-request.md)
|
- [Abrir una pull request](how-to-open-a-pull-request.md)
|
||||||
- [Work on coding challenges](how-to-work-on-coding-challenges.md)
|
- [Trabaja en los desafíos de código](how-to-work-on-coding-challenges.md)
|
||||||
- [Work on video challenges](how-to-help-with-video-challenges.md)
|
- [Trabaja en los desafíos de video](how-to-help-with-video-challenges.md)
|
||||||
- [Work on the news theme](how-to-work-on-the-news-theme.md)
|
- [ Trabajar en el tema de noticias](how-to-work-on-the-news-theme.md)
|
||||||
- [Work on the docs theme](how-to-work-on-the-docs-theme.md)
|
- [Trabaja en la documentación](how-to-work-on-the-docs-theme.md)
|
||||||
- **Optional Guides**
|
- **Guías Opcionales**
|
||||||
- [Catch outgoing emails locally](how-to-catch-outgoing-emails-locally.md)
|
- [Captura correos electrónicos salientes localmente](how-to-catch-outgoing-emails-locally.md)
|
||||||
- [Set up freeCodeCamp on WSL](how-to-setup-wsl.md)
|
- [Configurar freeCodeCamp en WSL](how-to-setup-wsl.md)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@ -25,13 +25,14 @@
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
- **Flight Manuals** (for Staff & Mods)
|
- **Manuales de Vuelo** (para el Personal & Moderadores)
|
||||||
- [Moderator Handbook](moderator-handbook.md)
|
- [Manual del Moderador](moderator-handbook.md)
|
||||||
- [DevOps Handbook](devops.md)
|
- [Plantillas de Respuesta](moderator-handbook?id=using-reply-templates)
|
||||||
|
- [Manual de DevOps](devops.md)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
- **Our Community**
|
- **Nuestra Comunidad**
|
||||||
- [**GitHub**](https://github.com/freecodecamp/freecodecamp)
|
- [**GitHub**](https://github.com/freecodecamp/freecodecamp)
|
||||||
- [**Discourse Forum**](https://freecodecamp.org/forum/c/contributors)
|
- [**Discourse Forum**](https://freecodecamp.org/forum/c/contributors)
|
||||||
- [**Gitter Chat**](https://gitter.im/FreeCodeCamp/Contributors)
|
- [**Gitter Chat**](https://gitter.im/FreeCodeCamp/Contributors)
|
||||||
|
@ -1,66 +1,66 @@
|
|||||||
# DevOps Handbook
|
# Manual de DevOps
|
||||||
|
|
||||||
This guide will help you understand our infrastructure stack and how we maintain our platforms. While this guide does not have exhaustive details for all operations, it could be used as a reference for your understanding of the systems.
|
Esta guía te ayudará a comprender nuestra infraestructura y cómo le damos mantenimiento a nuestras plataformas. Si bien esta guía no contiene detalles exhaustivos de todas las operaciones, ésta podría utilizarse como referencia para tu comprensión de los sistemas.
|
||||||
|
|
||||||
Let us know, if you have feedback or queries, and we will be happy to clarify.
|
Déjanos saber, si tienes algún comentario o consulta, y la aclararemos con mucho gusto.
|
||||||
|
|
||||||
# Flight Manual - Code deployments
|
# Manual de Vuelo - Despliegues de código
|
||||||
|
|
||||||
This repository is continuously built, tested and deployed to **separate sets of infrastructure (Servers, Databases, CDNs, etc.)**.
|
Este repositorio se construye, prueba y despliega continuamente para ** separar conjuntos de infraestructura (Servidores, Bases de Datos, CDNs, etc.)**.
|
||||||
|
|
||||||
This involves three steps to be followed in sequence:
|
Esto involucra tres pasos que deben seguirse en secuencia:
|
||||||
|
|
||||||
1. New changes (both fixes and features) are merged into our primary development branch (`master`) via pull requests.
|
1. Los nuevos cambios (ambos, correcciones y funcionalidades) son mezclados en nuestra rama principal de desarrollo (`master`) mediante pull requests.
|
||||||
2. These changes are run through a series of automated tests.
|
2. Estos cambios son ejecutados a través de una serie de pruebas automatizadas.
|
||||||
3. Once the tests pass we release the changes (or update them if needed) to deployments on our infrastructure.
|
3. Una vez que las pruebas se completan de forma satisfactoria, publicamos los cambios (o los actualizamos si es necesario) para desplegarlos en nuestra infraestructura.
|
||||||
|
|
||||||
#### Building the codebase - Mapping Git Branches to Deployments.
|
#### Construyendo la base de código - Mapeando las Ramas de Git con los Despliegues.
|
||||||
|
|
||||||
Typically, [`master`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master) (the default development branch) is merged into the [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) branch once a day and is released into an isolated infrastructure.
|
Usualmente, [`master`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master) (la rama de desarrollo por defecto) es fusionada con la rama [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) una vez al día, y publicada dentro de una infraestructura que se encuentra aislada.
|
||||||
|
|
||||||
This is an intermediate release for our developers and volunteer contributors. It is also known as our "staging" or "beta" release.
|
Esta es una publicación intermedia para nuestros desarrolladores y colaboradores voluntarios. También es conocida como nuestra publicación "staging" o "beta".
|
||||||
|
|
||||||
It is identical to our live production environment at `freeCodeCamp.org`, other than it using a separate set of databases, servers, web-proxies, etc. This isolation lets us test ongoing development and features in a "production" like scenario, without affecting regular users of freeCodeCamp.org's main platforms.
|
Este es idéntico a nuestro entorno de producción en ` freeCodeCamp.org`, excepto que utiliza un conjunto separado de bases de datos, servidores, web-proxies, etc. Este aislamiento nos permite probar el desarrollo y las funcionalidades de manera continua en un escenario similar al de "producción", sin afectar a los usuarios regulares de las principales plataformas de freeCodeCamp.org.
|
||||||
|
|
||||||
Once the developer team [`@freeCodeCamp/dev-team`](https://github.com/orgs/freeCodeCamp/teams/dev-team/members) is happy with the changes on the staging platform, these changes are moved every few days to the [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-current) branch.
|
Una vez que el equipo de desarrolladores [`@freeCodeCamp/dev-team`](https://github.com/orgs/freeCodeCamp/teams/dev-team/members) está satisfecho con los cambios en la plataforma de staging, estos cambios se trasladan cada pocos días a la rama [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-current).
|
||||||
|
|
||||||
This is the final release that moves changes to our production platforms on freeCodeCamp.org.
|
Esta es la versión final que despliega los cambios a nuestras plataformas de producción en freeCodeCamp.org.
|
||||||
|
|
||||||
#### Testing changes - Integration and User Acceptance Testing.
|
#### Pruebas de cambios - Pruebas de Integración y Aceptación del Usuario.
|
||||||
|
|
||||||
We employ various levels of integration and acceptance testing to check on the quality of the code. All our tests are done through software like [Travis CI](https://travis-ci.org/freeCodeCamp/freeCodeCamp) and [Azure Pipelines](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp).
|
Empleamos varios niveles de pruebas de integración y aceptación para verificar la calidad del código. Todas nuestras pruebas se realizan a través de software como [Travis CI](https://travis-ci.org/freeCodeCamp/freeCodeCamp) y [Azure Pipelines](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp).
|
||||||
|
|
||||||
We have unit tests for testing our challenge solutions, Server APIs and Client User interfaces. These help us test the integration between different components.
|
Contamos con pruebas unitarias para probar nuestras soluciones a los desafíos, las API del Servidor y las interfaces de Usuario. Estas nos ayudan a probar la integración entre diferentes componentes.
|
||||||
|
|
||||||
> [!NOTE] We are also in the process of writing end user tests which will help in replicating real world scenarios like updating an email or making a call to the API or third-party services.
|
> [!NOTE] También estamos en el proceso de redactar pruebas de usuario final que nos ayudarán a replicar escenarios del mundo real, como actualizar un correo electrónico o hacer una llamada al API o servicios de terceros.
|
||||||
|
|
||||||
Together these tests help in preventing issues from repeating themselves and ensure we do not introduce a bug while working on another bug or a feature.
|
Juntas, estas pruebas ayudan a evitar que los problemas se repitan y garantizan que no introduzcamos un error mientras trabajamos en otro error o en una funcionalidad.
|
||||||
|
|
||||||
#### Deploying Changes - Pushing changes to servers.
|
#### Desplegando los Cambios: Enviando los cambios a los servidores.
|
||||||
|
|
||||||
We have configured continuous delivery software to push changes to our development and production servers.
|
Hemos configurado un software de entrega continua para publicar los cambios en nuestros servidores de desarrollo y producción.
|
||||||
|
|
||||||
Once the changes are pushed to the protected release branches, a build pipeline is automatically triggered for the branch. The build pipelines are responsible for building artifacts and keeping them in a cold storage for later use.
|
Una vez que los cambios se envían a las ramas de publicación protegidas, se activa automáticamente un flujo de compilación para la rama. Los flujos de compilación son responsables de construir artefactos y mantenerlos en un almacenamiento en frío para su uso posterior.
|
||||||
|
|
||||||
The build pipeline goes on to trigger a corresponding release pipeline if it completes a successful run. The release pipelines are responsible for collecting the build artifacts, moving them to the servers and going live.
|
El flujo de compilación dispara el flujo de publicación correspondiente si este completa una ejecución exitosa. Los flujos de publicación son responsables de recopilar los artefactos de compilación, moverlos a los servidores y ponerlos en funcionamiento.
|
||||||
|
|
||||||
Status of builds and releases are [available here](#build-test-and-deployment-status).
|
Los estados de las compilaciones y publicaciones están [disponibles aquí](#build-test-and-deployment-status).
|
||||||
|
|
||||||
## Trigger a build, test and deploy
|
## Ejecutar una compilación, prueba y despliegue
|
||||||
|
|
||||||
Currently, only members on the developer team can push to the production branches. The changes to the `production-*` branches can land only via fast-forward merge to the [`upstream`](https://github.com/freeCodeCamp/freeCodeCamp).
|
Actualmente, solo los miembros del equipo de desarrolladores pueden enviar cambios a las ramas de producción. Los cambios en las ramas de `production-*` sólo pueden llegar a través de una fusión fast-forward al [`upstream`](https://github.com/freeCodeCamp/freeCodeCamp).
|
||||||
|
|
||||||
> [!NOTE] In the upcoming days we would improve this flow to be done via pull-requests, for better access management and transparency.
|
> [!NOTE] En los próximos días mejoraríamos este flujo a través de la implementación de pull-requests, para una mejor administración de acceso y transparencia.
|
||||||
|
|
||||||
### Pushing changes to Staging Applications.
|
### Publicando cambios a las Aplicaciones en Staging.
|
||||||
|
|
||||||
1. Configure your remotes correctly.
|
1. Configura tus repositorios remotos correctamente.
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
git remote -v
|
git remote -v
|
||||||
```
|
```
|
||||||
|
|
||||||
**Results:**
|
**Resultado:**
|
||||||
|
|
||||||
```
|
```
|
||||||
origin git@github.com:raisedadead/freeCodeCamp.git (fetch)
|
origin git@github.com:raisedadead/freeCodeCamp.git (fetch)
|
||||||
@ -69,7 +69,7 @@ Currently, only members on the developer team can push to the production branche
|
|||||||
upstream git@github.com:freeCodeCamp/freeCodeCamp.git (push)
|
upstream git@github.com:freeCodeCamp/freeCodeCamp.git (push)
|
||||||
```
|
```
|
||||||
|
|
||||||
2. Make sure your `master` branch is pristine and in sync with the upstream.
|
2. Asegúrate de que tu rama `master` no tiene cambios pendientes y esté sincronizada con el upstream.
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
git checkout master
|
git checkout master
|
||||||
@ -77,24 +77,24 @@ Currently, only members on the developer team can push to the production branche
|
|||||||
git reset --hard upstream/master
|
git reset --hard upstream/master
|
||||||
```
|
```
|
||||||
|
|
||||||
3. Check that the Travis CI is passing on the `master` branch for upstream.
|
3. Comprueba que Travis CI se está ejecutando sobre la rama `master` para el flujo upstream.
|
||||||
|
|
||||||
The [continuous integration](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) tests should be green and PASSING for the `master` branch.
|
Las pruebas de [integración continua](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) deben estar en verde y en estado PASSING para la rama `master`.
|
||||||
|
|
||||||
<details> <summary> Checking status on Travis CI (screenshot) </summary>
|
<details> <summary> Comprobando el estado en Travis CI (captura de pantalla) </summary>
|
||||||
<br>
|
<br>
|
||||||

|

|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
If this is failing you should stop and investigate the errors.
|
Si esto está fallando debes detenerte e investigar los errores.
|
||||||
|
|
||||||
4. Confirm that you are able to build the repository locally.
|
4. Confirme que puede crear el repositorio localmente.
|
||||||
|
|
||||||
```
|
```
|
||||||
npm run clean-and-develop
|
npm run clean-and-develop
|
||||||
```
|
```
|
||||||
|
|
||||||
5. Move changes from `master` to `production-staging` via a fast-forward merge
|
5. Mueva los cambios desde `master` a `production-staging` mediante una fusión fast-forward
|
||||||
|
|
||||||
```
|
```
|
||||||
git checkout production-staging
|
git checkout production-staging
|
||||||
@ -102,26 +102,26 @@ Currently, only members on the developer team can push to the production branche
|
|||||||
git push upstream
|
git push upstream
|
||||||
```
|
```
|
||||||
|
|
||||||
> [!NOTE] You will not be able to force push and if you have re-written the history in anyway these commands will error out.
|
> [!NOTE] No podrás forzar un push y si has reescrito el historial de alguna manera, estos comandos arrojarán errores.
|
||||||
>
|
>
|
||||||
> If they do, you may have done something incorrectly and you should just start over.
|
> Si esto ocurre, es posible que hayas hecho algo incorrectamente y deberías comenzar de nuevo.
|
||||||
|
|
||||||
The above steps will automatically trigger a run on the build pipeline for the `production-staging` branch. Once the build is complete, the artifacts are saved as `.zip` files in a cold storage to be retrieved and used later.
|
Los pasos anteriores activarán automáticamente un flujo de compilación para la rama `production-staging`. Una vez que se completa la compilación, los artefactos se guardan como archivos `.zip` en un almacenamiento en frío para ser recuperados y usados más adelante.
|
||||||
|
|
||||||
The release pipeline is triggered automatically when a fresh artifact is available from the connected build pipeline. For staging platforms, this process does not involve manual approval and the artifacts are pushed to the Client CDN and API servers.
|
El flujo de publicación se activa automáticamente cuando hay un nuevo artefacto disponible en el flujo de compilación conectado. Para las plataformas de staging, este proceso no implica aprobación manual y los artefactos se envían a los servidores de API y CDN Cliente.
|
||||||
|
|
||||||
> [!TIP|label:Estimates] Typically the build run takes ~20-25 minutes to complete followed by the release run which takes ~15-20 mins for the client, and ~5-10 mins for the API to be available live. From code push to being live on the staging platforms the whole process takes **~35-45 mins** in total.
|
> [!TIP|label:Estimates] Por lo general, la ejecución de la compilación tarda entre 20 y 25 minutos en completarse, seguido de la ejecución de publicación que tarda aproximadamente entre 15 y 20 minutos para el cliente, y aproximadamente entre 5 y 10 minutos para que el API estén disponibles en vivo. Desde que el código se envía al servidor hasta que está en vivo en las plataformas de staging, todo el proceso toma **aproximadamente 35 a 45 minutos** en total.
|
||||||
|
|
||||||
### Pushing changes to Production Applications.
|
### Publicando cambios a las Aplicaciones en Producción.
|
||||||
|
|
||||||
The process is mostly the same as the staging platforms, with a few extra checks in place. This is just to make sure, we do not break anything on freeCodeCamp.org which can see hundreds of users using it at any moment.
|
El proceso es prácticamente el mismo que el de las plataformas de staging, con algunas comprobaciones adicionales. Esto es solo para asegurarnos de que no rompemos nada en freeCodeCamp.org, el cual puede tener a cientos de usuarios usándolo en cualquier momento.
|
||||||
|
|
||||||
| Do NOT execute these commands unless you have verified that everything is working on the staging platform. You should not bypass or skip any testing on staging before proceeding further. |
|
| NO ejecutes estos comandos a menos que hayas verificado que todo funciona en la plataforma de staging. No debes omitir ni evitar ninguna prueba en staging antes de continuar. |
|
||||||
|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
||||||
| |
|
| |
|
||||||
|
|
||||||
|
|
||||||
1. Make sure your `production-staging` branch is pristine and in sync with the upstream.
|
1. Asegúrate de que tu rama `production-staging` no tenga cambios pendientes y esté sincronizada con upstream.
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
git checkout production-staging
|
git checkout production-staging
|
||||||
@ -129,7 +129,7 @@ The process is mostly the same as the staging platforms, with a few extra checks
|
|||||||
git reset --hard upstream/production-staging
|
git reset --hard upstream/production-staging
|
||||||
```
|
```
|
||||||
|
|
||||||
2. Move changes from `production-staging` to `production-current` via a fast-forward merge
|
2. Mueve los cambios de `production-staging` a `production-current` mediante una fusión fast-forward
|
||||||
|
|
||||||
```
|
```
|
||||||
git checkout production-current
|
git checkout production-current
|
||||||
@ -137,127 +137,127 @@ The process is mostly the same as the staging platforms, with a few extra checks
|
|||||||
git push upstream
|
git push upstream
|
||||||
```
|
```
|
||||||
|
|
||||||
> [!NOTE] You will not be able to force push and if you have re-written the history in anyway these commands will error out.
|
> [!NOTE] No podrás forzar un push y si has reescrito el historial de alguna manera, estos comandos arrojarán errores.
|
||||||
>
|
>
|
||||||
> If they do, you may have done something incorrectly and you should just start over.
|
> Si esto ocurre, es posible que hayas hecho algo incorrectamente y deberías comenzar de nuevo.
|
||||||
|
|
||||||
The above steps will automatically trigger a run on the build pipeline for the `production-current` branch. Once a build artifact is ready, it will trigger a run on the release pipeline.
|
Los pasos anteriores activarán automáticamente un flujo de compilación para la rama `production-current`. Una vez que un artefacto de compilación está listo, este activará la ejecución en el flujo de publicación.
|
||||||
|
|
||||||
> [!TIP|label:Estimates] Typically the build run takes ~20-25 minutes to complete.
|
> [!TIP|label:Estimates] Normalmente, la ejecución de la compilación tarda entre 20 y 25 minutos en completarse.
|
||||||
|
|
||||||
**Additional Steps for Staff Action**
|
**Pasos Adicionales para el Staff Action**
|
||||||
|
|
||||||
One a release run is triggered, members of the developer staff team will receive an automated manual intervention email. They can either _approve_ or _reject_ the release run.
|
Una vez que se activa una ejecución de publicación, los miembros del equipo de desarrollado principal recibirán un correo electrónico automatizado de intervención manual. Pueden _aprobar_ o _rechazar_ la publicación.
|
||||||
|
|
||||||
If the changes are working nicely and have been tested on the staging platform, then it can be approved. The approval must be given within 4 hours of the release being triggered before getting rejected automatically. A staff can re-trigger the release run manually for rejected runs, or wait for the next cycle of release.
|
Si los cambios funcionan y se han probado en la plataforma de staging, entonces se pueden aprobar. La aprobación debe darse dentro de las 4 horas posteriores a la activación de la publicación antes de sea rechazada automáticamente. Un miembro del personal puede volver a iniciar la ejecución de la publicación de manera manual para publicaciones que fueron rechazados o esperar el siguiente ciclo de publicación.
|
||||||
|
|
||||||
For staff use:
|
Para uso del personal:
|
||||||
|
|
||||||
| Check your email for a direct link or [go to the release dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) after the build run is complete. |
|
| Revisa tu correo electrónico para ver si hay un enlace directo o [ve al panel de publicaciones](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) después de que la ejecución de la compilación haya terminado. |
|
||||||
|:------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||||
| |
|
| |
|
||||||
|
|
||||||
|
|
||||||
Once one of the staff members approves a release, the pipeline will push the changes live to freeCodeCamp.org's production CDN and API servers. They typically take ~15-20 mins for the client, and ~5 mins for the API servers to be available live.
|
Una vez que uno de los miembros del personal apruebe una publicación, el flujo enviará los cambios a los servidores de API y CDN de producción de freeCodeCamp.org. Por lo general, esto tomará entre 15 y 20 minutos para el cliente y aproximadamente 5 minutos para que los servidores API estén disponibles en vivo respectivamente.
|
||||||
|
|
||||||
> [!TIP|label:Estimates] The release run typically takes ~15-20 mins for each client instance, and ~5-10 mins for each API instance to be available live. From code push to being live on the production platforms the whole process takes **~90-120 mins** in total (not counting the wait time for the staff approval).
|
> [!TIP|label:Estimates] La publicación suele tardar entre 15 y 20 minutos para cada instancia de cliente, y entre 5 y 10 minutos para que cada instancia de API esté disponible en vivo. Desde el envío del código hasta que está en vivo en las plataformas de producción, todo el proceso toma en total **entre 90 y 120 minutos aproximadamente** (sin contar el tiempo de espera para la aprobación del personal).
|
||||||
|
|
||||||
## Build, Test and Deployment Status
|
## Estado de la Compilación, Pruebas y Despliegue
|
||||||
|
|
||||||
Here is the current test, build and deployment status of the codebase.
|
Aquí está el estado actual de las pruebas, compilación y despliegue del código base.
|
||||||
|
|
||||||
| Type | Branch | Status | Dashboard |
|
| Tipo | Rama | Estado | Panel |
|
||||||
|:---------------- |:-------------------------------------------------------------------------------------------- |:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |:----------------------------------------------------------------------------------------- |
|
|:-------------------- |:-------------------------------------------------------------------------------------------- |:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |:---------------------------------------------------------------------------------------- |
|
||||||
| CI Tests | [`master`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master) |  | [Go to status dashboard](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) |
|
| Pruebas CI | [`master`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master) |  | [Ir al panel de estado](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) |
|
||||||
| CI Tests | [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) |  | [Go to status dashboard](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) |
|
| Pruebas CI | [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) |  | [Ir al panel de estado](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) |
|
||||||
| Build Pipeline | [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | [](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build/latest?definitionId=15&branchName=production-staging) | [Go to status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) |
|
| Flujo de Compilación | [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | [](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build/latest?definitionId=15&branchName=production-staging) | [Ir al panel de estado](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) |
|
||||||
| Release Pipeline | [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | | [Go to status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) |
|
| Flujo de Publicación | [`production-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | | [Ir al panel de estado](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) |
|
||||||
| CI Tests | [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-current) |  | [Go to status dashboard](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) |
|
| Pruebas CI | [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-current) |  | [Ir al panel de estado](https://travis-ci.com/github/freeCodeCamp/freeCodeCamp/branches) |
|
||||||
| Build Pipeline | [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | [](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build/latest?definitionId=17&branchName=production-current) | [Go to status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) |
|
| Flujo de Compilación | [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | [](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build/latest?definitionId=17&branchName=production-current) | [Ir al panel de estado](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_build) |
|
||||||
| Release Pipeline | [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | | [Go to status dashboard](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) |
|
| Flujo de Publicación | [`production-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/production-staging) | | [Ir al panel de estado](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_release) |
|
||||||
|
|
||||||
## Early access and beta testing
|
## Acceso anticipado y pruebas beta
|
||||||
|
|
||||||
We welcome you to test these releases in a **"public beta testing"** mode and get early access to upcoming features to the platforms. Sometimes these features/changes are referred to as **next, beta, staging,** etc. interchangeably.
|
Te invitamos a probar estas versiones en un modo **"prueba beta pública"** y obtener acceso anticipado a las próximas funciones de las plataformas. A veces, estas funcionalidades/cambios se denominan **next, beta, staging,** etc. indistintamente.
|
||||||
|
|
||||||
Your contributions via feedback and issue reports will help us in making the production platforms at `freeCodeCamp.org` more **resilient**, **consistent** and **stable** for everyone.
|
Tus contribuciones a través de comentarios y reporte de errores nos ayudarán a hacer que las plataformas de producción en `freeCodeCamp.org` sean más **resistentes**, **consistentes** y **estables** para todos.
|
||||||
|
|
||||||
We thank you for reporting bugs that you encounter and help in making freeCodeCamp.org better. You rock!
|
Te agradecemos por reportar los errores que encuentres y ayudar a mejorar freeCodeCamp.org. ¡Eres genial!
|
||||||
|
|
||||||
### Identifying the upcoming version of the platforms
|
### Identificando la próxima version de las plataformas
|
||||||
|
|
||||||
Currently a public beta testing version is available at:
|
Actualmente una versión de prueba beta pública está disponible en:
|
||||||
|
|
||||||
<h1 align="center"><a href='https://www.freecodecamp.dev' _target='blank'>freecodecamp.dev</a></h1>
|
<h1 align="center"><a href='https://www.freecodecamp.dev' _target='blank'>freecodecamp.dev</a></h1>
|
||||||
|
|
||||||
> [!NOTE] The domain name is different than **`freeCodeCamp.org`**. This is intentional to prevent search engine indexing and avoid confusion for regular users of the platform.
|
> [!NOTE] El nombre de dominio es diferente a **`freeCodeCamp.org`**. Esto es intencional para evitar la indexación de los motores de búsqueda y evitar cualquier confusión en los usuarios habituales de la plataforma.
|
||||||
|
|
||||||
### Identifying the current version of the platforms
|
### Identificando la versión actual de las plataformas
|
||||||
|
|
||||||
**The current version of the platform is always available at [`freeCodeCamp.org`](https://www.freecodecamp.org).**
|
**La versión actual de la plataforma siempre está disponible en [`freeCodeCamp.org`](https://www.freecodecamp.org).**
|
||||||
|
|
||||||
The dev-team merges changes from the `production-staging` branch to `production-current` when they release changes. The top commit should be what you see live on the site.
|
El equipo de desarrollo fusiona los cambios de la rama `production-staging` a `production-current` cuando se publican los cambios. El commit más reciente debe ser lo que ves en vivo en el sitio.
|
||||||
|
|
||||||
You can identify the exact version deployed by visiting the build and deployment logs available in the status section. Alternatively you can also ping us in the [contributors chat room](https://gitter.im/FreeCodeCamp/Contributors) for a confirmation.
|
Puedes identificar la versión exacta desplegada visitando los registros de compilación y despliegue disponibles en la sección de estado. Adicionalmente, también puedes contactarnos en la [sala de chat de contribuyentes](https://gitter.im/FreeCodeCamp/Contributors) para obtener una confirmación.
|
||||||
|
|
||||||
### Known Limitations
|
### Limitaciones Conocidas
|
||||||
|
|
||||||
There are some known limitations and tradeoffs when using the beta version of the platform.
|
Existen algunas limitaciones y problemas conocidos al utilizar la versión beta de la plataforma.
|
||||||
|
|
||||||
- #### All data / personal progress on these beta platforms `will NOT be saved or carried over` to production.
|
- #### Todos los datos / progreso personal en estas plataformas beta `NO se guardarán ni se transferirán` a producción.
|
||||||
|
|
||||||
**Users on the beta version will have a separate account from the production.** The beta version uses a physically separate database from production. This gives us the ability to prevent any accidental loss of data or modifications. The dev team may purge the database on this beta version as needed.
|
**Los usuarios de la versión beta tendrán una cuenta separada a la de producción.** La versión beta usa una base de datos físicamente separada de la de producción. Esto nos da la capacidad de prevenir cualquier pérdida accidental de datos o modificaciones. El equipo de desarrollo puede purgar la base de datos en esta versión beta según sea necesario.
|
||||||
|
|
||||||
- #### There are no guarantees on the uptime and reliability of the beta platforms.
|
- #### No hay garantías sobre el tiempo de disponibilidad y confiabilidad de las plataformas beta.
|
||||||
|
|
||||||
Deployment is expected to be frequent and in rapid iterations, sometimes multiple times a day. As a result there will be unexpected downtime at times or broken functionality on the beta version.
|
Se espera que el despliegue sea frecuente y en iteraciones rápidas, a veces varias veces al día. Como resultado, en ocasiones habrá cierto tiempo de inactividad inesperado o alguna funcionalidad con problemas en la versión beta.
|
||||||
|
|
||||||
- #### Do not send regular users to this site as a measure of confirming a fix
|
- #### No envíes a los usuarios habituales a este sitio como una medida para confirmar una solución
|
||||||
|
|
||||||
The beta site is and always has been to augment local development and testing, nothing else. It's not a promise of what’s coming, but a glimpse of what is being worked upon.
|
El sitio beta es y siempre ha sido para aumentar el desarrollo y las pruebas locales, nada más. No es una promesa de lo que se avecina, sino un vistazo de lo que se está trabajando.
|
||||||
|
|
||||||
- #### Sign page may look different than production
|
- #### La página de registro puede verse diferente a la de producción
|
||||||
|
|
||||||
We use a test tenant for freecodecamp.dev on Auth0, and hence do not have the ability to set a custom domain. This makes it so that all the redirect callbacks and the login page appear at a default domain like: `https://freecodecamp-dev.auth0.com/`. This does not affect the functionality is as close to production as we can get.
|
Usamos un entorno de pruebas para freecodecamp.dev en Auth0 y, por lo tanto, no tenemos la capacidad de configurar un dominio personalizado. Esto hace que todas las redirecciones de peticiones y la página de inicio de sesión aparezcan en un dominio predeterminado como: `https://freecodecamp-dev.auth0.com/`. Esto no afecta la funcionalidad y es lo más cercano a producción que podemos tener.
|
||||||
|
|
||||||
## Reporting issues and leaving feedback
|
## Reportando problemas y dejando retroalimentación
|
||||||
|
|
||||||
Please open fresh issues for discussions and reporting bugs. You can label them as **[`release: next/beta`](https://github.com/freeCodeCamp/freeCodeCamp/labels/release%3A%20next%2Fbeta)** for triage.
|
Por favor abre un nuevo reporte (issue) para discusiones e informes de errores. Puedes etiquetarlos como **[`release: next/beta`](https://github.com/freeCodeCamp/freeCodeCamp/labels/release%3A%20next%2Fbeta)** para clasificación.
|
||||||
|
|
||||||
You may send an email to `dev[at]freecodecamp.org` if you have any queries. As always all security vulnerabilities should be reported to `security[at]freecodecamp.org` instead of the public tracker and forum.
|
Puedes enviar un correo electrónico a `dev[at]freecodecamp.org` si tienes alguna consulta. Como siempre, todas las vulnerabilidades de seguridad deben notificarse a `security[at]freecodecamp.org` en lugar del registro público o el foro.
|
||||||
|
|
||||||
# Flight Manual - Server Maintenance
|
# Manual de Vuelo - Mantenimiento del Servidor
|
||||||
|
|
||||||
> [!WARNING]
|
> [!WARNING]
|
||||||
>
|
>
|
||||||
> 1. The guide applies to the **freeCodeCamp Staff members only**.
|
> 1. La guía se aplica únicamente a los **miembros del personal de freeCodeCamp**.
|
||||||
> 2. These instructions should not be considered exhaustive, please use caution.
|
> 2. Estas instrucciones no deben considerarse exhaustivas, por favor ten cuidado.
|
||||||
|
|
||||||
As a member of the staff, you may have been given access to our cloud service providers like Azure, Digital Ocean, etc.
|
Como miembro del equipo interno, es posible que se te haya dado acceso a nuestros proveedores de servicios en la nube como Azure, Digital Ocean, etc.
|
||||||
|
|
||||||
Here are some handy commands that you can use to work on the Virtual Machines (VM), for instance performing maintenance updates or doing general houeskeeping.
|
Estos son algunos comandos prácticos que puedes usar para trabajar en las Máquinas Virtuales (VM), por ejemplo, realizar actualizaciones de mantenimiento o realizar un mantenimiento general.
|
||||||
|
|
||||||
## Get a list of the VMs
|
## Obtener una lista de las Máquinas Virtuales
|
||||||
|
|
||||||
> [!NOTE] While you may already have SSH access to the VMs, that alone will not let you list VMs unless you been granted access to the cloud portals as well.
|
> [!NOTE] Aunque es posible que ya tengas acceso SSH a las máquinas virtuales, esto solamente no te permitirá enumerar las máquinas virtuales a menos que también se te conceda acceso a los portales en la nube.
|
||||||
|
|
||||||
### Azure
|
### Azure
|
||||||
|
|
||||||
Install Azure CLI `az`: https://docs.microsoft.com/en-us/cli/azure/install-azure-cli
|
Instala el CLI de Azure `az`: https://docs.microsoft.com/en-us/cli/azure/install-azure-cli
|
||||||
|
|
||||||
> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):**
|
> **(Una sola vez) Instalar en macOS con [`homebrew`](https://brew.sh):**
|
||||||
|
|
||||||
```
|
```
|
||||||
brew install azure-cli
|
brew install azure-cli
|
||||||
```
|
```
|
||||||
|
|
||||||
> **(One-time) Login:**
|
> **(Una sola vez) Inicio de sesión:**
|
||||||
|
|
||||||
```
|
```
|
||||||
az login
|
az login
|
||||||
```
|
```
|
||||||
|
|
||||||
> **Get the list of VM names and P addresses:**
|
> **Obtener la lista de nombres de las máquinas virtuales y direcciones IP:**
|
||||||
|
|
||||||
```
|
```
|
||||||
az vm list-ip-addresses --output table
|
az vm list-ip-addresses --output table
|
||||||
@ -265,31 +265,31 @@ az vm list-ip-addresses --output table
|
|||||||
|
|
||||||
### Digital Ocean
|
### Digital Ocean
|
||||||
|
|
||||||
Install Digital Ocean CLI `doctl`: https://github.com/digitalocean/doctl#installing-doctl
|
Instalar el CLI de Digital Ocean `doctl`: https://github.com/digitalocean/doctl#installing-doctl
|
||||||
|
|
||||||
> **(One-time) Install on macOS with [`homebrew`](https://brew.sh):**
|
> **(Una sola vez) Instalar en macOS con [`homebrew`](https://brew.sh):**
|
||||||
|
|
||||||
```
|
```
|
||||||
brew install doctl
|
brew install doctl
|
||||||
```
|
```
|
||||||
|
|
||||||
> **(One-time) Login:**
|
> **(Una sola vez) Inicio de sesión:**
|
||||||
|
|
||||||
Authentication and context switching: https://github.com/digitalocean/doctl#authenticating-with-digitalocean
|
Autenticación y cambio de contexto: https://github.com/digitalocean/doctl#authenticating-with-digitalocean
|
||||||
|
|
||||||
```
|
```
|
||||||
doctl auth init
|
doctl auth init
|
||||||
```
|
```
|
||||||
|
|
||||||
> **Get the list of VM names and IP addresses:**
|
> **Obtener la lista de nombres de las máquinas virtuales y direcciones IP:**
|
||||||
|
|
||||||
```
|
```
|
||||||
doctl compute droplet list --format "ID,Name,PublicIPv4"
|
doctl compute droplet list --format "ID,Name,PublicIPv4"
|
||||||
```
|
```
|
||||||
|
|
||||||
## Spin a VM (or VM Scale Set)
|
## Iniciar una VM (o Conjunto de Escalado de VMs)
|
||||||
|
|
||||||
> Todo: Add instructions for spinning VM(s)
|
> Todo: Agregar instrucciones para iniciar VM(s)
|
||||||
|
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
@ -386,48 +386,48 @@ az vmss create \
|
|||||||
|
|
||||||
-->
|
-->
|
||||||
|
|
||||||
## Keep VMs updated
|
## Mantener las VMs actualizadas
|
||||||
|
|
||||||
You should keep the VMs up to date by performing updates and upgrades. This will ensure that the virtual machine is patched with latest security fixes.
|
Debes mantener las máquinas virtuales actualizadas mediante la realización de actualizaciones. Esto asegurará que la máquina virtual se ha parcheado con las correcciones de seguridad más recientes.
|
||||||
|
|
||||||
> [!WARNING] Before you run these commands:
|
> [!WARNING] Antes de ejecutar estos comandos:
|
||||||
>
|
>
|
||||||
> - Make sure that the VM has been provisioned completely and there is no post-install steps running.
|
> - Asegúreate de que la máquina virtual se ha aprovisionado completamente y no hay en ejecución pasos posteriores a la instalación.
|
||||||
> - If you are updating packages on a VM that is already serving an application, make sure the app has been stopped / saved. Package updates will cause network bandwidth, memory and/or CPU usage spikes leading to outages on running applications.
|
> - Si estás actualizando paquetes en una máquina virtual que ya está sirviendo una aplicación, asegúrate de que la aplicación se ha detenido / guardado. Las actualizaciones de paquetes causarán que el ancho de banda de la red, la memoria y/o CPU tengan picos que pueden ocasionar interrupciones en aplicaciones en ejecución.
|
||||||
|
|
||||||
Update package information
|
Actualizar la información de paquetes
|
||||||
|
|
||||||
```console
|
```console
|
||||||
sudo apt update
|
sudo apt update
|
||||||
```
|
```
|
||||||
|
|
||||||
Upgrade installed packages
|
Actualizar los paquetes instalados
|
||||||
|
|
||||||
```console
|
```console
|
||||||
sudo apt upgrade -y
|
sudo apt upgrade -y
|
||||||
```
|
```
|
||||||
|
|
||||||
Cleanup unused packages
|
Limpieza de paquetes no utilizados
|
||||||
|
|
||||||
```console
|
```console
|
||||||
sudo apt autoremove -y
|
sudo apt autoremove -y
|
||||||
```
|
```
|
||||||
|
|
||||||
## Work on Web Servers (Proxy)
|
## Trabajar en Servidores Web (Proxy)
|
||||||
|
|
||||||
We are running load balanced (Azure Load Balancer) instances for our web servers. These servers are running NGINX which reverse proxy all of the traffic to freeCodeCamp.org from various applications running on their own infrastructures.
|
Estamos ejecutando instancias de balanceo de cargas (Azure Load Balancer) para nuestros servidores web. Estos servidores ejecutan NGINX como proxy inverso, enrutando hacia freeCodeCamp.org el tráfico de varias aplicaciones que se ejecutan en sus propias infraestructuras.
|
||||||
|
|
||||||
The NGINX config is available on [this repository](https://github.com/freeCodeCamp/nginx-config).
|
La configuración de NGINX está disponible en [este repositorio](https://github.com/freeCodeCamp/nginx-config).
|
||||||
|
|
||||||
### First Install
|
### Primera Instalación
|
||||||
|
|
||||||
Provisioning VMs with the Code
|
Aprovisionamiento de máquinas virtuales con el código
|
||||||
|
|
||||||
#### 1. (Optional) Install NGINX and configure from repository.
|
#### 1. (Opcional) Instale NGINX y configúrelo desde el repositorio.
|
||||||
|
|
||||||
The basic setup should be ready OOTB, via the cloud-init configuration. SSH and make changes as necessary for the particular instance(s).
|
La configuración básica debe estar lista OOTB, mediante la configuración cloud-init. SSH y hacer los cambios según sea necesario para la(s) instancia(s) concreta(s).
|
||||||
|
|
||||||
If you did not use the cloud-init config previously use the below for manual setup of NGINX and error pages:
|
Si anteriormente no utilizaste la configuración cloud-init, utiliza lo siguiente para obtener manualmente la configuración de NGINX y páginas de error:
|
||||||
|
|
||||||
```console
|
```console
|
||||||
sudo su
|
sudo su
|
||||||
@ -442,13 +442,13 @@ git clone https://github.com/freeCodeCamp/nginx-config nginx
|
|||||||
cd /etc/nginx
|
cd /etc/nginx
|
||||||
```
|
```
|
||||||
|
|
||||||
#### 2. Install Cloudflare origin certificates and upstream application config.
|
#### 2. Instale los certificados de origen de Cloudflare y la configuración de la aplicación upstream.
|
||||||
|
|
||||||
Get the Cloudflare origin certificates from the secure storage and install at required locations.
|
Obtén los certificados de origen de almacenamiento seguro de Cloudflare e instálalos en los lugares requeridos.
|
||||||
|
|
||||||
**OR**
|
**O**
|
||||||
|
|
||||||
Move over existing certificates:
|
Reemplazar los certificados existentes:
|
||||||
|
|
||||||
```console
|
```console
|
||||||
# Local
|
# Local
|
||||||
@ -460,44 +460,44 @@ rm -rf ./ssl
|
|||||||
mv /tmp/ssl ./
|
mv /tmp/ssl ./
|
||||||
```
|
```
|
||||||
|
|
||||||
Update Upstream Configurations:
|
Actualizar las Configuraciones de Upstream:
|
||||||
|
|
||||||
```console
|
```console
|
||||||
vi configs/upstreams.conf
|
vi configs/upstreams.conf
|
||||||
```
|
```
|
||||||
|
|
||||||
Add/update the source/origin application IP addresses.
|
Agregar/actualizar las direcciones IP source/origin de la aplicación.
|
||||||
|
|
||||||
#### 3. Setup networking and firewalls.
|
#### 3. Configurar redes y firewalls.
|
||||||
|
|
||||||
Configure Azure firewalls and `ufw` as needed for ingress origin addresses.
|
Configure los firewalls de Azure y `ufw` según sea necesario para las direcciones de origen de entrada.
|
||||||
|
|
||||||
#### 4. Add the VM to the load balancer backend pool.
|
#### 4. Agregar la VM al grupo de backend del balanceador de cargas.
|
||||||
|
|
||||||
Configure and add rules to load balancer if needed. You may also need to add the VMs to load balancer backend pool if needed.
|
Configura y agrega reglas al balanceador de carga si es necesario. Es posible que también debas agregar las VMs al grupo de backend del balanceador de carga si es necesario.
|
||||||
|
|
||||||
### Logging and Monitoring
|
### Registro de Eventos y Monitoreo
|
||||||
|
|
||||||
1. Check status for NGINX service using the below command:
|
1. Comprueba el estado del servicio NGINX utilizando el siguiente comando:
|
||||||
|
|
||||||
```console
|
```console
|
||||||
sudo systemctl status nginx
|
sudo systemctl status nginx
|
||||||
```
|
```
|
||||||
|
|
||||||
2. Logging and monitoring for the servers are available at:
|
2. El registro de eventos y el monitoreo de los servidores están disponibles en:
|
||||||
|
|
||||||
> <h3 align="center"><a href='https://amplify.nginx.com' _target='blank'>https://amplify.nginx.com</a></h3>
|
> <h3 align="center"><a href='https://amplify.nginx.com' _target='blank'>https://amplify.nginx.com</a></h3>
|
||||||
### Updating Instances (Maintenance)
|
### Actualización de las Instancias (Mantenimiento)
|
||||||
|
|
||||||
Config changes to our NGINX instances are maintained on GitHub, these should be deployed on each instance like so:
|
Los cambios en la configuración de nuestras instancias NGINX son mantenidos en GitHub, y se deben implementar en cada instancia de la siguiente manera:
|
||||||
|
|
||||||
1. SSH into the instance and enter sudo
|
1. SSH en la instancia y entra en modo sudo
|
||||||
|
|
||||||
```console
|
```console
|
||||||
sudo su
|
sudo su
|
||||||
```
|
```
|
||||||
|
|
||||||
2. Get the latest config code.
|
2. Obtén el código de configuración más reciente.
|
||||||
|
|
||||||
```console
|
```console
|
||||||
cd /etc/nginx
|
cd /etc/nginx
|
||||||
@ -505,28 +505,28 @@ git fetch --all --prune
|
|||||||
git reset --hard origin/master
|
git reset --hard origin/master
|
||||||
```
|
```
|
||||||
|
|
||||||
3. Test and reload the config [with Signals](https://docs.nginx.com/nginx/admin-guide/basic-functionality/runtime-control/#controlling-nginx).
|
3. Prueba y recarga la configuración [con Signals](https://docs.nginx.com/nginx/admin-guide/basic-functionality/runtime-control/#controlling-nginx).
|
||||||
|
|
||||||
```console
|
```console
|
||||||
nginx -t
|
nginx -t
|
||||||
nginx -s reload
|
nginx -s reload
|
||||||
```
|
```
|
||||||
|
|
||||||
## Work on API Instances
|
## Trabajar en Instancias del API
|
||||||
|
|
||||||
1. Install build tools for node binaries (`node-gyp`) etc.
|
1. Instala las herramientas de compilación para archivos binarios de Node (`node-gyp`) etc.
|
||||||
|
|
||||||
```console
|
```console
|
||||||
sudo apt install build-essential
|
sudo apt install build-essential
|
||||||
```
|
```
|
||||||
|
|
||||||
### First Install
|
### Primera Instalación
|
||||||
|
|
||||||
Provisioning VMs with the Code
|
Aprovisionamiento de las VMs con el código
|
||||||
|
|
||||||
1. Install Node LTS.
|
1. Instala Node LTS.
|
||||||
|
|
||||||
2. Update `npm` and install PM2 and setup logrotate and startup on boot
|
2. Actualiza `npm`, instala PM2, configura logrotate e inícialo en el arranque
|
||||||
|
|
||||||
```console
|
```console
|
||||||
npm i -g npm
|
npm i -g npm
|
||||||
@ -535,38 +535,38 @@ Provisioning VMs with the Code
|
|||||||
pm2 startup
|
pm2 startup
|
||||||
```
|
```
|
||||||
|
|
||||||
3. Clone freeCodeCamp, setup env and keys.
|
3. Clona freeCodeCamp, configura las variables de entorno y las llaves.
|
||||||
|
|
||||||
```console
|
```console
|
||||||
git clone https://github.com/freeCodeCamp/freeCodeCamp.git
|
git clone https://github.com/freeCodeCamp/freeCodeCamp.git
|
||||||
cd freeCodeCamp
|
cd freeCodeCamp
|
||||||
git checkout production-current # or any other branch to be deployed
|
git checkout production-current # o cualquier otra rama a desplegar
|
||||||
```
|
```
|
||||||
|
|
||||||
4. Create the `.env` from the secure credentials storage.
|
4. Crea el archivo `.env` desde el almacenamiento de credenciales seguras.
|
||||||
|
|
||||||
5. Create the `google-credentials.json` from the secure credentials storage.
|
5. Crea el archivo `google-credentials.json` desde el almacenamiento de credenciales seguras.
|
||||||
|
|
||||||
6. Install dependencies
|
6. Instala las dependencias
|
||||||
|
|
||||||
```console
|
```console
|
||||||
npm ci
|
npm ci
|
||||||
```
|
```
|
||||||
|
|
||||||
7. Build the server
|
7. Construye el servidor
|
||||||
|
|
||||||
```console
|
```console
|
||||||
npm run ensure-env && npm run build:server
|
npm run ensure-env && npm run build:server
|
||||||
```
|
```
|
||||||
|
|
||||||
8. Start Instances
|
8. Inicia las Instancias
|
||||||
|
|
||||||
```console
|
```console
|
||||||
cd api-server
|
cd api-server
|
||||||
pm2 start production-start.js -i max --max-memory-restart 600M --name org
|
pm2 start production-start.js -i max --max-memory-restart 600M --name org
|
||||||
```
|
```
|
||||||
|
|
||||||
### Logging and Monitoring
|
### Registro de Eventos y Monitoreo
|
||||||
|
|
||||||
```console
|
```console
|
||||||
pm2 logs
|
pm2 logs
|
||||||
@ -576,61 +576,61 @@ pm2 logs
|
|||||||
pm2 monit
|
pm2 monit
|
||||||
```
|
```
|
||||||
|
|
||||||
### Updating Instances (Maintenance)
|
### Actualización de las Instancias (Mantenimiento)
|
||||||
|
|
||||||
Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables.
|
Los cambios en el código deben desplegarse en las instancias del API cada cierto tiempo. Esto puede ser una actualización continua o una actualización manual. La última es esencial al cambiar dependencias o al agregar variables de entorno.
|
||||||
|
|
||||||
> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs.
|
> [!DANGER] Los flujos automáticos no están manejando actualizaciones de dependencias en el momento. Necesitamos realizar una actualización manual antes de que se ejecute cualquier flujo de despliegue.
|
||||||
|
|
||||||
#### 1. Manual Updates - Used for updating dependencies, env variables.
|
#### 1. Actualizaciones Manuales - Utilizadas para actualizar dependencias, variables de entorno.
|
||||||
|
|
||||||
1. Stop all instances
|
1. Detén todas las instancias
|
||||||
|
|
||||||
```console
|
```console
|
||||||
pm2 stop all
|
pm2 stop all
|
||||||
```
|
```
|
||||||
|
|
||||||
2. Install dependencies
|
2. Instala las dependencias
|
||||||
|
|
||||||
```console
|
```console
|
||||||
npm ci
|
npm ci
|
||||||
```
|
```
|
||||||
|
|
||||||
3. Build the server
|
3. Construye el servidor
|
||||||
|
|
||||||
```console
|
```console
|
||||||
npm run ensure-env && npm run build:server
|
npm run ensure-env && npm run build:server
|
||||||
```
|
```
|
||||||
|
|
||||||
4. Start Instances
|
4. Inicia las Instancias
|
||||||
|
|
||||||
```console
|
```console
|
||||||
pm2 start all --update-env && pm2 logs
|
pm2 start all --update-env && pm2 logs
|
||||||
```
|
```
|
||||||
|
|
||||||
#### 2. Rolling updates - Used for logical changes to code.
|
#### 2. Actualizaciones Continuas - Utilizadas para cambios lógicos en el código.
|
||||||
|
|
||||||
```console
|
```console
|
||||||
pm2 reload all --update-env && pm2 logs
|
pm2 reload all --update-env && pm2 logs
|
||||||
```
|
```
|
||||||
|
|
||||||
> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation.
|
> [!NOTE] Estamos manejando las actualizaciones continuas de código, lógica, mediante flujos (pipelines). No deberías tener que ejecutar estos comandos. Están aquí para documentación.
|
||||||
|
|
||||||
## Work on Client Instances
|
## Trabajar en Instancias de Cliente
|
||||||
|
|
||||||
1. Install build tools for node binaries (`node-gyp`) etc.
|
1. Instala las herramientas de compilación para archivos binarios de Node (`node-gyp`), etc.
|
||||||
|
|
||||||
```console
|
```console
|
||||||
sudo apt install build-essential
|
sudo apt install build-essential
|
||||||
```
|
```
|
||||||
|
|
||||||
### First Install
|
### Primera Instalación
|
||||||
|
|
||||||
Provisioning VMs with the Code
|
Aprovisionamiento de las VMs con el código
|
||||||
|
|
||||||
1. Install Node LTS.
|
1. Instala Node LTS.
|
||||||
|
|
||||||
2. Update `npm` and install PM2 and setup logrotate and startup on boot
|
2. Actualiza `npm`, instala PM2, configura logrotate e inícialo en el arranque
|
||||||
|
|
||||||
```console
|
```console
|
||||||
npm i -g npm
|
npm i -g npm
|
||||||
@ -640,7 +640,7 @@ Provisioning VMs with the Code
|
|||||||
pm2 startup
|
pm2 startup
|
||||||
```
|
```
|
||||||
|
|
||||||
3. Clone client config, setup env and keys.
|
3. Clona la configuración del cliente, configura las variables de entorno y las claves.
|
||||||
|
|
||||||
```console
|
```console
|
||||||
git clone https://github.com/freeCodeCamp/client-config.git client
|
git clone https://github.com/freeCodeCamp/client-config.git client
|
||||||
@ -652,9 +652,9 @@ Provisioning VMs with the Code
|
|||||||
cd client
|
cd client
|
||||||
```
|
```
|
||||||
|
|
||||||
Start placeholder instances for the web client, these will be updated with artifacts from the Azure pipline.
|
Inicia las instancias de marcador para el cliente web, estas se actualizarán con artefactos del flujo de Azure.
|
||||||
|
|
||||||
> Todo: This setup needs to move to S3 or Azure Blob storage
|
> Todo: Esta configuración debe moverse a S3 o Azure Blob Storage
|
||||||
>
|
>
|
||||||
> ```console
|
> ```console
|
||||||
echo "serve -c ../../serve.json www -p 50505" >> client-start-primary.sh
|
echo "serve -c ../../serve.json www -p 50505" >> client-start-primary.sh
|
||||||
@ -667,7 +667,7 @@ Provisioning VMs with the Code
|
|||||||
pm2 start ./client-start-secondary.sh --name client-secondary
|
pm2 start ./client-start-secondary.sh --name client-secondary
|
||||||
```
|
```
|
||||||
|
|
||||||
### Logging and Monitoring
|
### Registro de Eventos y Monitoreo
|
||||||
|
|
||||||
```console
|
```console
|
||||||
pm2 logs
|
pm2 logs
|
||||||
@ -677,32 +677,32 @@ pm2 logs
|
|||||||
pm2 monit
|
pm2 monit
|
||||||
```
|
```
|
||||||
|
|
||||||
### Updating Instances (Maintenance)
|
### Actualización de las Instancias (Mantenimiento)
|
||||||
|
|
||||||
Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding enviroment variables.
|
Los cambios de código deben desplegarse en las instancias de API cada cierto tiempo. Esto puede ser una actualización continua o una actualización manual. La última es esencial al cambiar dependencias o al agregar variables de entorno.
|
||||||
|
|
||||||
> [!DANGER] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs.
|
> [!DANGER] Los flujos automáticos no están manejando actualizaciones de dependencias en el momento. Necesitamos realizar una actualización manual antes de que se ejecute cualquier flujo de despliegue.
|
||||||
|
|
||||||
#### 1. Manual Updates - Used for updating dependencies, env variables.
|
#### 1. Actualizaciones Manuales - Utilizadas para actualizar dependencias, variables de entorno.
|
||||||
|
|
||||||
1. Stop all instances
|
1. Detén todas las instancias
|
||||||
|
|
||||||
```console
|
```console
|
||||||
pm2 stop all
|
pm2 stop all
|
||||||
```
|
```
|
||||||
|
|
||||||
2. Install or update dependencies
|
2. Instala o actualiza las dependencias
|
||||||
|
|
||||||
3. Start Instances
|
3. Inicia las Instancias
|
||||||
|
|
||||||
```console
|
```console
|
||||||
pm2 start all --update-env && pm2 logs
|
pm2 start all --update-env && pm2 logs
|
||||||
```
|
```
|
||||||
|
|
||||||
#### 2. Rolling updates - Used for logical changes to code.
|
#### 2. Actualizaciones Continuas - Utilizadas para cambios lógicos en el código.
|
||||||
|
|
||||||
```console
|
```console
|
||||||
pm2 reload all --update-env && pm2 logs
|
pm2 reload all --update-env && pm2 logs
|
||||||
```
|
```
|
||||||
|
|
||||||
> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation.
|
> [!NOTE] Estamos manejando las actualizaciones continuas de código, lógica, mediante flujos (pipelines). No deberías tener que ejecutar estos comandos. Están aquí para documentación.
|
||||||
|
@ -1,67 +1,67 @@
|
|||||||
> **Note:** This is an **optional** step and is required only when working with email workflows
|
> **Nota:** Este es un **paso opcional** y es necesario solo cuando se trabaja con flujos de trabajo de correo electrónico
|
||||||
|
|
||||||
## Introduction
|
## Introducción
|
||||||
|
|
||||||
Some email workflows, like updating a user's email, requires the back-end api-server to send outgoing emails. An alternative to using an email service provider to send actual email messages, Mailhog is a developer tool for email testing that will catch the email messages sent by your freeCodeCamp instance.
|
Algunos flujos de trabajo de correo electrónico, como actualizar el correo electrónico de un usuario, requiere del servidor API en back-end para enviar correos salientes. Una alternativa al uso de un proveedor de correo electrónico para enviar mensajes de correo reales, es Mailhog, una herramienta de desarrollo para pruebas por correo electrónico que captará los mensajes de correo electrónico enviados por tu instancia de freeCodeCamp.
|
||||||
|
|
||||||
## Installing MailHog
|
## Instalando MailHog
|
||||||
|
|
||||||
MailHog can be installed on macOS, Windows and Linux.
|
MailHog puede instalarse en macOS, Windows y Linux.
|
||||||
|
|
||||||
- [Introduction](#introduction)
|
- [Introducción](#introduction)
|
||||||
- [Installing MailHog](#installing-mailhog)
|
- [Instalando MailHog](#installing-mailhog)
|
||||||
- [Installing MailHog on macOS](#installing-mailhog-on-macos)
|
- [Instalando MailHog en macOS](#installing-mailhog-on-macos)
|
||||||
- [Installing MailHog on Windows](#installing-mailhog-on-windows)
|
- [Instalando MailHog en Windows](#installing-mailhog-on-windows)
|
||||||
- [Installing MailHog on Linux](#installing-mailhog-on-linux)
|
- [Instalando MailHog en Linux](#installing-mailhog-on-linux)
|
||||||
- [Using MailHog](#using-mailhog)
|
- [Usando MailHog](#using-mailhog)
|
||||||
- [Useful Links](#useful-links)
|
- [Enlaces útiles](#useful-links)
|
||||||
|
|
||||||
### Installing MailHog on macOS
|
### Instalando MailHog en macOS
|
||||||
|
|
||||||
Install MailHog on macOS with [Homebrew](https://brew.sh/):
|
Instala MailHog en macOS con [Homebrew](https://brew.sh/):
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
brew install mailhog
|
brew install mailhog
|
||||||
brew services start mailhog
|
brew services start mailhog
|
||||||
```
|
```
|
||||||
|
|
||||||
The above commands will start a mailhog service in the background.
|
Los comandos anteriores iniciarán un servicio de mailhog en segundo plano.
|
||||||
|
|
||||||
When the installation completes, you can start [using MailHog](#using-mailhog).
|
Cuando termine la instalación, puedes empezar [a usar MailHog](#using-mailhog).
|
||||||
|
|
||||||
### Installing MailHog on Windows
|
### Instalando MailHog en Windows
|
||||||
|
|
||||||
Download the latest version of MailHog from [MailHog's official repository](https://github.com/mailhog/MailHog/releases). Locate and click on the link for your Windows version (32 or 64 bit) and a .exe file will be downloaded to your computer.
|
Descargue la última versión de MailHog desde el [repositorio oficial de MailHog](https://github.com/mailhog/MailHog/releases). Localice y haga clic en el enlace para su versión de Windows (32 o 64 bits) y se descargará un archivo .exe a su equipo.
|
||||||
|
|
||||||
When the download completes, click to open the file. A Windows firewall notification may appear, requesting access permission for MailHog. A standard Windows command line prompt will open where MailHog will be running once firewall access is granted.
|
Cuando termine la descarga, haga clic para abrir el archivo. Puede aparecer una notificación de cortafuegos de Windows, solicitando permiso de acceso para MailHog. Una línea de comandos estándar de Windows se abrirá donde MailHog se ejecutará una vez que se conceda acceso al cortafuegos.
|
||||||
|
|
||||||
Close MailHog by closing the command prompt window. To start MailHog again, click on the MailHog executable (.exe) file that was downloaded initially - it is not necessary to download a new MailHog installation file.
|
Finalice MailHog cerrando la ventana del intérprete de comandos. Para iniciar MailHog de nuevo, haga clic en el archivo ejecutable de MailHog (.exe) que se descargó inicialmente - no es necesario descargar de nuevo el archivo de instalación de MailHog.
|
||||||
|
|
||||||
Start [using MailHog](#using-mailhog).
|
Empieza [a usar MailHog](#using-mailhog).
|
||||||
|
|
||||||
### Installing MailHog on Linux
|
### Instalando MailHog en Linux
|
||||||
|
|
||||||
First, install [Go](https://golang.org).
|
Primero, instala [Go](https://golang.org).
|
||||||
|
|
||||||
Run the following commands to install GO on Debian-based systems like Ubuntu and Linux Mint.
|
Ejecute los siguientes comandos para instalar GO en sistemas basados en Debian como Ubuntu y Linux Mint.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
sudo apt-get install golang
|
sudo apt-get install golang
|
||||||
```
|
```
|
||||||
|
|
||||||
Run the following commands to install GO on RPM-based systems like CentOS, Fedora, Red Hat Linux, etc.
|
Ejecute los siguientes comandos para instalar GO en sistemas basados en RPM como CentOS, Fedora, Red Hat Linux, etc.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
sudo dnf install golang
|
sudo dnf install golang
|
||||||
```
|
```
|
||||||
|
|
||||||
Alternatively, run the following commands to install GO.
|
Alternativamente, ejecute los siguientes comandos para instalar GO.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
sudo yum install golang
|
sudo yum install golang
|
||||||
```
|
```
|
||||||
|
|
||||||
Now set the path for Go with the following commands.
|
Ahora establezca la ruta para Go con los siguientes comandos.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
echo "export GOPATH=$HOME/go" >> ~/.profile
|
echo "export GOPATH=$HOME/go" >> ~/.profile
|
||||||
@ -69,7 +69,7 @@ echo 'export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin' >> ~/.profile
|
|||||||
source ~/.profile
|
source ~/.profile
|
||||||
```
|
```
|
||||||
|
|
||||||
Finally, enter the commands below to install and run MailHog.
|
Finalmente, introduzca los siguientes comandos para instalar y ejecutar MailHog.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
go get github.com/mailhog/MailHog
|
go get github.com/mailhog/MailHog
|
||||||
@ -77,24 +77,24 @@ sudo cp /home/$(whoami)/go/bin/MailHog /usr/local/bin/mailhog
|
|||||||
mailhog
|
mailhog
|
||||||
```
|
```
|
||||||
|
|
||||||
Start [using MailHog](#using-mailhog).
|
Empieza [a usar MailHog](#using-mailhog).
|
||||||
|
|
||||||
## Using MailHog
|
## Usando MailHog
|
||||||
|
|
||||||
Open a new browser tab or window and navigate to [http://localhost:8025](http://localhost:8025) to open your MailHog inbox when the MailHog installation has completed and MailHog is running. The inbox will appear similar to the screen shot below.
|
Abra una nueva pestaña o ventana del navegador y vaya a [http://localhost:8025](http://localhost:8025) para abrir su bandeja de entrada de MailHog cuando se haya completado la instalación y éste se encuentre funcionando. La bandeja de entrada aparecerá similar a la captura de pantalla de abajo.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
Emails sent by your freeCodeCamp installation will appear as below
|
Los correos enviados por tu instalación de freeCodeCamp aparecerán como se presenta a continuación
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
Two tabs that allow you to view either plain text or source content will be available when you open a given email. Ensure that the plain text tab is selected as below.
|
Dos pestañas que le permiten ver texto plano o contenido fuente estarán disponibles cuando abra un determinado correo electrónico. Asegúrese de que la pestaña de texto plano está seleccionada como abajo.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
All links in the email should be clickable and resolve to their URL.
|
Todos los enlaces en el correo electrónico deben poder ser pulsados y resueltos a su URL.
|
||||||
|
|
||||||
## Useful Links
|
## Enlaces útiles
|
||||||
|
|
||||||
- Check out the [MailHog](https://github.com/mailhog/MailHog) repository for further information related to MailHog. Additional information is also available regarding custom MailHog configurations.
|
- Revisa el repositorio de [MailHog](https://github.com/mailhog/MailHog) para más información relacionada con MailHog. También está disponible información adicional sobre configuraciones personalizadas de MailHog.
|
||||||
|
@ -1,164 +1,164 @@
|
|||||||
# How to help with video challenges
|
# Cómo ayudar con los desafíos de vídeo
|
||||||
|
|
||||||
Video challenges are a new type of challenge in the freeCodeCamp curriculum.
|
Los retos en vídeo son un nuevo tipo de desafío en el currículo de freeCodeCamp.
|
||||||
|
|
||||||
A video challenge is a small section of a full-length video course on a particular topic. A video challenge page embeds a YouTube video. Each challenge page has a single multiple-choice question related to the video. A user must answer the question correctly before moving on the the next video challenge in the course.
|
Un desafío de vídeo es una pequeña sección de un curso de vídeo completo sobre un tema en particular. Una página de desafío de vídeo inserta un vídeo de YouTube. Cada página de desafío tiene una única pregunta de selección múltiple relacionada con el vídeo. El usuario debe responder correctamente a la pregunta antes de pasar al siguiente desafío de vídeo en el curso.
|
||||||
|
|
||||||
The video challenge pages are created by members of the freeCodeCamp team. YouTube videos are also uploaded by members of the freeCodeCamp team. Many of the video challenges do not yet have questions associated with them.
|
Las páginas de desafío de vídeo son creadas por miembros del equipo freeCodeCamp. Los vídeos de YouTube también son subidos por miembros del equipo freeCodeCamp. Muchos de los desafíos de video todavía no tienen preguntas asociadas con ellos.
|
||||||
|
|
||||||
You can help by creating multiple choice questions related to video sections and adding the questions to the markdown files for the video challenges.
|
Puedes ayudar creando preguntas de selección múltiple relacionadas con las secciones de vídeo y añadiendo las preguntas a los archivos de markdown para los desafíos de video.
|
||||||
|
|
||||||
|
|
||||||
## Challenge Template
|
## Plantilla de desafío
|
||||||
|
|
||||||
Below is a template of what the challenge markdown files look like.
|
A continuación se muestra una plantilla de cómo se ven los archivos markdown de los desafíos.
|
||||||
|
|
||||||
````md
|
````md
|
||||||
---
|
---
|
||||||
id: Unique identifier (alphanumerical, MongoDB_id)
|
id: Identificador Único (alfanumérico, MongoDB_id)
|
||||||
title: Challenge Title
|
title: Titulo del Desafío
|
||||||
challengeType: 11
|
challengeType: 11
|
||||||
videoId: 'YouTube videoId for video challenge'
|
videoId: 'videoId de Youtube para el desafío de video'
|
||||||
---
|
---
|
||||||
|
|
||||||
## Description
|
## Descripción
|
||||||
|
|
||||||
<section id='description'>
|
<section id='description'>
|
||||||
An optional description with helpful information related to the video.
|
Descripción opcional con información util relacionada con el video.
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
## Tests
|
## Pruebas
|
||||||
|
|
||||||
<section id='tests'>
|
<section id='tests'>
|
||||||
|
|
||||||
```yml
|
```yml
|
||||||
question:
|
question:
|
||||||
text: 'Question'
|
text: 'Pregunta'
|
||||||
answers:
|
answers:
|
||||||
- 'Answer One'
|
- 'Respuesta Uno'
|
||||||
- 'Answer Two'
|
- 'Respuesta Dos'
|
||||||
- 'Answer Three'
|
- 'Respuesta Tres'
|
||||||
solution: 3
|
solution: 3
|
||||||
````
|
````
|
||||||
|
|
||||||
</section>
|
</section>
|
||||||
````
|
````
|
||||||
|
|
||||||
## Creating questions for video challenges
|
## Creando preguntas para los desafíos de video
|
||||||
|
|
||||||
### Access the video challenge markdown files
|
### Accede a los archivos markdown del desafío de video
|
||||||
|
|
||||||
You can find the markdown files for video challenges at the following locations in the curriculum:
|
Puedes encontrar los archivos markdown de los desafíos de video en las siguientes ubicaciones del currículum
|
||||||
|
|
||||||
- [Data Analysis with Python Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/08-data-analysis-with-python/data-analysis-with-python-course)
|
- [Curso de análisis de datos con Python](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/08-data-analysis-with-python/data-analysis-with-python-course)
|
||||||
- [TensorFlow 2.0 Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/11-machine-learning-with-python/tensorflow)
|
- [Curso de TensorFlow 2.0](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/11-machine-learning-with-python/tensorflow)
|
||||||
- [Numpy Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/08-data-analysis-with-python/numpy)
|
- [Curso de Numpy](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/08-data-analysis-with-python/numpy)
|
||||||
- [How Neural Networks Work Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/11-machine-learning-with-python/how-neural-networks-work)
|
- [Curso de como funcionan las redes neuronales](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/11-machine-learning-with-python/how-neural-networks-work)
|
||||||
|
|
||||||
Pick a challenge markdown file from the options above.
|
Elige un archivo markdown de las opciones anteriores.
|
||||||
|
|
||||||
### Skim through the video associated with the challenge and create a mutiple choice question
|
### Mire superficialmente el video asociado con el desafío y cree una pregunta de opción múltiple
|
||||||
|
|
||||||
First, find the videoId.
|
Primero, encuentre el videoId.
|
||||||
|
|
||||||
For example, in the following code from the header of a video challenge markdown file, the videoId is "nVAaxZ34khk". On GitHub, the information should be layed out in a table format.
|
Por ejemplo, en el siguiente código de la cabecera de un archivo markdown de desafío de video, el videoId es "nVAaxZ34khk". En GitHub, la información debe ser puesta en un formato de tabla.
|
||||||
````
|
````
|
||||||
---
|
---
|
||||||
id: 5e9a093a74c4063ca6f7c14d title: Data Analysis Example A challengeType: 11
|
id: 5e9a093a74c4063ca6f7c14d title: Análisis de datos Ejemplo A challengeType: 11
|
||||||
videoId: nVAaxZ34khk
|
videoId: nVAaxZ34khk
|
||||||
---
|
---
|
||||||
```
|
```
|
||||||
|
|
||||||
Next, access the YouTube video with that videoId. The url for the video will be:
|
A continuación, acceda al vídeo de YouTube con ese videoId. La url del video será:
|
||||||
https://www.youtube.com/watch?v=[videoId] (add videoId to the URL without square brackets)
|
https://www.youtube. om/watch?v=[videoId] (añadir videoId a la URL sin corchetes cuadrados)
|
||||||
|
|
||||||
In the example above, the url is https://www.youtube.com/watch?v=nVAaxZ34khk
|
En el ejemplo anterior, la url es https://www. outube.com/watch?v=nVAaxZ34khk
|
||||||
|
|
||||||
Skim the YouTube video with that videoId and think of a multiple choice question based on the content of the video.
|
Mira superficialmente el vídeo de YouTube con ese videoId y piensa en una pregunta de selección múltiple basada en el contenido del vídeo.
|
||||||
|
|
||||||
### Add the question to the markdown file
|
### Añade la pregunta al archivo markdown
|
||||||
|
|
||||||
You can add the question locally or directly throught the GitHub interface. To add the question locally, you need to [set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md). You can also find the file on GitHub and click the edit button to add the question right in your browser.
|
Puedes añadir la pregunta localmente o directamente a través de la interfaz de GitHub. Para añadir la pregunta localmente, necesitas [configurar freeCodeCamp localmente](how-to-setup-freecodecamp-locally.md). También puede encontrar el archivo en GitHub y hacer clic en el botón Editar para añadir la pregunta directamente en su navegador.
|
||||||
|
|
||||||
If a question has not yet been added to a particular video challenge, it will have the following default question:
|
Si aún no se ha añadido una pregunta a un desafío de vídeo en particular, tendrá la siguiente pregunta predeterminada:
|
||||||
|
|
||||||
```yml
|
```yml
|
||||||
question:
|
question:
|
||||||
text: |
|
text: |
|
||||||
Question
|
Pregunta
|
||||||
answers:
|
answers:
|
||||||
- |
|
- |
|
||||||
one
|
una
|
||||||
- |
|
- |
|
||||||
two
|
dos
|
||||||
- |
|
- |
|
||||||
three
|
tres
|
||||||
solution: 3
|
solution: 3
|
||||||
```
|
```
|
||||||
|
|
||||||
Update the word “Question” with your question. Update the “one”, “two”, and “three” with the possible answers. Make sure to update the solution number with which answer is correct. You can add more possible answers using the same format. The question and answers can be surrounded with quotation marks.
|
Actualiza la palabra "Pregunta" con tu pregunta. Actualiza “una”, “dos”, y “tres” con las posibles respuestas. Asegúrate de actualizar el número de la solución con el que corresponde a la respuesta correcta. Puede añadir más respuestas posibles usando el mismo formato. La pregunta y las respuestas pueden estar rodeadas de comillas.
|
||||||
|
|
||||||
#### Use markdown to format your question
|
#### Utiliza markdown para formatear tu pregunta
|
||||||
|
|
||||||
The text in the question is parsed as markdown. The simplest way to ensure that it is formatted correctly is to start the question with `text: |`, like this:
|
El texto de la pregunta se analiza como markdown. La forma más simple de asegurarse de que está formateado correctamente es iniciar la pregunta con `texto: |`, así:
|
||||||
|
|
||||||
```yml
|
```yml
|
||||||
question:
|
question:
|
||||||
text: |
|
text: |
|
||||||
Question
|
Pregunta
|
||||||
```
|
```
|
||||||
|
|
||||||
Then you need to make sure that your question is on a new line and indented one level more than `text: |`.
|
Entonces debes asegurarte de que tu pregunta está en una nueva línea e indentada un nivel mas que `texto: |`.
|
||||||
|
|
||||||
The same approach can be used for the answers, so the entire question becomes
|
El mismo enfoque se puede utilizar para las respuestas, de modo que toda la pregunta se convierte
|
||||||
|
|
||||||
```yml
|
```yml
|
||||||
question:
|
question:
|
||||||
text: |
|
text: |
|
||||||
Question
|
Pregunta
|
||||||
answers:
|
answers:
|
||||||
- |
|
- |
|
||||||
First answer
|
Primera Respuesta
|
||||||
- |
|
- |
|
||||||
Second
|
Segunda
|
||||||
- |
|
- |
|
||||||
Third
|
Tercera
|
||||||
solution: 2
|
solution: 2
|
||||||
```
|
```
|
||||||
|
|
||||||
Make sure each answer is plausible but there is only one correct answer.
|
Asegúrate de que cada respuesta sea plausible, pero sólo hay una respuesta correcta.
|
||||||
|
|
||||||
#### Use of HTML
|
#### Uso de HTML
|
||||||
|
|
||||||
Questions and answers can contain certain HTML tags like `<br>` for a new line. HTML tags should be used sparingly, when questions cannot be expressed without them.
|
Las preguntas y respuestas pueden contener ciertas etiquetas HTML como `<br>` para una nueva línea. Las etiquetas HTML deben ser usadas de forma poco frecuente, cuando las preguntas no pueden ser expresadas sin ellas.
|
||||||
|
|
||||||
### Question examples
|
### Ejemplos de preguntas
|
||||||
|
|
||||||
#### Examples without HTML
|
#### Ejemplos sin HTML
|
||||||
|
|
||||||
````yml
|
````yml
|
||||||
question:
|
question:
|
||||||
text: |
|
text: |
|
||||||
What does this JavaScript code log to the console?
|
¿Que registra este código JavaScript en la consola?
|
||||||
```js
|
```js
|
||||||
console.log('hello world');
|
console.log('hola mundo');
|
||||||
````
|
````
|
||||||
|
|
||||||
|
|
||||||
Select an answer!
|
¡Selecciona una respuesta!
|
||||||
answers:
|
answers:
|
||||||
- | hello *world*
|
- | hola *mundo*
|
||||||
- | **hello** world
|
- | **hola** mundo
|
||||||
- | hello world solution: 3
|
- | hola mundo solution: 3
|
||||||
````
|
````
|
||||||
|
|
||||||
````yml
|
````yml
|
||||||
question:
|
pregunta:
|
||||||
text: |
|
text: |
|
||||||
What will print out after running this code:
|
¿Qué se imprimirá después de ejecutar este código:
|
||||||
```py
|
```py
|
||||||
width = 15
|
width = 15
|
||||||
height = 12.0
|
height = 12.
|
||||||
print(height/3)
|
print(height/3)
|
||||||
````
|
````
|
||||||
answers:
|
answers:
|
||||||
@ -169,31 +169,31 @@ question:
|
|||||||
- | 5 solution: 3
|
- | 5 solution: 3
|
||||||
````
|
````
|
||||||
|
|
||||||
#### Example with HTML
|
#### Ejemplo con HTML
|
||||||
|
|
||||||
```yml
|
```yml
|
||||||
question:
|
question:
|
||||||
text: |
|
text: |
|
||||||
What will print out after running this code:
|
¿Qué se imprimirá después de ejecutar este código:
|
||||||
<pre><code>width = 15<br>height = 12.0<br>print(height/3)<code></pre>
|
<pre><code>width = 15<br>height = 12.<br>print(height/3)<code></pre>
|
||||||
answers:
|
answers:
|
||||||
- |
|
- |
|
||||||
39
|
39
|
||||||
- |
|
- |
|
||||||
4
|
4
|
||||||
- |
|
- |
|
||||||
4.0
|
4.
|
||||||
- |
|
- |
|
||||||
5.0
|
5.
|
||||||
- |
|
- |
|
||||||
5
|
5
|
||||||
solution: 3
|
solution: 3
|
||||||
````
|
````
|
||||||
|
|
||||||
The final example demonstrates that HTML can be used, but that it is not as readable as the version without it.
|
El ejemplo final demuestra que se puede usar HTML, pero que no es tan legible como la versión sin ella.
|
||||||
|
|
||||||
For more examples, you can look at the markdown files for the following video course. All the challenges already have questions: [Python for Everybody Course](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/07-scientific-computing-with-python/python-for-everybody)
|
Para más ejemplos, puede ver los archivos de markdown para el siguiente curso de vídeo. Todos los desafíos ya tienen preguntas: [Curso de Python para todos](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges/english/07-scientific-computing-with-python/python-for-everybody)
|
||||||
|
|
||||||
## Open a pull request
|
## Abrir una pull request
|
||||||
|
|
||||||
After creating one or more questions, you can commit the changes to a new branch and [open a pull request](how-to-open-a-pull-request.md).
|
Después de crear una o más preguntas, puede enviar los cambios a una nueva rama y [abrir una pull request](how-to-open-a-pull-request.md).
|
||||||
|
@ -1,121 +1,121 @@
|
|||||||
# How to open a Pull Request (PR)
|
# Cómo abrir una Pull Request (PR)
|
||||||
|
|
||||||
A pull request (PR) enables you to send changes from your fork on GitHub to freeCodeCamp.org's main repository. Once you are done making changes to the code, you can follow these guidelines to open a PR.
|
Una pull request (PR) le permite enviar cambios desde su bifurcación en GitHub al repositorio principal de freeCodeCamp.org. Una vez que haya hecho cambios en el código, puede seguir estas pautas para abrir un PR.
|
||||||
|
|
||||||
## Prepare a good PR title
|
## Prepara un buen título para tu PR
|
||||||
|
|
||||||
We recommend using [conventional title and messages](https://www.conventionalcommits.org/) for commits and pull request. The convention has the following format:
|
Recomendamos usar [titulos y mensajes convencionales](https://www.conventionalcommits.org/) para tus commits y pull request. La convención tiene el siguiente formato:
|
||||||
|
|
||||||
> `<type>([optional scope(s)]): <description>`
|
> `<type>([ámbito opcional(s)]): <description>`
|
||||||
>
|
>
|
||||||
> For example:
|
> Por ejemplo:
|
||||||
>
|
>
|
||||||
> `fix(learn): tests for the do...while loop challenge`
|
> `fix(learn): tests for the do...while loop challenge`
|
||||||
|
|
||||||
When opening a Pull Request(PR), you can use the below to determine the type, scope (optional) and description.
|
Al abrir un Pull Request(PR), puede utilizar el siguiente para determinar el tipo, alcance (opcional) y descripción.
|
||||||
|
|
||||||
**Type:**
|
**Tipo:**
|
||||||
|
|
||||||
| Type | When to select |
|
| Tipo | Cuándo seleccionar |
|
||||||
|:----- |:---------------------------------------------------------------------------- |
|
|:---------- |:------------------------------------------------------------------------------------------- |
|
||||||
| fix | Changed or updated/improved functionality, tests, verbiage of a lesson, etc. |
|
| fijar | Funciones modificadas o actualizadas/mejoradas, pruebas, verbiage de una lección, etc. |
|
||||||
| feat | Only if you are adding new functionality, tests, etc. |
|
| hazaña | Sólo si está añadiendo nuevas funcionalidades, pruebas, etc. |
|
||||||
| chore | Changes that are not related to code, tests or verbiage of a lesson. |
|
| coro | Cambios que no están relacionados con el código, las pruebas o la verborrea de una lección. |
|
||||||
| docs | Changes to `/docs` directory or the contributing guidelines, etc. |
|
| documentos | Cambios al directorio `/docs` o a las pautas de contribución, etc. |
|
||||||
|
|
||||||
**Scope:**
|
**Alcance:**
|
||||||
|
|
||||||
You can select a scope from [this list of labels](https://github.com/freeCodeCamp/freeCodeCamp/labels?q=scope).
|
Puede seleccionar un ámbito de [esta lista de etiquetas](https://github.com/freeCodeCamp/freeCodeCamp/labels?q=scope).
|
||||||
|
|
||||||
**Description:**
|
**Descripción:**
|
||||||
|
|
||||||
Keep it short (less than 30 characters) and simple, you can add more information in the PR description box and comments.
|
Manténgalo corto (menos de 30 caracteres) y simple, puede agregar más información en el cuadro de descripción de relaciones públicas y comentarios.
|
||||||
|
|
||||||
Some examples of good PRs titles would be:
|
Algunos ejemplos de buenos títulos PRs serían:
|
||||||
|
|
||||||
- `fix(a11y): improved search bar contrast`
|
- `fix(a11y): contraste mejorado en la barra de búsqueda`
|
||||||
- `feat: add more tests to html and css challenges`
|
- `feat: añadir más pruebas a challenges html y css`
|
||||||
- `fix(api,client): prevent CORS errors on form submission`
|
- `fix(api,client): evitar errores CORS en el envío de formularios`
|
||||||
- `docs(i18n): Chinese translation of local setup`
|
- `docs(i18n): Traducción al chino de la configuración local`
|
||||||
|
|
||||||
## Proposing a Pull Request
|
## Proponer una Pull Request
|
||||||
|
|
||||||
1. Once the edits have been committed, you will be prompted to create a pull request on your fork's GitHub Page.
|
1. Una vez que las ediciones hayan sido confirmadas, se le pedirá que cree un pull request en la página de GitHub de su fork.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
2. By default, all pull requests should be against the freeCodeCamp main repo, `master` branch.
|
2. Por defecto, todas las pull requests deben estar en contra del repositorio principal freeCodeCamp `master` branch.
|
||||||
|
|
||||||
Make sure that your Base Fork is set to freeCodeCamp/freeCodeCamp when raising a Pull Request.
|
Asegúrese de que su bifurcación base está configurada en freeCodeCamp/freeCodeCamp al elevar una solicitud de Pull Request.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
3. Submit the pull request from your branch to freeCodeCamp's `master` branch.
|
3. Envía el pull request de tu rama a la rama `master` de freeCodeCamp.
|
||||||
|
|
||||||
4. In the body of your PR include a more detailed summary of the changes you made and why.
|
4. En el cuerpo de sus relaciones públicas incluya un resumen más detallado de los cambios realizados y por qué.
|
||||||
|
|
||||||
- You will be presented with a pull request template. This is a checklist that you should have followed before opening the pull request.
|
- Se le presentará una plantilla de pull request. Esta es una lista de verificación que debería haber seguido antes de abrir la solicitud de pull request.
|
||||||
|
|
||||||
- Fill in the details as you see fit. This information will be reviewed and the reviewers will decide whether or not your pull request is accepted.
|
- Rellene los detalles como considere oportuno. Esta información será revisada y los revisores decidirán si su pull request es o no aceptada.
|
||||||
|
|
||||||
- If the PR is meant to address an existing GitHub Issue then, at the end of your PR's description body, use the keyword _Closes_ with the issue number to [automatically close that issue if the PR is accepted and merged](https://help.github.com/en/articles/closing-issues-using-keywords).
|
- Si el PR está pensado para abordar un problema existente de GitHub entonces, al final de el cuerpo de la descripción de su PR, use la palabra clave _Cierra_ con el número de incidencia para [cerrar automáticamente ese problema si se acepta y fusionan las relaciones públicas](https://help.github.com/en/articles/closing-issues-using-keywords).
|
||||||
|
|
||||||
> Example: `Closes #123` will close issue 123
|
> Ejemplo: `Cerrar #123` cerrará el problema 123
|
||||||
|
|
||||||
5. Indicate if you have tested on a local copy of the site or not.
|
5. Indique si ha probado en una copia local del sitio o no.
|
||||||
|
|
||||||
This is very important when making changes that are not just edits to text content like documentation or a challenge description. Examples of changes that need local testing include JavaScript, CSS, or HTML which could change the functionality or layout of a page.
|
Esto es muy importante a la hora de hacer cambios que no sean sólo ediciones al contenido de texto como la documentación o una descripción del desafío. Ejemplos de cambios que necesitan pruebas locales incluyen JavaScript, CSS o HTML que podrían cambiar la funcionalidad o el diseño de una página.
|
||||||
|
|
||||||
## Feedback on pull requests
|
## Comentarios sobre pull requests
|
||||||
|
|
||||||
> Congratulations! :tada: on making a PR and thanks a lot for taking the time to contribute.
|
> ¡Felicidades! :tada: en hacer relaciones públicas y muchas gracias por tomarse el tiempo para contribuir.
|
||||||
|
|
||||||
Our moderators will now take a look and leave you feedback. Please be patient with the fellow moderators and respect their time. All pull requests are reviewed in due course.
|
Nuestros moderadores ahora echarán un vistazo y te dejarán tus comentarios. Por favor, sea paciente con los demás moderadores y respete su tiempo. Todos los pull requests son revisados a su debido tiempo.
|
||||||
|
|
||||||
And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS).
|
Y como siempre, siéntete libre de hacer preguntas en la categoría ['Colaboradores' en nuestro foro](https://forum.freecodecamp.org/c/contributors) o [nuestro servidor de Discord](https://discord.gg/pFspAhS).
|
||||||
|
|
||||||
> [!TIP] If you are to be contributing more pull requests, we recommend you read the [making changes and syncing](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally?id=making-changes-locally) guidelines to avoid having to delete your fork.
|
> [!TIP] Si quieres contribuir con más solicitudes de extracción, te recomendamos que leas las directrices [haciendo cambios y sincronizando](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally?id=making-changes-locally) para evitar tener que borrar tu bifurcación.
|
||||||
|
|
||||||
## Conflicts on a pull request
|
## Conflicto en un pull request
|
||||||
|
|
||||||
Conflicts can arise because many contributors work on the repository, and changes can break your PR which is pending a review and merge.
|
Los conflictos pueden surgir porque muchos colaboradores trabajan en el repositorio y los cambios pueden romper su PR que está pendiente de revisión y fusión.
|
||||||
|
|
||||||
More often than not you may not require a rebase, because we squash all commits, however if a rebase is requested here is what you should do.
|
La mayoría de las veces no puede requerir una rebase, porque aplastamos todos los commits, Sin embargo, si se solicita una rebase aquí es lo que debe hacer.
|
||||||
|
|
||||||
### For usual bug fixes and features
|
### Para arreglos de errores y características habituales
|
||||||
|
|
||||||
When you are working on regular bugs and features on our development branch `master`, you are able to do a simple rebase:
|
Cuando trabajas con errores y características regulares en nuestra rama de desarrollo `master`, puedes hacer una simple rebase:
|
||||||
|
|
||||||
1. Rebase your local copy:
|
1. Reiniciar su copia local:
|
||||||
|
|
||||||
```console
|
```console
|
||||||
git checkout <pr-branch>
|
git checkout <pr-branch>
|
||||||
git pull --rebase upstream master
|
git pull --rebase upstream master
|
||||||
```
|
```
|
||||||
|
|
||||||
2. Resolve any conflicts and add / edit commits
|
2. Resolver cualquier conflicto y añadir / editar commits
|
||||||
|
|
||||||
```console
|
```console
|
||||||
# Either
|
# O bien
|
||||||
git add .
|
git add .
|
||||||
git commit -m "chore: resolve conflicts"
|
git commit -m "chore: resolve conflicts"
|
||||||
|
|
||||||
# Or
|
# o
|
||||||
git add .
|
git add .
|
||||||
git commit --amend --no-edit
|
git commit --amend --no-edit
|
||||||
```
|
```
|
||||||
|
|
||||||
3. Push back your changes to the PR
|
3. Enviar los cambios al PR
|
||||||
|
|
||||||
```console
|
```console
|
||||||
git push --force origin <pr-branch>
|
git push --force origin <pr-branch>
|
||||||
```
|
```
|
||||||
|
|
||||||
### For upcoming curriculum and features
|
### Para los próximos planes de estudios y características
|
||||||
|
|
||||||
When you are working on features for our upcoming curriculum `next-*` branches, you have do a cherry pick:
|
Cuando estás trabajando en funciones para nuestro próximo currículo `siguiente *` ramas, tienes que hacer una selección de cerezos:
|
||||||
|
|
||||||
1. Make sure your upstream comes in sync with your local:
|
1. Asegúrese de que su autor está sincronizado con su local:
|
||||||
|
|
||||||
```console
|
```console
|
||||||
git checkout master
|
git checkout master
|
||||||
@ -124,41 +124,41 @@ When you are working on features for our upcoming curriculum `next-*` branches,
|
|||||||
git reset --hard upstream/next-python-projects
|
git reset --hard upstream/next-python-projects
|
||||||
```
|
```
|
||||||
|
|
||||||
2. Take backup
|
2. Respaldar
|
||||||
|
|
||||||
a. Either delete your local branch after taking a backup (if you still have it locally):
|
a. Borra tu rama local después de realizar una copia de seguridad (si todavía la tienes localmente):
|
||||||
|
|
||||||
```console
|
```console
|
||||||
git checkout <pr-branch-name>
|
git checkout <pr-branch-name>
|
||||||
|
|
||||||
# example:
|
# ejemplo:
|
||||||
# git checkout feat/add-numpy-video-question
|
# git checkout feat/add-numpy-video-question
|
||||||
|
|
||||||
git checkout -b <backup-branch-name>
|
git checkout -b <backup-branch-name>
|
||||||
|
|
||||||
# example:
|
# ejemplo:
|
||||||
# git checkout -b backup-feat/add-numpy-video-question
|
# git checkout -b backup-feat/add-numpy-video-question
|
||||||
|
|
||||||
git branch -D <pr-branch-name>
|
git branch -D <pr-branch-name>
|
||||||
```
|
```
|
||||||
|
|
||||||
b. Or just a backup of your pr branch (if you do not have it locally):
|
b. O simplemente una copia de seguridad de su rama pr (si no la tiene localmente):
|
||||||
|
|
||||||
```console
|
```console
|
||||||
git checkout -b <backup-branch-name> origin/<pr-branch-name>
|
git checkout -b <backup-branch-name> origin/<pr-branch-name>
|
||||||
|
|
||||||
# example:
|
# ejemplo:
|
||||||
# git checkout -b backup-feat/add-numpy-video-question origin/feat/add-numpy-video-question
|
# git checkout -b backup-feat/add-numpy-video-question origin/feat/add-numpy-video-question
|
||||||
```
|
```
|
||||||
|
|
||||||
4. Start off with a clean slate:
|
4. Empezar con una pizarra limpia:
|
||||||
|
|
||||||
```console
|
```console
|
||||||
git checkout -b <pr-branch-name> next-python-projects
|
git checkout -b <pr-branch-name> next-python-projects
|
||||||
git cherry-pick <commit-hash>
|
git cherry-pick <commit-hash>
|
||||||
```
|
```
|
||||||
|
|
||||||
5. Resolve any conflicts, and cleanup, install run tests
|
5. Resuelve cualquier conflicto y limpia, instala pruebas de ejecución
|
||||||
|
|
||||||
```console
|
```console
|
||||||
npm run clean
|
npm run clean
|
||||||
@ -166,13 +166,13 @@ When you are working on features for our upcoming curriculum `next-*` branches,
|
|||||||
npm ci
|
npm ci
|
||||||
npm run test:curriculum --superblock=<superblock-name>
|
npm run test:curriculum --superblock=<superblock-name>
|
||||||
|
|
||||||
# example:
|
# ejemplo:
|
||||||
|
|
||||||
# npm run test:curriculum --superblock=python-for-everybody
|
# npm run test:curriculum --superblock=python-for-everyone
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
6. If everything looks good push back to the PR
|
6. Si todo se ve bien empuje hacia el PR
|
||||||
|
|
||||||
```console
|
```console
|
||||||
git push --force origin <pr-branch-name>
|
git push --force origin <pr-branch-name>
|
||||||
|
@ -1,169 +1,169 @@
|
|||||||
Follow these guidelines for setting up freeCodeCamp locally on your system. This is highly recommended if you want to contribute regularly.
|
Sigue estas instrucciones para configurar freeCodeCamp localmente en tu sistema. Esto es altamente recomendable si desea contribuir regularmente.
|
||||||
|
|
||||||
Some of these contribution workflows – like fixing bugs in the codebase or curriculum – need you to run freeCodeCamp locally on your computer.
|
Algunos de estos flujos de trabajo de contribución – como corregir errores en el código base o currículum – necesitan que ejecutes freeCodeCamp localmente en tu ordenador.
|
||||||
|
|
||||||
> [!TIP] If you are not interested in setting up freeCodeCamp locally, consider using Gitpod, a free online dev environment.
|
> [!TIP] Si no estás interesado en configurar freeCodeCamp localmente, considera usar Gitpod, un entorno dev en línea gratuito.
|
||||||
>
|
>
|
||||||
> [](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp)
|
> [](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp)
|
||||||
>
|
>
|
||||||
> (Starts a ready-to-code dev environment for freeCodeCamp in your browser.)
|
> (Comienza un entorno de desarrollo listo para codificar a freeCodeCamp en tu navegador.)
|
||||||
|
|
||||||
### How to prepare your local machine
|
### Cómo preparar su máquina local
|
||||||
|
|
||||||
Start by installing the prerequisite software for your operating system.
|
Comience instalando el software de requisitos previos para su sistema operativo.
|
||||||
|
|
||||||
We primarily support development on Linux and Unix-based systems. Our staff and community contributors regularly work with the codebase using tools installed on Ubuntu and macOS.
|
Apoyamos principalmente el desarrollo en sistemas basados en Linux y Unix. Nuestro personal y los colaboradores de la comunidad trabajan regularmente con el código base utilizando herramientas instaladas en Ubuntu y macOS.
|
||||||
|
|
||||||
We also support Windows 10 via WSL2, which you can prepare by [reading this guide](/how-to-setup-wsl).
|
También soportamos Windows 10 a través de WSL2, que puedes preparar [leyendo esta guía](/how-to-setup-wsl).
|
||||||
|
|
||||||
Some community members also develop on Windows 10 natively with Git for Windows (Git Bash), and other tools installed on Windows. We do not have official support for such a setup at this time, we recommend using WSL2 instead.
|
Algunos miembros de la comunidad también desarrollan en Windows 10 nativamente con Git for Windows (Git Bash), y otras herramientas instaladas en Windows. No tenemos soporte oficial para dicha configuración en este momento, así que recomendamos usar WSL2 en su lugar.
|
||||||
|
|
||||||
**Prerequisites:**
|
**Requisitos previos:**
|
||||||
|
|
||||||
| Prerequisite | Version | Notes |
|
| Prerrequisito | Versión | Notas |
|
||||||
| --------------------------------------------------------------------------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
| ----------------------------------------------------------------------------------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
||||||
| [Node.js](http://nodejs.org) | `12.x` | [LTS Schedule](https://github.com/nodejs/Release#release-schedule) |
|
| [Node.js](http://nodejs.org) | `12.x` | [Calendario LTS](https://github.com/nodejs/Release#release-schedule) |
|
||||||
| npm (comes bundled with Node) | `6.x` | Does not have LTS releases, we use the version bundled with Node LTS |
|
| npm (viene empaquetado con Node) | `6.x` | No tiene lanzamientos LTS, usamos la versión empaquetada con Node LTS |
|
||||||
| [MongoDB Community Server](https://docs.mongodb.com/manual/administration/install-community/) | `3.6` | [Release Notes](https://docs.mongodb.com/manual/release-notes/), Note: We are currently on `3.6`, an [upgrade is planned](https://github.com/freeCodeCamp/freeCodeCamp/issues/18275). |
|
| [Servidor de la comunidad MongoDB](https://docs.mongodb.com/manual/administration/install-community/) | `3.6` | [Notas de lanzamiento](https://docs.mongodb.com/manual/release-notes/), Nota: Actualmente estamos en `3.6`, una [actualización está planificada](https://github.com/freeCodeCamp/freeCodeCamp/issues/18275). |
|
||||||
|
|
||||||
> [!DANGER] If you have a different version, please install the recommended version. We can only support installation issues for recommended versions. See [troubleshooting](#troubleshooting) for details.
|
> [!DANGER] Si tienes una versión diferente, por favor instala la versión recomendada. Sólo podemos soportar problemas de instalación para las versiones recomendadas. Ver [resolución de problemas](#troubleshooting) para más detalles.
|
||||||
|
|
||||||
If Node.js is already installed on your machine, run the following commands to validate the versions:
|
Si Node.js ya está instalado en su máquina, ejecute los siguientes comandos para validar las versiones:
|
||||||
|
|
||||||
```console
|
```console
|
||||||
node -v
|
node -v
|
||||||
npm -v
|
npm -v
|
||||||
```
|
```
|
||||||
|
|
||||||
> [!TIP] We highly recommend updating to the latest stable releases of the software listed above, also known as Long Term Support (LTS) releases.
|
> [!TIP] Recomendamos encarecidamente actualizar a las últimas versiones estables del software mencionado anteriormente, también conocidas como versiones de soporte a largo plazo (LTS).
|
||||||
|
|
||||||
Once you have the prerequisites installed, you need to prepare your development environment. This is common for many development workflows, and you will only need to do this once.
|
Una vez que tenga los requisitos previos instalados, necesitará preparar su entorno de desarrollo. Esto es común para muchos flujos de trabajo de desarrollo, y sólo tendrá que hacerlo una vez.
|
||||||
|
|
||||||
**Follow these steps to get your development environment ready:**
|
**Sigue estos pasos para preparar tu entorno de desarrollo:**
|
||||||
|
|
||||||
1. Install [Git](https://git-scm.com/) or your favorite Git client, if you haven't already. Update to the latest version; the version that came bundled with your OS may be outdated.
|
1. Instala [Git](https://git-scm.com/) o tu cliente Git favorito, si aún no lo has hecho. Actualice a la última versión; la versión que viene empaquetada con su sistema operativo puede estar desactualizada.
|
||||||
|
|
||||||
2. (Optional but recommended) [Set up an SSH Key](https://help.github.com/articles/generating-an-ssh-key/) for GitHub.
|
2. (Opcional pero recomendado) [Configurar una clave SSH](https://help.github.com/articles/generating-an-ssh-key/) para GitHub.
|
||||||
|
|
||||||
3. Install a code editor of your choice.
|
3. Instale un editor de código de su elección.
|
||||||
|
|
||||||
We highly recommend using [Visual Studio Code](https://code.visualstudio.com/) or [Atom](https://atom.io/). These are great, free and open source code editors.
|
Recomendamos altamente usar [Visual Studio Code](https://code.visualstudio.com/) o [Atom](https://atom.io/). Estos son grandes editores de código libre y gratuito.
|
||||||
|
|
||||||
4. Set up linting for your code editor.
|
4. Configurar linting para su editor de código.
|
||||||
|
|
||||||
You should have [ESLint running in your editor](http://eslint.org/docs/user-guide/integrations.html), and it will highlight anything that doesn't conform to [freeCodeCamp's JavaScript Style Guide](http://forum.freecodecamp.org/t/free-code-camp-javascript-style-guide/19121).
|
Deberías tener [ESLint corriendo en tu editor](http://eslint.org/docs/user-guide/integrations.html), y resaltará cualquier cosa que no se ajuste a la [Guía de estilo JavaScript de freeCodeCamp](http://forum.freecodecamp.org/t/free-code-camp-javascript-style-guide/19121).
|
||||||
|
|
||||||
> [!TIP] Please do not ignore any linting errors. They are meant to **help** you and to ensure a clean and simple codebase.
|
> [!TIP] Por favor, no ignore ningún error de linting. Están pensados para **ayudarte** y asegurar una base de código limpia y simple.
|
||||||
|
|
||||||
## Fork the repository on GitHub
|
## Bifurcar el repositorio en GitHub
|
||||||
|
|
||||||
[Forking](https://help.github.com/articles/about-forks/) is a step where you get your own copy of freeCodeCamp's main repository (a.k.a _repo_) on GitHub.
|
[Bifurcar](https://help.github.com/articles/about-forks/) es un paso donde obtienes tu propia copia del repositorio principal de freeCodeCamp (también conocido como _repo_) en GitHub.
|
||||||
|
|
||||||
This is essential, as it allows you to work on your own copy of freeCodeCamp on GitHub, or to download (clone) your repository to work on locally. Later, you will be able to request changes to be pulled into the main repository from your fork via a pull request (PR).
|
Esto es esencial, ya que te permite trabajar en tu propia copia de freeCodeCamp en GitHub, o para descargar (clonar) su repositorio para trabajar localmente. Después, podrá solicitar cambios para que se muestren en el repositorio principal de su bifurcación (fork) a través de una pull request (PR).
|
||||||
|
|
||||||
> [!TIP] The main repository at `https://github.com/freeCodeCamp/freeCodeCamp` is often referred to as the `upstream` repository.
|
> [!TIP] El repositorio principal en `https://github.com/freeCodeCamp/freeCodeCamp` es frecuentemente conocido como el repositorio `upstream`.
|
||||||
>
|
>
|
||||||
> Your fork at `https://github.com/YOUR_USER_NAME/freeCodeCamp` is often referred to as the `origin` repository.
|
> Su bifurcación en `https://github.com/YOUR_USER_NAME/freeCodeCamp` suele referirse como el repositorio `origen`.
|
||||||
|
|
||||||
**Follow these steps to fork the `https://github.com/freeCodeCamp/freeCodeCamp` repository:**
|
**Sigue estos pasos para fork el repositorio `https://github.com/freeCodeCamp/freeCodeCamp`:**
|
||||||
|
|
||||||
1. Go to the freeCodeCamp repository on GitHub: <https://github.com/freeCodeCamp/freeCodeCamp>
|
1. Ve al repositorio freeCodeCamp en GitHub: <https://github.com/freeCodeCamp/freeCodeCamp>
|
||||||
|
|
||||||
2. Click the "Fork" Button in the upper right-hand corner of the interface ([More Details Here](https://help.github.com/articles/fork-a-repo/))
|
2. Haga clic en el botón "Fork" en la esquina superior derecha de la interfaz ([Más detalles aquí](https://help.github.com/articles/fork-a-repo/))
|
||||||
|
|
||||||
3. After the repository has been forked, you will be taken to your copy of the freeCodeCamp repository at `https://github.com/YOUR_USER_NAME/freeCodeCamp`
|
3. Después de que el repositorio haya sido bifurcado, serás redirigido a tu copia del repositorio freeCodeCamp en `https://github.com/YOUR_USER_NAME/freeCodeCamp`
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary>
|
<summary>
|
||||||
How to fork freeCodeCamp on GitHub (screenshot)
|
Cómo bifurcar freeCodeCamp en GitHub (captura de pantalla)
|
||||||
</summary>
|
</summary>
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
<img src="https://raw.githubusercontent.com/freeCodeCamp/freeCodeCamp/master/docs/images/github/how-to-fork-freeCodeCamp.gif" alt="How to fork freeCodeCamp on GitHub" />
|
<img src="https://raw.githubusercontent.com/freeCodeCamp/freeCodeCamp/master/docs/images/github/how-to-fork-freeCodeCamp.gif" alt="Cómo bifurcar freeCodeCamp en GitHub" />
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
## Clone your fork from GitHub
|
## Clona tu bifurcación desde GitHub
|
||||||
|
|
||||||
[Cloning](https://help.github.com/articles/cloning-a-repository/) is where you **download** a copy of a repository from a `remote` location that is either owned by you or by someone else. In your case, this remote location is your `fork` of freeCodeCamp's repository that should be available at `https://github.com/YOUR_USER_NAME/freeCodeCamp`.
|
[Clonando](https://help.github.com/articles/cloning-a-repository/) es donde **descarga** una copia de un repositorio desde una ubicación `remota` que es propiedad de usted o de otra persona. En su caso, esta ubicación remota es su `fork` del repositorio de freeCodeCamp que debería estar disponible en `https://github.com/YOUR_USER_NAME/freeCodeCamp`.
|
||||||
|
|
||||||
Run these commands on your local machine:
|
Ejecutar estos comandos en su máquina local:
|
||||||
|
|
||||||
1. Open a Terminal / Command Prompt / Shell in your projects directory
|
1. Abrir una Terminal / Símbolo del sistema / Shell en el directorio de proyectos
|
||||||
|
|
||||||
_i.e.: `/yourprojectsdirectory/`_
|
_i.e.e.: `/yourprojectsdirectory/`_
|
||||||
|
|
||||||
2. Clone your fork of freeCodeCamp, replacing `YOUR_USER_NAME` with your GitHub Username
|
2. Clona tu bifurcación de freeCodeCamp, reemplazando `YOUR_USER_NAME` con tu nombre de usuario de GitHub
|
||||||
|
|
||||||
```console
|
```console
|
||||||
git clone --depth=1 https://github.com/YOUR_USER_NAME/freeCodeCamp.git
|
git clone --depth=1 https://github.com/YOUR_USER_NAME/freeCodeCamp.git
|
||||||
```
|
```
|
||||||
|
|
||||||
This will download the entire freeCodeCamp repository to your projects directory.
|
Esto descargará todo el repositorio freeCodeCamp a su directorio de proyectos.
|
||||||
|
|
||||||
Note: `--depth=1` creates a shallow clone of your fork, with only the most recent history/commit.
|
Nota: `--depth=1` crea un clon superficial de tu bifurcación, con solo la historia más reciente/commit.
|
||||||
|
|
||||||
## Set up syncing from parent
|
## Configurar sincronización desde el padre
|
||||||
|
|
||||||
Now that you have downloaded a copy of your fork, you will need to set up an `upstream` remote to the parent repository.
|
Ahora que ha descargado una copia de su bifurcación, necesitará configurar un `upstream` remoto en el repositorio padre.
|
||||||
|
|
||||||
[As mentioned earlier](#fork-the-repository-on-github), the main repository is referred `upstream` repository. Your fork referred to as the `origin` repository.
|
[Como se mencionó anteriormente](#fork-the-repository-on-github), el repositorio principal es referido `repositorio upstream`. Su bifurcación conocida como repositorio de `origen`.
|
||||||
|
|
||||||
You need a reference from your local clone to the `upstream` repository in addition to the `origin` repository. This is so that you can sync changes from the main repository without the requirement of forking and cloning repeatedly.
|
Necesita una referencia de su clon local al repositorio `upstream` además del repositorio `origin`. Esto es para que pueda sincronizar los cambios desde el repositorio principal sin el requisito de bifurcar y clonar repetidamente.
|
||||||
|
|
||||||
1. Change directory to the new freeCodeCamp directory:
|
1. Cambiar directorio al nuevo directorio de freeCodeCamp:
|
||||||
|
|
||||||
```console
|
```console
|
||||||
cd freeCodeCamp
|
cd freeCodeCamp
|
||||||
```
|
```
|
||||||
|
|
||||||
2. Add a remote reference to the main freeCodeCamp repository:
|
2. Añadir una referencia remota al repositorio principal de freeCodeCamp:
|
||||||
|
|
||||||
```console
|
```console
|
||||||
git remote add upstream https://github.com/freeCodeCamp/freeCodeCamp.git
|
git remote add upstream https://github.com/freeCodeCamp/freeCodeCamp.git
|
||||||
```
|
```
|
||||||
|
|
||||||
3. Ensure the configuration looks correct:
|
3. Asegúrese de que la configuración se vea correcta:
|
||||||
|
|
||||||
```console
|
```console
|
||||||
git remote -v
|
git remote -v
|
||||||
```
|
```
|
||||||
|
|
||||||
The output should look something like below:
|
La salida debería verse algo como a continuación:
|
||||||
|
|
||||||
```console
|
```console
|
||||||
origin https://github.com/YOUR_USER_NAME/freeCodeCamp.git (fetch)
|
origin https://github.com/YOUR_USER_NAME/freeCodeCamp.git (fetch)
|
||||||
origin https://github.com/YOUR_USER_NAME/freeCodeCamp.git (push)
|
origin https://github.com/YOUR_USER_NAME/freeCodeCamp.git (push)
|
||||||
upstream https://github.com/freeCodeCamp/freeCodeCamp.git (fetch)
|
upstream https://github.com/freeCodeCamp/freeCodeCamp.git (fetch)
|
||||||
upstream https://github.com/freeCodeCamp/freeCodeCamp.git (push)
|
upstream https://github.com/freeCodeCamp/freeCodeCamp.git (push)
|
||||||
```
|
```
|
||||||
|
|
||||||
## Running freeCodeCamp locally
|
## Ejecutando freeCodeCamp localmente
|
||||||
|
|
||||||
Now that you have a local copy of freeCodeCamp, you can follow these instructions to run it locally. This will allow you to:
|
Ahora que tienes una copia local de freeCodeCamp, puedes seguir estas instrucciones para ejecutarla localmente. Esto le permitirá:
|
||||||
|
|
||||||
- Preview edits to pages as they would appear on the learning platform.
|
- Vista previa de ediciones a páginas como aparecerían en la plataforma de aprendizaje.
|
||||||
- Work on UI related issues and enhancements.
|
- Trabajar en temas y mejoras relacionados con la IU.
|
||||||
- Debug and fix issues with the application servers and client apps.
|
- Depurar y arreglar problemas con los servidores de aplicaciones y aplicaciones cliente.
|
||||||
|
|
||||||
If you do run into issues, first perform a web search for your issue and see if it has already been answered. If you cannot find a solution, please search our [GitHub issues](https://github.com/freeCodeCamp/freeCodeCamp/issues) page for a solution and report the issue if it has not yet been reported.
|
Si tiene problemas, primero realice una búsqueda web para su problema y compruebe si ya ha sido respondida. Si no encuentra una solución, por favor busque en nuestra página [GitHub issues](https://github.com/freeCodeCamp/freeCodeCamp/issues) para una solución e infórmese del problema si aún no ha sido reportado.
|
||||||
|
|
||||||
And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS).
|
Y como siempre, siéntete libre de hacer preguntas en la categoría ['Colaboradores' en nuestro foro](https://forum.freecodecamp.org/c/contributors) o [nuestro servidor de Discord](https://discord.gg/pFspAhS).
|
||||||
|
|
||||||
> [!TIP] You may skip running freeCodeCamp locally if you are simply editing files. For instance, performing a `rebase`, or resolving `merge` conflicts.
|
> [!TIP] Puedes omitir la ejecución de freeCodeCamp localmente si simplemente estás editando archivos. Por ejemplo, realizar un `rebase` o resolver conflictos `merge`.
|
||||||
>
|
>
|
||||||
> You can always return to this part of the instructions later. You should **only** skip this step if you do not need to run the apps on your machine.
|
> Siempre puede volver a esta parte de las instrucciones más tarde. Debería **saltar** este paso si no necesita ejecutar las aplicaciones en su máquina.
|
||||||
>
|
>
|
||||||
> [Skip to making changes](#making-changes-locally).
|
> [Saltar a hacer cambios](#making-changes-locally).
|
||||||
|
|
||||||
### Configuring dependencies
|
### Configurando dependencias
|
||||||
|
|
||||||
#### Step 1: Set up the environment variable file
|
#### Paso 1: Configurar el archivo de variable de entorno
|
||||||
|
|
||||||
The default API keys and environment variables are stored in the file `sample.env`. This file needs to be copied to a new file named `.env` that is accessed dynamically during the installation step.
|
Las claves de la API por defecto y las variables de entorno se almacenan en el archivo `sample.env`. El contenido de este archivo necesita ser copiado a un nuevo archivo llamado `.env` para que se acceda dinámicamente durante el paso de la instalación.
|
||||||
|
|
||||||
```console
|
```console
|
||||||
# Create a copy of the "sample.env" and name it ".env".
|
# Crear una copia de la "sample.env" y nombrarla ".env".
|
||||||
# Populate it with the necessary API keys and secrets:
|
# Completelos con las credenciales de la API necesarias:
|
||||||
|
|
||||||
# macOS / Linux
|
# macOS / Linux
|
||||||
cp sample.env .env
|
cp sample.env .env
|
||||||
@ -172,333 +172,333 @@ cp sample.env .env
|
|||||||
copy sample.env .env
|
copy sample.env .env
|
||||||
```
|
```
|
||||||
|
|
||||||
The keys in the `.env` file are _not_ required to be changed to run the app locally. You can leave the default values copied over from `sample.env` as-is.
|
Las llaves dentro del archivo `.env` _no_ requieren ser cambiadas para correr la aplicación de forma local. Puedes dejar los valores por defecto copiados desde `sample.env` tal cual.
|
||||||
|
|
||||||
> [!TIP] Keep in mind if you want to use services like Auth0 or Algolia, you'll have to acquire your own API keys for those services and edit the entries accordingly in the `.env` file.
|
> [!TIP] Ten en cuenta si quieres usar servicios como Auth0 o Algolia, tendrás que adquirir tus propias claves API para esos servicios y editar las entradas en el archivo `.env`.
|
||||||
|
|
||||||
#### Step 2: Install dependencies
|
#### Paso 2: Instalar dependencias
|
||||||
|
|
||||||
This step will install the dependencies required for the application to run:
|
Este paso instalará las dependencias necesarias para que la aplicación se ejecute:
|
||||||
|
|
||||||
```console
|
```console
|
||||||
npm ci
|
npm ci
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Step 3: Start MongoDB and seed the database
|
#### Paso 3: Iniciar MongoDB y sembrar la base de datos
|
||||||
|
|
||||||
Before you can run the application locally, you will need to start the MongoDB service.
|
Antes de que pueda ejecutar la aplicación localmente, necesitará iniciar el servicio MongoDB.
|
||||||
|
|
||||||
> [!NOTE] Unless you have MongoDB running in a setup different than the default, the URL stored as the `MONGOHQ_URL` value in the `.env` file should work fine. If you are using a custom configuration, modify this value as needed.
|
> [!NOTE] A menos que tenga MongoDB corriendo en una configuración diferente a la predeterminada, la URL almacenada como el valor `MONGOHQ_URL` en el `. el archivo nv` debería funcionar bien. Si está utilizando una configuración personalizada, modifique este valor según sea necesario.
|
||||||
|
|
||||||
Start the MongoDB server in a separate terminal:
|
Iniciar el servidor MongoDB en un terminal separado:
|
||||||
|
|
||||||
- On macOS & Ubuntu:
|
- En macOS & Ubuntu:
|
||||||
|
|
||||||
```console
|
```console
|
||||||
mongod
|
mongod
|
||||||
```
|
```
|
||||||
|
|
||||||
- On Windows, you must specify the full path to the `mongod` binary
|
- En Windows, debe especificar la ruta completa al binario `mondios`
|
||||||
|
|
||||||
```console
|
```console
|
||||||
"C:\Program Files\MongoDB\Server\3.6\bin\mongod"
|
"C:\Archivos de programa\MongoDB\Servidor\3.6\bin\mongod"
|
||||||
```
|
```
|
||||||
|
|
||||||
Make sure to replace `3.6` with the version you have installed
|
Asegúrate de reemplazar `3.6` con la versión instalada
|
||||||
|
|
||||||
> [!TIP] You can avoid having to start MongoDB every time by installing it as a background service. You can [learn more about it in their documentation for your OS](https://docs.mongodb.com/manual/administration/install-community/)
|
> [!TIP] Puedes evitar tener que iniciar MongoDB cada vez instalándolo como un servicio en segundo plano. Puede [aprender más al respecto en su documentación para su sistema operativo](https://docs.mongodb.com/manual/administration/install-community/)
|
||||||
|
|
||||||
Next, let's seed the database. In this step, we run the below command that fills the MongoDB server with some initial data sets that are required by services. These include a few schemas, among other things.
|
A continuación, vamos a sembrar la base de datos. En este paso, ejecutamos el siguiente comando que llena el servidor MongoDB con algunos conjuntos de datos iniciales que son requeridos por los servicios. Estos incluyen algunos esquemas, entre otras cosas.
|
||||||
|
|
||||||
```console
|
```console
|
||||||
npm run seed
|
npm run seed
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Step 4: Start the freeCodeCamp client application and API server
|
#### Paso 4: Iniciar la aplicación cliente freeCodeCamp y el servidor de API
|
||||||
|
|
||||||
You can now start up the API server and the client applications.
|
Ahora puede iniciar el servidor API y las aplicaciones cliente.
|
||||||
|
|
||||||
```console
|
```console
|
||||||
npm run develop
|
desarrollo de ejecución npm
|
||||||
```
|
```
|
||||||
|
|
||||||
This single command will fire up all the services, including the API server and the client applications available for you to work on.
|
Este único comando lanzará todos los servicios, incluyendo el servidor API y las aplicaciones cliente disponibles para que usted trabaje.
|
||||||
|
|
||||||
> [!NOTE] Once ready, open a web browser and **visit <http://localhost:8000>**. If the app loads, congratulations – you're all set! You now have a copy of freeCodeCamp's entire learning platform running on your local machine.
|
> [!NOTE] Una vez listo, abre un navegador web y **visita <http://localhost:8000>**. Si la aplicación se carga, enhorabuena: ¡ya estás listo! Ahora tiene una copia de toda la plataforma de aprendizaje de freeCodeCamp ejecutándose en su máquina local.
|
||||||
|
|
||||||
> [!TIP] The API Server serves APIs at `http://localhost:3000`. The Gatsby app serves the client application at `http://localhost:8000`
|
> [!TIP] El servidor API sirve APIs en `http://localhost:3000`. La aplicación Gatsby sirve a la aplicación cliente en `http://localhost:8000`
|
||||||
|
|
||||||
> If you visit <http://localhost:3000/explorer> you should see the available APIs.
|
> Si visita <http://localhost:3000/explorer> debería ver las API disponibles.
|
||||||
|
|
||||||
## Sign in with a local user
|
## Iniciar sesión con un usuario local
|
||||||
|
|
||||||
Your local setup automatically populates a local user in the database. Clicking the `Sign In` button will automatically authenticate you into the local application.
|
Su configuración local automáticamente rellena un usuario local en la base de datos. Al hacer clic en el botón `Iniciar sesión` se autenticará automáticamente en la aplicación local.
|
||||||
|
|
||||||
However, accessing the user portfolio page is a little tricky. In development, Gatsby takes over serving the client-side pages and hence you will get a `404` page for the user portfolio when working locally.
|
Sin embargo, acceder a la página del portafolio de usuarios es un poco complicado. En desarrollo, Gatsby se hace cargo de servir las páginas del lado del cliente y por lo tanto obtendrás una página `404` para el portafolio de usuarios cuando trabajes localmente.
|
||||||
|
|
||||||
Simply clicking the **"Preview Custom 404 Page"** button will forward you to the correct page.
|
Simplemente haga clic en el botón **"Vista previa de página 404 personalizada"** le redirigirá a la página correcta.
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary>
|
<summary>
|
||||||
How to sign in when working locally (screenshot)
|
Cómo iniciar sesión cuando se trabaja localmente (captura de pantalla)
|
||||||
</summary>
|
</summary>
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
<img src="https://user-images.githubusercontent.com/29990697/71541249-f63cdf00-2923-11ea-8a85-cefb6f9c9977.gif" alt="How to sign in when working locally" />
|
<img src="https://user-images.githubusercontent.com/29990697/71541249-f63cdf00-2923-11ea-8a85-cefb6f9c9977.gif" alt="Cómo iniciar sesión cuando se trabaja localmente" />
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
## Making changes locally
|
## Haciendo cambios localmente
|
||||||
|
|
||||||
You can now make changes to files and commit your changes to your local clone of your fork.
|
Ahora puede hacer cambios en archivos y confirmar los cambios en su clon local de su bifurcación.
|
||||||
|
|
||||||
Follow these steps:
|
Siga estos pasos:
|
||||||
|
|
||||||
1. Validate that you are on the `master` branch:
|
1. Validar que estás en la rama de `master`:
|
||||||
|
|
||||||
```console
|
```console
|
||||||
git status
|
git status
|
||||||
```
|
```
|
||||||
|
|
||||||
You should get an output like this:
|
Deberías obtener una salida como esta:
|
||||||
|
|
||||||
```console
|
```console
|
||||||
On branch master
|
En branch master
|
||||||
Your branch is up-to-date with 'origin/master'.
|
Su rama está actualizada con 'origin/master'.
|
||||||
|
|
||||||
nothing to commit, working directory clean
|
nada para confirmar, limpiar directorio
|
||||||
```
|
```
|
||||||
|
|
||||||
If you are not on master or your working directory is not clean, resolve any outstanding files/commits and checkout `master`:
|
Si no estás en el directorio maestro o tu directorio de trabajo no está limpio, resuelve cualquier archivo/commits pendientes y comprueba `master`:
|
||||||
|
|
||||||
```console
|
```console
|
||||||
git checkout master
|
git checkout master
|
||||||
```
|
```
|
||||||
|
|
||||||
2. Sync the latest changes from the freeCodeCamp upstream `master` branch to your local master branch:
|
2. Sincroniza los últimos cambios desde la rama principal freeCodeCamp `master` a tu rama maestra local:
|
||||||
|
|
||||||
> [!WARNING] If you have any outstanding pull request that you made from the `master` branch of your fork, you will lose them at the end of this step.
|
> [!WARNING] Si tienes algún pull request pendiente que hayas hecho desde la rama `master` de tu bifurcación, los perderás al final de este paso.
|
||||||
>
|
>
|
||||||
> You should ensure your pull request is merged by a moderator before performing this step. To avoid this scenario, you should **always** work on a branch other than the `master`.
|
> Debería asegurarse de que su pull request está fusionado por un moderador antes de realizar este paso. Para evitar este escenario, deberías **siempre** trabajar en una rama que no sea el `maestro`.
|
||||||
|
|
||||||
This step **will sync the latest changes** from the main repository of freeCodeCamp. It is important that you rebase your branch on top of the latest `upstream/master` as often as possible to avoid conflicts later.
|
Este paso **sincronizará los últimos cambios** desde el repositorio principal de freeCodeCamp. Es importante que rebase su rama sobre la última `upstream/master` tan a menudo como sea posible para evitar conflictos más tarde.
|
||||||
|
|
||||||
Update your local copy of the freeCodeCamp upstream repository:
|
Actualiza tu copia local del repositorio de freeCodeCamp upstream:
|
||||||
|
|
||||||
```console
|
```console
|
||||||
git fetch upstream
|
git obtener arriba
|
||||||
```
|
```
|
||||||
|
|
||||||
Hard reset your master branch with the freeCodeCamp master:
|
Restablece tu rama maestra con el maestro freeCodeCamp:
|
||||||
|
|
||||||
```console
|
```console
|
||||||
git reset --hard upstream/master
|
git reset --hard upstream/master
|
||||||
```
|
```
|
||||||
|
|
||||||
Push your master branch to your origin to have a clean history on your fork on GitHub:
|
Empuje su rama maestra a su origen para tener un historial limpio en su bifurcación en GitHub:
|
||||||
|
|
||||||
```console
|
```console
|
||||||
git push origin master --force
|
git push origin master --force
|
||||||
```
|
```
|
||||||
|
|
||||||
You can validate your current master matches the upstream/master by performing a diff:
|
Puedes validar tu maestro actual concuerda con el autor / maestro realizando un difusión:
|
||||||
|
|
||||||
```console
|
```console
|
||||||
git diff upstream/master
|
git diff upstream/master
|
||||||
```
|
```
|
||||||
|
|
||||||
The resulting output should be empty.
|
La salida resultante debe estar vacía.
|
||||||
|
|
||||||
3. Create a fresh new branch:
|
3. Crear una nueva rama:
|
||||||
|
|
||||||
Working on a separate branch for each issue helps you keep your local work copy clean. You should never work on the `master`. This will soil your copy of freeCodeCamp and you may have to start over with a fresh clone or fork.
|
Trabajar en una rama separada para cada asunto le ayuda a mantener limpia su copia de trabajo local. Nunca deberías trabajar en el maestro ``. Esto sumergirá su copia de freeCodeCamp y puede que tenga que empezar con un clon o un tenedor fresco.
|
||||||
|
|
||||||
Check that you are on `master` as explained previously, and branch off from there:
|
Comprueba que estás en `master` como se explicó anteriormente, y ramificar desde ahí:
|
||||||
|
|
||||||
```console
|
```console
|
||||||
git checkout -b fix/update-guide-for-xyz
|
git checkout -b fix/update-guide-for-xyz
|
||||||
```
|
```
|
||||||
|
|
||||||
Your branch name should start with a `fix/`, `feat/`, `docs/`, etc. Avoid using issue numbers in branches. Keep them short, meaningful and unique.
|
Su nombre de rama debería comenzar con una `fix/`, `feat/`, `docs/`, etc. Evitar el uso de números de incidencias en las ramas. Manténgalos cortos, significativos y únicos.
|
||||||
|
|
||||||
Some examples of good branch names are:
|
Algunos ejemplos de buenos nombres de ramas son:
|
||||||
|
|
||||||
```md
|
```md
|
||||||
fix/update-challenges-for-react
|
fix/update-challenges-for-reaccionar
|
||||||
fix/update-guide-for-html-css
|
fix/update-guide-for-html-css
|
||||||
fix/platform-bug-sign-in-issues
|
fix/platform-bug-sign-in-issues
|
||||||
feat/add-guide-article-for-javascript
|
feat/add-guide-article-for-javascript
|
||||||
translate/add-spanish-basic-html
|
translate/add-spanish-basic-html
|
||||||
```
|
```
|
||||||
|
|
||||||
4. Edit pages and work on code in your favorite text editor.
|
4. Edita páginas y trabaja en código en tu editor de texto favorito.
|
||||||
|
|
||||||
5. Once you are happy with the changes you should optionally run freeCodeCamp locally to preview the changes.
|
5. Una vez que esté contento con los cambios, opcionalmente debería ejecutar freeCodeCamp localmente para previsualizar los cambios.
|
||||||
|
|
||||||
6. Make sure you fix any errors and check the formatting of your changes.
|
6. Asegúrese de corregir cualquier error y comprobar el formato de sus cambios.
|
||||||
|
|
||||||
7. Check and confirm the files you are updating:
|
7. Comprueba y confirma los archivos que estás actualizando:
|
||||||
|
|
||||||
```console
|
```console
|
||||||
git status
|
git status
|
||||||
```
|
```
|
||||||
|
|
||||||
This should show a list of `unstaged` files that you have edited.
|
Esto debería mostrar una lista de `archivos sin etapas` que has editado.
|
||||||
|
|
||||||
```console
|
```console
|
||||||
On branch feat/documentation
|
En función/documentación de la rama
|
||||||
Your branch is up to date with 'upstream/feat/documentation'.
|
Su rama está actualizada con 'upstream/feat/documentation'.
|
||||||
|
|
||||||
Changes not staged for commit:
|
Cambios no escalonados para commit:
|
||||||
(use "git add/rm <file>..." to update what will be committed)
|
(use "git add/rm <file>... para actualizar lo que se comprometerá)
|
||||||
(use "git checkout -- <file>..." to discard changes in working directory)
|
(use "git checkout -- <file>. ." para descartar los cambios en el directorio de trabajo)
|
||||||
|
|
||||||
modified: CONTRIBUTING.md
|
modificado: CONTRIBUTING. d
|
||||||
modified: docs/README.md
|
modificado: docs/README.md
|
||||||
modified: docs/how-to-setup-freecodecamp-locally.md
|
modificado: docs/how-to-setup-freecodecamp-locally. d
|
||||||
modified: docs/how-to-work-on-guide-articles.md
|
modified: docs/how-to-work-on-guide-articles.md
|
||||||
...
|
...
|
||||||
```
|
```
|
||||||
|
|
||||||
8. Stage the changes and make a commit:
|
8. Etapar los cambios y hacer una confirmación:
|
||||||
|
|
||||||
In this step, you should only mark files that you have edited or added yourself. You can perform a reset and resolve files that you did not intend to change if needed.
|
En este paso, sólo debes marcar los archivos que has editado o añadido tú mismo. Puede realizar un restablecimiento y resolución de archivos que no tenía intención de cambiar si es necesario.
|
||||||
|
|
||||||
```console
|
```console
|
||||||
git add path/to/my/changed/file.ext
|
git añadir ruta/a/mi/cambiado/archivo.ext
|
||||||
```
|
```
|
||||||
|
|
||||||
Or you can add all the `unstaged` files to the staging area:
|
O puede añadir todos los archivos `sin staging` al área de escenaje:
|
||||||
|
|
||||||
```console
|
```console
|
||||||
git add .
|
git add .
|
||||||
```
|
```
|
||||||
|
|
||||||
Only the files that were moved to the staging area will be added when you make a commit.
|
Sólo los archivos que fueron movidos al área de puesta en escena serán añadidos cuando realice una confirmación.
|
||||||
|
|
||||||
```console
|
```console
|
||||||
git status
|
git status
|
||||||
```
|
```
|
||||||
|
|
||||||
Output:
|
Salida:
|
||||||
|
|
||||||
```console
|
```console
|
||||||
On branch feat/documentation
|
En función/documentación de la rama
|
||||||
Your branch is up to date with 'upstream/feat/documentation'.
|
Su rama está actualizada con 'upstream/feat/documentation'.
|
||||||
|
|
||||||
Changes to be committed:
|
Cambios a comprometir:
|
||||||
(use "git reset HEAD <file>..." to unstage)
|
(use "git reset HEAD <file>..." para desfasar)
|
||||||
|
|
||||||
modified: CONTRIBUTING.md
|
modificado: CONTRIBUTING.md
|
||||||
modified: docs/README.md
|
modificado: docs/README.md
|
||||||
modified: docs/how-to-setup-freecodecamp-locally.md
|
modificado: docs/how-to-setup-freecodecamp-locally.md
|
||||||
modified: docs/how-to-work-on-guide-articles.md
|
modificado: docs/how-to-work-on-guide-articles.md
|
||||||
```
|
```
|
||||||
|
|
||||||
Now, you can commit your changes with a short message like so:
|
Ahora, puede confirmar sus cambios con un mensaje corto así:
|
||||||
|
|
||||||
```console
|
```console
|
||||||
git commit -m "fix: my short commit message"
|
git commit -m "fix: my short commit message"
|
||||||
```
|
```
|
||||||
|
|
||||||
Some examples:
|
Algunos ejemplos:
|
||||||
|
|
||||||
```md
|
```md
|
||||||
fix: update guide article for Java - for loop
|
fix: actualizar artículo de guía para Java - para bucle
|
||||||
feat: add guide article for alexa skills
|
función: añadir artículo de guía para habilidades de alexa
|
||||||
```
|
```
|
||||||
|
|
||||||
Optional:
|
Opcional:
|
||||||
|
|
||||||
We highly recommend making a conventional commit message. This is a good practice that you will see on some of the popular Open Source repositories. As a developer, this encourages you to follow standard practices.
|
Recomendamos encarecidamente hacer un mensaje de compromiso convencional. Esta es una buena práctica que verás en algunos de los repositorios de Código Abierto. Como desarrollador, esto te anima a seguir las prácticas estándar.
|
||||||
|
|
||||||
Some examples of conventional commit messages are:
|
Algunos ejemplos de mensajes de confirmación convencionales son:
|
||||||
|
|
||||||
```md
|
```md
|
||||||
fix: update HTML guide article
|
fix: actualizar artículo de la guía HTML
|
||||||
fix: update build scripts for Travis-CI
|
fix: actualizar scripts de compilación para la característica Travis-CI
|
||||||
feat: add article for JavaScript hoisting
|
: añadir artículo para la lista de JavaScript
|
||||||
docs: update contributing guidelines
|
docs: actualizar directrices de contribución
|
||||||
```
|
```
|
||||||
|
|
||||||
Keep these short, not more than 50 characters. You can always add additional information in the description of the commit message.
|
Mantenga estos caracteres cortos, no más de 50 caracteres. Siempre puede añadir información adicional en la descripción del mensaje de confirmación.
|
||||||
|
|
||||||
This does not take any additional time than an unconventional message like 'update file' or 'add index.md'
|
Esto no toma más tiempo que un mensaje no convencional como 'actualizar archivo' o 'añadir index.md'
|
||||||
|
|
||||||
You can learn more about why you should use conventional commits [here](https://www.conventionalcommits.org/en/v1.0.0-beta.2/#why-use-conventional-commits).
|
Puedes aprender más sobre por qué debes usar commits convencionales [aquí](https://www.conventionalcommits.org/en/v1.0.0-beta.2/#why-use-conventional-commits).
|
||||||
|
|
||||||
9. If you realise that you need to edit a file or update the commit message after making a commit you can do so after editing the files with:
|
9. Si te das cuenta de que necesitas editar un archivo o actualizar el mensaje de confirmación después de hacer un commit puedes hacerlo después de editar los archivos con:
|
||||||
|
|
||||||
```console
|
```console
|
||||||
git commit --amend
|
git commit --amend
|
||||||
```
|
```
|
||||||
|
|
||||||
This will open up a default text editor like `nano` or `vi` where you can edit the commit message title and add/edit the description.
|
Esto abrirá un editor de texto predeterminado como `nano` o `vi` donde puedes editar el título del mensaje de commit y añadir/editar la descripción.
|
||||||
|
|
||||||
10. Next, you can push your changes to your fork:
|
10. A continuación, puede enviar sus cambios a su fork:
|
||||||
|
|
||||||
```console
|
```console
|
||||||
git push origin branch/name-here
|
git push rama/nombre de origen aquí
|
||||||
```
|
```
|
||||||
|
|
||||||
## Proposing a Pull Request (PR)
|
## Proponer una Pull Request (PR)
|
||||||
|
|
||||||
After you've committed your changes, check here for [how to open a Pull Request](how-to-open-a-pull-request.md).
|
Después de que hayas cometido tus cambios, consulta aquí [cómo abrir una Pull Request](how-to-open-a-pull-request.md).
|
||||||
|
|
||||||
## Quick commands reference
|
## Referencia de comandos rápidos
|
||||||
|
|
||||||
A quick reference to the commands that you will need when working locally.
|
Una referencia rápida a los comandos que necesitará cuando trabaje localmente.
|
||||||
|
|
||||||
| command | description |
|
| comando | descripción |
|
||||||
| -------------------------------------------------------------- | ----------------------------------------------------------------------------------- |
|
| -------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- |
|
||||||
| `npm ci` | Installs / re-install all dependencies and bootstraps the different services. |
|
| `npm ci` | Instala / reinstala todas las dependencias y arranca los diferentes servicios. |
|
||||||
| `npm run seed` | Parses all the challenge markdown files and inserts them into MongoDB. |
|
| `npm run seed` | Analiza todos los archivos markdown del desafío e inserta en MongoDB. |
|
||||||
| `npm run develop` | Starts the freeCodeCamp API Server and Client Applications. |
|
| `desarrollo de ejecución npm` | Inicia el servidor freeCodeCamp API y las aplicaciones de cliente. |
|
||||||
| `npm test` | Run all JS tests in the system, including client, server, lint and challenge tests. |
|
| `prueba npm` | Ejecutar todas las pruebas JS en el sistema, incluyendo las pruebas de clientes, servidores, lint y challenge. |
|
||||||
| `npm run test:client` | Run the client test suite. |
|
| `npm ejecutar prueba:cliente` | Ejecute la suite de pruebas del cliente. |
|
||||||
| `npm run test:curriculum` | Run the curriculum test suite. |
|
| `npm run test:curriculum` | Ejecute la suite de pruebas de currículum. |
|
||||||
| `npm run test:curriculum --block='Basic HTML and HTML5'` | Test a specific Block. |
|
| `npm run test:curriculum --block='HTML básico y HTML5'` | Evalúa un bloque específico. |
|
||||||
| `npm run test:curriculum --superblock='responsive-web-design'` | Test a specific SuperBlock. |
|
| `npm run test:curriculum --superblock='responsive-web-design'` | Evalúa un SuperBlock específico. |
|
||||||
| `npm run test-curriculum-full-output` | Run the curriculum test suite, without bailing after the first error |
|
| `npm ejecuta test-curriculum-full-output` | Ejecutar el programa de prueba de currículo, sin tener que pagar después del primer error |
|
||||||
| `npm run test:server` | Run the server test suite. |
|
| `ejecutar npm test:server` | Ejecute la suite de pruebas del servidor. |
|
||||||
| `npm run e2e` | Run the Cypress end to end tests. |
|
| `npm ejecutar e2e` | Ejecute el Cypress end para terminar las pruebas. |
|
||||||
| `npm run clean` | Uninstalls all dependencies and cleans up caches. |
|
| `npm correr limpio` | Desinstala todas las dependencias y limpia los cachés. |
|
||||||
|
|
||||||
## Troubleshooting
|
## Solución de problemas
|
||||||
|
|
||||||
### Issues with installing the recommended prerequisites
|
### Problemas con la instalación de los prerrequisitos recomendados
|
||||||
|
|
||||||
We regularly develop on the latest or most popular operating systems like macOS 10.15 or later, Ubuntu 18.04 or later and Windows 10 (with WSL2).
|
Regularmente desarrollamos los últimos o más populares sistemas operativos como macOS 10.15 o posterior, Ubuntu 18.04 o posterior y Windows 10 (con WSL2).
|
||||||
|
|
||||||
It is recommended to research your specific issue on resources such as Google, Stack Overflow and Stack Exchange. There is a good chance that someone has faced the same issue and there is already an answer to your specific query.
|
Se recomienda investigar tu problema específico en recursos como Google, Stack Overflow y Stack Exchange. Existe una buena posibilidad de que alguien se haya enfrentado al mismo problema y ya haya una respuesta a su pregunta específica.
|
||||||
|
|
||||||
If you are on a different OS and/or are still running into issues, see [getting help](#getting-help).
|
Si estás en un sistema operativo diferente y/o todavía tienes problemas, consulta [obtener ayuda](#getting-help).
|
||||||
|
|
||||||
> [!WARNING]
|
> [!WARNING]
|
||||||
>
|
>
|
||||||
> Please avoid creating GitHub issues for prerequisite issues. They are out of the scope of this project.
|
> Por favor, evite crear problemas de GitHub para problemas de prerrequisitos. Están fuera del ámbito de este proyecto.
|
||||||
|
|
||||||
### Issues with the UI, Fonts, build errors etc.
|
### Problemas con la interfaz de usuario, fuentes, errores de compilación, etc.
|
||||||
|
|
||||||
If you face issues with the UI, Fonts or see builds errors a cleanup can be useful:
|
Si usted se enfrenta a problemas con la interfaz de usuario, fuentes o ver errores de compilación, una limpieza puede ser útil:
|
||||||
|
|
||||||
```console
|
```console
|
||||||
npm run clean
|
npm run clean
|
||||||
npm ci
|
npm ci
|
||||||
npm run seed
|
npm run seed
|
||||||
npm run develop
|
npm run developer
|
||||||
```
|
```
|
||||||
|
|
||||||
OR
|
O
|
||||||
|
|
||||||
Use the shortcut
|
Usar el acceso directo
|
||||||
|
|
||||||
```
|
```
|
||||||
npm run clean-and-develop
|
npm ejecuta limpieza y desarrollo
|
||||||
```
|
```
|
||||||
|
|
||||||
If you continue to face issues with the build, cleaning up the workspace is recommend.
|
Si continúa enfrentándose a problemas con la construcción, se recomienda limpiar el espacio de trabajo.
|
||||||
|
|
||||||
Use `git clean` in interative mode:
|
Usa `git clean` en modo interactivo:
|
||||||
|
|
||||||
```
|
```
|
||||||
git clean -ifdX
|
git clean -ifdX
|
||||||
@ -506,41 +506,41 @@ git clean -ifdX
|
|||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary>
|
<summary>
|
||||||
How to clean git untracked files (screenshot)
|
Cómo limpiar archivos sin seguimiento de git (captura de pantalla)
|
||||||
</summary>
|
</summary>
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
<img src="https://user-images.githubusercontent.com/1884376/94270515-ca579400-ff5d-11ea-8ff1-152cade31654.gif" alt="How to clean git untracked files" />
|
<img src="https://user-images.githubusercontent.com/1884376/94270515-ca579400-ff5d-11ea-8ff1-152cade31654.gif" alt="Cómo limpiar archivos sin seguimiento de git" />
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
### Issues with API, Login, Challenge Submissions, etc.
|
### Problemas con API, Login, Desafío de presentaciones, etc.
|
||||||
|
|
||||||
If you can't sign in, and instead you see a banner with an error message that it will be reported to freeCodeCamp, please double-check that your local port `3000` is not in use by a different program.
|
Si no puedes iniciar sesión, y en su lugar ves un banner con un mensaje de error que será reportado a freeCodeCamp, por favor, comprueba que tu puerto local `3000` no esté en uso por un programa diferente.
|
||||||
|
|
||||||
**On Linux / macOS / WSL on Windows - From Terminal:**
|
**En Linux / macOS / WSL en Windows - Desde la terminal:**
|
||||||
|
|
||||||
```console
|
```console
|
||||||
netstat -ab | grep "3000"
|
netstat -ab | grep "3000"
|
||||||
|
|
||||||
tcp4 0 0 0.0.0.0:3000 DESKTOP LISTEN
|
tcp4 0 0.0.0.0:3000 DESKTOP LISTEN
|
||||||
```
|
```
|
||||||
|
|
||||||
**On Windows - From Elevated PowerShell:**
|
**En Windows - Desde PowerShell despegado:**
|
||||||
|
|
||||||
```powershell
|
```powershell
|
||||||
netstat -ab | Select-String "3000"
|
netstat -ab | Select-String "3000"
|
||||||
|
|
||||||
TCP 0.0.0.0:3000 DESKTOP LISTENING
|
TCP 0.0.0.0:3000 DESKTOP LISTENING
|
||||||
```
|
```
|
||||||
|
|
||||||
### Issues installing dependencies
|
### Problemas instalando dependencias
|
||||||
|
|
||||||
If you get errors while installing the dependencies, please make sure that you are not in a restricted network or your firewall settings do not prevent you from accessing resources.
|
Si obtiene errores durante la instalación de las dependencias, por favor asegúrese de que no está en una red restringida o sus ajustes de cortafuegos no le impiden acceder a los recursos.
|
||||||
|
|
||||||
The first time setup can take a while depending on your network bandwidth. Be patient, and if you are still stuck we recommed using GitPod instead of an offline setup.
|
La primera configuración puede tardar un rato dependiendo del ancho de banda de su red. Ten paciencia, y si aún estás atascado te recomendamos usar GitPod en lugar de una configuración sin conexión.
|
||||||
|
|
||||||
## Getting Help
|
## Obteniendo ayuda
|
||||||
|
|
||||||
If you are stuck and need help, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS).
|
Si estás atascado y necesitas ayuda, Siéntete libre de hacer preguntas en la categoría de ['Colaboradores' en nuestro foro](https://forum.freecodecamp.org/c/contributors) o [nuestro servidor de Discord](https://discord.gg/pFspAhS).
|
||||||
|
|
||||||
There might be an error in the console of your browser or in Bash / Terminal / Command Line that will help identify the problem. Provide this error message in your problem description so others can more easily identify the issue and help you find a resolution.
|
Puede haber un error en la consola de su navegador o en Bash / Terminal / Command Line que le ayudará a identificar el problema. Proporcione este mensaje de error en la descripción de su problema para que otros puedan identificar el problema más fácilmente y ayudarle a encontrar una solución.
|
||||||
|
@ -1,26 +1,26 @@
|
|||||||
# Set up freeCodeCamp on Windows Subsystem for Linux (WSL)
|
# Configurar freeCodeCamp en el subsistema de Windows para Linux (WSL)
|
||||||
|
|
||||||
> [!NOTE] Before you follow these instructions make sure your system meets the requirements
|
> [!NOTE] Antes de seguir estas instrucciones asegúrate de que tu sistema cumple con los requisitos
|
||||||
>
|
>
|
||||||
> **WSL 2**: Windows 10 64-bit (Version 2004, Build 19041 or higher) - available for all distributions including Windows 10 Home.
|
> **WSL 2**: Windows 10 64-bit (Versión 2004, Build 19041 o superior) - disponible para todas las distribuciones incluyendo Windows 10 Home.
|
||||||
>
|
>
|
||||||
> **Docker Desktop for Windows**: See respective requirements for [Windows 10 Pro](https://docs.docker.com/docker-for-windows/install/#system-requirements) and [Windows 10 Home](https://docs.docker.com/docker-for-windows/install-windows-home/#system-requirements)
|
> **Docker Desktop para Windows**: Vea los requisitos correspondientes para [Windows 10 Pro](https://docs.docker.com/docker-for-windows/install/#system-requirements) y [Windows 10 Home](https://docs.docker.com/docker-for-windows/install-windows-home/#system-requirements)
|
||||||
|
|
||||||
This guide covers some common steps with the setup of WSL2. Once some of the common issues with WSL2 are addressed, you should be able to follow the our local setup guide to work with freeCodeCamp on Windows running a WSL distro like Ubuntu.
|
Esta guía cubre algunos pasos comunes con la configuración de WSL2. Una vez resueltos algunos de los problemas comunes con WSL2, debería ser capaz de seguir nuestra guía de configuración local para trabajar con freeCodeCamp en Windows ejecutando una distribución WSL como Ubuntu.
|
||||||
|
|
||||||
## Enable WSL
|
## Habilitar WSL
|
||||||
|
|
||||||
Follow the instructions on the [official documentation](https://docs.microsoft.com/en-us/windows/wsl/install-win10) to install WSL1 and followed by upgrading to WSL2.
|
Siga las instrucciones de la [documentación oficial](https://docs.microsoft.com/en-us/windows/wsl/install-win10) para instalar WSL1 y luego actualice a WSL2.
|
||||||
|
|
||||||
## Install Ubuntu
|
## Instalar Ubuntu
|
||||||
|
|
||||||
1. We recommended using Ubuntu-18.04 or above with WSL2.
|
1. Recomendamos usar Ubuntu-18.04 o superior con WSL2.
|
||||||
|
|
||||||
> [!NOTE]
|
> [!NOTE]
|
||||||
>
|
>
|
||||||
> While you may use other non-debian based distros, they all come with their own gotchas and are beyond the scope of this guide.
|
> Aunque usted puede utilizar otras distribuciones no basadas en debian, todas vienen con sus propios complicaciones y están más allá del alcance de esta guía.
|
||||||
|
|
||||||
2. Update the dependencies for the OS
|
2. Actualizar las dependencias del sistema operativo
|
||||||
|
|
||||||
```console
|
```console
|
||||||
sudo apt update
|
sudo apt update
|
||||||
@ -30,9 +30,9 @@ Follow the instructions on the [official documentation](https://docs.microsoft.c
|
|||||||
sudo apt autoremove -y
|
sudo apt autoremove -y
|
||||||
```
|
```
|
||||||
|
|
||||||
## Set up Git
|
## Configurar Git
|
||||||
|
|
||||||
Git comes pre-installed with Ubuntu 18.04, verify that your Git version with `git --version`.
|
Git viene preinstalado con Ubuntu 18.04, verifique su versión de Git con `git --version`.
|
||||||
|
|
||||||
```output
|
```output
|
||||||
~
|
~
|
||||||
@ -40,41 +40,41 @@ Git comes pre-installed with Ubuntu 18.04, verify that your Git version with `gi
|
|||||||
git version 2.25.1
|
git version 2.25.1
|
||||||
```
|
```
|
||||||
|
|
||||||
(Optional but recommended) You can now proceed to [setting up your ssh keys](https://help.github.com/articles/generating-an-ssh-key) with GitHub.
|
(Opcional, pero recomendado) Ahora puedes proceder a [configurar tus claves ssh](https://help.github.com/articles/generating-an-ssh-key) con GitHub.
|
||||||
|
|
||||||
## Installing a Code Editor
|
## Instalar un editor de código
|
||||||
|
|
||||||
We highly recommend installing [Visual Studio Code](https://code.visualstudio.com) on Windows 10. It has great support for WSL and automatically installs all the necessary extensions on your WSL distro.
|
Recomendamos encarecidamente instalar [Visual Studio Code](https://code.visualstudio.com) en Windows 10. Posee un gran soporte para WSL e instala automáticamente todas las extensiones necesarias en tu distribución de WSL.
|
||||||
|
|
||||||
Essentially, you will edit and store your code on Ubuntu-18.04 with VS Code installed on Windows.
|
Esencialmente, editará y almacenará su código en Ubuntu-18.04 con el VS Code instalado en Windows.
|
||||||
|
|
||||||
## Installing Docker Desktop
|
## Instalando Docker Desktop
|
||||||
|
|
||||||
**Docker Desktop for Windows** allows you to install and run database and services like MongoDB, NGINX, etc. This is useful to avoid common pitfalls with installing MongoDB or other services directly on Windows or WSL2.
|
**Docker Desktop para Windows** le permite instalar y ejecutar bases de datos y servicios como MongoDB, NGINX, etc. Esto es útil para evitar problemas comunes con la instalación de MongoDB u otros servicios directamente en Windows o WSL2.
|
||||||
|
|
||||||
Follow the instructuction on the [official documentation](https://docs.docker.com/docker-for-windows/install) and install Docker Desktop for your Windows distribution.
|
Siga las instrucciones de la [documentación oficial](https://docs.docker.com/docker-for-windows/install) e instale Docker Desktop para su distribución de Windows.
|
||||||
|
|
||||||
There are some minimum hardware requirements for the best experience.
|
Hay algunos requisitos mínimos de hardware para una mejor experiencia.
|
||||||
|
|
||||||
## Configure Docker Desktop for WSL
|
## Configurar Docker Desktop para WSL
|
||||||
|
|
||||||
Once Docker Desktop is installed, [follow these instructions](https://docs.docker.com/docker-for-windows/wsl) and configure it to use the Ubuntu-18.04 installation as a backend.
|
Una vez que Docker Desktop está instalado, [sigue estas instrucciones](https://docs.docker.com/docker-for-windows/wsl) y configúralo para usar la instalación de Ubuntu-18.04 como un backend.
|
||||||
|
|
||||||
This makes it so that the containers run on WSL side instead of running on Windows. You will be able to access the services over `http://localhost` on both Windows and Ubuntu.
|
Esto hace que los contenedores se ejecuten en WSL en lugar de ejecutarse en Windows. Podrás acceder a los servicios a través de `http://localhost` tanto en Windows como en Ubuntu.
|
||||||
|
|
||||||
## Install MongoDB from Docker Hub
|
## Instalar MongoDB desde Docker Hub
|
||||||
|
|
||||||
Once you have configured Docker Desktop to work with WSL2, follow these steps to start a MongoDB service:
|
Una vez que haya configurado Docker Desktop para trabajar con WSL2, siga estos pasos para iniciar un servicio de MongoDB:
|
||||||
|
|
||||||
1. Launch a new Ubuntu-18.04 terminal
|
1. Iniciar una nueva terminal Ubuntu-18.04
|
||||||
|
|
||||||
2. Pull `MongoDB 3.6` from dockerhub
|
2. Extraer `MongoDB 3.6` desde dockerHub
|
||||||
|
|
||||||
```console
|
```console
|
||||||
docker pull mongo:3
|
docker pull mongo:3
|
||||||
```
|
```
|
||||||
|
|
||||||
3. Start the MongoDB service at port `27017`, and configure it to run automatically on system restarts
|
3. Iniciar el servicio MongoDB en el puerto `27017`y configurarlo para que se ejecute automáticamente al reiniciar el sistema
|
||||||
|
|
||||||
```console
|
```console
|
||||||
docker run -it \
|
docker run -it \
|
||||||
@ -85,45 +85,45 @@ Once you have configured Docker Desktop to work with WSL2, follow these steps to
|
|||||||
-d mongo:3
|
-d mongo:3
|
||||||
```
|
```
|
||||||
|
|
||||||
4. You can now access the service from both Windows or Ubuntu at `mongodb://localhost:27017`.
|
4. Ahora puede acceder al servicio desde Windows o Ubuntu en `mongodb://localhost:27017`.
|
||||||
|
|
||||||
## Installing Node.js and npm
|
## Instalando Node.js y npm
|
||||||
|
|
||||||
We recommend you install the LTS release for Node.js with a node version manager - [nvm](https://github.com/nvm-sh/nvm#installing-and-updating).
|
Le recomendamos que instale la versión LTS para Node.js con un gestor de versiones de node - [nvm](https://github.com/nvm-sh/nvm#installing-and-updating).
|
||||||
|
|
||||||
Once installed use these commands to install and use the Node.js version as needed
|
Una vez instalado, use estos comandos para instalar y usar la versión de Node.js según sea necesario
|
||||||
|
|
||||||
```console
|
```console
|
||||||
nvm install --lts
|
nvm install --lts
|
||||||
|
|
||||||
# OR
|
# O también
|
||||||
# nvm install <version>
|
# nvm install <version>
|
||||||
|
|
||||||
nvm install 14
|
nvm install 14
|
||||||
|
|
||||||
# Usage
|
# Uso
|
||||||
# nvm use <version>
|
# nvm use <version>
|
||||||
|
|
||||||
nvm use 12
|
nvm use 12
|
||||||
```
|
```
|
||||||
|
|
||||||
Node.js comes bundled with `npm`, you can update to the latest versions of `npm` with:
|
Node.js viene empaquetado con `npm`, puedes actualizar a las últimas versiones de `npm` con:
|
||||||
|
|
||||||
```console
|
```console
|
||||||
npm install -g npm@latest
|
npm install -g npm@latest
|
||||||
```
|
```
|
||||||
|
|
||||||
## Set up freeCodeCamp locally
|
## Configurar freeCodeCamp localmente
|
||||||
|
|
||||||
Now that you have installed the pre-requisites, follow [our local setup guide](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally) to clone, install and setup freeCodeCamp locally on your machine.
|
Ahora que ha instalado los requisitos previos, siga [nuestra guía de configuración local](https://contribute.freecodecamp.org/#/how-to-setup-freecodecamp-locally) para clonar, instalar y configurar freeCodeCamp localmente en su máquina.
|
||||||
|
|
||||||
> [!WARNING]
|
> [!WARNING]
|
||||||
>
|
>
|
||||||
> Please note, at this time the set up for Cypress tests (and related GUI needs) are a work in progress. You should still be able to work on most of the codebase.
|
> Tenga en cuenta que en este momento la configuración para las pruebas de Cypress (y las necesidades relacionadas con la interfaz de usuario) es un trabajo en curso. Aún así deberías poder trabajar en la mayor parte del código base.
|
||||||
|
|
||||||
## Useful Links
|
## Enlaces útiles
|
||||||
|
|
||||||
- [A WSL2 Dev Setup with Ubuntu 20.04, Node.js, MongoDB, VS Code and Docker](https://devlog.sh/wsl2-dev-setup-with-ubuntu-nodejs-mongodb-and-docker) - an article by Mrugesh Mohapatra (Staff Developer at freeCodeCamp.org)
|
- [Configuración de desarrollador de WSL2 con Ubuntu 20.04, Node.js, MongoDB, VS Code y Docker](https://devlog.sh/wsl2-dev-setup-with-ubuntu-nodejs-mongodb-and-docker) - un artículo de Mrugesh Mohapatra (desarrollador de Staff en freeCodeCamp.org)
|
||||||
- Frequently asked questions on:
|
- Preguntas frecuentes sobre:
|
||||||
- [Windows Subsystem for Linux](https://docs.microsoft.com/en-us/windows/wsl/faq)
|
- [Subsistema de Windows para Linux](https://docs.microsoft.com/en-us/windows/wsl/faq)
|
||||||
- [Docker Desktop for Windows](https://docs.docker.com/docker-for-windows/faqs)
|
- [Docker Desktop para Windows](https://docs.docker.com/docker-for-windows/faqs)
|
||||||
|
@ -1,15 +1,15 @@
|
|||||||
# How to use Docker on Windows Home
|
# Cómo utilizar Docker en Windows Home
|
||||||
|
|
||||||
There are a few pitfalls to be avoided when setting up docker on Windows Home. First of all you have to use [Docker Toolbox](https://docs.docker.com/toolbox/toolbox_install_windows/) as Administrator. Unfortunately Windows Home does not support Docker for Windows Desktop, so Toolbox must be used instead. It has to be run as Administrator as the installation uses symlinks, which cannot be created otherwise.
|
Hay unas cuantas fallas que evitar al configurar docker en Windows Home. En primer lugar, tienes que usar [Docker Toolbox](https://docs.docker.com/toolbox/toolbox_install_windows/) como administrador. Desafortunadamente, Windows Home no soporta Docker para Windows Desktop, por lo que se debe utilizar Toolbox en su lugar. Tiene que ejecutarse como Administrador, ya que la instalación utiliza enlaces simbólicos, los cuales no se pueden crear de otra manera.
|
||||||
|
|
||||||
Once you've installed the toolbox, run Docker Quickstart Terminal as Administrator. This will create a `default` virtual machine, if it does not already exist. Once that has happened, close the terminal and open VirtualBox (again as Administrator). You should be able to see the `default` machine. The site is quite resource intensive, so stop the virtual machine and raise the settings as much as you can - memory in particular. It has been confirmed to work with 4GB of ram.
|
Una vez instalado Toolbox, ejecute Docker Quickstart Terminal como Administrador. Esto creará una máquina virtual `predeterminada`, si no existía anteriormente. Una vez que esto haya ocurrido, cierre la terminal y abra VirtualBox (otra vez como Administrador). Debería ser capaz de ver la máquina `predeterminada`. El sitio es bastante intensivo en recursos, así que detén la máquina virtual y aumenta la configuración tanto como puedas - memoria en particular. Se ha confirmado que trabaja con 4GB de ram.
|
||||||
|
|
||||||
Once you're happy that Docker is working, clone the freeCodeCamp repository to a directory inside `C:\Users`. These directories are shared giving Docker access to the local directories, which it needs during installation.
|
Una vez que estés contento de que Docker está funcionando, clona el repositorio freeCodeCamp en un directorio dentro de `C:\Users`. Estos directorios son compartidos dando acceso a los directorios locales que necesita Docker durante la instalación.
|
||||||
|
|
||||||
If you see messages like
|
Si ves mensajes como
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
bash: change_volumes_owner.sh: No such file or directory
|
bash: change_volumes_owner.sh: No such file or directory
|
||||||
```
|
```
|
||||||
|
|
||||||
when you `npm run docker:init` this is likely the culprit.
|
al ejecutar `npm run docker:init` es probable que esto sea el culpable.
|
||||||
|
@ -1,112 +1,112 @@
|
|||||||
# How to work on coding challenges
|
# Cómo trabajar en los desafíos de codificación
|
||||||
|
|
||||||
Our goal is to develop a fun and clear interactive learning experience.
|
Nuestro objetivo es desarrollar una experiencia de aprendizaje interactiva y divertida.
|
||||||
|
|
||||||
Designing interactive coding challenges is difficult. It would be much easier to write a lengthy explanation or to create a video tutorial. But for our core curriculum, we're sticking with what works best for most people - a fully interactive, video game-like experience.
|
Diseñar desafíos de codificación interactivos es difícil. Sería mucho más fácil escribir una explicación larga o crear un tutorial en vídeo. Pero para nuestro plan de estudios, estamos aferrándonos a lo que mejor funciona para la mayoría de la gente - una experiencia totalmente interactiva y de videojuegos.
|
||||||
|
|
||||||
We want campers to achieve a flow state. We want them to build momentum and blast through our curriculum with as few snags as possible. We want them to go into the projects with confidence and gain a wide exposure to programming concepts.
|
Queremos que los campistas entren en un estado de flujo. Queremos que generen impulso y exploten a través de nuestro plan de estudios con el menor número de trabas posible. Queremos que ingresen en los proyectos con confianza y se expongan ampliamente a los conceptos de programación.
|
||||||
|
|
||||||
Note that for Version 7.0 of the freeCodeCamp curriculum, we are moving toward [an entirely project-focused model with a lot more repetition](https://www.freecodecamp.org/news/python-curriculum-is-live/).
|
Ten en cuenta que para la versión 7.0 del plan de estudios gratuito, estamos avanzando hacia [un modelo totalmente orientado al proyecto con mucha más repetición](https://www.freecodecamp.org/news/python-curriculum-is-live/).
|
||||||
|
|
||||||
Creating these challenges requires immense creativity and attention to detail. There's plenty of help available. You'll have support from a whole team of contributors to whom you can bounce ideas off and demo your challenges.
|
La creación de estos desafíos requiere una inmensa creatividad y atención al detalle. Hay mucha ayuda disponible. Tendrás el apoyo de todo un equipo de colaboradores a los que podrás comentar tus ideas y demostrar tus desafíos.
|
||||||
|
|
||||||
And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS).
|
Y como siempre, siéntete libre de hacer preguntas en la categoría ['Colaboradores' en nuestro foro](https://forum.freecodecamp.org/c/contributors) o [nuestro servidor de Discord](https://discord.gg/pFspAhS).
|
||||||
|
|
||||||
With your help we can design an interactive coding curriculum that will help millions of people learn to code for years to come.
|
Con tu ayuda podemos diseñar un plan de estudios interactivo de codificación que ayudará a millones de personas a aprender a programar durante los años por venir.
|
||||||
|
|
||||||
The content for each challenge is stored in its own markdown file. This markdown file is later converted to HTML using our tools to create interactive web pages.
|
El contenido de cada desafío se almacena en su propio archivo markdown. Este archivo markdown se convierte más tarde en HTML utilizando nuestras herramientas para crear páginas web interactivas.
|
||||||
|
|
||||||
You can find all of freeCodeCamp.org's curricular content in the [`/curriculum/challenges`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges) directory.
|
Puedes encontrar todo el contenido curricular de freeCodeCamp.org en el directorio [`/curriculum/challenges`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges).
|
||||||
|
|
||||||
## Set up the tooling for the curriculum
|
## Configurar las herramientas para el plan de estudios
|
||||||
|
|
||||||
Before you work on the curriculum, you would need to set up some tooling to help you test your changes. You can use any option from the below:
|
Antes de trabajar en el plan de estudios, necesitarás configurar algunas herramientas para ayudarte a probar tus cambios. Puedes utilizar cualquier opción de las siguientes:
|
||||||
|
|
||||||
- You can [set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md). This is **highly recommended** for regular/repeat contributions. This setup allows you to work and test your changes.
|
- Puedes [configurar freeCodeCamp localmente](how-to-setup-freecodecamp-locally.md) en tu máquina. Esto es **altamente recomendable** para contribuciones regulares/repetidas. Esta configuración te permite trabajar y probar tus cambios.
|
||||||
- Use Gitpod, a free online dev environment. Clicking the button below will start a ready-to-code dev environment for freeCodeCamp in your browser. It only takes a few minutes.
|
- Utilice Gitpod, un entorno de desarrollo gratuito en línea. Al hacer clic en el botón de abajo se iniciará un entorno de desarrollo listo para freeCodeCamp en su navegador. Sólo toma unos minutos.
|
||||||
|
|
||||||
[](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp)
|
[](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp)
|
||||||
|
|
||||||
- Edit the files on GitHub's interface by clicking the pencil icon for the corresponding file. While this is the quickest way, It is **not recommended**, because you are unable to test your changes on GitHub. If our maintainers conclude that the changes you made need to be tested locally, you would need to follow the methods above instead again.
|
- Editar los archivos de la interfaz de GitHub haciendo clic en el icono del lápiz del archivo correspondiente. Aunque esta es la manera más rápida, **no se recomienda**, ya que no puedes probar tus cambios en GitHub. Si nuestros mantenedores concluyen que los cambios hechos necesitan ser probados localmente, necesitaras seguir uno de los métodos anteriores en su lugar.
|
||||||
|
|
||||||
## Challenge Template
|
## Plantilla de desafío
|
||||||
|
|
||||||
Below is a template of what the challenge markdown files look like currently. To see the streamlined template we will be adopting see [below](#upcoming-challenge-template).
|
A continuación se muestra una plantilla de cómo se ven los archivos markdown de los desafíos. Para ver la plantilla streamlined vamos a adoptar ver [abajo](#upcoming-challenge-template).
|
||||||
|
|
||||||
````md
|
````md
|
||||||
---
|
---
|
||||||
id: Unique identifier (alphanumerical, MongoDB_id)
|
id: Identificador único (alfanumérico, MongoDB_id)
|
||||||
title: Challenge Title
|
title: Título del Desafío
|
||||||
challengeType: 0
|
challengeType: 0
|
||||||
videoUrl: 'url of video explanation'
|
videoUrl: 'url of video explication'
|
||||||
---
|
---
|
||||||
|
|
||||||
## Description
|
## Descripción
|
||||||
|
|
||||||
<section id='description'>
|
<section id='description'>
|
||||||
A Description of the challenge and what is required to pass
|
Una descripción del desafío y lo que se requiere para pasar
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
## Instructions
|
## Instrucciones
|
||||||
|
|
||||||
<section id='instructions'>
|
<section id='instructions'>
|
||||||
Instructions about what exactly needs to be done.
|
Instrucciones acerca de lo que exactamente se necesita hacer.
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
## Tests
|
## Prueba
|
||||||
|
|
||||||
<section id='tests'>
|
<section id='tests'>
|
||||||
|
|
||||||
```yml
|
```yml
|
||||||
tests:
|
tests:
|
||||||
- text: Should return "foo"
|
- text: Debe devolver "foo"
|
||||||
testString: 'A stringified function possibly using Chai asserts'
|
testString: 'Una función stringificada posiblemente usando asertos Chai'
|
||||||
````
|
````
|
||||||
|
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
## Challenge Seed
|
## Semilla del Desafío
|
||||||
|
|
||||||
<section id='challengeSeed'>
|
<section id='challengeSeed'>
|
||||||
|
|
||||||
<div id='{ext}-seed'>
|
<div id='{ext}-seed'>
|
||||||
|
|
||||||
```{ext}
|
```{ext}
|
||||||
Code displayed in the editor by default.
|
Código mostrado en el editor por defecto.
|
||||||
|
|
||||||
This is a required section for the challenge.
|
Esta es una sección requerida para el desafío.
|
||||||
```
|
```
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
### Before Test
|
### Antes de la prueba
|
||||||
|
|
||||||
<div id='{ext}-setup'>
|
<div id='{ext}-setup'>
|
||||||
|
|
||||||
```{ext}
|
```{ext}
|
||||||
Optional Test setup code.
|
Código opcional de configuración de la prueba.
|
||||||
```
|
```
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
### After Test
|
### Después de la prueba
|
||||||
|
|
||||||
<div id='{ext}-teardown'>
|
<div id='{ext}-teardown'>
|
||||||
|
|
||||||
```{ext}
|
```{ext}
|
||||||
Optional Test tear down code.
|
Código desgarrador opcional de la prueba.
|
||||||
```
|
```
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
## Solution
|
## Solución
|
||||||
|
|
||||||
<section id='solution'>
|
<section id='solution'>
|
||||||
|
|
||||||
```{ext}
|
```{ext}
|
||||||
// solution required
|
// solución requerida
|
||||||
```
|
```
|
||||||
|
|
||||||
</section>
|
</section>
|
||||||
@ -115,202 +115,202 @@ Optional Test tear down code.
|
|||||||
|
|
||||||
> [!NOTE]
|
> [!NOTE]
|
||||||
>
|
>
|
||||||
> 1. In the above sections, examples of `{ext}` are:
|
> 1. En las secciones anteriores, ejemplos de `{ext}` son:
|
||||||
>
|
>
|
||||||
> - `html` - HTML/CSS
|
> - `html` - HTML/CSS
|
||||||
> - `js` - JavaScript
|
> - `js` - JavaScript
|
||||||
> - `jsx` - JSX
|
> - `jsx` - JSX
|
||||||
>
|
>
|
||||||
> 2. For the `Tests` section above, `text` and `testString` should be valid YAML strings. `testString` can be a stringified function or expression using which could use Chai asserts.
|
> 2. Para la sección 'Tests' de arriba, 'text' y 'testString' deben ser cadenas YAML válidas. `testString` puede ser una función o expresión stringificada usando los asertos de Chai.
|
||||||
|
|
||||||
## Numbering Challenges
|
## Numbering Challenges
|
||||||
|
|
||||||
Every challenge needs an `id`. If you don't specify one, then MongoDB will create a new random one when it saves the data; however, we don't want it to do that, since we want the challenge ids to be consistent across different environments (staging, production, lots of different developers, etc.).
|
Cada desafío necesita un `id`. Si no especifica uno, entonces MongoDB creará una nueva al azar cuando guarde los datos; sin embargo, no queremos que haga eso, ya que queremos que los ids del desafío sean consistentes en diferentes entornos (escenario, de producción, muchos desarrolladores diferentes, etc.).
|
||||||
|
|
||||||
To generate a new one in a shell (assuming MongoDB is running separately):
|
Para generar uno nuevo en un shell (asumiendo que MongoDB se está ejecutando por separado):
|
||||||
|
|
||||||
1. Run `mongo` command.
|
1. Ejecuta el comando `mongo`.
|
||||||
2. Run `ObjectId()` command.
|
2. Ejecuta el comando `ObjectId()`.
|
||||||
|
|
||||||
For example:
|
Por ejemplo:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ mongo
|
$ mongo
|
||||||
MongoDB shell version v3.6.1
|
MongoDB shell versión v3.6.1
|
||||||
connecting to: mongodb://127.0.0.1:27017
|
conectando a: mongodb://127.0.0.1:27017
|
||||||
MongoDB server version: 3.4.10
|
Versión del servidor MongoDB: 3.4.10
|
||||||
...
|
...
|
||||||
$ ObjectId()
|
$ ObjectId()
|
||||||
ObjectId("5a474d78df58bafeb3535d34")
|
ObjectId("5a474d78df58bafeb3535d34")
|
||||||
````
|
````
|
||||||
|
|
||||||
The result is a new id, for example `5a474d78df58bafeb3535d34` above.
|
El resultado es un id nuevo, por ejemplo `5a474d78df58bafeb35d34` arriba.
|
||||||
|
|
||||||
Once you have your id, put it into the markdown file as the `id` field at the top, e.g.
|
Una vez que tengas tu id, ponlo en el archivo markdown como el campo `id` en la parte superior, p.ej.
|
||||||
|
|
||||||
```yml
|
```yml
|
||||||
---
|
---
|
||||||
id: 5a474d78df58bafeb3535d34
|
id: 5a474d78df58bafeb3535d34
|
||||||
title: Challenge Title
|
título: Título del Desafío
|
||||||
```
|
```
|
||||||
|
|
||||||
## Naming challenges
|
## Nombrando desafíos
|
||||||
|
|
||||||
Naming things is hard. We've made it easier by imposing some constraints.
|
Nombrar cosas es difícil. Lo hemos hecho más fácil imponiendo algunas restricciones.
|
||||||
|
|
||||||
All challenge titles should be explicit and should follow this pattern:
|
Todos los títulos del desafío deben ser explícitos y deben seguir este patrón:
|
||||||
|
|
||||||
\[verb\]\[object clause\]
|
\[verb\]\[cláusula del objeto\]
|
||||||
|
|
||||||
Here are some example challenge names:
|
Aquí hay algunos ejemplos de nombres de desafíos:
|
||||||
|
|
||||||
- Use Clockwise Notation to Specify the Padding of an Element
|
- Utilice Notación en sentido de la derecha para especificar el relleno de un elemento
|
||||||
- Condense arrays with .reduce
|
- Condensar arreglos con .reduce
|
||||||
- Use Bracket Notation to Find the First Character in a String
|
- Utilice la notación de corchete para encontrar el primer carácter en una cadena
|
||||||
|
|
||||||
## Challenge descriptions/instructions
|
## Descripciones e instrucciones del desafío
|
||||||
|
|
||||||
Sentences should be clear and concise with minimal jargon. If used, jargon should be immediately defined in plain English.
|
Las frases deben ser claras y concisas con la mínima jerga. Si se utiliza, la jerga debe definirse inmediatamente en español sencillo.
|
||||||
|
|
||||||
Keep paragraphs short (around 1-4 sentences). People are more likely to read several short paragraphs than a wall of text.
|
Mantenga los párrafos cortos (alrededor de 1-4 oraciones). Es más probable que la gente lea varios párrafos cortos que un muro de texto.
|
||||||
|
|
||||||
Challenge text should use the second person ("you") to help to give it a conversational tone. This way the text and instructions seem to speak directly to the camper working through the challenge. Try to avoid using the first person ("I", "we", "let's", and "us").
|
El texto del desafío debe usar la segunda persona ("tú") para ayudar a darle un tono de conversación. De esta manera el texto y las instrucciones parecen hablar directamente con el acampador trabajando a través del desafío. Trate de evitar usar la primera persona ("yo", "nosotros", "let's", y "nosotros").
|
||||||
|
|
||||||
Don't use outbound links. These interrupt the flow. Campers should never have to google anything during these challenges. If there are resources you think campers would benefit from, add them to the challenge's Guide-related article.
|
No utilice enlaces salientes. Estos interrumpen el flujo. Los campistas no deben tener que googlear nada durante estos desafíos. Si hay recursos de los que piensas que los campistas se beneficiarían, añádelos al artículo relacionado con la guía del desafío.
|
||||||
|
|
||||||
You can add diagrams if absolutely necessary.
|
Puedes añadir diagramas si es absolutamente necesario.
|
||||||
|
|
||||||
Don't use emojis or emoticons in challenges. freeCodeCamp has a global community, and the cultural meaning of an emoji or emoticon may be different around the world. Also, emojis can render differently on different systems.
|
No utilices emojis o emoticonos en desafíos. freeCodeCamp tiene una comunidad global, y el significado cultural de un emoji o emoticono puede ser diferente en distintas partes del mundo. Además, los emojis pueden renderizarse de manera diferente en sistemas diferentes.
|
||||||
|
|
||||||
Proper nouns should use correct capitalization when possible. Below is a list of words as they should appear in the challenges.
|
Los sustantivos adecuados deben usar una capitalización correcta cuando sea posible. A continuación se muestra una lista de palabras como deberían aparecer en los desafíos.
|
||||||
|
|
||||||
- JavaScript (capital letters in "J" and "S" and no abbreviations)
|
- JavaScript (mayúsculas en "J" y "S" y sin abreviaturas)
|
||||||
- Node.js
|
- Node.js
|
||||||
- Front-end development (adjective form with a dash) is when you're working on the front end (noun form with no dash). The same goes with "back end", "full stack", and many other compound terms.
|
- El desarrollo de front-end (forma adjetiva con guiones) es cuando estás trabajando en la parte frontal (sin guiones). Lo mismo ocurre con el "back end", "full stack", y muchos otros términos compuestos.
|
||||||
|
|
||||||
### The 2-minute rule
|
### La regla de los 2 minutos
|
||||||
|
|
||||||
Each challenge should be solvable within 120 seconds by a native English speaker who has completed the challenges leading up to it. This includes the amount of time it takes to read the directions/instructions understand the seeded code, write their own code and get all the tests to pass.
|
Cada desafío debe ser resuelto en un plazo de 120 segundos por un hablante nativo de español que haya completado los desafíos que lo preceden. Esto incluye la cantidad de tiempo que se tarda en leer las direcciones/instrucciones para entender el código seed, escribir su propio código y conseguir que pasen todas las pruebas.
|
||||||
|
|
||||||
If it takes longer than two minutes to complete the challenge, you have two options:
|
Si toma más de dos minutos completar el desafío, tienes dos opciones:
|
||||||
|
|
||||||
- Simplify the challenge, or
|
- Simplificar el desafío, o
|
||||||
- Split the challenge into two challenges.
|
- Dividir el desafío en dos desafíos.
|
||||||
|
|
||||||
The 2-minute rule forces you, the challenge designer, to make your directions concise, your seed code clear, and your tests straight-forward.
|
La regla de 2 minutos te obliga, como diseñador de desafíos, a hacer tus instrucciones concisas, tu código de semilla claro y tus pruebas directas.
|
||||||
|
|
||||||
We track how long it takes for campers to solve changes and use this information to identify challenges that need to be simplified or split.
|
Seguimos el tiempo que tardan los campistas en resolver los cambios y utilizar esta información para identificar los desafíos que necesitan ser simplificados o divididos.
|
||||||
|
|
||||||
### Modularity
|
### Modularidad
|
||||||
|
|
||||||
Each challenge should teach exactly one concept, and that concept should be apparent from the challenge's name.
|
Cada desafío debería enseñar exactamente un concepto, y ese concepto debería quedar claro en el nombre del desafío.
|
||||||
|
|
||||||
We can reinforce previously covered concepts through repetition and variations - for example, introducing h1 elements in one challenge, then h3 elements a few challenges later.
|
Podemos reforzar los conceptos anteriormente cubiertos mediante la repetición y las variaciones - por ejemplo, introduciendo elementos h1 en un desafío, luego h3 elementos unos pocos retos más adelante.
|
||||||
|
|
||||||
Our goal is to have thousands of 2-minute challenges. These can flow together and reiterate previously-covered concepts.
|
Nuestro objetivo es tener miles de retos de 2 minutos. Estos pueden fluir juntos y reiterar conceptos cubiertos anteriormente.
|
||||||
|
|
||||||
### Formatting challenge text
|
### Formateando el texto del desafío
|
||||||
|
|
||||||
Here are specific formatting guidelines for challenge text and examples:
|
Aquí hay pautas de formato específicas para el texto del desafío y los ejemplos:
|
||||||
|
|
||||||
- Language keywords go in `<code>` tags. For example, HTML tag names or CSS property names
|
- Las palabras clave del lenguaje van en etiquetas `<code>`. Por ejemplo, nombres de etiquetas HTML o nombres de propiedades CSS
|
||||||
- The first instance of a keyword when it's being defined, or general keywords (e.g. "object" or "immutable") go in `<dfn>` tags
|
- La primera instancia de una palabra clave cuando está siendo definida, o palabras clave generales (por ejemplo, "object" o "inmutable") ir en etiquetas `<dfn>`
|
||||||
- References to code parts (i.e. function, method or variable names) should be wrapped in `<code>` tags. See example below:
|
- Las referencias a las partes del código (es decir, funciones, métodos o nombres de variables) deben estar envueltas en etiquetas `<code>`. Ver el ejemplo a continuación:
|
||||||
```md
|
```md
|
||||||
Use <code>parseInt</code> to convert the variable <code>realNumber</code> into an integer.
|
Use <code>parseInt</code> para convertir la variable <code>real Number</code> en un entero.
|
||||||
```
|
```
|
||||||
- References to file names and path directories (e.g. `package.json`, `src/components`) should be wrapped in `<code>` tags.
|
- Las referencias a los nombres de archivos y directorios de rutas (por ejemplo, `package.json`, `src/components`) deben estar envueltas en etiquetas `<code>`.
|
||||||
- Multi-line code blocks **must be preceded by an empty line**. The next line must start with three backticks followed immediately by one of the [supported languages](https://prismjs.com/#supported-languages). To complete the code block, you must start a newline which only has three backticks and **another empty line**. See example below:
|
- Los bloques de código de múltiples líneas **deben estar precedidos por una línea vacía**. La siguiente línea debe comenzar con tres backticks seguidos inmediatamente por uno de los [idiomas soportados](https://prismjs.com/#supported-languages). Para completar el bloque de código, debe iniciar una nueva línea que solo tiene tres backticks y **otra línea vacía**. Ver el ejemplo a continuación:
|
||||||
|
|
||||||
**Note:** If you are going to use an example code in YAML, use `yaml` instead of `yml` for the language to the right of the backticks.
|
**Nota:** Si vas a utilizar un código de ejemplo en YAML, use `yaml` en lugar de `yml` para el idioma a la derecha de los backticks.
|
||||||
|
|
||||||
````md
|
````md
|
||||||
The following is an example of code:
|
El siguiente es un ejemplo de código:
|
||||||
|
|
||||||
```{language}
|
```{language}
|
||||||
|
|
||||||
[YOUR CODE HERE]
|
[TU CÓDIGO AQUÍ]
|
||||||
|
|
||||||
````
|
````
|
||||||
````
|
````
|
||||||
|
|
||||||
- Additional information in the form of a note should be formatted `<strong>Note:</strong> Rest of note text...`
|
- La información adicional en forma de una nota debe ser formateada `<strong>Nota:</strong> El texto restante de la nota...
|
||||||
- If multiple notes are needed, then list all of the notes in separate sentences using the format `<strong>Notes:</strong> First note text. Second note text.`.
|
- Si se necesitan varias notas. then list all of the notes in separate sentences using the format `<strong>Note:</strong> First note text. Segunda nota texto.`.
|
||||||
- Use single-quotes where applicable
|
- Utilizar comillas simples donde sea aplicable
|
||||||
|
|
||||||
**Note:** The equivalent _Markdown_ should be used, where applicable, in place of _HTML_ tags.
|
**Nota:** Se debe utilizar el equivalente _Markdown_ en lugar de etiquetas _HTML_.
|
||||||
|
|
||||||
## Writing tests
|
## Pruebas de escritura
|
||||||
|
|
||||||
Challenges should have the minimum number of tests necessary to verify that a camper understands a concept.
|
Los desafíos deben tener el número mínimo de pruebas necesarias para verificar que un campador entienda un concepto.
|
||||||
|
|
||||||
Our goal is to communicate the single point that the challenge is trying to teach, and test that they have understood that point.
|
Nuestro objetivo es comunicar el único punto que el reto está tratando de enseñar y comprobar que han comprendido ese punto.
|
||||||
|
|
||||||
Challenge tests can make use of the Node.js and Chai.js assertion libraries. Also, if needed, user-generated code can be accessed in the `code` variable.
|
Las pruebas de desafío pueden hacer uso de las librerías de aserción de Node.js y Chai.js. Además, si es necesario, se puede acceder al código generado por el usuario en la variable `code`.
|
||||||
|
|
||||||
## Formatting seed code
|
## Código de semilla de formato
|
||||||
|
|
||||||
Here are specific formatting guidelines for the challenge seed code:
|
Aquí están las pautas de formato específicas para el código de semilla del reto:
|
||||||
|
|
||||||
- Use two spaces to indent
|
- Utilice dos espacios para indentar
|
||||||
- JavaScript statements end with a semicolon
|
- Las declaraciones de JavaScript terminan con punto y coma
|
||||||
- Use double quotes where applicable
|
- Utilice comillas dobles donde sea aplicable
|
||||||
|
|
||||||
### Seed code comments
|
### Comentarios de código de semilla
|
||||||
|
|
||||||
We have a [comment dictionary](/curriculum/dictionaries/english/comments.js) that contains the only comments that can be used within the seed code. The exact case and spacing of the dictionary comment must be used. The comment dictionary should not be expanded without prior discussion with the dev-team.
|
Tenemos un [diccionario de comentarios](/curriculum/dictionaries/english/comentarios. ) que contiene los únicos comentarios que pueden ser usados dentro del código de semilla. El caso exacto y el espaciado del comentario del diccionario deben ser utilizados. El diccionario de comentarios no debe ser expandido sin una discusión previa con el equipo de desarrollo.
|
||||||
|
|
||||||
Comments used should have a space between the comment characters and the comment themselves. In general comments should be used sparingly. Always consider rewriting a challenge's description or instructions if it could avoid using a seed code comment.
|
Los comentarios usados deben tener un espacio entre los caracteres del comentario y los propios comentarios. En general, los comentarios deben ser utilizados con esparcimiento. Siempre considere reescribir la descripción o las instrucciones de un desafío si pudiera evitar usar un comentario de código de semilla.
|
||||||
|
|
||||||
Example of valid single line JavaScript comment:
|
Ejemplo de comentario válido de JavaScript en una sola línea:
|
||||||
|
|
||||||
```js
|
```js
|
||||||
// Only change code below this line
|
// Sólo cambiar el código debajo de esta línea
|
||||||
````
|
````
|
||||||
|
|
||||||
Example of a valid CSS comment:
|
Ejemplo de un comentario CSS válido:
|
||||||
|
|
||||||
```js
|
```js
|
||||||
/* Only change code above this line */
|
/* Sólo cambiar el código por encima de esta línea */
|
||||||
```
|
```
|
||||||
|
|
||||||
If a challenge only has a single place where code changes are needed, please use the comments in the following example to instruct the user where changes should be made.
|
Si un desafío sólo tiene un solo lugar donde se necesitan cambios de código. utilice los comentarios en el siguiente ejemplo para indicar al usuario dónde deben realizarse los cambios.
|
||||||
|
|
||||||
```js
|
```js
|
||||||
var a = 3;
|
var a = 3;
|
||||||
var b = 17;
|
var b = 17;
|
||||||
var c = 12;
|
var c = 12;
|
||||||
|
|
||||||
// Only change code below this line
|
// Sólo cambiar el código debajo de esta línea
|
||||||
a = a + 12;
|
a = a + 12;
|
||||||
b = 9 + b;
|
b = 9 + b;
|
||||||
c = c + 7;
|
c = c + 7;
|
||||||
```
|
```
|
||||||
|
|
||||||
If a challenge has multiple places where the user is expected to change code (i.e. the React challenges)
|
Si un desafío tiene múltiples lugares donde se espera que el usuario cambie el código (es decir, los desafíos de React)
|
||||||
|
|
||||||
```jsx
|
```jsx
|
||||||
class MyComponent extends React.Component {
|
clase MyComponent extends React.Component {
|
||||||
constructor(props) {
|
constructor(props) {
|
||||||
super(props);
|
super(props);
|
||||||
this.state = {
|
esto. tate = {
|
||||||
text: "Hello"
|
text: "Hola"
|
||||||
};
|
};
|
||||||
// Change code below this line
|
// Cambia el código debajo de esta línea
|
||||||
|
|
||||||
// Change code above this line
|
// Cambia el código encima de esta línea
|
||||||
}
|
}
|
||||||
handleClick() {
|
handleClick() {
|
||||||
this.setState({
|
esto. etState({
|
||||||
text: "You clicked!"
|
text: "¡Has hecho clic!"
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
render() {
|
render() {
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
{ /* Change code below this line */ }
|
{ /* Cambiar código debajo de esta línea */ }
|
||||||
<button>Click Me</button>
|
<button>Haga clic en Me</button>
|
||||||
{ /* Change code above this line */ }
|
{ /* Cambiar código sobre esta línea */ }
|
||||||
<h1>{this.state.text}</h1>
|
<h1>{this.state.text}</h1>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
@ -318,153 +318,153 @@ class MyComponent extends React.Component {
|
|||||||
};
|
};
|
||||||
```
|
```
|
||||||
|
|
||||||
### Translation of seed code comments
|
### Traducción de comentarios de código de semilla
|
||||||
|
|
||||||
There are separate comment dictionaries for each language. The [English vesion of the comment dictionary](/curriculum/dictionaries/english/comments.js) is the basis for the translations found in the corresponding non-English versions of the files. The non-English version of the Chinese comment dictionary would be located at `/curriculum/dictionaries/chinese/comments.js`. Each dictionary consists of an array of objects with a unique `id` property and a `text` property. Only the `text` should be modified to encompass the translation of the corresponding English comment.
|
Hay diccionarios de comentarios separados para cada idioma. La [diversión inglesa del diccionario de comentarios](/curriculum/dictionaries/english/comments.js) es la base para las traducciones que se encuentran en las versiones no inglesas correspondientes de los archivos. La versión no inglesa del diccionario de comentarios en chino se encontraría en `/curriculum/dictionaries/chinese/comments.js`. Cada diccionario consiste en un array de objetos con una propiedad `id` única y una propiedad `texto`. Solo el texto `` debe ser modificado para incluir la traducción del comentario correspondiente en inglés.
|
||||||
|
|
||||||
Some comments may contain a word/phrase that should not be translated. For example, variable names or proper library names like "React" should not be translated. See the comment below as an example. The word `myGlobal` should not be translated.
|
Algunos comentarios pueden contener una palabra/frase que no debe traducirse. Por ejemplo, nombres de variables o nombres de librerías apropiados como "React" no deben ser traducidos. Ver el comentario a continuación como ejemplo. La palabra `myGlobal` no debe traducirse.
|
||||||
|
|
||||||
```text
|
```text
|
||||||
Declare the myGlobal variable below this line
|
Declarar la variable myGlobal debajo de esta línea
|
||||||
```
|
```
|
||||||
> [!NOTE]
|
> [!NOTE]
|
||||||
>
|
>
|
||||||
> We are working on an integration to make it possible to work on i18n for the comment dictionary.
|
> Estamos trabajando en una integración que permita trabajar en i18n para el diccionario de comentarios.
|
||||||
|
|
||||||
## Hints and Solutions
|
## Consejos y soluciones
|
||||||
|
|
||||||
Each challenge has a `Get a Hint` button, so a user can access any hints/solutions which have been created for the challenge. Curriculum hints/solutions topics are located on [our forum](https://forum.freecodecamp.org/c/guide) under the `Guide` category.
|
Cada desafío tiene un botón `Obtener un pista` para que un usuario pueda acceder a cualquier pista/solución que haya sido creada para el desafío. Temas de sugerencias/soluciones de currículo se encuentran en [nuestro foro](https://forum.freecodecamp.org/c/guide) bajo la categoría `Guía`.
|
||||||
|
|
||||||
If you find a problem with an existing challenge's hints/solutions topic, you can make suggestions in the [contributors category](https://forum.freecodecamp.org/c/contributors) on the forum. Moderators and users with trust level 3 will review the comments and decide whether or not to include the changes in the corresponding hint/solutions topic.
|
Si encuentras un problema con el tema de sugerencias/soluciones de un desafío, puedes hacer sugerencias en la categoría de [colaboradores](https://forum.freecodecamp.org/c/contributors) en el foro. Los moderadores y usuarios con nivel de confianza 3 revisarán los comentarios y decidirán si incluir o no los cambios en el tema correspondiente.
|
||||||
|
|
||||||
### Adding new Challenge hints/solutions Topics
|
### Añadir nuevos temas de sugerencias/soluciones de Desafío
|
||||||
|
|
||||||
Take the following steps when adding a new challenge hints/solutions related topic.
|
Da los siguientes pasos al añadir nuevas pistas y soluciones relacionadas con el tema.
|
||||||
|
|
||||||
1. Start by following the same steps for creating a new topic but review the next for creating the title.
|
1. Comience siguiendo los mismos pasos para crear un nuevo tema pero revise el siguiente para crear el título.
|
||||||
2. The title of the topic should start with `freeCodeCamp Challenge Guide:` concatenated with the actual title of the curriculum challenge. For example, if the challenge is named "`Chunky Monkey`", the topic title would be "`freeCodeCamp Challenge Guide: Chunky Monkey`".
|
2. El título del tema debe comenzar con `Guía de Desafío gratuita:` concatenada con el título real del desafío curricular. Por ejemplo, si el desafío se llama "`Chunky Monkey`", el título del tema sería "`Guía gratuita del Desafío CodeCamp: Chunky Monkey`".
|
||||||
3. `camperbot` should be the owner of these topics/posts, so you will need to request an admin to change the ownership of the main post to `camperbot`.
|
3. `camperbot` debe ser el dueño de estos temas/posts, así que necesitarás solicitar a un administrador que cambie la propiedad de la publicación principal a `camperbot`.
|
||||||
4. Once the new topic is created, a forum topic id is created. It is located at the end of the forum topic URL. This id must be added to the frontmatter of the curriculum challenge file via the normal pull request process for the `Get a Hint` button to link to the topic.
|
4. Una vez creado el nuevo tema, se crea un identificador del tema del foro. Se encuentra al final de la URL del tema del foro. Este id debe añadirse a la parte frontal del archivo de desafío curriculum a través del proceso normal de pull request para el botón `Obtener una pista` para vincular al tema.
|
||||||
|
|
||||||
### Guidelines for content of hints and solutions topics
|
### Orientaciones para el contenido de pistas y temas de soluciones
|
||||||
|
|
||||||
When proposing a solution for a curriculum challenge related Guide topic, the full code must be added. This includes all the original seed code plus any changes needed to pass all the challenge tests. The following template should be used when creating new hints/solutions topics:
|
Cuando se proponga una solución para un tema de guía relacionado con el desafío curricular, se debe añadir el código completo. Esto incluye todo el código original de semilla más cualquier cambio necesario para pasar todas las pruebas de desafío. La siguiente plantilla debe utilizarse al crear nuevos temas de sugerencias/soluciones:
|
||||||
|
|
||||||
````md
|
````md
|
||||||
# Challenge Name Goes Here
|
# El Nombre del Desafío va aquí
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Problem Explanation
|
## Explicación de Problemas
|
||||||
|
|
||||||
This summarizes what need to be done without just restating the challenge description and/or instructions. This is an optional section
|
Esto resume lo que hay que hacer sin simplemente reiniciar la descripción del desafío y/o las instrucciones. Esta es una sección opcional
|
||||||
|
|
||||||
#### Relevant Links
|
#### Enlaces relevantes
|
||||||
|
|
||||||
- [Link Text](link_url_goes_here)
|
- [Enlace Text](link_url_goes_here)
|
||||||
- [Link Text](link_url_goes_here)
|
- [Link Text](link_url_goes_here)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Hints
|
## Consejos
|
||||||
|
|
||||||
### Hint 1
|
### Pista 1
|
||||||
|
|
||||||
Hint goes here
|
La pista va aquí
|
||||||
|
|
||||||
### Hint 2
|
### Pista 2
|
||||||
|
|
||||||
Hint goes here
|
La pista va aquí
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Solutions
|
## Soluciones
|
||||||
|
|
||||||
<details><summary>Solution 1 (Click to Show/Hide)</summary>
|
<details><summary>Soluciones 1 (Haz clic en Mostrar/Ocultar)</summary>
|
||||||
|
|
||||||
```js
|
```js
|
||||||
function myFunc() {
|
function myFunc() {
|
||||||
console.log('Hello World!');
|
consola. og('¡Hola Mundo!');
|
||||||
}
|
}
|
||||||
````
|
````
|
||||||
|
|
||||||
#### Code Explanation
|
#### Explicación del código
|
||||||
|
|
||||||
- Code explanation goes here
|
- La explicación del código va aquí
|
||||||
- Code explanation goes here
|
- La explicación del código va aquí
|
||||||
|
|
||||||
#### Relevant Links
|
#### Enlaces relevantes
|
||||||
|
|
||||||
- [Link Text](link_url_goes_here)
|
- [Texto del enlace](link_url_goes_here)
|
||||||
- [Link Text](link_url_goes_here)
|
- [Texto del enlace](link_url_goes_here)
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
````
|
````
|
||||||
|
|
||||||
## Testing Challenges
|
## Desafíos de prueba
|
||||||
|
|
||||||
Before you [create a pull request](how-to-open-a-pull-request.md) for your changes, you need to validate that the changes you have made do not inadvertently cause problems with the challenge.
|
Antes de ti [crea una solicitud de pull request](how-to-open-a-pull-request. d) para tus cambios, necesitas validar que los cambios que has realizado no causan inadvertidamente problemas con el desafío.
|
||||||
|
|
||||||
1. To test all challenges run the below command from the root directory
|
1. Para probar todos los desafíos, ejecute el siguiente comando desde el directorio raíz
|
||||||
|
|
||||||
````
|
````
|
||||||
npm run test:curriculum
|
npm run test:curriculum
|
||||||
```
|
```
|
||||||
|
|
||||||
2. You can also test a block or a superblock of challenges with these commands
|
2. También puedes probar un bloque o un superbloque de desafíos con estos comandos
|
||||||
|
|
||||||
```
|
```
|
||||||
npm run test:curriculum --block='Basic HTML and HTML5'
|
npm run test:curriculum --block='HTML básico y HTML5'
|
||||||
```
|
```
|
||||||
|
|
||||||
```
|
```
|
||||||
npm run test:curriculum --superblock=responsive-web-design
|
npm run test:curriculum --superblock=responsive-web-design
|
||||||
```
|
```
|
||||||
|
|
||||||
You are also able to test one challenge individually by performing the following steps:
|
También puedes probar un desafío individualmente realizando los siguientes pasos:
|
||||||
|
|
||||||
1. Switch to the `curriculum` directory:
|
1. Cambiar al directorio `curriculum`:
|
||||||
|
|
||||||
```
|
```
|
||||||
cd curriculum
|
currículo de cd
|
||||||
```
|
```
|
||||||
|
|
||||||
2. Run the following for each challenge file for which you have changed:
|
2. Ejecuta lo siguiente por cada archivo de desafío por el cual has cambiado:
|
||||||
|
|
||||||
```
|
```
|
||||||
npm run test -- -g 'the full English title of the challenge'
|
npm run test -- -g 'el título completo en inglés del challenge'
|
||||||
```
|
```
|
||||||
|
|
||||||
Once you have verified that each challenge you've worked on passes the tests, [please create a pull request](https://github.com/freeCodeCamp/freeCodeCamp/blob/master/docs/how-to-open-a-pull-request.md).
|
Una vez que hayas verificado que cada desafío que has trabajado pasa las pruebas, [por favor crea una pull request](https://github.com/freeCodeCamp/freeCodeCamp/blob/master/docs/how-to-open-a-pull-request.md).
|
||||||
|
|
||||||
> [!TIP]
|
> [!TIP]
|
||||||
> You can set the environment variable `LOCALE` in the `.env` to the language of the challenge(s) you need to test.
|
> Puedes establecer la variable de entorno `LOCALE` en el `.env` al idioma de los desafíos que necesitas probar.
|
||||||
>
|
>
|
||||||
> The currently accepted values are `english` and `chinese`, with `english` being set by default.
|
> Los valores actualmente aceptados son `english` y `chinese`, con `english` siendo establecido por defecto.
|
||||||
|
|
||||||
## Upcoming Challenge Template
|
## La próxima plantilla de desafío
|
||||||
|
|
||||||
The challenge template in the process of being updated to a cleaner, less nested structure. This has not been completely finalized, but the following should close to the final structure:
|
La plantilla de desafío en proceso de ser actualizada a una estructura más limpia y menos anidada. Esto no ha sido finalizado completamente, pero lo siguiente debería estar cerca de la estructura final:
|
||||||
|
|
||||||
````mdx
|
````mdx
|
||||||
|
|
||||||
---
|
---
|
||||||
id: Unique identifier (alphanumerical, MongoDB_id)
|
id: Identificador único (alfanumérico, MongoDB_id)
|
||||||
title: 'Challenge Title'
|
title: 'Título del Desafío'
|
||||||
challengeType: Integer, defined in `client/utils/challengeTypes.js`
|
challengeType: Integer, definido en `client/utils/challengeTypes. s`
|
||||||
videoUrl: 'url of video explanation'
|
videoUrl: 'url of video explication'
|
||||||
forumTopicId: 12345
|
forumTopicId: 12345
|
||||||
---
|
---
|
||||||
|
|
||||||
import Script from './script.mdx';
|
import Script from './script. dx';
|
||||||
|
|
||||||
## --step-description--
|
## --step-description--
|
||||||
|
|
||||||
Description text, in markdown
|
Texto de descripción, en markdown
|
||||||
|
|
||||||
```html
|
```html
|
||||||
<div>
|
<div>
|
||||||
example code
|
código de ejemplo
|
||||||
</div>
|
</div>
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -472,18 +472,18 @@ Description text, in markdown
|
|||||||
|
|
||||||
![test-id-1]
|
![test-id-1]
|
||||||
|
|
||||||
There will be an arbitrary number of triples of ids, instructions (in markdown) and code blocks.
|
Habrá un número arbitrario de triples de ids, instrucciones (en markdown) y bloques de código.
|
||||||
|
|
||||||
```js
|
```js
|
||||||
Code for test one
|
Código para la prueba uno
|
||||||
```
|
```
|
||||||
|
|
||||||
![test-id-2]
|
![test-id-2]
|
||||||
|
|
||||||
More instructions in markdown syntax
|
Más instrucciones en la sintaxis markdown
|
||||||
|
|
||||||
```js
|
```js
|
||||||
More code
|
Más código
|
||||||
```
|
```
|
||||||
|
|
||||||
## --step-seed--
|
## --step-seed--
|
||||||
@ -491,13 +491,13 @@ More code
|
|||||||
### --before-user-code--
|
### --before-user-code--
|
||||||
|
|
||||||
```lang
|
```lang
|
||||||
Code evaluated before the user’s
|
Código evaluado antes del usuario
|
||||||
```
|
```
|
||||||
|
|
||||||
### --after-user-code--
|
### --after-user-code--
|
||||||
|
|
||||||
```lang
|
```lang
|
||||||
Code evaluated after the user’s, and just before the tests
|
Código evaluado después del usuario, y justo antes de las pruebas
|
||||||
```
|
```
|
||||||
|
|
||||||
### --seed-content--
|
### --seed-content--
|
||||||
@ -505,15 +505,15 @@ Code evaluated after the user’s, and just before the tests
|
|||||||
![index-html]
|
![index-html]
|
||||||
|
|
||||||
```html
|
```html
|
||||||
Some html
|
Algunos html
|
||||||
```
|
```
|
||||||
|
|
||||||
```css
|
```css
|
||||||
Some css
|
Alguno de censura
|
||||||
```
|
```
|
||||||
|
|
||||||
```js
|
```js
|
||||||
Some js
|
Algunos js
|
||||||
```
|
```
|
||||||
|
|
||||||
![index-js]
|
![index-js]
|
||||||
@ -522,37 +522,37 @@ Some js
|
|||||||
|
|
||||||
|
|
||||||
<h1 spaces-before="0">
|
<h1 spaces-before="0">
|
||||||
--solution-marker--
|
--solución-marcador--
|
||||||
</h1>
|
</h1>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<p spaces-before="0">
|
<p spaces-before="0">
|
||||||
Exactly the same as the seeds section
|
Exactamente lo mismo que la sección de semillas
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<h2 spaces-before="0">
|
<h2 spaces-before="0">
|
||||||
--next-solution-marker
|
--siguiente-solución-marcador
|
||||||
</h2>
|
</h2>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<p spaces-before="0">
|
<p spaces-before="0">
|
||||||
Same again
|
Lo mismo otra vez
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<h1 spaces-before="0">
|
<h1 spaces-before="0">
|
||||||
--question-marker--
|
--pregunta-marcador--
|
||||||
</h1>
|
</h1>
|
||||||
|
|
||||||
<h2 spaces-before="0">
|
<h2 spaces-before="0">
|
||||||
--text-marker--
|
--marcador de texto--
|
||||||
</h2>
|
</h2>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<p spaces-before="0">
|
<p spaces-before="0">
|
||||||
The question would go here (only used for video challenges)
|
La pregunta iría aquí (sólo se utiliza para desafíos de vídeo)
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<h2 spaces-before="0">
|
<h2 spaces-before="0">
|
||||||
@ -562,23 +562,23 @@ Some js
|
|||||||
|
|
||||||
|
|
||||||
<p spaces-before="0">
|
<p spaces-before="0">
|
||||||
Answer 1
|
Respuesta 1
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<hr />
|
<hr />
|
||||||
|
|
||||||
<p spaces-before="0">
|
<p spaces-before="0">
|
||||||
Answer 2
|
Respuesta 2
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<hr />
|
<hr />
|
||||||
|
|
||||||
<p spaces-before="0">
|
<p spaces-before="0">
|
||||||
More answers
|
Más respuestas
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<h2 spaces-before="0">
|
<h2 spaces-before="0">
|
||||||
--solution-marker--
|
--solución-marcador--
|
||||||
</h2>
|
</h2>
|
||||||
|
|
||||||
|
|
||||||
@ -594,13 +594,13 @@ Some js
|
|||||||
</p>
|
</p>
|
||||||
|
|
||||||
<h3 spaces-before="0">
|
<h3 spaces-before="0">
|
||||||
Useful Links
|
Enlaces útiles
|
||||||
</h3>
|
</h3>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<p spaces-before="0">
|
<p spaces-before="0">
|
||||||
Creating and Editing Challenges:
|
Desafíos de creación y edición:
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
|
||||||
@ -608,14 +608,14 @@ Some js
|
|||||||
<ol start="1">
|
<ol start="1">
|
||||||
<li>
|
<li>
|
||||||
<p spaces-before="0">
|
<p spaces-before="0">
|
||||||
<a href="https://github.com/freeCodeCamp/freeCodeCamp/blob/master/client/utils/challengeTypes.js#L1-L13">Challenge types</a> - what the numeric challenge type values mean (enum).
|
<a href="https://github.com/freeCodeCamp/freeCodeCamp/blob/master/client/utils/challengeTypes.js#L1-L13">Tipos de desafío</a> - lo que significan los valores numéricos del tipo de desafío (enum).
|
||||||
</p>
|
</p>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
||||||
<li>
|
<li>
|
||||||
<p spaces-before="0">
|
<p spaces-before="0">
|
||||||
<a href="https://www.youtube.com/watch?v=iOdD84OSfAE#t=2h49m55s">Contributing to FreeCodeCamp - Writing ES6 Challenge Tests</a> - a video following <a href="https://twitter.com/ArrowoodTech">Ethan Arrowood</a> as he contributes to the old version of the curriculum.
|
<a href="https://www.youtube.com/watch?v=iOdD84OSfAE#t=2h49m55s">Contribuyendo a FreeCodeCamp - Escribiendo Pruebas de Desafío de ES6</a> - un vídeo que sigue a <a href="https://twitter.com/ArrowoodTech">Ethan Arrowood</a> mientras contribuye a la versión antigua del currículo.
|
||||||
</p>
|
</p>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
@ -1,54 +1,54 @@
|
|||||||
# How to work on the docs theme
|
# Cómo trabajar en la documentación
|
||||||
|
|
||||||
> [!NOTE] A quick reminder that you do not need to setup anything for working on the content for the documentation site.
|
> [!NOTE] Recuerda que no necesitas configurar nada para trabajar en el contenido de la documentación.
|
||||||
>
|
>
|
||||||
> To work on the contributing guidelines, you can edit or add files in the `docs` directory [available here](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/docs). When your changes are merged, it will be made available automatically at the documentation site.
|
> Para trabajar en las pautas de contribución, puedes editar o agregar archivos al directorio `docs`, [disponible aquí](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/docs). Cuando tus cambios se fusionen, estarán disponibles automáticamente en la página web.
|
||||||
|
|
||||||
## Structure of the docs website
|
## Estructura del sitio
|
||||||
|
|
||||||
The site is generated using [`docsify`](https://docsify.js.org), and served using GitHub pages.
|
El sitio es generado utilizando [`docsify`](https://docsify.js.org), y servido por medio de GitHub Pages.
|
||||||
|
|
||||||
Typically you would not need to change any configuration or build the site locally. In case you are interested, here is how it works:
|
Normalmente, no necesitarías cambiar ninguna configuración o construir el sitio localmente. En caso de que te interese, así es cómo funciona:
|
||||||
|
|
||||||
- The homepage's source for this site is available in [`docs/index.html`](index.html).
|
- El código de la página de inicio para este sitio está disponible en [`docs/index.html`](index.html).
|
||||||
- We serve this file as a SPA using `docsify` and GitHub Pages.
|
- Servimos este archivo como SPA utilizando `docsify` y GitHub Pages.
|
||||||
- The `docsify` script generates the content of `markdown` files in `docs` directory on demand.
|
- El script `docsify` genera el contenido de los archivos`markdown` en el directorio `docs` en demanda.
|
||||||
- The homepage is generated from the [`_coverpage.md`](_coverpage.md).
|
- La página de inicio se genera a partir del [`_coverpage.md`](_coverpage.md).
|
||||||
- the sidebar navigation is generated from [`_sidebar.md`](_sidebar.md).
|
- La barra de navegación lateral es generada desde [`_sidebar.md`](_sidebar.md).
|
||||||
|
|
||||||
## Serving the documentation site locally
|
## Sirviendo el sitio de documentación localmente
|
||||||
|
|
||||||
Clone freeCodeCamp:
|
Clona freeCodeCamp:
|
||||||
|
|
||||||
```console
|
```console
|
||||||
git clone https://github.com/freeCodeCamp/freeCodeCamp.git
|
git clone https://github.com/freeCodeCamp/freeCodeCamp.git
|
||||||
docsify serve docs
|
docsify serve docs
|
||||||
```
|
```
|
||||||
|
|
||||||
Install `docsify`:
|
Instala `docsify`:
|
||||||
|
|
||||||
```console
|
```console
|
||||||
npm install -g docsify
|
npm install -g docsify
|
||||||
```
|
```
|
||||||
|
|
||||||
and serve the `/docs` directory
|
y sirve el directorio `/docs`
|
||||||
|
|
||||||
```console
|
```console
|
||||||
docsify serve docs
|
docsify serve docs
|
||||||
```
|
```
|
||||||
|
|
||||||
Alternatively, if you have installed freeCodeCamp locally (see the local setup guide), we bundle the CLI with the development tools so you can run any of the below commands as needed from the root of the repo:
|
Alternativamente, si ha instalado freeCodeCamp localmente (vea la guía de configuración local), empaquetamos la CLI con las herramientas de desarrollo para que puedas ejecutar cualquiera de los siguientes comandos según sea necesario desde la raíz del repo:
|
||||||
|
|
||||||
### Serve and launch the documentation site only
|
### Servir y lanzar el sitio de documentación solamente
|
||||||
|
|
||||||
```console
|
```console
|
||||||
npm run docs:serve
|
npm run docs:serve
|
||||||
```
|
```
|
||||||
|
|
||||||
### Serve the documentation site alongside freeCodeCamp locally:
|
### Servir el sitio de documentación junto a freeCodeCamp localmente:
|
||||||
|
|
||||||
```console
|
```console
|
||||||
npm run develop
|
npm run develop
|
||||||
```
|
```
|
||||||
|
|
||||||
> The documentation site should be available at <http://localhost:3200>
|
> El sitio de documentación debería estar disponible en <http://localhost:3200>
|
@ -1,31 +1,31 @@
|
|||||||
# How to work on freeCodeCamp.org's developer news theme
|
# Cómo trabajar en las noticias para desarrolladores de freeCodeCamp.org
|
||||||
|
|
||||||
The developer news also known as [`/news`](https://www.freecodecamp.org/news) site is powered by [Ghost](https://ghost.org/). We use a custom theme for the look and feel of the site. The source code of the theme is available here: <https://github.com/freeCodeCamp/news-theme>.
|
Las noticias del desarrollador también conocidas como el sitio [`/news`](https://www.freecodecamp.org/news) funciona con [Ghost](https://ghost.org/). Utilizamos un tema personalizado para el aspecto del sitio. El código fuente del tema está disponible aquí: <https://github.com/freeCodeCamp/news-theme>.
|
||||||
|
|
||||||
## The Theme
|
## El Tema
|
||||||
|
|
||||||
Ghost uses a simple templating language called [Handlebars](http://handlebarsjs.com/) for its themes. The theme used on `/news` is based off of the default [casper theme](https://github.com/TryGhost/Casper).
|
Ghost utiliza un lenguaje de plantillas sencillo llamado [Handlebars](http://handlebarsjs.com/) para sus temas. El tema usado en `/news` se basa en el tema predeterminado [casper](https://github.com/TryGhost/Casper).
|
||||||
|
|
||||||
The default theme pretty heavily so that it should be fairly easy to work out what's going on just by reading the code and the comments. Once you feel comfortable with how everything works, Ghost also has a full [theme API documentation](https://themes.ghost.org) which explains every possible Handlebars helper and template.
|
El tema por defecto es bastante fuerte, por lo que debería ser bastante fácil averiguar lo que está pasando con sólo leer el código y los comentarios. Una vez que te sientas cómodo con cómo funciona todo, Ghost también tiene una completa [documentación API de temas](https://themes.ghost.org) que explica todos los posibles ayudantes de Handlebars y plantillas.
|
||||||
|
|
||||||
**The main files are:**
|
**Los archivos principales son:**
|
||||||
|
|
||||||
- `default.hbs` - The main template file
|
- `default.hbs` - El archivo de plantilla principal
|
||||||
- `index.hbs` - Used for the home page
|
- `index.hbs` - Utilizado para la página de inicio
|
||||||
- `post.hbs` - Used for individual posts
|
- `post.hbs` - Utilizado para publicaciones individuales
|
||||||
- `page.hbs` - Used for individual pages
|
- `page.hbs` - Utilizado para páginas individuales
|
||||||
- `tag.hbs` - Used for tag archives
|
- `tag.hbs` - Utilizado para archivos de etiquetas
|
||||||
- `author.hbs` - Used for author archives
|
- `author.hbs` - Utilizado para archivos de autor
|
||||||
|
|
||||||
One really neat trick is that you can also create custom one-off templates just by adding the slug of a page to a template file. For example:
|
Un truco realmente bueno es que también puede crear plantillas personalizadas sólo añadiendo un trozo pequeño de una página a un archivo de plantilla. Por ejemplo:
|
||||||
|
|
||||||
- `page-about.hbs` - Custom template for the `/about/` page
|
- `page-about.hbs` - plantilla personalizada para la página `/about/`
|
||||||
- `tag-news.hbs` - Custom template for `/tag/news/` archive
|
- `tag-news.hbs` - plantilla personalizada para `/tag/news/` archivo
|
||||||
- `author-ali.hbs` - Custom template for `/author/ali/` archive
|
- `author-ali.hbs` - plantilla personalizada para `/author/ali/` archivo
|
||||||
|
|
||||||
## Development
|
## Desarrollo
|
||||||
|
|
||||||
1. Get Ghost installed locally.
|
1. Obtén Ghost instalado localmente.
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
npm install -g ghost-cli@latest
|
npm install -g ghost-cli@latest
|
||||||
@ -38,62 +38,62 @@ One really neat trick is that you can also create custom one-off templates just
|
|||||||
ghost start
|
ghost start
|
||||||
```
|
```
|
||||||
|
|
||||||
> Note: Currently freeCodeCamp uses Ghost version `2.9.0`, so make sure you are using a version higher than that.
|
> Nota: actualmente freeCodeCamp usa la versión Ghost `2.9.0`, así que asegúrate de que estás usando una versión superior a eso.
|
||||||
|
|
||||||
Be sure to run `ghost` commands from the `ghost-local-site` directory. Follow additional instructions on [Ghost's official documentation](https://docs.ghost.org) if are not familiar with its interface.
|
Asegúrate de ejecutar los comandos de `ghost` desde el directorio `ghost-local-site`. Siga las instrucciones adicionales de la [documentación oficial de Ghost](https://docs.ghost.org) si no estás familiarizado con su interfaz.
|
||||||
|
|
||||||
2. Fork and clone the repository in your theme directory:
|
2. Crea una bifurcación (fork) y clona el repositorio en el directorio de tu tema:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
cd content/themes/
|
cd content/themes/
|
||||||
git clone https://github.com/YOUR_USERNAME/news-theme.git
|
git clone https://github.com/YOUR_USERNAME/news-theme.git
|
||||||
```
|
```
|
||||||
|
|
||||||
3. Make sure you have all the pre-requisites.
|
3. Asegúrese de tener todos los requisitos previos.
|
||||||
|
|
||||||
The theme styles are compiled using Gulp/PostCSS to polyfill future CSS spec. You'll need [Node.js](https://nodejs.org/). Make sure that your Node.js version is compatible with `ghost`.
|
Los estilos de los temas se compilan usando Gulp/PostCSS para polyfill las futuras especificaciones CSS. Necesitará [Node.js](https://nodejs.org/). Asegúrese de que su versión de Node.js es compatible con `ghost`.
|
||||||
|
|
||||||
4. Install dependencies and develop the theme
|
4. Instalar dependencias y desarrollar el tema
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
npm ci
|
npm ci
|
||||||
npm run develop
|
npm run develop
|
||||||
```
|
```
|
||||||
|
|
||||||
5. Now you can edit `/assets/css/` files, which will be compiled to `/assets/built/` automatically.
|
5. Ahora puedes editar los archivos `/assets/css/`, los cuales serán compilados a `/assets/built/` automáticamente.
|
||||||
|
|
||||||
6. Access the development site.
|
6. Acceder al sitio de desarrollo.
|
||||||
|
|
||||||
a. Enter `http://localhost:2368/ghost/` into your address bar. Continue with the setup prompted on the page (if running ghost for the first time).
|
a. Introduzca `http://localhost:2368/ghost/` en su barra de direcciones. Continúe con la configuración solicitada en la página (si se ejecuta Ghost por primera vez).
|
||||||
|
|
||||||
b. _(One-time only, during setup)_ Restart Ghost, on a separate terminal once to ensure the theme is available.
|
b. _(Solo una vez, durante la configuración)_ Reinicie Ghost, en una terminal por separado una vez para asegurarse de que el tema está disponible.
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
cd ghost-local-site
|
cd ghost-local-site
|
||||||
ghost restart
|
ghost restart
|
||||||
```
|
```
|
||||||
|
|
||||||
c. _(One-time only, during setup)_ Once you've done this, go to `http://localhost:2368/ghost/#/settings/design` and scroll to the bottom. Make sure you click activate on the `freecodecamp-news-theme`.
|
c. _(Solo una vez, durante la configuración)_ Una vez que hayas hecho esto, ve a `http://localhost:2368/ghost/#/settings/design` y desplázate hacia abajo. Asegúrate de hacer clic en activar en el `freecodecamp-news-theme`.
|
||||||
|
|
||||||
7. Zip the final code and make a pull-request
|
7. Comprime el código final y crea un pull-request
|
||||||
|
|
||||||
The `zip` Gulp task packages the theme files into `dist/<theme-name>.zip`, which we can then upload to the production site.
|
El `zip` que Gulp empaqueta son los archivos del tema en `dist/<theme-name>.zip`, los cuales podemos subir al sitio de producción.
|
||||||
|
|
||||||
When you make a PR, please make sure you have run the below script prior to commiting the code and sending a PR.
|
Cuando haga un PR, por favor asegúrese de haber ejecutado el script de abajo antes de confirmar el código y enviar un PR.
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
npm run zip
|
npm run zip
|
||||||
```
|
```
|
||||||
## Other Reference and resources
|
## Otros recursos y referencias
|
||||||
|
|
||||||
### PostCSS Features Used
|
### Funcionalidades utilizadas de PostCSS
|
||||||
|
|
||||||
- Autoprefixer - Don't worry about writing browser prefixes of any kind, it's all done automatically with support for the latest 2 major versions of every browser.
|
- Autoprefixer - No te preocupes por escribir prefijos del navegador de ningún tipo, todo se hace automáticamente con soporte para las 2 versiones más recientes de cada navegador.
|
||||||
- Variables - Simple pure CSS variables
|
- Variables - Variables CSS simples
|
||||||
- [Color Function](https://github.com/postcss/postcss-color-function)
|
- [Función de color](https://github.com/postcss/postcss-color-function)
|
||||||
|
|
||||||
### SVG Icons
|
### Iconos SVG
|
||||||
|
|
||||||
The theme uses inline SVG icons, included via Handlebars partials. You can find all icons inside `/partials/icons`. To use an icon just include the name of the relevant file, eg. To include the SVG icon in `/partials/icons/rss.hbs` - use `{{> "icons/rss"}}`.
|
El tema utiliza iconos SVG en línea, incluidos a través de parciales de Handlebars. Puedes encontrar todos los iconos dentro de `/partials/icons`. Para usar un icono simplemente incluya el nombre del archivo relevante, por ejemplo. Para incluir el icono SVG en `/partials/icons/rss.hbs` - usa `{{> "icons/rss"}}`.
|
||||||
|
|
||||||
You can add your own SVG icons in the same manner.
|
Puedes añadir tus propios iconos SVG de la misma manera.
|
@ -1,43 +1,43 @@
|
|||||||
The [freeCodeCamp.org](https://freecodecamp.org) community is possible thanks to thousands of kind volunteers like you. If you want to contribute your time and expertise, we would be excited to welcome you aboard.
|
La comunidad [freeCodeCamp.org](https://freecodecamp.org) es posible gracias a miles de buenos voluntarios como tú. Si gustas contribuir con tu tiempo y experiencia, estaremos encantados de darte la bienvenida.
|
||||||
|
|
||||||
> [!NOTE] Before you proceed, please take a quick 2 minutes to read our [Code of Conduct](https://www.freecodecamp.org/code-of-conduct). We strictly enforce it across our community so that contributing to freeCodeCamp.org is a safe, inclusive experience for everyone.
|
> [!NOTE] Antes de continuar, por favor tómate 2 minutos para leer nuestro [Código de Conducta](https://www.freecodecamp.org/code-of-conduct). Lo hacemos cumplir estrictamente en toda nuestra comunidad para que contribuir a freeCodeCamp.org sea una experiencia segura e inclusiva para todos.
|
||||||
|
|
||||||
Happy contributing.
|
Contribuyendo felizmente.
|
||||||
|
|
||||||
You are welcome to:
|
Te damos la bienvenida a:
|
||||||
|
|
||||||
- Create, update and fix bugs in our [curriculum](#curriculum).
|
- Crea, actualiza y corrige errores en nuestro [plan de estudios](#curriculum).
|
||||||
- Help us fix bugs in freeCodeCamp.org's [learning platform](#learning-platform).
|
- Ayúdarnos a corregir errores en la [plataforma de aprendizaje](#learning-platform) de freeCodeCamp.org.
|
||||||
- _(Coming Soon)_ Help us translate freeCodeCamp.org to world languages.
|
- _(Próximamente)_ Ayúdarnos a traducir freeCodeCamp.org a idiomas del mundo.
|
||||||
|
|
||||||
We answer the most common questions about contributing [in our contributor FAQ](/FAQ.md).
|
Respondemos a las preguntas más comunes sobre cómo contribuir [en nuestras preguntas frecuentes del contribuidor](/FAQ.md).
|
||||||
|
|
||||||
## Curriculum
|
## Plan de Estudios
|
||||||
|
|
||||||
Our curriculum is curated by the global freeCodeCamp community. This way, we are able to incorporate expert knowledge from volunteers like you.
|
Nuestro plan de estudios está elaborado por la comunidad global de freeCodeCamp. De esta forma, podemos incorporar el conocimiento avanzado proporcionado por voluntarios como tú.
|
||||||
|
|
||||||
You can help expand and improve the curriculum. You can also update project user stories to better-explain concepts. And you can improve our automated tests so that we can more accurately test people's code.
|
Puede ayudar a ampliar y mejorar el plan de estudios. También puede actualizar las historias de usuario del proyecto para explicar mejor los conceptos. Y puedes mejorar nuestras pruebas automatizadas para que podamos probar con más precisión el código de las personas.
|
||||||
|
|
||||||
**If you're interested in improving our curriculum, here's [how to contribute to the curriculum](how-to-work-on-coding-challenges.md).**
|
**Si estás interesado en mejorar nuestro plan de estudios, aquí mostramos [cómo contribuir al plan de estudios](how-to-work-on-coding-challenges.md).**
|
||||||
|
|
||||||
## Learning Platform
|
## Plataforma de Aprendizaje
|
||||||
|
|
||||||
Our learning platform runs on a modern JavaScript stack. It has various components, tools, and libraries. These include Node.js, MongoDB, OAuth 2.0, React, Gatsby, Webpack, and more.
|
Nuestra plataforma de aprendizaje se ejecuta sobre un apilar moderno de JavaScript. Tiene varios componentes, herramientas y librerías. Estas incluyen Node.js, MongoDB, OAuth 2.0, React, Gatsby, Webpack, entre otras.
|
||||||
|
|
||||||
Broadly, we use
|
Ampliamente, hacemos uso de
|
||||||
|
|
||||||
- a Node.js based API server
|
- un servidor con una API basada en Node.js
|
||||||
- a set of React-based client applications
|
- un conjunto de aplicaciones client-side basadas en React
|
||||||
- and testing scripts to evaluate camper-submitted curriculum projects.
|
- y scripts de prueba para evaluar los proyectos curriculares enviados por nuestros campers.
|
||||||
|
|
||||||
If you want to productively contribute to the curriculum, we recommend some familiarity with these tools.
|
Si deseas contribuir de forma activa a la mejora del plan de estudios, te recomendamos familiarizarte con las herramientas que se han mencionado.
|
||||||
|
|
||||||
If you want to help us improve our codebase...
|
Si deseas ayudarnos a mejorar nuestro código base...
|
||||||
|
|
||||||
**you can either use Gitpod, a free online dev environment that starts a ready-to-code dev environment for freeCodeCamp in your browser.**
|
**puedes optar por utilizar Gitpod, una herramienta de desarrollo en linea que crea ambientes listos para escribir código para freeCodeCamp directamente en el navegador.**
|
||||||
|
|
||||||
[](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp)
|
[](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp)
|
||||||
|
|
||||||
Or you can...
|
O también puedes...
|
||||||
|
|
||||||
**[set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md) on your machine.**
|
**[configurar freeCodeCamp localmente](how-to-setup-freecodecamp-locally.md) en tu máquina. **
|
||||||
|
@ -1,388 +1,388 @@
|
|||||||
# The official freeCodeCamp Moderator Handbook.
|
# El Manual oficial para moderador de freeCodeCamp.
|
||||||
|
|
||||||
This will help you moderate different places in our community, including:
|
Esto te ayudará a moderar diferentes lugares en nuestra comunidad, incluyendo:
|
||||||
|
|
||||||
- GitHub issues & pull requests
|
- Peticiones de GitHub & pull requests
|
||||||
- The forum, chat rooms, Facebook groups, and other online meeting places
|
- Los foros, salas de chat, grupos de facebook y otros lugares de reuniones en línea
|
||||||
- In-person events like study groups, hackathons, and conferences
|
- Eventos presenciales y grupos de estudio, competencias y conferencias
|
||||||
|
|
||||||
**All freeCodeCamp Moderators are community-wide moderators. That means that we trust you to oversee any of these places.**
|
**Todos los moderadores de freeCodeCamp son de amplio acceso. Esto significa que confiamos en ti para supervisar cualquiera de estos lugares.**
|
||||||
|
|
||||||
This said, you can serve as a moderator in whichever places are of the most interest to you. Some moderators just help out on GitHub. Others just help out on the forum. Some moderators are active everywhere.
|
Dicho esto, puedes servir como moderador en los lugares que más te interesen. Algunos moderadores solo ayudan en GitHub. Otros solo contribuyen en foros. Otros moderadores se mantienen activos en todo.
|
||||||
|
|
||||||
The bottom line is that we want you to enjoy being a moderator, and invest your scarce time in places that are of interest to you.
|
Al final, lo que queremos es que disfrutes ser un moderador y que inviertas tu tiempo en los sitios que te interesen.
|
||||||
|
|
||||||
> [!NOTE] "With great power comes great responsibility." - Uncle Ben
|
> [!NOTE] "Un gran poder conlleva una gran responsabilidad." - Tío Ben
|
||||||
|
|
||||||
As a moderator, temperament is more important than technical skill.
|
Como moderador, el temperamento es más importante que las habilidades técnicas.
|
||||||
|
|
||||||
Listen. Be Helpful. Don't abuse your power.
|
Escucha. Presta ayuda. No abuses de tu poder.
|
||||||
|
|
||||||
freeCodeCamp is an inclusive community, and we need to keep it that way.
|
freeCodeCamp es una comunidad inclusiva y necesitamos conservarla así.
|
||||||
|
|
||||||
We have a single code of conduct that governs our entire community. The fewer the rules, the easier they are to remember. You can read those rules and commit them to memory [here](https://code-of-conduct.freecodecamp.org).
|
Tenemos un único código de conducta que regula por completo nuestra comunidad. Mientras menos reglas, más fácil es recordarlas. Puedes leer las reglas y fijarlas en tu memoria [aquí](https://code-of-conduct.freecodecamp.org).
|
||||||
|
|
||||||
## Moderating GitHub
|
## Moderando GitHub
|
||||||
|
|
||||||
Moderators have the ability to close issues and accept or close pull requests.
|
Los moderadores tienen la habilidad de cerrar conflictos, y aceptar pull requests.
|
||||||
|
|
||||||
Moderators have two primary responsibilities regarding GitHub:
|
Los moderadores tienen dos responsabilidades principales en GitHub:
|
||||||
|
|
||||||
1. QA'ing and merging pull requests
|
1. Probando y fusionando pull requests
|
||||||
2. Evaluating and responding to issues
|
2. Evaluar y responder a problemas
|
||||||
|
|
||||||
### Moderating Pull Requests
|
### Moderando Pull Requests
|
||||||
|
|
||||||
Pull Requests (PRs) are how contributors submit changes to freeCodeCamp's repository. It's important that we perform Quality Assurance (QA) on pull requests before we decide whether to merge them or close them.
|
Los Pull Requests (PRs) son la vía que utilizan los colaboradores para someter cambios al repositorio de freeCodeCamp. Es importante que realicemos un control de calidad (QA) en los pull requests antes de decidir si aceptarlos o cerrarlos.
|
||||||
|
|
||||||
#### Types of Pull Requests
|
#### Tipo de Pull Requests
|
||||||
|
|
||||||
1. **Challenge Instruction Edits** These are changes to the text of challenges - the Description, Instructions, or Test Text. You can also review these right on GitHub and decide whether to merge them. We need to be a bit more careful about these, because millions of people will encounter this text as they work through the freeCodeCamp curriculum. Does the pull request make the text more clear without making it much longer? Are the edits relevant and not overly pedantic? Remember that our goal is for challenges to be as clear and as short as possible. They aren't the place for obscure details. Also, contributors may try to add links to resources to the challenges. You can close these pull requests and reply to them with this:
|
1. **Edición de las instrucciones de los ejercicios**. Estos son cambios en el texto de los ejercicios - la descripción, instrucciones o el texto de las pruebas. Puedes revisar las ediciones directamente en GitHub y decidir ahí si aceptar o no los cambios. En esto debemos ser más que cuidadosos, porque millones de personas leerán estos textos en la medida que vayan completando el programa de freeCodeCamp. ¿El pull request hace más claro el texto sin alargarlo demasiado? ¿Son las recomendaciones relevantes o pedantes en exceso? Recuerda que nuestro objetivo es que los retos sean lo más claro y cortos posibles. No son el lugar para detalles oscuros. Además, los colaboradores podrían intentar añadir enlaces hacia recursos en los desafíos. Podrías cerrar estos pull request y responder como sigue:
|
||||||
|
|
||||||
> Thank you for your pull request.
|
> Muchas gracias por tus recomendaciones.
|
||||||
>
|
>
|
||||||
> I am closing this pull request. Please add links and other details to the challenge's corresponding guide article instead.
|
> Cerraré este pull request. Por favor, añade enlaces y otros detalles a los desafíos en el artículo guía correspondiente.
|
||||||
>
|
>
|
||||||
> If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you, and happy coding.
|
> Si consideras que me equivoco al cerrar este requerimiento, vuelve a abrirlo y añade más aclaraciones. Muchas gracias y sigue programado.
|
||||||
|
|
||||||
2. **Challenge Code Edits** These are changes to the code in a challenge - the Challenge Seed, Challenge Solution, and Test Strings. These pull requests need to be pulled down from GitHub and tested on your local computer to make sure the challenge tests can still be passed with the current solution, and the new code doesn't introduce any errors. Some contributors may try to add additional tests to cover pedantic corner-cases. We need to be careful to not make the challenge too complicated. These challenges and their tests should be as simple and intuitive as possible. Aside from the algorithm challenges and interview prep section, learners should be able to solve each challenge within about 2 minutes.
|
2. **Ediciones del Código del Desafío** Estos son cambios en el código de un desafío - Semilla del Desafío, Solución del Desafío y Strings de Pruebas. Estos pull requests necesitan ser retirados de GitHub y probados en su computadora local para asegurarse que las pruebas de desafío pueden ser pasadas con la solución actual, y el nuevo código no introduce errores. Algunos colaboradores pueden intentar añadir pruebas adicionales para cubrir casos pedánticos. Debemos tener cuidado de no complicar demasiado el reto. Estos retos y sus pruebas deben ser tan simples e intuitivas como sea posible. Aparte de los desafíos del algoritmo y la sección de preparación de la entrevista, los estudiantes deberían ser capaces de resolver cada desafío en unos 2 minutos.
|
||||||
|
|
||||||
3. **Codebase Changes** These code edits change the functionality of the freeCodeCamp platform itself. Sometimes contributors try to make changes without much explanation, but for code changes we need to make sure there's a genuine need for the change. So these pull requests should reference an existing GitHub issue where the reasons for the change are discussed. Then you can open the pull request on your computer and test them out locally. After you've done so, if the changes look good, don't merge them quite yet. You can comment on the pull request saying "LGTM", then mention @raisedadead so he can take a final look.
|
3. **Cambios de código base** Estos códigos modifican la funcionalidad de la plataforma freeCodeCamp en sí. A veces los colaboradores tratan de hacer cambios sin mucha explicación, pero para los cambios de código necesitamos asegurarnos de que hay una verdadera necesidad para el cambio. Así que estas solicitudes de extracción deben referirse a un problema existente de GitHub en el que se discuten las razones del cambio. Entonces puede abrir el pull request en su computadora y probarlo localmente. Después de haberlo hecho, si los cambios se ven bien, no los fusiones todavía. Puedes comentar en la pull request diciendo "LGTM", luego mencionar @raisedadead para que pueda echar un vistazo final.
|
||||||
|
|
||||||
#### How to merge or close pull requests
|
#### Cómo combinar o cerrar pull requests
|
||||||
|
|
||||||
First of all, when you choose a pull request to QA, you should assign yourself to it. You can do this by clicking the "assign yourself" link below the "assignees" part on the right hand column of GitHub's interface.
|
En primer lugar, cuando elijas un pull request a QA, deberás asignarte a él. Puedes hacer esto haciendo clic en el enlace "assign yourself" debajo de la parte "assignees" en la columna derecha de la interfaz de GitHub.
|
||||||
|
|
||||||
Depending on the type of pull request it is, follow the corresponding rules listed above.
|
Dependiendo del tipo de pull request que sea, siga las reglas indicadas arriba.
|
||||||
|
|
||||||
Before merging any pull request, make sure that GitHub has green checkmarks for everything. If there are any X's, investigate them first and figure out how to get them turned into green checkmarks first.
|
Antes de fusionar cualquier pull request, asegúrate de que GitHub tiene marcas verdes para todo. Si hay alguna X, averigua primero y descubre cómo convertirlas en marcas de verificación verdes primero.
|
||||||
|
|
||||||
Sometimes there will be a Merge Conflict. This means that another pull request has made a change to that exact same part of that same file. GitHub has a tool for addressing these merge conflicts right on GitHub. You can try to address these conflicts. Just use your best judgement. The pull request's changes will be on top, and the Master branch's changes will be on bottom. Sometimes there will be redundant information in there that can be deleted. Before you finish, be sure to delete the `<<<<<<`, `======`, and `>>>>>>` that Git adds to indicate areas of conflict.
|
A veces habrá un conflicto de fusión. Esto significa que otro pull request ha hecho un cambio a esa parte exacta del mismo archivo. GitHub tiene una herramienta para abordar estos conflictos de fusión en GitHub. Puedes tratar de resolver estos conflictos. Simplemente utiliza su mejor criterio. Los cambios de la solicitud de extracción estarán en la parte superior, y los cambios de la sucursal principal estarán en la parte inferior. A veces habrá información redundante que se puede eliminar. Antes de que finalices, cerciórate de eliminar el `<<<<<<`, `======`, y `>>>>>>` que Git añade para indicar áreas de conflicto.
|
||||||
|
|
||||||
If the pull request looks ready to merge (and doesn't require approval from @raisedadead), you can go ahead and merge it. Be sure to use the default "Squash and Merge" functionality on GitHub. This will squash all the pull requests commits down into a single commit, which makes the Git history much easier to read.
|
Si el pull request parece estar listo para fusionarse (y no requiere la aprobación de @raisedadead), puedes seguir adelante y fusionarlo. Asegúrate de utilizar la funcionalidad predeterminada "Squash and Merge" en GitHub. Esto aplastará todas las solicitudes pull se compromete a un solo commit, lo que hace que la historia de Git sea mucho más fácil de leer.
|
||||||
|
|
||||||
You should then comment on the pull request, thanking the contributor in your own personal way.
|
A continuación, deberías comentar sobre la solicitud de extracción, dando las gracias al colaborador de tu propia manera personal.
|
||||||
|
|
||||||
If the author of the pull request is a "first time contributor" you should also congratulate them on their first merged pull request to the repository. You can look at the upper right-hand corner of the PR's body to determine a first-time contributor. It will show `First-time contributor` as shown below:
|
Si el autor de pull request es un "colaborador por primera vez" también debe felicitarlos por su primera solicitud de pull fusión en el repositorio. Puedes mirar la esquina superior derecha del cuerpo del PR, para determinar un colaborador de primera vez. Mostrará `First-time contributor` como se muestra a continuación:
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
If the pull request doesn't look ready to merge you can politely reply telling the author what they should do to get it ready. Hopefully they will reply and get their pull request closer to ready.
|
Si el pull request no parece listo para fusionarse, puedes responder amablemente al autor que debe hacer para prepararlo. Esperemos que respondan y tengan su pull request lo más listo posible.
|
||||||
|
|
||||||
Often, a pull request will be obviously low effort. You can often tell this immediately when the contributor didn't bother checking the checkboxes in the Pull Request Template, or used a generic pull request title like "made changes" or "Update index.md".
|
A menudo, un pull request será obviamente poco esfuerzo. A menudo puedes decirle esto inmediatamente cuando el colaborador no se molestó en marcar las casillas de verificación en la Plantilla de Pull Request o usó un título genérico para el pull request como "made changes" o "Update index.md".
|
||||||
|
|
||||||
There are also situations where the contributor is trying to add a link to their own website, or include a library they themselves created, or has a frivolous edit that doesn't serve to help anyone but themselves.
|
También hay situaciones en las que el colaborador está intentando añadir un enlace a su propio sitio web, o incluir una biblioteca que ellos mismos crearon, o tiene una edición frívola que no sirve para ayudar a nadie más que a sí mismos.
|
||||||
|
|
||||||
In both of these situations, you should go ahead and close their pull request and reply with this standard message:
|
En ambas situaciones, debes seguir adelante y cerrar su pull request y responder con este mensaje estándar:
|
||||||
|
|
||||||
> Thank you for opening this pull request.
|
> Gracias por abrir esta solicitud de extracción.
|
||||||
>
|
>
|
||||||
> This is a standard message notifying you that we've reviewed your pull request and have decided not to merge it. We would welcome future pull requests from you.
|
> Este es un mensaje estándar notificándole que hemos revisado su pull request y hemos decidido no fusionarlo. Damos la bienvenida a tus futuras pull request.
|
||||||
>
|
>
|
||||||
> Thank you and happy coding.
|
> Gracias y ten un feliz día programando.
|
||||||
|
|
||||||
If you need a second opinion on a pull request, go ahead and leave your comments on the pull request, then add the "discussing" label to the pull request.
|
Si necesitas una segunda opinión sobre un pull request, sigue adelante y deja tus comentarios sobre el pull request, luego agregue la etiqueta "discussing" al pull request.
|
||||||
|
|
||||||
### Moderating GitHub Issues
|
### Moderando problemas de GitHub
|
||||||
|
|
||||||
freeCodeCamp is an active open source project. We get new issues every day, all of which need to be triaged and labeled.
|
freeCodeCamp es un proyecto activo de código abierto. Cada día recibimos nuevos asuntos, todos los cuales necesitan ser probados y etiquetados.
|
||||||
|
|
||||||
#### Types of GitHub Issues
|
#### Tipos de problemas de GitHub
|
||||||
|
|
||||||
1. **Code Help Requests**, which people have mistakenly created GitHub issues for. If someone is asking for help, paste the following message, then close the issue.
|
1. **Solicitudes de ayuda de código**, para los que la gente ha creado erróneamente problemas en GitHub. Si alguien está pidiendo ayuda, pega el siguiente mensaje, entonces cierre el problema.
|
||||||
|
|
||||||
> Thank you for reporting this issue.
|
> Gracias por informar de este problema.
|
||||||
>
|
>
|
||||||
> This is a standard message notifying you that this issue seems to be a request for help. Instead of asking for help here, please click the \*\*"Help"\*\* button on the challenge on freeCodeCamp, which will help you create a question in the right part of the forum. Volunteers on the forum usually respond to questions within a few hours and can help determine if there is an issue with your code or the challenge's tests.
|
> Este es un mensaje estándar que le notifica que esta cuestión parece ser una solicitud de ayuda. En lugar de pedir ayuda aquí, por favor haga clic en el botón \*\*"Ayuda"\*\* en el desafío en freeCodeCamp, que te ayudará a crear una pregunta en la parte derecha del foro. Los voluntarios en el foro generalmente responden a preguntas en unas pocas horas y pueden ayudar a determinar si hay un problema con tu código o con las pruebas del desafío.
|
||||||
>
|
>
|
||||||
> If the forum members determine there is nothing wrong with your code, you can request this issue to be reopened.
|
> Si los miembros del foro determinan que no hay nada malo en su código, puede solicitar que se vuelva a abrir este problema.
|
||||||
>
|
>
|
||||||
> Thank you and happy coding.
|
> Gracias y ten un feliz día programando.
|
||||||
|
|
||||||
2. **Bug or Clarification issues** Try to reproduce the bug yourself if you can. If not, ask them for the steps to reproduce the bug, and whether they have any screenshots, videos, or additional details that can help you reproduce the issue. Once you can reproduce the issue - or at least confirm it's a legit issue - label it `confirmed`. Then:
|
2. **Problemas de error o aclaración** Intenta reproducir el error tú mismo si puedes. Si no, pídeles los pasos para reproducir el error y si tienen alguna captura de pantalla, o detalles adicionales que le pueden ayudar a reproducir el problema. Una vez que se pueda reproducir el problema - o al menos confirmar que es un problema legítimo - etiquétalo `confirmado`. Luego:
|
||||||
|
|
||||||
- If it's a simple change to an existing challenge, label as `first timers only`, otherwise label as `help wanted`. Use other labels as appropriate.
|
- Si es un simple cambio en un desafío existente, etiqueta como ` solo principiantes`, de lo contrario etiqueta como `ayuda deseada`. Utilice otras etiquetas según corresponda.
|
||||||
- If the issue is more significant, flag as `bug`. If there is any ambiguity as to the proper course of action on an issue, feel free to tag @raisedadead on the issue get his opinion on it, then add the `Discussing` label.
|
- Si el problema es más significativo, marca como `bug`. Si hay alguna ambigüedad en cuanto al curso correcto de acción en un problema, siéntate libre de etiquetar a @raisedadead sobre el problema y luego añade la etiqueta `Discutir`.
|
||||||
|
|
||||||
3. **Duplicate Issues** If an issue is the same as another reported issue, the prior reported issue should take precedence. Flag as `Duplicate`, paste the following message replacing `#XXXXX` with the issue number, then close the issue.
|
3. **Problemas duplicados** Si un problema es el mismo que otro problema reportado, el problema reportado previamente debería tener precedencia. Marcar como `Duplicar`, pegar el siguiente mensaje reemplazando `#XXXXX` con el número de incidencia, luego cerrar el asunto.
|
||||||
|
|
||||||
> Thank you for reporting this issue.
|
> Gracias por informar de este problema.
|
||||||
>
|
>
|
||||||
> This is a standard message notifying you that this issue appears to be very similar to issue #XXXXX, so I am closing it as a duplicate.
|
> Este es un mensaje estándar notificándole que este problema parece muy similar a la incidencia #XXXXX, Así que lo estoy cerrando como un duplicado.
|
||||||
>
|
>
|
||||||
> If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you and happy coding.
|
> Si consideras que me equivoco al cerrar este requerimiento, vuelve a abrirlo y añade más aclaraciones. Gracias y codificación feliz.
|
||||||
|
|
||||||
4. **Fixed in staging** Some problems may have already been fixed in staging, but don't have a GitHub issue associated with them. If this is the case, you can paste the following message, close the issue, and add a `status: resolved/shipping` label:
|
4. **Corregido en staging** Algunos problemas pueden haber sido arreglados en staging, pero no tiene un problema de GitHub asociado con ellos. Si este es el caso, puede pegar el siguiente mensaje, cerrar el problema y añadir un estado `: etiqueta` resuelto/envío:
|
||||||
|
|
||||||
> Thank you for reporting this issue.
|
> Gracias por informar de este problema.
|
||||||
>
|
>
|
||||||
> This is a standard message notifying you that the problem you mentioned here is present in production, but that it has already been fixed in staging. This means that the next time we push our staging branch to production, this problem should be fixed. Because of this, I'm closing this issue.
|
> Este es un mensaje estándar que le notifica que el problema que ha mencionado aquí está presente en la producción, pero que ya ha sido arreglado en la etapa. Esto significa que la próxima vez que empujemos nuestra rama de montaje hacia la producción, este problema debería solucionarse. Debido a esto, estoy cerrando este problema.
|
||||||
>
|
>
|
||||||
> If you think I'm wrong in closing this issue, please reopen it and add further clarification. Thank you and happy coding.
|
> Si consideras que me equivoco al cerrar este requerimiento, vuelve a abrirlo y añade más aclaraciones. Gracias y codificación feliz.
|
||||||
|
|
||||||
#### Closing Stale, Outdated, Inactive Issues and Pull Requests
|
#### Cerrando pedidos, obsoletos, problemas inactivos y solicitudes de Pull
|
||||||
|
|
||||||
- Stale Issues or PRs are those that have not seen any activity from the OP for 21 days (3 weeks from the last activity), but only after a moderator has requested more information/changes. These can be closed in an automated/bot script or by the moderators themselves.
|
- Los números obsoletos o PRs son aquellos que no han visto ninguna actividad del OP durante 21 días (3 semanas desde la última actividad), pero sólo después de que un moderador haya solicitado más información/cambios. Estos pueden ser cerrados en un script automático/bot o por los propios moderadores.
|
||||||
|
|
||||||
- Activity is defined as: Comments requesting an update on the PR and triages like `status: update needed` label etc.
|
- La actividad se define como: Comentarios que solicitan una actualización en PR y clases como `estado: actualización necesaria` etiqueta etc.
|
||||||
|
|
||||||
- If the OP asks for additional assistance or even time, the above can be relaxed and revisited after a response is given. In any case the mods should use their best judgement to resolve the outstanding PR's status.
|
- Si el OP solicita ayuda adicional o incluso tiempo, lo anterior puede ser relajado y revisado después de que se dé una respuesta. En cualquier caso, los mods deben usar su mejor criterio para resolver el estado de PR.
|
||||||
|
|
||||||
#### Other guidelines for Moderators on GitHub
|
#### Otras pautas para moderadores en GitHub
|
||||||
|
|
||||||
Though you will have write access to freeCodeCamp's repository, **you should never push code directly to freeCodeCamp repositories**. All code should enter freeCodeCamp's codebase in the form of a pull request from a fork of the repository.
|
Aunque tendrás acceso de escritura al repositorio de freeCodeCamp, **nunca deberías enviar código directamente a los repositorios freeCodeCamp**. Todo el código debe introducir el código base de freeCodeCamp en forma de pull request desde un fork del repositorio.
|
||||||
|
|
||||||
Also, you should never accept your own PRs. They must be QA'd by another moderator, just like with any other PR.
|
Además, nunca debes aceptar tus propios PRs. Deben ser QA'd por otro moderador, al igual que cualquier otro PR.
|
||||||
|
|
||||||
If you notice anyone breaking the [code of conduct](https://code-of-conduct.freecodecamp.org) on GitHub issues, or opening pull requests with malicious content or code, email dev@freecodecamp.org with a link to the offending pull request and we can consider banning them from freeCodeCamp's GitHub organization entirely.
|
Si observas que alguien rompe el código de conducta [](https://code-of-conduct.freecodecamp.org) en problemas de GitHub, o abrir solicitudes de extracción con contenido o código malicioso, envíe un correo electrónico a dev@freecodecamp. rg con un enlace a la solicitud de extracción ofensiva y podemos considerar prohibirlos de la organización GitHub de freeCodeCamp por completo.
|
||||||
|
|
||||||
## Moderating the Forum
|
## Moderando el foro
|
||||||
|
|
||||||
As a Moderator, you help keep our community an enjoyable place for anyone to learn and get help. You will deal with flagged posts and handle spam, off-topic, and other inappropriate conversations.
|
Como moderador, usted ayuda a mantener a nuestra comunidad un lugar agradable para que cualquiera aprenda y obtenga ayuda. Usted tratará con mensajes marcados y manejará el spam, fuera de tema y otras conversaciones inapropiadas.
|
||||||
|
|
||||||
Note that once you are a moderator on the forum, you will start to see blue moderator hints about forum members, like "this is the first time [person] has posted - let's welcome them to the community!" or "[person] hasn't posted in a long time - let's welcome them back."
|
Ten en cuenta que una vez que seas un moderador en el foro, empezarás a ver pistas azules de los miembros del foro, como "esta es la primera vez que [person] ha publicado - ¡Bienvenidos a la comunidad! o "[person] no ha publicado en mucho tiempo - ¡Bienvenidos de nuevo! "
|
||||||
|
|
||||||
![A blue text message saying "this is the first time [person] has posted - let's welcome them to the community!](https://i.imgur.com/mPmVgzK.png)
|
![Un mensaje de texto azul que dice "esta es la primera vez que [person] ha publicado - ¡Demos la bienvenida a la comunidad!](https://i.imgur.com/mPmVgzK.png)
|
||||||
|
|
||||||
These are opportunities for you to welcome them and make them feel extra special. You never know which person who's marginally involved may become our next super-helper, helping many other people in their coding journey. Even the smallest kindness may trigger a cascade of good deeds.
|
Estas son oportunidades para que usted las acoja y haga que se sientan muy especiales. Nunca sabes qué persona que está involucrada marginalmente puede convertirse en nuestro próximo super-ayudante, ayudando a muchas otras personas en su viaje de codificación. Incluso la bondad más pequeña puede desencadenar una cascada de buenas acciones.
|
||||||
|
|
||||||
### Deleting forum posts
|
### Eliminando mensajes del foro
|
||||||
|
|
||||||
Forum moderators have the ability to delete user's posts. You should only do this for the following instances:
|
Los moderadores del foro tienen la capacidad de borrar los mensajes del usuario. Sólo deberías hacer esto para las siguientes instancias:
|
||||||
|
|
||||||
1. Someone has posted a pornographic or graphically violent image.
|
1. Alguien ha publicado una imagen pornográfica o gráficamente violenta.
|
||||||
2. Someone has posted a link or code that is malicious in nature, and could harm other campers who click on it.
|
2. Alguien ha publicado un enlace o código que es de naturaleza maliciosa, y podría dañar a otros campistas que hacen clic en él.
|
||||||
3. Someone has flooded a thread with lots of spam messages.
|
3. Alguien ha inundado un hilo con muchos mensajes de spam.
|
||||||
|
|
||||||
### Dealing with spam
|
### Tratando con spam
|
||||||
|
|
||||||
For the first spam post of a user, send them a message explaining the problem, and remove the link or post as appropriate. Leave a note on the user's profile explaining the action you have taken. If the problem persists, then follow the process above. Quietly block the user from posting (using the silence option on the User Admin panel), then send a warning with the Code of Conduct. Check the box in the private message indicating that your message is a "formal warning."
|
Para el primer mensaje de correo no deseado de un usuario, envíe un mensaje explicando el problema, y elimine el enlace o mensaje según corresponda. Deja una nota en el perfil del usuario explicando la acción que has tomado. Si el problema persiste, siga el proceso anterior. Bloquear silenciosamente al usuario de publicar (usando la opción de silencio en el panel de Administración de Usuarios), luego enviar una advertencia con el Código de Conducta. Marque la casilla del mensaje privado indicando que su mensaje es una "advertencia formal".
|
||||||
|
|
||||||
You can ask questions and report incidents in the in the [staff forum section](https://forum.freecodecamp.com/c/staff).
|
Puedes hacer preguntas e informar de incidentes en la sección [del foro del personal](https://forum.freecodecamp.com/c/staff).
|
||||||
|
|
||||||
### Dealing with off-topic conversations
|
### Tratando con conversaciones fuera de tema
|
||||||
|
|
||||||
Posts or topics that seems to be in the wrong place can be re-categorized or renamed to whatever would be appropriate.
|
Mensajes o temas que parecen estar en el lugar equivocado pueden ser recategorizados o renombrados a cualquier cosa que sea apropiada.
|
||||||
|
|
||||||
In exceptional circumstances, it may be appropriate for a moderator to fork a discussion into multiple threads.
|
En circunstancias excepcionales, puede ser apropiado que un moderador bifurque una discusión en múltiples hilos.
|
||||||
|
|
||||||
Again, if you have any problems or questions, make a post with your actions in the Staff category, and tag another moderator if you want them to review your moderating actions.
|
De nuevo, si tienes algún problema o pregunta, haz un post con tus acciones en la categoría de personal, y etiquetar a otro moderador si quieres que revisen tus acciones de moderación.
|
||||||
|
|
||||||
### Underage Users
|
### Usuarios Inderramados
|
||||||
|
|
||||||
Our Terms of Service require that freeCodeCamp users be at least 13 years of age. In the event that a user reveals that they are under the age of 13, send them the below message and delete their forum account (if deletion is not available, suspending the account is sufficient). Then email [Quincy](https://forum.freecodecamp.org/u/QuincyLarson) (quincy@freecodecamp.org) or [Mrugesh](https://forum.freecodecamp.org/u/raisedadead) (mrugesh@freecodecamp.org) to delete the user's freeCodeCamp account as well.
|
Nuestros Términos de Servicio requieren que los usuarios de freeCodeCamp tengan al menos 13 años de edad. En el caso de que un usuario revele que es menor de 13 años enviarles el siguiente mensaje y eliminar su cuenta del foro (si la eliminación no está disponible, suspender la cuenta es suficiente). Luego envía un correo electrónico a [Quincy](https://forum.freecodecamp.org/u/QuincyLarson) (quincy@freecodecamp.org) o [Mrugesh](https://forum.freecodecamp.org/u/raisedadead) (mrugesh@freecodecamp.org) para eliminar también la cuenta freeCodeCamp del usuario.
|
||||||
|
|
||||||
```markdown
|
```markdown
|
||||||
SUBJECT: Users under 13 are not allowed to use the forum per Terms of Service
|
SUBJETIVO: Los usuarios menores de 13 años no pueden utilizar el foro por las Condiciones de Servicio
|
||||||
|
|
||||||
It has come to our attention that you are under 13 years of age. Per the [freeCodeCamp terms of service](https://www.freecodecamp.org/news/terms-of-service), you must be at least 13 years old to use the site or the forum. We will be deleting both your freeCodeCamp account and your forum account. This restriction keeps us in compliance with United States laws.
|
Hemos sabido que usted es menor de 13 años. Por los [términos de servicio gratis de CodeCamp](https://www.freecodecamp.org/news/terms-of-service), debes tener al menos 13 años de edad para usar el sitio o el foro. Eliminaremos tu cuenta de freeCodeCamp y tu cuenta de foro. Esta restricción nos mantiene en conformidad con las leyes estadounidenses.
|
||||||
|
|
||||||
Please rejoin once you have reached at least 13 years of age.
|
Por favor, vuelva a unirse una vez que haya alcanzado al menos 13 años de edad.
|
||||||
|
|
||||||
Thank you for understanding.
|
Gracias por entender.
|
||||||
```
|
```
|
||||||
|
|
||||||
## Moderating Facebook
|
## Moderando Facebook
|
||||||
|
|
||||||
If you see anything that seems to break our [Code of Conduct](https://code-of-conduct.freecodecamp.org/), you should delete it immediately.
|
Si ves algo que parezca incumplir nuestro [Código de Conducta](https://code-of-conduct.freecodecamp.org/), deberías eliminarlo inmediatamente.
|
||||||
|
|
||||||
Sometimes people will post things that they think are funny. They don't realize that what they said or what they shared could be interpreted as offensive. In these cases, their post should be deleted, but the person who posted it doesn't necessarily need to be banned. By getting their post deleted, they will hopefully come to understand that what they posted was inappropriate.
|
A veces la gente publicará cosas que creen que son divertidas. No se dan cuenta de que lo que dijeron o lo que compartieron podría interpretarse como ofensivo. En estos casos, su publicación debe ser eliminada, pero la persona que la publicó no necesariamente necesita ser prohibida. Con la eliminación de su correo, espero que lleguen a comprender que lo que publicaron era inapropiado.
|
||||||
|
|
||||||
But if it is an egregious offense that can't reasonably be attributed to a cultural difference or a misunderstanding of the English language, then you should strongly consider blocking the member from the Facebook group.
|
Pero si se trata de una ofensa atroz que no puede atribuirse razonablemente a una diferencia cultural o a un malentendido del idioma inglés. entonces debe considerar fuertemente bloquear al miembro del grupo de Facebook.
|
||||||
|
|
||||||
## Moderating Discord
|
## Moderando Discord
|
||||||
|
|
||||||
Here's how moderators deal with violations of our [Code of Conduct](https://code-of-conduct.freecodecamp.org/) on Discord:
|
Así es como los moderadores tratan las violaciones de nuestro [Código de Conducta](https://code-of-conduct.freecodecamp.org/) en Discord:
|
||||||
|
|
||||||
1. **Make sure it was intended to violate the Code of Conduct.** Not all violations of the CoC were intended as such. A new camper might post a large amount of code for help, unaware that this can be considered spamming. In these cases, you can just ask them to paste their code with services like Codepen or Pastebin.
|
1. **Asegúrese de que tenía la intención de violar el Código de Conducta.** No todas las violaciones del CoC fueron pensadas como tales. Un nuevo acampador podría publicar una gran cantidad de código de ayuda, sin darse cuenta de que esto puede considerarse spaming. En estos casos, puedes pedirles que peguen su código con servicios como Codepen o Pastebin.
|
||||||
|
|
||||||
2. **If the camper clearly violates the Code of Conduct, the moderator will proceed as follows:**
|
2. **Si el acampador viola claramente el Código de Conducta, el moderador procederá de la siguiente manera:**
|
||||||
|
|
||||||
- Suspend the offending camper, but don't warn or threaten them. Instead, quietly give them the Suspended role on Discord, then send them the following message:
|
- Suspender al campesino que ofende, pero no advertirles ni amenazarlos. En lugar de ello, démosles en silencio el papel suspendido en Discord, y después enviarles el siguiente mensaje:
|
||||||
|
|
||||||
```
|
```
|
||||||
This is a standard message notifying you that I had to temporarily suspend you from talking on the freeCodeCamp Discord server.
|
Este es un mensaje estándar que te notifica que tuve que suspender temporalmente de hablar en el servidor freeCodeCamp Discord.
|
||||||
|
|
||||||
I am a moderator acting on behalf of our open source community. I can consider removing your suspension, but I need you to take the following 3 steps first:
|
Soy un moderador que actúa en nombre de nuestra comunidad de código abierto. Puedo considerar eliminar su suspensión, pero necesito que tome los siguientes 3 pasos primero:
|
||||||
|
|
||||||
1. Read our Code of Conduct: https://code-of-conduct.freecodecamp.org/
|
1. Lea nuestro Código de Conducta: https://code-of-conduct.freecodecamp.org/
|
||||||
2. Message me back confirming that you have finished reading it.
|
2. Envíame de vuelta confirmando que has terminado de leerlo.
|
||||||
3. Explain to me why you think I suspended you, and why I should remove your suspension.
|
3. Explíqueme por qué cree que le he suspendido y por qué debería retirar su suspensión.
|
||||||
```
|
```
|
||||||
|
|
||||||
- Report a short summary of the event and how they responded to it in the #admin channel. Here's an example of what such a summary might look like:
|
- Reporta un breve resumen del evento y cómo respondieron al mismo en el canal #admin. He aquí un ejemplo de cómo podría ser un resumen así:
|
||||||
|
|
||||||
```
|
```
|
||||||
Suspended: _@username_
|
Suspendido: _@username_
|
||||||
Reason(s): _Spamming, trolling_
|
Razón(s): _Spamming, trolling_
|
||||||
Evidence: _One or more links to the offending message(s)_
|
Razón: _Uno o más enlaces al mensaje(s) ofendido(s)_
|
||||||
CoC: _Sent_
|
CoC: _Sent_
|
||||||
```
|
```
|
||||||
|
|
||||||
- A report for removing a suspension should look like:
|
- Un informe para eliminar una suspensión debería ser así:
|
||||||
|
|
||||||
```
|
```
|
||||||
I’ve removed the suspension from ` @username `. I sent them the Code of Conduct. They just today realized they were suspended and apologized for what they did.
|
He eliminado la suspensión de ` @username `. Les envié el Código de Conducta. Justo hoy se dieron cuenta de que fueron suspendidos y disculpados por lo que hicieron.
|
||||||
```
|
```
|
||||||
|
|
||||||
- Based on the offenders reply, the moderator will decide whether to remove the suspension from the offending camper. If they seem respectful and apologetic, the moderator can remove the suspension. As a matter of policy, moderators will be polite during this process, no matter how poorly the offending camper has behaved. If they aren't respectful or unwilling to accept the CoC, the suspension should be followed with a ban from the Discord server. Use the same summary as above, but replace "Suspended:" with "Banned:".
|
- Basado en la respuesta de los delincuentes, el moderador decidirá si retira o no la suspensión del camp. Si parecen respetuosos y disculpados, el moderador puede eliminar la suspensión. Como una cuestión de política, los moderadores serán educados durante este proceso, sin importar cuán mal se haya comportado el acampador ofendedor. Si no son respetuosos o no están dispuestos a aceptar el CoC, la suspensión debe ser seguida con una prohibición del servidor de Discord. Utilice el mismo resumen que arriba, pero reemplace "Suspendido:" con "Baneado:".
|
||||||
|
|
||||||
3. **How to ban and/or unban**
|
3. **Cómo prohibir y/o desbanear**
|
||||||
|
|
||||||
- In order to ban someone, right click on their username/profile picture and select "Ban <username>". You will be given the option to delete their previous messages - select "Don't delete any", as the messages should remain present as a historic record.
|
- Para prohibir a alguien, haga clic derecho en su foto de usuario/perfil y seleccione "Banear <username>". Se le dará la opción de eliminar sus mensajes anteriores - seleccione "No eliminar ninguno", ya que los mensajes deben permanecer presentes como un registro histórico.
|
||||||
- If you decide to ban someone, it means they're unwilling to abide to our Code of Conduct. Therefore unbanning a Camper should rarely occur. However, if the need arises, you can do so by clicking on the server name, choosing "Server Settings", choosing "Bans", selecting the user you wish to unban, and clicking "Revoke Ban".
|
- Si decides prohibir a alguien, significa que no están dispuestos a respetar nuestro Código de Conducta. Por lo tanto, la prohibición de un Camper raras veces debería producirse. Sin embargo, si surge la necesidad, puede hacerlo haciendo clic en el nombre del servidor, eligiendo "Configuración del servidor", escogiendo "Bans", seleccionando el usuario que desea desbanear, y haciendo clic en "Revocar Baneo".
|
||||||
|
|
||||||
Discord Bans are global - you cannot ban a user from a specific channel, only from the entire server.
|
Los Bans de Discord son globales - no puedes banear a un usuario de un canal específico, solo de todo el servidor.
|
||||||
|
|
||||||
4. **Deleting messages** Moderators have the ability to delete messages on Discord. They should only exercise this ability in four very specific situations:
|
4. **Eliminando mensajes** Los moderadores pueden eliminar mensajes en Discord. Sólo deberían ejercer esta capacidad en cuatro situaciones muy concretas:
|
||||||
|
|
||||||
- Someone has posted a pornographic or graphically violent image.
|
- Alguien ha publicado una imagen pornográfica o gráficamente violenta.
|
||||||
- Someone has posted a link or code that is malicious in nature, and could harm other campers who click on it.
|
- Alguien ha publicado un enlace o código que es de naturaleza maliciosa, y podría dañar a otros campistas que hacen clic en él.
|
||||||
- Someone has flooded the chat with lots of spam messages to such an extreme extent (usually involving bots) as to render chat completely unusable.
|
- Alguien ha inundado el chat con muchos mensajes de correo no deseado hasta tal extremo (generalmente con bots) que hacen que el chat sea completamente inutilizable.
|
||||||
- Someone has posted advertisement and / or a self-promoting message / image (social media).
|
- Alguien ha publicado anuncios y / o un mensaje auto-promocionante / imagen (redes sociales).
|
||||||
|
|
||||||
In all other situations - even situations where the code of conduct is violated - Moderators should not delete the message as these are an important historic record. When you do delete a message, make sure you take a screenshot of it first! The screenshot can be logged in the #mod-log channel, but for the #activity-log it is sufficient to say the evidence was "removed due to sensitive content". Note: If the message contains material that would be illegal to take a screenshot of, copy the message link instead - provide that message link to @raisedadead to forward to Discord's Trust and Safety team.
|
En todas las demás situaciones -incluso situaciones en las que se viole el código de conducta- los moderadores no deben eliminar el mensaje, ya que son un registro histórico importante. Cuando eliminas un mensaje, ¡asegúrate de tomar una captura de pantalla primero! La captura de pantalla puede ser registrada en el canal #mod-log, pero para el #activity-log es suficiente decir que la evidencia fue "eliminada debido al contenido sensible". Nota: Si el mensaje contiene material que sería ilegal para tomar una captura de pantalla de, copiar el enlace del mensaje en su lugar - proporcionar ese enlace del mensaje a @raisedadead para reenviar al equipo de Confianza y Seguridad de Discord.
|
||||||
|
|
||||||
5. **Don’t use @everyone or @here** Don’t use @everyone or @here under any circumstances! Every single person in that chat room will get a notification. In some cases, tens of thousands of people. Instead, if you want people to see an announcement, you can pin it to the channel to allow everyone to read it.
|
5. **No utilices @everyone o @here** ¡No utilices @everyone o @here bajo ningún concepto! Cada persona en esa sala de chat recibirá una notificación. En algunos casos, decenas de miles de personas. En su lugar, si quieres que la gente vea un anuncio, puedes anclarlo al canal para permitir que todo el mundo lo lea.
|
||||||
|
|
||||||
6. **Don’t threaten to ban or suspend** If a camper is breaking the code of conduct, don’t threaten to ban or suspend them, and never warn them in public. Instead, talk to them privately, or send them a DM and issue a suspension (per the above protocol). No one else in that channel needs to know that you banned / suspended the person - campers can view the summary in the #activity-log channel if they want to keep up on that information. If a violation was clearly unintended and doesn't warrant a suspension or private conversation, make the offending camper aware of his / her actions without making it come across as a warning. For example:
|
6. **No amenazes con banear o suspender** Si un campador está rompiendo el código de conducta, no amenazar con prohibirlos o suspenderlos, y nunca advertirlos en público. En cambio, hable con ellos privadamente, o envíelos un DM y emita una suspensión (por el protocolo anterior). Nadie más en ese canal necesita saber que has prohibido o suspendido a la persona - los campistas pueden ver el resumen en el canal #activity-log si quieren mantenerse al tanto de esa información. Si una violación era claramente inintencionada y no garantiza una suspensión o conversación privada, hacer que el campador ofendente sepa de sus acciones sin hacerla aparecer como una advertencia. Por ejemplo:
|
||||||
|
|
||||||
- Camper posts a wall of code to request help
|
- Camper publica un muro de código para solicitar ayuda
|
||||||
|
|
||||||
Moderator: @username Please use Codepen or Pastebin when posting large amounts of code.
|
Moderador: @username Por favor use Codepen o Pastebin cuando publique grandes cantidades de código.
|
||||||
|
|
||||||
- Or if you really have to explain why:
|
- O si realmente tienes que explicar por qué:
|
||||||
|
|
||||||
Moderator: @username Please use Codepen or Pastebin when posting large amounts of code, because it disrupts the chat for everyone and could be considered spamming according to our Code of Conduct.
|
Moderador: @username Por favor use Codepen o Pastebin cuando publique grandes cantidades de código, porque interrumpe el chat para todos y podría considerarse spamming de acuerdo con nuestro Código de Conducta.
|
||||||
|
|
||||||
- For mild and unintentional violations of the code of conduct
|
- En caso de violaciones leves e involuntarias del código de conducta
|
||||||
|
|
||||||
Moderator: This is a friendly reminder for everyone to follow the code of conduct: https://code-of-conduct.freecodecamp.org/
|
Moderador: Este es un recordatorio amistoso para que todos sigan el código de conducta: https://code-of-conduct.freecodecamp.org/
|
||||||
|
|
||||||
7. **Don’t brag about being a moderator** Do not see yourself as above the community. You are the community. And the community has trusted you to help protect something rare that we all share - a _welcoming_ place for new developers. If you brag about being a moderator, people may feel uneasy around you, in the same way that people may feel uneasy around a police officer, even if they’re doing nothing wrong. This is just human nature.
|
7. **No se preocupe por ser moderador** No se vea a sí mismo como superior a la comunidad. Eres la comunidad. Y la comunidad ha confiado en que ayudes a proteger algo raro que todos compartimos: _un lugar de bienvenida_ para nuevos desarrolladores. Si te molestas por ser un moderador, la gente puede sentirse incómoda a tu alrededor. del mismo modo que la gente puede sentirse incómoda en torno a un agente de policía, incluso si no está haciendo nada mal. Esto no es más que una naturaleza humana.
|
||||||
|
|
||||||
8. **Don’t contradict other moderators** If you disagree with the action of a moderator, talk with them in private or bring it up in the #mod-chat channel. Never override a ban, and never contradict the other moderator(s) publicly. Instead, have a cool-headed discussion in mod-chat and convince the moderator that they themselves should reverse their ban or change their point of view. Remember: we’re all on the same team. We want to dignify the role of moderators and present a unified front.
|
8. **No contradigas a otros moderadores** Si no estás de acuerdo con la acción de un moderador, hable con ellos en privado o hágalo en el canal #mod-chat. Nunca anules una prohibición, y nunca contradigas públicamente a los otros moderadores. En lugar de ello, mantengan una discusión fría en mod-chat y convenzan al moderador de que ellos mismos deberían revertir su prohibición o cambiar su punto de vista. Recuerde: todos estamos en el mismo equipo. Queremos dignificar el papel de los moderadores y presentar un frente unificado.
|
||||||
|
|
||||||
9. **Talk with other moderators** We have a room for moderators only. Use it! If you feel uncomfortable with how to handle a certain situation, ask other moderators for help. If you think something should be discussed, do it. You're part of the team and we value the input of every team member! Even if you totally disagree with anything in these guidelines or the Code of Conduct!
|
9. **Habla con otros moderadores** Solo tenemos una sala para moderadores. ¡Utilícelo! Si te sientes incómodo con cómo manejar una situación determinada, pide ayuda a otros moderadores. Si usted piensa que algo debería debatirse, hágalo. ¡Eres parte del equipo y valoramos la aportación de cada miembro del equipo! ¡Incluso si usted está totalmente en desacuerdo con cualquier cosa de estas directrices o con el Código de Conducta!
|
||||||
|
|
||||||
10. **Temporarily inactive** If you're not going to be active as a Moderator for a while due to vacation, illness or any other reason, make sure to let the others know in the #mod-chat channel. This is so we know if we can count on you to be regularly active in the server or not.
|
10. **Temporalmente inactivo** Si no vas a estar activo como moderador por un tiempo debido a las vacaciones, o cualquier otra razón, asegúrate de avisar a los demás en el canal #mod-chat. Esto es así que sabemos si podemos contar con usted para estar regularmente activo en el servidor o no.
|
||||||
|
|
||||||
## How to become a moderator
|
## Cómo convertirse en un moderador
|
||||||
|
|
||||||
If you are helping people in the community consistently over time, our Moderator Team will eventually take notice, and one of them will mention you as a possible moderator to [our staff](https://forum.freecodecamp.org/g/Team). There are no shortcuts to becoming a moderator.
|
Si estás ayudando a las personas de la comunidad consistentemente con el tiempo, nuestro Equipo de Moderadores eventualmente tomará nota, y uno de ellos te mencionará como un posible moderador para [nuestro personal](https://forum.freecodecamp.org/g/Team). No hay atajos para convertirse en moderador.
|
||||||
|
|
||||||
If you are approved, we will add you to our Moderator Teams on [GitHub](https://github.com/orgs/freeCodeCamp/teams/moderators), [forum](https://forum.freecodecamp.org/g/moderators), etc.
|
Si estás aprobado, te añadiremos a nuestros Equipos de Moderador en [GitHub](https://github.com/orgs/freeCodeCamp/teams/moderators), [foro](https://forum.freecodecamp.org/g/moderators), etc.
|
||||||
|
|
||||||
> [!NOTE] > **For GitHub:** After you've been accepted as a moderator, you will receive a Github repository invitation. You'll need to head over towards [freeCodeCamp GitHub Organisation Invitation](https://github.com/orgs/freeCodeCamp/invitation) to be able to accept the invitation. This is required for us to be able to give you write access on some of our repositories.
|
> [!NOTE] > **Para GitHub:** Después de que hayas sido aceptado como moderador, recibirás una invitación al repositorio de Github. Tendrás que dirigirte hacia [freeCodeCamp GitHub Organisation Invitation](https://github.com/orgs/freeCodeCamp/invitation) para poder aceptar la invitación. Esto es necesario para que podamos darle acceso de escritura en algunos de nuestros repositorios.
|
||||||
|
|
||||||
## How we retire inactive moderators
|
## Cómo retiramos a los moderadores inactivos
|
||||||
|
|
||||||
Please note that we will frequently remove mods whom we think are inactive. When we do this we will send the following message:
|
Tenga en cuenta que frecuentemente eliminaremos mods que consideramos inactivos. Cuando lo hagamos, enviaremos el siguiente mensaje:
|
||||||
|
|
||||||
> This is a standard message notifying you that, since you don't seem to have been an active moderator recently, we're removing you from our Moderator team. We deeply appreciate your help in the past.
|
> Este es un mensaje estándar notificándole que, ya que no parece haber sido un moderador activo recientemente, le estamos quitando de nuestro equipo de moderadores. Agradecemos profundamente su ayuda en el pasado.
|
||||||
|
|
||||||
> If you think we did this in error, or once you're ready to come back and contribute more, just reply to this message letting me know.
|
> Si crees que hicimos esto por error, o una vez que estés listo para volver y contribuir más, simplemente responde a este mensaje haciéndome saber.
|
||||||
|
|
||||||
## How our Contributors room works
|
## Cómo funciona nuestra sala de colaboradores
|
||||||
|
|
||||||
Anyone is welcome in the [Contributors room on our Discord](https://discord.gg/KVUmVXA). It is the designated chat room for moderators and other campers who are contributing to our community in any number of ways, including through study groups.
|
Cualquiera es bienvenido en la sala de [colaboradores en nuestro Discord](https://discord.gg/KVUmVXA). Es la sala de chat designada para moderadores y otros campistas que están contribuyendo a nuestra comunidad de cualquier forma incluyendo a través de grupos de estudio.
|
||||||
|
|
||||||
Our assumption is that contributors will read anything in this room that directly mentions them with an `@username`. Everything else is optional. But feel free to read anything anyone posts in there and interact.
|
Nuestro supuesto es que los contribuyentes leerán cualquier cosa en esta sala que los mencione directamente con un `@nombre de usuario`. Todo lo demás es opcional. Pero siéntete libre de leer cualquier cosa que se publique allí e interactuar.
|
||||||
|
|
||||||
## Dealing with solicitors
|
## Tratando con los abogados
|
||||||
|
|
||||||
You may be approached by organizations who want to partner or co-brand with freeCodeCamp in some way. Once you realize that this is what they're after, please stop talking to them and tell them to email quincy@freecodecamp.org. He gets proposals like this all the time and is in the best position to judge whether such a relationship will be worth it for our community (and it rarely is).
|
Es posible que te acerquen organizaciones que quieran asociar o co-marca con freeCodeCamp de alguna manera. Una vez que te das cuenta de que esto es lo que están haciendo, por favor deja de hablar con ellos y dales un correo electrónico a quincy@freecodecamp.org. Obtiene propuestas como ésta todo el tiempo y está en la mejor posición para juzgar si una relación de este tipo valdrá la pena para nuestra comunidad (y rara vez lo eso).
|
||||||
|
|
||||||
## Dealing with (mental) health inquiries
|
## Tratamiento de consultas (mentales) de salud
|
||||||
|
|
||||||
You may come across situations where users are seeking medical advice or are dealing with mental health issues and are looking for support. As a matter of policy, you should avoid talking privately about these matters. Should the situation at some point reflect back to fCC, we want to have the conversation(s) on record. Make it clear that we are not medical professionals and that you encourage the user to find professional help. As difficult as it sometimes can be, avoid giving any tips or advice other than pointing the user in the direction of professional help!
|
Usted puede encontrarse con situaciones en las que los usuarios están buscando asesoramiento médico o están tratando con problemas de salud mental y están buscando apoyo. Como cuestión política, debería evitar hablar en privado de estos asuntos. En caso de que la situación en algún momento refleje de nuevo a fCC, queremos tener las conversaciones registradas. Deja claro que no somos profesionales médicos y que animas al usuario a encontrar ayuda profesional. ¡Tan difícil como a veces puede ser, evitar dar consejos o consejos que no apunten al usuario en la dirección de la ayuda profesional!
|
||||||
|
|
||||||
If this happens on Discord: Suspend the user. This is not to punish them! Suspending a user will create a private channel that's only accessible by the user and the team. This will benefit both the user and fCC in several ways:
|
Si esto sucede en Discord: Suspenda al usuario. Esto no es para castigarlos. Suspender un usuario creará un canal privado al que sólo pueden acceder el usuario y el equipo. Esto beneficiará tanto al usuario como a fCC de varias maneras:
|
||||||
|
|
||||||
- The user is guaranteed some privacy
|
- El usuario tiene garantizado cierta privacidad
|
||||||
- Public chat is no longer disrupted
|
- El chat público ya no está interrumpido
|
||||||
- Other team members can pitch in, should you be uncomfortable dealing with the situation yourself
|
- Otros miembros del equipo pueden entrar, en caso de que te sientas incómodo enfrentándote a la situación tú mismo
|
||||||
|
|
||||||
> [!NOTE] Suspending a user automatically gives them a message about reading our Code of Conduct. Make sure you inform the user that you Suspended them to give them some privacy and that they're not being punished. This is very important! We absolutely want to avoid giving users the idea that they're being punished for reaching out to get help!
|
> [!NOTE] Suspender un usuario automáticamente le da un mensaje sobre cómo leer nuestro Código de Conducta. Asegúrese de informar al usuario de que usted suspendió para darle cierta privacidad y que no están siendo castigados. Esto es muy importante. ¡Deseamos evitar dar a los usuarios la idea de que están siendo castigados por ponerse en contacto para obtener ayuda!
|
||||||
|
|
||||||
If you believe the user is capable of rejoining the community, right click on the private channel and copy the ID. Put the following message in #mod-log:
|
Si crees que el usuario es capaz de volver a unirse a la comunidad, haz clic derecho en el canal privado y copia el ID. Poner el siguiente mensaje en #mod-log:
|
||||||
|
|
||||||
> Reference medical advice: <channel ID> <username>
|
> Asesoramiento médico de referencia: <channel ID> <username>
|
||||||
|
|
||||||
After that, you can remove the Suspension from the user as you normally do.
|
Después de eso, puede eliminar la suspensión del usuario como lo hace normalmente.
|
||||||
|
|
||||||
Helpful URLs:
|
URL útiles:
|
||||||
|
|
||||||
http://www.suicide.org/international-suicide-hotlines.html
|
http://www.suicide.org/international-suicide-hotlines.html
|
||||||
|
|
||||||
## A note on free speech
|
## Una nota sobre la libertad de expresión
|
||||||
|
|
||||||
Sometimes people will defend something offensive or incendiary that they said as "free speech."
|
A veces la gente defenderá algo ofensivo o incentivo que dijo como "libertad de expresión".
|
||||||
|
|
||||||
This XKCD comic perfectly summarizes most communities' thoughts on free speech. So if someone defends something they're saying as "free speech" feel free to send it to them.
|
Este cómic XKCD resume perfectamente los pensamientos de la mayoría de las comunidades sobre la libertad de expresión. Así que si alguien defiende algo, están diciendo como "libertad de expresión" siéntase libre de enviársela.
|
||||||
|
|
||||||
<div align="center"><img src='https://aws1.discourse-cdn.com/freecodecamp/original/3X/4/3/43a8b2eafe4c8622e02838f66f1dc6227de32c70.png' width="400" height="400" /></div>
|
<div align="center"><img src='https://aws1.discourse-cdn.com/freecodecamp/original/3X/4/3/43a8b2eafe4c8622e02838f66f1dc6227de32c70.png' width="400" height="400" /></div>
|
||||||
|
|
||||||
Thanks for reading this, and thanks for helping the developer community!
|
¡Gracias por leer esto, y gracias por ayudar a la comunidad de desarrolladores!
|
||||||
|
|
||||||
## Using Reply Templates
|
## Usando plantillas de respuesta
|
||||||
|
|
||||||
These are some of the standard reply templates that you may use while reviewing pull requests and triaging issues.
|
Estas son algunas de las plantillas de respuesta estándar que puede usar al revisar solicitudes de extracción y problemas de prueba.
|
||||||
|
|
||||||
> You can make your own with GitHub's built-in [**Saved replies**](https://github.com/settings/replies/) feature or use the ones below.
|
> Puedes hacer tu propio con la función integrada de GitHub [**Respuestas guardadas**](https://github.com/settings/replies/) o usar las que se muestran a continuación.
|
||||||
|
|
||||||
### Thank you
|
### Gracias.
|
||||||
|
|
||||||
```markdown
|
```markdown
|
||||||
Thank you for your contribution to the page! 👍
|
Gracias por su contribución a la página! :Techns_up:
|
||||||
We are happy to accept these changes and look forward to future contributions. 🎉
|
Estamos encantados de aceptar estos cambios y esperamos futuras contribuciones. 🎉
|
||||||
```
|
```
|
||||||
|
|
||||||
### Thank you and congrats
|
### Muchas gracias y felicidades
|
||||||
|
|
||||||
> For thanking and encouraging first-time contributors.
|
> Por dar las gracias y animar a los que han intervenido por primera vez.
|
||||||
|
|
||||||
```markdown
|
```markdown
|
||||||
Hi @username. Congrats on your first pull request (PR)! 🎉
|
Hola @nombre de usuario. ¡Felicidades por tu primer pull request (PR)! 🎉
|
||||||
|
|
||||||
Thank you for your contribution to the page! 👍
|
¡Gracias por tu contribución a la página! :Techns_up:
|
||||||
We are happy to accept these changes and look forward to future contributions. 📝
|
Estamos encantados de aceptar estos cambios y esperamos futuras contribuciones. 📝
|
||||||
```
|
```
|
||||||
|
|
||||||
### Build Error
|
### Error de compilación
|
||||||
|
|
||||||
```markdown
|
```markdown
|
||||||
Hey @username
|
Hola @username
|
||||||
|
|
||||||
We would love to be able to merge your changes but it looks like there is an error with the Travis CI build. ⚠️
|
Nos encantaría poder combinar tus cambios, pero parece que hay un error con la construcción de Travis CI. ⚠️
|
||||||
|
|
||||||
Once you resolve these issues, We will be able to review your PR and merge it. 😊
|
Una vez resuelvas estos problemas, podremos revisar tus PR y fusionarlos. 😊
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
> Feel free to reference the [Style guide for writing articles](https://github.com/freeCodeCamp/freeCodeCamp#article-title) for this repo on formatting an article correctly so your Travis CI build passes. ✅
|
> Siéntase libre de hacer referencia a la [Guía de estilo para escribir artículos](https://github. om/freeCodeCamp/freeCodeCamp#article-title) para este repositorio sobre el formato de un artículo correctamente para que tu Travis CI build pase. ✅
|
||||||
>
|
>
|
||||||
> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝
|
> Además, es buena práctica en GitHub escribir una breve descripción de los cambios al crear un PR. 📝
|
||||||
```
|
```
|
||||||
|
|
||||||
### Syncing Fork
|
### Sincronizando bifurcación
|
||||||
|
|
||||||
> When PR is not up to date with the `master` branch.
|
> Cuando las relaciones públicas no están actualizadas con la rama `principal`.
|
||||||
|
|
||||||
````markdown
|
````markdown
|
||||||
Hey @username
|
Hola @username
|
||||||
|
|
||||||
We would love to be able to merge your changes but it looks like there is an error with the Travis CI build. ⚠️
|
Nos encantaría poder combinar tus cambios, pero parece que hay un error con la construcción de Travis CI. ⚠️
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
Error: ENOTDIR: not a directory, open 'src/pages/java/data-abstraction/index.md'
|
Error: ENOTDIR: no es un directorio, abre 'src/pages/java/data-abstraction/index.md'
|
||||||
````
|
````
|
||||||
|
|
||||||
This particular error was not caused by your file but was an old error caused by merging faulty code to the `master` branch. It has since been resolved.
|
Este error en particular no fue causado por su archivo, pero fue un error antiguo causado por la fusión de código defectuoso en la rama `master`. Desde entonces se ha resuelto.
|
||||||
|
|
||||||
To pass the build, you will have to sync the latest changes from the `master` branch of the `freeCodeCamp/freeCodeCamp` repo.
|
Para pasar la compilación, tendrás que sincronizar los últimos cambios desde la rama `master` del repositorio `freeCodeCamp/freeCodeCamp`.
|
||||||
|
|
||||||
Using the command line, you can do this in three easy steps:
|
Usando la línea de comandos, puedes hacer esto en tres sencillos pasos:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git remote add upstream git://github.com/freeCodeCamp/freeCodeCamp.git
|
git remote add upstream git://github.com/freeCodeCamp/freeCodeCamp.git
|
||||||
@ -392,65 +392,65 @@ git fetch upstream
|
|||||||
git pull upstream master
|
git pull upstream master
|
||||||
```
|
```
|
||||||
|
|
||||||
If you're using a GUI, you can simply `Add a new remote...` and use the link `git://github.com/freeCodeCamp/freeCodeCamp.git` from above.
|
Si estás usando un GUI, puedes simplemente `Añadir un nuevo remoto...` y usar el enlace `git://github.com/freeCodeCamp/freeCodeCamp.git` desde arriba.
|
||||||
|
|
||||||
Once you sync your fork and pass the build, We will be able to review your PR and merge it. 😊
|
Una vez que sincronice su bifurcación y pase la compilación, podremos revisar su PR y fusionarla. 😊
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
> Feel free to reference the [Syncing a Fork](https://help.github.com/articles/syncing-a-fork/) article on GitHub for more insight on how to keep your fork up-to-date with the upstream repository. 🔄
|
> Siéntase libre de hacer referencia al artículo de [Sincronizar un Fork](https://help.github.com/articles/syncing-a-fork/) en GitHub para obtener más información sobre cómo mantener su fork actualizado con el repositorio del desarrollador principal. 🔄
|
||||||
>
|
>
|
||||||
> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝
|
> También, es buena práctica en GitHub escribir una breve descripción de sus cambios al crear un PR. 📝
|
||||||
````
|
````
|
||||||
|
|
||||||
### Merge Conflicts
|
### Fusionar conflictos
|
||||||
|
|
||||||
> When PR has merge conflicts that need to be resolved.¹
|
> Cuando las relaciones públicas tienen conflictos que necesitan ser resueltos.1
|
||||||
|
|
||||||
```markdown
|
```markdown
|
||||||
Hey @username
|
Hola @nombre de usuario
|
||||||
|
|
||||||
We would love to be able to merge your changes but it looks like you have some merge conflicts. ⚠️
|
Nos encantaría poder combinar tus cambios, pero parece que tienes algunos conflictos de fusión. ⚠️
|
||||||
|
|
||||||
Once you resolve these conflicts, We will be able to review your PR and merge it. 😊
|
Una vez que resuelvas estos conflictos, podremos revisar tus relaciones públicas y fusionarlos. 😊
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
> If you're not familiar with the merge conflict process, feel free to look over GitHub's guide on ["Resolving a merge conflict"](https://help.github.com/articles/resolving-a-merge-conflict-on-github/). 🔍️
|
> Si no estás familiarizado con el proceso de fusión de conflictos, no dudes en echar un vistazo a la guía de GitHub en ["Resolviendo un conflicto de fusiones"](https://help. ithub.com/articles/resolving-a-merge-conflict-on-github/). 🔍
|
||||||
>
|
>
|
||||||
> Also, it's good practice on GitHub to write a brief description of your changes when creating a PR. 📝
|
> Además, es buena práctica en GitHub escribir una breve descripción de sus cambios al crear un PR. 📝
|
||||||
````
|
````
|
||||||
|
|
||||||
¹ If a first-time-contributor has a merge conflict, maintainers will resolve the conflict for them.
|
1 Si un primer contribuyente tiene un conflicto de fusión, los mantenedores resolverán el conflicto por ellos.
|
||||||
|
|
||||||
### Duplicate
|
### Duplicate
|
||||||
|
|
||||||
> When PR is repetitive or a duplicate.
|
> Cuando las relaciones públicas son repetitivas o duplicadas.
|
||||||
|
|
||||||
```markdown
|
```markdown
|
||||||
Hey @username
|
Hey @username
|
||||||
|
|
||||||
It seems that similar changes have already been accepted earlier for this article you are editing, sorry about that. 😓
|
Parece que los cambios similares ya han sido aceptados anteriormente para este artículo que está editando, lo sentimos. 😓
|
||||||
|
|
||||||
If you feel you have more to add, please feel free to open up a new PR.
|
Si crees que tienes más que añadir, por favor no dudes en abrir una nueva PR.
|
||||||
|
|
||||||
Thanks again! 😊
|
¡Gracias de nuevo! 😊
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
> If you have any questions, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [our Discord server](https://discord.gg/pFspAhS).
|
> Si tienes alguna pregunta, no dudes en hacer preguntas en la categoría ['Contributors' en nuestro foro](https://forum. reecodecamp.org/c/contributors) o [nuestro servidor de Discord](https://discord.gg/pFspAhS).
|
||||||
```
|
```
|
||||||
|
|
||||||
### Closing invalid pull requests
|
### Cerrando pull requests no válidos
|
||||||
|
|
||||||
> When PR is invalid.
|
> Cuando PR no es válido.
|
||||||
|
|
||||||
```markdown
|
```markdown
|
||||||
Hey @username
|
Hola @username
|
||||||
|
|
||||||
Thank you for opening this pull request.
|
Gracias por abrir este pull request.
|
||||||
|
|
||||||
This is a standard message notifying you that we've reviewed your pull request and have decided not to merge it. We would welcome future pull requests from you.
|
Este es un mensaje estándar notificándole que hemos revisado su pull request y hemos decidido no fusionarlo. Nos gustaría recibir futuras solicitudes de extracción por su parte.
|
||||||
|
|
||||||
Thank you and happy coding.
|
Gracias y codificación feliz.
|
||||||
```
|
```
|
||||||
|
Reference in New Issue
Block a user