chore(i18n,docs): processed translations (#49692)

This commit is contained in:
camperbot
2023-03-13 22:06:38 +05:30
committed by GitHub
parent f4eb235c75
commit 0811e8ca46
23 changed files with 658 additions and 578 deletions

View File

@@ -427,48 +427,48 @@ sudo apt install build-essential
Provisioning VMs with the Code
1. Install `pnpm` globally.
1. Install Node LTS.
```console
curl -fsSL https://get.pnpm.io/install.sh | sh -
```
2. Install pnpm globally.
2. Clone freeCodeCamp, setup env and keys.
```console
npm install -g pnpm
```
```console
git clone https://github.com/freeCodeCamp/freeCodeCamp.git
cd freeCodeCamp
git checkout prod-current # or any other branch to be deployed
```
3. Clone freeCodeCamp, setup env and keys.
3. Create the `.env` from the secure credentials storage.
```console
git clone https://github.com/freeCodeCamp/freeCodeCamp.git
cd freeCodeCamp
git checkout prod-current # or any other branch to be deployed
```
4. Create the `google-credentials.json` from the secure credentials storage.
4. Create the `.env` from the secure credentials storage.
5. Install dependencies
```console
pnpm install
```
```console
pnpm install
```
6. Setup pm2 `logrotate` and startup on boot
```console
pnpm pm2 install pm2-logrotate
pnpm pm2 startup
```
```console
pnpm pm2 install pm2-logrotate
pnpm pm2 startup
```
7. Build the server
```console
pnpm prebuild && pnpm build:curriculum && pnpm build:server
```
```console
pnpm prebuild && pnpm build:curriculum && pnpm build:server
```
8. Start Instances
```console
pnpm start:server
```
```console
pnpm start:server
```
### Logging and Monitoring
@@ -503,7 +503,7 @@ pnpm install
3. Build the server
```console
pnpm run create:config && pnpm run build:curriculum && pnpm run build:server
pnpm prebuild && pnpm build:curriculum && pnpm build:server
```
4. Start Instances
@@ -515,11 +515,21 @@ pnpm start:server && pnpm pm2 logs
#### 2. Rolling updates - Used for logical changes to code.
```console
pnpm pm2 reload api-server/ecosystem.config.js && pnpm pm2 logs
pnpm reload:server && pnpm 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.
#### 3. Updating Node
1. Install new Node version
2. Update pm2 to use the new version
```console
pnpm pm2 update
```
## Work on Client Instances
1. Install build tools for node binaries (`node-gyp`) etc.

View File

@@ -427,48 +427,48 @@ sudo apt install build-essential
Provisioning VMs with the Code
1. Install `pnpm` globally.
1. Install Node LTS.
```console
curl -fsSL https://get.pnpm.io/install.sh | sh -
```
2. Install pnpm globally.
2. Clone freeCodeCamp, setup env and keys.
```console
npm install -g pnpm
```
```console
git clone https://github.com/freeCodeCamp/freeCodeCamp.git
cd freeCodeCamp
git checkout prod-current # or any other branch to be deployed
```
3. Clone freeCodeCamp, setup env and keys.
3. Create the `.env` from the secure credentials storage.
```console
git clone https://github.com/freeCodeCamp/freeCodeCamp.git
cd freeCodeCamp
git checkout prod-current # or any other branch to be deployed
```
4. Create the `google-credentials.json` from the secure credentials storage.
4. Create the `.env` from the secure credentials storage.
5. Install dependencies
```console
pnpm install
```
```console
pnpm install
```
6. Setup pm2 `logrotate` and startup on boot
```console
pnpm pm2 install pm2-logrotate
pnpm pm2 startup
```
```console
pnpm pm2 install pm2-logrotate
pnpm pm2 startup
```
7. Build the server
```console
pnpm prebuild && pnpm build:curriculum && pnpm build:server
```
```console
pnpm prebuild && pnpm build:curriculum && pnpm build:server
```
8. Start Instances
```console
pnpm start:server
```
```console
pnpm start:server
```
### Logging and Monitoring
@@ -503,7 +503,7 @@ pnpm install
3. Build the server
```console
pnpm run create:config && pnpm run build:curriculum && pnpm run build:server
pnpm prebuild && pnpm build:curriculum && pnpm build:server
```
4. Start Instances
@@ -515,11 +515,21 @@ pnpm start:server && pnpm pm2 logs
#### 2. Rolling updates - Used for logical changes to code.
```console
pnpm pm2 reload api-server/ecosystem.config.js && pnpm pm2 logs
pnpm reload:server && pnpm 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.
#### 3. Updating Node
1. Install new Node version
2. Update pm2 to use the new version
```console
pnpm pm2 update
```
## Work on Client Instances
1. Install build tools for node binaries (`node-gyp`) etc.

View File

@@ -427,48 +427,48 @@ sudo apt install build-essential
Aprovisionamiento de MVs con el código
1. Install `pnpm` globally.
1. Install Node LTS.
```console
curl -fsSL https://get.pnpm.io/install.sh | sh -
```
2. Install pnpm globally.
2. Clone freeCodeCamp, setup env and keys.
```console
npm install -g pnpm
```
```console
git clone https://github.com/freeCodeCamp/freeCodeCamp.git
cd freeCodeCamp
git checkout prod-current # or any other branch to be deployed
```
3. Clone freeCodeCamp, setup env and keys.
3. Create the `.env` from the secure credentials storage.
```console
git clone https://github.com/freeCodeCamp/freeCodeCamp.git
cd freeCodeCamp
git checkout prod-current # or any other branch to be deployed
```
4. Create the `google-credentials.json` from the secure credentials storage.
4. Create the `.env` from the secure credentials storage.
5. Install dependencies
```console
pnpm install
```
```console
pnpm install
```
6. Setup pm2 `logrotate` and startup on boot
```console
pnpm pm2 install pm2-logrotate
pnpm pm2 startup
```
```console
pnpm pm2 install pm2-logrotate
pnpm pm2 startup
```
7. Compila el servidor
7. Build the server
```console
pnpm prebuild && pnpm build:curriculum && pnpm build:server
```
```console
pnpm prebuild && pnpm build:curriculum && pnpm build:server
```
8. Inicia las Instancias
8. Start Instances
```console
pnpm start:server
```
```console
pnpm start:server
```
### Registro de eventos y monitoreo
@@ -488,25 +488,25 @@ Los cambios en el código deben desplegarse en las instancias de la API cada tan
#### 1. Actualizaciones Manuales: Utilizadas para actualizar dependencias, variables de entorno.
1. Detén todas las instancias
1. Stop all instances
```console
pnpm pm2 stop all
```
2. Instala las dependencias
2. Install dependencies
```console
pnpm install
```
3. Construye el servidor
3. Build the server
```console
pnpm run create:config && pnpm run build:curriculum && pnpm run build:server
pnpm prebuild && pnpm build:curriculum && pnpm build:server
```
4. Inicia las Instancias
4. Start Instances
```console
pnpm start:server && pnpm pm2 logs
@@ -515,14 +515,24 @@ pnpm start:server && pnpm pm2 logs
#### 2. Actualizaciones continuas: Utilizadas para cambios lógicos en el código.
```console
pnpm pm2 reload api-server/ecosystem.config.js && pnpm pm2 logs
pnpm reload:server && pnpm pm2 logs
```
> [!NOTE] Estamos manejando actualizaciones continuas de código, lógica, mediante flujos (pipelines). No debes tener que ejecutar estos comandos. Estos están aquí para documentación.
#### 3. Updating Node
1. Install new Node version
2. Update pm2 to use the new version
```console
pnpm pm2 update
```
## Trabajar en instancias de cliente
1. Instala las herramientas de compilación para archivos binarios de Node (`node-gyp`), etc.
1. Install build tools for node binaries (`node-gyp`) etc.
```console
sudo apt install build-essential
@@ -532,9 +542,9 @@ sudo apt install build-essential
Aprovisionamiento de MVs con el código
1. Instala Node LTS.
1. Install Node LTS.
2. Actualiza `npm` e instala PM2 y configura `logrotate` e inicia en el arranque
2. Update `npm` and install PM2 and setup `logrotate` and startup on boot
```console
npm i -g npm@8
@@ -544,16 +554,16 @@ Aprovisionamiento de MVs con el código
pm2 startup
```
3. Clona la configuración del cliente, configura las variables de entorno y las claves.
3. Clone client config, setup env and keys.
```console
git clone https://github.com/freeCodeCamp/client-config.git client
cd client
```
Inicia las instancias provisionales para el cliente web, estas se actualizarán con los artefactos del flujo de Azure.
Start placeholder instances for the web client, these will be updated with artifacts from the Azure pipeline.
> Todo: Esta configuración debe moverse a S3 o al almacenamiento de Azure Blob
> Todo: This setup needs to move to S3 or Azure Blob storage
>
> ```console
> echo "serve -c ../serve.json -p 50505 www" > client-start-primary.sh
@@ -582,23 +592,23 @@ Los cambios en el código deben desplegarse en las instancias del API cada ciert
> [!ATTENTION] 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. Actualizaciones Manuales: Utilizadas para actualizar dependencias, variables de entorno.
#### 1. Manual Updates - Used for updating dependencies, env variables.
1. Detén todas las instancias
1. Stop all instances
```console
pm2 stop all
```
2. Instala o actualiza las dependencias
2. Install or update dependencies
3. Inicia las Instancias
3. Start Instances
```console
pm2 start all --update-env && pm2 logs
```
#### 2. Actualizaciones Continuas: Utilizadas para cambios lógicos en el código.
#### 2. Rolling updates - Used for logical changes to code.
```console
pm2 reload all --update-env && pm2 logs
@@ -618,7 +628,7 @@ Aprovisionamiento de MVs con el código
**Clúster NGINX:**
1. Instala NGINX y configúralo desde el repositorio.
1. Install NGINX and configure from repository.
```console
sudo su
@@ -633,52 +643,52 @@ Aprovisionamiento de MVs con el código
cd /etc/nginx
```
2. Instala los certificados de origen de Cloudflare y la configuración de la aplicación upstream.
2. Install Cloudflare origin certificates and upstream application config.
Obtén los certificados de origen de almacenamiento seguro de Cloudflare e instálalos en los lugares requeridos.
Get the Cloudflare origin certificates from the secure storage and install at required locations.
**O**
**OR**
Mueve los certificados existentes:
Move over existing certificates:
```console
# Localmente
# Local
scp -r username@source-server-public-ip:/etc/nginx/ssl ./
scp -pr ./ssl username@target-server-public-ip:/tmp/
# Remotamente
# Remote
rm -rf ./ssl
mv /tmp/ssl ./
```
Actualiza las configuraciones de upstream:
Update Upstream Configurations:
```console
vi configs/upstreams.conf
```
Agrega/actualiza las direcciones IP fuente/origen de la aplicación.
Add/update the source/origin application IP addresses.
3. Configura redes y cortafuegos.
3. Setup networking and firewalls.
Configura los firewalls de Azure y `ufw` según sea necesario para las direcciones de origen de entrada.
Configure Azure firewalls and `ufw` as needed for ingress origin addresses.
4. Agregue la MV al grupo de backend del balanceador de carga.
4. Add the VM to the load balancer backend pool.
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.
Configure and add rules to load balancer if needed. You may also need to add the VMs to load balancer backend pool if needed.
**Clúster de Docker:**
1. Instala NGINX y configúralo desde el repositorio
1. Install Docker and configure from the repository
```console
git clone https://github.com/freeCodeCamp/chat-config.git chat
cd chat
```
2. Configura las variables de entorno necesarias y las direcciones IP de la instancia.
2. Configure the required environment variables and instance IP addresses.
3. Ejecuta el servidor de rocket-chat
3. Run rocket-chat server
```console
docker-compose config
@@ -687,13 +697,13 @@ Aprovisionamiento de MVs con el código
### Registro de eventos y monitoreo
1. Comprueba el estado del servicio NGINX utilizando el siguiente comando:
1. Check status for NGINX service using the below command:
```console
sudo systemctl status nginx
```
2. Verifica el estado para ejecutar instancias de Docker con:
2. Check status for running docker instances with:
```console
docker ps
@@ -705,13 +715,13 @@ Aprovisionamiento de MVs con el código
Los cambios de configuración a nuestras instancias NGINX se mantienen en GitHub, estos se deben implementar en cada instancia de la siguiente manera:
1. SSH en la instancia e ingresa sudo
1. SSH into the instance and enter sudo
```console
sudo su
```
2. Obtén el código de configuración más reciente.
2. Get the latest config code.
```console
cd /etc/nginx
@@ -719,7 +729,7 @@ Los cambios de configuración a nuestras instancias NGINX se mantienen en GitHub
git reset --hard origin/main
```
3. Prueba y recarga la configuración [con Signals](https://docs.nginx.com/nginx/admin-guide/basic-functionality/runtime-control/#controlling-nginx).
3. Test and reload the config [with Signals](https://docs.nginx.com/nginx/admin-guide/basic-functionality/runtime-control/#controlling-nginx).
```console
nginx -t
@@ -728,44 +738,44 @@ Los cambios de configuración a nuestras instancias NGINX se mantienen en GitHub
**Clúster de Docker:**
1. SSH en la instancia y navega hasta la ruta de configuración del chat
1. SSH into the instance and navigate to the chat config path
```console
cd ~/chat
```
2. Obtén el código de configuración más reciente.
2. Get the latest config code.
```console
git fetch --all --prune
git reset --hard origin/main
```
3. Baja la imagen más reciente de docker para Rocket.Chat
3. Pull down the latest docker image for Rocket.Chat
```console
docker-compose pull
```
4. Actualiza las instancias en ejecución
4. Update the running instances
```console
docker-compose up -d
```
5. Válida que las instancias estén activas
5. Validate the instances are up
```console
docker ps
```
6. Limpia los recursos externos
6. Cleanup extraneous resources
```console
docker system prune --volumes
```
Salida:
Output:
```console
WARNING! This will remove:
@@ -778,7 +788,7 @@ Los cambios de configuración a nuestras instancias NGINX se mantienen en GitHub
Are you sure you want to continue? [y/N] y
```
Selecciona sí (y) para eliminar todo lo que no esté en uso. Esto eliminará todos los contenedores detenidos, todas las redes y volúmenes no utilizados por al menos un contenedor, y todas las imágenes colgantes y cachés de compilación.
Select yes (y) to remove everything that is not in use. This will remove all stopped containers, all networks and volumes not used by at least one container, and all dangling images and build caches.
## Trabajar en las herramientas de los colaboradores
@@ -880,32 +890,32 @@ Navega a [Azure Devops](https://dev.azure.com/freeCodeCamp-org) y registra el ag
Actualmente actualizar los agentes requiere que sean eliminados y reconfigurados. Esto es necesario para que recojan correctamente los valores `PATH` y otras variables de entorno del sistema. Necesitamos hacer esto, por ejemplo, para actualizar Node.js en nuestras MV objetivo de implemetación.
1. Navega y revisa el estado del servicio
1. Navigate and check status of the service
```console
cd ~/azagent
sudo ./svc.sh status
```
2. Detén el servicio
2. Stop the service
```console
sudo ./svc.sh stop
```
3. Desinstala el servicio
3. Uninstall the service
```console
sudo ./svc.sh uninstall
```
4. Remueve el agente de la pila de flujo
4. Remove the agent from the pipeline pool
```console
./config.sh remove
```
5. Elimina los archivos de configuración
5. Remove the config files
```console
cd ~
@@ -918,32 +928,32 @@ Una vez que hayas completado los pasos de arriba, puedes repetir los mismos paso
Utilizamos [una herramienta CLI](https://github.com/freecodecamp/sendgrid-email-blast) para enviar el boletín semanal. Para actualizar y comenzar el proceso:
1. Inicia sesión en DigitalOcean, e inicia nuevas droplets bajo el proyecto `Sendgrid`. Usa el snapshot de Ubuntu Sendgrid con la fecha más reciente. Esto viene precargado con la herramienta CLI y el script para obtener correos electrónicos desde la base de datos. Con el volumen actual, tres droplets son suficientes para enviar los correos electrónicos de manera oportuna.
1. Sign in to DigitalOcean, and spin up new droplets under the `Sendgrid` project. Use the Ubuntu Sendgrid snapshot with the most recent date. This comes pre-loaded with the CLI tool and the script to fetch emails from the database. With the current volume, three droplets are sufficient to send the emails in a timely manner.
2. Configura el siguiente script para obtener la lista de correos.
2. Set up the script to fetch the email list.
```console
cd /home/freecodecamp/scripts/emails
cp sample.env .env
```
Tendrás que reemplazar los valores del marcador de posición en el archivo `.env` con tus credenciales.
You will need to replace the placeholder values in the `.env` file with your credentials.
3. Ejecuta el script.
3. Run the script.
```console
node get-emails.js emails.csv
```
Esto guardará la lista de correos en un archivo `emails.csv`.
This will save the email list in an `emails.csv` file.
4. Divide los correos electrónicos en varios archivos, dependiendo de la cantidad de droplets que necesites. Esto es más fácil de hacer utilizando `scp` para extraer la lista de correos electrónicos localmente y, utilizando tu editor de texto favorito para dividirlos en varios archivos. Cada archivo necesitará el encabezado `email,unsubscribeId`.
4. Break the emails down into multiple files, depending on the number of droplets you need. This is easiest to do by using `scp` to pull the email list locally and using your preferred text editor to split them into multiple files. Each file will need the `email,unsubscribeId` header.
5. Cambia al directorio CLI con `cd /home/sendgrid-email-blast` y configura la herramienta [según la documentación](https://github.com/freeCodeCamp/sendgrid-email-blast/blob/main/README.md).
5. Switch to the CLI directory with `cd /home/sendgrid-email-blast` and configure the tool [per the documentation](https://github.com/freeCodeCamp/sendgrid-email-blast/blob/main/README.md).
6. Ejecuta la herramienta para enviar los correos, según la [documentación de uso](https://github.com/freeCodeCamp/sendgrid-email-blast/blob/main/docs/cli-steps.md).
6. Run the tool to send the emails, following the [usage documentation](https://github.com/freeCodeCamp/sendgrid-email-blast/blob/main/docs/cli-steps.md).
7. Cuando el correo masivo haya terminado, verifica que no hay correos fallados antes de destruir los droplets.
7. When the email blast is complete, verify that no emails have failed before destroying the droplets.
# Manual de vuelo - Agregando instancias de noticias para nuevos idiomas
@@ -951,12 +961,12 @@ Utilizamos [una herramienta CLI](https://github.com/freecodecamp/sendgrid-email-
Utilizamos un [tema](https://github.com/freeCodeCamp/news-theme) personalizado para nuestra publicación de noticias. Los siguientes cambios en el tema permiten añadir nuevos idiomas.
1. Incluya una sentencia `else if` para el nuevo [código de idioma ISO](https://www.loc.gov/standards/iso639-2/php/code_list.php) en [`setup-locale.js`](https://github.com/freeCodeCamp/news-theme/blob/main/assets/config/setup-locale.js)
2. Crea una carpeta de configuración inicial duplicando la carpeta [`assets/config/es`](https://github.com/freeCodeCamp/news-theme/tree/main/assets/config/en) y cambiando su nombre al nuevo código de idioma. (`en` —> `es` para Español)
3. Dentro de la nueva carpeta de idioma, cambie los nombres de las variables en `main.js` y `footer.js` al código corto de idioma relevante (`enMain` —> `esMain` para Español)
4. Duplicar el [`locales/en.json`](https://github.com/freeCodeCamp/news-theme/blob/main/locales/en.json) y renombrarlo al nuevo código de idioma.
5. En [`partials/i18n.hbs`](https://github.com/freeCodeCamp/news-theme/blob/main/partials/i18n.hbs), agrega scripts para los archivos de configuración creados recientemente.
6. Agregue el lenguaje relacionado `day.js` script de [cdnjs](https://cdnjs.com/libraries/dayjs/1.10.4) al [CDN freeCodeCamp](https://github.com/freeCodeCamp/cdn/tree/main/build/news-assets/dayjs/1.10.4/locale)
1. Include an `else if` statement for the new [ISO language code](https://www.loc.gov/standards/iso639-2/php/code_list.php) in [`setup-locale.js`](https://github.com/freeCodeCamp/news-theme/blob/main/assets/config/setup-locale.js)
2. Create an initial config folder by duplicating the [`assets/config/en`](https://github.com/freeCodeCamp/news-theme/tree/main/assets/config/en) folder and changing its name to the new language code. (`en` —> `es` for Spanish)
3. Inside the new language folder, change the variable names in `main.js` and `footer.js` to the relevant language short code (`enMain` —> `esMain` for Spanish)
4. Duplicate the [`locales/en.json`](https://github.com/freeCodeCamp/news-theme/blob/main/locales/en.json) and rename it to the new language code.
5. In [`partials/i18n.hbs`](https://github.com/freeCodeCamp/news-theme/blob/main/partials/i18n.hbs), add scripts for the newly created config files.
6. Add the related language `day.js` script from [cdnjs](https://cdnjs.com/libraries/dayjs/1.10.4) to the [freeCodeCamp CDN](https://github.com/freeCodeCamp/cdn/tree/main/build/news-assets/dayjs/1.10.4/locale)
### Cambios en el Dashboard de Ghost

View File

@@ -427,48 +427,48 @@ sudo apt install build-essential
Bereitstellung von VMs mit dem Code
1. Install `pnpm` globally.
1. Install Node LTS.
```console
curl -fsSL https://get.pnpm.io/install.sh | sh -
```
2. Install pnpm globally.
2. Clone freeCodeCamp, setup env and keys.
```console
npm install -g pnpm
```
```console
git clone https://github.com/freeCodeCamp/freeCodeCamp.git
cd freeCodeCamp
git checkout prod-current # or any other branch to be deployed
```
3. Clone freeCodeCamp, setup env and keys.
3. Create the `.env` from the secure credentials storage.
```console
git clone https://github.com/freeCodeCamp/freeCodeCamp.git
cd freeCodeCamp
git checkout prod-current # or any other branch to be deployed
```
4. Create the `google-credentials.json` from the secure credentials storage.
4. Create the `.env` from the secure credentials storage.
5. Install dependencies
```console
pnpm install
```
```console
pnpm install
```
6. Setup pm2 `logrotate` and startup on boot
```console
pnpm pm2 install pm2-logrotate
pnpm pm2 startup
```
```console
pnpm pm2 install pm2-logrotate
pnpm pm2 startup
```
7. Errichte den Server.
7. Build the server
```console
pnpm prebuild && pnpm build:curriculum && pnpm build:server
```
```console
pnpm prebuild && pnpm build:curriculum && pnpm build:server
```
8. Starte Instanzen
8. Start Instances
```console
pnpm start:server
```
```console
pnpm start:server
```
### Logging und Monitoring
@@ -488,25 +488,25 @@ Codeänderungen müssen von Zeit zu Zeit auf die API-Instanzen übertragen werde
#### 1. Manuelle Updates - Werden für die Aktualisierung von Abhängigkeiten und Umgebungsvariablen verwendet.
1. Stoppe alle Instanzen
1. Stop all instances
```console
pnpm pm2 stop all
```
2. Installiere Abhängigkeiten
2. Install dependencies
```console
pnpm install
```
3. Errichte den Server
3. Build the server
```console
pnpm run create:config && pnpm run build:curriculum && pnpm run build:server
pnpm prebuild && pnpm build:curriculum && pnpm build:server
```
4. Starte Instanzen
4. Start Instances
```console
pnpm start:server && pnpm pm2 logs
@@ -515,14 +515,24 @@ pnpm start:server && pnpm pm2 logs
#### 2. Fortlaufende (Rolling) Updates - Werden für logische Änderungen am Code verwendet.
```console
pnpm pm2 reload api-server/ecosystem.config.js && pnpm pm2 logs
pnpm reload:server && pnpm pm2 logs
```
> [!NOTE] Wir führen fortlaufende Aktualisierungen des Codes, der Logik, mittels Pipelines durch. Du solltest diese Befehle nicht ausführen müssen. Sie dienen nur der Dokumentation.
#### 3. Updating Node
1. Install new Node version
2. Update pm2 to use the new version
```console
pnpm pm2 update
```
## Arbeiten an Client-Instanzen
1. Installiere Build-Tools für Node-Binaries (`node-gyp`) usw.
1. Install build tools for node binaries (`node-gyp`) etc.
```console
sudo apt install build-essential
@@ -532,9 +542,9 @@ sudo apt install build-essential
Bereitstellung von VMs mit dem Code
1. Installiere Node LTS.
1. Install Node LTS.
2. Aktualisiere `npm` und installiere PM2 und richte `logrotate` und Start beim Booten ein
2. Update `npm` and install PM2 and setup `logrotate` and startup on boot
```console
npm i -g npm@8
@@ -544,16 +554,16 @@ Bereitstellung von VMs mit dem Code
pm2 startup
```
3. Klone die Client-Konfiguration, richte die Umgebungsvariablen und Schlüssel ein.
3. Clone client config, setup env and keys.
```console
git clone https://github.com/freeCodeCamp/client-config.git client
cd client
```
Starte die Platzhalterinstanzen für den Webclient, diese werden mit Artefakten aus der Azure-Pipeline aktualisiert.
Start placeholder instances for the web client, these will be updated with artifacts from the Azure pipeline.
> Todo: Dieses Setup muss zu S3 oder Azure Blob Storage verschoben werden
> Todo: This setup needs to move to S3 or Azure Blob storage
>
> ```console
> echo "serve -c ../serve.json -p 50505 www" > client-start-primary.sh
@@ -582,23 +592,23 @@ Codeänderungen müssen von Zeit zu Zeit auf die API-Instanzen übertragen werde
> [!ATTENTION] Automatisierte Pipelines können derzeit keine Aktualisierungen von Abhängigkeiten vornehmen. Wir müssen eine manuelle Aktualisierung durchführen, bevor die Deployment-Pipeline ausgeführt wird.
#### 1. Manuelle Updates - Werden für die Aktualisierung von Abhängigkeiten und Umgebungsvariablen verwendet.
#### 1. Manual Updates - Used for updating dependencies, env variables.
1. Stoppe alle Instanzen
1. Stop all instances
```console
pm2 stop all
```
2. Installiere oder aktualisiere Abhängigkeiten
2. Install or update dependencies
3. Starte Instanzen
3. Start Instances
```console
pm2 start all --update-env && pm2 logs
```
#### 2. Fortlaufende (Rolling) Updates - Werden für logische Änderungen am Code verwendet.
#### 2. Rolling updates - Used for logical changes to code.
```console
pm2 reload all --update-env && pm2 logs
@@ -618,7 +628,7 @@ Bereitstellen von VMs mit dem Code
**NGINX Cluster:**
1. Installiere NGINX und konfiguriere es aus dem Repository.
1. Install NGINX and configure from repository.
```console
sudo su
@@ -633,13 +643,13 @@ Bereitstellen von VMs mit dem Code
cd /etc/nginx
```
2. Installiere die Cloudflare-Ursprungszertifikate und die upstream Anwendungskonfiguration.
2. Install Cloudflare origin certificates and upstream application config.
Hole die Cloudflare-Ursprungszertifikate aus dem sicheren Speicher und installiere sie an erforderlichen Stellen.
Get the Cloudflare origin certificates from the secure storage and install at required locations.
**oder**
**OR**
Übertrage bestehende Zertifikate:
Move over existing certificates:
```console
# Local
@@ -651,34 +661,34 @@ Bereitstellen von VMs mit dem Code
mv /tmp/ssl ./
```
Aktualisiere die Upstream-Konfigurationen:
Update Upstream Configurations:
```console
vi configs/upstreams.conf
```
Ergänze/aktualisiere die Quell-/Herkunfts-IP-Adressen der Anwendung.
Add/update the source/origin application IP addresses.
3. Richte Netzwerke und Firewalls ein.
3. Setup networking and firewalls.
Konfiguriere die Azure Firewalls und `ufw` nach Bedarf für die ingress-Ursprungsadressen.
Configure Azure firewalls and `ufw` as needed for ingress origin addresses.
4. Füge die VM zum Load Balancer Backend Pool hinzu.
4. Add the VM to the load balancer backend pool.
Konfiguriere den Load Balancer und füge ihm Regeln hinzu, falls nötig. Eventuell musst du auch die VMs zum Load Balancer-Backend-Pool hinzufügen, falls erforderlich.
Configure and add rules to load balancer if needed. You may also need to add the VMs to load balancer backend pool if needed.
**Docker Cluster:**
1. Installiere Docker und konfiguriere aus dem Repository
1. Install Docker and configure from the repository
```console
git clone https://github.com/freeCodeCamp/chat-config.git chat
cd chat
```
2. Konfiguriere die erforderlichen Umgebungsvariablen und Instanz-IP-Adressen.
2. Configure the required environment variables and instance IP addresses.
3. Starte den Rocket-Chat-Server
3. Run rocket-chat server
```console
docker-compose config
@@ -687,13 +697,13 @@ Bereitstellen von VMs mit dem Code
### Logging und Monitoring
1. Überprüfe den Status des NGINX-Dienstes mit dem folgenden Befehl:
1. Check status for NGINX service using the below command:
```console
sudo systemctl status nginx
```
2. Überprüfe den Status für laufende Docker-Instanzen mit:
2. Check status for running docker instances with:
```console
docker ps
@@ -705,13 +715,13 @@ Bereitstellen von VMs mit dem Code
Konfigurationsänderungen für unsere NGINX-Instanzen werden auf GitHub gepflegt. Diese sollten auf jeder Instanz wie folgt implementiert werden:
1. Verbinde dich per SSH mit der Instanz und gib sudo ein
1. SSH into the instance and enter sudo
```console
sudo su
```
2. Hol dir den aktuellsten Konfigurationscode.
2. Get the latest config code.
```console
cd /etc/nginx
@@ -719,7 +729,7 @@ Konfigurationsänderungen für unsere NGINX-Instanzen werden auf GitHub gepflegt
git reset --hard origin/main
```
3. Teste und lade die Konfiguration neu [mit Signals](https://docs.nginx.com/nginx/admin-guide/basic-functionality/runtime-control/#controlling-nginx).
3. Test and reload the config [with Signals](https://docs.nginx.com/nginx/admin-guide/basic-functionality/runtime-control/#controlling-nginx).
```console
nginx -t
@@ -728,38 +738,38 @@ Konfigurationsänderungen für unsere NGINX-Instanzen werden auf GitHub gepflegt
**Docker Cluster:**
1. Verbinde dich per SSH mit der Instanz und navigiere zum Chat-Konfigurationspfad
1. SSH into the instance and navigate to the chat config path
```console
cd ~/chat
```
2. Hol dir den aktuellsten Konfigurationscode.
2. Get the latest config code.
```console
git fetch --all --prune
git reset --hard origin/main
```
3. Lade das neueste Docker-Image für Rocket.Chat herunter
3. Pull down the latest docker image for Rocket.Chat
```console
docker-compose pull
```
4. Aktualisiere die laufenden Instanzen
4. Update the running instances
```console
docker-compose up -d
```
5. Überprüfe, ob die Instanzen aktiv sind
5. Validate the instances are up
```console
docker ps
```
6. Überflüssige Ressourcen bereinigen
6. Cleanup extraneous resources
```console
docker system prune --volumes
@@ -778,7 +788,7 @@ Konfigurationsänderungen für unsere NGINX-Instanzen werden auf GitHub gepflegt
Are you sure you want to continue? [y/N] y
```
Wähle ja (y), um alles zu entfernen, was nicht in Gebrauch ist. Dadurch werden alle gestoppten Container, alle Netzwerke und Volumes, die nicht von mindestens einem Container verwendet werden, sowie alle überflüssigen Images und Build-Caches entfernt.
Select yes (y) to remove everything that is not in use. This will remove all stopped containers, all networks and volumes not used by at least one container, and all dangling images and build caches.
## Arbeit an Contributor Tools
@@ -880,32 +890,32 @@ Navigiere zu [Azure Devops](https://dev.azure.com/freeCodeCamp-org) und registri
Derzeit müssen Agents zum Aktualisieren entfernt und neu konfiguriert werden. Dies ist erforderlich, damit sie die `PATH`-Werte und andere Systemumgebungsvariablen korrekt übernehmen können. Wir müssen dies zum Beispiel tun, um Node.js auf unseren Ziel-VMs zu aktualisieren.
1. Navigiere zum Dienst und prüfe den Status
1. Navigate and check status of the service
```console
cd ~/azagent
sudo ./svc.sh status
```
2. Stoppe den Dienst
2. Stop the service
```console
sudo ./svc.sh stop
```
3. Deinstalliere den Dienst
3. Uninstall the service
```console
sudo ./svc.sh uninstall
```
4. Den Agenten aus dem Pipeline-Pool entfernen
4. Remove the agent from the pipeline pool
```console
./config.sh remove
```
5. Entferne die Konfigurationsdateien
5. Remove the config files
```console
cd ~
@@ -918,32 +928,32 @@ Wenn du die oben genannten Schritte abgeschlossen hast, kannst du die gleichen S
Wir verwenden [ein CLI-Tool](https://github.com/freecodecamp/sendgrid-email-blast), um den wöchentlichen Newsletter zu versenden. Um dieses in Betrieb zu nehmen und den Prozess zu beginnen:
1. Melde dich bei DigitalOcean an und erstelle neue Droplets unter dem `Sendgrid`-Projekt. Verwende den Ubuntu Sendgrid-Snapshot mit dem aktuellsten Datum. Dieser wird mit dem CLI-Tool und dem Skript zum Abrufen von E-Mails aus der Datenbank geliefert. Bei dem aktuellen Volumen reichen drei Droplets aus, um die E-Mails rechtzeitig zu versenden.
1. Sign in to DigitalOcean, and spin up new droplets under the `Sendgrid` project. Use the Ubuntu Sendgrid snapshot with the most recent date. This comes pre-loaded with the CLI tool and the script to fetch emails from the database. With the current volume, three droplets are sufficient to send the emails in a timely manner.
2. Richte das Skript zum Abrufen der E-Mail-Liste ein.
2. Set up the script to fetch the email list.
```console
cd /home/freecodecamp/scripts/emails
cp sample.env .env
```
Du musst die Platzhalterwerte in der `.env`-Datei durch deine Anmeldedaten ersetzen.
You will need to replace the placeholder values in the `.env` file with your credentials.
3. Starte das Script
3. Run the script.
```console
node get-emails.js emails.csv
```
Dadurch wird die E-Mail-Liste in einer `emails.csv`-Datei gespeichert.
This will save the email list in an `emails.csv` file.
4. Teile die E-Mails in mehrere Dateien auf, je nachdem, wie viele Droplets du brauchst. Das geht am einfachsten, indem du `scp` verwendest, um die E-Mail-Liste lokal zu speichern und sie mit deinem bevorzugten Texteditor in mehrere Dateien aufzuteilen. Jede Datei benötigt den `email,unsubscribeId`-Header.
4. Break the emails down into multiple files, depending on the number of droplets you need. This is easiest to do by using `scp` to pull the email list locally and using your preferred text editor to split them into multiple files. Each file will need the `email,unsubscribeId` header.
5. Wechsle mit `cd /home/sendgrid-email-blast` in das CLI-Verzeichnis und konfiguriere das Tool [gemäß der Dokumentation](https://github.com/freeCodeCamp/sendgrid-email-blast/blob/main/README.md).
5. Switch to the CLI directory with `cd /home/sendgrid-email-blast` and configure the tool [per the documentation](https://github.com/freeCodeCamp/sendgrid-email-blast/blob/main/README.md).
6. Führe das Tool aus, um die E-Mails zu versenden und folge dabei der [Benutzungsdokumentation](https://github.com/freeCodeCamp/sendgrid-email-blast/blob/main/docs/cli-steps.md).
6. Run the tool to send the emails, following the [usage documentation](https://github.com/freeCodeCamp/sendgrid-email-blast/blob/main/docs/cli-steps.md).
7. Wenn der E-Mail-Versand abgeschlossen ist, überprüfe, dass keine E-Mails fehlgeschlagen sind, bevor du die Droplets vernichtest.
7. When the email blast is complete, verify that no emails have failed before destroying the droplets.
# Handbuch - Hinzufügen von Nachrichteninstanzen für neue Sprachen
@@ -951,12 +961,12 @@ Wir verwenden [ein CLI-Tool](https://github.com/freecodecamp/sendgrid-email-blas
Wir verwenden ein eigenes [Theme](https://github.com/freeCodeCamp/news-theme) für unsere Nachrichtenpublikation. Wenn du die folgenden Änderungen am Theme vornimmst, können neue Sprachen hinzugefügt werden.
1. Füge eine `else if`-Anweisung für den neuen [ISO Sprachcode](https://www.loc.gov/standards/iso639-2/php/code_list.php) in [`setup-locale.js`](https://github.com/freeCodeCamp/news-theme/blob/main/assets/config/setup-locale.js) ein
2. Erstelle einen ersten Konfigurationsordner, indem du den [`assets/config/de`](https://github.com/freeCodeCamp/news-theme/tree/main/assets/config/en) Ordner duplizierst und seinen Namen in den neuen Sprachcode änderst. (`de` —> `es` für Spanisch)
3. Ändere im neuen Sprachordner die Variablennamen in `main.js` und `footer.js` in die entsprechende Sprachkurzform (`enMain` -> `esMain` für Spanisch)
4. Dupliziere den [`locales/de.json`](https://github.com/freeCodeCamp/news-theme/blob/main/locales/en.json) und benenne ihn in den neuen Sprachcode.
5. In [`partials/i18n.hbs`](https://github.com/freeCodeCamp/news-theme/blob/main/partials/i18n.hbs) fügst du Skripte für die neu erstellten Konfigurationsdateien hinzu.
6. Füge das Skript (`day.js`) der zugehörigen Sprache von [cdnjs](https://cdnjs.com/libraries/dayjs/1.10.4) zum [freeCodeCamp CDN](https://github.com/freeCodeCamp/cdn/tree/main/build/news-assets/dayjs/1.10.4/locale) hinzu
1. Include an `else if` statement for the new [ISO language code](https://www.loc.gov/standards/iso639-2/php/code_list.php) in [`setup-locale.js`](https://github.com/freeCodeCamp/news-theme/blob/main/assets/config/setup-locale.js)
2. Create an initial config folder by duplicating the [`assets/config/en`](https://github.com/freeCodeCamp/news-theme/tree/main/assets/config/en) folder and changing its name to the new language code. (`en` —> `es` for Spanish)
3. Inside the new language folder, change the variable names in `main.js` and `footer.js` to the relevant language short code (`enMain` > `esMain` for Spanish)
4. Duplicate the [`locales/en.json`](https://github.com/freeCodeCamp/news-theme/blob/main/locales/en.json) and rename it to the new language code.
5. In [`partials/i18n.hbs`](https://github.com/freeCodeCamp/news-theme/blob/main/partials/i18n.hbs), add scripts for the newly created config files.
6. Add the related language `day.js` script from [cdnjs](https://cdnjs.com/libraries/dayjs/1.10.4) to the [freeCodeCamp CDN](https://github.com/freeCodeCamp/cdn/tree/main/build/news-assets/dayjs/1.10.4/locale)
### Ghost Dashboard Änderungen

View File

@@ -427,48 +427,48 @@ sudo apt install build-essential
Fare il provisioning delle VM con il codice
1. Install `pnpm` globally.
1. Install Node LTS.
```console
curl -fsSL https://get.pnpm.io/install.sh | sh -
```
2. Install pnpm globally.
2. Clone freeCodeCamp, setup env and keys.
```console
npm install -g pnpm
```
```console
git clone https://github.com/freeCodeCamp/freeCodeCamp.git
cd freeCodeCamp
git checkout prod-current # or any other branch to be deployed
```
3. Clone freeCodeCamp, setup env and keys.
3. Create the `.env` from the secure credentials storage.
```console
git clone https://github.com/freeCodeCamp/freeCodeCamp.git
cd freeCodeCamp
git checkout prod-current # or any other branch to be deployed
```
4. Create the `google-credentials.json` from the secure credentials storage.
4. Create the `.env` from the secure credentials storage.
5. Install dependencies
```console
pnpm install
```
```console
pnpm install
```
6. Setup pm2 `logrotate` and startup on boot
```console
pnpm pm2 install pm2-logrotate
pnpm pm2 startup
```
```console
pnpm pm2 install pm2-logrotate
pnpm pm2 startup
```
7. Fai il build del server
7. Build the server
```console
pnpm prebuild && pnpm build:curriculum && pnpm build:server
```
```console
pnpm prebuild && pnpm build:curriculum && pnpm build:server
```
8. Avvia le istanze
8. Start Instances
```console
pnpm start:server
```
```console
pnpm start:server
```
### Log e monitoraggio
@@ -488,25 +488,25 @@ Ogni tanto devono essere fatti dei deployment dei cambiamenti al codice alle ist
#### 1. Aggiornamenti manuali - Usati per aggiornare dipendenze, variabili env.
1. Ferma tutte le istanze
1. Stop all instances
```console
pnpm pm2 stop all
```
2. Installa dipendenze
2. Install dependencies
```console
pnpm install
```
3. Fai il build del server
3. Build the server
```console
pnpm run create:config && pnpm run build:curriculum && pnpm run build:server
pnpm prebuild && pnpm build:curriculum && pnpm build:server
```
4. Avvia le istanze
4. Start Instances
```console
pnpm start:server && pnpm pm2 logs
@@ -515,14 +515,24 @@ pnpm start:server && pnpm pm2 logs
#### 2. Aggiornamenti continui - usati per cambiamenti logici al codice.
```console
pnpm pm2 reload api-server/ecosystem.config.js && pnpm pm2 logs
pnpm reload:server && pnpm pm2 logs
```
> [!NOTE] Gli update continui a codice e logica sono gestiti dalle pipeline. Non dovresti aver bisogno di eseguire questi comandi. Sono qui per documentazione.
#### 3. Updating Node
1. Install new Node version
2. Update pm2 to use the new version
```console
pnpm pm2 update
```
## Lavora sulle istanze del client
1. Installa strumenti di generazione per i binari di node (`node-gyp`) ecc.
1. Install build tools for node binaries (`node-gyp`) etc.
```console
sudo apt install build-essential
@@ -532,9 +542,9 @@ sudo apt install build-essential
Fare provisioning delle VM con il codice
1. Installare Node LTS.
1. Install Node LTS.
2. Aggiorna `npm` e installa PM2 e fai il setup di `logrotate` e avvio all'accensione
2. Update `npm` and install PM2 and setup `logrotate` and startup on boot
```console
npm i -g npm@8
@@ -544,16 +554,16 @@ Fare provisioning delle VM con il codice
pm2 startup
```
3. Clona la configurazione del client, l'env di configurazione e le chiavi.
3. Clone client config, setup env and keys.
```console
git clone https://github.com/freeCodeCamp/client-config.git client
cd client
```
Avvia le istanze placeholder per il web client, queste verranno aggiornate con artefatti dalla pipeline Azure.
Start placeholder instances for the web client, these will be updated with artifacts from the Azure pipeline.
> Todo: questo setup deve essere spostato a S3 o Azure Blob storage
> Todo: This setup needs to move to S3 or Azure Blob storage
>
> ```console
> echo "serve -c ../serve.json -p 50505 www" > client-start-primary.sh
@@ -582,23 +592,23 @@ Ogni tanto devono essere fatti dei deployment dei cambiamenti al codice alle ist
> [!ATTENTION] Le pipeline automatizzate al momento non gestiscono l'aggiornamento delle dipendenze. Dobbiamo fare un aggiornamento manuale prima di ogni esecuzione della pipeline di deployment.
#### 1. Aggiornamenti manuali - Usati per aggiornare dipendenze, variabili env.
#### 1. Manual Updates - Used for updating dependencies, env variables.
1. Ferma tutte le istanze
1. Stop all instances
```console
pm2 stop all
```
2. Installa o aggiorna le dipendenze
2. Install or update dependencies
3. Avvia le istanze
3. Start Instances
```console
pm2 start all --update-env && pm2 logs
```
#### 2. Aggiornamenti continui - usati per cambiamenti logici al codice.
#### 2. Rolling updates - Used for logical changes to code.
```console
pm2 reload all --update-env && pm2 logs
@@ -618,7 +628,7 @@ Fare provisioning delle VM con il codice
**Cluster NGINX:**
1. Installa NGINX e configuralo dal repository.
1. Install NGINX and configure from repository.
```console
sudo su
@@ -633,13 +643,13 @@ Fare provisioning delle VM con il codice
cd /etc/nginx
```
2. Installa i certificati di origine di Cloudflare e la configurazione dell'applicazione di upstream.
2. Install Cloudflare origin certificates and upstream application config.
Ottieni il certificati di origine di Cloudflare dallo storage sicuro e installa nelle posizioni richieste.
Get the Cloudflare origin certificates from the secure storage and install at required locations.
**O**
**OR**
Sposta i certificati esistenti:
Move over existing certificates:
```console
# Local
@@ -651,34 +661,34 @@ Fare provisioning delle VM con il codice
mv /tmp/ssl ./
```
Aggiorna le configurazioni di upstream:
Update Upstream Configurations:
```console
vi configs/upstreams.conf
```
Aggiungi/aggiorna gli indirizzi IP source/origin dell'applicazione.
Add/update the source/origin application IP addresses.
3. Fai il setup di network e firewall.
3. Setup networking and firewalls.
Configura i firewall di Azure e `ufw` come necessario per indirizzi di origine d'ingresso.
Configure Azure firewalls and `ufw` as needed for ingress origin addresses.
4. Aggiungi la VM al pool del load balancer del backend.
4. Add the VM to the load balancer backend pool.
Configura e aggiungi regole al load balancer se necessario. Potresti anche aver bisogno di aggiungere le VM al pool del load balancer del backend.
Configure and add rules to load balancer if needed. You may also need to add the VMs to load balancer backend pool if needed.
**Cluster Docker:**
1. Installa Docker e configura dal repository
1. Install Docker and configure from the repository
```console
git clone https://github.com/freeCodeCamp/chat-config.git chat
cd chat
```
2. Configura le variabili d'ambiente (env) richieste e gli indirizzi IP delle istanze.
2. Configure the required environment variables and instance IP addresses.
3. Avvia il server rocket-chat
3. Run rocket-chat server
```console
docker-compose config
@@ -687,13 +697,13 @@ Fare provisioning delle VM con il codice
### Logging e monitoraggio
1. Controlla lo stato dei servizi NGINX usando i comandi seguenti:
1. Check status for NGINX service using the below command:
```console
sudo systemctl status nginx
```
2. Controlla lo stato delle istanze docker in esecuzione con:
2. Check status for running docker instances with:
```console
docker ps
@@ -705,13 +715,13 @@ Fare provisioning delle VM con il codice
Le modifiche di configurazione alle nostre istanze NGINX sono mantenute su GitHub, queste dovrebbero essere distribuite su ogni istanza in questo modo:
1. SSH nell'istanza ed entra con sudo
1. SSH into the instance and enter sudo
```console
sudo su
```
2. Ottieni il codice di configurazione più recente.
2. Get the latest config code.
```console
cd /etc/nginx
@@ -719,7 +729,7 @@ Le modifiche di configurazione alle nostre istanze NGINX sono mantenute su GitHu
git reset --hard origin/main
```
3. Testa e ricarica la configurazione [con Signals](https://docs.nginx.com/nginx/admin-guide/basic-functionality/runtime-control/#controlling-nginx).
3. Test and reload the config [with Signals](https://docs.nginx.com/nginx/admin-guide/basic-functionality/runtime-control/#controlling-nginx).
```console
nginx -t
@@ -728,38 +738,38 @@ Le modifiche di configurazione alle nostre istanze NGINX sono mantenute su GitHu
**Cluster Docker:**
1. SSH nell'istanza e naviga al percorso di configurazione della chat
1. SSH into the instance and navigate to the chat config path
```console
cd ~/chat
```
2. Ottieni il codice di configurazione più recente.
2. Get the latest config code.
```console
git fetch --all --prune
git reset --hard origin/main
```
3. Ottieni l'immagine docker più recente da Rocket.Chat
3. Pull down the latest docker image for Rocket.Chat
```console
docker-compose pull
```
4. Aggiorna le istanze in esecuzione
4. Update the running instances
```console
docker-compose up -d
```
5. Verifica che le istanze siano in funzione
5. Validate the instances are up
```console
docker ps
```
6. Pulisci risorse estranee
6. Cleanup extraneous resources
```console
docker system prune --volumes
@@ -778,7 +788,7 @@ Le modifiche di configurazione alle nostre istanze NGINX sono mantenute su GitHu
Are you sure you want to continue? [y/N] y
```
Seleziona yes (y) per rimuovere tutto quello che non è in uso. Questo rimuoverà tutti i contenitori che sono stati arrestati, tutti i network e volumi che non sono utilizzati da almeno un container, e le cache di immagini e build scollegate.
Select yes (y) to remove everything that is not in use. This will remove all stopped containers, all networks and volumes not used by at least one container, and all dangling images and build caches.
## Lavorare sugli strumenti dei contributori
@@ -880,32 +890,32 @@ Vai su [Azure Devops](https://dev.azure.com/freeCodeCamp-org) e registra l'agent
Attualmente aggiornare gli agent richiede che siano rimossi e riconfigurati. Questo è richiesto perché possano ottenere valori `PATH` e altre variabili d'ambiente di sistema. Dobbiame farlo per aggiornare Node.js sulle VM target di deployment.
1. Naviga e controlla lo status del servizio
1. Navigate and check status of the service
```console
cd ~/azagent
sudo ./svc.sh status
```
2. Ferma il servizio
2. Stop the service
```console
sudo ./svc.sh stop
```
3. Disinstalla il servizio
3. Uninstall the service
```console
sudo ./svc.sh uninstall
```
4. Rimuovi l'agente dal pool della pipeline
4. Remove the agent from the pipeline pool
```console
./config.sh remove
```
5. Rimuovi i file di config
5. Remove the config files
```console
cd ~
@@ -918,32 +928,32 @@ Una volta completati gli step precedenti potrai ripetere gli stesi passi per ins
Usiamo uno [strumento CLI](https://github.com/freecodecamp/sendgrid-email-blast) per inviare la nostra newsletter settimanale. Per avviare e iniziare il processo:
1. Entra in DigitalOcean e avvia nuovi droplet sotto il progetto `Sendgrid`. Usa lo snapshot di Ubuntu Sendgrid con la data più recente. Questo viene pre-caricato con lo strumento CLI e lo script per ottenere le email dal database. Con il volume corrente, tre droplet sono sufficienti per mandare le email in un tempo decente.
1. Sign in to DigitalOcean, and spin up new droplets under the `Sendgrid` project. Use the Ubuntu Sendgrid snapshot with the most recent date. This comes pre-loaded with the CLI tool and the script to fetch emails from the database. With the current volume, three droplets are sufficient to send the emails in a timely manner.
2. Setta lo script per ottenere la lista delle email.
2. Set up the script to fetch the email list.
```console
cd /home/freecodecamp/scripts/emails
cp sample.env .env
```
Avrai bisogno di sostituire i valori segnaposto nel file `.env` con le tue credenziali.
You will need to replace the placeholder values in the `.env` file with your credentials.
3. Esegui lo script.
3. Run the script.
```console
node get-emails.js emails.csv
```
Questo salverà la lista delle email in un file `emails.csv`.
This will save the email list in an `emails.csv` file.
4. Separa le email in più file a seconda del numero di droplet di cui hai bisogno. Questo è più facile da fare usando `scp` per copiare la lista in locale e usare il tuo editor di testi preferito per separarle in file multipli. Ogni file avrà bisogno del header `email,unsubscribeId`.
4. Break the emails down into multiple files, depending on the number of droplets you need. This is easiest to do by using `scp` to pull the email list locally and using your preferred text editor to split them into multiple files. Each file will need the `email,unsubscribeId` header.
5. Spostati alla directory CLI con `cd /home/sendgrid-email-blast` e configura lo strumento [seguendo la documentazione](https://github.com/freeCodeCamp/sendgrid-email-blast/blob/main/README.md).
5. Switch to the CLI directory with `cd /home/sendgrid-email-blast` and configure the tool [per the documentation](https://github.com/freeCodeCamp/sendgrid-email-blast/blob/main/README.md).
6. Esegui lo strumento per mandare le email, seguendo la [documentazione d'uso](https://github.com/freeCodeCamp/sendgrid-email-blast/blob/main/docs/cli-steps.md).
6. Run the tool to send the emails, following the [usage documentation](https://github.com/freeCodeCamp/sendgrid-email-blast/blob/main/docs/cli-steps.md).
7. Quando il email blast è completato, verifica che nessuna email abbia fallito prima di distruggere i droplet.
7. When the email blast is complete, verify that no emails have failed before destroying the droplets.
# Manuale di Volo - Aggiunta di istanze della pubblicazione per nuove lingue
@@ -951,12 +961,12 @@ Usiamo uno [strumento CLI](https://github.com/freecodecamp/sendgrid-email-blast)
Utilizziamo un [tema](https://github.com/freeCodeCamp/news-theme) personalizzato per la nostra pubblicazione. L'aggiunta delle seguenti modifiche al tema consente l'aggiunta di nuove lingue.
1. Includere una espressione `else if` per il nuovo [codice ISO della lingua](https://www.loc.gov/standards/iso639-2/php/code_list.php) in [`setup-local.js`](https://github.com/freeCodeCamp/news-theme/blob/main/assets/config/setup-locale.js)
2. Crea una cartella di configurazione iniziale duplicando la cartella [`assets/config/en`](https://github.com/freeCodeCamp/news-theme/tree/main/assets/config/en) e cambiando il suo nome con il codice della nuova lingua. (`en` —> `es` per Spagnolo)
3. Dentro la nuova cartella, cambia i nomi delle variabili in `main.js` e `footer.js` con il codice della nuova lingua (`enMain` —> `esMain` per spagnolo)
4. Duplica [`locals/en.json`](https://github.com/freeCodeCamp/news-theme/blob/main/locales/en.json) e rinominalo con il codice della nuova lingua.
5. In [`partials/i18n.hbs`](https://github.com/freeCodeCamp/news-theme/blob/main/partials/i18n.hbs), aggiungi gli script per i file config appena creati.
6. Aggiungi lo script `day.js` della lingua da [cdnjs](https://cdnjs.com/libraries/dayjs/1.10.4) a [freecodecamp CDN](https://github.com/freeCodeCamp/cdn/tree/main/build/news-assets/dayjs/1.10.4/locale)
1. Include an `else if` statement for the new [ISO language code](https://www.loc.gov/standards/iso639-2/php/code_list.php) in [`setup-locale.js`](https://github.com/freeCodeCamp/news-theme/blob/main/assets/config/setup-locale.js)
2. Create an initial config folder by duplicating the [`assets/config/en`](https://github.com/freeCodeCamp/news-theme/tree/main/assets/config/en) folder and changing its name to the new language code. (`en` —> `es` for Spanish)
3. Inside the new language folder, change the variable names in `main.js` and `footer.js` to the relevant language short code (`enMain` —> `esMain` for Spanish)
4. Duplicate the [`locales/en.json`](https://github.com/freeCodeCamp/news-theme/blob/main/locales/en.json) and rename it to the new language code.
5. In [`partials/i18n.hbs`](https://github.com/freeCodeCamp/news-theme/blob/main/partials/i18n.hbs), add scripts for the newly created config files.
6. Add the related language `day.js` script from [cdnjs](https://cdnjs.com/libraries/dayjs/1.10.4) to the [freeCodeCamp CDN](https://github.com/freeCodeCamp/cdn/tree/main/build/news-assets/dayjs/1.10.4/locale)
### Modifiche alla dashboard di Ghost

View File

@@ -293,9 +293,9 @@ Una volta che avrai i file, li dovrai mettere nelle cartelle giuste. Per le sfid
Aggiorna il file `.env` in modo da poter utilizzare la tua lingua per `CLIENT_LOCALE` e `CURRICULUM_LOCALE`.
Once these are in place, you should be able to run `pnpm run develop` to view your translated version of freeCodeCamp.
Una volta che questi saranno in posizione, dovresti essere in grado di eseguire `pnpm run develop` per vedere la versione tradotta di freeCodeCamp.
> [!TIP] If you build the client in one language and then want to build it in a different language, you will need to use the command `pnpm run clean-and-develop` after changing the `.env` file, as Gatsby will cache the first language.
> [!TIP] Se costruisci il client in una lingua e poi vuoi costruirlo in una lingua diversa, dovrai usare il comando `pnpm run clean-and-develop` dopo aver cambiato il file `.env`, dato che Gatsby memorizzerà nella cache la prima lingua.
> [!ATTENTION] Anche se puoi farei delle traduzioni localmente per i test, ricordiamo che le traduzioni _non_ devono essere inviate attraverso GitHub ma solo tramite Crowdin. Assicurati di resettare il tuo codebase locale dopo che avrai finito con i test.

View File

@@ -193,7 +193,7 @@ Quando stai lavorando su funzionalità dei rami `next-*` del nuovo curriculum, d
pnpm install
FCC_SUPERBLOCK='<superblock-name>' pnpm run test:curriculum
# example:
# esempio:
# FCC_SUPERBLOCK='python-for-everybody' pnpm run test:curriculum

View File

@@ -271,7 +271,7 @@ Il server API serve gli endpoint su `http://localhost:3000`. L'app Gatsby serve
Mentre hai effettuato l'accesso, se visiti <http://localhost:3000/explorer> dovresti vedere le API disponibili.
> [!WARNING] Clearing your cookies or running `pnpm run seed:certified-user` will log you out, and you will have to sign in again.
> [!WARNING] Se pulisci i cookie o esegui `pnpm run seed:certified-user` perderai l'accesso e dovrai fare di nuovo l'accesso.
Se hai problemi durante l'installazione, consulta la sezione [risoluzione dei problemi](troubleshooting-development-issues.md)

View File

@@ -91,7 +91,7 @@ Una volta che hai configurato Docker Desktop per lavorare con WSL2, segui questi
4. Ora puoi accedere al servizio sia da Windows che da Ubuntu da `mongodb://localhost:27017`.
## Installing Node.js and pnpm
## Installazione di Node.js e pnpm
Raccomandiamo di installare la release LTS di Node.js con un gestore di versioni di node (node version manager): [nvm](https://github.com/nvm-sh/nvm#installing-and-updating).
@@ -111,7 +111,7 @@ nvm install 14
nvm use 12
```
Node.js comes bundled with `npm`, which you can use to install `pnpm`:
Node.js ha in dotazione `npm`, che puoi usare per installare `pnpm`:
```console
npm install -g pnpm

View File

@@ -12,4 +12,4 @@ Se vedi messaggi come
bash: change_volumes_owner.sh: No such file or directory
```
when you `pnpm run docker:init` this is likely the culprit.
quando usi `pnpm run docker:init` questa è molto probabilmente la causa.

View File

@@ -481,7 +481,7 @@ Puoi anche testare una sfida singola con i seguenti step:
2. Esegui i seguenti comandi per ogni singolo file in cui hai fatto cambiamenti (rimpiazziando `challenge-title-goes-here` con il titolo intero della sfida):
```
pnpm run test -- -g challenge-title-goes-here ```
pnpm run test -- -g titolo-sfida-qui ```
Una volta che avrai verificato che ogni sfida su cui hai lavorato passi i test, [per favore crea una pull request](how-to-open-a-pull-request.md).

View File

@@ -10,7 +10,7 @@ Queste istruzioni ti diranno come utilizzare il nostro strumento editor per le s
### Avviare l'editor
Per avviare l'editor, assicurati di essere nella cartella principale freeCodeCamp. Then, run `pnpm run challenge-editor` to start both the client and the API that powers the editor.
Per avviare l'editor, assicurati di essere nella cartella principale freeCodeCamp. Poi esegui `pnpm run challenge-editor` per avviare sia il client che l'API di cui fa uso l'editor.
Il client verrà avviato sulla porta `3300`, così puoi accedervi su `http://localhost:3300`. L'API gira sulla porta `3200`, per evitare conflitti con il client learn e con il server. Questo ti permetterà di eseguire l'applicazione freeCodeCamp contemporaneamente all'editor, in modo che tu possa testare le tue modifiche localmente.
@@ -60,7 +60,7 @@ La cartella `tools/challenge-helper-scripts` contiene strumenti per aiutare a fa
### Creare un nuovo progetto
Run `pnpm run create-project` from the root directory. Questo apre un'interfaccia utente a linea di comando che ti guida attraverso il processo. Una volta finito, dovrebbe esserci una nuova sfida nel curriculum inglese che puoi usare come primo passo del progetto. Ad esempio, se hai creato un progetto chiamato `test-project` nella certificazione Web Design Responsivo, sarebbe in `curriculum/challenges/english/01-responsive-web-design/test-project`.
Esegui `pnpm run create-project` dalla cartella root. Questo apre un'interfaccia utente a linea di comando che ti guida attraverso il processo. Una volta finito, dovrebbe esserci una nuova sfida nel curriculum inglese che puoi usare come primo passo del progetto. Ad esempio, se hai creato un progetto chiamato `test-project` nella certificazione Web Design Responsivo, sarebbe in `curriculum/challenges/english/01-responsive-web-design/test-project`.
Se vuoi creare nuovi step, i seguenti strumenti semplificano il processo.
@@ -71,7 +71,7 @@ Uno script una tantum che aggiungerà automaticamente lo step successivo in base
#### Come eseguire lo script:
1. Vai alla directory del progetto.
2. Run the following command:
2. Esegui il seguente comando:
```bash
pnpm run create-next-step
@@ -86,10 +86,10 @@ Uno script eseguito una sola volta che aggiunge automaticamente un determinato n
#### Come eseguire lo script:
1. Vai alla directory del progetto.
2. Run the following command:
2. Esegui il seguente comando:
```bash
pnpm run create-empty-steps X # where X is the number of steps to create.
pnpm run create-empty-steps X # dove X è il numero di step da creare.
```
### insert-step
@@ -101,10 +101,10 @@ Uno script una tantum che aggiunge automaticamente un nuovo step in una posizion
#### Come eseguire lo script:
1. Vai alla directory del progetto.
2. Run the following command:
2. Esegui il seguente comando:
```bash
pnpm run insert-step X # where X is the position to insert the new step.
pnpm run insert-step X # dove X è la posizione in cui inserire il nuovo step.
```
### delete-step
@@ -116,10 +116,10 @@ Uno script una tantum che rimuove uno step esistente, decrementando tutti gli st
#### Come eseguire lo script
1. Vai alla directory del progetto.
2. Run the following command:
2. Esegui il seguente comando:
```bash
pnpm run delete-step X # where X is the step number to be deleted.
pnpm run delete-step X # dove X è il numero dello step da eliminare.
```
### update-step-titles
@@ -129,7 +129,7 @@ Uno script una tantum che aggiorna automaticamente il frontmatter nei file di ma
#### Come eseguire lo script
1. Vai alla directory del progetto.
2. Run the following command:
2. Esegui il seguente comando:
```bash
pnpm run update-step-titles

View File

@@ -78,7 +78,7 @@ TCP 0.0.0.0:3000 DESKTOP LISTENING
Durante lo sviluppo, la sessione viene memorizzata come cookie. Cancellarli ti farà uscire dal tuo account di sviluppo.
Running `pnpm run seed:certified-user` will log you out, too. Sovrascriverà l'utente di sviluppo nel database locale.
Ti disconnetterai anche eseguendo `pnpm run seed:certified-user`. Sovrascriverà l'utente di sviluppo nel database locale.
### Ottenere 404 navigando sulla pagina del profilo

View File

@@ -427,48 +427,48 @@ sudo apt install build-essential
コードを使用して VM をプロビジョニング
1. Install `pnpm` globally.
1. Install Node LTS.
```console
curl -fsSL https://get.pnpm.io/install.sh | sh -
```
2. Install pnpm globally.
2. Clone freeCodeCamp, setup env and keys.
```console
npm install -g pnpm
```
```console
git clone https://github.com/freeCodeCamp/freeCodeCamp.git
cd freeCodeCamp
git checkout prod-current # or any other branch to be deployed
```
3. Clone freeCodeCamp, setup env and keys.
3. Create the `.env` from the secure credentials storage.
```console
git clone https://github.com/freeCodeCamp/freeCodeCamp.git
cd freeCodeCamp
git checkout prod-current # or any other branch to be deployed
```
4. Create the `google-credentials.json` from the secure credentials storage.
4. Create the `.env` from the secure credentials storage.
5. Install dependencies
```console
pnpm install
```
```console
pnpm install
```
6. Setup pm2 `logrotate` and startup on boot
```console
pnpm pm2 install pm2-logrotate
pnpm pm2 startup
```
```console
pnpm pm2 install pm2-logrotate
pnpm pm2 startup
```
7. サーバーを構築します。
7. Build the server
```console
pnpm prebuild && pnpm build:curriculum && pnpm build:server
```
```console
pnpm prebuild && pnpm build:curriculum && pnpm build:server
```
8. インスタンスを開始します。
8. Start Instances
```console
pnpm start:server
```
```console
pnpm start:server
```
### ログとモニタリング
@@ -488,25 +488,25 @@ pnpm pm2 monit
#### 1. 手動更新 - 依存関係や env 変数の更新に使用します。
1. すべてのインスタンスを停止します。
1. Stop all instances
```console
pnpm pm2 stop all
```
2. 依存関係をインストールします。
2. Install dependencies
```console
pnpm install
```
3. サーバーを構築します。
3. Build the server
```console
pnpm run create:config && pnpm run build:curriculum && pnpm run build:server
pnpm prebuild && pnpm build:curriculum && pnpm build:server
```
4. インスタンスを開始します。
4. Start Instances
```console
pnpm start:server && pnpm pm2 logs
@@ -515,14 +515,24 @@ pnpm start:server && pnpm pm2 logs
#### 2. ローリング更新 - コードの論理的な変更に使用されます。
```console
pnpm pm2 reload api-server/ecosystem.config.js && pnpm pm2 logs
pnpm reload:server && pnpm pm2 logs
```
> [!NOTE] パイプライン経由で、コードやロジックの更新をロールリング処理しています。 これらのコマンドを実行する必要はありません。 ドキュメント用として、ここに記載されているだけです。
#### 3. Updating Node
1. Install new Node version
2. Update pm2 to use the new version
```console
pnpm pm2 update
```
## クライアントインスタンスでの作業
1. ノードバイナリのビルドツール (`node-gyp`) をインストールします。
1. Install build tools for node binaries (`node-gyp`) etc.
```console
sudo apt install build-essential
@@ -532,9 +542,9 @@ sudo apt install build-essential
コードを使用して VM をプロビジョニング
1. ノード LTS をインストールします。
1. Install Node LTS.
2. `npm` を更新して PM2 をインストールし、`logrotate` を設定して起動します。
2. Update `npm` and install PM2 and setup `logrotate` and startup on boot
```console
npm i -g npm@8
@@ -544,16 +554,16 @@ sudo apt install build-essential
pm2 startup
```
3. クライアントの設定をクローンし、envとキーをセットアップします。
3. Clone client config, setup env and keys.
```console
git clone https://github.com/freeCodeCamp/client-config.git client
cd client
```
Web クライアントのプレイスホルダーインスタンスを開始します。これらは、Azure パイプラインのアーティファクトで更新されます。
Start placeholder instances for the web client, these will be updated with artifacts from the Azure pipeline.
> Todo: この設定は S3 または Azure Blob ストレージに移動する必要があります。
> Todo: This setup needs to move to S3 or Azure Blob storage
>
> ```console
> echo "serve -c ../serve.json -p 50505 www" > client-start-primary.sh
@@ -582,23 +592,23 @@ pm2 monit
> [!ATTENTION] 自動パイプラインは、分単位で依存関係の更新を処理していません。 デプロイパイプラインが実行される前に、手動で更新する必要があります。
#### 1. 手動更新 - 依存関係、env 変数の更新に使用します。
#### 1. Manual Updates - Used for updating dependencies, env variables.
1. すべてのインスタンスを停止します。
1. Stop all instances
```console
pm2 stop all
```
2. 依存関係をインストールまたは更新します。
2. Install or update dependencies
3. インスタンスを開始します。
3. Start Instances
```console
pm2 start all --update-env && pm2 logs
```
#### 2. ローリング更新 - コードの論理的な変更に使用されます。
#### 2. Rolling updates - Used for logical changes to code.
```console
pm2 reload all --update-env && pm2 logs
@@ -618,7 +628,7 @@ Rocket.Chat クラスタの前で、負荷分散型 (Azure ロードバランサ
**NGINX クラスタ:**
1. NGINX をインストールし、リポジトリから設定します。
1. Install NGINX and configure from repository.
```console
sudo su
@@ -633,13 +643,13 @@ Rocket.Chat クラスタの前で、負荷分散型 (Azure ロードバランサ
cd /etc/nginx
```
2. Cloudflare のオリジン証明書とアップストリームアプリケーション設定をインストールします。
2. Install Cloudflare origin certificates and upstream application config.
安全なストレージから Cloudflare のオリジン証明書を取得し、 必要な場所にインストールします。
Get the Cloudflare origin certificates from the secure storage and install at required locations.
**または**
**OR**
既存の証明書を移動させます。
Move over existing certificates:
```console
# Local
@@ -651,34 +661,34 @@ Rocket.Chat クラスタの前で、負荷分散型 (Azure ロードバランサ
mv /tmp/ssl ./
```
アップストリーム設定を更新します。
Update Upstream Configurations:
```console
vi configs/upstreams.conf
```
ソース / オリジンアプリケーションの IP アドレスを追加 / 更新します。
Add/update the source/origin application IP addresses.
3. ネットワーキングとファイアウォールを設定します。
3. Setup networking and firewalls.
必要に応じて、イングレスオリジンアドレスに Azure ファイアウォールと `ufw` を設定します。
Configure Azure firewalls and `ufw` as needed for ingress origin addresses.
4. VM をロードバランサーバックエンドプールに追加します。
4. Add the VM to the load balancer backend pool.
必要に応じて、ロードバランサーにルールを設定し追加します。 バランサーバックエンドプールをロードするために、VM を追加する必要があるかもしれません。
Configure and add rules to load balancer if needed. You may also need to add the VMs to load balancer backend pool if needed.
**Docker クラスタ:**
1. Docker をインストールし、リポジトリから設定します。
1. Install Docker and configure from the repository
```console
git clone https://github.com/freeCodeCamp/chat-config.git chat
cd chat
```
2. 必要な環境変数とインスタンス IP アドレスを設定します。
2. Configure the required environment variables and instance IP addresses.
3. Rocket-chat サーバーを実行します。
3. Run rocket-chat server
```console
docker-compose config
@@ -687,13 +697,13 @@ Rocket.Chat クラスタの前で、負荷分散型 (Azure ロードバランサ
### ログとモニタリング
1. 以下のコマンドを使用して NGINX サービスのステータスを確認します。
1. Check status for NGINX service using the below command:
```console
sudo systemctl status nginx
```
2. docker インスタンスの実行ステータスを確認します。
2. Check status for running docker instances with:
```console
docker ps
@@ -705,13 +715,13 @@ Rocket.Chat クラスタの前で、負荷分散型 (Azure ロードバランサ
NGINX インスタンスへの設定変更は、GitHub 上でメンテナンスされています。これらは、以下のように各インスタンスにデプロイされる必要があります。
1. SSH でインスタンスに接続し、sudo と入力します。
1. SSH into the instance and enter sudo
```console
sudo su
```
2. 最新の設定コードを取得します。
2. Get the latest config code.
```console
cd /etc/nginx
@@ -719,7 +729,7 @@ NGINX インスタンスへの設定変更は、GitHub 上でメンテナンス
git reset --hard origin/main
```
3. 設定をテストし、[シグナルを使用して](https://docs.nginx.com/nginx/admin-guide/basic-functionality/runtime-control/#controlling-nginx)リロードします。
3. Test and reload the config [with Signals](https://docs.nginx.com/nginx/admin-guide/basic-functionality/runtime-control/#controlling-nginx).
```console
nginx -t
@@ -728,44 +738,44 @@ NGINX インスタンスへの設定変更は、GitHub 上でメンテナンス
**Docker クラスタ:**
1. インスタンスに SSH で接続し、チャット設定パスに移動します。
1. SSH into the instance and navigate to the chat config path
```console
cd ~/chat
```
2. 最新の設定コードを取得します。
2. Get the latest config code.
```console
git fetch --all --prune
git reset --hard origin/main
```
3. Rocket.Chat の最新 docker イメージをプルダウンします。
3. Pull down the latest docker image for Rocket.Chat
```console
docker-compose pull
```
4. 実行中のインスタンスを更新します。
4. Update the running instances
```console
docker-compose up -d
```
5. インスタンスが起動していることを検証します。
5. Validate the instances are up
```console
docker ps
```
6. 不要なリソースをクリーンアップします。
6. Cleanup extraneous resources
```console
docker system prune --volumes
```
出力:
Output:
```console
WARNING! This will remove:
@@ -778,7 +788,7 @@ NGINX インスタンスへの設定変更は、GitHub 上でメンテナンス
Are you sure you want to continue? [y/N] y
```
使用していないものをすべて削除するには、「はい」(y) を選択しします。 これにより、停止されたコンテナ、コンテナによって使用されていないネットワークとボリューム、および宙ぶらりんイメージ (dangling image) とビルドキャッシュを削除します。
Select yes (y) to remove everything that is not in use. This will remove all stopped containers, all networks and volumes not used by at least one container, and all dangling images and build caches.
## Contributor ツールでの作業
@@ -880,32 +890,32 @@ https://dev.azure.com/freeCodeCamp-org/_usersSettings/tokens から入手でき
現在、エージェントを更新するには、エージェントを削除して再設定する必要があります。 これは、`PATH` の値や他のシステム環境変数を正しく取り出すために必要です。 デプロイターゲット VM 上で、Node.js を更新する場合は、以下を実行する必要があります。
1. 移動して、サービスのステータスを確認します。
1. Navigate and check status of the service
```console
cd ~/azagent
sudo ./svc.sh status
```
2. サービスを停止します。
2. Stop the service
```console
sudo ./svc.sh stop
```
3. サービスをアンインストールします。
3. Uninstall the service
```console
sudo ./svc.sh uninstall
```
4. パイプラインプールからエージェントを削除します。
4. Remove the agent from the pipeline pool
```console
./config.sh remove
```
5. 設定ファイルを削除します。
5. Remove the config files
```console
cd ~
@@ -918,32 +928,32 @@ https://dev.azure.com/freeCodeCamp-org/_usersSettings/tokens から入手でき
[CLIツール](https://github.com/freecodecamp/sendgrid-email-blast) で、ウィークリーニュースレターを送信します。 プロセスは次のとおりです。
1. DigitalOcean にサインインし、`Sendgrid` プロジェクトの下に新しい droplet を作成してください。 最新の日付の Ubuntu Sendgrid スナップショットを使用します。 これには データベースからメールをフェッチするスクリプトと CLI ツールがあらかじめロードされています。 現在の容量では、3 つの droplet でメールをタイムリーに送信できます。
1. Sign in to DigitalOcean, and spin up new droplets under the `Sendgrid` project. Use the Ubuntu Sendgrid snapshot with the most recent date. This comes pre-loaded with the CLI tool and the script to fetch emails from the database. With the current volume, three droplets are sufficient to send the emails in a timely manner.
2. メールリストをフェッチするスクリプトを設定します。
2. Set up the script to fetch the email list.
```console
cd /home/freecodecamp/scripts/emails
cp sample.env .env
```
`.env` ファイルのプレイスホルダー値を認証情報に置き換える必要があります。
You will need to replace the placeholder values in the `.env` file with your credentials.
3. スクリプトを実行します。
3. Run the script.
```console
node get-emails.js emails.csv
```
`emails.csv` ファイルにメールリストを保存します。
This will save the email list in an `emails.csv` file.
4. 必要な droplet の数に応じて、メールを複数のファイルに分割します。 `scp` を使用してローカルにメールリストをプルし、お好みのテキストエディターを使用して複数のファイルに分割するのが最も簡単な方法です。 各ファイルに、`email,unsubscribeId` ヘッダーが必要です。
4. Break the emails down into multiple files, depending on the number of droplets you need. This is easiest to do by using `scp` to pull the email list locally and using your preferred text editor to split them into multiple files. Each file will need the `email,unsubscribeId` header.
5. `cd /home/sendgrid-email-blast` で CLI ディレクトリに切り替え、[ドキュメントに従って](https://github.com/freeCodeCamp/sendgrid-email-blast/blob/main/README.md) ツールを構成します。
5. Switch to the CLI directory with `cd /home/sendgrid-email-blast` and configure the tool [per the documentation](https://github.com/freeCodeCamp/sendgrid-email-blast/blob/main/README.md).
6. [使用ドキュメント](https://github.com/freeCodeCamp/sendgrid-email-blast/blob/main/docs/cli-steps.md) に従って、ツールを実行してメールを送信します。
6. Run the tool to send the emails, following the [usage documentation](https://github.com/freeCodeCamp/sendgrid-email-blast/blob/main/docs/cli-steps.md).
7. メールの一斉配信が完了したら、droplet を破棄する前に、メール送信に問題がなかったかどうかを確認します。
7. When the email blast is complete, verify that no emails have failed before destroying the droplets.
# フライトマニュアル - 新規言語の新しいインスタンスの追加
@@ -951,12 +961,12 @@ https://dev.azure.com/freeCodeCamp-org/_usersSettings/tokens から入手でき
ニュースの掲載には、カスタム [テーマ](https://github.com/freeCodeCamp/news-theme) を使用します。 テーマに以下の変更を加えることで、新しい言語の追加が可能になります。
1. 新規 [ISO 言語コード](https://www.loc.gov/standards/iso639-2/php/code_list.php) の `else if` ステートメントを [`setup-locale.js`](https://github.com/freeCodeCamp/news-theme/blob/main/assets/config/setup-locale.js) に含めます。
2. [`assets/config/en`](https://github.com/freeCodeCamp/news-theme/tree/main/assets/config/en) フォルダをコピーし、フォルダ名を新規言語コードに変更して、初期設定フォルダを作成します。 (スペイン語の場合は、`en` —> `es` となります)。
3. 新規言語フォルダ内で、`main.js` `footer.js` の変数名を、該当言語のショートコードに変更します (スペイン語の場合は、`enMain` —> `esMain` となります)。
4. [`locales/en.json`](https://github.com/freeCodeCamp/news-theme/blob/main/locales/en.json) をコピーして、新規言語コード名に変更します。
5. [`partials/i18n.hbs`](https://github.com/freeCodeCamp/news-theme/blob/main/partials/i18n.hbs) で、新たに作成された設定ファイルのスクリプトを追加します。
6. 関連する言語 `day.js` スクリプトを [cdnjs](https://cdnjs.com/libraries/dayjs/1.10.4) から [freeCodeCamp CDN](https://github.com/freeCodeCamp/cdn/tree/main/build/news-assets/dayjs/1.10.4/locale) に追加します。
1. Include an `else if` statement for the new [ISO language code](https://www.loc.gov/standards/iso639-2/php/code_list.php) in [`setup-locale.js`](https://github.com/freeCodeCamp/news-theme/blob/main/assets/config/setup-locale.js)
2. Create an initial config folder by duplicating the [`assets/config/en`](https://github.com/freeCodeCamp/news-theme/tree/main/assets/config/en) folder and changing its name to the new language code. (`en` —> `es` for Spanish)
3. Inside the new language folder, change the variable names in `main.js` and `footer.js` to the relevant language short code (`enMain` —> `esMain` for Spanish)
4. Duplicate the [`locales/en.json`](https://github.com/freeCodeCamp/news-theme/blob/main/locales/en.json) and rename it to the new language code.
5. In [`partials/i18n.hbs`](https://github.com/freeCodeCamp/news-theme/blob/main/partials/i18n.hbs), add scripts for the newly created config files.
6. Add the related language `day.js` script from [cdnjs](https://cdnjs.com/libraries/dayjs/1.10.4) to the [freeCodeCamp CDN](https://github.com/freeCodeCamp/cdn/tree/main/build/news-assets/dayjs/1.10.4/locale)
### Ghost ダッシュボードの変更

View File

@@ -427,48 +427,48 @@ sudo apt install build-essential
Provisionando MVs com o código
1. Instale o `pnpm` globalmente.
1. Instale o Node LTS.
```console
curl -fsSL https://get.pnpm.io/install.sh | sh -
```
2. Instale o pnpm globalmente.
2. Faça a clonagem do freeCodeCamp, configure env e as chaves.
```console
npm install -g pnpm
```
```console
git clone https://github.com/freeCodeCamp/freeCodeCamp.git
cd freeCodeCamp
git checkout prod-current # ou qualquer outra branch a ser implementada
```
3. Faça a clonagem do freeCodeCamp, configure env e as chaves.
3. Crie o `.env` a partir do armazenamento seguro de credenciais.
```console
git clone https://github.com/freeCodeCamp/freeCodeCamp.git
cd freeCodeCamp
git checkout prod-current # ou qualquer outra branch a ser implementada
```
4. Crie o `google-credentials.json` a partir do armazenamento seguro de credenciais.
4. Crie o `.env` a partir do armazenamento seguro de credenciais.
5. Instale dependências
5. Instale as dependências
```console
pnpm install
```
```console
pnpm install
```
6. Configure o pm2 `logrotate` e inicialize no boot
```console
pnpm pm2 install pm2-logrotate
pnpm pm2 startup
```
```console
pnpm pm2 install pm2-logrotate
pnpm pm2 startup
```
7. Compile o servidor
```console
pnpm prebuild && pnpm build:curriculum && pnpm build:server
```
```console
pnpm prebuild && pnpm build:curriculum && pnpm build:server
```
8. Inicie instâncias
8. Inicie as instâncias
```console
pnpm start:server
```
```console
pnpm start:server
```
### Registro e monitoramento
@@ -494,7 +494,7 @@ Mudanças no código devem ser implementadas na instância da API de tempos em t
pnpm pm2 stop all
```
2. Instale dependências
2. Instale as dependências
```console
pnpm install
@@ -503,10 +503,10 @@ pnpm install
3. Compile o servidor
```console
pnpm run create:config && pnpm run build:curriculum && pnpm run build:server
pnpm prebuild && pnpm build:curriculum && pnpm build:server
```
4. Inicie instâncias
4. Inicie as instâncias
```console
pnpm start:server && pnpm pm2 logs
@@ -515,14 +515,24 @@ pnpm start:server && pnpm pm2 logs
#### 2. Atualizações contínuas - Usado par mudanças lógicas no código.
```console
pnpm pm2 reload api-server/ecosystem.config.js && pnpm pm2 logs
pnpm reload:server && pnpm pm2 logs
```
> [!NOTE] Nós estamos lidando com atualizações contínuas no código, lógico, via pipelines. Você não deve executar estes comandos. Eles estão aqui para a documentação.
#### 3. Atualizando o Node
1. Instale a nova versão do Node
2. Atualize o pm2 para que ele use a nova versão
```console
pnpm pm2 update
```
## Trabalhe em instâncias de cliente
1. Instale ferramentas de compilação para binários node (`node-gyp`), etc.
1. Instale ferramentas de compilação para os binários do node (`node-gyp` e outros).
```console
sudo apt install build-essential
@@ -532,7 +542,7 @@ sudo apt install build-essential
Provisionando MVs com o código
1. Instale Node LTS.
1. Instale o Node LTS.
2. Atualize o `npm` e instale o PM2 e configure `logrotate` e inicie quando reiniciar
@@ -544,7 +554,7 @@ Provisionando MVs com o código
pm2 startup
```
3. Clone a configuração de cliente, env e chaves.
3. Faça a clonagem do client, configure env e as chaves.
```console
git clone https://github.com/freeCodeCamp/client-config.git client
@@ -590,9 +600,9 @@ As alterações no código precisam ser implementadas para as instâncias de API
pm2 stop all
```
2. Instale ou atualize dependências
2. Instale ou atualize as dependências
3. Inicie instâncias
3. Inicie as instâncias
```console
pm2 start all --update-env && pm2 logs
@@ -642,16 +652,16 @@ Provisionando MVs com código
Mova os certificados existentes:
```console
# Localmente
# Local
scp -r username@source-server-public-ip:/etc/nginx/ssl ./
scp -pr ./ssl username@target-server-public-ip:/tmp/
# Remotamente
# Remote
rm -rf ./ssl
mv /tmp/ssl ./
```
Atualize as configurações Upstream:
Atualize as configurações upstream:
```console
vi configs/upstreams.conf
@@ -659,9 +669,9 @@ Provisionando MVs com código
Adicione/atualize os endereços IP do aplicativo fonte/origem.
3. Configure a rede e o firewall.
3. Configure a rede e os firewalls.
Configure o firewall da Azure e `ufw` conforme necessário para entrar os endereços de origem.
Configure os firewalls da Azure e `ufw` conforme necessário para entrar os endereços de origem.
4. Adicione a MV ao pool de back-end do balanceador de carga.
@@ -678,7 +688,7 @@ Provisionando MVs com código
2. Configure as variáveis de ambiente necessárias e as instâncias dos endereços de IP.
3. Execute rocket-chat server
3. Execute o servidor do rocket-chat
```console
docker-compose config
@@ -705,7 +715,7 @@ Provisionando MVs com código
As alterações na configuração das nossas instâncias NGINX são mantidas no GitHub, elas devem ser implantadas em cada instância assim:
1. SSH na instância e digite sudo
1. Use o SSH na instância e digite sudo
```console
sudo su
@@ -728,7 +738,7 @@ As alterações na configuração das nossas instâncias NGINX são mantidas no
**Cluster do Docker:**
1. SSH na instância e vá para onde está o arquivo de configuração do chat
1. Use SSH na instância e vá para onde está o arquivo de configuração do chat
```console
cd ~/chat
@@ -768,17 +778,17 @@ As alterações na configuração das nossas instâncias NGINX são mantidas no
Resultado:
```console
AVISO! Isso remove
- todos os containers parados
- todas as redes que não estão sendo usadas por pelo menos um container
- todos os volumes que não estão sendo usados por pelo menos um container
- todas as imagens pendentes
- todos os caches de compilação pendentes
WARNING! This will remove:
- all stopped containers
- all networks not used by at least one container
- all volumes not used by at least one container
- all dangling images
- all dangling build cache
Tem certeza que deseja continuar? [y/N] y
Are you sure you want to continue? [y/N] y
```
Selecione sim (y) para remover tudo que não está sendo usado. Isso vai remover todos os containers parados, todas as redes e volumes não usados por pelo menos um container e imagens pendentes e caches de compilação.
Selecione yes (y) para remover tudo que não está sendo usado. Isso vai remover todos os contêineres parados, todas as redes e volumes não usados por pelo menos um contêiner e imagens pendentes e caches de compilação.
## Trabalho com as ferramentas do colaborador
@@ -827,7 +837,7 @@ nvm alias default 16
(Opcional) Desinstale versões antigas
```console
nvm uninstall <version>
nvm uninstall <versão>
```
> [!ATTENTION] Para aplicações de client, o shell script não pode ser revivido entre versões do Node.js com `pm2 resurrect`. Implante processos de zero ao invés disso. Isso deve melhorar quando mudarmos para uma configuração baseada em docker.
@@ -899,7 +909,7 @@ Atualmente, atualizar os agentes requer que sejam removidos e reconfigurados. Is
sudo ./svc.sh uninstall
```
4. Remova o agente da piscina pipeline
4. Remova o agente do pool do pipeline
```console
./config.sh remove
@@ -956,7 +966,7 @@ Usamos um [tema personalizado](https://github.com/freeCodeCamp/news-theme) para
3. Dentro da pasta do novo idioma, altere os nomes das variáveis no `main.js` e no `footer.js` para o código curto de idioma relevante (`enMain` —> `esMain` para o espanhol)
4. Duplique o [`locales/en.json`](https://github.com/freeCodeCamp/news-theme/blob/main/locales/en.json) e renomeie-o para o código do novo idioma.
5. Em [`partials/i18n.hbs`](https://github.com/freeCodeCamp/news-theme/blob/main/partials/i18n.hbs), adicione scripts para arquivos de configuração recém-criados.
6. Adicionar o script `day.js` do idioma relacionado [cdnjs](https://cdnjs.com/libraries/dayjs/1.10.4) ao [CDN do freeCodeCamp](https://github.com/freeCodeCamp/cdn/tree/main/build/news-assets/dayjs/1.10.4/locale)
6. Adicione o script `day.js` do idioma relacionado [cdnjs](https://cdnjs.com/libraries/dayjs/1.10.4) ao [CDN do freeCodeCamp](https://github.com/freeCodeCamp/cdn/tree/main/build/news-assets/dayjs/1.10.4/locale)
### Alterações do painel do Ghost

View File

@@ -91,7 +91,7 @@ Depois de ter configurado o Docker Desktop para trabalhar com o WSL2, siga essas
4. Agora você pode acessar o serviço no Windows ou Ubuntu em `mongodb://localhost:27017`.
## Installing Node.js and pnpm
## Instalando o Node.js e o pnpm
Recomendamos que você instale a versão LTS para Node.js com um gerenciador de versões do node - [nvm](https://github.com/nvm-sh/nvm#installing-and-updating).
@@ -111,7 +111,7 @@ nvm install 14
nvm use 12
```
Node.js comes bundled with `npm`, which you can use to install `pnpm`:
O Node.js vem com o `npm`, que você pode usar para instalar o `pnpm`:
```console
npm install -g pnpm

View File

@@ -427,48 +427,48 @@ sudo apt install build-essential
Provisioning VMs with the Code
1. Install `pnpm` globally.
1. Install Node LTS.
```console
curl -fsSL https://get.pnpm.io/install.sh | sh -
```
2. Install pnpm globally.
2. Clone freeCodeCamp, setup env and keys.
```console
npm install -g pnpm
```
```console
git clone https://github.com/freeCodeCamp/freeCodeCamp.git
cd freeCodeCamp
git checkout prod-current # or any other branch to be deployed
```
3. Clone freeCodeCamp, setup env and keys.
3. Create the `.env` from the secure credentials storage.
```console
git clone https://github.com/freeCodeCamp/freeCodeCamp.git
cd freeCodeCamp
git checkout prod-current # or any other branch to be deployed
```
4. Create the `google-credentials.json` from the secure credentials storage.
4. Create the `.env` from the secure credentials storage.
5. Install dependencies
```console
pnpm install
```
```console
pnpm install
```
6. Setup pm2 `logrotate` and startup on boot
```console
pnpm pm2 install pm2-logrotate
pnpm pm2 startup
```
```console
pnpm pm2 install pm2-logrotate
pnpm pm2 startup
```
7. Build the server
```console
pnpm prebuild && pnpm build:curriculum && pnpm build:server
```
```console
pnpm prebuild && pnpm build:curriculum && pnpm build:server
```
8. Start Instances
```console
pnpm start:server
```
```console
pnpm start:server
```
### Logging and Monitoring
@@ -503,7 +503,7 @@ pnpm install
3. Build the server
```console
pnpm run create:config && pnpm run build:curriculum && pnpm run build:server
pnpm prebuild && pnpm build:curriculum && pnpm build:server
```
4. Start Instances
@@ -515,11 +515,21 @@ pnpm start:server && pnpm pm2 logs
#### 2. Rolling updates - Used for logical changes to code.
```console
pnpm pm2 reload api-server/ecosystem.config.js && pnpm pm2 logs
pnpm reload:server && pnpm 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.
#### 3. Updating Node
1. Install new Node version
2. Update pm2 to use the new version
```console
pnpm pm2 update
```
## Work on Client Instances
1. Install build tools for node binaries (`node-gyp`) etc.

View File

@@ -6,9 +6,9 @@
## Куди додати тест
- Тести Cypress знаходяться у директорії `./cypress`.
- Тести Cypress знаходяться в каталозі `./cypress`.
- Тести Cypress для модуля навчальної програми знаходяться у відповідній директорії навчальної програми, тобто `cypress/integration/learn/responsive-web-design/basic-css/index.js`.
- Тести Cypress для модуля навчальної програми знаходяться у відповідному каталозі навчальної програми, тобто `cypress/integration/learn/responsive-web-design/basic-css/index.js`.
## Як проводити тести
@@ -22,15 +22,15 @@
### 2. Запустіть тести cypress
Щоб запустити тести продакшн збірок, замініть `dev` на `prd` нижче.
Щоб запустити тести кінцевої збірки, замініть `dev` на `prd` нижче.
- Щоб запустити всі тести у директорії `./cypress`:
- Щоб запустити всі тести в каталозі `./cypress`:
```console
pnpm run cypress:dev:run
```
- Для запуску одного тесту:
- Щоб запустити один тест:
```console
pnpm run cypress -- run --spec=cypress/<path_to_test_file>
@@ -52,7 +52,7 @@
### 1. Переконайтеся, що середовище розробки запущене
Якщо запуск середовища GitPod не призвів до автоматичної розробки середовища:
Якщо запуск середовища GitPod не розробив середовище автоматично:
- Запустіть базу даних

View File

@@ -1,22 +1,22 @@
# How to work on coding challenges
# Як працювати над завданнями з програмуванням
Our goal is to develop a fun and clear interactive learning experience.
Нашою метою є розробити веселе та зрозуміле інтерактивне навчання.
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.
Розробити інтерактивні завдання для програмування — важко. Було б набагато простіше написати довге пояснення чи створити відеоурок. Але для нашої основної навчальної програми ми використовуємо те, що найкраще працює для більшості людей — інтерактив, схожий на відеогру.
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.
Ми хочемо, щоб кемпери досягли стану потоку. Ми хочемо, щоб вони наростили темп та пройшли навчальну програму з мінімальною кількістю помилок. Ми хочемо, щоб вони впевнено виконували проєкти та ознайомились з багатьма поняттями програмування.
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/).
Зауважте, що для версії 7.0 навчальної програми freeCodeCamp ми переходимо до [проєктноорієнтованої моделі з багатьма повтореннями](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.
Ці завдання вимагають креативності та уваги до деталей. Ви не залишитесь без допомоги. Вас підтримуватиме ціла команда помічників, з якими можна поділитись власними ідеями та завданнями.
And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [the contributors chat room](https://discord.gg/PRyKn3Vbay).
І як завжди, не соромтесь ставити запитання [на форумі у категорії «Contributors»](https://forum.freecodecamp.org/c/contributors) або [у чаті](https://discord.gg/PRyKn3Vbay).
With your help, we can design an interactive coding curriculum that will help millions of people learn to code for years to come.
Завдяки вашій допомозі ми створюємо інтерактивну навчальну програму для програмування, що допоможе мільйонам людей навчитися писати код.
The content for each challenge is stored in its markdown file. This markdown file is later converted to HTML using our tools to create interactive web pages.
Вміст кожного завдання зберігається у файлі markdown. Потім, щоб створити інтерактивну вебсторінку, цей файл конвертується у HTML за допомогою наших інструментів.
You can find all of freeCodeCamp.org's curricular content in the [`/curriculum/challenges`](https://github.com/freeCodeCamp/freeCodeCamp/tree/main/curriculum/challenges) directory.
Ви можете знайти весь навчальний матеріал freeCodeCamp.org у каталозі [`/curriculum/challenges`](https://github.com/freeCodeCamp/freeCodeCamp/tree/main/curriculum/challenges).
## Set up the tooling for the curriculum
@@ -146,15 +146,15 @@ The question text goes here.
## --answers--
Answer 1
Відповідь 1
---
Answer 2
Відповідь 2
---
More answers
Інші відповіді
## --video-solution--

View File

@@ -34,7 +34,7 @@
#### Створення наступного кроку
Натисніть цю кнопку, щоб додати новий крок в кінці проєкту. У цьому кроці використовуватиметься код попереднього кроку як зерно.
Натисніть цю кнопку, щоб додати новий крок в кінці проєкту. У цьому кроці використовуватиметься код попереднього кроку як зразок.
#### Створення порожнього кроку
@@ -66,7 +66,7 @@
### create-next-step
A one-off script that will automatically add the next step based on the last step in the project. The challenge seed code will use the previous step's challenge seed code.
Це разовий скрипт, який автоматично додасть наступний крок на основі останнього кроку проєкту. Початковий код завдання використовуватиме початковий код попереднього кроку.
#### Як запустити скрипт:
@@ -79,7 +79,7 @@ pnpm run create-next-step
### create-empty-steps
A one-off script that automatically adds a specified number of steps. The challenge seed code for all steps created will be empty.
Це разовий скрипт, який автоматично додасть вказану кількість кроків. Початковий код буде порожнім для всіх створених кроків.
**Примітка:** цей скрипт також запускає [update-step-titles](#update-step-titles).
@@ -89,12 +89,12 @@ A one-off script that automatically adds a specified number of steps. The challe
2. Виконайте наступну команду:
```bash
pnpm run create-empty-steps X # where X is the number of steps to create.
pnpm run create-empty-steps X # де X є кількістю кроків, які потрібно створити.
```
### insert-step
A one-off script that automatically adds a new step at a specified position, incrementing all subsequent steps (both their titles and in their meta.json). The challenge seed code will use the previous step's challenge seed code with the editable region markers (ERMs) removed.
Це разовий скрипт, який автоматично додає новий крок у визначеному місці, збільшуючи наступні кроки (їхні заголовки та meta.json). Початковий код завдання використовуватиме початковий код попереднього кроку, вилучивши маркери редагованих регіонів (ERM).
**Примітка:** цей скрипт також запускає [update-step-titles](#update-step-titles).
@@ -109,7 +109,7 @@ pnpm run insert-step X # де X є місцем, куди потрібно вс
### delete-step
A one-off script that deletes an existing step, decrementing all subsequent steps (both their titles and in their meta.json)
Це разовий скрипт, який видаляє наявний крок, зменшуючи наступні кроки (їхні заголовки та meta.json)
**Примітка:** цей скрипт також запускає [update-step-titles](#update-step-titles).
@@ -124,7 +124,7 @@ pnpm run delete-step X # де X є номером кроку, який потр
### update-step-titles
A one-off script that automatically updates the frontmatter in a project's markdown files so that they are consistent with the project's meta.json. It ensures that each step's title (and dashedName) match the meta's challengeOrder.
Це разовий скрипт, який автоматично оновлює початковий матеріал у файлах розмітки проєкту, щоб вони відповідали meta.json. Він гарантує, що заголовки кроків (та dashedName) відповідають challengeOrder.
#### Як запустити скрипт:

View File

@@ -1,6 +1,6 @@
Спільнота [freeCodeCamp.org](https://freecodecamp.org) існує завдяки тисячам подібних до вас волонтерам. Якщо ви хочете долучитися до проєкту аби поділитися своїм часом та досвідом, ми з радістю приймемо вас до себе.
Спільнота [freeCodeCamp.org](https://freecodecamp.org) існує завдяки тисячам волонтерам. Якщо ви хочете поділитися своїм часом та досвідом, ми з радістю приймемо вас до себе.
> [!NOTE] Перш ніж продовжити, прочитайте, будь ласка, наш короткий [Кодекс поведінки](https://www.freecodecamp.org/code-of-conduct). У нашій спільноті ми чітко керуємося цими правилами, щоб кожен міг вільно та безпечно долучитися до freeCodeCamp.org.
> [!NOTE] Перш ніж продовжити, прочитайте, будь ласка, наш [Кодекс поведінки](https://www.freecodecamp.org/code-of-conduct). У нашій спільноті ми чітко керуємося цими правилами, щоб кожен міг вільно та безпечно долучитися до freeCodeCamp.org.
Ви можете створювати, оновлювати та виправляти помилки в нашій [навчальній програмі](#curriculum), допомагати нам виправляти помилки на [навчальній платформі](#learning-platform) freeCodeCamp.org або [перекладати](#translations) freeCodeCamp.org на інші мови.

View File

@@ -26,7 +26,7 @@ You can find the up-to-date build schedules and status here: https://github.com/
## Як вказати автора перекладеної статті
Автор та оригінал статті прив'язуються автоматично, коли цей код додано до Code Injection -> головна секція в налаштуваннях чернеток на ghost.
The original author and the original article are linked automatically adding this code to the Code Injection -> head section in the Draft Settings on ghost.
```html
<script>
@@ -34,7 +34,7 @@ You can find the up-to-date build schedules and status here: https://github.com/
</script>
```
Де `link` посилання на оригінал статті.
With `link` being the link of the original article.
## How to update trending articles

View File

@@ -1,50 +1,50 @@
# The Official freeCodeCamp Moderator Onboarding Guide
# Офіційний посібник з адаптації модератора freeCodeCamp
This guide will help new moderators get up and running with the processes and procedures followed by experienced moderators on the freeCodeCamp community forum and other official communities that we foster.
Цей посібник допоможе новим модераторам розібратись з підходами, яких дотримуються досвідчені модератори форуму freeCodeCamp та інших офіційних спільнот, за якими ми доглядаємо.
> [!NOTE] If you haven't read [The Moderator Handbook](https://contribute.freecodecamp.org/#/moderator-handbook) yet, you should start there first.
> [!NOTE] Якщо ви не прочитали [Довідник модератора](https://contribute.freecodecamp.org/#/moderator-handbook), почніть з нього.
## The Forum
## Форум
### First Steps
### Перші кроки
The first thing you may notice after being given moderator status on the forum is that your interface will look somewhat different, with new admin tools to explore and access to the Mod-Team subforum.
Після надання статусу модератора ви помітите, що інтерфейс виглядає по-іншому, оскільки з’являться нові інструменти та доступ до підфоруму команди модераторів.
Some of the new tools will appear inside a new menu item that looks like a wrench. Some will appear as new tabs or buttons, or even new enabled options within the forum menus.
Деякі з нових інструментів будуть відображатися в новому меню, яке виглядає як гайковий ключ. Деякі будуть представлені новими вкладками та кнопками, або навіть опціями у меню форуму.
To get familiar with the new tools and powers, you can combine one or more of the following methods during your first week with this elevated role:
Щоб ознайомитись з новими інструментами та можливостями, дотримуйтесь наведених методів протягом першого тижня:
> [!TIP] The first two are the most important.
> [!TIP] Перші два є найважливішими.
### Become Familiar with the Discourse Admin Tools
### Ознайомтесь з інструментами адміністратора на Discourse
The freeCodeCamp forum is actually a Discourse forum and follows many of the same guidelines of other forums built on Discourse. To begin to get familiar with Discourse and the moderation role, start by reading Discourse's [new user guide](https://meta.discourse.org/t/discourse-new-user-guide/96331) and Discourse's [new moderator guide](https://meta.discourse.org/t/discourse-moderation-guide/63116).
Насправді форум freeCodeCamp є форумом Discourse, тому ми дотримуємось правил інших форумів, створених на Discourse. Щоб ознайомитись з Discourse та модераторством, прочитайте [довідник нового користувача Discourse](https://meta.discourse.org/t/discourse-new-user-guide/96331) та [довідник нового модератора Discourse](https://meta.discourse.org/t/discourse-moderation-guide/63116).
### Shadow a Mod
### Стежте за іншими модераторами
All moderator actions can be followed by reviewing the [action logs](https://forum.freecodecamp.org/admin/logs/staff_action_logs). The actions taken by automated tools like `akistmet` or `system` can mostly be ignored until they result in a post that needs to be reviewed. Posts to be reviewed will show up in the [Review](https://forum.freecodecamp.org/review) area of the forum.
Усі дії модераторів можна переглянути у [журналі дій](https://forum.freecodecamp.org/admin/logs/staff_action_logs). Дії автоматичних інструментів (наприклад, `akistmet` чи `system`) можна ігнорувати, якщо вони не стосуються допису, який потрібно переглянути. Дописи, які потрібно переглянути, розміщені на форумі у розділі [Review](https://forum.freecodecamp.org/review).
For the first week or so you will want to pay attention to what is getting flagged and what is being reviewed, and compare that to the actions being taken upon the flagged posts. You may see the system account flag a post because the user created it too quickly. In many cases, the moderators will unflag the post by clicking on the "Approve Post" button or mark it as "Not Spam" (depending on the flag type).
Протягом першого тижня звертайте увагу на те, які дописи позначаються прапорцем та розглядаються, а також на застосовані до них дії. Ви можете побачити, що системний обліковий запис позначає публікацію, оскільки користувач створив її надто швидко. У багатьох випадках модератори заберуть прапорець, натиснувши кнопку «Approve Post» або позначивши допис як «Not Spam» (залежно від типу прапорця).
Commonly, spam flags can also be raised by members or moderators. Common duplicitous behaviour would involve opening an account, making a post that seems harmless, then editing that post later on to add a link to an external site for the purpose of advertising it. In this case, usually the member account is fairly new and has only made this one post thus far, which indicates that the account was opened for the sole purpose of spamming the community. The decision should be made to delete the account after the first offence in this case. The same applies for accounts whose first post is deemed to be spam.
Прапорці спаму можуть використовувати користувачі та модератори. Досить часто створюють обліковий запис, пишуть допис, а потім редагують його, додаючи посилання на зовнішній сайт з метою реклами. Такий обліковий запис відносно новий та створив лише один допис, що вказує на те, що обліковий запис створили для спаму. У такому разі доцільно прийняти рішення про видалення облікового запису після першого порушення. Це також стосується облікових записів, перше повідомлення яких вважається спамом.
You may notice moderators performing a procedure called 'split topic'. This may be a case where a moderator has split a post that was made erroneously on an existing topic into a new topic, or a moderator merged duplicate topics that a single user has created for the same question. Watching this procedure will highlight different actions and their causes.
Ви можете помітити, що модератори виконують дію під назвою «розділення теми» (split topic). Це може бути випадок, коли модератор перемістив допис, який було створено у наявному дописі, у новий допис, або модератор об’єднав повторювані дописи, створені одним користувачем для того самого запитання. Подивившись на цю процедуру, можна виділити різні дії та причини.
Another useful feature that becomes enabled for all moderators is the ability to post a "Canned Reply" which is a pre-written response that was worked out with the mod team in order to quickly respond to some well-known and repetitive scenarios. These include:
Іншою корисною функцією є заготовлені відповіді (canned reply), тобто попередньо написані відповіді, які створила команда модераторів для того, щоб швидко відповідати на повторювані дописи. До них належать:
- Welcoming a new forum member who has posted code without a question -> "Welcome - remind question"
- Reminding members not to post code solutions but to provide hints and tips instead -> "Solutions Instead of Help"
- Responding to a situation where someone's code works for you but not for them -> "Browser Issues"
- Encouraging members to open GitHub issues when a possible bug is found -> "Bug Report"
- Привітання нового користувача форуму, який опублікував код без запитання -> "Welcome - remind question"
- Нагадування користувачам не публікувати розв’язок коду, а ділитись підказками та порадами -> "Solutions Instead of Help"
- Відповідь на випадок, якщо код працює для вас, але не для інших -> "Browser Issues"
- Заохочення користувачів відкрити проблеми на GitHub, якщо знайдено можливу помилку -> "Bug Report"
There are more, which you can read through to become familiar with their respective uses. You can also find discussion around the templates in the mod-team subforum, and you are welcome to ask questions if you aren't sure how a template should be used.
Існує й багато інших функцій, які потрібно прочитати для ознайомлення. Ви також можете знайти обговорення шаблонів у підфорумі mod-team, і можете ставити запитання, якщо не знаєте, як використовувати шаблон.
### Read Mod-Team Subforum Posts
### Прочитайте дописи на підфорумі Mod-Team
The Mod-Team subforum contains a number of posts from past and current moderators discussing the different requirements and/or challenges of moderating the forum.
Підфорум Mod-Team містить деякі дописи від старих та нових модераторів, де обговорюються різні вимоги та/або проблеми модерації форуму.
Reading back through these posts can help to uncover some of the underlying goals and processes that concern forum moderators. Some of the threads may also shed some light on handling of spam and inappropriate content on the forum.
Ці дописи допоможуть зрозуміти приховані цілі та процеси, які стосуються модераторів форуму. Деякі треди пояснять, що робити зі спамом та неприпустимим вмістом.
## Where to Ask for Help
## Де просити про допомогу
To get help dealing with a situation that you are either uncomfortable with or unsure of how to handle, discuss with your fellow moderators on either the [Mod-Team Subforum](https://forum.freecodecamp.org/c/mod-team/4) or the [#mod-chat](https://discord.com/channels/692816967895220344/693157007418720277) on Discord.
Щоб отримати допомогу щодо незручної чи незрозумілої ситуації, порадьтесь з іншими модераторами на [підфорумі Mod-Team](https://forum.freecodecamp.org/c/mod-team/4) або в [#mod-chat](https://discord.com/channels/692816967895220344/693157007418720277) на дискорді.